Merge branch 'iommu/largepages' into amd-iommu/2.6.35
[pandora-kernel.git] / arch / arm / mach-omap2 / usb-musb.c
index a80441d..6d41fa7 100644 (file)
@@ -47,70 +47,11 @@ static struct resource musb_resources[] = {
        },
 };
 
-static int clk_on;
-
-static int musb_set_clock(struct clk *clk, int state)
-{
-       if (state) {
-               if (clk_on > 0)
-                       return -ENODEV;
-
-               clk_enable(clk);
-               clk_on = 1;
-       } else {
-               if (clk_on == 0)
-                       return -ENODEV;
-
-               clk_disable(clk);
-               clk_on = 0;
-       }
-
-       return 0;
-}
-
-static struct musb_hdrc_eps_bits musb_eps[] = {
-       {       "ep1_tx", 10,   },
-       {       "ep1_rx", 10,   },
-       {       "ep2_tx", 9,    },
-       {       "ep2_rx", 9,    },
-       {       "ep3_tx", 3,    },
-       {       "ep3_rx", 3,    },
-       {       "ep4_tx", 3,    },
-       {       "ep4_rx", 3,    },
-       {       "ep5_tx", 3,    },
-       {       "ep5_rx", 3,    },
-       {       "ep6_tx", 3,    },
-       {       "ep6_rx", 3,    },
-       {       "ep7_tx", 3,    },
-       {       "ep7_rx", 3,    },
-       {       "ep8_tx", 2,    },
-       {       "ep8_rx", 2,    },
-       {       "ep9_tx", 2,    },
-       {       "ep9_rx", 2,    },
-       {       "ep10_tx", 2,   },
-       {       "ep10_rx", 2,   },
-       {       "ep11_tx", 2,   },
-       {       "ep11_rx", 2,   },
-       {       "ep12_tx", 2,   },
-       {       "ep12_rx", 2,   },
-       {       "ep13_tx", 2,   },
-       {       "ep13_rx", 2,   },
-       {       "ep14_tx", 2,   },
-       {       "ep14_rx", 2,   },
-       {       "ep15_tx", 2,   },
-       {       "ep15_rx", 2,   },
-};
-
 static struct musb_hdrc_config musb_config = {
        .multipoint     = 1,
        .dyn_fifo       = 1,
-       .soft_con       = 1,
-       .dma            = 1,
        .num_eps        = 16,
-       .dma_channels   = 7,
-       .dma_req_chan   = (1 << 0) | (1 << 1) | (1 << 2) | (1 << 3),
        .ram_bits       = 12,
-       .eps_bits       = musb_eps,
 };
 
 static struct musb_hdrc_platform_data musb_plat = {
@@ -122,7 +63,6 @@ static struct musb_hdrc_platform_data musb_plat = {
        .mode           = MUSB_PERIPHERAL,
 #endif
        /* .clock is set dynamically */
-       .set_clock      = musb_set_clock,
        .config         = &musb_config,
 
        /* REVISIT charge pump on TWL4030 can supply up to
@@ -146,28 +86,34 @@ static struct platform_device musb_device = {
        .resource       = musb_resources,
 };
 
-void __init usb_musb_init(void)
+void __init usb_musb_init(struct omap_musb_board_data *board_data)
 {
-       if (cpu_is_omap243x())
+       if (cpu_is_omap243x()) {
                musb_resources[0].start = OMAP243X_HS_BASE;
-       else
+       } else if (cpu_is_omap34xx()) {
                musb_resources[0].start = OMAP34XX_HSUSB_OTG_BASE;
-       musb_resources[0].end = musb_resources[0].start + SZ_8K - 1;
+       } else if (cpu_is_omap44xx()) {
+               musb_resources[0].start = OMAP44XX_HSUSB_OTG_BASE;
+               musb_resources[1].start = OMAP44XX_IRQ_HS_USB_MC_N;
+               musb_resources[2].start = OMAP44XX_IRQ_HS_USB_DMA_N;
+       }
+       musb_resources[0].end = musb_resources[0].start + SZ_4K - 1;
 
        /*
         * REVISIT: This line can be removed once all the platforms using
         * musb_core.c have been converted to use use clkdev.
         */
        musb_plat.clock = "ick";
+       musb_plat.board_data = board_data;
+       musb_plat.power = board_data->power >> 1;
+       musb_plat.mode = board_data->mode;
 
-       if (platform_device_register(&musb_device) < 0) {
+       if (platform_device_register(&musb_device) < 0)
                printk(KERN_ERR "Unable to register HS-USB (MUSB) device\n");
-               return;
-       }
 }
 
 #else
-void __init usb_musb_init(void)
+void __init usb_musb_init(struct omap_musb_board_data *board_data)
 {
 }
 #endif /* CONFIG_USB_MUSB_SOC */