--- zzzz-none-000/linux-2.6.28.10/drivers/usb/storage/usb.c 2009-05-02 18:54:43.000000000 +0000 +++ puma5-6360-529/linux-2.6.28.10/drivers/usb/storage/usb.c 2010-03-30 20:02:06.000000000 +0000 @@ -950,6 +950,45 @@ int result; struct task_struct *th; + struct usb_device *udev; + + /* AVM/BC 20100330 Patch from AVM Kernel 2.6.19 + * Filter out all AVM (057C) mass storage devices... =WK= 20071217 + * AVM/WK 20080714 HUAWEI VID for UMTS Modem == + * No USB Storage for AVM and some GSM devices, please. + */ + #define AVM_VENDOR_ID 0x057C + #define HUAWEI_VENDOR_ID 0x12D1 + #define OPTION_VENDOR_ID 0x0AF0 + #define OPTION_I210_VENDOR_ID 0x1E0E + #define NOVATELWIRELESS_VENDOR_ID 0x1410 + #define SIERRAWIRELESS_VENDOR_ID 0x1199 + #define FOUR_G_SYSTEMS_VENDOR_ID 0x16d8 + #define FOUR_G_SYSTEMS_2ND_VENDOR_ID 0x1c9e + #define ZTE_VENDOR_ID 0x19d2 + + /*== AVM/WK 20090226 Big Endian Fix == */ + udev = interface_to_usbdev(intf); + if ((le16_to_cpu(udev->descriptor.idVendor) == AVM_VENDOR_ID) + || (le16_to_cpu(udev->descriptor.idVendor) == HUAWEI_VENDOR_ID) + || (le16_to_cpu(udev->descriptor.idVendor) == NOVATELWIRELESS_VENDOR_ID) + || (le16_to_cpu(udev->descriptor.idVendor) == FOUR_G_SYSTEMS_VENDOR_ID) + || (le16_to_cpu(udev->descriptor.idVendor) == FOUR_G_SYSTEMS_2ND_VENDOR_ID) + || (le16_to_cpu(udev->descriptor.idVendor) == SIERRAWIRELESS_VENDOR_ID) + || (le16_to_cpu(udev->descriptor.idVendor) == OPTION_VENDOR_ID) + || (le16_to_cpu(udev->descriptor.idVendor) == OPTION_I210_VENDOR_ID) + || (le16_to_cpu(udev->descriptor.idVendor) == ZTE_VENDOR_ID) + ) { + unsigned short vendor, device; + vendor = (unsigned short) le16_to_cpu(udev->descriptor.idVendor); + device = (unsigned short) le16_to_cpu(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;