usb: Fix maxpacketsize for first descriptor read for low-speed usb devs
This fixes descriptor reading of lowspeed devices through ohci not working. Signed-off-by: Hans de Goede <hdegoede@redhat.com> Acked-by: Marek Vasut <marex@denx.de>
This commit is contained in:
parent
cb8a2c148a
commit
2b338ef411
17
common/usb.c
17
common/usb.c
@ -946,13 +946,18 @@ static int usb_setup_descriptor(struct usb_device *dev, bool do_read)
|
||||
* send 64-byte GET-DEVICE-DESCRIPTOR request. Since the descriptor is
|
||||
* only 18 bytes long, this will terminate with a short packet. But if
|
||||
* the maxpacket size is 8 or 16 the device may be waiting to transmit
|
||||
* some more, or keeps on retransmitting the 8 byte header. */
|
||||
* some more, or keeps on retransmitting the 8 byte header.
|
||||
*/
|
||||
|
||||
dev->descriptor.bMaxPacketSize0 = 64; /* Start off at 64 bytes */
|
||||
/* Default to 64 byte max packet size */
|
||||
dev->maxpacketsize = PACKET_SIZE_64;
|
||||
dev->epmaxpacketin[0] = 64;
|
||||
dev->epmaxpacketout[0] = 64;
|
||||
if (dev->speed == USB_SPEED_LOW) {
|
||||
dev->descriptor.bMaxPacketSize0 = 8;
|
||||
dev->maxpacketsize = PACKET_SIZE_8;
|
||||
} else {
|
||||
dev->descriptor.bMaxPacketSize0 = 64;
|
||||
dev->maxpacketsize = PACKET_SIZE_64;
|
||||
}
|
||||
dev->epmaxpacketin[0] = dev->descriptor.bMaxPacketSize0;
|
||||
dev->epmaxpacketout[0] = dev->descriptor.bMaxPacketSize0;
|
||||
|
||||
if (do_read) {
|
||||
int err;
|
||||
|
Loading…
Reference in New Issue
Block a user