]> Pileus Git - ~andy/linux/blobdiff - arch/arm/mach-omap2/usb-host.c
Merge tag 'mfd-3.7-1' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6
[~andy/linux] / arch / arm / mach-omap2 / usb-host.c
index ac95daaa4702dc6cd2f734e19e35c716d8c2e69c..3c434498e12e6faf034e1411d1b09b4b75a81c50 100644 (file)
 #ifdef CONFIG_MFD_OMAP_USB_HOST
 
 #define OMAP_USBHS_DEVICE      "usbhs_omap"
+#define OMAP_USBTLL_DEVICE     "usbhs_tll"
 #define        USBHS_UHH_HWMODNAME     "usb_host_hs"
 #define USBHS_TLL_HWMODNAME    "usb_tll_hs"
 
 static struct usbhs_omap_platform_data         usbhs_data;
+static struct usbtll_omap_platform_data                usbtll_data;
 static struct ehci_hcd_omap_platform_data      ehci_data;
 static struct ohci_hcd_omap_platform_data      ohci_data;
 
@@ -485,13 +487,14 @@ void __init setup_4430ohci_io_mux(const enum usbhs_omap_port_mode *port_mode)
 
 void __init usbhs_init(const struct usbhs_omap_board_data *pdata)
 {
-       struct omap_hwmod       *oh[2];
+       struct omap_hwmod       *uhh_hwm, *tll_hwm;
        struct platform_device  *pdev;
        int                     bus_id = -1;
        int                     i;
 
        for (i = 0; i < OMAP3_HS_USB_PORTS; i++) {
                usbhs_data.port_mode[i] = pdata->port_mode[i];
+               usbtll_data.port_mode[i] = pdata->port_mode[i];
                ohci_data.port_mode[i] = pdata->port_mode[i];
                ehci_data.port_mode[i] = pdata->port_mode[i];
                ehci_data.reset_gpio_port[i] = pdata->reset_gpio_port[i];
@@ -510,25 +513,35 @@ void __init usbhs_init(const struct usbhs_omap_board_data *pdata)
                setup_4430ohci_io_mux(pdata->port_mode);
        }
 
-       oh[0] = omap_hwmod_lookup(USBHS_UHH_HWMODNAME);
-       if (!oh[0]) {
+       uhh_hwm = omap_hwmod_lookup(USBHS_UHH_HWMODNAME);
+       if (!uhh_hwm) {
                pr_err("Could not look up %s\n", USBHS_UHH_HWMODNAME);
                return;
        }
 
-       oh[1] = omap_hwmod_lookup(USBHS_TLL_HWMODNAME);
-       if (!oh[1]) {
+       tll_hwm = omap_hwmod_lookup(USBHS_TLL_HWMODNAME);
+       if (!tll_hwm) {
                pr_err("Could not look up %s\n", USBHS_TLL_HWMODNAME);
                return;
        }
 
-       pdev = omap_device_build_ss(OMAP_USBHS_DEVICE, bus_id, oh, 2,
-                               (void *)&usbhs_data, sizeof(usbhs_data),
+       pdev = omap_device_build(OMAP_USBTLL_DEVICE, bus_id, tll_hwm,
+                               &usbtll_data, sizeof(usbtll_data),
                                omap_uhhtll_latency,
                                ARRAY_SIZE(omap_uhhtll_latency), false);
        if (IS_ERR(pdev)) {
-               pr_err("Could not build hwmod devices %s,%s\n",
-                       USBHS_UHH_HWMODNAME, USBHS_TLL_HWMODNAME);
+               pr_err("Could not build hwmod device %s\n",
+                      USBHS_TLL_HWMODNAME);
+               return;
+       }
+
+       pdev = omap_device_build(OMAP_USBHS_DEVICE, bus_id, uhh_hwm,
+                               &usbhs_data, sizeof(usbhs_data),
+                               omap_uhhtll_latency,
+                               ARRAY_SIZE(omap_uhhtll_latency), false);
+       if (IS_ERR(pdev)) {
+               pr_err("Could not build hwmod devices %s\n",
+                      USBHS_UHH_HWMODNAME);
                return;
        }
 }