From 11907cb5cfbb30ab3923d10a874aee0bde8ec64c Mon Sep 17 00:00:00 2001 From: Fabio Estevam Date: Sat, 18 Dec 2021 18:10:20 -0300 Subject: udoo_spl: Initialize the eSDHC controller in SPL Currently, imx6q udoo board fails to boot like this: U-Boot SPL 2022.01-rc3-00061-g95ca715adad3 (Dec 18 2021 - 18:04:40 -0300) Trying to boot from MMC1 The reason is that the eSDHC controller is not initialized in SPL. Initialize the eSDHC controller in SPL via C code as DM is not used in SPL. Signed-off-by: Fabio Estevam Reviewed-by: Peter Robinson --- board/udoo/udoo_spl.c | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/board/udoo/udoo_spl.c b/board/udoo/udoo_spl.c index d9afbbb7419..647380e1db6 100644 --- a/board/udoo/udoo_spl.c +++ b/board/udoo/udoo_spl.c @@ -254,4 +254,39 @@ void board_init_f(ulong dummy) /* DDR initialization */ spl_dram_init(); } + +#define USDHC3_CD_GPIO IMX_GPIO_NR(7, 0) + +#define USDHC_PAD_CTRL (PAD_CTL_PUS_47K_UP | \ + PAD_CTL_SPEED_LOW | PAD_CTL_DSE_80ohm | \ + PAD_CTL_SRE_FAST | PAD_CTL_HYS) + +static struct fsl_esdhc_cfg usdhc_cfg[2] = { + {USDHC3_BASE_ADDR}, +}; + +static const iomux_v3_cfg_t usdhc3_pads[] = { + IOMUX_PADS(PAD_SD3_CLK__SD3_CLK | MUX_PAD_CTRL(USDHC_PAD_CTRL)), + IOMUX_PADS(PAD_SD3_CMD__SD3_CMD | MUX_PAD_CTRL(USDHC_PAD_CTRL)), + IOMUX_PADS(PAD_SD3_DAT0__SD3_DATA0 | MUX_PAD_CTRL(USDHC_PAD_CTRL)), + IOMUX_PADS(PAD_SD3_DAT1__SD3_DATA1 | MUX_PAD_CTRL(USDHC_PAD_CTRL)), + IOMUX_PADS(PAD_SD3_DAT2__SD3_DATA2 | MUX_PAD_CTRL(USDHC_PAD_CTRL)), + IOMUX_PADS(PAD_SD3_DAT3__SD3_DATA3 | MUX_PAD_CTRL(USDHC_PAD_CTRL)), + IOMUX_PADS(PAD_SD3_DAT5__GPIO7_IO00 | MUX_PAD_CTRL(NO_PAD_CTRL)), +}; + +int board_mmc_getcd(struct mmc *mmc) +{ + return !gpio_get_value(USDHC3_CD_GPIO); +} + +int board_mmc_init(struct bd_info *bis) +{ + SETUP_IOMUX_PADS(usdhc3_pads); + usdhc_cfg[0].sdhc_clk = mxc_get_clock(MXC_ESDHC3_CLK); + usdhc_cfg[0].max_bus_width = 4; + gpio_direction_input(USDHC3_CD_GPIO); + + return fsl_esdhc_initialize(bis, &usdhc_cfg[0]); +} #endif -- cgit v1.3.1 From 6869bab6a11e20b2f70bef5d286111a57b82e227 Mon Sep 17 00:00:00 2001 From: Fabio Estevam Date: Sat, 18 Dec 2021 18:10:21 -0300 Subject: ARM: dts: imx6qdl-udoo: Properly describe the SD card detect GPIO7_IO00 is used as SD card detect. Properly describe this in the devicetree. Signed-off-by: Fabio Estevam --- arch/arm/dts/imx6qdl-udoo.dtsi | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/arch/arm/dts/imx6qdl-udoo.dtsi b/arch/arm/dts/imx6qdl-udoo.dtsi index d07d8f83456..2d0d102661b 100644 --- a/arch/arm/dts/imx6qdl-udoo.dtsi +++ b/arch/arm/dts/imx6qdl-udoo.dtsi @@ -4,7 +4,7 @@ * * Author: Fabio Estevam */ - +#include / { aliases { backlight = &backlight; @@ -226,6 +226,7 @@ MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x17059 MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x17059 MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x17059 + MX6QDL_PAD_SD3_DAT5__GPIO7_IO00 0x1b0b0 >; }; @@ -304,7 +305,7 @@ &usdhc3 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_usdhc3>; - non-removable; + cd-gpios = <&gpio7 0 GPIO_ACTIVE_LOW>; status = "okay"; }; -- cgit v1.3.1 From c280ec210f31429bfdefa0eb3b211f12002c539b Mon Sep 17 00:00:00 2001 From: Fabio Estevam Date: Sat, 18 Dec 2021 18:10:22 -0300 Subject: udoo: Call gpio_request() Calling gpio_request() prior to its usage is now mandatory. This fixes the following GPIO errors: U-Boot SPL 2022.01-rc3-00067-g7a5be871c0ec (Dec 18 2021 - 17:45:07 -0300) Trying to boot from MMC1 U-Boot 2022.01-rc3-00067-g7a5be871c0ec (Dec 18 2021 - 17:45:07 -0300) CPU: Freescale i.MX6Q rev1.2 at 792 MHz Reset cause: WDOG Model: Udoo i.MX6 Quad Board Board: Udoo Quad DRAM: 1 GiB MMC: FSL_SDHC: 2 Loading Environment from MMC... OK In: serial Out: serial Err: serial gpio@20a0000: set_dir_flags: error: gpio GPIO2_31 not reserved gpio@20a4000: set_dir_flags: error: gpio GPIO3_23 not reserved gpio@20b0000: set_dir_flags: error: gpio GPIO6_24 not reserved gpio@20b0000: set_dir_flags: error: gpio GPIO6_25 not reserved gpio@20b0000: set_dir_flags: error: gpio GPIO6_27 not reserved gpio@20b0000: set_dir_flags: error: gpio GPIO6_28 not reserved gpio@20b0000: set_dir_flags: error: gpio GPIO6_29 not reserved gpio@20a4000: set_value: error: gpio GPIO3_23 not reserved Net: Could not get PHY for FEC0: addr -2 No ethernet found. Signed-off-by: Fabio Estevam Reviewed-by: Peter Robinson --- board/udoo/udoo.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/board/udoo/udoo.c b/board/udoo/udoo.c index 5c49388cbfb..9e0365615d6 100644 --- a/board/udoo/udoo.c +++ b/board/udoo/udoo.c @@ -90,6 +90,14 @@ int mx6_rgmii_rework(struct phy_device *phydev) static void setup_iomux_enet(void) { + gpio_request(IMX_GPIO_NR(2, 31), "eth_power"); + gpio_request(IMX_GPIO_NR(3, 23), "eth_phy_reset"); + gpio_request(IMX_GPIO_NR(6, 24), "strap1"); + gpio_request(IMX_GPIO_NR(6, 25), "strap2"); + gpio_request(IMX_GPIO_NR(6, 27), "strap3"); + gpio_request(IMX_GPIO_NR(6, 28), "strap4"); + gpio_request(IMX_GPIO_NR(6, 29), "strap5"); + gpio_direction_output(IMX_GPIO_NR(2, 31), 1); /* Power supply on */ gpio_direction_output(IMX_GPIO_NR(3, 23), 0); /* assert PHY rst */ -- cgit v1.3.1 From 353aa7b06fc30593095c909ea10b05ad045c6570 Mon Sep 17 00:00:00 2001 From: Fabio Estevam Date: Sat, 18 Dec 2021 18:10:23 -0300 Subject: udoo: Adjust the SD card device numbering After the conversion to DM the SD card shows up as 'mmc 2' device. Adjust the 'mmcdev' and the distro command 'func' accordingly. Signed-off-by: Fabio Estevam Reviewed-by: Peter Robinson --- configs/udoo_defconfig | 1 + include/configs/udoo.h | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/configs/udoo_defconfig b/configs/udoo_defconfig index 8e1bba11204..284ea058846 100644 --- a/configs/udoo_defconfig +++ b/configs/udoo_defconfig @@ -35,6 +35,7 @@ CONFIG_OF_CONTROL=y CONFIG_ENV_OVERWRITE=y CONFIG_ENV_IS_IN_MMC=y CONFIG_SYS_RELOC_GD_ENV_ADDR=y +CONFIG_SYS_MMC_ENV_DEV=2 CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y CONFIG_DM=y CONFIG_BOUNCE_BUFFER=y diff --git a/include/configs/udoo.h b/include/configs/udoo.h index fe6ea68dd46..4bddc0eca30 100644 --- a/include/configs/udoo.h +++ b/include/configs/udoo.h @@ -28,7 +28,7 @@ "fdt_addr=0x18000000\0" \ "fdt_addr_r=0x18000000\0" \ "ip_dyn=yes\0" \ - "mmcdev=0\0" \ + "mmcdev=2\0" \ "mmcrootfstype=ext4\0" \ "findfdt="\ "if test ${board_rev} = MX6Q; then " \ @@ -44,7 +44,7 @@ BOOTENV #define BOOT_TARGET_DEVICES(func) \ - func(MMC, mmc, 0) \ + func(MMC, mmc, 2) \ func(SATA, sata, 0) \ func(DHCP, dhcp, na) -- cgit v1.3.1 From 6a69afe7961957158a93b089d45fff999f95ab23 Mon Sep 17 00:00:00 2001 From: Fabio Estevam Date: Sat, 18 Dec 2021 18:10:24 -0300 Subject: udoo: Increase CONFIG_ENV_OFFSET Increase CONFIG_ENV_OFFSET to avoid the environment region to overlap with U-Boot proper. Signed-off-by: Fabio Estevam Reviewed-by: Peter Robinson --- configs/udoo_defconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configs/udoo_defconfig b/configs/udoo_defconfig index 284ea058846..ab2b2ee6755 100644 --- a/configs/udoo_defconfig +++ b/configs/udoo_defconfig @@ -7,7 +7,7 @@ CONFIG_SPL_LIBCOMMON_SUPPORT=y CONFIG_SPL_LIBGENERIC_SUPPORT=y CONFIG_NR_DRAM_BANKS=1 CONFIG_ENV_SIZE=0x2000 -CONFIG_ENV_OFFSET=0x60000 +CONFIG_ENV_OFFSET=0xC0000 CONFIG_MX6QDL=y CONFIG_TARGET_UDOO=y CONFIG_DM_GPIO=y -- cgit v1.3.1 From 7ad0cee75477507f3406a6b50637555d4fe3751a Mon Sep 17 00:00:00 2001 From: Fabio Estevam Date: Sat, 18 Dec 2021 18:10:25 -0300 Subject: udoo: Select CMD_DM CMD_DM is useful for showing the whole DM tree. Enable it via "imply CMD_DM". Signed-off-by: Fabio Estevam Reviewed-by: Peter Robinson --- arch/arm/mach-imx/mx6/Kconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/arm/mach-imx/mx6/Kconfig b/arch/arm/mach-imx/mx6/Kconfig index 62de942a32a..98df4d4e428 100644 --- a/arch/arm/mach-imx/mx6/Kconfig +++ b/arch/arm/mach-imx/mx6/Kconfig @@ -588,6 +588,7 @@ config TARGET_UDOO depends on MX6QDL select BOARD_LATE_INIT select SUPPORT_SPL + imply CMD_DM config TARGET_UDOO_NEO bool "UDOO Neo" -- cgit v1.3.1 From 8f758683a8077a13571f6ad57ccb4d7fe9e7b184 Mon Sep 17 00:00:00 2001 From: Gary Bisson Date: Thu, 6 Jan 2022 16:02:08 +0100 Subject: usb: gadget: dwc2_udc_otg: set ep's desc during enable/disable Fastboot support has been broken on platforms using dwc2 controller since the gadget gets its max packet size from it. This patch is the equivalent of 723fd5668ff which fixed the same issue but for the chipidea controller. Fixes: 27c9141b111 ("usb: gadget: fastboot: use correct max packet size") Signed-off-by: Gary Bisson Reviewed-by: Neil Armstrong Tested-by: Mattijs Korpershoek --- drivers/usb/gadget/dwc2_udc_otg.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/usb/gadget/dwc2_udc_otg.c b/drivers/usb/gadget/dwc2_udc_otg.c index 2f318144421..fb10884755b 100644 --- a/drivers/usb/gadget/dwc2_udc_otg.c +++ b/drivers/usb/gadget/dwc2_udc_otg.c @@ -655,6 +655,7 @@ static int dwc2_ep_enable(struct usb_ep *_ep, return -ESHUTDOWN; } + _ep->desc = desc; ep->stopped = 0; ep->desc = desc; ep->pio_irqs = 0; @@ -695,6 +696,7 @@ static int dwc2_ep_disable(struct usb_ep *_ep) /* Nuke all pending requests */ nuke(ep, -ESHUTDOWN); + _ep->desc = NULL; ep->desc = 0; ep->stopped = 1; -- cgit v1.3.1 From 1b2fb345d755d214728ef7377c06a00dc5d6759b Mon Sep 17 00:00:00 2001 From: Gary Bisson Date: Wed, 5 Jan 2022 14:17:53 +0100 Subject: nitrogen6x: add missing pinctrl to fix mmc Since commit f7ac30b042d, the pin muxing for mmc was removed from the board file to be managed by DM_MMC which requires PINCTRL to work. It made the change for sabrelite but nitrogen configs were forgotten. Signed-off-by: Gary Bisson Reviewed-by: Fabio Estevam Acked-by: Troy Kisky --- configs/nitrogen6dl2g_defconfig | 2 ++ configs/nitrogen6dl_defconfig | 2 ++ configs/nitrogen6q2g_defconfig | 2 ++ configs/nitrogen6q_defconfig | 2 ++ configs/nitrogen6s1g_defconfig | 2 ++ configs/nitrogen6s_defconfig | 2 ++ 6 files changed, 12 insertions(+) diff --git a/configs/nitrogen6dl2g_defconfig b/configs/nitrogen6dl2g_defconfig index 593a43e5e79..20c5d302577 100644 --- a/configs/nitrogen6dl2g_defconfig +++ b/configs/nitrogen6dl2g_defconfig @@ -68,6 +68,8 @@ CONFIG_PHY_MICREL=y CONFIG_PHY_MICREL_KSZ90X1=y CONFIG_FEC_MXC=y CONFIG_MII=y +CONFIG_PINCTRL=y +CONFIG_PINCTRL_IMX6=y CONFIG_MXC_UART=y CONFIG_SPI=y CONFIG_DM_SPI=y diff --git a/configs/nitrogen6dl_defconfig b/configs/nitrogen6dl_defconfig index 4bcc6756801..796bd66bc23 100644 --- a/configs/nitrogen6dl_defconfig +++ b/configs/nitrogen6dl_defconfig @@ -68,6 +68,8 @@ CONFIG_PHY_MICREL=y CONFIG_PHY_MICREL_KSZ90X1=y CONFIG_FEC_MXC=y CONFIG_MII=y +CONFIG_PINCTRL=y +CONFIG_PINCTRL_IMX6=y CONFIG_MXC_UART=y CONFIG_SPI=y CONFIG_DM_SPI=y diff --git a/configs/nitrogen6q2g_defconfig b/configs/nitrogen6q2g_defconfig index 76fc53d5154..b42220db064 100644 --- a/configs/nitrogen6q2g_defconfig +++ b/configs/nitrogen6q2g_defconfig @@ -70,6 +70,8 @@ CONFIG_PHY_MICREL=y CONFIG_PHY_MICREL_KSZ90X1=y CONFIG_FEC_MXC=y CONFIG_MII=y +CONFIG_PINCTRL=y +CONFIG_PINCTRL_IMX6=y CONFIG_MXC_UART=y CONFIG_SPI=y CONFIG_DM_SPI=y diff --git a/configs/nitrogen6q_defconfig b/configs/nitrogen6q_defconfig index fca3e5f5311..cc085594967 100644 --- a/configs/nitrogen6q_defconfig +++ b/configs/nitrogen6q_defconfig @@ -70,6 +70,8 @@ CONFIG_PHY_MICREL=y CONFIG_PHY_MICREL_KSZ90X1=y CONFIG_FEC_MXC=y CONFIG_MII=y +CONFIG_PINCTRL=y +CONFIG_PINCTRL_IMX6=y CONFIG_MXC_UART=y CONFIG_SPI=y CONFIG_DM_SPI=y diff --git a/configs/nitrogen6s1g_defconfig b/configs/nitrogen6s1g_defconfig index 8b720b0d600..17133c5cd60 100644 --- a/configs/nitrogen6s1g_defconfig +++ b/configs/nitrogen6s1g_defconfig @@ -68,6 +68,8 @@ CONFIG_PHY_MICREL=y CONFIG_PHY_MICREL_KSZ90X1=y CONFIG_FEC_MXC=y CONFIG_MII=y +CONFIG_PINCTRL=y +CONFIG_PINCTRL_IMX6=y CONFIG_MXC_UART=y CONFIG_SPI=y CONFIG_DM_SPI=y diff --git a/configs/nitrogen6s_defconfig b/configs/nitrogen6s_defconfig index a9d239e9be9..242580e3e9f 100644 --- a/configs/nitrogen6s_defconfig +++ b/configs/nitrogen6s_defconfig @@ -68,6 +68,8 @@ CONFIG_PHY_MICREL=y CONFIG_PHY_MICREL_KSZ90X1=y CONFIG_FEC_MXC=y CONFIG_MII=y +CONFIG_PINCTRL=y +CONFIG_PINCTRL_IMX6=y CONFIG_MXC_UART=y CONFIG_SPI=y CONFIG_DM_SPI=y -- cgit v1.3.1 From b05cebb5f244f2891b40397ce2eb0f4596fec659 Mon Sep 17 00:00:00 2001 From: Patrick Wildt Date: Sat, 8 Jan 2022 16:34:17 +0100 Subject: imx8mq: Generate a single bootable flash.bin again All i.MX8MQ boards have been converted to binman, which makes it necessary to flash both flash.bin and u-boot.itb to get a bootable system. Prior to the conversion, only flash.bin was needed. Such new requirement breaks existing distro mechanisms to generate the final binary because the extra u-boot.itb is now required. Generate a final flash.bin that can be used again as a single bootable binary to keep the original behavior. After this change the SPL binary is called spl.bin, which is a more descriptive name for its purpose, and can still be used standalone (for example, for secure boot purposes). Also update imx8mq_evk.rst to remove the u-boot.itb copy step. This is a cherry-pick of 028abfd9b157 ("imx8mm-evk: Generate a single bootable flash.bin again") adjusted to apply to i.MX8MQ. Signed-off-by: Patrick Wildt Reviewed-by: Fabio Estevam --- arch/arm/dts/imx8mq-u-boot.dtsi | 19 ++++++++++++++++++- arch/arm/mach-imx/imx8m/imximage.cfg | 2 +- doc/board/nxp/imx8mq_evk.rst | 1 - 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/arch/arm/dts/imx8mq-u-boot.dtsi b/arch/arm/dts/imx8mq-u-boot.dtsi index 2c10e9b6452..8a6075c77b4 100644 --- a/arch/arm/dts/imx8mq-u-boot.dtsi +++ b/arch/arm/dts/imx8mq-u-boot.dtsi @@ -50,7 +50,9 @@ }; }; - flash { + spl { + filename = "spl.bin"; + mkimage { args = "-n spl/u-boot-spl.cfgout -T imx8mimage -e 0x7e1000"; @@ -119,4 +121,19 @@ }; }; }; + + imx-boot { + filename = "flash.bin"; + pad-byte = <0x00>; + + spl: blob-ext@1 { + offset = <0x0>; + filename = "spl.bin"; + }; + + uboot: blob-ext@2 { + offset = <0x57c00>; + filename = "u-boot.itb"; + }; + }; }; diff --git a/arch/arm/mach-imx/imx8m/imximage.cfg b/arch/arm/mach-imx/imx8m/imximage.cfg index 9c6eaf0a6db..2a3f9591835 100644 --- a/arch/arm/mach-imx/imx8m/imximage.cfg +++ b/arch/arm/mach-imx/imx8m/imximage.cfg @@ -8,4 +8,4 @@ FIT BOOT_FROM sd SIGNED_HDMI signed_hdmi.bin -LOADER mkimage.flash.mkimage 0x7e1000 +LOADER u-boot-spl-ddr.bin 0x7e1000 diff --git a/doc/board/nxp/imx8mq_evk.rst b/doc/board/nxp/imx8mq_evk.rst index 92eeda79aa1..aa1ecfb47ad 100644 --- a/doc/board/nxp/imx8mq_evk.rst +++ b/doc/board/nxp/imx8mq_evk.rst @@ -50,7 +50,6 @@ Burn the flash.bin to MicroSD card offset 33KB: .. code-block:: bash $sudo dd if=flash.bin of=/dev/sd[x] bs=1024 seek=33 conv=notrunc - $sudo dd if=u-boot.itb of=/dev/sd[x] bs=1024 seek=384 conv=notrunc Boot ---- -- cgit v1.3.1