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 --- |