]> git.ipfire.org Git - people/ms/u-boot.git/commitdiff
pico-imx6ul: Add USB Host support
authorVanessa Maegima <vanessa.maegima@nxp.com>
Mon, 13 Jun 2016 16:01:38 +0000 (13:01 -0300)
committerStefano Babic <sbabic@denx.de>
Tue, 12 Jul 2016 15:58:50 +0000 (17:58 +0200)
Add USB host support.

Tested by connecting a USB pen drive:

=> usb start
starting USB...
USB0:   Port not available.
USB1:   USB EHCI 1.00
scanning bus 1 for devices... 2 USB Device(s) found
       scanning usb for storage devices... 1 Storage Device(s) found

Signed-off-by: Vanessa Maegima <vanessa.maegima@nxp.com>
Reviewed-by: Fabio Estevam <fabio.estevam@nxp.com>
board/technexion/pico-imx6ul/pico-imx6ul.c
include/configs/pico-imx6ul.h

index fc746ec965e485fa26208264c5aa874717bae5be..b0b8f054c140e1ac3da0252dd4620acdedad46b8 100644 (file)
@@ -142,6 +142,9 @@ static iomux_v3_cfg_t const usdhc1_pads[] = {
        MX6_PAD_NAND_CLE__USDHC1_DATA7 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
 };
 
+#define USB_OTHERREGS_OFFSET   0x800
+#define UCTRL_PWR_POL          (1 << 9)
+
 static iomux_v3_cfg_t const usb_otg_pad[] = {
        MX6_PAD_GPIO1_IO00__ANATOP_OTG1_ID | MUX_PAD_CTRL(OTG_ID_PAD_CTRL),
 };
@@ -181,7 +184,26 @@ int board_early_init_f(void)
 
 int board_usb_phy_mode(int port)
 {
-       return USB_INIT_DEVICE;
+       if (port == 1)
+               return USB_INIT_HOST;
+       else
+               return USB_INIT_DEVICE;
+}
+
+int board_ehci_hcd_init(int port)
+{
+       u32 *usbnc_usb_ctrl;
+
+       if (port > 1)
+               return -EINVAL;
+
+       usbnc_usb_ctrl = (u32 *)(USB_BASE_ADDR + USB_OTHERREGS_OFFSET +
+                                port * 4);
+
+       /* Set Power polarity */
+       setbits_le32(usbnc_usb_ctrl, UCTRL_PWR_POL);
+
+       return 0;
 }
 
 int board_init(void)
index f8fe2306aea37c5bc6258ebb78372481e73ad97f..f9fc263d991fa3b486c10e80677bfcd1200ac895 100644 (file)
@@ -52,7 +52,7 @@
 #define CONFIG_EHCI_HCD_INIT_AFTER_RESET
 #define CONFIG_MXC_USB_PORTSC          (PORT_PTS_UTMI | PORT_PTS_PTW)
 #define CONFIG_MXC_USB_FLAGS           0
-#define CONFIG_USB_MAX_CONTROLLER_COUNT        1 /* Only OTG1 port enabled */
+#define CONFIG_USB_MAX_CONTROLLER_COUNT        2
 
 #define CONFIG_CI_UDC
 #define CONFIG_USBD_HS