Merge 3.12-rc3 into usb-next
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 30 Sep 2013 01:45:55 +0000 (18:45 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 30 Sep 2013 01:45:55 +0000 (18:45 -0700)
We want the USB fixes in here as well.

Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1  2 
MAINTAINERS
drivers/usb/chipidea/core.c
drivers/usb/chipidea/udc.c
drivers/usb/core/devio.c
drivers/usb/core/hub.c
drivers/usb/dwc3/dwc3-pci.c
drivers/usb/host/ehci-fsl.c
drivers/usb/host/ohci-hcd.c
drivers/usb/host/uhci-pci.c

diff --combined MAINTAINERS
index e0e6ae2b65e86ac9c0c2a8e05de4f15044f0e106,284969fa28967fc1d0b134f06efb055b6a1cbfd0..78ef5dca25437cad96d6ce3ed3687a37be5afa1d
@@@ -1812,7 -1812,8 +1812,8 @@@ S:      Supporte
  F:    drivers/net/ethernet/broadcom/bnx2x/
  
  BROADCOM BCM281XX/BCM11XXX ARM ARCHITECTURE
- M:    Christian Daudt <csd@broadcom.com>
+ M:    Christian Daudt <bcm@fixthebug.org>
+ L:    bcm-kernel-feedback-list@broadcom.com
  T:    git git://git.github.com/broadcom/bcm11351
  S:    Maintained
  F:    arch/arm/mach-bcm/
@@@ -2639,6 -2640,18 +2640,18 @@@ F:    include/linux/device-mapper.
  F:    include/linux/dm-*.h
  F:    include/uapi/linux/dm-*.h
  
+ DIGI NEO AND CLASSIC PCI PRODUCTS
+ M:    Lidza Louina <lidza.louina@gmail.com>
+ L:    driverdev-devel@linuxdriverproject.org
+ S:    Maintained
+ F:    drivers/staging/dgnc/
+ DIGI EPCA PCI PRODUCTS
+ M:    Lidza Louina <lidza.louina@gmail.com>
+ L:    driverdev-devel@linuxdriverproject.org
+ S:    Maintained
+ F:    drivers/staging/dgap/
  DIOLAN U2C-12 I2C DRIVER
  M:    Guenter Roeck <linux@roeck-us.net>
  L:    linux-i2c@vger.kernel.org
@@@ -3654,14 -3667,6 +3667,14 @@@ S:    Maintaine
  F:    include/asm-generic/
  F:    include/uapi/asm-generic/
  
 +GENERIC PHY FRAMEWORK
 +M:    Kishon Vijay Abraham I <kishon@ti.com>
 +L:    linux-kernel@vger.kernel.org
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kishon/linux-phy.git
 +S:    Supported
 +F:    drivers/phy/
 +F:    include/linux/phy/
 +
  GENERIC UIO DRIVER FOR PCI DEVICES
  M:    "Michael S. Tsirkin" <mst@redhat.com>
  L:    kvm@vger.kernel.org
@@@ -6603,7 -6608,7 +6616,7 @@@ S:      Obsolet
  F:    drivers/net/wireless/prism54/
  
  PROMISE SATA TX2/TX4 CONTROLLER LIBATA DRIVER
- M:    Mikael Pettersson <mikpe@it.uu.se>
+ M:    Mikael Pettersson <mikpelinux@gmail.com>
  L:    linux-ide@vger.kernel.org
  S:    Maintained
  F:    drivers/ata/sata_promise.*
@@@ -8732,9 -8737,8 +8745,8 @@@ F:      Documentation/hid/hiddev.tx
  F:    drivers/hid/usbhid/
  
  USB/IP DRIVERS
- M:    Matt Mooney <mfm@muteddisk.com>
  L:    linux-usb@vger.kernel.org
- S:    Maintained
+ S:    Orphan
  F:    drivers/staging/usbip/
  
  USB ISP116X DRIVER
index d847e73bca18143349373125dd3333b486ae8fcf,23763dcec069b2e8d1ba6dd140fc9cf644d2ddec..c47a6b46dea3b05a23f43ae77b98f96bab3a0b74
@@@ -381,15 -381,6 +381,15 @@@ static int ci_get_platdata(struct devic
                return PTR_ERR(platdata->reg_vbus);
        }
  
 +      if (!platdata->phy_mode)
 +              platdata->phy_mode = of_usb_get_phy_mode(dev->of_node);
 +
 +      if (!platdata->dr_mode)
 +              platdata->dr_mode = of_usb_get_dr_mode(dev->of_node);
 +
 +      if (platdata->dr_mode == USB_DR_MODE_UNKNOWN)
 +              platdata->dr_mode = USB_DR_MODE_OTG;
 +
        return 0;
  }
  
@@@ -482,6 -473,7 +482,6 @@@ static int ci_hdrc_probe(struct platfor
        void __iomem    *base;
        int             ret;
        enum usb_dr_mode dr_mode;
 -      struct device_node *of_node = dev->of_node ?: dev->parent->of_node;
  
        if (!dev->platform_data) {
                dev_err(dev, "platform data missing\n");
  
        ci_get_otg_capable(ci);
  
 -      if (!ci->platdata->phy_mode)
 -              ci->platdata->phy_mode = of_usb_get_phy_mode(of_node);
 -
        hw_phymode_configure(ci);
  
 -      if (!ci->platdata->dr_mode)
 -              ci->platdata->dr_mode = of_usb_get_dr_mode(of_node);
 -
 -      if (ci->platdata->dr_mode == USB_DR_MODE_UNKNOWN)
 -              ci->platdata->dr_mode = USB_DR_MODE_OTG;
 -
        dr_mode = ci->platdata->dr_mode;
        /* initialize role(s) before the interrupt is requested */
        if (dr_mode == USB_DR_MODE_OTG || dr_mode == USB_DR_MODE_HOST) {
@@@ -604,6 -605,7 +604,7 @@@ static int ci_hdrc_remove(struct platfo
        dbg_remove_files(ci);
        free_irq(ci->irq, ci);
        ci_role_destroy(ci);
+       kfree(ci->hw_bank.regmap);
  
        return 0;
  }
index 629aaa9fc92ff1b23e8103258a770564b14416db,9333083dd1111c047c7016a44402242e2aa87f7d..b157c95f7a36d0bf8f8e5b2f72ae66c3deadc794
@@@ -686,6 -686,9 +686,6 @@@ static int _gadget_stop_activity(struc
        usb_ep_fifo_flush(&ci->ep0out->ep);
        usb_ep_fifo_flush(&ci->ep0in->ep);
  
 -      if (ci->driver)
 -              ci->driver->disconnect(gadget);
 -
        /* make sure to disable all endpoints */
        gadget_for_each_ep(ep, gadget) {
                usb_ep_disable(ep);
@@@ -714,11 -717,6 +714,11 @@@ __acquires(ci->lock
  {
        int retval;
  
 +      if (ci->gadget.speed != USB_SPEED_UNKNOWN) {
 +              if (ci->driver)
 +                      ci->driver->disconnect(&ci->gadget);
 +      }
 +
        spin_unlock(&ci->lock);
        retval = _gadget_stop_activity(&ci->gadget);
        if (retval)
@@@ -1463,8 -1461,6 +1463,8 @@@ static int ci_udc_vbus_session(struct u
                        hw_device_state(ci, ci->ep0out->qh.dma);
                        dev_dbg(ci->dev, "Connected to host\n");
                } else {
 +                      if (ci->driver)
 +                              ci->driver->disconnect(&ci->gadget);
                        hw_device_state(ci, 0);
                        if (ci->platdata->notify_event)
                                ci->platdata->notify_event(ci,
@@@ -1673,13 -1669,13 +1673,13 @@@ static int ci_udc_stop(struct usb_gadge
                if (ci->platdata->notify_event)
                        ci->platdata->notify_event(ci,
                        CI_HDRC_CONTROLLER_STOPPED_EVENT);
-               ci->driver = NULL;
                spin_unlock_irqrestore(&ci->lock, flags);
                _gadget_stop_activity(&ci->gadget);
                spin_lock_irqsave(&ci->lock, flags);
                pm_runtime_put(&ci->gadget.dev);
        }
  
+       ci->driver = NULL;
        spin_unlock_irqrestore(&ci->lock, flags);
  
        return 0;
diff --combined drivers/usb/core/devio.c
index f4f2300f8e1050a4dc74cf4e80b18dfaeee1b4f1,71dc5d768fa5cef3edc5ac27c84c032d2a0a0dcf..bd429eaf6ea355783c5f5696a1a51d757e1af6d8
@@@ -742,6 -742,22 +742,22 @@@ static int check_ctrlrecip(struct dev_s
                if ((index & ~USB_DIR_IN) == 0)
                        return 0;
                ret = findintfep(ps->dev, index);
+               if (ret < 0) {
+                       /*
+                        * Some not fully compliant Win apps seem to get
+                        * index wrong and have the endpoint number here
+                        * rather than the endpoint address (with the
+                        * correct direction). Win does let this through,
+                        * so we'll not reject it here but leave it to
+                        * the device to not break KVM. But we warn.
+                        */
+                       ret = findintfep(ps->dev, index ^ 0x80);
+                       if (ret >= 0)
+                               dev_info(&ps->dev->dev,
+                                       "%s: process %i (%s) requesting ep %02x but needs %02x\n",
+                                       __func__, task_pid_nr(current),
+                                       current->comm, index, index ^ 0x80);
+               }
                if (ret >= 0)
                        ret = checkintf(ps, ret);
                break;
@@@ -898,8 -914,10 +914,8 @@@ static int proc_control(struct dev_stat
        snoop(&dev->dev, "control urb: bRequestType=%02x "
                "bRequest=%02x wValue=%04x "
                "wIndex=%04x wLength=%04x\n",
 -              ctrl.bRequestType, ctrl.bRequest,
 -              __le16_to_cpup(&ctrl.wValue),
 -              __le16_to_cpup(&ctrl.wIndex),
 -              __le16_to_cpup(&ctrl.wLength));
 +              ctrl.bRequestType, ctrl.bRequest, ctrl.wValue,
 +              ctrl.wIndex, ctrl.wLength);
        if (ctrl.bRequestType & 0x80) {
                if (ctrl.wLength && !access_ok(VERIFY_WRITE, ctrl.data,
                                               ctrl.wLength)) {
diff --combined drivers/usb/core/hub.c
index 6d97cf7be048a698b28b96191a4bf00dda3f6542,e6b682c6c236b8152561496b2e00bba22e75e25c..2159f820b159a3fdfcbcc745bf538098755e606f
@@@ -135,7 -135,7 +135,7 @@@ struct usb_hub *usb_hub_to_struct_hub(s
        return usb_get_intfdata(hdev->actconfig->interface[0]);
  }
  
 -static int usb_device_supports_lpm(struct usb_device *udev)
 +int usb_device_supports_lpm(struct usb_device *udev)
  {
        /* USB 2.1 (and greater) devices indicate LPM support through
         * their USB 2.0 Extended Capabilities BOS descriptor.
                                "Power management will be impacted.\n");
                return 0;
        }
 +
 +      /* udev is root hub */
 +      if (!udev->parent)
 +              return 1;
 +
        if (udev->parent->lpm_capable)
                return 1;
  
@@@ -315,9 -310,9 +315,9 @@@ static void usb_set_lpm_parameters(stru
                return;
  
        udev_u1_del = udev->bos->ss_cap->bU1devExitLat;
 -      udev_u2_del = udev->bos->ss_cap->bU2DevExitLat;
 +      udev_u2_del = le16_to_cpu(udev->bos->ss_cap->bU2DevExitLat);
        hub_u1_del = udev->parent->bos->ss_cap->bU1devExitLat;
 -      hub_u2_del = udev->parent->bos->ss_cap->bU2DevExitLat;
 +      hub_u2_del = le16_to_cpu(udev->parent->bos->ss_cap->bU2DevExitLat);
  
        usb_set_lpm_mel(udev, &udev->u1_params, udev_u1_del,
                        hub, &udev->parent->u1_params, hub_u1_del);
@@@ -2023,8 -2018,8 +2023,8 @@@ static void hub_free_dev(struct usb_dev
   * Something got disconnected. Get rid of it and all of its children.
   *
   * If *pdev is a normal device then the parent hub must already be locked.
 - * If *pdev is a root hub then this routine will acquire the
 - * usb_bus_list_lock on behalf of the caller.
 + * If *pdev is a root hub then the caller must hold the usb_bus_list_lock,
 + * which protects the set of root hubs as well as the list of buses.
   *
   * Only hub drivers (including virtual root hub drivers for host
   * controllers) should ever call this.
@@@ -3431,6 -3426,9 +3431,9 @@@ static int usb_req_set_sel(struct usb_d
        unsigned long long u2_pel;
        int ret;
  
+       if (udev->state != USB_STATE_CONFIGURED)
+               return 0;
        /* Convert SEL and PEL stored in ns to us */
        u1_sel = DIV_ROUND_UP(udev->u1_params.sel, 1000);
        u1_pel = DIV_ROUND_UP(udev->u1_params.pel, 1000);
index f41ce36271646b9f259f2df3d6a8b267b63d132c,2e252aae51ca0bcc5da41b3251c45cec91cced7d..31443aeedcdbf374a6d663e69087ba18f9c37612
@@@ -29,6 -29,7 +29,7 @@@
  #define PCI_VENDOR_ID_SYNOPSYS                0x16c3
  #define PCI_DEVICE_ID_SYNOPSYS_HAPSUSB3       0xabcd
  #define PCI_DEVICE_ID_INTEL_BYT               0x0f37
+ #define PCI_DEVICE_ID_INTEL_MRFLD     0x119e
  
  struct dwc3_pci {
        struct device           *dev;
@@@ -164,6 -165,7 +165,6 @@@ static int dwc3_pci_probe(struct pci_de
        return 0;
  
  err3:
 -      pci_set_drvdata(pci, NULL);
        platform_device_put(dwc3);
  err1:
        pci_disable_device(pci);
@@@ -178,6 -180,7 +179,6 @@@ static void dwc3_pci_remove(struct pci_
        platform_device_unregister(glue->dwc3);
        platform_device_unregister(glue->usb2_phy);
        platform_device_unregister(glue->usb3_phy);
 -      pci_set_drvdata(pci, NULL);
        pci_disable_device(pci);
  }
  
@@@ -187,6 -190,7 +188,7 @@@ static DEFINE_PCI_DEVICE_TABLE(dwc3_pci
                                PCI_DEVICE_ID_SYNOPSYS_HAPSUSB3),
        },
        { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_BYT), },
+       { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_MRFLD), },
        {  }    /* Terminating Entry */
  };
  MODULE_DEVICE_TABLE(pci, dwc3_pci_id_table);
index e41cfdc9bf93623e7c2006cf771cc8602ac2a94b,f2407b2e8a996210aec7f3e7a442119fd6928924..a06d5012201fe6800c0de5c7363bf8bd1cecb58f
@@@ -57,7 -57,7 +57,7 @@@ static int usb_hcd_fsl_probe(const stru
        pr_debug("initializing FSL-SOC USB Controller\n");
  
        /* Need platform data for setup */
 -      pdata = (struct fsl_usb2_platform_data *)dev_get_platdata(&pdev->dev);
 +      pdata = dev_get_platdata(&pdev->dev);
        if (!pdata) {
                dev_err(&pdev->dev,
                        "No platform data for %s.\n", dev_name(&pdev->dev));
        }
  
        /* Enable USB controller, 83xx or 8536 */
-       if (pdata->have_sysif_regs)
+       if (pdata->have_sysif_regs && pdata->controller_ver < FSL_USB_VER_1_6)
                setbits32(hcd->regs + FSL_SOC_USB_CTRL, 0x4);
  
        /* Don't need to set host mode here. It will be done by tdi_reset() */
@@@ -232,15 -232,9 +232,9 @@@ static int ehci_fsl_setup_phy(struct us
        case FSL_USB2_PHY_ULPI:
                if (pdata->have_sysif_regs && pdata->controller_ver) {
                        /* controller version 1.6 or above */
+                       clrbits32(non_ehci + FSL_SOC_USB_CTRL, UTMI_PHY_EN);
                        setbits32(non_ehci + FSL_SOC_USB_CTRL,
-                                       ULPI_PHY_CLK_SEL);
-                       /*
-                        * Due to controller issue of PHY_CLK_VALID in ULPI
-                        * mode, we set USB_CTRL_USB_EN before checking
-                        * PHY_CLK_VALID, otherwise PHY_CLK_VALID doesn't work.
-                        */
-                       clrsetbits_be32(non_ehci + FSL_SOC_USB_CTRL,
-                                       UTMI_PHY_EN, USB_CTRL_USB_EN);
+                               ULPI_PHY_CLK_SEL | USB_CTRL_USB_EN);
                }
                portsc |= PORT_PTS_ULPI;
                break;
        if (pdata->have_sysif_regs && pdata->controller_ver &&
            (phy_mode == FSL_USB2_PHY_ULPI)) {
                /* check PHY_CLK_VALID to get phy clk valid */
-               if (!spin_event_timeout(in_be32(non_ehci + FSL_SOC_USB_CTRL) &
-                               PHY_CLK_VALID, FSL_USB_PHY_CLK_TIMEOUT, 0)) {
+               if (!(spin_event_timeout(in_be32(non_ehci + FSL_SOC_USB_CTRL) &
+                               PHY_CLK_VALID, FSL_USB_PHY_CLK_TIMEOUT, 0) ||
+                               in_be32(non_ehci + FSL_SOC_USB_PRICTRL))) {
                        printk(KERN_WARNING "fsl-ehci: USB PHY clock invalid\n");
                        return -EINVAL;
                }
@@@ -669,7 -664,7 +664,7 @@@ static const struct hc_driver ehci_fsl_
         * generic hardware linkage
         */
        .irq = ehci_irq,
 -      .flags = HCD_USB2 | HCD_MEMORY,
 +      .flags = HCD_USB2 | HCD_MEMORY | HCD_BH,
  
        /*
         * basic lifecycle operations
index c6fff6e68213d5e1999b42a4e584e40b49f41857,604cad1bcf9cd984666aaf0b2b797b48ee6e3382..21d937a590e8dbb5ac5824daf68e6e1580abfa55
@@@ -216,31 -216,26 +216,26 @@@ static int ohci_urb_enqueue 
                        frame &= ~(ed->interval - 1);
                        frame |= ed->branch;
                        urb->start_frame = frame;
+                       ed->last_iso = frame + ed->interval * (size - 1);
                }
        } else if (ed->type == PIPE_ISOCHRONOUS) {
                u16     next = ohci_frame_no(ohci) + 1;
                u16     frame = ed->last_iso + ed->interval;
+               u16     length = ed->interval * (size - 1);
  
                /* Behind the scheduling threshold? */
                if (unlikely(tick_before(frame, next))) {
  
-                       /* USB_ISO_ASAP: Round up to the first available slot */
+                       /* URB_ISO_ASAP: Round up to the first available slot */
                        if (urb->transfer_flags & URB_ISO_ASAP) {
                                frame += (next - frame + ed->interval - 1) &
                                                -ed->interval;
  
                        /*
-                        * Not ASAP: Use the next slot in the stream.  If
-                        * the entire URB falls before the threshold, fail.
+                        * Not ASAP: Use the next slot in the stream,
+                        * no matter what.
                         */
                        } else {
-                               if (tick_before(frame + ed->interval *
-                                       (urb->number_of_packets - 1), next)) {
-                                       retval = -EXDEV;
-                                       usb_hcd_unlink_urb_from_ep(hcd, urb);
-                                       goto fail;
-                               }
                                /*
                                 * Some OHCI hardware doesn't handle late TDs
                                 * correctly.  After retiring them it proceeds
                                urb_priv->td_cnt = DIV_ROUND_UP(
                                                (u16) (next - frame),
                                                ed->interval);
+                               if (urb_priv->td_cnt >= urb_priv->length) {
+                                       ++urb_priv->td_cnt;     /* Mark it */
+                                       ohci_dbg(ohci, "iso underrun %p (%u+%u < %u)\n",
+                                                       urb, frame, length,
+                                                       next);
+                               }
                        }
                }
                urb->start_frame = frame;
+               ed->last_iso = frame + length;
        }
  
        /* fill the TDs and link them to the ed; and
@@@ -1177,6 -1179,46 +1179,6 @@@ MODULE_LICENSE ("GPL")
  #define SA1111_DRIVER         ohci_hcd_sa1111_driver
  #endif
  
 -#if defined(CONFIG_ARCH_S3C24XX) || defined(CONFIG_ARCH_S3C64XX)
 -#include "ohci-s3c2410.c"
 -#define S3C2410_PLATFORM_DRIVER       ohci_hcd_s3c2410_driver
 -#endif
 -
 -#ifdef CONFIG_USB_OHCI_EXYNOS
 -#include "ohci-exynos.c"
 -#define EXYNOS_PLATFORM_DRIVER        exynos_ohci_driver
 -#endif
 -
 -#ifdef CONFIG_USB_OHCI_HCD_OMAP1
 -#include "ohci-omap.c"
 -#define OMAP1_PLATFORM_DRIVER ohci_hcd_omap_driver
 -#endif
 -
 -#ifdef CONFIG_USB_OHCI_HCD_OMAP3
 -#include "ohci-omap3.c"
 -#define OMAP3_PLATFORM_DRIVER ohci_hcd_omap3_driver
 -#endif
 -
 -#if defined(CONFIG_PXA27x) || defined(CONFIG_PXA3xx)
 -#include "ohci-pxa27x.c"
 -#define PLATFORM_DRIVER               ohci_hcd_pxa27x_driver
 -#endif
 -
 -#ifdef CONFIG_ARCH_EP93XX
 -#include "ohci-ep93xx.c"
 -#define EP93XX_PLATFORM_DRIVER        ohci_hcd_ep93xx_driver
 -#endif
 -
 -#ifdef CONFIG_ARCH_AT91
 -#include "ohci-at91.c"
 -#define AT91_PLATFORM_DRIVER  ohci_hcd_at91_driver
 -#endif
 -
 -#ifdef CONFIG_ARCH_LPC32XX
 -#include "ohci-nxp.c"
 -#define NXP_PLATFORM_DRIVER   usb_hcd_nxp_driver
 -#endif
 -
  #ifdef CONFIG_ARCH_DAVINCI_DA8XX
  #include "ohci-da8xx.c"
  #define DAVINCI_PLATFORM_DRIVER       ohci_hcd_da8xx_driver
  #define OF_PLATFORM_DRIVER    ohci_hcd_ppc_of_driver
  #endif
  
 -#ifdef CONFIG_PLAT_SPEAR
 -#include "ohci-spear.c"
 -#define SPEAR_PLATFORM_DRIVER spear_ohci_hcd_driver
 -#endif
 -
  #ifdef CONFIG_PPC_PS3
  #include "ohci-ps3.c"
  #define PS3_SYSTEM_BUS_DRIVER ps3_ohci_driver
@@@ -1249,6 -1296,18 +1251,6 @@@ static int __init ohci_hcd_mod_init(voi
                goto error_platform;
  #endif
  
 -#ifdef OMAP1_PLATFORM_DRIVER
 -      retval = platform_driver_register(&OMAP1_PLATFORM_DRIVER);
 -      if (retval < 0)
 -              goto error_omap1_platform;
 -#endif
 -
 -#ifdef OMAP3_PLATFORM_DRIVER
 -      retval = platform_driver_register(&OMAP3_PLATFORM_DRIVER);
 -      if (retval < 0)
 -              goto error_omap3_platform;
 -#endif
 -
  #ifdef OF_PLATFORM_DRIVER
        retval = platform_driver_register(&OF_PLATFORM_DRIVER);
        if (retval < 0)
                goto error_tmio;
  #endif
  
 -#ifdef S3C2410_PLATFORM_DRIVER
 -      retval = platform_driver_register(&S3C2410_PLATFORM_DRIVER);
 -      if (retval < 0)
 -              goto error_s3c2410;
 -#endif
 -
 -#ifdef EXYNOS_PLATFORM_DRIVER
 -      retval = platform_driver_register(&EXYNOS_PLATFORM_DRIVER);
 -      if (retval < 0)
 -              goto error_exynos;
 -#endif
 -
 -#ifdef EP93XX_PLATFORM_DRIVER
 -      retval = platform_driver_register(&EP93XX_PLATFORM_DRIVER);
 -      if (retval < 0)
 -              goto error_ep93xx;
 -#endif
 -
 -#ifdef AT91_PLATFORM_DRIVER
 -      retval = platform_driver_register(&AT91_PLATFORM_DRIVER);
 -      if (retval < 0)
 -              goto error_at91;
 -#endif
 -
 -#ifdef NXP_PLATFORM_DRIVER
 -      retval = platform_driver_register(&NXP_PLATFORM_DRIVER);
 -      if (retval < 0)
 -              goto error_nxp;
 -#endif
 -
  #ifdef DAVINCI_PLATFORM_DRIVER
        retval = platform_driver_register(&DAVINCI_PLATFORM_DRIVER);
        if (retval < 0)
                goto error_davinci;
  #endif
  
 -#ifdef SPEAR_PLATFORM_DRIVER
 -      retval = platform_driver_register(&SPEAR_PLATFORM_DRIVER);
 -      if (retval < 0)
 -              goto error_spear;
 -#endif
 -
        return retval;
  
        /* Error path */
 -#ifdef SPEAR_PLATFORM_DRIVER
 -      platform_driver_unregister(&SPEAR_PLATFORM_DRIVER);
 - error_spear:
 -#endif
  #ifdef DAVINCI_PLATFORM_DRIVER
        platform_driver_unregister(&DAVINCI_PLATFORM_DRIVER);
   error_davinci:
  #endif
 -#ifdef NXP_PLATFORM_DRIVER
 -      platform_driver_unregister(&NXP_PLATFORM_DRIVER);
 - error_nxp:
 -#endif
 -#ifdef AT91_PLATFORM_DRIVER
 -      platform_driver_unregister(&AT91_PLATFORM_DRIVER);
 - error_at91:
 -#endif
 -#ifdef EP93XX_PLATFORM_DRIVER
 -      platform_driver_unregister(&EP93XX_PLATFORM_DRIVER);
 - error_ep93xx:
 -#endif
 -#ifdef EXYNOS_PLATFORM_DRIVER
 -      platform_driver_unregister(&EXYNOS_PLATFORM_DRIVER);
 - error_exynos:
 -#endif
 -#ifdef S3C2410_PLATFORM_DRIVER
 -      platform_driver_unregister(&S3C2410_PLATFORM_DRIVER);
 - error_s3c2410:
 -#endif
  #ifdef TMIO_OHCI_DRIVER
        platform_driver_unregister(&TMIO_OHCI_DRIVER);
   error_tmio:
        platform_driver_unregister(&OF_PLATFORM_DRIVER);
   error_of_platform:
  #endif
 -#ifdef OMAP3_PLATFORM_DRIVER
 -      platform_driver_unregister(&OMAP3_PLATFORM_DRIVER);
 - error_omap3_platform:
 -#endif
 -#ifdef OMAP1_PLATFORM_DRIVER
 -      platform_driver_unregister(&OMAP1_PLATFORM_DRIVER);
 - error_omap1_platform:
 -#endif
  #ifdef PLATFORM_DRIVER
        platform_driver_unregister(&PLATFORM_DRIVER);
   error_platform:
@@@ -1323,9 -1450,27 +1325,9 @@@ module_init(ohci_hcd_mod_init)
  
  static void __exit ohci_hcd_mod_exit(void)
  {
 -#ifdef SPEAR_PLATFORM_DRIVER
 -      platform_driver_unregister(&SPEAR_PLATFORM_DRIVER);
 -#endif
  #ifdef DAVINCI_PLATFORM_DRIVER
        platform_driver_unregister(&DAVINCI_PLATFORM_DRIVER);
  #endif
 -#ifdef NXP_PLATFORM_DRIVER
 -      platform_driver_unregister(&NXP_PLATFORM_DRIVER);
 -#endif
 -#ifdef AT91_PLATFORM_DRIVER
 -      platform_driver_unregister(&AT91_PLATFORM_DRIVER);
 -#endif
 -#ifdef EP93XX_PLATFORM_DRIVER
 -      platform_driver_unregister(&EP93XX_PLATFORM_DRIVER);
 -#endif
 -#ifdef EXYNOS_PLATFORM_DRIVER
 -      platform_driver_unregister(&EXYNOS_PLATFORM_DRIVER);
 -#endif
 -#ifdef S3C2410_PLATFORM_DRIVER
 -      platform_driver_unregister(&S3C2410_PLATFORM_DRIVER);
 -#endif
  #ifdef TMIO_OHCI_DRIVER
        platform_driver_unregister(&TMIO_OHCI_DRIVER);
  #endif
  #ifdef OF_PLATFORM_DRIVER
        platform_driver_unregister(&OF_PLATFORM_DRIVER);
  #endif
 -#ifdef OMAP3_PLATFORM_DRIVER
 -      platform_driver_unregister(&OMAP3_PLATFORM_DRIVER);
 -#endif
 -#ifdef OMAP1_PLATFORM_DRIVER
 -      platform_driver_unregister(&OMAP1_PLATFORM_DRIVER);
 -#endif
  #ifdef PLATFORM_DRIVER
        platform_driver_unregister(&PLATFORM_DRIVER);
  #endif
index f7bbf43be039f98e9683eb37aba38740a67c5420,0f228c46eedaab97c9351f784b8604d6144bb517..d89c78dc70c0c916503d7db0c9e02f865377be62
@@@ -293,11 -293,9 +293,11 @@@ static struct pci_driver uhci_pci_drive
        .remove =       usb_hcd_pci_remove,
        .shutdown =     uhci_shutdown,
  
- #ifdef CONFIG_PM_SLEEP
+ #ifdef CONFIG_PM
        .driver =       {
                .pm =   &usb_hcd_pci_pm_ops
        },
  #endif
  };
 +
 +MODULE_SOFTDEP("pre: ehci_pci");
This page took 0.043296 seconds and 5 git commands to generate.