uhci-hcd.c (d68c51e0b377838dd31b37707813bb62089f399c) uhci-hcd.c (4642d34a439f80e16af0d56ed6258a33abae257a)
1/*
2 * Universal Host Controller Interface driver for USB.
3 *
4 * Maintainer: Alan Stern <stern@rowland.harvard.edu>
5 *
6 * (C) Copyright 1999 Linus Torvalds
7 * (C) Copyright 1999-2002 Johannes Erdfelt, johannes@erdfelt.com
8 * (C) Copyright 1999 Randy Dunlap

--- 251 unchanged lines hidden (view full) ---

260
261 /* perform any arch/bus specific configuration */
262 if (uhci->configure_hc)
263 uhci->configure_hc(uhci);
264}
265
266static int resume_detect_interrupts_are_broken(struct uhci_hcd *uhci)
267{
1/*
2 * Universal Host Controller Interface driver for USB.
3 *
4 * Maintainer: Alan Stern <stern@rowland.harvard.edu>
5 *
6 * (C) Copyright 1999 Linus Torvalds
7 * (C) Copyright 1999-2002 Johannes Erdfelt, johannes@erdfelt.com
8 * (C) Copyright 1999 Randy Dunlap

--- 251 unchanged lines hidden (view full) ---

260
261 /* perform any arch/bus specific configuration */
262 if (uhci->configure_hc)
263 uhci->configure_hc(uhci);
264}
265
266static int resume_detect_interrupts_are_broken(struct uhci_hcd *uhci)
267{
268 /* If we have to ignore overcurrent events then almost by definition
269 * we can't depend on resume-detect interrupts. */
270 if (ignore_oc)
268 /*
269 * If we have to ignore overcurrent events then almost by definition
270 * we can't depend on resume-detect interrupts.
271 *
272 * Those interrupts also don't seem to work on ASpeed SoCs.
273 */
274 if (ignore_oc || uhci_is_aspeed(uhci))
271 return 1;
272
273 return uhci->resume_detect_interrupts_are_broken ?
274 uhci->resume_detect_interrupts_are_broken(uhci) : 0;
275}
276
277static int global_suspend_mode_is_broken(struct uhci_hcd *uhci)
278{

--- 100 unchanged lines hidden (view full) ---

379 uhci_scan_schedule(uhci);
380 uhci_fsbr_off(uhci);
381}
382
383static void start_rh(struct uhci_hcd *uhci)
384{
385 uhci->is_stopped = 0;
386
275 return 1;
276
277 return uhci->resume_detect_interrupts_are_broken ?
278 uhci->resume_detect_interrupts_are_broken(uhci) : 0;
279}
280
281static int global_suspend_mode_is_broken(struct uhci_hcd *uhci)
282{

--- 100 unchanged lines hidden (view full) ---

383 uhci_scan_schedule(uhci);
384 uhci_fsbr_off(uhci);
385}
386
387static void start_rh(struct uhci_hcd *uhci)
388{
389 uhci->is_stopped = 0;
390
391 /*
392 * Clear stale status bits on Aspeed as we get a stale HCH
393 * which causes problems later on
394 */
395 if (uhci_is_aspeed(uhci))
396 uhci_writew(uhci, uhci_readw(uhci, USBSTS), USBSTS);
397
387 /* Mark it configured and running with a 64-byte max packet.
388 * All interrupts are enabled, even though RESUME won't do anything.
389 */
390 uhci_writew(uhci, USBCMD_RS | USBCMD_CF | USBCMD_MAXP, USBCMD);
391 uhci_writew(uhci, USBINTR_TIMEOUT | USBINTR_RESUME |
392 USBINTR_IOC | USBINTR_SP, USBINTR);
393 mb();
394 uhci->rh_state = UHCI_RH_RUNNING;

--- 548 unchanged lines hidden ---
398 /* Mark it configured and running with a 64-byte max packet.
399 * All interrupts are enabled, even though RESUME won't do anything.
400 */
401 uhci_writew(uhci, USBCMD_RS | USBCMD_CF | USBCMD_MAXP, USBCMD);
402 uhci_writew(uhci, USBINTR_TIMEOUT | USBINTR_RESUME |
403 USBINTR_IOC | USBINTR_SP, USBINTR);
404 mb();
405 uhci->rh_state = UHCI_RH_RUNNING;

--- 548 unchanged lines hidden ---