[PATCH 4/6] ARM: freescale-mx51-babbage: Add USBH1 PHY reset sequence
From: Andrey Smirnov <hidden>
Date: 2018-08-25 21:03:45
Subsystem:
arm port, the rest · Maintainers:
Russell King, Linus Torvalds
UPLI PHY connected to USBH1 on Babbage board seem to need a special reset sequence in which STP signal gets asserted for a short period of time. Without this sequnce running "usb" results in timeout and no USB devices found. Similar reset sequences can be found in Babbage board code in U-Boot as well as efikamx_usb_init() in Barebox. Signed-off-by: Andrey Smirnov <redacted> --- .../arm/boards/freescale-mx51-babbage/board.c | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+)
diff --git a/arch/arm/boards/freescale-mx51-babbage/board.c b/arch/arm/boards/freescale-mx51-babbage/board.c
index 2e75db547..4839aa568 100644
--- a/arch/arm/boards/freescale-mx51-babbage/board.c
+++ b/arch/arm/boards/freescale-mx51-babbage/board.c@@ -43,6 +43,41 @@ #define MX51_CCM_CACRR 0x10 +#define USBH1_STP IMX_GPIO_NR(1, 27) +#define USBH1_PHY_RESET IMX_GPIO_NR(2, 5) +#define USBH1_HUB_RESET IMX_GPIO_NR(1, 7) + +static int imx51_babbage_reset_usbh1(void) +{ + void __iomem *iomuxbase = IOMEM(MX51_IOMUXC_BASE_ADDR); + + if (!of_machine_is_compatible("fsl,imx51-babbage")) + return 0; + + imx_setup_pad(iomuxbase, MX51_PAD_EIM_D21__GPIO2_5); + imx_setup_pad(iomuxbase, MX51_PAD_GPIO1_7__GPIO1_7); + + gpio_direction_output(USBH1_PHY_RESET, 0); + gpio_direction_output(USBH1_HUB_RESET, 0); + + mdelay(10); + + gpio_set_value(USBH1_PHY_RESET, 1); + gpio_set_value(USBH1_HUB_RESET, 1); + + imx_setup_pad(iomuxbase, MX51_PAD_USBH1_STP__GPIO1_27); + gpio_direction_output(USBH1_STP, 1); + + mdelay(1); + + imx_setup_pad(iomuxbase, MX51_PAD_USBH1_STP__USBH1_STP); + + gpio_free(USBH1_PHY_RESET); + + return 0; +} +console_initcall(imx51_babbage_reset_usbh1); + static int imx51_babbage_init(void) { if (!of_machine_is_compatible("fsl,imx51-babbage"))
--
2.17.1
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox