--- zzzz-none-000/linux-2.6.19.2/drivers/usb/storage/usb.c 2007-01-10 19:10:37.000000000 +0000 +++ davinci-8020-5505/linux-2.6.19.2/drivers/usb/storage/usb.c 2008-07-14 15:32:40.000000000 +0000 @@ -141,7 +141,7 @@ #undef UNUSUAL_DEV #undef USUAL_DEV /* Terminating entry */ - { } + { .match_flags = 0 } }; MODULE_DEVICE_TABLE (usb, storage_usb_ids); @@ -181,7 +181,7 @@ # undef USUAL_DEV /* Terminating entry */ - { NULL } + { NULL, NULL, 0, 0, NULL } }; @@ -952,6 +952,28 @@ int result; struct task_struct *th; + struct usb_device *udev; + + /* Filter out all AVM (057C) mass storage devices... =WK= 20071217 */ + /*== AVM/WK 20080714 HUAWEI VID for UMTS Modem == + * No USB Storage for AVM and Huawei devices, please. + */ + #define AVM_VENDOR_ID 0x057C + #define HUAWEI_VENDOR_ID 0x12D1 + + udev = interface_to_usbdev(intf); + if ((udev->descriptor.idVendor == AVM_VENDOR_ID) || + (udev->descriptor.idVendor == HUAWEI_VENDOR_ID)) { + unsigned short vendor, device; + vendor = (unsigned short) udev->descriptor.idVendor; + device = (unsigned short) udev->descriptor.idProduct; + printk ( + KERN_INFO "USB Mass Storage device (%04x:%04x) ignored!\n", + vendor, device + ); + return -ENODEV; + } + if (usb_usual_check_type(id, USB_US_TYPE_STOR)) return -ENXIO;