aboutsummaryrefslogtreecommitdiffstats
path: root/usb
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <gregkh@suse.de>2005-11-28 10:10:41 -0800
committerGreg Kroah-Hartman <gregkh@suse.de>2005-11-28 10:10:41 -0800
commited087c4bc638c8606bc06a35154016e3fa07752f (patch)
treefdcb135f9694620b980f8035f28d549dc76b5928 /usb
parentd97856649e5cfcbb402b85bc09b39f3972236407 (diff)
downloadpatches-ed087c4bc638c8606bc06a35154016e3fa07752f.tar.gz
removed patches added to 2.6.15-rc2-git4
Diffstat (limited to 'usb')
-rw-r--r--usb/usb-ehci-updates-mostly-whitespace-cleanups.patch460
-rw-r--r--usb/usb-ehci-updates-split-init-reinit-logic-for-resume.patch513
-rw-r--r--usb/usb-ehci-updates.patch200
-rw-r--r--usb/usb-fix-usb-key-generates-ioctl_internal_command-errors-issue.patch55
-rw-r--r--usb/usb-ftdi_sio-new-ids-for-kobil-devices.patch49
-rw-r--r--usb/usb-kernel-doc-for-linux-usb.h.patch27
-rw-r--r--usb/usb-ohci-move-ppc-asic-tweaks-nearer-pci.patch143
-rw-r--r--usb/usb-serial-remove-redundant-include.patch26
-rw-r--r--usb/usb-sn9c10x-driver-bad-page-state-fix.patch46
9 files changed, 0 insertions, 1519 deletions
diff --git a/usb/usb-ehci-updates-mostly-whitespace-cleanups.patch b/usb/usb-ehci-updates-mostly-whitespace-cleanups.patch
deleted file mode 100644
index 4775c3d70c6bec..00000000000000
--- a/usb/usb-ehci-updates-mostly-whitespace-cleanups.patch
+++ /dev/null
@@ -1,460 +0,0 @@
-From david-b@pacbell.net Mon Nov 7 15:19:56 2005
-Message-ID: <20051107231554.77237.qmail@web80724.mail.yahoo.com>
-Date: Mon, 7 Nov 2005 15:15:54 -0800 (PST)
-From: David Brownell <david-b@pacbell.net>
-Subject: USB: EHCI updates (2/4) mostly whitespace cleanups
-To: greg@kroah.com
-
-This cleans up the recent updates to EHCI PCI support:
-
- - Gets rid of checks for "is this a PCI device", they're no
- longer needed since this is now all PCI-only code.
-
- - Reduce log spamming: MWI is only interesting in the atypical
- case that it can actually be used.
-
- - Whitespace cleanup, as appropriate for a new file with no
- other pending patches.
-
-So other than that minor logging change, no functional updates.
-
-Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
-
----
- drivers/usb/host/ehci-pci.c | 268 +++++++++++++++++++++-----------------------
- 1 file changed, 129 insertions(+), 139 deletions(-)
-
---- gregkh-2.6.orig/drivers/usb/host/ehci-pci.c
-+++ gregkh-2.6/drivers/usb/host/ehci-pci.c
-@@ -27,7 +27,7 @@
- /* EHCI 0.96 (and later) section 5.1 says how to kick BIOS/SMM/...
- * off the controller (maybe it can boot from highspeed USB disks).
- */
--static int bios_handoff (struct ehci_hcd *ehci, int where, u32 cap)
-+static int bios_handoff(struct ehci_hcd *ehci, int where, u32 cap)
- {
- struct pci_dev *pdev = to_pci_dev(ehci_to_hcd(ehci)->self.controller);
-
-@@ -48,7 +48,7 @@ static int bios_handoff (struct ehci_hcd
- where, cap);
- // some BIOS versions seem buggy...
- // return 1;
-- ehci_warn (ehci, "continuing after BIOS bug...\n");
-+ ehci_warn(ehci, "continuing after BIOS bug...\n");
- /* disable all SMIs, and clear "BIOS owns" flag */
- pci_write_config_dword(pdev, where + 4, 0);
- pci_write_config_byte(pdev, where + 2, 0);
-@@ -59,95 +59,93 @@ static int bios_handoff (struct ehci_hcd
- }
-
- /* called by khubd or root hub init threads */
--static int ehci_pci_reset (struct usb_hcd *hcd)
-+static int ehci_pci_reset(struct usb_hcd *hcd)
- {
-- struct ehci_hcd *ehci = hcd_to_ehci (hcd);
-+ struct ehci_hcd *ehci = hcd_to_ehci(hcd);
-+ struct pci_dev *pdev = to_pci_dev(hcd->self.controller);
- u32 temp;
- unsigned count = 256/4;
-
- spin_lock_init (&ehci->lock);
-
- ehci->caps = hcd->regs;
-- ehci->regs = hcd->regs + HC_LENGTH (readl (&ehci->caps->hc_capbase));
-- dbg_hcs_params (ehci, "reset");
-- dbg_hcc_params (ehci, "reset");
-+ ehci->regs = hcd->regs + HC_LENGTH(readl(&ehci->caps->hc_capbase));
-+ dbg_hcs_params(ehci, "reset");
-+ dbg_hcc_params(ehci, "reset");
-
- /* cache this readonly data; minimize chip reads */
-- ehci->hcs_params = readl (&ehci->caps->hcs_params);
-+ ehci->hcs_params = readl(&ehci->caps->hcs_params);
-
-- if (hcd->self.controller->bus == &pci_bus_type) {
-- struct pci_dev *pdev = to_pci_dev(hcd->self.controller);
-+ /* NOTE: only the parts below this line are PCI-specific */
-
-- switch (pdev->vendor) {
-- case PCI_VENDOR_ID_TDI:
-- if (pdev->device == PCI_DEVICE_ID_TDI_EHCI) {
-- ehci->is_tdi_rh_tt = 1;
-- tdi_reset (ehci);
-- }
-- break;
-- case PCI_VENDOR_ID_AMD:
-- /* AMD8111 EHCI doesn't work, according to AMD errata */
-- if (pdev->device == 0x7463) {
-- ehci_info (ehci, "ignoring AMD8111 (errata)\n");
-- return -EIO;
-- }
-- break;
-- case PCI_VENDOR_ID_NVIDIA:
-- /* NVidia reports that certain chips don't handle
-- * QH, ITD, or SITD addresses above 2GB. (But TD,
-- * data buffer, and periodic schedule are normal.)
-- */
-- switch (pdev->device) {
-- case 0x003c: /* MCP04 */
-- case 0x005b: /* CK804 */
-- case 0x00d8: /* CK8 */
-- case 0x00e8: /* CK8S */
-- if (pci_set_consistent_dma_mask(pdev,
-- DMA_31BIT_MASK) < 0)
-- ehci_warn (ehci, "can't enable NVidia "
-- "workaround for >2GB RAM\n");
-- break;
-- }
-+ switch (pdev->vendor) {
-+ case PCI_VENDOR_ID_TDI:
-+ if (pdev->device == PCI_DEVICE_ID_TDI_EHCI) {
-+ ehci->is_tdi_rh_tt = 1;
-+ tdi_reset(ehci);
-+ }
-+ break;
-+ case PCI_VENDOR_ID_AMD:
-+ /* AMD8111 EHCI doesn't work, according to AMD errata */
-+ if (pdev->device == 0x7463) {
-+ ehci_info(ehci, "ignoring AMD8111 (errata)\n");
-+ return -EIO;
-+ }
-+ break;
-+ case PCI_VENDOR_ID_NVIDIA:
-+ /* NVidia reports that certain chips don't handle
-+ * QH, ITD, or SITD addresses above 2GB. (But TD,
-+ * data buffer, and periodic schedule are normal.)
-+ */
-+ switch (pdev->device) {
-+ case 0x003c: /* MCP04 */
-+ case 0x005b: /* CK804 */
-+ case 0x00d8: /* CK8 */
-+ case 0x00e8: /* CK8S */
-+ if (pci_set_consistent_dma_mask(pdev,
-+ DMA_31BIT_MASK) < 0)
-+ ehci_warn(ehci, "can't enable NVidia "
-+ "workaround for >2GB RAM\n");
- break;
- }
-+ break;
-+ }
-
-- /* optional debug port, normally in the first BAR */
-- temp = pci_find_capability (pdev, 0x0a);
-- if (temp) {
-- pci_read_config_dword(pdev, temp, &temp);
-- temp >>= 16;
-- if ((temp & (3 << 13)) == (1 << 13)) {
-- temp &= 0x1fff;
-- ehci->debug = hcd->regs + temp;
-- temp = readl (&ehci->debug->control);
-- ehci_info (ehci, "debug port %d%s\n",
-- HCS_DEBUG_PORT(ehci->hcs_params),
-- (temp & DBGP_ENABLED)
-- ? " IN USE"
-- : "");
-- if (!(temp & DBGP_ENABLED))
-- ehci->debug = NULL;
-- }
-+ /* optional debug port, normally in the first BAR */
-+ temp = pci_find_capability(pdev, 0x0a);
-+ if (temp) {
-+ pci_read_config_dword(pdev, temp, &temp);
-+ temp >>= 16;
-+ if ((temp & (3 << 13)) == (1 << 13)) {
-+ temp &= 0x1fff;
-+ ehci->debug = hcd->regs + temp;
-+ temp = readl(&ehci->debug->control);
-+ ehci_info(ehci, "debug port %d%s\n",
-+ HCS_DEBUG_PORT(ehci->hcs_params),
-+ (temp & DBGP_ENABLED)
-+ ? " IN USE"
-+ : "");
-+ if (!(temp & DBGP_ENABLED))
-+ ehci->debug = NULL;
- }
-+ }
-
-- temp = HCC_EXT_CAPS (readl (&ehci->caps->hcc_params));
-- } else
-- temp = 0;
-+ temp = HCC_EXT_CAPS(readl(&ehci->caps->hcc_params));
-
- /* EHCI 0.96 and later may have "extended capabilities" */
- while (temp && count--) {
- u32 cap;
-
-- pci_read_config_dword (to_pci_dev(hcd->self.controller),
-+ pci_read_config_dword(to_pci_dev(hcd->self.controller),
- temp, &cap);
-- ehci_dbg (ehci, "capability %04x at %02x\n", cap, temp);
-+ ehci_dbg(ehci, "capability %04x at %02x\n", cap, temp);
- switch (cap & 0xff) {
- case 1: /* BIOS/SMM/... handoff */
-- if (bios_handoff (ehci, temp, cap) != 0)
-+ if (bios_handoff(ehci, temp, cap) != 0)
- return -EOPNOTSUPP;
- break;
- case 0: /* illegal reserved capability */
-- ehci_warn (ehci, "illegal capability!\n");
-+ ehci_warn(ehci, "illegal capability!\n");
- cap = 0;
- /* FALLTHROUGH */
- default: /* unknown */
-@@ -156,77 +154,69 @@ static int ehci_pci_reset (struct usb_hc
- temp = (cap >> 8) & 0xff;
- }
- if (!count) {
-- ehci_err (ehci, "bogus capabilities ... PCI problems!\n");
-+ ehci_err(ehci, "bogus capabilities ... PCI problems!\n");
- return -EIO;
- }
- if (ehci_is_TDI(ehci))
-- ehci_reset (ehci);
-+ ehci_reset(ehci);
-
-- ehci_port_power (ehci, 0);
-+ ehci_port_power(ehci, 0);
-
- /* at least the Genesys GL880S needs fixup here */
- temp = HCS_N_CC(ehci->hcs_params) * HCS_N_PCC(ehci->hcs_params);
- temp &= 0x0f;
- if (temp && HCS_N_PORTS(ehci->hcs_params) > temp) {
-- ehci_dbg (ehci, "bogus port configuration: "
-+ ehci_dbg(ehci, "bogus port configuration: "
- "cc=%d x pcc=%d < ports=%d\n",
- HCS_N_CC(ehci->hcs_params),
- HCS_N_PCC(ehci->hcs_params),
- HCS_N_PORTS(ehci->hcs_params));
-
-- if (hcd->self.controller->bus == &pci_bus_type) {
-- struct pci_dev *pdev;
--
-- pdev = to_pci_dev(hcd->self.controller);
-- switch (pdev->vendor) {
-- case 0x17a0: /* GENESYS */
-- /* GL880S: should be PORTS=2 */
-- temp |= (ehci->hcs_params & ~0xf);
-- ehci->hcs_params = temp;
-- break;
-- case PCI_VENDOR_ID_NVIDIA:
-- /* NF4: should be PCC=10 */
-- break;
-- }
-+ switch (pdev->vendor) {
-+ case 0x17a0: /* GENESYS */
-+ /* GL880S: should be PORTS=2 */
-+ temp |= (ehci->hcs_params & ~0xf);
-+ ehci->hcs_params = temp;
-+ break;
-+ case PCI_VENDOR_ID_NVIDIA:
-+ /* NF4: should be PCC=10 */
-+ break;
- }
- }
-
- /* force HC to halt state */
-- return ehci_halt (ehci);
-+ return ehci_halt(ehci);
- }
-
--static int ehci_pci_start (struct usb_hcd *hcd)
-+static int ehci_pci_start(struct usb_hcd *hcd)
- {
-- struct ehci_hcd *ehci = hcd_to_ehci (hcd);
-- int result = 0;
--
-- if (hcd->self.controller->bus == &pci_bus_type) {
-- struct pci_dev *pdev;
-- u16 port_wake;
--
-- pdev = to_pci_dev(hcd->self.controller);
--
-- /* Serial Bus Release Number is at PCI 0x60 offset */
-- pci_read_config_byte(pdev, 0x60, &ehci->sbrn);
--
-- /* port wake capability, reported by boot firmware */
-- pci_read_config_word(pdev, 0x62, &port_wake);
-- hcd->can_wakeup = (port_wake & 1) != 0;
--
-- /* help hc dma work well with cachelines */
-- result = pci_set_mwi(pdev);
-- if (result)
-- ehci_dbg(ehci, "unable to enable MWI - not fatal.\n");
-- }
-+ struct ehci_hcd *ehci = hcd_to_ehci(hcd);
-+ int result = 0;
-+ struct pci_dev *pdev;
-+ u16 port_wake;
-+
-+ pdev = to_pci_dev(hcd->self.controller);
-+
-+ /* Serial Bus Release Number is at PCI 0x60 offset */
-+ pci_read_config_byte(pdev, 0x60, &ehci->sbrn);
-+
-+ /* port wake capability, reported by boot firmware */
-+ pci_read_config_word(pdev, 0x62, &port_wake);
-+ hcd->can_wakeup = (port_wake & 1) != 0;
-+
-+ /* PCI Memory-Write-Invalidate cycle support is optional (uncommon) */
-+ result = pci_set_mwi(pdev);
-+ if (!result)
-+ ehci_dbg(ehci, "MWI active\n");
-
-- return ehci_run (hcd);
-+ return ehci_run(hcd);
- }
-
- /* always called by thread; normally rmmod */
-
--static void ehci_pci_stop (struct usb_hcd *hcd)
-+static void ehci_pci_stop(struct usb_hcd *hcd)
- {
-- ehci_stop (hcd);
-+ ehci_stop(hcd);
- }
-
- /*-------------------------------------------------------------------------*/
-@@ -242,12 +232,12 @@ static void ehci_pci_stop (struct usb_hc
- * Also they depend on separate root hub suspend/resume.
- */
-
--static int ehci_pci_suspend (struct usb_hcd *hcd, pm_message_t message)
-+static int ehci_pci_suspend(struct usb_hcd *hcd, pm_message_t message)
- {
-- struct ehci_hcd *ehci = hcd_to_ehci (hcd);
-+ struct ehci_hcd *ehci = hcd_to_ehci(hcd);
-
-- if (time_before (jiffies, ehci->next_statechange))
-- msleep (10);
-+ if (time_before(jiffies, ehci->next_statechange))
-+ msleep(10);
-
- // could save FLADJ in case of Vaux power loss
- // ... we'd only use it to handle clock skew
-@@ -255,30 +245,30 @@ static int ehci_pci_suspend (struct usb_
- return 0;
- }
-
--static int ehci_pci_resume (struct usb_hcd *hcd)
-+static int ehci_pci_resume(struct usb_hcd *hcd)
- {
-- struct ehci_hcd *ehci = hcd_to_ehci (hcd);
-+ struct ehci_hcd *ehci = hcd_to_ehci(hcd);
- unsigned port;
- struct usb_device *root = hcd->self.root_hub;
- int retval = -EINVAL;
-
- // maybe restore FLADJ
-
-- if (time_before (jiffies, ehci->next_statechange))
-- msleep (100);
-+ if (time_before(jiffies, ehci->next_statechange))
-+ msleep(100);
-
- /* If CF is clear, we lost PCI Vaux power and need to restart. */
-- if (readl (&ehci->regs->configured_flag) != cpu_to_le32(FLAG_CF))
-+ if (readl(&ehci->regs->configured_flag) != cpu_to_le32(FLAG_CF))
- goto restart;
-
- /* If any port is suspended (or owned by the companion),
- * we know we can/must resume the HC (and mustn't reset it).
- * We just defer that to the root hub code.
- */
-- for (port = HCS_N_PORTS (ehci->hcs_params); port > 0; ) {
-+ for (port = HCS_N_PORTS(ehci->hcs_params); port > 0; ) {
- u32 status;
- port--;
-- status = readl (&ehci->regs->port_status [port]);
-+ status = readl(&ehci->regs->port_status [port]);
- if (!(status & PORT_POWER))
- continue;
- if (status & (PORT_SUSPEND | PORT_RESUME | PORT_OWNER)) {
-@@ -289,35 +279,35 @@ static int ehci_pci_resume (struct usb_h
-
- restart:
- ehci_dbg(ehci, "lost power, restarting\n");
-- for (port = HCS_N_PORTS (ehci->hcs_params); port > 0; ) {
-+ for (port = HCS_N_PORTS(ehci->hcs_params); port > 0; ) {
- port--;
- if (!root->children [port])
- continue;
-- usb_set_device_state (root->children[port],
-+ usb_set_device_state(root->children[port],
- USB_STATE_NOTATTACHED);
- }
-
- /* Else reset, to cope with power loss or flush-to-storage
- * style "resume" having let BIOS kick in during reboot.
- */
-- (void) ehci_halt (ehci);
-- (void) ehci_reset (ehci);
-- (void) ehci_pci_reset (hcd);
-+ (void) ehci_halt(ehci);
-+ (void) ehci_reset(ehci);
-+ (void) ehci_pci_reset(hcd);
-
- /* emptying the schedule aborts any urbs */
-- spin_lock_irq (&ehci->lock);
-+ spin_lock_irq(&ehci->lock);
- if (ehci->reclaim)
- ehci->reclaim_ready = 1;
-- ehci_work (ehci, NULL);
-- spin_unlock_irq (&ehci->lock);
-+ ehci_work(ehci, NULL);
-+ spin_unlock_irq(&ehci->lock);
-
- /* restart; khubd will disconnect devices */
-- retval = ehci_run (hcd);
-+ retval = ehci_run(hcd);
-
- /* here we "know" root ports should always stay powered;
- * but some controllers may lose all power.
- */
-- ehci_port_power (ehci, 1);
-+ ehci_port_power(ehci, 1);
-
- return retval;
- }
-@@ -376,7 +366,7 @@ static const struct pci_device_id pci_id
- },
- { /* end: all zeroes */ }
- };
--MODULE_DEVICE_TABLE (pci, pci_ids);
-+MODULE_DEVICE_TABLE(pci, pci_ids);
-
- /* pci driver glue; this is a "new style" PCI driver module */
- static struct pci_driver ehci_pci_driver = {
-@@ -392,22 +382,22 @@ static struct pci_driver ehci_pci_driver
- #endif
- };
-
--static int __init ehci_hcd_pci_init (void)
-+static int __init ehci_hcd_pci_init(void)
- {
- if (usb_disabled())
- return -ENODEV;
-
-- pr_debug ("%s: block sizes: qh %Zd qtd %Zd itd %Zd sitd %Zd\n",
-+ pr_debug("%s: block sizes: qh %Zd qtd %Zd itd %Zd sitd %Zd\n",
- hcd_name,
-- sizeof (struct ehci_qh), sizeof (struct ehci_qtd),
-- sizeof (struct ehci_itd), sizeof (struct ehci_sitd));
-+ sizeof(struct ehci_qh), sizeof(struct ehci_qtd),
-+ sizeof(struct ehci_itd), sizeof(struct ehci_sitd));
-
-- return pci_register_driver (&ehci_pci_driver);
-+ return pci_register_driver(&ehci_pci_driver);
- }
--module_init (ehci_hcd_pci_init);
-+module_init(ehci_hcd_pci_init);
-
--static void __exit ehci_hcd_pci_cleanup (void)
-+static void __exit ehci_hcd_pci_cleanup(void)
- {
-- pci_unregister_driver (&ehci_pci_driver);
-+ pci_unregister_driver(&ehci_pci_driver);
- }
--module_exit (ehci_hcd_pci_cleanup);
-+module_exit(ehci_hcd_pci_cleanup);
diff --git a/usb/usb-ehci-updates-split-init-reinit-logic-for-resume.patch b/usb/usb-ehci-updates-split-init-reinit-logic-for-resume.patch
deleted file mode 100644
index 50b90981a1e3c7..00000000000000
--- a/usb/usb-ehci-updates-split-init-reinit-logic-for-resume.patch
+++ /dev/null
@@ -1,513 +0,0 @@
-From david-b@pacbell.net Mon Nov 7 15:26:18 2005
-Message-ID: <20051107232009.39503.qmail@web80723.mail.yahoo.com>
-Date: Mon, 7 Nov 2005 15:20:08 -0800 (PST)
-From: David Brownell <david-b@pacbell.net>
-Subject: USB: EHCI updates (3/4) split init/reinit logic for resume
-To: greg@kroah.com
-
-
-Moving the PCI-specific parts of the EHCI driver into their own file
-created a few issues ... notably on resume paths which (like swsusp)
-require re-initializing the controller. This patch:
-
- - Splits the EHCI startup code into run-once HCD setup code and
- separate "init the hardware" reinit code. (That reinit code is
- a superset of the "early usb handoff" code.)
-
- - Then it makes the PCI init code run both, and the resume code only
- run the reinit code.
-
- - It also removes needless pci wrappers around EHCI start/stop methods.
-
- - Removes a byteswap issue that would be seen on big-endian hardware.
-
-The HCD glue still doesn't actually provide a good way to do all this
-run-one init stuff in one place though.
-
-Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/host/ehci-hcd.c | 155 +++++++++++++++++++++--------------------
- drivers/usb/host/ehci-pci.c | 166 ++++++++++++++++++++------------------------
- 2 files changed, 161 insertions(+), 160 deletions(-)
-
---- gregkh-2.6.orig/drivers/usb/host/ehci-hcd.c
-+++ gregkh-2.6/drivers/usb/host/ehci-hcd.c
-@@ -411,50 +411,39 @@ static void ehci_stop (struct usb_hcd *h
- dbg_status (ehci, "ehci_stop completed", readl (&ehci->regs->status));
- }
-
--static int ehci_run (struct usb_hcd *hcd)
-+/* one-time init, only for memory state */
-+static int ehci_init(struct usb_hcd *hcd)
- {
-- struct ehci_hcd *ehci = hcd_to_ehci (hcd);
-+ struct ehci_hcd *ehci = hcd_to_ehci(hcd);
- u32 temp;
- int retval;
- u32 hcc_params;
-- int first;
-
-- /* skip some things on restart paths */
-- first = (ehci->watchdog.data == 0);
-- if (first) {
-- init_timer (&ehci->watchdog);
-- ehci->watchdog.function = ehci_watchdog;
-- ehci->watchdog.data = (unsigned long) ehci;
-- }
-+ spin_lock_init(&ehci->lock);
-+
-+ init_timer(&ehci->watchdog);
-+ ehci->watchdog.function = ehci_watchdog;
-+ ehci->watchdog.data = (unsigned long) ehci;
-
- /*
- * hw default: 1K periodic list heads, one per frame.
- * periodic_size can shrink by USBCMD update if hcc_params allows.
- */
- ehci->periodic_size = DEFAULT_I_TDPS;
-- if (first && (retval = ehci_mem_init (ehci, GFP_KERNEL)) < 0)
-+ if ((retval = ehci_mem_init(ehci, GFP_KERNEL)) < 0)
- return retval;
-
- /* controllers may cache some of the periodic schedule ... */
-- hcc_params = readl (&ehci->caps->hcc_params);
-- if (HCC_ISOC_CACHE (hcc_params)) // full frame cache
-+ hcc_params = readl(&ehci->caps->hcc_params);
-+ if (HCC_ISOC_CACHE(hcc_params)) // full frame cache
- ehci->i_thresh = 8;
- else // N microframes cached
-- ehci->i_thresh = 2 + HCC_ISOC_THRES (hcc_params);
-+ ehci->i_thresh = 2 + HCC_ISOC_THRES(hcc_params);
-
- ehci->reclaim = NULL;
- ehci->reclaim_ready = 0;
- ehci->next_uframe = -1;
-
-- /* controller state: unknown --> reset */
--
-- /* EHCI spec section 4.1 */
-- if ((retval = ehci_reset (ehci)) != 0) {
-- ehci_mem_cleanup (ehci);
-- return retval;
-- }
-- writel (ehci->periodic_dma, &ehci->regs->frame_list);
--
- /*
- * dedicate a qh for the async ring head, since we couldn't unlink
- * a 'real' qh without stopping the async schedule [4.8]. use it
-@@ -462,37 +451,13 @@ static int ehci_run (struct usb_hcd *hcd
- * its dummy is used in hw_alt_next of many tds, to prevent the qh
- * from automatically advancing to the next td after short reads.
- */
-- if (first) {
-- ehci->async->qh_next.qh = NULL;
-- ehci->async->hw_next = QH_NEXT (ehci->async->qh_dma);
-- ehci->async->hw_info1 = cpu_to_le32 (QH_HEAD);
-- ehci->async->hw_token = cpu_to_le32 (QTD_STS_HALT);
-- ehci->async->hw_qtd_next = EHCI_LIST_END;
-- ehci->async->qh_state = QH_STATE_LINKED;
-- ehci->async->hw_alt_next = QTD_NEXT (ehci->async->dummy->qtd_dma);
-- }
-- writel ((u32)ehci->async->qh_dma, &ehci->regs->async_next);
--
-- /*
-- * hcc_params controls whether ehci->regs->segment must (!!!)
-- * be used; it constrains QH/ITD/SITD and QTD locations.
-- * pci_pool consistent memory always uses segment zero.
-- * streaming mappings for I/O buffers, like pci_map_single(),
-- * can return segments above 4GB, if the device allows.
-- *
-- * NOTE: the dma mask is visible through dma_supported(), so
-- * drivers can pass this info along ... like NETIF_F_HIGHDMA,
-- * Scsi_Host.highmem_io, and so forth. It's readonly to all
-- * host side drivers though.
-- */
-- if (HCC_64BIT_ADDR (hcc_params)) {
-- writel (0, &ehci->regs->segment);
--#if 0
--// this is deeply broken on almost all architectures
-- if (!dma_set_mask (hcd->self.controller, DMA_64BIT_MASK))
-- ehci_info (ehci, "enabled 64bit DMA\n");
--#endif
-- }
-+ ehci->async->qh_next.qh = NULL;
-+ ehci->async->hw_next = QH_NEXT(ehci->async->qh_dma);
-+ ehci->async->hw_info1 = cpu_to_le32(QH_HEAD);
-+ ehci->async->hw_token = cpu_to_le32(QTD_STS_HALT);
-+ ehci->async->hw_qtd_next = EHCI_LIST_END;
-+ ehci->async->qh_state = QH_STATE_LINKED;
-+ ehci->async->hw_alt_next = QTD_NEXT(ehci->async->dummy->qtd_dma);
-
- /* clear interrupt enables, set irq latency */
- if (log2_irq_thresh < 0 || log2_irq_thresh > 6)
-@@ -507,13 +472,13 @@ static int ehci_run (struct usb_hcd *hcd
- * make problems: throughput reduction (!), data errors...
- */
- if (park) {
-- park = min (park, (unsigned) 3);
-+ park = min(park, (unsigned) 3);
- temp |= CMD_PARK;
- temp |= park << 8;
- }
-- ehci_info (ehci, "park %d\n", park);
-+ ehci_dbg(ehci, "park %d\n", park);
- }
-- if (HCC_PGM_FRAMELISTLEN (hcc_params)) {
-+ if (HCC_PGM_FRAMELISTLEN(hcc_params)) {
- /* periodic schedule size can be smaller than default */
- temp &= ~(3 << 2);
- temp |= (EHCI_TUNE_FLS << 2);
-@@ -521,16 +486,63 @@ static int ehci_run (struct usb_hcd *hcd
- case 0: ehci->periodic_size = 1024; break;
- case 1: ehci->periodic_size = 512; break;
- case 2: ehci->periodic_size = 256; break;
-- default: BUG ();
-+ default: BUG();
- }
- }
-+ ehci->command = temp;
-+
-+ ehci->reboot_notifier.notifier_call = ehci_reboot;
-+ register_reboot_notifier(&ehci->reboot_notifier);
-+
-+ return 0;
-+}
-+
-+/* start HC running; it's halted, ehci_init() has been run (once) */
-+static int ehci_run (struct usb_hcd *hcd)
-+{
-+ struct ehci_hcd *ehci = hcd_to_ehci (hcd);
-+ int retval;
-+ u32 temp;
-+ u32 hcc_params;
-+
-+ /* EHCI spec section 4.1 */
-+ if ((retval = ehci_reset(ehci)) != 0) {
-+ unregister_reboot_notifier(&ehci->reboot_notifier);
-+ ehci_mem_cleanup(ehci);
-+ return retval;
-+ }
-+ writel(ehci->periodic_dma, &ehci->regs->frame_list);
-+ writel((u32)ehci->async->qh_dma, &ehci->regs->async_next);
-+
-+ /*
-+ * hcc_params controls whether ehci->regs->segment must (!!!)
-+ * be used; it constrains QH/ITD/SITD and QTD locations.
-+ * pci_pool consistent memory always uses segment zero.
-+ * streaming mappings for I/O buffers, like pci_map_single(),
-+ * can return segments above 4GB, if the device allows.
-+ *
-+ * NOTE: the dma mask is visible through dma_supported(), so
-+ * drivers can pass this info along ... like NETIF_F_HIGHDMA,
-+ * Scsi_Host.highmem_io, and so forth. It's readonly to all
-+ * host side drivers though.
-+ */
-+ hcc_params = readl(&ehci->caps->hcc_params);
-+ if (HCC_64BIT_ADDR(hcc_params)) {
-+ writel(0, &ehci->regs->segment);
-+#if 0
-+// this is deeply broken on almost all architectures
-+ if (!dma_set_mask(hcd->self.controller, DMA_64BIT_MASK))
-+ ehci_info(ehci, "enabled 64bit DMA\n");
-+#endif
-+ }
-+
-+
- // Philips, Intel, and maybe others need CMD_RUN before the
- // root hub will detect new devices (why?); NEC doesn't
-- temp |= CMD_RUN;
-- writel (temp, &ehci->regs->command);
-- dbg_cmd (ehci, "init", temp);
--
-- /* set async sleep time = 10 us ... ? */
-+ ehci->command &= ~(CMD_LRESET|CMD_IAAD|CMD_PSE|CMD_ASE|CMD_RESET);
-+ ehci->command |= CMD_RUN;
-+ writel (ehci->command, &ehci->regs->command);
-+ dbg_cmd (ehci, "init", ehci->command);
-
- /*
- * Start, enabling full USB 2.0 functionality ... usb 1.1 devices
-@@ -538,26 +550,23 @@ static int ehci_run (struct usb_hcd *hcd
- * involved with the root hub. (Except where one is integrated,
- * and there's no companion controller unless maybe for USB OTG.)
- */
-- if (first) {
-- ehci->reboot_notifier.notifier_call = ehci_reboot;
-- register_reboot_notifier (&ehci->reboot_notifier);
-- }
--
- hcd->state = HC_STATE_RUNNING;
- writel (FLAG_CF, &ehci->regs->configured_flag);
-- readl (&ehci->regs->command); /* unblock posted write */
-+ readl (&ehci->regs->command); /* unblock posted writes */
-
- temp = HC_VERSION(readl (&ehci->caps->hc_capbase));
- ehci_info (ehci,
-- "USB %x.%x %s, EHCI %x.%02x, driver %s\n",
-+ "USB %x.%x started, EHCI %x.%02x, driver %s\n",
- ((ehci->sbrn & 0xf0)>>4), (ehci->sbrn & 0x0f),
-- first ? "initialized" : "restarted",
- temp >> 8, temp & 0xff, DRIVER_VERSION);
-
- writel (INTR_MASK, &ehci->regs->intr_enable); /* Turn On Interrupts */
-
-- if (first)
-- create_debug_files (ehci);
-+ /* GRR this is run-once init(), being done every time the HC starts.
-+ * So long as they're part of class devices, we can't do it init()
-+ * since the class device isn't created that early.
-+ */
-+ create_debug_files(ehci);
-
- return 0;
- }
---- gregkh-2.6.orig/drivers/usb/host/ehci-pci.c
-+++ gregkh-2.6/drivers/usb/host/ehci-pci.c
-@@ -58,15 +58,76 @@ static int bios_handoff(struct ehci_hcd
- return 0;
- }
-
--/* called by khubd or root hub init threads */
-+/* called after powerup, by probe or system-pm "wakeup" */
-+static int ehci_pci_reinit(struct ehci_hcd *ehci, struct pci_dev *pdev)
-+{
-+ u32 temp;
-+ int retval;
-+ unsigned count = 256/4;
-+
-+ /* optional debug port, normally in the first BAR */
-+ temp = pci_find_capability(pdev, 0x0a);
-+ if (temp) {
-+ pci_read_config_dword(pdev, temp, &temp);
-+ temp >>= 16;
-+ if ((temp & (3 << 13)) == (1 << 13)) {
-+ temp &= 0x1fff;
-+ ehci->debug = ehci_to_hcd(ehci)->regs + temp;
-+ temp = readl(&ehci->debug->control);
-+ ehci_info(ehci, "debug port %d%s\n",
-+ HCS_DEBUG_PORT(ehci->hcs_params),
-+ (temp & DBGP_ENABLED)
-+ ? " IN USE"
-+ : "");
-+ if (!(temp & DBGP_ENABLED))
-+ ehci->debug = NULL;
-+ }
-+ }
-+
-+ temp = HCC_EXT_CAPS(readl(&ehci->caps->hcc_params));
-+
-+ /* EHCI 0.96 and later may have "extended capabilities" */
-+ while (temp && count--) {
-+ u32 cap;
-+
-+ pci_read_config_dword(pdev, temp, &cap);
-+ ehci_dbg(ehci, "capability %04x at %02x\n", cap, temp);
-+ switch (cap & 0xff) {
-+ case 1: /* BIOS/SMM/... handoff */
-+ if (bios_handoff(ehci, temp, cap) != 0)
-+ return -EOPNOTSUPP;
-+ break;
-+ case 0: /* illegal reserved capability */
-+ ehci_dbg(ehci, "illegal capability!\n");
-+ cap = 0;
-+ /* FALLTHROUGH */
-+ default: /* unknown */
-+ break;
-+ }
-+ temp = (cap >> 8) & 0xff;
-+ }
-+ if (!count) {
-+ ehci_err(ehci, "bogus capabilities ... PCI problems!\n");
-+ return -EIO;
-+ }
-+
-+ /* PCI Memory-Write-Invalidate cycle support is optional (uncommon) */
-+ retval = pci_set_mwi(pdev);
-+ if (!retval)
-+ ehci_dbg(ehci, "MWI active\n");
-+
-+ ehci_port_power(ehci, 0);
-+
-+ return 0;
-+}
-+
-+/* called by khubd or root hub (re)init threads; leaves HC in halt state */
- static int ehci_pci_reset(struct usb_hcd *hcd)
- {
- struct ehci_hcd *ehci = hcd_to_ehci(hcd);
- struct pci_dev *pdev = to_pci_dev(hcd->self.controller);
- u32 temp;
-- unsigned count = 256/4;
--
-- spin_lock_init (&ehci->lock);
-+ int retval;
-
- ehci->caps = hcd->regs;
- ehci->regs = hcd->regs + HC_LENGTH(readl(&ehci->caps->hc_capbase));
-@@ -76,6 +137,10 @@ static int ehci_pci_reset(struct usb_hcd
- /* cache this readonly data; minimize chip reads */
- ehci->hcs_params = readl(&ehci->caps->hcs_params);
-
-+ retval = ehci_halt(ehci);
-+ if (retval)
-+ return retval;
-+
- /* NOTE: only the parts below this line are PCI-specific */
-
- switch (pdev->vendor) {
-@@ -111,57 +176,9 @@ static int ehci_pci_reset(struct usb_hcd
- break;
- }
-
-- /* optional debug port, normally in the first BAR */
-- temp = pci_find_capability(pdev, 0x0a);
-- if (temp) {
-- pci_read_config_dword(pdev, temp, &temp);
-- temp >>= 16;
-- if ((temp & (3 << 13)) == (1 << 13)) {
-- temp &= 0x1fff;
-- ehci->debug = hcd->regs + temp;
-- temp = readl(&ehci->debug->control);
-- ehci_info(ehci, "debug port %d%s\n",
-- HCS_DEBUG_PORT(ehci->hcs_params),
-- (temp & DBGP_ENABLED)
-- ? " IN USE"
-- : "");
-- if (!(temp & DBGP_ENABLED))
-- ehci->debug = NULL;
-- }
-- }
--
-- temp = HCC_EXT_CAPS(readl(&ehci->caps->hcc_params));
--
-- /* EHCI 0.96 and later may have "extended capabilities" */
-- while (temp && count--) {
-- u32 cap;
--
-- pci_read_config_dword(to_pci_dev(hcd->self.controller),
-- temp, &cap);
-- ehci_dbg(ehci, "capability %04x at %02x\n", cap, temp);
-- switch (cap & 0xff) {
-- case 1: /* BIOS/SMM/... handoff */
-- if (bios_handoff(ehci, temp, cap) != 0)
-- return -EOPNOTSUPP;
-- break;
-- case 0: /* illegal reserved capability */
-- ehci_warn(ehci, "illegal capability!\n");
-- cap = 0;
-- /* FALLTHROUGH */
-- default: /* unknown */
-- break;
-- }
-- temp = (cap >> 8) & 0xff;
-- }
-- if (!count) {
-- ehci_err(ehci, "bogus capabilities ... PCI problems!\n");
-- return -EIO;
-- }
- if (ehci_is_TDI(ehci))
- ehci_reset(ehci);
-
-- ehci_port_power(ehci, 0);
--
- /* at least the Genesys GL880S needs fixup here */
- temp = HCS_N_CC(ehci->hcs_params) * HCS_N_PCC(ehci->hcs_params);
- temp &= 0x0f;
-@@ -184,39 +201,15 @@ static int ehci_pci_reset(struct usb_hcd
- }
- }
-
-- /* force HC to halt state */
-- return ehci_halt(ehci);
--}
--
--static int ehci_pci_start(struct usb_hcd *hcd)
--{
-- struct ehci_hcd *ehci = hcd_to_ehci(hcd);
-- int result = 0;
-- struct pci_dev *pdev;
-- u16 port_wake;
--
-- pdev = to_pci_dev(hcd->self.controller);
--
- /* Serial Bus Release Number is at PCI 0x60 offset */
- pci_read_config_byte(pdev, 0x60, &ehci->sbrn);
-
-- /* port wake capability, reported by boot firmware */
-- pci_read_config_word(pdev, 0x62, &port_wake);
-- hcd->can_wakeup = (port_wake & 1) != 0;
--
-- /* PCI Memory-Write-Invalidate cycle support is optional (uncommon) */
-- result = pci_set_mwi(pdev);
-- if (!result)
-- ehci_dbg(ehci, "MWI active\n");
--
-- return ehci_run(hcd);
--}
-+ /* REVISIT: per-port wake capability (PCI 0x62) currently unused */
-
--/* always called by thread; normally rmmod */
-+ retval = ehci_pci_reinit(ehci, pdev);
-
--static void ehci_pci_stop(struct usb_hcd *hcd)
--{
-- ehci_stop(hcd);
-+ /* finish init */
-+ return ehci_init(hcd);
- }
-
- /*-------------------------------------------------------------------------*/
-@@ -250,6 +243,7 @@ static int ehci_pci_resume(struct usb_hc
- struct ehci_hcd *ehci = hcd_to_ehci(hcd);
- unsigned port;
- struct usb_device *root = hcd->self.root_hub;
-+ struct pci_dev *pdev = to_pci_dev(hcd->self.controller);
- int retval = -EINVAL;
-
- // maybe restore FLADJ
-@@ -258,7 +252,7 @@ static int ehci_pci_resume(struct usb_hc
- msleep(100);
-
- /* If CF is clear, we lost PCI Vaux power and need to restart. */
-- if (readl(&ehci->regs->configured_flag) != cpu_to_le32(FLAG_CF))
-+ if (readl(&ehci->regs->configured_flag) != FLAG_CF)
- goto restart;
-
- /* If any port is suspended (or owned by the companion),
-@@ -292,7 +286,7 @@ restart:
- */
- (void) ehci_halt(ehci);
- (void) ehci_reset(ehci);
-- (void) ehci_pci_reset(hcd);
-+ (void) ehci_pci_reinit(ehci, pdev);
-
- /* emptying the schedule aborts any urbs */
- spin_lock_irq(&ehci->lock);
-@@ -304,9 +298,7 @@ restart:
- /* restart; khubd will disconnect devices */
- retval = ehci_run(hcd);
-
-- /* here we "know" root ports should always stay powered;
-- * but some controllers may lose all power.
-- */
-+ /* here we "know" root ports should always stay powered */
- ehci_port_power(ehci, 1);
-
- return retval;
-@@ -328,12 +320,12 @@ static const struct hc_driver ehci_pci_h
- * basic lifecycle operations
- */
- .reset = ehci_pci_reset,
-- .start = ehci_pci_start,
-+ .start = ehci_run,
- #ifdef CONFIG_PM
- .suspend = ehci_pci_suspend,
- .resume = ehci_pci_resume,
- #endif
-- .stop = ehci_pci_stop,
-+ .stop = ehci_stop,
-
- /*
- * managing i/o requests and associated device resources
diff --git a/usb/usb-ehci-updates.patch b/usb/usb-ehci-updates.patch
deleted file mode 100644
index 30ee0a501989b4..00000000000000
--- a/usb/usb-ehci-updates.patch
+++ /dev/null
@@ -1,200 +0,0 @@
-From david-b@pacbell.net Mon Nov 7 15:19:33 2005
-Message-ID: <20051107230837.10410.qmail@web80727.mail.yahoo.com>
-Date: Mon, 7 Nov 2005 15:08:37 -0800 (PST)
-From: David Brownell <david-b@pacbell.net>
-Subject: USB: EHCI updates (1/4)
-To: greg@kroah.com
-
-This fixes some bugs in EHCI suspend/resume that joined us over the past
-few releases (as usbcore, PCI, pmcore, and other components evolved):
-
- - Removes suspend and resume recursion from the EHCI driver, getting
- rid of the USB_SUSPEND special casing.
-
- - Updates the wakeup mechanism to work again; there's a newish usbcore
- call it needs to use.
-
- - Provide simpler tests for "do we need to restart from scratch", to
- address another case where PCI Vaux was lost. (In this case it was
- restoring a swsusp snapshot, but there could be others.)
-
-Un-exports a symbol that was temporarily exported.
-
-A notable change from previous version is that this doesn't move
-the spinlock init, so there's still a resume/reinit path bug.
-
-Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/core/hub.c | 1
- drivers/usb/host/ehci-hcd.c | 3 -
- drivers/usb/host/ehci-hub.c | 7 ++++
- drivers/usb/host/ehci-pci.c | 77 +++++++++++++++++++++-----------------------
- 4 files changed, 46 insertions(+), 42 deletions(-)
-
---- gregkh-2.6.orig/drivers/usb/host/ehci-hcd.c
-+++ gregkh-2.6/drivers/usb/host/ehci-hcd.c
-@@ -636,9 +636,8 @@ static irqreturn_t ehci_irq (struct usb_
- * stop that signaling.
- */
- ehci->reset_done [i] = jiffies + msecs_to_jiffies (20);
-- mod_timer (&hcd->rh_timer,
-- ehci->reset_done [i] + 1);
- ehci_dbg (ehci, "port %d remote wakeup\n", i + 1);
-+ usb_hcd_resume_root_hub(hcd);
- }
- }
-
---- gregkh-2.6.orig/drivers/usb/host/ehci-pci.c
-+++ gregkh-2.6/drivers/usb/host/ehci-pci.c
-@@ -235,10 +235,11 @@ static void ehci_pci_stop (struct usb_hc
-
- /* suspend/resume, section 4.3 */
-
--/* These routines rely on the bus (pci, platform, etc)
-+/* These routines rely on the PCI bus glue
- * to handle powerdown and wakeup, and currently also on
- * transceivers that don't need any software attention to set up
- * the right sort of wakeup.
-+ * Also they depend on separate root hub suspend/resume.
- */
-
- static int ehci_pci_suspend (struct usb_hcd *hcd, pm_message_t message)
-@@ -246,17 +247,9 @@ static int ehci_pci_suspend (struct usb_
- struct ehci_hcd *ehci = hcd_to_ehci (hcd);
-
- if (time_before (jiffies, ehci->next_statechange))
-- msleep (100);
--
--#ifdef CONFIG_USB_SUSPEND
-- (void) usb_suspend_device (hcd->self.root_hub);
--#else
-- usb_lock_device (hcd->self.root_hub);
-- (void) ehci_bus_suspend (hcd);
-- usb_unlock_device (hcd->self.root_hub);
--#endif
-+ msleep (10);
-
-- // save (PCI) FLADJ in case of Vaux power loss
-+ // could save FLADJ in case of Vaux power loss
- // ... we'd only use it to handle clock skew
-
- return 0;
-@@ -269,13 +262,18 @@ static int ehci_pci_resume (struct usb_h
- struct usb_device *root = hcd->self.root_hub;
- int retval = -EINVAL;
-
-- // maybe restore (PCI) FLADJ
-+ // maybe restore FLADJ
-
- if (time_before (jiffies, ehci->next_statechange))
- msleep (100);
-
-+ /* If CF is clear, we lost PCI Vaux power and need to restart. */
-+ if (readl (&ehci->regs->configured_flag) != cpu_to_le32(FLAG_CF))
-+ goto restart;
-+
- /* If any port is suspended (or owned by the companion),
- * we know we can/must resume the HC (and mustn't reset it).
-+ * We just defer that to the root hub code.
- */
- for (port = HCS_N_PORTS (ehci->hcs_params); port > 0; ) {
- u32 status;
-@@ -283,42 +281,43 @@ static int ehci_pci_resume (struct usb_h
- status = readl (&ehci->regs->port_status [port]);
- if (!(status & PORT_POWER))
- continue;
-- if (status & (PORT_SUSPEND | PORT_OWNER)) {
-- down (&hcd->self.root_hub->serialize);
-- retval = ehci_bus_resume (hcd);
-- up (&hcd->self.root_hub->serialize);
-- break;
-+ if (status & (PORT_SUSPEND | PORT_RESUME | PORT_OWNER)) {
-+ usb_hcd_resume_root_hub(hcd);
-+ return 0;
- }
-+ }
-+
-+restart:
-+ ehci_dbg(ehci, "lost power, restarting\n");
-+ for (port = HCS_N_PORTS (ehci->hcs_params); port > 0; ) {
-+ port--;
- if (!root->children [port])
- continue;
-- dbg_port (ehci, __FUNCTION__, port + 1, status);
- usb_set_device_state (root->children[port],
- USB_STATE_NOTATTACHED);
- }
-
- /* Else reset, to cope with power loss or flush-to-storage
-- * style "resume" having activated BIOS during reboot.
-+ * style "resume" having let BIOS kick in during reboot.
- */
-- if (port == 0) {
-- (void) ehci_halt (ehci);
-- (void) ehci_reset (ehci);
-- (void) ehci_pci_reset (hcd);
--
-- /* emptying the schedule aborts any urbs */
-- spin_lock_irq (&ehci->lock);
-- if (ehci->reclaim)
-- ehci->reclaim_ready = 1;
-- ehci_work (ehci, NULL);
-- spin_unlock_irq (&ehci->lock);
--
-- /* restart; khubd will disconnect devices */
-- retval = ehci_run (hcd);
--
-- /* here we "know" root ports should always stay powered;
-- * but some controllers may lose all power.
-- */
-- ehci_port_power (ehci, 1);
-- }
-+ (void) ehci_halt (ehci);
-+ (void) ehci_reset (ehci);
-+ (void) ehci_pci_reset (hcd);
-+
-+ /* emptying the schedule aborts any urbs */
-+ spin_lock_irq (&ehci->lock);
-+ if (ehci->reclaim)
-+ ehci->reclaim_ready = 1;
-+ ehci_work (ehci, NULL);
-+ spin_unlock_irq (&ehci->lock);
-+
-+ /* restart; khubd will disconnect devices */
-+ retval = ehci_run (hcd);
-+
-+ /* here we "know" root ports should always stay powered;
-+ * but some controllers may lose all power.
-+ */
-+ ehci_port_power (ehci, 1);
-
- return retval;
- }
---- gregkh-2.6.orig/drivers/usb/host/ehci-hub.c
-+++ gregkh-2.6/drivers/usb/host/ehci-hub.c
-@@ -94,6 +94,13 @@ static int ehci_bus_resume (struct usb_h
- msleep(5);
- spin_lock_irq (&ehci->lock);
-
-+ /* Ideally and we've got a real resume here, and no port's power
-+ * was lost. (For PCI, that means Vaux was maintained.) But we
-+ * could instead be restoring a swsusp snapshot -- so that BIOS was
-+ * the last user of the controller, not reset/pm hardware keeping
-+ * state we gave to it.
-+ */
-+
- /* re-init operational registers in case we lost power */
- if (readl (&ehci->regs->intr_enable) == 0) {
- /* at least some APM implementations will try to deliver
---- gregkh-2.6.orig/drivers/usb/core/hub.c
-+++ gregkh-2.6/drivers/usb/core/hub.c
-@@ -1669,7 +1669,6 @@ int usb_suspend_device(struct usb_device
- return 0;
- #endif
- }
--EXPORT_SYMBOL_GPL(usb_suspend_device);
-
- /*
- * If the USB "suspend" state is in use (rather than "global suspend"),
diff --git a/usb/usb-fix-usb-key-generates-ioctl_internal_command-errors-issue.patch b/usb/usb-fix-usb-key-generates-ioctl_internal_command-errors-issue.patch
deleted file mode 100644
index 90eb9f74d8d7d8..00000000000000
--- a/usb/usb-fix-usb-key-generates-ioctl_internal_command-errors-issue.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From linux-usb-devel-admin@lists.sourceforge.net Thu Nov 17 13:17:12 2005
-From: David =?iso-8859-1?Q?H=E4rdeman?= <david@2gen.com>
-To: Pete Zaitcev <zaitcev@redhat.com>
-Message-ID: <20051117212842.GA8110@hardeman.nu>
-Content-Disposition: inline
-Subject: USB: fix USB key generates ioctl_internal_command errors issue
-Date: Thu, 17 Nov 2005 22:28:42 +0100
-
-On Wed, Nov 16, 2005 at 06:34:24PM -0800, Pete Zaitcev wrote:
->On Wed, 16 Nov 2005 23:52:32 +0100, David Härdeman <david@2gen.com> wrote:
->> usb-storage: waiting for device to settle before scanning
->> Vendor: I0MEGA Model: UMni1GB*IOM2K4 Rev: 1.01
->> Type: Direct-Access ANSI SCSI revision: 02
->> SCSI device sda: 2048000 512-byte hdwr sectors (1049 MB)
->> sda: Write Protect is off
->> sda: Mode Sense: 00 00 00 00
->> sda: assuming drive cache: write through
->> ioctl_internal_command: <8 0 0 0> return code = 8000002
->> : Current: sense key=0x0
->> ASC=0x0 ASCQ=0x0
->> SCSI device sda: 2048000 512-byte hdwr sectors (1049 MB)
->
->I think it's harmless. I saw things like that, and initially I plugged
->them with workarounds like this:
-
-Thanks for the pointer, and yes, it is harmless, but it floods the
-console with the messages which hides other (potentially important)
-messages...following your example I've made a patch which fixes the
-problem.
-
-Signed-off-by: David Härdeman <david@2gen.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/storage/unusual_devs.h | 9 +++++++++
- 1 file changed, 9 insertions(+)
-
---- gregkh-2.6.orig/drivers/usb/storage/unusual_devs.h
-+++ gregkh-2.6/drivers/usb/storage/unusual_devs.h
-@@ -1118,6 +1118,15 @@ UNUSUAL_DEV( 0x2735, 0x100b, 0x0000, 0x
- US_SC_DEVICE, US_PR_DEVICE, NULL,
- US_FL_GO_SLOW ),
-
-+/*
-+ * David Härdeman <david@2gen.com>
-+ * The key makes the SCSI stack print confusing (but harmless) messages
-+ */
-+UNUSUAL_DEV( 0x4146, 0xba01, 0x0100, 0x0100,
-+ "Iomega",
-+ "Micro Mini 1GB",
-+ US_SC_DEVICE, US_PR_DEVICE, NULL, US_FL_NOT_LOCKABLE ),
-+
- #ifdef CONFIG_USB_STORAGE_SDDR55
- UNUSUAL_DEV( 0x55aa, 0xa103, 0x0000, 0x9999,
- "Sandisk",
diff --git a/usb/usb-ftdi_sio-new-ids-for-kobil-devices.patch b/usb/usb-ftdi_sio-new-ids-for-kobil-devices.patch
deleted file mode 100644
index e4d5b4376c990b..00000000000000
--- a/usb/usb-ftdi_sio-new-ids-for-kobil-devices.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From ian.abbott@mev.co.uk Wed Nov 16 06:07:25 2005
-Message-ID: <437B4035.1090306@mev.co.uk>
-Date: Wed, 16 Nov 2005 14:20:37 +0000
-From: Ian Abbott <abbotti@mev.co.uk>
-Cc: Greg KH <greg@kroah.com>
-Subject: USB: ftdi_sio: new IDs for KOBIL devices
-
-From: Ian Abbott <abbotti@mev.co.uk>
-
-This patch adds two new devices to the ftdi_sio driver's device ID
-table. The device IDs were supplied by Stefan Nies of KOBIL Systems for
-two of their devices using the FTDI chip.
-
-Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
-
----
- drivers/usb/serial/ftdi_sio.c | 2 ++
- drivers/usb/serial/ftdi_sio.h | 7 +++++++
- 2 files changed, 9 insertions(+)
-
---- gregkh-2.6.orig/drivers/usb/serial/ftdi_sio.c
-+++ gregkh-2.6/drivers/usb/serial/ftdi_sio.c
-@@ -475,6 +475,8 @@ static struct usb_device_id id_table_com
- { USB_DEVICE(FTDI_VID, FTDI_ARTEMIS_PID) },
- { USB_DEVICE(FTDI_VID, FTDI_ATIK_ATK16_PID) },
- { USB_DEVICE(FTDI_VID, FTDI_ATIK_ATK16HR_PID) },
-+ { USB_DEVICE(KOBIL_VID, KOBIL_CONV_B1_PID) },
-+ { USB_DEVICE(KOBIL_VID, KOBIL_CONV_KAAN_PID) },
- { }, /* Optional parameter entry */
- { } /* Terminating entry */
- };
---- gregkh-2.6.orig/drivers/usb/serial/ftdi_sio.h
-+++ gregkh-2.6/drivers/usb/serial/ftdi_sio.h
-@@ -128,6 +128,13 @@
- #define SEALEVEL_2803_8_PID 0X2883 /* SeaLINK+8 (2803) Port 8 */
-
- /*
-+ * The following are the values for two KOBIL chipcard terminals.
-+ */
-+#define KOBIL_VID 0x0d46 /* KOBIL Vendor ID */
-+#define KOBIL_CONV_B1_PID 0x2020 /* KOBIL Konverter for B1 */
-+#define KOBIL_CONV_KAAN_PID 0x2021 /* KOBIL_Konverter for KAAN */
-+
-+/*
- * DSS-20 Sync Station for Sony Ericsson P800
- */
-
diff --git a/usb/usb-kernel-doc-for-linux-usb.h.patch b/usb/usb-kernel-doc-for-linux-usb.h.patch
deleted file mode 100644
index cbb4d77aba4f0f..00000000000000
--- a/usb/usb-kernel-doc-for-linux-usb.h.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From rdunlap@xenotime.net Fri Nov 18 22:57:58 2005
-Date: Fri, 18 Nov 2005 23:06:09 -0800
-From: "Randy.Dunlap" <rdunlap@xenotime.net>
-Cc: gregkh <greg@kroah.com>
-Subject: USB: kernel-doc for linux/usb.h
-Message-Id: <20051118230609.5a75630d.rdunlap@xenotime.net>
-
-From: Randy Dunlap <rdunlap@xenotime.net>
-
-Fix kernel-doc warning in linux/usb.h.
-
-Signed-off-by: Randy Dunlap <rdunlap@xenotime.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
----
- include/linux/usb.h | 1 +
- 1 file changed, 1 insertion(+)
-
---- gregkh-2.6.orig/include/linux/usb.h
-+++ gregkh-2.6/include/linux/usb.h
-@@ -47,6 +47,7 @@ struct usb_driver;
- * @urb_list: urbs queued to this endpoint; maintained by usbcore
- * @hcpriv: for use by HCD; typically holds hardware dma queue head (QH)
- * with one or more transfer descriptors (TDs) per urb
-+ * @kobj: kobject for sysfs info
- * @extra: descriptors following this endpoint in the configuration
- * @extralen: how many bytes of "extra" are valid
- *
diff --git a/usb/usb-ohci-move-ppc-asic-tweaks-nearer-pci.patch b/usb/usb-ohci-move-ppc-asic-tweaks-nearer-pci.patch
deleted file mode 100644
index c68b5145d445d0..00000000000000
--- a/usb/usb-ohci-move-ppc-asic-tweaks-nearer-pci.patch
+++ /dev/null
@@ -1,143 +0,0 @@
-From david-b@pacbell.net Mon Nov 7 20:39:11 2005
-From: David Brownell <david-b@pacbell.net>
-To: Greg KH <greg@kroah.com>
-Subject: USB: ohci, move ppc asic tweaks nearer pci
-Date: Mon, 7 Nov 2005 17:35:11 -0800
-Message-Id: <200511071735.11359.david-b@pacbell.net>
-
-This should fix a suspend/resume issues that appear with OHCI on some
-PPC hardware. The PCI layer should doesn't have the hooks needed for
-such ASIC-specific hooks (in this case, software clock gating), so
-this moves the code to do that into hcd-pci.c ... where it can be
-done after the relevant PCI PM state transition (to/from D3).
-
-Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/core/hcd-pci.c | 38 ++++++++++++++++++++++++++++++++++++--
- drivers/usb/host/ohci-pci.c | 36 ------------------------------------
- 2 files changed, 36 insertions(+), 38 deletions(-)
-
---- gregkh-2.6.orig/drivers/usb/core/hcd-pci.c
-+++ gregkh-2.6/drivers/usb/core/hcd-pci.c
-@@ -20,9 +20,17 @@
- #include <linux/kernel.h>
- #include <linux/module.h>
- #include <linux/pci.h>
-+#include <linux/usb.h>
-+
- #include <asm/io.h>
- #include <asm/irq.h>
--#include <linux/usb.h>
-+
-+#ifdef CONFIG_PPC_PMAC
-+#include <asm/machdep.h>
-+#include <asm/pmac_feature.h>
-+#include <asm/pci-bridge.h>
-+#include <asm/prom.h>
-+#endif
-
- #include "usb.h"
- #include "hcd.h"
-@@ -277,8 +285,22 @@ int usb_hcd_pci_suspend (struct pci_dev
- }
-
- done:
-- if (retval == 0)
-+ if (retval == 0) {
- dev->dev.power.power_state = PMSG_SUSPEND;
-+
-+#ifdef CONFIG_PPC_PMAC
-+ /* Disable ASIC clocks for USB */
-+ if (_machine == _MACH_Pmac) {
-+ struct device_node *of_node;
-+
-+ of_node = pci_device_to_OF_node (dev);
-+ if (of_node)
-+ pmac_call_feature(PMAC_FTR_USB_ENABLE,
-+ of_node, 0, 0);
-+ }
-+#endif
-+ }
-+
- return retval;
- }
- EXPORT_SYMBOL (usb_hcd_pci_suspend);
-@@ -301,6 +323,18 @@ int usb_hcd_pci_resume (struct pci_dev *
- return 0;
- }
-
-+#ifdef CONFIG_PPC_PMAC
-+ /* Reenable ASIC clocks for USB */
-+ if (_machine == _MACH_Pmac) {
-+ struct device_node *of_node;
-+
-+ of_node = pci_device_to_OF_node (dev);
-+ if (of_node)
-+ pmac_call_feature (PMAC_FTR_USB_ENABLE,
-+ of_node, 0, 1);
-+ }
-+#endif
-+
- /* NOTE: chip docs cover clean "real suspend" cases (what Linux
- * calls "standby", "suspend to RAM", and so on). There are also
- * dirty cases when swsusp fakes a suspend in "shutdown" mode.
---- gregkh-2.6.orig/drivers/usb/host/ohci-pci.c
-+++ gregkh-2.6/drivers/usb/host/ohci-pci.c
-@@ -14,15 +14,6 @@
- * This file is licenced under the GPL.
- */
-
--#include <linux/jiffies.h>
--
--#ifdef CONFIG_PPC_PMAC
--#include <asm/machdep.h>
--#include <asm/pmac_feature.h>
--#include <asm/pci-bridge.h>
--#include <asm/prom.h>
--#endif
--
- #ifndef CONFIG_PCI
- #error "This file is PCI bus glue. CONFIG_PCI must be defined."
- #endif
-@@ -115,39 +106,12 @@ ohci_pci_start (struct usb_hcd *hcd)
- static int ohci_pci_suspend (struct usb_hcd *hcd, pm_message_t message)
- {
- /* root hub was already suspended */
--
-- /* FIXME these PMAC things get called in the wrong places. ASIC
-- * clocks should be turned off AFTER entering D3, and on BEFORE
-- * trying to enter D0. Evidently the PCI layer doesn't currently
-- * provide the right sort of platform hooks for this ...
-- */
--#ifdef CONFIG_PPC_PMAC
-- if (_machine == _MACH_Pmac) {
-- struct device_node *of_node;
--
-- /* Disable USB PAD & cell clock */
-- of_node = pci_device_to_OF_node (to_pci_dev(hcd->self.controller));
-- if (of_node)
-- pmac_call_feature(PMAC_FTR_USB_ENABLE, of_node, 0, 0);
-- }
--#endif /* CONFIG_PPC_PMAC */
- return 0;
- }
-
-
- static int ohci_pci_resume (struct usb_hcd *hcd)
- {
--#ifdef CONFIG_PPC_PMAC
-- if (_machine == _MACH_Pmac) {
-- struct device_node *of_node;
--
-- /* Re-enable USB PAD & cell clock */
-- of_node = pci_device_to_OF_node (to_pci_dev(hcd->self.controller));
-- if (of_node)
-- pmac_call_feature (PMAC_FTR_USB_ENABLE, of_node, 0, 1);
-- }
--#endif /* CONFIG_PPC_PMAC */
--
- usb_hcd_resume_root_hub(hcd);
- return 0;
- }
diff --git a/usb/usb-serial-remove-redundant-include.patch b/usb/usb-serial-remove-redundant-include.patch
deleted file mode 100644
index 843430b0c0a6e0..00000000000000
--- a/usb/usb-serial-remove-redundant-include.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From nikai@nikai.net Sat Nov 19 04:51:33 2005
-Date: Sat, 19 Nov 2005 14:05:16 +0100
-From: Nicolas Kaiser <nikai@nikai.net>
-To: Greg Kroah-Hartman <greg@kroah.com>
-Subject: usb serial: remove redundant include
-Message-ID: <20051119140516.1f37a5be@lucky.kitzblitz>
-
-remove redundant include
-
-Signed-off-by: Nicolas Kaiser <nikai@nikai.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/serial/ipw.c | 1 -
- 1 file changed, 1 deletion(-)
-
---- gregkh-2.6.orig/drivers/usb/serial/ipw.c
-+++ gregkh-2.6/drivers/usb/serial/ipw.c
-@@ -46,7 +46,6 @@
- #include <linux/module.h>
- #include <linux/spinlock.h>
- #include <linux/usb.h>
--#include <linux/usb.h>
- #include <asm/uaccess.h>
- #include "usb-serial.h"
-
diff --git a/usb/usb-sn9c10x-driver-bad-page-state-fix.patch b/usb/usb-sn9c10x-driver-bad-page-state-fix.patch
deleted file mode 100644
index f8f6e76b5ad890..00000000000000
--- a/usb/usb-sn9c10x-driver-bad-page-state-fix.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From dwrobel@ertel.com.pl Wed Nov 16 12:05:26 2005
-Date: Wed, 16 Nov 2005 21:06:03 +0100 (CET)
-From: Damian Wrobel <dwrobel@ertel.com.pl>
-To: Greg Kroah-Hartman <gregkh@suse.de>
-Cc: Luca Risolia <luca.risolia@studio.unibo.it>
-Subject: USB: SN9C10x driver - bad page state fix
-Message-ID: <Pine.LNX.4.58.0511162041160.18436@gormenghast.ertel.com.pl>
-
-
-This patch solves the following problem I've already discovered on the
-latest 2.6.15-rc1-git1 kernel:
-
-Nov 13 07:37:28 wrobel kernel: Bad page state at free_hot_cold_page (in process 'motion', page c164e020)
-Nov 13 07:37:28 wrobel kernel: flags:0x40000400 mapping:00000000 mapcount:0 count:0
-Nov 13 07:37:28 wrobel kernel: Backtrace:
-Nov 13 07:37:28 wrobel kernel: [<c0146d86>] bad_page+0x85/0xbe
-Nov 13 07:37:28 wrobel kernel: [<c0147629>] free_hot_cold_page+0x54/0x129
-Nov 13 07:37:28 wrobel kernel: [<c01598c6>] __vunmap+0xa9/0xfe
-Nov 13 07:37:28 wrobel kernel: [<c0154114>] vmalloc_to_page+0x34/0x55
-Nov 13 07:37:28 wrobel kernel: [<c0159942>] vfree+0x27/0x35
-Nov 13 07:37:28 wrobel kernel: [<f8a20292>] sn9c102_release_buffers+0x30/0x3f [sn9c102]
-Nov 13 07:37:28 wrobel kernel: [<f8a231c2>] sn9c102_release+0x37/0xeb [sn9c102]
-Nov 13 07:37:28 wrobel kernel: [<c0163e74>] __fput+0xa9/0x1aa
-Nov 13 07:37:28 wrobel kernel: [<c01624f7>] filp_close+0x49/0x6d
-Nov 13 07:37:30 wrobel kernel: [<c016258f>] sys_close+0x74/0x95
-Nov 13 07:37:30 wrobel kernel: [<c0102ef9>] syscall_call+0x7/0xb
-Nov 13 07:37:31 wrobel kernel: Trying to fix it up, but a reboot is needed
-
-Signed-off-by: Damian Wrobel <dwrobel@ertel.com.pl>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/media/sn9c102_core.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- gregkh-2.6.orig/drivers/usb/media/sn9c102_core.c
-+++ gregkh-2.6/drivers/usb/media/sn9c102_core.c
-@@ -199,7 +199,7 @@ static void sn9c102_release_buffers(stru
- {
- if (cam->nbuffers) {
- rvfree(cam->frame[0].bufmem,
-- cam->nbuffers * cam->frame[0].buf.length);
-+ cam->nbuffers * PAGE_ALIGN(cam->frame[0].buf.length));
- cam->nbuffers = 0;
- }
- }