- patches.suse/slab-handle-memoryless-nodes-v2a.patch: Refresh.
[linux-flexiantxendom0-3.2.10.git] / drivers / usb / gadget / omap_udc.c
index a2db0e1..f81e4f0 100644 (file)
@@ -52,9 +52,9 @@
 #include <asm/unaligned.h>
 #include <asm/mach-types.h>
 
-#include <mach/dma.h>
-#include <mach/usb.h>
-#include <mach/control.h>
+#include <plat/dma.h>
+#include <plat/usb.h>
+#include <plat/control.h>
 
 #include "omap_udc.h"
 
@@ -2098,6 +2098,7 @@ static inline int machine_without_vbus_sense(void)
                || machine_is_omap_h4()
 #endif
                || machine_is_sx1()
+               || cpu_is_omap7xx() /* No known omap7xx boards with vbus sense */
                );
 }
 
@@ -2838,6 +2839,16 @@ static int __init omap_udc_probe(struct platform_device *pdev)
                udelay(100);
        }
 
+       if (cpu_is_omap7xx()) {
+               dc_clk = clk_get(&pdev->dev, "usb_dc_ck");
+               hhc_clk = clk_get(&pdev->dev, "l3_ocpi_ck");
+               BUG_ON(IS_ERR(dc_clk) || IS_ERR(hhc_clk));
+               /* can't use omap_udc_enable_clock yet */
+               clk_enable(dc_clk);
+               clk_enable(hhc_clk);
+               udelay(100);
+       }
+
        INFO("OMAP UDC rev %d.%d%s\n",
                omap_readw(UDC_REV) >> 4, omap_readw(UDC_REV) & 0xf,
                config->otg ? ", Mini-AB" : "");
@@ -2970,7 +2981,7 @@ known:
                goto cleanup3;
        }
 #endif
-       if (cpu_is_omap16xx()) {
+       if (cpu_is_omap16xx() || cpu_is_omap7xx()) {
                udc->dc_clk = dc_clk;
                udc->hhc_clk = hhc_clk;
                clk_disable(hhc_clk);
@@ -3008,7 +3019,7 @@ cleanup0:
        if (xceiv)
                otg_put_transceiver(xceiv);
 
-       if (cpu_is_omap16xx() || cpu_is_omap24xx()) {
+       if (cpu_is_omap16xx() || cpu_is_omap24xx() || cpu_is_omap7xx()) {
                clk_disable(hhc_clk);
                clk_disable(dc_clk);
                clk_put(hhc_clk);
@@ -3115,6 +3126,10 @@ static struct platform_driver udc_driver = {
 
 static int __init udc_init(void)
 {
+       /* Disable DMA for omap7xx -- it doesn't work right. */
+       if (cpu_is_omap7xx())
+               use_dma = 0;
+
        INFO("%s, version: " DRIVER_VERSION
 #ifdef USE_ISO
                " (iso)"