DWC otg usb: compilation fixes and trivial bugfix in slave mode
authorJohn Crispin <john@openwrt.org>
Tue, 24 Jul 2012 20:38:55 +0000 (20:38 +0000)
committerJohn Crispin <john@openwrt.org>
Tue, 24 Jul 2012 20:38:55 +0000 (20:38 +0000)
Signed-of-by: Nikolai Zhubr <n-a-zhubr@yandex.ru>
SVN-Revision: 32823

target/linux/ramips/files/drivers/usb/dwc_otg/dwc_otg_driver.c
target/linux/ramips/files/drivers/usb/dwc_otg/dwc_otg_hcd.c
target/linux/ramips/files/drivers/usb/dwc_otg/dwc_otg_hcd.h
target/linux/ramips/files/drivers/usb/dwc_otg/dwc_otg_pcd.c
target/linux/ramips/files/drivers/usb/dwc_otg/dwc_otg_pcd.h

index fe70ceaff1cb97f1acaea59fe3a11770bcfed304..87d3fbbbc2dc34bfb719e3407e93701b0c5b0137 100644 (file)
@@ -634,7 +634,7 @@ static int dwc_otg_driver_remove(struct platform_device *pdev)
 
 #ifndef DWC_HOST_ONLY
        if (otg_dev->pcd) {
-               dwc_otg_pcd_remove(pdev);
+               dwc_otg_pcd_remove(&pdev->dev);
        }
 #endif
        if (otg_dev->core_if) {
@@ -823,7 +823,7 @@ static int dwc_otg_driver_probe(struct platform_device *pdev)
        /*
         * Initialize the PCD
         */
-       retval = dwc_otg_pcd_init(pdev);
+       retval = dwc_otg_pcd_init(&pdev->dev);
        if (retval != 0) {
                DWC_ERROR("dwc_otg_pcd_init failed\n");
                otg_dev->pcd = NULL;
index 5d249aef2816150b58b3bf076d6aeb55dc1f9111..fe643b6460324217fa0ea566ff90ba75540f0203 100644 (file)
@@ -1781,8 +1781,10 @@ int dwc_otg_hcd_hub_control(struct usb_hcd *hcd,
                desc->wHubCharacteristics = 0x08;
                desc->bPwrOn2PwrGood = 1;
                desc->bHubContrCurrent = 0;
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39)
                desc->u.hs.DeviceRemovable[0] = 0;
                desc->u.hs.DeviceRemovable[1] = 0xff;
+#endif
                break;
        case GetHubStatus:
                DWC_DEBUGPL(DBG_HCD, "DWC OTG HCD HUB CONTROL - "
index f859aece0bb2ac8cda3a7bd714db1aefc59de6f4..ee41dc96f95b2a95bcf97b7ebaa311bece7819c5 100644 (file)
 
 #include <linux/list.h>
 #include <linux/usb.h>
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)
 #include <linux/usb/hcd.h>
+#else
+#include <../drivers/usb/core/hcd.h>
+#endif
 
 struct dwc_otg_device;
 
index 2556b2cc9b7efe7d9311d388895fda9ba869bdef..030a3f2856dfed12a613f538549ac46954765d2b 100644 (file)
 # include <linux/usb_ch9.h>
 #endif
 
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24)
+#include <linux/usb/gadget.h>
+#else
 #include <linux/usb_gadget.h>
+#endif
 
 #include "dwc_otg_driver.h"
 #include "dwc_otg_pcd.h"
@@ -412,6 +416,7 @@ static void dwc_otg_pcd_free_request(struct usb_ep *ep,
        kfree(request);
 }
 
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,23)
 /**
  * This function allocates an I/O buffer to be used for a transfer
  * to/from the specified endpoint.
@@ -489,6 +494,7 @@ static void dwc_otg_pcd_free_buffer(struct usb_ep *usb_ep, void *buf,
                kfree(buf);
        }
 }
+#endif
 
 
 /**
@@ -571,8 +577,10 @@ static int dwc_otg_pcd_ep_queue(struct usb_ep *usb_ep,
 
                if(ep->dwc_ep.is_in)
                {
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24)) || defined(CONFIG_MIPS)
                        if(usb_req->length)
                                dma_cache_wback_inv((unsigned long)usb_req->buf, usb_req->length + 2);
+#endif
                }
        }
 
@@ -1518,8 +1526,10 @@ static struct usb_isoc_ep_ops dwc_otg_pcd_ep_ops =
                .alloc_request  = dwc_otg_pcd_alloc_request,
                .free_request   = dwc_otg_pcd_free_request,
 
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,23)
                .alloc_buffer   = dwc_otg_pcd_alloc_buffer,
                .free_buffer    = dwc_otg_pcd_free_buffer,
+#endif
 
                .queue          = dwc_otg_pcd_ep_queue,
                .dequeue        = dwc_otg_pcd_ep_dequeue,
@@ -1545,8 +1555,10 @@ static struct usb_ep_ops dwc_otg_pcd_ep_ops =
        .alloc_request  = dwc_otg_pcd_alloc_request,
        .free_request   = dwc_otg_pcd_free_request,
 
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,23)
        .alloc_buffer   = dwc_otg_pcd_alloc_buffer,
        .free_buffer    = dwc_otg_pcd_free_buffer,
+#endif
 
        .queue          = dwc_otg_pcd_ep_queue,
        .dequeue        = dwc_otg_pcd_ep_dequeue,
@@ -2201,7 +2213,11 @@ int dwc_otg_pcd_init(struct device *dev)
        otg_dev->pcd = pcd;
        s_pcd = pcd;
        pcd->gadget.name = pcd_name;
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30)
        strcpy(pcd->gadget.dev.bus_id, "gadget");
+#else
+       dev_set_name(&pcd->gadget.dev, "%s", "gadget");
+#endif
 
        pcd->otg_dev = dev_get_drvdata(dev);
 
@@ -2276,7 +2292,7 @@ int dwc_otg_pcd_init(struct device *dev)
         */
        DWC_DEBUGPL(DBG_ANY, "registering handler for irq%d\n", otg_dev->irq);
        retval = request_irq(otg_dev->irq, dwc_otg_pcd_irq,
-                               SA_SHIRQ, pcd->gadget.name, pcd);
+                               IRQF_SHARED, pcd->gadget.name, pcd);
        if (retval != 0) {
                DWC_ERROR("request of irq%d failed\n", otg_dev->irq);
                device_unregister(&pcd->gadget.dev);
@@ -2418,14 +2434,24 @@ void dwc_otg_pcd_remove(struct device *dev)
  *
  * @param driver The driver being registered
  */
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)
+int usb_gadget_probe_driver(struct usb_gadget_driver *driver, int (*bind)(struct usb_gadget *))
+#else
 int usb_gadget_register_driver(struct usb_gadget_driver *driver)
+#endif
 {
        int retval;
+       int (*d_bind)(struct usb_gadget *);
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)
+       d_bind = bind;
+#else
+       d_bind = driver->bind;
+#endif
 
        DWC_DEBUGPL(DBG_PCD, "registering gadget driver '%s'\n", driver->driver.name);
 
        if (!driver || driver->speed == USB_SPEED_UNKNOWN ||
-               !driver->bind ||
+               !d_bind ||
                !driver->unbind ||
                !driver->disconnect ||
                !driver->setup) {
@@ -2446,7 +2472,7 @@ int usb_gadget_register_driver(struct usb_gadget_driver *driver)
        s_pcd->gadget.dev.driver = &driver->driver;
 
        DWC_DEBUGPL(DBG_PCD, "bind to driver %s\n", driver->driver.name);
-       retval = driver->bind(&s_pcd->gadget);
+       retval = d_bind(&s_pcd->gadget);
        if (retval) {
                DWC_ERROR("bind to driver %s --> error %d\n",
                                        driver->driver.name, retval);
@@ -2459,7 +2485,11 @@ int usb_gadget_register_driver(struct usb_gadget_driver *driver)
        return 0;
 }
 
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)
+EXPORT_SYMBOL(usb_gadget_probe_driver);
+#else
 EXPORT_SYMBOL(usb_gadget_register_driver);
+#endif
 
 /**
  * This function unregisters a gadget driver
index e39296ff0e896a4786abbfd41d1fa5738284d355..48de95784061f923e17806f10034cc513751fb24 100644 (file)
 # include <linux/usb_ch9.h>
 #endif
 
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24)
+#include <linux/usb/gadget.h>
+#else
 #include <linux/usb_gadget.h>
+#endif
 #include <linux/interrupt.h>
 #include <linux/dma-mapping.h>