usb: dwc2: Do not mix data toggle for IN and OUT endpoints, check bounds
authorStefan Brüns <stefan.bruens@rwth-aachen.de>
Sat, 23 Jan 2016 00:42:25 +0000 (01:42 +0100)
committerMarek Vasut <marex@denx.de>
Sat, 23 Jan 2016 15:21:11 +0000 (16:21 +0100)
commit25612f23b5ba1f7d0fb96dbf576b98dc122da24c
tree5858d0ff3833c4b00f3bf7ca1399aa637cf65278
parentd2ff51b372a6800fcf1394fc2ca9821d86b15335
usb: dwc2: Do not mix data toggle for IN and OUT endpoints, check bounds

USB protocol allows for 16 IN and 16 OUT endpoints (USB 2.0 Spec,
8.3.2.2 Endpoint Field). A function may have an EP 1 for both IN and OUT,
so these two should be kept separate. As EPs are either BULK or INTERRUPT
(or ISO), it is fine to have one array per direction for all transfer
types (also see e236519b7365ef75c5da6a5623f0b03d9c00cfae).

USB device address is 7 bits, so a bus may have more than 16 devices.
Check the device number, as the DWC2 driver only supports BULK/ISO for
the first 16 devices.

Signed-off-by: Stefan Brüns <stefan.bruens@rwth-aachen.de>
drivers/usb/host/dwc2.c