mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-24 09:50:04 +00:00
usb: host: ehci: make use of new usb_endpoint_maxp_mult()
We have introduced a helper to calculate multiplier value from wMaxPacketSize. Start using it. Cc: Alan Stern <stern@rowland.harvard.edu> Cc: <linux-usb@vger.kernel.org> Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
This commit is contained in:
parent
df4769e37a
commit
e3b89080f2
2 changed files with 7 additions and 5 deletions
|
@ -550,8 +550,6 @@ qh_completions (struct ehci_hcd *ehci, struct ehci_qh *qh)
|
|||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
|
||||
// high bandwidth multiplier, as encoded in highspeed endpoint descriptors
|
||||
#define hb_mult(wMaxPacketSize) (1 + (((wMaxPacketSize) >> 11) & 0x03))
|
||||
// ... and packet size, for any kind of endpoint descriptor
|
||||
#define max_packet(wMaxPacketSize) ((wMaxPacketSize) & 0x07ff)
|
||||
|
||||
|
@ -770,9 +768,11 @@ qh_make (
|
|||
gfp_t flags
|
||||
) {
|
||||
struct ehci_qh *qh = ehci_qh_alloc (ehci, flags);
|
||||
struct usb_host_endpoint *ep;
|
||||
u32 info1 = 0, info2 = 0;
|
||||
int is_input, type;
|
||||
int maxp = 0;
|
||||
int mult;
|
||||
struct usb_tt *tt = urb->dev->tt;
|
||||
struct ehci_qh_hw *hw;
|
||||
|
||||
|
@ -787,7 +787,9 @@ qh_make (
|
|||
|
||||
is_input = usb_pipein (urb->pipe);
|
||||
type = usb_pipetype (urb->pipe);
|
||||
ep = usb_pipe_endpoint (urb->dev, urb->pipe);
|
||||
maxp = usb_maxpacket (urb->dev, urb->pipe, !is_input);
|
||||
mult = usb_endpoint_maxp_mult (&ep->desc);
|
||||
|
||||
/* 1024 byte maxpacket is a hardware ceiling. High bandwidth
|
||||
* acts like up to 3KB, but is built from smaller packets.
|
||||
|
@ -810,7 +812,7 @@ qh_make (
|
|||
|
||||
qh->ps.usecs = NS_TO_US(usb_calc_bus_time(USB_SPEED_HIGH,
|
||||
is_input, 0,
|
||||
hb_mult(maxp) * max_packet(maxp)));
|
||||
mult * max_packet(maxp)));
|
||||
qh->ps.phase = NO_FRAME;
|
||||
|
||||
if (urb->dev->speed == USB_SPEED_HIGH) {
|
||||
|
@ -929,7 +931,7 @@ qh_make (
|
|||
info2 |= (EHCI_TUNE_MULT_HS << 30);
|
||||
} else { /* PIPE_INTERRUPT */
|
||||
info1 |= max_packet (maxp) << 16;
|
||||
info2 |= hb_mult (maxp) << 30;
|
||||
info2 |= mult << 30;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
|
|
|
@ -1064,7 +1064,7 @@ iso_stream_init(
|
|||
|
||||
/* knows about ITD vs SITD */
|
||||
if (dev->speed == USB_SPEED_HIGH) {
|
||||
unsigned multi = hb_mult(maxp);
|
||||
unsigned multi = usb_endpoint_maxp_mult(&urb->ep->desc);
|
||||
|
||||
stream->highspeed = 1;
|
||||
|
||||
|
|
Loading…
Reference in a new issue