usb: add helper to extract bits 12:11 of wMaxPacketSize
authorFelipe Balbi <felipe.balbi@linux.intel.com>
Mon, 26 Sep 2016 07:51:18 +0000 (10:51 +0300)
committerBen Hutchings <ben@decadent.org.uk>
Tue, 13 Feb 2018 18:32:23 +0000 (18:32 +0000)
commitea00712a030beb90d9a03c6501d0d42d516b62a4
treee8d241e339df4a74e50b4352b0c8653bdf6c282f
parentd6d76df2094546ddf21489197b1a6833b0c16e40
usb: add helper to extract bits 12:11 of wMaxPacketSize

commit 541b6fe63023f3059cf85d47ff2767a3e42a8e44 upstream.

According to USB Specification 2.0 table 9-4,
wMaxPacketSize is a bitfield. Endpoint's maxpacket
is laid out in bits 10:0. For high-speed,
high-bandwidth isochronous endpoints, bits 12:11
contain a multiplier to tell us how many
transactions we want to try per uframe.

This means that if we want an isochronous endpoint
to issue 3 transfers of 1024 bytes per uframe,
wMaxPacketSize should contain the value:

1024 | (2 << 11)

or 5120 (0x1400). In order to make Host and
Peripheral controller drivers' life easier, we're
adding a helper which returns bits 12:11. Note that
no care is made WRT to checking endpoint type and
gadget's speed. That's left for drivers to handle.

Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
[bwh: Backported to 3.2: adjust filename, context]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
include/linux/usb/ch9.h