diff -ur linux-2.6.27.orig/drivers/usb/host/ehci-q.c linux-2.6.27/drivers/usb/host/ehci-q.c --- linux-2.6.27.orig/drivers/usb/host/ehci-q.c 2008-10-10 00:13:53.000000000 +0200 +++ linux-2.6.27/drivers/usb/host/ehci-q.c 2009-01-06 18:31:38.000000000 +0100 @@ -799,7 +799,12 @@ * to help them do so. So now people expect to use * such nonconformant devices with Linux too; sigh. */ - info1 |= max_packet(maxp) << 16; + struct usb_device_descriptor *desc = &urb->dev->descriptor; + if (desc->idVendor == cpu_to_le16(0x148e) && desc->idProduct == cpu_to_le16(0x0900)) { + info1 |= 256 << 16; + } else { + info1 |= max_packet(maxp) << 16; + } info2 |= (EHCI_TUNE_MULT_HS << 30); } else { /* PIPE_INTERRUPT */ info1 |= max_packet (maxp) << 16;