Merge tag 'u-boot-imx-20191014' of https://gitlab.denx.de/u-boot/custodians/u-boot-imx
u-boot-imx-20191014 ------------------- Travis: https://travis-ci.org/sbabic/u-boot-imx/builds/597498628 - logicpd pinmux - i.MX7ULP: imx_ddr_size - fixes Toradex i.MX6/i.MX7 - pico-imx7d - tpc70 converted to DM - New Board: meerkat96 - add HAB version command - i.MX8 : imx8: Jump from alias to OCRAM address at SPL init imx8qm/qxp: Set SPL TEXT base to OCRAM base
This commit is contained in:
@@ -158,24 +158,6 @@
|
||||
"nfsdtbload=setenv dtbparam; tftp ${fdt_addr_r} ${fdt_file} " \
|
||||
"&& setenv dtbparam \" - ${fdt_addr_r}\" && true\0"
|
||||
|
||||
#define SD_BOOTCMD \
|
||||
"set_sdargs=setenv sdargs ip=off root=PARTUUID=${uuid} ro,noatime " \
|
||||
"rootfstype=ext4 rootwait\0" \
|
||||
"sdboot=run setup; run sdfinduuid; run set_sdargs; " \
|
||||
"setenv bootargs ${defargs} ${sdargs} ${setupargs} " \
|
||||
"${vidargs}; echo Booting from SD card; " \
|
||||
"run sddtbload; load mmc ${sddev}:${sdbootpart} " \
|
||||
"${kernel_addr_r} ${boot_file} && run fdt_fixup && " \
|
||||
"bootz ${kernel_addr_r} ${dtbparam}\0" \
|
||||
"sdbootpart=1\0" \
|
||||
"sddev=1\0" \
|
||||
"sddtbload=setenv dtbparam; load mmc ${sddev}:${sdbootpart} " \
|
||||
"${fdt_addr_r} " \
|
||||
"${fdt_file} && setenv dtbparam \" - " \
|
||||
"${fdt_addr_r}\" && true\0" \
|
||||
"sdfinduuid=part uuid mmc ${sddev}:${sdrootpart} uuid\0" \
|
||||
"sdrootpart=2\0"
|
||||
|
||||
#ifndef CONFIG_TDX_APALIS_IMX6_V1_0
|
||||
#define FDT_FILE "imx6q-apalis-eval.dtb"
|
||||
#define FDT_FILE_V1_0 "imx6q-apalis_v1_0-eval.dtb"
|
||||
@@ -196,7 +178,6 @@
|
||||
"fdt_fixup=;\0" \
|
||||
MEM_LAYOUT_ENV_SETTINGS \
|
||||
NFS_BOOTCMD \
|
||||
SD_BOOTCMD \
|
||||
"setethupdate=if env exists ethaddr; then; else setenv ethaddr " \
|
||||
"00:14:2d:00:00:00; fi; tftpboot ${loadaddr} " \
|
||||
"flash_eth.img && source ${loadaddr}\0" \
|
||||
|
||||
@@ -56,19 +56,6 @@
|
||||
"tftp ${fdt_addr_r} " FDT_FILE " && " \
|
||||
"run fdt_fixup && bootz ${kernel_addr_r} - ${fdt_addr_r}\0" \
|
||||
|
||||
#define SD_BOOTCMD \
|
||||
"set_sdargs=setenv sdargs root=PARTUUID=${uuid} ro rootwait\0" \
|
||||
"sdboot=run setup; run sdfinduuid; run set_sdargs; " \
|
||||
"setenv bootargs ${defargs} ${sdargs} " \
|
||||
"${setupargs} ${vidargs}; echo Booting from MMC/SD card...; " \
|
||||
"load mmc ${sddev}:${sdbootpart} ${kernel_addr_r} ${kernel_file} && " \
|
||||
"load mmc ${sddev}:${sdbootpart} ${fdt_addr_r} " FDT_FILE " && " \
|
||||
"run fdt_fixup && bootz ${kernel_addr_r} - ${fdt_addr_r}\0" \
|
||||
"sdbootpart=1\0" \
|
||||
"sddev=0\0" \
|
||||
"sdfinduuid=part uuid mmc ${sddev}:${sdrootpart} uuid\0" \
|
||||
"sdrootpart=2\0"
|
||||
|
||||
#define UBI_BOOTCMD \
|
||||
"ubiargs=ubi.mtd=ubi root=ubi0:rootfs rw rootfstype=ubifs " \
|
||||
"ubi.fm_autoconvert=1\0" \
|
||||
@@ -95,7 +82,6 @@
|
||||
BOOTENV \
|
||||
MEM_LAYOUT_ENV_SETTINGS \
|
||||
NFS_BOOTCMD \
|
||||
SD_BOOTCMD \
|
||||
UBI_BOOTCMD \
|
||||
"console=ttymxc0\0" \
|
||||
"defargs=user_debug=30\0" \
|
||||
|
||||
@@ -148,23 +148,6 @@
|
||||
"nfsdtbload=setenv dtbparam; tftp ${fdt_addr_r} ${fdt_file} " \
|
||||
"&& setenv dtbparam \" - ${fdt_addr_r}\" && true\0"
|
||||
|
||||
#define SD_BOOTCMD \
|
||||
"set_sdargs=setenv sdargs ip=off root=PARTUUID=${uuid} rw,noatime " \
|
||||
"rootfstype=ext4 rootwait\0" \
|
||||
"sdboot=run setup; run sdfinduuid; run set_sdargs; " \
|
||||
"setenv bootargs ${defargs} ${sdargs} ${setupargs} " \
|
||||
"${vidargs}; echo Booting from SD card; " \
|
||||
"run sddtbload; load mmc ${sddev}:${sdbootpart} "\
|
||||
"${kernel_addr_r} ${boot_file} && run fdt_fixup && " \
|
||||
"bootz ${kernel_addr_r} ${dtbparam}\0" \
|
||||
"sdbootpart=1\0" \
|
||||
"sddev=1\0" \
|
||||
"sddtbload=setenv dtbparam; load mmc ${sddev}:${sdbootpart} " \
|
||||
"${fdt_addr_r} ${fdt_file} && setenv dtbparam \" - " \
|
||||
"${fdt_addr_r}\" && true\0" \
|
||||
"sdfinduuid=part uuid mmc ${sddev}:${sdrootpart} uuid\0" \
|
||||
"sdrootpart=2\0"
|
||||
|
||||
#define FDT_FILE "imx6dl-colibri-eval-v3.dtb"
|
||||
#define CONFIG_EXTRA_ENV_SETTINGS \
|
||||
BOOTENV \
|
||||
@@ -180,7 +163,6 @@
|
||||
"fdt_fixup=;\0" \
|
||||
MEM_LAYOUT_ENV_SETTINGS \
|
||||
NFS_BOOTCMD \
|
||||
SD_BOOTCMD \
|
||||
"setethupdate=if env exists ethaddr; then; else setenv ethaddr " \
|
||||
"00:14:2d:00:00:00; fi; tftpboot ${loadaddr} " \
|
||||
"flash_eth.img && source ${loadaddr}\0" \
|
||||
|
||||
@@ -109,28 +109,6 @@
|
||||
"ramdisk_addr_r=0x82100000\0" \
|
||||
"scriptaddr=0x82500000\0"
|
||||
|
||||
#if defined(CONFIG_TARGET_COLIBRI_IMX7_NAND)
|
||||
#define SD_BOOTDEV 0
|
||||
#elif defined(CONFIG_TARGET_COLIBRI_IMX7_EMMC)
|
||||
#define SD_BOOTDEV 1
|
||||
#endif
|
||||
|
||||
#define SD_BOOTCMD \
|
||||
"set_sdargs=setenv sdargs root=PARTUUID=${uuid} ro rootwait\0" \
|
||||
"sdboot=run setup; run sdfinduuid; run set_sdargs; " \
|
||||
"setenv bootargs ${defargs} ${sdargs} " \
|
||||
"${setupargs} ${vidargs}; echo Booting from MMC/SD card...; " \
|
||||
"run m4boot && " \
|
||||
"load mmc ${sddev}:${sdbootpart} ${kernel_addr_r} ${kernel_file} && " \
|
||||
"load mmc ${sddev}:${sdbootpart} ${fdt_addr_r} " \
|
||||
"${soc}-colibri-${fdt_board}.dtb && " \
|
||||
"run fdt_fixup && bootz ${kernel_addr_r} - ${fdt_addr_r}\0" \
|
||||
"sdbootpart=1\0" \
|
||||
"sddev=" __stringify(SD_BOOTDEV) "\0" \
|
||||
"sdfinduuid=part uuid mmc ${sddev}:${sdrootpart} uuid\0" \
|
||||
"sdrootpart=2\0"
|
||||
|
||||
|
||||
#define NFS_BOOTCMD \
|
||||
"nfsargs=ip=:::::eth0: root=/dev/nfs\0" \
|
||||
"nfsboot=run setup; " \
|
||||
@@ -184,7 +162,6 @@
|
||||
BOOTENV \
|
||||
MEM_LAYOUT_ENV_SETTINGS \
|
||||
NFS_BOOTCMD \
|
||||
SD_BOOTCMD \
|
||||
MODULE_EXTRA_ENV_SETTINGS \
|
||||
"boot_file=zImage\0" \
|
||||
"console=ttymxc0\0" \
|
||||
|
||||
@@ -10,7 +10,6 @@
|
||||
#include <asm/arch/imx-regs.h>
|
||||
|
||||
#ifdef CONFIG_SPL_BUILD
|
||||
#define CONFIG_SPL_TEXT_BASE 0x0
|
||||
#define CONFIG_SPL_MAX_SIZE (124 * 1024)
|
||||
#define CONFIG_SYS_MONITOR_LEN (1024 * 1024)
|
||||
#define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR
|
||||
|
||||
@@ -25,30 +25,10 @@
|
||||
#define CONFIG_SYS_MALLOC_LEN (4 * SZ_1M)
|
||||
|
||||
/* FEC ethernet */
|
||||
#define IMX_FEC_BASE ENET_BASE_ADDR
|
||||
#define CONFIG_FEC_XCV_TYPE RGMII
|
||||
#define CONFIG_ETHPRIME "FEC"
|
||||
#define CONFIG_FEC_MXC_PHYADDR 0
|
||||
#define CONFIG_ARP_TIMEOUT 200UL
|
||||
|
||||
/* I2C Configs */
|
||||
#define CONFIG_SYS_I2C
|
||||
#define CONFIG_SYS_I2C_MXC
|
||||
#define CONFIG_SYS_I2C_MXC_I2C1 /* enable I2C bus 1 */
|
||||
#define CONFIG_SYS_I2C_MXC_I2C2 /* enable I2C bus 2 */
|
||||
#define CONFIG_SYS_I2C_SPEED 100000
|
||||
|
||||
/* MMC Configs */
|
||||
#define CONFIG_SYS_FSL_ESDHC_ADDR 0
|
||||
#define CONFIG_SYS_FSL_USDHC_NUM 2
|
||||
#define CONFIG_SYS_MMC_ENV_DEV 1 /* 0 = SDHC2, 1 = SDHC4 (eMMC) */
|
||||
|
||||
/* UART */
|
||||
#define CONFIG_MXC_UART
|
||||
#define CONFIG_MXC_UART_BASE UART1_BASE
|
||||
#define CONFIG_CONS_INDEX 1
|
||||
#define CONFIG_BAUDRATE 115200
|
||||
|
||||
/* USB Configs */
|
||||
#ifdef CONFIG_CMD_USB
|
||||
#define CONFIG_EHCI_HCD_INIT_AFTER_RESET
|
||||
@@ -81,14 +61,42 @@
|
||||
"rdinit=/sbin/init\0" \
|
||||
"addinitrd=setenv bootargs ${bootargs} rdinit=${rdinit} ${debug} \0" \
|
||||
"fit_config=mx6q_tpc70_conf\0" \
|
||||
"uboot_file=u-boot.img\0" \
|
||||
"SPL_file=SPL\0" \
|
||||
"wic_file=kp-image-kpimx6qtpc.wic\0" \
|
||||
"upd_image=st.4k\0" \
|
||||
"updargs=setenv bootargs console=${console} ${smp}"\
|
||||
"rdinit=${rdinit} ${debug} ${displayargs}\0" \
|
||||
"updargs=setenv bootargs console=${console} ${smp} ${displayargs}\0" \
|
||||
"initrd_ram_dev=/dev/ram\0" \
|
||||
"addswupdate=setenv bootargs ${bootargs} root=${initrd_ram_dev} rw\0" \
|
||||
"loadusb=usb start; " \
|
||||
"fatload usb 0 ${loadaddr} ${upd_image}\0" \
|
||||
"upd_uboot_sd=" \
|
||||
"if tftp ${loadaddr} ${uboot_file}; then " \
|
||||
"setexpr blkc ${filesize} / 0x200;" \
|
||||
"setexpr blkc ${blkc} + 1;" \
|
||||
"mmc write ${loadaddr} 0x8A ${blkc};" \
|
||||
"fi;\0" \
|
||||
"upd_SPL_sd=" \
|
||||
"if tftp ${loadaddr} ${SPL_file}; then " \
|
||||
"setexpr blkc ${filesize} / 0x200;" \
|
||||
"setexpr blkc ${blkc} + 1;" \
|
||||
"mmc write ${loadaddr} 0x2 ${blkc};" \
|
||||
"fi;\0" \
|
||||
"upd_SPL_mmc=mmc dev 1; mmc partconf 1 0 1 1; run upd_SPL_sd\0" \
|
||||
"upd_uboot_mmc=mmc dev 1; mmc partconf 1 0 1 1; run upd_uboot_sd\0" \
|
||||
"up_mmc=run upd_SPL_mmc; run upd_uboot_mmc\0" \
|
||||
"up_sd=run upd_SPL_sd; run upd_uboot_sd\0" \
|
||||
"upd_wic=" \
|
||||
"if tftp ${loadaddr} ${wic_file}; then " \
|
||||
"setexpr blkc ${filesize} / 0x200;" \
|
||||
"setexpr blkc ${blkc} + 1;" \
|
||||
"mmc write ${loadaddr} 0x0 ${blkc};" \
|
||||
"fi;\0" \
|
||||
"usbupd=echo Booting update from usb ...; " \
|
||||
"setenv bootargs; " \
|
||||
"run updargs; " \
|
||||
"run addinitrd; " \
|
||||
"run addswupdate; " \
|
||||
"run loadusb; " \
|
||||
"bootm ${loadaddr}#${fit_config}\0" \
|
||||
BOOTENV
|
||||
|
||||
48
include/configs/meerkat96.h
Normal file
48
include/configs/meerkat96.h
Normal file
@@ -0,0 +1,48 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0+ */
|
||||
/*
|
||||
* Copyright (C) 2019 Linaro Ltd.
|
||||
* Copyright (C) 2016 NXP Semiconductors
|
||||
*
|
||||
* Configuration settings for Meerkat96 board.
|
||||
*/
|
||||
|
||||
#ifndef __MEERKAT96_CONFIG_H
|
||||
#define __MEERKAT96_CONFIG_H
|
||||
|
||||
#include "mx7_common.h"
|
||||
#include <imximage.h>
|
||||
|
||||
#define PHYS_SDRAM_SIZE SZ_512M
|
||||
|
||||
/* Size of malloc() pool */
|
||||
#define CONFIG_SYS_MALLOC_LEN (32 * SZ_1M)
|
||||
|
||||
#define CONFIG_SYS_MEMTEST_START 0x80000000
|
||||
#define CONFIG_SYS_MEMTEST_END (CONFIG_SYS_MEMTEST_START + 0x20000000)
|
||||
|
||||
#define CONFIG_SYS_LOAD_ADDR CONFIG_LOADADDR
|
||||
#define CONFIG_SYS_HZ 1000
|
||||
|
||||
/* Physical Memory Map */
|
||||
#define PHYS_SDRAM MMDC0_ARB_BASE_ADDR
|
||||
|
||||
#define CONFIG_SYS_SDRAM_BASE PHYS_SDRAM
|
||||
#define CONFIG_SYS_INIT_RAM_ADDR IRAM_BASE_ADDR
|
||||
#define CONFIG_SYS_INIT_RAM_SIZE IRAM_SIZE
|
||||
|
||||
#define CONFIG_SYS_INIT_SP_OFFSET \
|
||||
(CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
|
||||
#define CONFIG_SYS_INIT_SP_ADDR \
|
||||
(CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_INIT_SP_OFFSET)
|
||||
|
||||
/* Environment configs */
|
||||
#define CONFIG_SYS_MMC_ENV_DEV 0
|
||||
#define CONFIG_SYS_MMC_ENV_PART 0
|
||||
#define CONFIG_ENV_SIZE SZ_8K
|
||||
#define CONFIG_ENV_OFFSET (8 * SZ_64K)
|
||||
|
||||
/* USB configs */
|
||||
#define CONFIG_EHCI_HCD_INIT_AFTER_RESET
|
||||
#define CONFIG_MXC_USB_PORTSC (PORT_PTS_UTMI | PORT_PTS_PTW)
|
||||
|
||||
#endif
|
||||
@@ -51,7 +51,7 @@
|
||||
#define CONFIG_EXTRA_ENV_SETTINGS \
|
||||
"script=boot.scr\0" \
|
||||
"image=zImage\0" \
|
||||
"fdt_file=undefined\0" \
|
||||
"fdtfile=undefined\0" \
|
||||
"fdt_addr=0x18000000\0" \
|
||||
"boot_fdt=try\0" \
|
||||
"ip_dyn=yes\0" \
|
||||
@@ -87,7 +87,7 @@
|
||||
"bootscript=echo Running bootscript from mmc ...; " \
|
||||
"source\0" \
|
||||
"loadimage=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image}\0" \
|
||||
"loadfdt=fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file}\0" \
|
||||
"loadfdt=fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdtfile}\0" \
|
||||
"mmcboot=echo Booting from mmc ...; " \
|
||||
"run finduuid; " \
|
||||
"run mmcargs; " \
|
||||
@@ -116,7 +116,7 @@
|
||||
"fi; " \
|
||||
"${get_cmd} ${image}; " \
|
||||
"if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \
|
||||
"if ${get_cmd} ${fdt_addr} ${fdt_file}; then " \
|
||||
"if ${get_cmd} ${fdt_addr} ${fdtfile}; then " \
|
||||
"bootz ${loadaddr} - ${fdt_addr}; " \
|
||||
"else " \
|
||||
"if test ${boot_fdt} = try; then " \
|
||||
@@ -129,20 +129,20 @@
|
||||
"bootz; " \
|
||||
"fi;\0" \
|
||||
"findfdt="\
|
||||
"if test $fdt_file = undefined; then " \
|
||||
"if test $fdtfile = undefined; then " \
|
||||
"if test $board_name = SABREAUTO && test $board_rev = MX6QP; then " \
|
||||
"setenv fdt_file imx6qp-sabreauto.dtb; fi; " \
|
||||
"setenv fdtfile imx6qp-sabreauto.dtb; fi; " \
|
||||
"if test $board_name = SABREAUTO && test $board_rev = MX6Q; then " \
|
||||
"setenv fdt_file imx6q-sabreauto.dtb; fi; " \
|
||||
"setenv fdtfile imx6q-sabreauto.dtb; fi; " \
|
||||
"if test $board_name = SABREAUTO && test $board_rev = MX6DL; then " \
|
||||
"setenv fdt_file imx6dl-sabreauto.dtb; fi; " \
|
||||
"setenv fdtfile imx6dl-sabreauto.dtb; fi; " \
|
||||
"if test $board_name = SABRESD && test $board_rev = MX6QP; then " \
|
||||
"setenv fdt_file imx6qp-sabresd.dtb; fi; " \
|
||||
"setenv fdtfile imx6qp-sabresd.dtb; fi; " \
|
||||
"if test $board_name = SABRESD && test $board_rev = MX6Q; then " \
|
||||
"setenv fdt_file imx6q-sabresd.dtb; fi; " \
|
||||
"setenv fdtfile imx6q-sabresd.dtb; fi; " \
|
||||
"if test $board_name = SABRESD && test $board_rev = MX6DL; then " \
|
||||
"setenv fdt_file imx6dl-sabresd.dtb; fi; " \
|
||||
"if test $fdt_file = undefined; then " \
|
||||
"setenv fdtfile imx6dl-sabresd.dtb; fi; " \
|
||||
"if test $fdtfile = undefined; then " \
|
||||
"echo WARNING: Could not determine dtb to use; fi; " \
|
||||
"fi;\0" \
|
||||
|
||||
|
||||
@@ -55,17 +55,17 @@
|
||||
/* When booting with FIT specify the node entry containing boot.scr */
|
||||
#if defined(CONFIG_FIT)
|
||||
#define PICO_BOOT_ENV \
|
||||
"bootscr_fitimage_name=bootscr\0" \
|
||||
"bootscriptaddr=0x83200000\0" \
|
||||
"fdtovaddr=0x83100000\0" \
|
||||
"mmcdev=" __stringify(CONFIG_SYS_MMC_ENV_DEV)"\0" \
|
||||
"mmcpart=" __stringify(CONFIG_SYS_MMC_IMG_LOAD_PART) "\0" \
|
||||
"mmcargs=setenv bootargs console=${console},${baudrate} " \
|
||||
"rootwait rw;\0" \
|
||||
"loadbootscript=" \
|
||||
"load mmc ${mmcdev}:${mmcpart} ${bootscriptaddr} ${script};\0" \
|
||||
"bootscript=echo Running bootscript from mmc ...; " \
|
||||
"source ${bootscriptaddr}:${bootscr_fitimage_name}\0"
|
||||
BOOTENV \
|
||||
"fdtovaddr=0x83100000\0" \
|
||||
"scriptaddr=0x83200000\0" \
|
||||
"mmcargs=setenv bootargs console=${console},${baudrate} " \
|
||||
"rootwait rw\0" \
|
||||
"boot_a_script=" \
|
||||
"load ${devtype} ${devnum}:${distro_bootpart} " \
|
||||
"${scriptaddr} ${prefix}${script}; " \
|
||||
"iminfo ${scriptaddr};" \
|
||||
"if test $? -eq 1; then hab_failsafe; fi;" \
|
||||
"source ${scriptaddr}:bootscr\0"
|
||||
#else
|
||||
#define PICO_BOOT_ENV \
|
||||
"bootmenu_0=Boot using PICO-Hobbit baseboard=" \
|
||||
@@ -112,21 +112,6 @@
|
||||
"setup_emmc=mmc dev 0; gpt write mmc 0 $partitions; reset;\0" \
|
||||
PICO_BOOT_ENV
|
||||
|
||||
#if defined(CONFIG_FIT)
|
||||
#define CONFIG_BOOTCOMMAND \
|
||||
"mmc dev ${mmcdev};" \
|
||||
"mmc dev ${mmcdev}; if mmc rescan; then " \
|
||||
"if run loadbootscript; then " \
|
||||
"iminfo ${bootscriptaddr};" \
|
||||
"if test $? -eq 1; then hab_failsafe; fi;" \
|
||||
"run bootscript; " \
|
||||
"else " \
|
||||
"echo Fail to load fitImage with boot script;" \
|
||||
"hab_failsafe;" \
|
||||
"fi; " \
|
||||
"fi"
|
||||
#endif
|
||||
|
||||
#define BOOT_TARGET_DEVICES(func) \
|
||||
func(MMC, mmc, 0) \
|
||||
func(USB, usb, 0) \
|
||||
|
||||
@@ -40,15 +40,6 @@
|
||||
#define CONFIG_MXC_UART
|
||||
#define CONFIG_MXC_UART_BASE UART1_BASE /* select UART1/UART2 */
|
||||
|
||||
/* Ethernet */
|
||||
#define CONFIG_FEC_MXC
|
||||
#define CONFIG_FEC_MXC
|
||||
#define IMX_FEC_BASE ENET_BASE_ADDR
|
||||
#define CONFIG_FEC_XCV_TYPE RGMII
|
||||
#define CONFIG_ETHPRIME "FEC"
|
||||
#define CONFIG_FEC_MXC_PHYADDR 4
|
||||
#define CONFIG_PHY_ATHEROS
|
||||
|
||||
/* Framebuffer */
|
||||
#ifdef CONFIG_VIDEO
|
||||
#define CONFIG_VIDEO_BMP_RLE8
|
||||
|
||||
Reference in New Issue
Block a user