From cae4bfdd7da65b37556ced63535152af00d31d44 Mon Sep 17 00:00:00 2001 From: Igor Opaniuk Date: Wed, 29 Jul 2020 11:20:06 +0300 Subject: colibri-imx8x: up-port initial implementation USB (both host and device), Networking, MMC/SD work. Testing: ----------------------------------------------- U-Boot 2020.04-00119-g9dc5e94cb0-dirty (Jul 30 2020 - 22:36:54 +0300) CPU: NXP i.MX8QXP RevB A35 at 1200 MHz at 47C DRAM: 2 GiB MMC: FSL_SDHC: 0, FSL_SDHC: 1 Loading Environment from MMC... OK In: serial@5a090000 Out: serial@5a090000 Err: serial@5a090000 Model: Toradex Colibri iMX8 QuadXPlus 2GB Wi-Fi / BT IT V1.0B, Serial# 06494331 Net: eth0: ethernet@5b040000 [PRIME] Boot from USB for mfgtools Hit any key to stop autoboot: 0 ----------------------------------------------- Was tested with: imx-mkimage: imx_5.4.24_2.1.0 imx-scfw: ab182211e("Update .gitignore to ignore our built files and files from vscode") imx-atf: imx_5.4.24_2.1.0 imx-seco: 3.6.3 [1] ----------------------------------------------- Dropped patches from toradex_imx_v2018.03_4.14.98_2.3.0_bringup as they have come in from mainline v2020.04 or just not relevant anymore: 9bfdda4f ("tdx-cfg-block.c: correct colibri imx8 string") ae52342b ("colibri-imx8qxp: initial add") 9b950998 ("colibri-imx8qxp: move debug uart to lpuart3") f9b0065b ("colibri-imx8qxp: synchronize with imx8qxp-mek from beta2") 982b4667 ("colibri-imx8qxp: forward port to 2018.03") 5c80880d ("colibri-imx8qxp: add unused pins as gpio") 30b37a6a ("colibri-imx8qxp: adjust copyright/licensing headers) 873a9561 ("colibri-imx8qxp: fix top-level compatible") 0e0f095d ("colibri-imx8qxp: clean-up device tree") f61187df ("colibri-imx8qxp: clean-up configuration") 85a5d16b ("colibri-imx8qxp: clean-up board file") a5a9bb4b ("colibri-imx8qxp: fused modules boot from emmc") 39c20ddd ("colibri-imx8qxp: default to dsihdmi device tree") 7443a6e5 ("colibri-imx8qxp: fix usb device/host functionality") c721083a ("colibri-imx8qxp: fix ethernet functionality") 9f40db9d ("colibri-imx8qxp: adjust copyright/licensing headers some more") 9070b6f0 ("colibri-imx8qxp: dts: clean-up whitespace") 257470ac ("colibri-imx8x: enable FDT relocation") a9272336 ("colibri-imx8qxp: change default device tree") 8470fb25 ("colibri-imx8x/apalis-imx8: converge scriptaddr for distroboot") 62493440 ("apalis-imx8/colibri-imx8x: use proper distroboot script") f1993901 ("apalis-imx8/colibri-imx8x: set fdtfile since it is used by distro bootcmd") 890d03ae ("colibri-imx8qxp: sync with MEK platform") eeb1d9b8 ("colibri-imx8qxp: move environment into first boot area") c8c562ea ("colibri-imx8qxp: do not undef configs configured using Kconfig") 12489199 ("colibri-imx8qxp: make sure config block fdt fix-ups are called") 6a84ffaa ("colibri-imx8qxp: modify default ramdisk loading address") [1] https://www.nxp.com/lgfiles/NMG/MAD/YOCTO/imx-seco-3.6.3.bin Signed-off-by: Igor Opaniuk --- include/configs/colibri-imx8x.h | 89 +++++++++++++++++++++++++++-------------- 1 file changed, 58 insertions(+), 31 deletions(-) (limited to 'include') diff --git a/include/configs/colibri-imx8x.h b/include/configs/colibri-imx8x.h index 311ed439f6..f1b8dfc807 100644 --- a/include/configs/colibri-imx8x.h +++ b/include/configs/colibri-imx8x.h @@ -6,17 +6,14 @@ #ifndef __COLIBRI_IMX8X_H #define __COLIBRI_IMX8X_H -#include #include +#include #define CONFIG_REMAKE_ELF -#define CONFIG_DISPLAY_BOARDINFO_LATE - -#define CONFIG_SYS_FSL_ESDHC_ADDR 0 -#define USDHC1_BASE_ADDR 0x5b010000 -#define USDHC2_BASE_ADDR 0x5b020000 -#define CONFIG_SUPPORT_EMMC_BOOT /* eMMC specific */ +#define CONFIG_SYS_FSL_ESDHC_ADDR 0 +#define USDHC1_BASE_ADDR 0x5B010000 +#define USDHC2_BASE_ADDR 0x5B020000 #define CONFIG_ENV_OVERWRITE @@ -50,44 +47,29 @@ "${m4_0_image}\0" \ "m4boot_0=run loadm4image_0; dcache flush; bootaux ${loadaddr} 0\0" \ -#define MFG_NAND_PARTITION "" - #define BOOT_TARGET_DEVICES(func) \ func(MMC, mmc, 1) \ func(MMC, mmc, 0) \ + func(USB, usb, 0) \ func(DHCP, dhcp, na) #include -#undef BOOTENV_RUN_NET_USB_START -#define BOOTENV_RUN_NET_USB_START "" - -#define CONFIG_MFG_ENV_SETTINGS \ - "mfgtool_args=setenv bootargs console=${console},${baudrate} " \ - "rdinit=/linuxrc g_mass_storage.stall=0 " \ - "g_mass_storage.removable=1 g_mass_storage.idVendor=0x066F " \ - "g_mass_storage.idProduct=0x37FF " \ - "g_mass_storage.iSerialNumber=\"\" " MFG_NAND_PARTITION \ - "${vidargs} clk_ignore_unused\0" \ - "initrd_addr=0x83800000\0" \ - "initrd_high=0xffffffff\0" \ - "bootcmd_mfg=run mfgtool_args;booti ${loadaddr} ${initrd_addr} " \ - "${fdt_addr};\0" \ +#define FDT_FILE "fsl-imx8qxp-colibri-eval-v3.dtb" + +#include /* Initial environment variables */ #define CONFIG_EXTRA_ENV_SETTINGS \ - AHAB_ENV \ BOOTENV \ - CONFIG_MFG_ENV_SETTINGS \ + AHAB_ENV \ M4_BOOT_ENV \ MEM_LAYOUT_ENV_SETTINGS \ "boot_file=Image\0" \ - "console=ttyLP3 earlycon\0" \ + "console=ttyLP3,115200 earlycon=lpuart32,0x5a090000,115200\0" \ "fdt_addr=0x83000000\0" \ - "fdt_file=fsl-imx8qxp-colibri-dsihdmi-eval-v3.dtb\0" \ - "fdtfile=fsl-imx8qxp-colibri-dsihdmi-eval-v3.dtb\0" \ + "fdtfile=" FDT_FILE "\0" \ "finduuid=part uuid mmc ${mmcdev}:2 uuid\0" \ "image=Image\0" \ "initrd_addr=0x83800000\0" \ - "initrd_high=0xffffffffffffffff\0" \ "mmcargs=setenv bootargs console=${console},${baudrate} " \ "root=PARTUUID=${uuid} rootwait " \ "mmcdev=" __stringify(CONFIG_SYS_MMC_ENV_DEV) "\0" \ @@ -100,6 +82,7 @@ "${fdt_addr}\0" \ "panel=NULL\0" \ "script=boot.scr\0" \ + "setup=run mmcargs\0" \ "update_uboot=askenv confirm Did you load u-boot-dtb.imx (y/N)?; " \ "if test \"$confirm\" = \"y\"; then " \ "setexpr blkcnt ${filesize} + 0x1ff && setexpr blkcnt " \ @@ -117,6 +100,8 @@ #define CONFIG_SYS_MEMTEST_START 0x88000000 #define CONFIG_SYS_MEMTEST_END 0x89000000 +#define CONFIG_SYS_MMC_IMG_LOAD_PART 1 + /* Environment in eMMC, before config block at the end of 1st "boot sector" */ #define CONFIG_SYS_MMC_ENV_DEV 0 /* USDHC1 eMMC */ #define CONFIG_SYS_MMC_ENV_PART 1 @@ -151,7 +136,49 @@ /* Generic Timer Definitions */ #define COUNTER_FREQUENCY 8000000 /* 8MHz */ -#define BOOTAUX_RESERVED_MEM_BASE 0x88000000 -#define BOOTAUX_RESERVED_MEM_SIZE SZ_128M /* Reserve from second 128MB */ +/* USB Config */ +#define CONFIG_USBD_HS + +#define CONFIG_CMD_USB_MASS_STORAGE +#define CONFIG_USB_GADGET_MASS_STORAGE +#define CONFIG_USB_FUNCTION_MASS_STORAGE + +#define CONFIG_USB_MAX_CONTROLLER_COUNT 2 + +/* USB OTG controller configs */ +#ifdef CONFIG_USB_EHCI_HCD +#define CONFIG_USB_HOST_ETHER +#define CONFIG_USB_ETHER_ASIX +#define CONFIG_MXC_USB_PORTSC (PORT_PTS_UTMI | PORT_PTS_PTW) +#endif + +/* Networking */ +#define CONFIG_FEC_ENET_DEV 0 + +#if (CONFIG_FEC_ENET_DEV == 0) +#define IMX_FEC_BASE 0x5B040000 +#define CONFIG_FEC_MXC_PHYADDR 0x0 +#define CONFIG_ETHPRIME "eth0" +#elif (CONFIG_FEC_ENET_DEV == 1) +#define IMX_FEC_BASE 0x5B050000 +#define CONFIG_FEC_MXC_PHYADDR 0x1 +#define CONFIG_ETHPRIME "eth1" +#endif + +#define CONFIG_FEC_XCV_TYPE RGMII +#define FEC_QUIRK_ENET_MAC +#define PHY_ANEG_TIMEOUT 20000 + +#ifdef CONFIG_DM_VIDEO +#define CONFIG_VIDEO_LOGO +#define CONFIG_SPLASH_SCREEN +#define CONFIG_SPLASH_SCREEN_ALIGN +#define CONFIG_CMD_BMP +#define CONFIG_BMP_16BPP +#define CONFIG_BMP_24BPP +#define CONFIG_BMP_32BPP +#define CONFIG_VIDEO_BMP_RLE8 +#define CONFIG_VIDEO_BMP_LOGO +#endif #endif /* __COLIBRI_IMX8X_H */ -- cgit v1.2.3