Commit ee3436b8 authored by Devin Heitmueller's avatar Devin Heitmueller Committed by Mauro Carvalho Chehab

V4L/DVB (11924): au0828: Don't let device work unless connected to a high speed USB port

The au0828 basically just doesn't work at 12 Mbps.  The isoc pipe needs
nearly 200 Mbps for analog support, so users would see garbage video, and on
the DVB/ATSC side scanning is likely to work but if the user tried to tune it
would certainly appear to have failed.

It's better to fail explicity up front and tell the user to plug into a USB 2.0
port, than to let the driver load and the user have weird problems with tuning
and garbage video.
Signed-off-by: default avatarDevin Heitmueller <dheitmueller@kernellabs.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 64a00b43
...@@ -181,6 +181,18 @@ static int au0828_usb_probe(struct usb_interface *interface, ...@@ -181,6 +181,18 @@ static int au0828_usb_probe(struct usb_interface *interface,
le16_to_cpu(usbdev->descriptor.idProduct), le16_to_cpu(usbdev->descriptor.idProduct),
ifnum); ifnum);
/*
* Make sure we have 480 Mbps of bandwidth, otherwise things like
* video stream wouldn't likely work, since 12 Mbps is generally
* not enough even for most Digital TV streams.
*/
if (usbdev->speed != USB_SPEED_HIGH) {
printk(KERN_ERR "au0828: Device initialization failed.\n");
printk(KERN_ERR "au0828: Device must be connected to a "
"high-speed USB 2.0 port.\n");
return -ENODEV;
}
dev = kzalloc(sizeof(*dev), GFP_KERNEL); dev = kzalloc(sizeof(*dev), GFP_KERNEL);
if (dev == NULL) { if (dev == NULL) {
printk(KERN_ERR "%s() Unable to allocate memory\n", __func__); printk(KERN_ERR "%s() Unable to allocate memory\n", __func__);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment