USB: ohci: quirk AMD prefetch for USB 1.1 ISO transfer
The following patch in the driver is required to avoid USB 1.1 device failures that may occur due to requests from USB OHCI controllers may be overwritten if the latency for any pending request by the USB controller is very long (in the range of milliseconds). Signed-off-by: Libin Yang <libin.yang@amd.com> Cc: David Brownell <dbrownell@users.sourceforge.net> Cc: Alan Stern <stern@rowland.harvard.edu> Cc: stable <stable@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:

committed by
Greg Kroah-Hartman

parent
ac50e95078
commit
a1f17a872b
@@ -49,9 +49,12 @@ __acquires(ohci->lock)
|
||||
switch (usb_pipetype (urb->pipe)) {
|
||||
case PIPE_ISOCHRONOUS:
|
||||
ohci_to_hcd(ohci)->self.bandwidth_isoc_reqs--;
|
||||
if (ohci_to_hcd(ohci)->self.bandwidth_isoc_reqs == 0
|
||||
&& quirk_amdiso(ohci))
|
||||
quirk_amd_pll(1);
|
||||
if (ohci_to_hcd(ohci)->self.bandwidth_isoc_reqs == 0) {
|
||||
if (quirk_amdiso(ohci))
|
||||
quirk_amd_pll(1);
|
||||
if (quirk_amdprefetch(ohci))
|
||||
sb800_prefetch(ohci, 0);
|
||||
}
|
||||
break;
|
||||
case PIPE_INTERRUPT:
|
||||
ohci_to_hcd(ohci)->self.bandwidth_int_reqs--;
|
||||
@@ -680,9 +683,12 @@ static void td_submit_urb (
|
||||
data + urb->iso_frame_desc [cnt].offset,
|
||||
urb->iso_frame_desc [cnt].length, urb, cnt);
|
||||
}
|
||||
if (ohci_to_hcd(ohci)->self.bandwidth_isoc_reqs == 0
|
||||
&& quirk_amdiso(ohci))
|
||||
quirk_amd_pll(0);
|
||||
if (ohci_to_hcd(ohci)->self.bandwidth_isoc_reqs == 0) {
|
||||
if (quirk_amdiso(ohci))
|
||||
quirk_amd_pll(0);
|
||||
if (quirk_amdprefetch(ohci))
|
||||
sb800_prefetch(ohci, 1);
|
||||
}
|
||||
periodic = ohci_to_hcd(ohci)->self.bandwidth_isoc_reqs++ == 0
|
||||
&& ohci_to_hcd(ohci)->self.bandwidth_int_reqs == 0;
|
||||
break;
|
||||
|
Reference in New Issue
Block a user