USB: MX5: Abstract out mx51 USB pixmux configuration
authorMarek Vasut <marek.vasut@gmail.com>
Thu, 24 Nov 2011 03:22:17 +0000 (04:22 +0100)
committerRemy Bohmer <linux@bohmer.net>
Sun, 11 Dec 2011 13:49:37 +0000 (14:49 +0100)
Signed-off-by: Marek Vasut <marek.vasut@gmail.com>
Cc: Stefano Babic <sbabic@denx.de>
Cc: Remy Bohmer <linux@bohmer.net>
Cc: Wolfgang Grandegger <wg@denx.de>
Cc: Jason Liu <r64343@freescale.com>
drivers/usb/host/ehci-mx5.c
include/usb/ehci-fsl.h

index 4c961d345878d250ea9b5fe133f0e0a3a2345745..7b881371d8526c59d34ecfaf4e042ef7cb1fff57 100644 (file)
 /* USB_CTRL_1 */
 #define MXC_USB_CTRL_UH1_EXT_CLK_EN            (1 << 25)
 
+/* USB pin configuration */
+#define USB_PAD_CONFIG (PAD_CTL_PKE_ENABLE | PAD_CTL_SRE_FAST | \
+                       PAD_CTL_DRV_HIGH | PAD_CTL_100K_PU | \
+                       PAD_CTL_HYS_ENABLE | PAD_CTL_PUE_PULL)
+
+#ifdef CONFIG_MX51
+/*
+ * Configure the MX51 USB H1 IOMUX
+ */
+void setup_iomux_usb_h1(void)
+{
+       mxc_request_iomux(MX51_PIN_USBH1_STP, IOMUX_CONFIG_ALT0);
+       mxc_iomux_set_pad(MX51_PIN_USBH1_STP, USB_PAD_CONFIG);
+       mxc_request_iomux(MX51_PIN_USBH1_CLK, IOMUX_CONFIG_ALT0);
+       mxc_iomux_set_pad(MX51_PIN_USBH1_CLK, USB_PAD_CONFIG);
+       mxc_request_iomux(MX51_PIN_USBH1_DIR, IOMUX_CONFIG_ALT0);
+       mxc_iomux_set_pad(MX51_PIN_USBH1_DIR, USB_PAD_CONFIG);
+       mxc_request_iomux(MX51_PIN_USBH1_NXT, IOMUX_CONFIG_ALT0);
+       mxc_iomux_set_pad(MX51_PIN_USBH1_NXT, USB_PAD_CONFIG);
+
+       mxc_request_iomux(MX51_PIN_USBH1_DATA0, IOMUX_CONFIG_ALT0);
+       mxc_iomux_set_pad(MX51_PIN_USBH1_DATA0, USB_PAD_CONFIG);
+       mxc_request_iomux(MX51_PIN_USBH1_DATA1, IOMUX_CONFIG_ALT0);
+       mxc_iomux_set_pad(MX51_PIN_USBH1_DATA1, USB_PAD_CONFIG);
+       mxc_request_iomux(MX51_PIN_USBH1_DATA2, IOMUX_CONFIG_ALT0);
+       mxc_iomux_set_pad(MX51_PIN_USBH1_DATA2, USB_PAD_CONFIG);
+       mxc_request_iomux(MX51_PIN_USBH1_DATA3, IOMUX_CONFIG_ALT0);
+       mxc_iomux_set_pad(MX51_PIN_USBH1_DATA3, USB_PAD_CONFIG);
+       mxc_request_iomux(MX51_PIN_USBH1_DATA4, IOMUX_CONFIG_ALT0);
+       mxc_iomux_set_pad(MX51_PIN_USBH1_DATA4, USB_PAD_CONFIG);
+       mxc_request_iomux(MX51_PIN_USBH1_DATA5, IOMUX_CONFIG_ALT0);
+       mxc_iomux_set_pad(MX51_PIN_USBH1_DATA5, USB_PAD_CONFIG);
+       mxc_request_iomux(MX51_PIN_USBH1_DATA6, IOMUX_CONFIG_ALT0);
+       mxc_iomux_set_pad(MX51_PIN_USBH1_DATA6, USB_PAD_CONFIG);
+       mxc_request_iomux(MX51_PIN_USBH1_DATA7, IOMUX_CONFIG_ALT0);
+       mxc_iomux_set_pad(MX51_PIN_USBH1_DATA7, USB_PAD_CONFIG);
+}
+
+/*
+ * Configure the MX51 USB H2 IOMUX
+ */
+void setup_iomux_usb_h2(void)
+{
+       mxc_request_iomux(MX51_PIN_EIM_A24, IOMUX_CONFIG_ALT2);
+       mxc_iomux_set_pad(MX51_PIN_EIM_A24, USB_PAD_CONFIG);
+       mxc_request_iomux(MX51_PIN_EIM_A25, IOMUX_CONFIG_ALT2);
+       mxc_iomux_set_pad(MX51_PIN_EIM_A25, USB_PAD_CONFIG);
+       mxc_request_iomux(MX51_PIN_EIM_A26, IOMUX_CONFIG_ALT2);
+       mxc_iomux_set_pad(MX51_PIN_EIM_A26, USB_PAD_CONFIG);
+       mxc_request_iomux(MX51_PIN_EIM_A27, IOMUX_CONFIG_ALT2);
+       mxc_iomux_set_pad(MX51_PIN_EIM_A27, USB_PAD_CONFIG);
+
+       mxc_request_iomux(MX51_PIN_EIM_D16, IOMUX_CONFIG_ALT2);
+       mxc_iomux_set_pad(MX51_PIN_EIM_D16, USB_PAD_CONFIG);
+       mxc_request_iomux(MX51_PIN_EIM_D17, IOMUX_CONFIG_ALT2);
+       mxc_iomux_set_pad(MX51_PIN_EIM_D17, USB_PAD_CONFIG);
+       mxc_request_iomux(MX51_PIN_EIM_D18, IOMUX_CONFIG_ALT2);
+       mxc_iomux_set_pad(MX51_PIN_EIM_D18, USB_PAD_CONFIG);
+       mxc_request_iomux(MX51_PIN_EIM_D19, IOMUX_CONFIG_ALT2);
+       mxc_iomux_set_pad(MX51_PIN_EIM_D19, USB_PAD_CONFIG);
+       mxc_request_iomux(MX51_PIN_EIM_D20, IOMUX_CONFIG_ALT2);
+       mxc_iomux_set_pad(MX51_PIN_EIM_D20, USB_PAD_CONFIG);
+       mxc_request_iomux(MX51_PIN_EIM_D21, IOMUX_CONFIG_ALT2);
+       mxc_iomux_set_pad(MX51_PIN_EIM_D21, USB_PAD_CONFIG);
+       mxc_request_iomux(MX51_PIN_EIM_D22, IOMUX_CONFIG_ALT2);
+       mxc_iomux_set_pad(MX51_PIN_EIM_D22, USB_PAD_CONFIG);
+       mxc_request_iomux(MX51_PIN_EIM_D23, IOMUX_CONFIG_ALT2);
+       mxc_iomux_set_pad(MX51_PIN_EIM_D23, USB_PAD_CONFIG);
+}
+#endif
+
 int mxc_set_usbcontrol(int port, unsigned int flags)
 {
        unsigned int v;
index 4ce0ab3f3a373c994b30cb78638aab371c7ba968..28693020ece477934a03eb5caa1c63ac80dfddf4 100644 (file)
@@ -253,4 +253,10 @@ struct usb_ehci {
 /* Board-specific initialization */
 int board_ehci_hcd_init(int port);
 
+/* CPU-specific abstracted-out IOMUX init */
+#ifdef CONFIG_MX51
+void setup_iomux_usb_h1(void);
+void setup_iomux_usb_h2(void);
+#endif
+
 #endif /* _EHCI_FSL_H */