diff options
Diffstat (limited to 'drivers/usb/host')
-rw-r--r-- | drivers/usb/host/pci-quirks.c | 27 | ||||
-rw-r--r-- | drivers/usb/host/sl811_cs.c | 4 |
2 files changed, 20 insertions, 11 deletions
diff --git a/drivers/usb/host/pci-quirks.c b/drivers/usb/host/pci-quirks.c index e9e5bc178cef..9e81c26313f9 100644 --- a/drivers/usb/host/pci-quirks.c +++ b/drivers/usb/host/pci-quirks.c | |||
@@ -191,8 +191,9 @@ static void __devinit quirk_usb_handoff_ohci(struct pci_dev *pdev) | |||
191 | } | 191 | } |
192 | if (wait_time <= 0) | 192 | if (wait_time <= 0) |
193 | printk(KERN_WARNING "%s %s: BIOS handoff " | 193 | printk(KERN_WARNING "%s %s: BIOS handoff " |
194 | "failed (BIOS bug ?)\n", | 194 | "failed (BIOS bug ?) %08x\n", |
195 | pdev->dev.bus_id, "OHCI"); | 195 | pdev->dev.bus_id, "OHCI", |
196 | readl(base + OHCI_CONTROL)); | ||
196 | 197 | ||
197 | /* reset controller, preserving RWC */ | 198 | /* reset controller, preserving RWC */ |
198 | writel(control & OHCI_CTRL_RWC, base + OHCI_CONTROL); | 199 | writel(control & OHCI_CTRL_RWC, base + OHCI_CONTROL); |
@@ -243,6 +244,12 @@ static void __devinit quirk_usb_disable_ehci(struct pci_dev *pdev) | |||
243 | pr_debug("%s %s: BIOS handoff\n", | 244 | pr_debug("%s %s: BIOS handoff\n", |
244 | pdev->dev.bus_id, "EHCI"); | 245 | pdev->dev.bus_id, "EHCI"); |
245 | 246 | ||
247 | #if 0 | ||
248 | /* aleksey_gorelov@phoenix.com reports that some systems need SMI forced on, | ||
249 | * but that seems dubious in general (the BIOS left it off intentionally) | ||
250 | * and is known to prevent some systems from booting. so we won't do this | ||
251 | * unless maybe we can determine when we're on a system that needs SMI forced. | ||
252 | */ | ||
246 | /* BIOS workaround (?): be sure the | 253 | /* BIOS workaround (?): be sure the |
247 | * pre-Linux code receives the SMI | 254 | * pre-Linux code receives the SMI |
248 | */ | 255 | */ |
@@ -252,12 +259,14 @@ static void __devinit quirk_usb_disable_ehci(struct pci_dev *pdev) | |||
252 | pci_write_config_dword(pdev, | 259 | pci_write_config_dword(pdev, |
253 | offset + EHCI_USBLEGCTLSTS, | 260 | offset + EHCI_USBLEGCTLSTS, |
254 | val | EHCI_USBLEGCTLSTS_SOOE); | 261 | val | EHCI_USBLEGCTLSTS_SOOE); |
255 | } | 262 | #endif |
256 | 263 | ||
257 | /* always say Linux will own the hardware | 264 | /* some systems get upset if this semaphore is |
258 | * by setting EHCI_USBLEGSUP_OS. | 265 | * set for any other reason than forcing a BIOS |
259 | */ | 266 | * handoff.. |
260 | pci_write_config_byte(pdev, offset + 3, 1); | 267 | */ |
268 | pci_write_config_byte(pdev, offset + 3, 1); | ||
269 | } | ||
261 | 270 | ||
262 | /* if boot firmware now owns EHCI, spin till | 271 | /* if boot firmware now owns EHCI, spin till |
263 | * it hands it over. | 272 | * it hands it over. |
@@ -274,8 +283,8 @@ static void __devinit quirk_usb_disable_ehci(struct pci_dev *pdev) | |||
274 | * it down, and hope nothing goes too wrong | 283 | * it down, and hope nothing goes too wrong |
275 | */ | 284 | */ |
276 | printk(KERN_WARNING "%s %s: BIOS handoff " | 285 | printk(KERN_WARNING "%s %s: BIOS handoff " |
277 | "failed (BIOS bug ?)\n", | 286 | "failed (BIOS bug ?) %08x\n", |
278 | pdev->dev.bus_id, "EHCI"); | 287 | pdev->dev.bus_id, "EHCI", cap); |
279 | pci_write_config_byte(pdev, offset + 2, 0); | 288 | pci_write_config_byte(pdev, offset + 2, 0); |
280 | } | 289 | } |
281 | 290 | ||
diff --git a/drivers/usb/host/sl811_cs.c b/drivers/usb/host/sl811_cs.c index 466384d7c79f..134d2000128a 100644 --- a/drivers/usb/host/sl811_cs.c +++ b/drivers/usb/host/sl811_cs.c | |||
@@ -101,7 +101,7 @@ static struct resource resources[] = { | |||
101 | }, | 101 | }, |
102 | }; | 102 | }; |
103 | 103 | ||
104 | extern struct device_driver sl811h_driver; | 104 | extern struct platform_driver sl811h_driver; |
105 | 105 | ||
106 | static struct platform_device platform_dev = { | 106 | static struct platform_device platform_dev = { |
107 | .id = -1, | 107 | .id = -1, |
@@ -132,7 +132,7 @@ static int sl811_hc_init(struct device *parent, ioaddr_t base_addr, int irq) | |||
132 | * initialized already because of the link order dependency created | 132 | * initialized already because of the link order dependency created |
133 | * by referencing "sl811h_driver". | 133 | * by referencing "sl811h_driver". |
134 | */ | 134 | */ |
135 | platform_dev.name = sl811h_driver.name; | 135 | platform_dev.name = sl811h_driver.driver.name; |
136 | return platform_device_register(&platform_dev); | 136 | return platform_device_register(&platform_dev); |
137 | } | 137 | } |
138 | 138 | ||