MLK-15013-6 imx8qm_arm2: Enable USB DM driver for USBOH controller
authorYe Li <ye.li@nxp.com>
Tue, 6 Jun 2017 08:14:41 +0000 (03:14 -0500)
committerJason Liu <jason.hui.liu@nxp.com>
Thu, 2 Nov 2017 18:36:53 +0000 (02:36 +0800)
Add board codes and configurations to enable USB DM driver (host and gadget)
for the USBOH(OTG) controller on i.MX8QM ARM2 board.

For device mode, the UMS (USB mass storage) is enabled at default.

Signed-off-by: Ye Li <ye.li@nxp.com>
board/freescale/imx8qm_arm2/imx8qm_arm2.c
configs/imx8qm_lpddr4_arm2_defconfig
include/configs/imx8qm_arm2.h

index a4cd127..aff12d9 100644 (file)
@@ -113,7 +113,7 @@ static iomux_cfg_t lpi2c1_pads[] = {
        SC_P_GPT0_CAPTURE | MUX_MODE_ALT(1) | MUX_PAD_CTRL(I2C_PAD_CTRL),
 
        /* Change the default alt function from SCL/SDA to others, to avoid select input conflict with GPT0 */
-       SC_P_USB_SS3_TC0 | MUX_MODE_ALT(1) | MUX_PAD_CTRL(GPIO_PAD_CTRL), /* Set ALT to OTG1 PWR*/
+       SC_P_USB_SS3_TC0 | MUX_MODE_ALT(3) | MUX_PAD_CTRL(GPIO_PAD_CTRL), /* Set ALT to GPIO used as OTG1 PWR in DM driver */
        SC_P_USB_SS3_TC1 | MUX_MODE_ALT(3) | MUX_PAD_CTRL(GPIO_PAD_CTRL), /* Set ALT to GPIO */
        SC_P_USB_SS3_TC2 | MUX_MODE_ALT(1) | MUX_PAD_CTRL(GPIO_PAD_CTRL), /* Set ALT to OTG1 OC */
        SC_P_USB_SS3_TC3 | MUX_MODE_ALT(3) | MUX_PAD_CTRL(GPIO_PAD_CTRL), /* Set ALT to GPIO */
@@ -638,6 +638,21 @@ void pci_init_board(void)
 }
 #endif
 
+#ifdef CONFIG_USB_EHCI_MX6
+static iomux_cfg_t otg1_pins[] = {
+       /* Set USB PWR to GPIO used by DM driver */
+       SC_P_USB_SS3_TC0 | MUX_MODE_ALT(3) | MUX_PAD_CTRL(GPIO_PAD_CTRL),
+};
+
+static void setup_otg(void)
+{
+       imx8_iomux_setup_multiple_pads(otg1_pins, ARRAY_SIZE(otg1_pins));
+
+       /* Enable usb power */
+       init_otg_power();
+}
+#endif
+
 int board_init(void)
 {
 #ifdef CONFIG_MXC_GPIO
@@ -668,6 +683,9 @@ int board_init(void)
        setup_mmc();
 #endif
 
+#ifdef CONFIG_USB_EHCI_MX6
+       setup_otg();
+#endif
        return 0;
 }
 
index 93722d4..810274c 100644 (file)
@@ -13,8 +13,21 @@ CONFIG_DM_I2C=y
 # CONFIG_DM_I2C_COMPAT is not set
 CONFIG_SYS_I2C_IMX_LPI2C=y
 CONFIG_CMD_I2C=y
-# CONFIG_CMD_USB is not set
-# CONFIG_USB is not set
+
+CONFIG_CMD_USB=y
+CONFIG_USB=y
+CONFIG_DM_USB=y
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_STORAGE=y
+
+CONFIG_CMD_USB_MASS_STORAGE=y
+CONFIG_USB_GADGET=y
+CONFIG_CI_UDC=y
+CONFIG_USB_GADGET_DOWNLOAD=y
+CONFIG_G_DNL_MANUFACTURER="FSL"
+CONFIG_G_DNL_VENDOR_NUM=0x0525
+CONFIG_G_DNL_PRODUCT_NUM=0xa4a5
+
 CONFIG_CMD_GPIO=y
 CONFIG_DM_GPIO=y
 CONFIG_DM_PCA953X=y
@@ -38,3 +51,7 @@ CONFIG_CMD_DHCP=y
 CONFIG_CMD_MII=y
 CONFIG_DM_ETH=y
 # CONFIG_EFI_LOADER is not set
+
+CONFIG_DM_REGULATOR=y
+CONFIG_DM_REGULATOR_FIXED=y
+CONFIG_DM_REGULATOR_GPIO=y
index 6ad1a1a..712cdcf 100644 (file)
 #define CONFIG_SYS_FSL_FSPI_AHB
 #endif
 
+/* USB OTG controller configs */
+#ifdef CONFIG_CMD_USB
+#define CONFIG_USB_HOST_ETHER
+#define CONFIG_USB_ETHER_ASIX
+#define CONFIG_MXC_USB_PORTSC          (PORT_PTS_UTMI | PORT_PTS_PTW)
+#endif
+
+#ifdef CONFIG_USB_GADGET
+#define CONFIG_USBD_HS
+#define CONFIG_USB_FUNCTION_MASS_STORAGE
+#endif
+
 #endif /* __IMX8QM_ARM2_H */