From: Greg Kroah-Hartman Date: Fri, 11 Feb 2011 21:20:10 +0000 (-0800) Subject: .36 patches X-Git-Tag: v2.6.36.4~49 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=c9b0164c36bc8900214f63ac74bee7c6d6ad53c8;p=thirdparty%2Fkernel%2Fstable-queue.git .36 patches --- diff --git a/queue-2.6.36/series b/queue-2.6.36/series index ac810640f6e..837e47689ef 100644 --- a/queue-2.6.36/series +++ b/queue-2.6.36/series @@ -11,3 +11,33 @@ hwmon-applesmc-relax-the-severity-of-device-init-failure.patch usb-serial-handle-data-carrier-detect-changes.patch usb-cp210x-add-two-device-ids.patch usb-cp210x-removed-incorrect-device-id.patch +usb-qcaux-add-pantech-uml290-device-id.patch +usb-usb-storage-unusual_devs-update-for-cypress-atacb.patch +usb-usb-storage-unusual_devs-update-for-trekstor-datastation-maxi-g.u-external-hard-drive-enclosure.patch +usb-usb-storage-unusual_devs-entry-for-camsport-evo.patch +usb-usb-storage-unusual_devs-entry-for-coby-mp3-player.patch +usb-serial-updated-support-for-icom-devices.patch +usb-adding-usb-support-for-cinterion-s-hc2x-eu3-and-ph8-products.patch +usb-serial-add-missing-.usb_driver-field-in-serial-drivers.patch +usb-ehci-aspm-quirk-of-isoc-on-amd-hudson.patch +usb-ehci-fix-dma-deallocation-bug.patch +usb-g_printer-fix-bug-in-unregistration.patch +usb-g_printer-fix-bug-in-module-parameter-definitions.patch +usb-io_edgeport-fix-the-reported-firmware-major-and-minor.patch +usb-ti_usb-fix-module-removal.patch +usb-storage-add-unusual_devs-entry-for-vtech-kidizoom.patch +usb-ftdi_sio-add-st-micro-connect-lite-uart-support.patch +usb-cdc-acm-adding-second-acm-channel-support-for-nokia-n8.patch +usb-ftdi_sio-add-vid-0x0647-pid-0x0100-for-acton-research-spectrograph.patch +usb-ehci-fix-scheduling-while-atomic-during-suspend.patch +usb-prevent-buggy-hubs-from-crashing-the-usb-stack.patch +usb-fix-race-between-root-hub-resume-and-wakeup-requests.patch +staging-zram-fix-data-corruption-issue.patch +staging-comedi-add-support-for-newer-jr3-1-channel-pci-board.patch +staging-comedi-ni_labpc-use-shared-irq-for-pcmcia-card.patch +staging-hv-fix-sysfs-symlink-on-hv-block-device.patch +staging-hv-fix-netvsc-sleeping-while-atomic.patch +staging-hv-enable-sending-garp-packet-after-live-migration.patch +staging-rt3090-fix-rt3090-scan-ap-function.patch +staging-rt2860-fix-previous-patch-error.patch +staging-rt2860-fix-incorrect-netif_stop_queue-usage-warning.patch diff --git a/queue-2.6.36/staging-comedi-add-support-for-newer-jr3-1-channel-pci-board.patch b/queue-2.6.36/staging-comedi-add-support-for-newer-jr3-1-channel-pci-board.patch new file mode 100644 index 00000000000..f810b2c027d --- /dev/null +++ b/queue-2.6.36/staging-comedi-add-support-for-newer-jr3-1-channel-pci-board.patch @@ -0,0 +1,48 @@ +From 6292817d58637f85dd623cfe563c7f5ec4f4c470 Mon Sep 17 00:00:00 2001 +From: Ruben Smits +Date: Sat, 11 Dec 2010 08:26:18 +0100 +Subject: staging: comedi: add support for newer jr3 1-channel pci board + +From: Ruben Smits + +commit 6292817d58637f85dd623cfe563c7f5ec4f4c470 upstream. + +add DEVICE_ID to table + +Signed-off-by: Ruben Smits +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/staging/comedi/drivers/jr3_pci.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +--- a/drivers/staging/comedi/drivers/jr3_pci.c ++++ b/drivers/staging/comedi/drivers/jr3_pci.c +@@ -54,6 +54,7 @@ Devices: [JR3] PCI force sensor board (j + + #define PCI_VENDOR_ID_JR3 0x1762 + #define PCI_DEVICE_ID_JR3_1_CHANNEL 0x3111 ++#define PCI_DEVICE_ID_JR3_1_CHANNEL_NEW 0x1111 + #define PCI_DEVICE_ID_JR3_2_CHANNEL 0x3112 + #define PCI_DEVICE_ID_JR3_3_CHANNEL 0x3113 + #define PCI_DEVICE_ID_JR3_4_CHANNEL 0x3114 +@@ -73,6 +74,8 @@ static DEFINE_PCI_DEVICE_TABLE(jr3_pci_p + { + PCI_VENDOR_ID_JR3, PCI_DEVICE_ID_JR3_1_CHANNEL, + PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, { ++ PCI_VENDOR_ID_JR3, PCI_DEVICE_ID_JR3_1_CHANNEL_NEW, ++ PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, { + PCI_VENDOR_ID_JR3, PCI_DEVICE_ID_JR3_2_CHANNEL, + PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, { + PCI_VENDOR_ID_JR3, PCI_DEVICE_ID_JR3_3_CHANNEL, +@@ -807,6 +810,10 @@ static int jr3_pci_attach(struct comedi_ + devpriv->n_channels = 1; + } + break; ++ case PCI_DEVICE_ID_JR3_1_CHANNEL_NEW:{ ++ devpriv->n_channels = 1; ++ } ++ break; + case PCI_DEVICE_ID_JR3_2_CHANNEL:{ + devpriv->n_channels = 2; + } diff --git a/queue-2.6.36/staging-comedi-ni_labpc-use-shared-irq-for-pcmcia-card.patch b/queue-2.6.36/staging-comedi-ni_labpc-use-shared-irq-for-pcmcia-card.patch new file mode 100644 index 00000000000..87951c8bf01 --- /dev/null +++ b/queue-2.6.36/staging-comedi-ni_labpc-use-shared-irq-for-pcmcia-card.patch @@ -0,0 +1,35 @@ +From d1ce318496f5943d2cc5e20171fc383a59a1421f Mon Sep 17 00:00:00 2001 +From: Ian Abbott +Date: Wed, 19 Jan 2011 11:48:44 +0000 +Subject: staging: comedi: ni_labpc: Use shared IRQ for PCMCIA card + +From: Ian Abbott + +commit d1ce318496f5943d2cc5e20171fc383a59a1421f upstream. + +The ni_labpc driver module only requests a shared IRQ for PCI devices, +requesting a non-shared IRQ for non-PCI devices. +As this module is also used by the ni_labpc_cs module for certain +National Instruments PCMCIA cards, it also needs to request a shared IRQ +for PCMCIA devices, otherwise you get a IRQ mismatch with the CardBus +controller. + +Signed-off-by: Ian Abbott +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/staging/comedi/drivers/ni_labpc.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- a/drivers/staging/comedi/drivers/ni_labpc.c ++++ b/drivers/staging/comedi/drivers/ni_labpc.c +@@ -572,7 +572,8 @@ int labpc_common_attach(struct comedi_de + /* grab our IRQ */ + if (irq) { + isr_flags = 0; +- if (thisboard->bustype == pci_bustype) ++ if (thisboard->bustype == pci_bustype ++ || thisboard->bustype == pcmcia_bustype) + isr_flags |= IRQF_SHARED; + if (request_irq(irq, labpc_interrupt, isr_flags, + driver_labpc.driver_name, dev)) { diff --git a/queue-2.6.36/staging-hv-enable-sending-garp-packet-after-live-migration.patch b/queue-2.6.36/staging-hv-enable-sending-garp-packet-after-live-migration.patch new file mode 100644 index 00000000000..9383e54edda --- /dev/null +++ b/queue-2.6.36/staging-hv-enable-sending-garp-packet-after-live-migration.patch @@ -0,0 +1,34 @@ +From 7c161d0b900ea9bd9fc5ea5d3fa9916e9eb0dd88 Mon Sep 17 00:00:00 2001 +From: Haiyang Zhang +Date: Wed, 2 Feb 2011 13:42:58 -0800 +Subject: staging: hv: Enable sending GARP packet after live migration + +From: Haiyang Zhang + +commit 7c161d0b900ea9bd9fc5ea5d3fa9916e9eb0dd88 upstream. + +The hv_netvsc gets RNDIS_STATUS_MEDIA_CONNECT event after the VM +is live migrated. Adding call to netif_notify_peers() for this event +to send GARP (Gratuitous ARP) to notify network peers. Otherwise, +the VM's network connection may stop after a live migration. + +This patch should also be applied to stable kernel 2.6.32 and later. + +Signed-off-by: Haiyang Zhang +Signed-off-by: Hank Janssen +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/staging/hv/netvsc_drv.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/drivers/staging/hv/netvsc_drv.c ++++ b/drivers/staging/hv/netvsc_drv.c +@@ -233,6 +233,7 @@ static void netvsc_linkstatus_callback(s + if (status == 1) { + netif_carrier_on(net); + netif_wake_queue(net); ++ netif_notify_peers(net); + } else { + netif_carrier_off(net); + netif_stop_queue(net); diff --git a/queue-2.6.36/staging-hv-fix-netvsc-sleeping-while-atomic.patch b/queue-2.6.36/staging-hv-fix-netvsc-sleeping-while-atomic.patch new file mode 100644 index 00000000000..61989e15daf --- /dev/null +++ b/queue-2.6.36/staging-hv-fix-netvsc-sleeping-while-atomic.patch @@ -0,0 +1,38 @@ +From d70c673153d42e8aefd5ac296c8159ef222d076b Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Timo=20Ter=C3=A4s?= +Date: Fri, 17 Dec 2010 11:40:24 +0200 +Subject: staging: hv: fix netvsc sleeping while atomic +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: =?UTF-8?q?Timo=20Ter=C3=A4s?= + +commit d70c673153d42e8aefd5ac296c8159ef222d076b upstream. + +The channel callbacks are called directly from vmbus_event_dpc +which runs in tasklet context. These callbacks need to use +GFP_ATOMIC. + +Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=16701 + +Cc: Hank Janssen +Cc: Haiyang Zhang +Signed-off-by: Timo Teräs +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/staging/hv/netvsc.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/staging/hv/netvsc.c ++++ b/drivers/staging/hv/netvsc.c +@@ -1250,7 +1250,7 @@ static void NetVscOnChannelCallback(void + /* ASSERT(device); */ + + packet = kzalloc(NETVSC_PACKET_SIZE * sizeof(unsigned char), +- GFP_KERNEL); ++ GFP_ATOMIC); + if (!packet) + return; + buffer = packet; diff --git a/queue-2.6.36/staging-hv-fix-sysfs-symlink-on-hv-block-device.patch b/queue-2.6.36/staging-hv-fix-sysfs-symlink-on-hv-block-device.patch new file mode 100644 index 00000000000..a3f76e1559f --- /dev/null +++ b/queue-2.6.36/staging-hv-fix-sysfs-symlink-on-hv-block-device.patch @@ -0,0 +1,32 @@ +From 268eff909afaca93188d2d14554cbf824f6a0e41 Mon Sep 17 00:00:00 2001 +From: Ky Srinivasan +Date: Thu, 16 Dec 2010 18:59:19 -0700 +Subject: Staging: hv: fix sysfs symlink on hv block device + +From: Ky Srinivasan + +commit 268eff909afaca93188d2d14554cbf824f6a0e41 upstream. + +The block device does not create the proper symlink in sysfs because we +forgot to set up the gendisk structure properly. This patch fixes the +issue. + +Signed-off-by: K. Y. Srinivasan +Cc: Hank Janssen +Cc: Haiyang Zhang +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/staging/hv/blkvsc_drv.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/drivers/staging/hv/blkvsc_drv.c ++++ b/drivers/staging/hv/blkvsc_drv.c +@@ -369,6 +369,7 @@ static int blkvsc_probe(struct device *d + blkdev->gd->first_minor = 0; + blkdev->gd->fops = &block_ops; + blkdev->gd->private_data = blkdev; ++ blkdev->gd->driverfs_dev = &(blkdev->device_ctx->device); + sprintf(blkdev->gd->disk_name, "hd%c", 'a' + devnum); + + blkvsc_do_inquiry(blkdev); diff --git a/queue-2.6.36/staging-rt2860-fix-incorrect-netif_stop_queue-usage-warning.patch b/queue-2.6.36/staging-rt2860-fix-incorrect-netif_stop_queue-usage-warning.patch new file mode 100644 index 00000000000..ac055478d4c --- /dev/null +++ b/queue-2.6.36/staging-rt2860-fix-incorrect-netif_stop_queue-usage-warning.patch @@ -0,0 +1,31 @@ +From 9c33008412683eba91bce2dc4575f28c728b6bd1 Mon Sep 17 00:00:00 2001 +From: Denis Kirjanov +Date: Mon, 10 Jan 2011 20:09:30 +0000 +Subject: staging: rt2860: Fix incorrect netif_stop_queue usage warning + +From: Denis Kirjanov + +commit 9c33008412683eba91bce2dc4575f28c728b6bd1 upstream. + +The TX queues are allocated inside register_netdev. +It doesn't make any sense to stop the queue before +allocation. + +Signed-off-by: Denis Kirjanov +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/staging/rt2860/rt_main_dev.c | 2 -- + 1 file changed, 2 deletions(-) + +--- a/drivers/staging/rt2860/rt_main_dev.c ++++ b/drivers/staging/rt2860/rt_main_dev.c +@@ -483,8 +483,6 @@ struct net_device *RtmpPhyNetDevInit(str + net_dev->ml_priv = (void *)pAd; + pAd->net_dev = net_dev; + +- netif_stop_queue(net_dev); +- + return net_dev; + + } diff --git a/queue-2.6.36/staging-rt2860-fix-previous-patch-error.patch b/queue-2.6.36/staging-rt2860-fix-previous-patch-error.patch new file mode 100644 index 00000000000..d5d7ed026f4 --- /dev/null +++ b/queue-2.6.36/staging-rt2860-fix-previous-patch-error.patch @@ -0,0 +1,31 @@ +From 1f0613158ea14b399fd7a16470630a729ba9d0c3 Mon Sep 17 00:00:00 2001 +From: Chen, Chien-Chia +Date: Thu, 9 Dec 2010 10:52:08 +0800 +Subject: Staging: rt2860: fix previous patch error + +From: Chen, Chien-Chia + +commit 1f0613158ea14b399fd7a16470630a729ba9d0c3 upstream. + +Somehow Greg messed up the last patch and missed a chunk. This patch +contains the missing chunk. + +Acked-by: Lee, Chun-Yi +Signed-off-by: Chen, Chien-Chia +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/staging/rt2860/chips/rt30xx.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/staging/rt2860/chips/rt30xx.c ++++ b/drivers/staging/rt2860/chips/rt30xx.c +@@ -441,7 +441,7 @@ void RT30xxReverseRFSleepModeSetup(struc + + /* VCO_IC, RF R7 register Bit 4 & Bit 5 to 1 */ + RT30xxReadRFRegister(pAd, RF_R07, &RFValue); +- RFValue |= 0x30; ++ RFValue |= 0x20; + RT30xxWriteRFRegister(pAd, RF_R07, RFValue); + + /* Idoh, RF R9 register Bit 1, Bit 2 & Bit 3 to 1 */ diff --git a/queue-2.6.36/staging-rt3090-fix-rt3090-scan-ap-function.patch b/queue-2.6.36/staging-rt3090-fix-rt3090-scan-ap-function.patch new file mode 100644 index 00000000000..3e4bf771b1a --- /dev/null +++ b/queue-2.6.36/staging-rt3090-fix-rt3090-scan-ap-function.patch @@ -0,0 +1,47 @@ +From 1226056d9608d241db4b558a0d88a347ad5c66ae Mon Sep 17 00:00:00 2001 +From: Chen, Chien-Chia +Date: Wed, 8 Dec 2010 14:20:33 -0800 +Subject: Staging: rt3090: Fix RT3090 scan AP function + +From: Chen, Chien-Chia + +commit 1226056d9608d241db4b558a0d88a347ad5c66ae upstream. + +Fix RT3090 scan AP function. + +This patch fixes the rt3090 wireless module failed +to scan AP around due to Windows driver causing +rt3090 module unable to scan AP in Linux. + +Acked-by: Lee, Chun-Yi +Signed-off-by: Chen, Chien-Chia +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/staging/rt2860/chips/rt3090.c | 3 ++- + drivers/staging/rt2860/chips/rt30xx.c | 2 +- + 2 files changed, 3 insertions(+), 2 deletions(-) + +--- a/drivers/staging/rt2860/chips/rt3090.c ++++ b/drivers/staging/rt2860/chips/rt3090.c +@@ -51,7 +51,8 @@ void NICInitRT3090RFRegisters(struct rt_ + if (IS_RT3090(pAd)) { + /* Init RF calibration */ + /* Driver should toggle RF R30 bit7 before init RF registers */ +- u32 RfReg = 0, data; ++ u8 RfReg; ++ u32 data; + + RT30xxReadRFRegister(pAd, RF_R30, (u8 *)&RfReg); + RfReg |= 0x80; +--- a/drivers/staging/rt2860/chips/rt30xx.c ++++ b/drivers/staging/rt2860/chips/rt30xx.c +@@ -53,7 +53,7 @@ struct rt_reg_pair RT30xx_RFRegTable[] = + , + {RF_R06, 0x02} + , +- {RF_R07, 0x70} ++ {RF_R07, 0x60} + , + {RF_R09, 0x0F} + , diff --git a/queue-2.6.36/staging-zram-fix-data-corruption-issue.patch b/queue-2.6.36/staging-zram-fix-data-corruption-issue.patch new file mode 100644 index 00000000000..1edc6fc3422 --- /dev/null +++ b/queue-2.6.36/staging-zram-fix-data-corruption-issue.patch @@ -0,0 +1,53 @@ +From 5414e557fca545614ceedc3d3496f747457e2e3b Mon Sep 17 00:00:00 2001 +From: Nitin Gupta +Date: Sat, 5 Feb 2011 20:34:20 -0500 +Subject: staging: zram: fix data corruption issue + +From: Nitin Gupta + +commit 5414e557fca545614ceedc3d3496f747457e2e3b upstream. + +In zram_read() and zram_write() we were not incrementing the +index number and thus were reading/writing values from/to +incorrect sectors on zram disk, resulting in data corruption. + +Signed-off-by: Nitin Gupta +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/staging/zram/zram_drv.c | 4 ++++ + 1 file changed, 4 insertions(+) + +--- a/drivers/staging/zram/zram_drv.c ++++ b/drivers/staging/zram/zram_drv.c +@@ -235,6 +235,7 @@ static int zram_read(struct zram *zram, + + if (zram_test_flag(zram, index, ZRAM_ZERO)) { + handle_zero_page(page); ++ index++; + continue; + } + +@@ -243,12 +244,14 @@ static int zram_read(struct zram *zram, + pr_debug("Read before write: sector=%lu, size=%u", + (ulong)(bio->bi_sector), bio->bi_size); + /* Do nothing */ ++ index++; + continue; + } + + /* Page is stored uncompressed since it's incompressible */ + if (unlikely(zram_test_flag(zram, index, ZRAM_UNCOMPRESSED))) { + handle_uncompressed_page(zram, page, index); ++ index++; + continue; + } + +@@ -324,6 +327,7 @@ static int zram_write(struct zram *zram, + mutex_unlock(&zram->lock); + zram_stat_inc(&zram->stats.pages_zero); + zram_set_flag(zram, index, ZRAM_ZERO); ++ index++; + continue; + } + diff --git a/queue-2.6.36/usb-adding-usb-support-for-cinterion-s-hc2x-eu3-and-ph8-products.patch b/queue-2.6.36/usb-adding-usb-support-for-cinterion-s-hc2x-eu3-and-ph8-products.patch new file mode 100644 index 00000000000..61c31c23fd6 --- /dev/null +++ b/queue-2.6.36/usb-adding-usb-support-for-cinterion-s-hc2x-eu3-and-ph8-products.patch @@ -0,0 +1,59 @@ +From aa52b3a92918039b273fc9d1994bd34227c40269 Mon Sep 17 00:00:00 2001 +From: Nicolaus Colberg +Date: Wed, 12 Jan 2011 16:30:03 +0100 +Subject: USB: adding USB support for Cinterion's HC2x, EU3 and PH8 products + +From: Nicolaus Colberg + +commit aa52b3a92918039b273fc9d1994bd34227c40269 upstream. + +/drivers/usb/serial/option.c: Adding support for Cinterion's HC25, HC28, +HC28J, EU3-E, EU3-P and PH8 by correcting/adding Cinterion's and +Siemens' Vendor IDs as well as Product IDs and USB_DEVICE tuples + +Signed-off-by: Nicolaus Colberg +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/serial/option.c | 23 +++++++++++++++++++++-- + 1 file changed, 21 insertions(+), 2 deletions(-) + +--- a/drivers/usb/serial/option.c ++++ b/drivers/usb/serial/option.c +@@ -382,7 +382,16 @@ static void option_instat_callback(struc + #define HAIER_VENDOR_ID 0x201e + #define HAIER_PRODUCT_CE100 0x2009 + +-#define CINTERION_VENDOR_ID 0x0681 ++/* Cinterion (formerly Siemens) products */ ++#define SIEMENS_VENDOR_ID 0x0681 ++#define CINTERION_VENDOR_ID 0x1e2d ++#define CINTERION_PRODUCT_HC25_MDM 0x0047 ++#define CINTERION_PRODUCT_HC25_MDMNET 0x0040 ++#define CINTERION_PRODUCT_HC28_MDM 0x004C ++#define CINTERION_PRODUCT_HC28_MDMNET 0x004A /* same for HC28J */ ++#define CINTERION_PRODUCT_EU3_E 0x0051 ++#define CINTERION_PRODUCT_EU3_P 0x0052 ++#define CINTERION_PRODUCT_PH8 0x0053 + + /* Olivetti products */ + #define OLIVETTI_VENDOR_ID 0x0b3c +@@ -939,7 +948,17 @@ static const struct usb_device_id option + { USB_DEVICE(PIRELLI_VENDOR_ID, PIRELLI_PRODUCT_100F) }, + { USB_DEVICE(PIRELLI_VENDOR_ID, PIRELLI_PRODUCT_1011)}, + { USB_DEVICE(PIRELLI_VENDOR_ID, PIRELLI_PRODUCT_1012)}, +- { USB_DEVICE(CINTERION_VENDOR_ID, 0x0047) }, ++ /* Cinterion */ ++ { USB_DEVICE(CINTERION_VENDOR_ID, CINTERION_PRODUCT_EU3_E) }, ++ { USB_DEVICE(CINTERION_VENDOR_ID, CINTERION_PRODUCT_EU3_P) }, ++ { USB_DEVICE(CINTERION_VENDOR_ID, CINTERION_PRODUCT_PH8) }, ++ { USB_DEVICE(CINTERION_VENDOR_ID, CINTERION_PRODUCT_HC28_MDM) }, ++ { USB_DEVICE(CINTERION_VENDOR_ID, CINTERION_PRODUCT_HC28_MDMNET) }, ++ { USB_DEVICE(SIEMENS_VENDOR_ID, CINTERION_PRODUCT_HC25_MDM) }, ++ { USB_DEVICE(SIEMENS_VENDOR_ID, CINTERION_PRODUCT_HC25_MDMNET) }, ++ { USB_DEVICE(SIEMENS_VENDOR_ID, CINTERION_PRODUCT_HC28_MDM) }, /* HC28 enumerates with Siemens or Cinterion VID depending on FW revision */ ++ { USB_DEVICE(SIEMENS_VENDOR_ID, CINTERION_PRODUCT_HC28_MDMNET) }, ++ + { USB_DEVICE(OLIVETTI_VENDOR_ID, OLIVETTI_PRODUCT_OLICARD100) }, + { USB_DEVICE(CELOT_VENDOR_ID, CELOT_PRODUCT_CT680M) }, /* CT-650 CDMA 450 1xEVDO modem */ + { } /* Terminating entry */ diff --git a/queue-2.6.36/usb-cdc-acm-adding-second-acm-channel-support-for-nokia-n8.patch b/queue-2.6.36/usb-cdc-acm-adding-second-acm-channel-support-for-nokia-n8.patch new file mode 100644 index 00000000000..de409700ce0 --- /dev/null +++ b/queue-2.6.36/usb-cdc-acm-adding-second-acm-channel-support-for-nokia-n8.patch @@ -0,0 +1,32 @@ +From 721d92fc6373dee15846216f9d178ec240ec0fd7 Mon Sep 17 00:00:00 2001 +From: Arvid Ephraim Picciani +Date: Tue, 25 Jan 2011 15:58:40 +0100 +Subject: USB: cdc-acm: Adding second ACM channel support for Nokia N8 + +From: Arvid Ephraim Picciani + +commit 721d92fc6373dee15846216f9d178ec240ec0fd7 upstream. + +This adds the N8 to the list of devices in cdc-acm, in order to get the +secondary ACM device exposed. + +In the spirit of: +http://kerneltrap.org/mailarchive/linux-usb/2010/9/4/6264554 + +Signed-off-by: Arvid Ephraim Picciani +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/class/cdc-acm.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/drivers/usb/class/cdc-acm.c ++++ b/drivers/usb/class/cdc-acm.c +@@ -1607,6 +1607,7 @@ static const struct usb_device_id acm_id + { NOKIA_PCSUITE_ACM_INFO(0x0154), }, /* Nokia 5800 XpressMusic */ + { NOKIA_PCSUITE_ACM_INFO(0x04ce), }, /* Nokia E90 */ + { NOKIA_PCSUITE_ACM_INFO(0x01d4), }, /* Nokia E55 */ ++ { NOKIA_PCSUITE_ACM_INFO(0x0302), }, /* Nokia N8 */ + { SAMSUNG_PCSUITE_ACM_INFO(0x6651), }, /* Samsung GTi8510 (INNOV8) */ + + /* NOTE: non-Nokia COMM/ACM/0xff is likely MSFT RNDIS... NOT a modem! */ diff --git a/queue-2.6.36/usb-ehci-aspm-quirk-of-isoc-on-amd-hudson.patch b/queue-2.6.36/usb-ehci-aspm-quirk-of-isoc-on-amd-hudson.patch new file mode 100644 index 00000000000..7a008d8f2ed --- /dev/null +++ b/queue-2.6.36/usb-ehci-aspm-quirk-of-isoc-on-amd-hudson.patch @@ -0,0 +1,77 @@ +From baab93afc2844b68d57b0dcca5e1d34c5d7cf411 Mon Sep 17 00:00:00 2001 +From: Alex He +Date: Tue, 21 Dec 2010 17:45:46 +0800 +Subject: USB: EHCI: ASPM quirk of ISOC on AMD Hudson + +From: Alex He + +commit baab93afc2844b68d57b0dcca5e1d34c5d7cf411 upstream. + +AMD Hudson also needs the same ASPM quirk as SB800 + +Signed-off-by: Alex He +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/host/ehci-pci.c | 33 ++++++++++++++++++++------------- + 1 file changed, 20 insertions(+), 13 deletions(-) + +--- a/drivers/usb/host/ehci-pci.c ++++ b/drivers/usb/host/ehci-pci.c +@@ -41,28 +41,35 @@ static int ehci_pci_reinit(struct ehci_h + return 0; + } + +-static int ehci_quirk_amd_SB800(struct ehci_hcd *ehci) ++static int ehci_quirk_amd_hudson(struct ehci_hcd *ehci) + { + struct pci_dev *amd_smbus_dev; + u8 rev = 0; + + amd_smbus_dev = pci_get_device(PCI_VENDOR_ID_ATI, 0x4385, NULL); +- if (!amd_smbus_dev) +- return 0; +- +- pci_read_config_byte(amd_smbus_dev, PCI_REVISION_ID, &rev); +- if (rev < 0x40) { +- pci_dev_put(amd_smbus_dev); +- amd_smbus_dev = NULL; +- return 0; ++ if (amd_smbus_dev) { ++ pci_read_config_byte(amd_smbus_dev, PCI_REVISION_ID, &rev); ++ if (rev < 0x40) { ++ pci_dev_put(amd_smbus_dev); ++ amd_smbus_dev = NULL; ++ return 0; ++ } ++ } else { ++ amd_smbus_dev = pci_get_device(PCI_VENDOR_ID_AMD, 0x780b, NULL); ++ if (!amd_smbus_dev) ++ return 0; ++ pci_read_config_byte(amd_smbus_dev, PCI_REVISION_ID, &rev); ++ if (rev < 0x11 || rev > 0x18) { ++ pci_dev_put(amd_smbus_dev); ++ amd_smbus_dev = NULL; ++ return 0; ++ } + } + + if (!amd_nb_dev) + amd_nb_dev = pci_get_device(PCI_VENDOR_ID_AMD, 0x1510, NULL); +- if (!amd_nb_dev) +- ehci_err(ehci, "QUIRK: unable to get AMD NB device\n"); + +- ehci_info(ehci, "QUIRK: Enable AMD SB800 L1 fix\n"); ++ ehci_info(ehci, "QUIRK: Enable exception for AMD Hudson ASPM\n"); + + pci_dev_put(amd_smbus_dev); + amd_smbus_dev = NULL; +@@ -128,7 +135,7 @@ static int ehci_pci_setup(struct usb_hcd + /* cache this readonly data; minimize chip reads */ + ehci->hcs_params = ehci_readl(ehci, &ehci->caps->hcs_params); + +- if (ehci_quirk_amd_SB800(ehci)) ++ if (ehci_quirk_amd_hudson(ehci)) + ehci->amd_l1_fix = 1; + + retval = ehci_halt(ehci); diff --git a/queue-2.6.36/usb-ehci-fix-dma-deallocation-bug.patch b/queue-2.6.36/usb-ehci-fix-dma-deallocation-bug.patch new file mode 100644 index 00000000000..0cc5b4c29da --- /dev/null +++ b/queue-2.6.36/usb-ehci-fix-dma-deallocation-bug.patch @@ -0,0 +1,71 @@ +From f75593ceaa08e6d27aec1a5de31cded19e850dd1 Mon Sep 17 00:00:00 2001 +From: Alan Stern +Date: Thu, 6 Jan 2011 10:17:09 -0500 +Subject: USB: EHCI: fix DMA deallocation bug + +From: Alan Stern + +commit f75593ceaa08e6d27aec1a5de31cded19e850dd1 upstream. + +This patch (as1440) fixes a bug in ehci-hcd. ehci->periodic_size is +used to compute the size in a dma_alloc_coherent() call, but then it +gets changed later on. As a result, the corresponding call to +dma_free_coherent() passes a different size from the original +allocation. Fix the problem by adjusting ehci->periodic_size before +carrying out any of the memory allocations. + +Signed-off-by: Alan Stern +Tested-by: Larry Finger +CC: David Brownell +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/host/ehci-hcd.c | 19 ++++++++++++------- + 1 file changed, 12 insertions(+), 7 deletions(-) + +--- a/drivers/usb/host/ehci-hcd.c ++++ b/drivers/usb/host/ehci-hcd.c +@@ -557,6 +557,8 @@ static int ehci_init(struct usb_hcd *hcd + ehci->iaa_watchdog.function = ehci_iaa_watchdog; + ehci->iaa_watchdog.data = (unsigned long) ehci; + ++ hcc_params = ehci_readl(ehci, &ehci->caps->hcc_params); ++ + /* + * hw default: 1K periodic list heads, one per frame. + * periodic_size can shrink by USBCMD update if hcc_params allows. +@@ -564,11 +566,20 @@ static int ehci_init(struct usb_hcd *hcd + ehci->periodic_size = DEFAULT_I_TDPS; + INIT_LIST_HEAD(&ehci->cached_itd_list); + INIT_LIST_HEAD(&ehci->cached_sitd_list); ++ ++ if (HCC_PGM_FRAMELISTLEN(hcc_params)) { ++ /* periodic schedule size can be smaller than default */ ++ switch (EHCI_TUNE_FLS) { ++ case 0: ehci->periodic_size = 1024; break; ++ case 1: ehci->periodic_size = 512; break; ++ case 2: ehci->periodic_size = 256; break; ++ default: BUG(); ++ } ++ } + if ((retval = ehci_mem_init(ehci, GFP_KERNEL)) < 0) + return retval; + + /* controllers may cache some of the periodic schedule ... */ +- hcc_params = ehci_readl(ehci, &ehci->caps->hcc_params); + if (HCC_ISOC_CACHE(hcc_params)) // full frame cache + ehci->i_thresh = 2 + 8; + else // N microframes cached +@@ -622,12 +633,6 @@ static int ehci_init(struct usb_hcd *hcd + /* periodic schedule size can be smaller than default */ + temp &= ~(3 << 2); + temp |= (EHCI_TUNE_FLS << 2); +- switch (EHCI_TUNE_FLS) { +- case 0: ehci->periodic_size = 1024; break; +- case 1: ehci->periodic_size = 512; break; +- case 2: ehci->periodic_size = 256; break; +- default: BUG(); +- } + } + if (HCC_LPM(hcc_params)) { + /* support link power management EHCI 1.1 addendum */ diff --git a/queue-2.6.36/usb-ehci-fix-scheduling-while-atomic-during-suspend.patch b/queue-2.6.36/usb-ehci-fix-scheduling-while-atomic-during-suspend.patch new file mode 100644 index 00000000000..32e642502cb --- /dev/null +++ b/queue-2.6.36/usb-ehci-fix-scheduling-while-atomic-during-suspend.patch @@ -0,0 +1,126 @@ +From 148fc55fd0449683a1d15bf219ad8d8b6fa17545 Mon Sep 17 00:00:00 2001 +From: Yin Kangkai +Date: Fri, 28 Jan 2011 12:04:35 +0800 +Subject: USB: EHCI: fix scheduling while atomic during suspend + +From: Yin Kangkai + +commit 148fc55fd0449683a1d15bf219ad8d8b6fa17545 upstream. + +There is a msleep with spin lock held during ehci pci suspend, which will +cause kernel BUG: scheduling while atomic. Fix that. + +[ 184.139620] BUG: scheduling while atomic: kworker/u:11/416/0x00000002 +[ 184.139632] 4 locks held by kworker/u:11/416: +[ 184.139640] #0: (events_unbound){+.+.+.}, at: [] process_one_work+0x1b3/0x4cb +[ 184.139669] #1: ((&entry->work)){+.+.+.}, at: [] process_one_work+0x1b3/0x4cb +[ 184.139686] #2: (&__lockdep_no_validate__){+.+.+.}, at: [] __device_suspend+0x2c/0x154 +[ 184.139706] #3: (&(&ehci->lock)->rlock){-.-...}, at: [] ehci_pci_suspend+0x35/0x7b +[ 184.139725] Modules linked in: serio_raw pegasus joydev mrst_gfx(C) battery +[ 184.139748] irq event stamp: 52 +[ 184.139753] hardirqs last enabled at (51): [] mutex_lock_nested+0x258/0x293 +[ 184.139766] hardirqs last disabled at (52): [] _raw_spin_lock_irqsave+0xf/0x3e +[ 184.139777] softirqs last enabled at (0): [] copy_process+0x3d2/0x109d +[ 184.139789] softirqs last disabled at (0): [< (null)>] (null) +[ 184.139802] Pid: 416, comm: kworker/u:11 Tainted: G C 2.6.37-6.3-adaptation-oaktrail #37 +[ 184.139809] Call Trace: +[ 184.139820] [] __schedule_bug+0x5e/0x65 +[ 184.139829] [] schedule+0xac/0xc4c +[ 184.139840] [] ? string+0x37/0x8b +[ 184.139853] [] ? lock_timer_base+0x1f/0x3e +[ 184.139863] [] ? _raw_spin_lock_irqsave+0x35/0x3e +[ 184.139876] [] ? trace_hardirqs_off+0xb/0xd +[ 184.139885] [] schedule_timeout+0x283/0x2d9 +[ 184.139896] [] ? process_timeout+0x0/0xa +[ 184.139906] [] schedule_timeout_uninterruptible+0x15/0x17 +[ 184.139916] [] msleep+0x10/0x16 +[ 184.139926] [] ehci_adjust_port_wakeup_flags+0x69/0xf6 +[ 184.139937] [] ehci_pci_suspend+0x48/0x7b +[ 184.139946] [] suspend_common+0x52/0xbb +[ 184.139956] [] hcd_pci_suspend+0x26/0x28 +[ 184.139967] [] pci_pm_suspend+0x5f/0xd0 +[ 184.139976] [] pm_op+0x5d/0xf0 +[ 184.139986] [] __device_suspend+0xf5/0x154 +[ 184.139996] [] async_suspend+0x16/0x3a +[ 184.140006] [] async_run_entry_fn+0x89/0x111 +[ 184.140016] [] process_one_work+0x295/0x4cb +[ 184.140026] [] ? async_run_entry_fn+0x0/0x111 +[ 184.140036] [] worker_thread+0x17f/0x298 +[ 184.140045] [] ? worker_thread+0x0/0x298 +[ 184.140055] [] kthread+0x64/0x69 +[ 184.140064] [] ? kthread+0x0/0x69 +[ 184.140075] [] kernel_thread_helper+0x6/0x1a + +Signed-off-by: Yin Kangkai +Acked-by: Alan Stern +CC: David Brownell +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/host/ehci-au1xxx.c | 2 +- + drivers/usb/host/ehci-hub.c | 7 +++++++ + drivers/usb/host/ehci-pci.c | 2 +- + 3 files changed, 9 insertions(+), 2 deletions(-) + +--- a/drivers/usb/host/ehci-au1xxx.c ++++ b/drivers/usb/host/ehci-au1xxx.c +@@ -227,8 +227,8 @@ static int ehci_hcd_au1xxx_drv_suspend(s + * mark HW unaccessible. The PM and USB cores make sure that + * the root hub is either suspended or stopped. + */ +- spin_lock_irqsave(&ehci->lock, flags); + ehci_prepare_ports_for_controller_suspend(ehci, device_may_wakeup(dev)); ++ spin_lock_irqsave(&ehci->lock, flags); + ehci_writel(ehci, 0, &ehci->regs->intr_enable); + (void)ehci_readl(ehci, &ehci->regs->intr_enable); + +--- a/drivers/usb/host/ehci-hub.c ++++ b/drivers/usb/host/ehci-hub.c +@@ -111,6 +111,7 @@ static void ehci_adjust_port_wakeup_flag + { + int port; + u32 temp; ++ unsigned long flags; + + /* If remote wakeup is enabled for the root hub but disabled + * for the controller, we must adjust all the port wakeup flags +@@ -120,6 +121,8 @@ static void ehci_adjust_port_wakeup_flag + if (!ehci_to_hcd(ehci)->self.root_hub->do_remote_wakeup || do_wakeup) + return; + ++ spin_lock_irqsave(&ehci->lock, flags); ++ + /* clear phy low-power mode before changing wakeup flags */ + if (ehci->has_hostpc) { + port = HCS_N_PORTS(ehci->hcs_params); +@@ -131,7 +134,9 @@ static void ehci_adjust_port_wakeup_flag + temp = ehci_readl(ehci, hostpc_reg); + ehci_writel(ehci, temp & ~HOSTPC_PHCD, hostpc_reg); + } ++ spin_unlock_irqrestore(&ehci->lock, flags); + msleep(5); ++ spin_lock_irqsave(&ehci->lock, flags); + } + + port = HCS_N_PORTS(ehci->hcs_params); +@@ -170,6 +175,8 @@ static void ehci_adjust_port_wakeup_flag + /* Does the root hub have a port wakeup pending? */ + if (!suspending && (ehci_readl(ehci, &ehci->regs->status) & STS_PCD)) + usb_hcd_resume_root_hub(ehci_to_hcd(ehci)); ++ ++ spin_unlock_irqrestore(&ehci->lock, flags); + } + + static int ehci_bus_suspend (struct usb_hcd *hcd) +--- a/drivers/usb/host/ehci-pci.c ++++ b/drivers/usb/host/ehci-pci.c +@@ -347,8 +347,8 @@ static int ehci_pci_suspend(struct usb_h + * mark HW unaccessible. The PM and USB cores make sure that + * the root hub is either suspended or stopped. + */ +- spin_lock_irqsave (&ehci->lock, flags); + ehci_prepare_ports_for_controller_suspend(ehci, do_wakeup); ++ spin_lock_irqsave (&ehci->lock, flags); + ehci_writel(ehci, 0, &ehci->regs->intr_enable); + (void)ehci_readl(ehci, &ehci->regs->intr_enable); + diff --git a/queue-2.6.36/usb-fix-race-between-root-hub-resume-and-wakeup-requests.patch b/queue-2.6.36/usb-fix-race-between-root-hub-resume-and-wakeup-requests.patch new file mode 100644 index 00000000000..38f0141dbf0 --- /dev/null +++ b/queue-2.6.36/usb-fix-race-between-root-hub-resume-and-wakeup-requests.patch @@ -0,0 +1,48 @@ +From bf3d7d40e42a85ca73a34e1385ff34f092a384eb Mon Sep 17 00:00:00 2001 +From: Alan Stern +Date: Wed, 2 Feb 2011 13:59:33 -0500 +Subject: USB: fix race between root-hub resume and wakeup requests + +From: Alan Stern + +commit bf3d7d40e42a85ca73a34e1385ff34f092a384eb upstream. + +The USB core keeps track of pending resume requests for root hubs, in +order to resolve races between wakeup requests and suspends. However +the code that does this is subject to another race (between wakeup +requests and resumes) because the WAKEUP_PENDING flag is cleared +before the resume occurs, leaving a window in which another wakeup +request might arrive. + +This patch (as1447) fixes the problem by clearing the WAKEUP_PENDING +flag after the resume instead of before it. + +This fixes Bugzilla #24952. + +Signed-off-by: Alan Stern +Tested-by: Paul Bender +Tested-by: warpme +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/core/hcd.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/usb/core/hcd.c ++++ b/drivers/usb/core/hcd.c +@@ -1945,7 +1945,6 @@ int hcd_bus_resume(struct usb_device *rh + + dev_dbg(&rhdev->dev, "usb %s%s\n", + (msg.event & PM_EVENT_AUTO ? "auto-" : ""), "resume"); +- clear_bit(HCD_FLAG_WAKEUP_PENDING, &hcd->flags); + if (!hcd->driver->bus_resume) + return -ENOENT; + if (hcd->state == HC_STATE_RUNNING) +@@ -1953,6 +1952,7 @@ int hcd_bus_resume(struct usb_device *rh + + hcd->state = HC_STATE_RESUMING; + status = hcd->driver->bus_resume(hcd); ++ clear_bit(HCD_FLAG_WAKEUP_PENDING, &hcd->flags); + if (status == 0) { + /* TRSMRCY = 10 msec */ + msleep(10); diff --git a/queue-2.6.36/usb-ftdi_sio-add-st-micro-connect-lite-uart-support.patch b/queue-2.6.36/usb-ftdi_sio-add-st-micro-connect-lite-uart-support.patch new file mode 100644 index 00000000000..2562a527364 --- /dev/null +++ b/queue-2.6.36/usb-ftdi_sio-add-st-micro-connect-lite-uart-support.patch @@ -0,0 +1,93 @@ +From 6ec2f46c4b4abf48c88c0ae7c476f347b97e1105 Mon Sep 17 00:00:00 2001 +From: Jean-Christophe PLAGNIOL-VILLARD +Date: Sat, 29 Jan 2011 15:32:52 +0100 +Subject: USB: ftdi_sio: add ST Micro Connect Lite uart support + +From: Jean-Christophe PLAGNIOL-VILLARD + +commit 6ec2f46c4b4abf48c88c0ae7c476f347b97e1105 upstream. + +on ST Micro Connect Lite we have 4 port +Part A and B for the JTAG +Port C Uart +Port D for PIO + +Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/serial/ftdi_sio.c | 26 ++++++++++++++++++++++++++ + drivers/usb/serial/ftdi_sio_ids.h | 6 ++++++ + 2 files changed, 32 insertions(+) + +--- a/drivers/usb/serial/ftdi_sio.c ++++ b/drivers/usb/serial/ftdi_sio.c +@@ -99,6 +99,7 @@ struct ftdi_sio_quirk { + static int ftdi_jtag_probe(struct usb_serial *serial); + static int ftdi_mtxorb_hack_setup(struct usb_serial *serial); + static int ftdi_NDI_device_setup(struct usb_serial *serial); ++static int ftdi_stmclite_probe(struct usb_serial *serial); + static void ftdi_USB_UIRT_setup(struct ftdi_private *priv); + static void ftdi_HE_TIRA1_setup(struct ftdi_private *priv); + +@@ -122,6 +123,10 @@ static struct ftdi_sio_quirk ftdi_HE_TIR + .port_probe = ftdi_HE_TIRA1_setup, + }; + ++static struct ftdi_sio_quirk ftdi_stmclite_quirk = { ++ .probe = ftdi_stmclite_probe, ++}; ++ + /* + * The 8U232AM has the same API as the sio except for: + * - it can support MUCH higher baudrates; up to: +@@ -809,6 +814,8 @@ static struct usb_device_id id_table_com + { USB_DEVICE(FTDI_VID, FTDI_DOTEC_PID) }, + { USB_DEVICE(QIHARDWARE_VID, MILKYMISTONE_JTAGSERIAL_PID), + .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk }, ++ { USB_DEVICE(ST_VID, ST_STMCLT1030_PID), ++ .driver_info = (kernel_ulong_t)&ftdi_stmclite_quirk }, + { }, /* Optional parameter entry */ + { } /* Terminating entry */ + }; +@@ -1690,6 +1697,25 @@ static int ftdi_jtag_probe(struct usb_se + } + + /* ++ * First and second port on STMCLiteadaptors is reserved for JTAG interface ++ * and the forth port for pio ++ */ ++static int ftdi_stmclite_probe(struct usb_serial *serial) ++{ ++ struct usb_device *udev = serial->dev; ++ struct usb_interface *interface = serial->interface; ++ ++ dbg("%s", __func__); ++ ++ if (interface == udev->actconfig->interface[2]) ++ return 0; ++ ++ dev_info(&udev->dev, "Ignoring serial port reserved for JTAG\n"); ++ ++ return -ENODEV; ++} ++ ++/* + * The Matrix Orbital VK204-25-USB has an invalid IN endpoint. + * We have to correct it if we want to read from it. + */ +--- a/drivers/usb/serial/ftdi_sio_ids.h ++++ b/drivers/usb/serial/ftdi_sio_ids.h +@@ -1034,6 +1034,12 @@ + #define WHT_PID 0x0004 /* Wireless Handheld Terminal */ + + /* ++ * STMicroelectonics ++ */ ++#define ST_VID 0x0483 ++#define ST_STMCLT1030_PID 0x3747 /* ST Micro Connect Lite STMCLT1030 */ ++ ++/* + * Papouch products (http://www.papouch.com/) + * Submitted by Folkert van Heusden + */ diff --git a/queue-2.6.36/usb-ftdi_sio-add-vid-0x0647-pid-0x0100-for-acton-research-spectrograph.patch b/queue-2.6.36/usb-ftdi_sio-add-vid-0x0647-pid-0x0100-for-acton-research-spectrograph.patch new file mode 100644 index 00000000000..2b892b060f5 --- /dev/null +++ b/queue-2.6.36/usb-ftdi_sio-add-vid-0x0647-pid-0x0100-for-acton-research-spectrograph.patch @@ -0,0 +1,45 @@ +From 28fe2eb0162a1d23370dd99ff7d0e35632b1ee91 Mon Sep 17 00:00:00 2001 +From: Michael Williamson +Date: Thu, 27 Jan 2011 18:36:19 -0600 +Subject: USB: ftdi_sio: Add VID=0x0647, PID=0x0100 for Acton Research spectrograph + +From: Michael Williamson + +commit 28fe2eb0162a1d23370dd99ff7d0e35632b1ee91 upstream. + +Add the USB Vendor ID and Product ID for a Acton Research Corp. +spectrograph device with a FTDI chip for serial I/O. + +Signed-off-by: Michael H Williamson +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/serial/ftdi_sio.c | 1 + + drivers/usb/serial/ftdi_sio_ids.h | 6 ++++++ + 2 files changed, 7 insertions(+) + +--- a/drivers/usb/serial/ftdi_sio.c ++++ b/drivers/usb/serial/ftdi_sio.c +@@ -620,6 +620,7 @@ static struct usb_device_id id_table_com + { USB_DEVICE(FTDI_VID, FTDI_OCEANIC_PID) }, + { USB_DEVICE(TTI_VID, TTI_QL355P_PID) }, + { USB_DEVICE(FTDI_VID, FTDI_RM_CANVIEW_PID) }, ++ { USB_DEVICE(ACTON_VID, ACTON_SPECTRAPRO_PID) }, + { USB_DEVICE(CONTEC_VID, CONTEC_COM1USBH_PID) }, + { USB_DEVICE(BANDB_VID, BANDB_USOTL4_PID) }, + { USB_DEVICE(BANDB_VID, BANDB_USTL4_PID) }, +--- a/drivers/usb/serial/ftdi_sio_ids.h ++++ b/drivers/usb/serial/ftdi_sio_ids.h +@@ -518,6 +518,12 @@ + #define RATOC_PRODUCT_ID_USB60F 0xb020 + + /* ++ * Acton Research Corp. ++ */ ++#define ACTON_VID 0x0647 /* Vendor ID */ ++#define ACTON_SPECTRAPRO_PID 0x0100 ++ ++/* + * Contec products (http://www.contec.com) + * Submitted by Daniel Sangorrin + */ diff --git a/queue-2.6.36/usb-g_printer-fix-bug-in-module-parameter-definitions.patch b/queue-2.6.36/usb-g_printer-fix-bug-in-module-parameter-definitions.patch new file mode 100644 index 00000000000..2e85221e4e3 --- /dev/null +++ b/queue-2.6.36/usb-g_printer-fix-bug-in-module-parameter-definitions.patch @@ -0,0 +1,69 @@ +From ad84e4a9efb7c8ed322bafb6ebdb9c3a49a3d3a8 Mon Sep 17 00:00:00 2001 +From: Alan Stern +Date: Mon, 10 Jan 2011 11:24:14 -0500 +Subject: USB: g_printer: fix bug in module parameter definitions + +From: Alan Stern + +commit ad84e4a9efb7c8ed322bafb6ebdb9c3a49a3d3a8 upstream. + +This patch (as1442) fixes a bug in g_printer: Module parameters should +not be marked "__initdata" if they are accessible in sysfs (i.e., if +the mode value in the module_param() macro is nonzero). Otherwise +attempts to access the parameters will cause addressing violations. + +Character-string module parameters must not be marked "__initdata" +if the module can be unloaded, because the kernel needs to access the +parameter variable at unload time in order to free the +dynamically-allocated string. + +Signed-off-by: Alan Stern +CC: Roland Kletzing +CC: Craig W. Nadler +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/gadget/printer.c | 14 +++++++------- + 1 file changed, 7 insertions(+), 7 deletions(-) + +--- a/drivers/usb/gadget/printer.c ++++ b/drivers/usb/gadget/printer.c +@@ -131,31 +131,31 @@ static struct printer_dev usb_printer_ga + * parameters are in UTF-8 (superset of ASCII's 7 bit characters). + */ + +-static ushort __initdata idVendor; ++static ushort idVendor; + module_param(idVendor, ushort, S_IRUGO); + MODULE_PARM_DESC(idVendor, "USB Vendor ID"); + +-static ushort __initdata idProduct; ++static ushort idProduct; + module_param(idProduct, ushort, S_IRUGO); + MODULE_PARM_DESC(idProduct, "USB Product ID"); + +-static ushort __initdata bcdDevice; ++static ushort bcdDevice; + module_param(bcdDevice, ushort, S_IRUGO); + MODULE_PARM_DESC(bcdDevice, "USB Device version (BCD)"); + +-static char *__initdata iManufacturer; ++static char *iManufacturer; + module_param(iManufacturer, charp, S_IRUGO); + MODULE_PARM_DESC(iManufacturer, "USB Manufacturer string"); + +-static char *__initdata iProduct; ++static char *iProduct; + module_param(iProduct, charp, S_IRUGO); + MODULE_PARM_DESC(iProduct, "USB Product string"); + +-static char *__initdata iSerialNum; ++static char *iSerialNum; + module_param(iSerialNum, charp, S_IRUGO); + MODULE_PARM_DESC(iSerialNum, "1"); + +-static char *__initdata iPNPstring; ++static char *iPNPstring; + module_param(iPNPstring, charp, S_IRUGO); + MODULE_PARM_DESC(iPNPstring, "MFG:linux;MDL:g_printer;CLS:PRINTER;SN:1;"); + diff --git a/queue-2.6.36/usb-g_printer-fix-bug-in-unregistration.patch b/queue-2.6.36/usb-g_printer-fix-bug-in-unregistration.patch new file mode 100644 index 00000000000..f958f321d88 --- /dev/null +++ b/queue-2.6.36/usb-g_printer-fix-bug-in-unregistration.patch @@ -0,0 +1,44 @@ +From d5aa475180d03d45c5dc6134aa833f1b3e89c45e Mon Sep 17 00:00:00 2001 +From: Alan Stern +Date: Mon, 10 Jan 2011 11:23:05 -0500 +Subject: USB: g_printer: fix bug in unregistration + +From: Alan Stern + +commit d5aa475180d03d45c5dc6134aa833f1b3e89c45e upstream. + +This patch (as1441) fixes a bug in g_printer. The gadget driver, char +device number, and class device should be unregistered in reverse +order of registration. As it is now, when the module is unloaded the +class device gets unregistered first, causing a crash when the unbind +method tries to access it. + +This fixes Bugzilla #25882. + +Signed-off-by: Alan Stern +CC: Roland Kletzing +CC: Craig W. Nadler +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/gadget/printer.c | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +--- a/drivers/usb/gadget/printer.c ++++ b/drivers/usb/gadget/printer.c +@@ -1596,13 +1596,12 @@ cleanup(void) + int status; + + mutex_lock(&usb_printer_gadget.lock_printer_io); +- class_destroy(usb_gadget_class); +- unregister_chrdev_region(g_printer_devno, 2); +- + status = usb_gadget_unregister_driver(&printer_driver); + if (status) + ERROR(dev, "usb_gadget_unregister_driver %x\n", status); + ++ unregister_chrdev_region(g_printer_devno, 2); ++ class_destroy(usb_gadget_class); + mutex_unlock(&usb_printer_gadget.lock_printer_io); + } + module_exit(cleanup); diff --git a/queue-2.6.36/usb-io_edgeport-fix-the-reported-firmware-major-and-minor.patch b/queue-2.6.36/usb-io_edgeport-fix-the-reported-firmware-major-and-minor.patch new file mode 100644 index 00000000000..d7f18023cc6 --- /dev/null +++ b/queue-2.6.36/usb-io_edgeport-fix-the-reported-firmware-major-and-minor.patch @@ -0,0 +1,45 @@ +From 271c1150b4f8e1685e5a8cbf76e329ec894481da Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Bj=C3=B8rn=20Mork?= +Date: Mon, 17 Jan 2011 14:19:37 +0100 +Subject: USB: io_edgeport: fix the reported firmware major and minor +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Bjørn Mork + +commit 271c1150b4f8e1685e5a8cbf76e329ec894481da upstream. + +The major and minor number saved in the product_info structure +were copied from the address instead of the data, causing an +inconsistency in the reported versions during firmware loading: + + usb 4-1: firmware: requesting edgeport/down.fw + /usr/src/linux/drivers/usb/serial/io_edgeport.c: downloading firmware version (930) 1.16.4 + [..] + /usr/src/linux/drivers/usb/serial/io_edgeport.c: edge_startup - time 3 4328191260 + /usr/src/linux/drivers/usb/serial/io_edgeport.c: FirmwareMajorVersion 0.0.4 + +This can cause some confusion whether firmware loaded successfully +or not. + +Signed-off-by: Bjørn Mork +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/serial/io_edgeport.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/drivers/usb/serial/io_edgeport.c ++++ b/drivers/usb/serial/io_edgeport.c +@@ -2894,8 +2894,8 @@ static void load_application_firmware(st + + dbg("%s %d.%d.%d", fw_info, rec->data[0], rec->data[1], build); + +- edge_serial->product_info.FirmwareMajorVersion = fw->data[0]; +- edge_serial->product_info.FirmwareMinorVersion = fw->data[1]; ++ edge_serial->product_info.FirmwareMajorVersion = rec->data[0]; ++ edge_serial->product_info.FirmwareMinorVersion = rec->data[1]; + edge_serial->product_info.FirmwareBuildNumber = cpu_to_le16(build); + + for (rec = ihex_next_binrec(rec); rec; diff --git a/queue-2.6.36/usb-prevent-buggy-hubs-from-crashing-the-usb-stack.patch b/queue-2.6.36/usb-prevent-buggy-hubs-from-crashing-the-usb-stack.patch new file mode 100644 index 00000000000..f49797d80d2 --- /dev/null +++ b/queue-2.6.36/usb-prevent-buggy-hubs-from-crashing-the-usb-stack.patch @@ -0,0 +1,37 @@ +From d199c96d41d80a567493e12b8e96ea056a1350c1 Mon Sep 17 00:00:00 2001 +From: Alan Stern +Date: Mon, 31 Jan 2011 10:56:37 -0500 +Subject: USB: prevent buggy hubs from crashing the USB stack + +From: Alan Stern + +commit d199c96d41d80a567493e12b8e96ea056a1350c1 upstream. + +If anyone comes across a high-speed hub that (by mistake or by design) +claims to have no Transaction Translators, plugging a full- or +low-speed device into it will cause the USB stack to crash. This +patch (as1446) prevents the problem by ignoring such devices, since +the kernel has no way to communicate with them. + +Signed-off-by: Alan Stern +Tested-by: Perry Neben +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/core/hub.c | 5 +++++ + 1 file changed, 5 insertions(+) + +--- a/drivers/usb/core/hub.c ++++ b/drivers/usb/core/hub.c +@@ -2722,6 +2722,11 @@ hub_port_init (struct usb_hub *hub, stru + udev->ttport = hdev->ttport; + } else if (udev->speed != USB_SPEED_HIGH + && hdev->speed == USB_SPEED_HIGH) { ++ if (!hub->tt.hub) { ++ dev_err(&udev->dev, "parent hub has no TT\n"); ++ retval = -EINVAL; ++ goto fail; ++ } + udev->tt = &hub->tt; + udev->ttport = port1; + } diff --git a/queue-2.6.36/usb-qcaux-add-pantech-uml290-device-id.patch b/queue-2.6.36/usb-qcaux-add-pantech-uml290-device-id.patch new file mode 100644 index 00000000000..bf769ac1e02 --- /dev/null +++ b/queue-2.6.36/usb-qcaux-add-pantech-uml290-device-id.patch @@ -0,0 +1,36 @@ +From a58861fbde2a350df4d27fc62fb42905669b37ce Mon Sep 17 00:00:00 2001 +From: Dan Williams +Date: Fri, 31 Dec 2010 10:51:51 -0600 +Subject: USB: qcaux: add Pantech UML290 device ID + +From: Dan Williams + +commit a58861fbde2a350df4d27fc62fb42905669b37ce upstream. + +Another CDC-ACM + vendor specific interface layout for the QCDM port. + +Signed-off-by: Dan Williams +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/serial/qcaux.c | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/drivers/usb/serial/qcaux.c ++++ b/drivers/usb/serial/qcaux.c +@@ -36,6 +36,7 @@ + #define UTSTARCOM_PRODUCT_UM175_V1 0x3712 + #define UTSTARCOM_PRODUCT_UM175_V2 0x3714 + #define UTSTARCOM_PRODUCT_UM175_ALLTEL 0x3715 ++#define PANTECH_PRODUCT_UML290_VZW 0x3718 + + /* CMOTECH devices */ + #define CMOTECH_VENDOR_ID 0x16d8 +@@ -66,6 +67,7 @@ static struct usb_device_id id_table[] = + { USB_DEVICE_AND_INTERFACE_INFO(LG_VENDOR_ID, LG_PRODUCT_VX4400_6000, 0xff, 0xff, 0x00) }, + { USB_DEVICE_AND_INTERFACE_INFO(SANYO_VENDOR_ID, SANYO_PRODUCT_KATANA_LX, 0xff, 0xff, 0x00) }, + { USB_DEVICE_AND_INTERFACE_INFO(SAMSUNG_VENDOR_ID, SAMSUNG_PRODUCT_U520, 0xff, 0x00, 0x00) }, ++ { USB_DEVICE_AND_INTERFACE_INFO(UTSTARCOM_VENDOR_ID, PANTECH_PRODUCT_UML290_VZW, 0xff, 0xff, 0xff) }, + { }, + }; + MODULE_DEVICE_TABLE(usb, id_table); diff --git a/queue-2.6.36/usb-serial-add-missing-.usb_driver-field-in-serial-drivers.patch b/queue-2.6.36/usb-serial-add-missing-.usb_driver-field-in-serial-drivers.patch new file mode 100644 index 00000000000..24bff768791 --- /dev/null +++ b/queue-2.6.36/usb-serial-add-missing-.usb_driver-field-in-serial-drivers.patch @@ -0,0 +1,169 @@ +From 5620b5f7f19e9ee3fcf6ecf493fed7821b7b495b Mon Sep 17 00:00:00 2001 +From: Alan Stern +Date: Tue, 11 Jan 2011 14:16:50 -0500 +Subject: USB serial: add missing .usb_driver field in serial drivers + +From: Alan Stern + +commit 5620b5f7f19e9ee3fcf6ecf493fed7821b7b495b upstream. + +This patch (as1443) fixes a bug found in many of the USB serial +drivers: They don't set the .usb_driver field in their +usb_serial_driver structure. This field is needed for assigning +dynamic IDs for device matching. + +In addition, starting with the 2.6.37 kernel, the .usb_driver field is +needed for proper autosuspend operation. Without it, attempts to open +the device file will fail. + +Signed-off-by: Alan Stern +Reported-by: Dan Williams +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/serial/io_tables.h | 1 + + drivers/usb/serial/iuu_phoenix.c | 1 + + drivers/usb/serial/keyspan.h | 4 ++++ + drivers/usb/serial/moto_modem.c | 1 + + drivers/usb/serial/oti6858.c | 1 + + drivers/usb/serial/qcaux.c | 1 + + drivers/usb/serial/siemens_mpi.c | 1 + + drivers/usb/serial/spcp8x5.c | 1 + + drivers/usb/serial/usb-serial.c | 8 ++++++-- + drivers/usb/serial/usb_debug.c | 1 + + 10 files changed, 18 insertions(+), 2 deletions(-) + +--- a/drivers/usb/serial/io_tables.h ++++ b/drivers/usb/serial/io_tables.h +@@ -196,6 +196,7 @@ static struct usb_serial_driver epic_dev + .name = "epic", + }, + .description = "EPiC device", ++ .usb_driver = &io_driver, + .id_table = Epic_port_id_table, + .num_ports = 1, + .open = edge_open, +--- a/drivers/usb/serial/iuu_phoenix.c ++++ b/drivers/usb/serial/iuu_phoenix.c +@@ -1276,6 +1276,7 @@ static struct usb_serial_driver iuu_devi + .name = "iuu_phoenix", + }, + .id_table = id_table, ++ .usb_driver = &iuu_driver, + .num_ports = 1, + .bulk_in_size = 512, + .bulk_out_size = 512, +--- a/drivers/usb/serial/keyspan.h ++++ b/drivers/usb/serial/keyspan.h +@@ -546,6 +546,7 @@ static struct usb_serial_driver keyspan_ + .name = "keyspan_no_firm", + }, + .description = "Keyspan - (without firmware)", ++ .usb_driver = &keyspan_driver, + .id_table = keyspan_pre_ids, + .num_ports = 1, + .attach = keyspan_fake_startup, +@@ -557,6 +558,7 @@ static struct usb_serial_driver keyspan_ + .name = "keyspan_1", + }, + .description = "Keyspan 1 port adapter", ++ .usb_driver = &keyspan_driver, + .id_table = keyspan_1port_ids, + .num_ports = 1, + .open = keyspan_open, +@@ -579,6 +581,7 @@ static struct usb_serial_driver keyspan_ + .name = "keyspan_2", + }, + .description = "Keyspan 2 port adapter", ++ .usb_driver = &keyspan_driver, + .id_table = keyspan_2port_ids, + .num_ports = 2, + .open = keyspan_open, +@@ -601,6 +604,7 @@ static struct usb_serial_driver keyspan_ + .name = "keyspan_4", + }, + .description = "Keyspan 4 port adapter", ++ .usb_driver = &keyspan_driver, + .id_table = keyspan_4port_ids, + .num_ports = 4, + .open = keyspan_open, +--- a/drivers/usb/serial/moto_modem.c ++++ b/drivers/usb/serial/moto_modem.c +@@ -44,6 +44,7 @@ static struct usb_serial_driver moto_dev + .name = "moto-modem", + }, + .id_table = id_table, ++ .usb_driver = &moto_driver, + .num_ports = 1, + }; + +--- a/drivers/usb/serial/oti6858.c ++++ b/drivers/usb/serial/oti6858.c +@@ -157,6 +157,7 @@ static struct usb_serial_driver oti6858_ + .name = "oti6858", + }, + .id_table = id_table, ++ .usb_driver = &oti6858_driver, + .num_ports = 1, + .open = oti6858_open, + .close = oti6858_close, +--- a/drivers/usb/serial/qcaux.c ++++ b/drivers/usb/serial/qcaux.c +@@ -86,6 +86,7 @@ static struct usb_serial_driver qcaux_de + .name = "qcaux", + }, + .id_table = id_table, ++ .usb_driver = &qcaux_driver, + .num_ports = 1, + }; + +--- a/drivers/usb/serial/siemens_mpi.c ++++ b/drivers/usb/serial/siemens_mpi.c +@@ -42,6 +42,7 @@ static struct usb_serial_driver siemens_ + .name = "siemens_mpi", + }, + .id_table = id_table, ++ .usb_driver = &siemens_usb_mpi_driver, + .num_ports = 1, + }; + +--- a/drivers/usb/serial/spcp8x5.c ++++ b/drivers/usb/serial/spcp8x5.c +@@ -650,6 +650,7 @@ static struct usb_serial_driver spcp8x5_ + .name = "SPCP8x5", + }, + .id_table = id_table, ++ .usb_driver = &spcp8x5_driver, + .num_ports = 1, + .open = spcp8x5_open, + .dtr_rts = spcp8x5_dtr_rts, +--- a/drivers/usb/serial/usb-serial.c ++++ b/drivers/usb/serial/usb-serial.c +@@ -1332,11 +1332,15 @@ int usb_serial_register(struct usb_seria + return -ENODEV; + + fixup_generic(driver); +- if (driver->usb_driver) +- driver->usb_driver->supports_autosuspend = 1; + + if (!driver->description) + driver->description = driver->driver.name; ++ if (!driver->usb_driver) { ++ WARN(1, "Serial driver %s has no usb_driver\n", ++ driver->description); ++ return -EINVAL; ++ } ++ driver->usb_driver->supports_autosuspend = 1; + + /* Add this device to our list of devices */ + mutex_lock(&table_lock); +--- a/drivers/usb/serial/usb_debug.c ++++ b/drivers/usb/serial/usb_debug.c +@@ -75,6 +75,7 @@ static struct usb_serial_driver debug_de + .name = "debug", + }, + .id_table = id_table, ++ .usb_driver = &debug_driver, + .num_ports = 1, + .bulk_out_size = USB_DEBUG_MAX_PACKET_SIZE, + .break_ctl = usb_debug_break_ctl, diff --git a/queue-2.6.36/usb-serial-updated-support-for-icom-devices.patch b/queue-2.6.36/usb-serial-updated-support-for-icom-devices.patch new file mode 100644 index 00000000000..cf17ef5f2fd --- /dev/null +++ b/queue-2.6.36/usb-serial-updated-support-for-icom-devices.patch @@ -0,0 +1,73 @@ +From a9d61bc49188e32d2ae9cf0f683cde3e1744feef Mon Sep 17 00:00:00 2001 +From: Pieter Maes +Date: Tue, 18 Jan 2011 00:26:16 +0100 +Subject: USB: serial: Updated support for ICOM devices + +From: Pieter Maes + +commit a9d61bc49188e32d2ae9cf0f683cde3e1744feef upstream. + +I found the original patch on the db0fhn repeater wiki (couldn't find the email +of the origial author) I guess it was never commited. +I updated and added some Icom HAM-radio devices to the ftdi driver. +Added extra comments to make clear what devices it are. + +Signed-off-by: Pieter Maes +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/serial/ftdi_sio.c | 12 +++++++++++- + drivers/usb/serial/ftdi_sio_ids.h | 20 ++++++++++++++++---- + 2 files changed, 27 insertions(+), 5 deletions(-) + +--- a/drivers/usb/serial/ftdi_sio.c ++++ b/drivers/usb/serial/ftdi_sio.c +@@ -675,7 +675,17 @@ static struct usb_device_id id_table_com + { USB_DEVICE(FTDI_VID, FTDI_PCDJ_DAC2_PID) }, + { USB_DEVICE(FTDI_VID, FTDI_RRCIRKITS_LOCOBUFFER_PID) }, + { USB_DEVICE(FTDI_VID, FTDI_ASK_RDR400_PID) }, +- { USB_DEVICE(ICOM_ID1_VID, ICOM_ID1_PID) }, ++ { USB_DEVICE(ICOM_VID, ICOM_ID_1_PID) }, ++ { USB_DEVICE(ICOM_VID, ICOM_OPC_U_UC_PID) }, ++ { USB_DEVICE(ICOM_VID, ICOM_ID_RP2C1_PID) }, ++ { USB_DEVICE(ICOM_VID, ICOM_ID_RP2C2_PID) }, ++ { USB_DEVICE(ICOM_VID, ICOM_ID_RP2D_PID) }, ++ { USB_DEVICE(ICOM_VID, ICOM_ID_RP2VT_PID) }, ++ { USB_DEVICE(ICOM_VID, ICOM_ID_RP2VR_PID) }, ++ { USB_DEVICE(ICOM_VID, ICOM_ID_RP4KVT_PID) }, ++ { USB_DEVICE(ICOM_VID, ICOM_ID_RP4KVR_PID) }, ++ { USB_DEVICE(ICOM_VID, ICOM_ID_RP2KVT_PID) }, ++ { USB_DEVICE(ICOM_VID, ICOM_ID_RP2KVR_PID) }, + { USB_DEVICE(FTDI_VID, FTDI_ACG_HFDUAL_PID) }, + { USB_DEVICE(FTDI_VID, FTDI_YEI_SERVOCENTER31_PID) }, + { USB_DEVICE(FTDI_VID, FTDI_THORLABS_PID) }, +--- a/drivers/usb/serial/ftdi_sio_ids.h ++++ b/drivers/usb/serial/ftdi_sio_ids.h +@@ -569,11 +569,23 @@ + #define OCT_US101_PID 0x0421 /* OCT US101 USB to RS-232 */ + + /* +- * Icom ID-1 digital transceiver ++ * Definitions for Icom Inc. devices + */ +- +-#define ICOM_ID1_VID 0x0C26 +-#define ICOM_ID1_PID 0x0004 ++#define ICOM_VID 0x0C26 /* Icom vendor ID */ ++/* Note: ID-1 is a communications tranceiver for HAM-radio operators */ ++#define ICOM_ID_1_PID 0x0004 /* ID-1 USB to RS-232 */ ++/* Note: OPC is an Optional cable to connect an Icom Tranceiver */ ++#define ICOM_OPC_U_UC_PID 0x0018 /* OPC-478UC, OPC-1122U cloning cable */ ++/* Note: ID-RP* devices are Icom Repeater Devices for HAM-radio */ ++#define ICOM_ID_RP2C1_PID 0x0009 /* ID-RP2C Asset 1 to RS-232 */ ++#define ICOM_ID_RP2C2_PID 0x000A /* ID-RP2C Asset 2 to RS-232 */ ++#define ICOM_ID_RP2D_PID 0x000B /* ID-RP2D configuration port*/ ++#define ICOM_ID_RP2VT_PID 0x000C /* ID-RP2V Transmit config port */ ++#define ICOM_ID_RP2VR_PID 0x000D /* ID-RP2V Receive config port */ ++#define ICOM_ID_RP4KVT_PID 0x0010 /* ID-RP4000V Transmit config port */ ++#define ICOM_ID_RP4KVR_PID 0x0011 /* ID-RP4000V Receive config port */ ++#define ICOM_ID_RP2KVT_PID 0x0012 /* ID-RP2000V Transmit config port */ ++#define ICOM_ID_RP2KVR_PID 0x0013 /* ID-RP2000V Receive config port */ + + /* + * GN Otometrics (http://www.otometrics.com) diff --git a/queue-2.6.36/usb-storage-add-unusual_devs-entry-for-vtech-kidizoom.patch b/queue-2.6.36/usb-storage-add-unusual_devs-entry-for-vtech-kidizoom.patch new file mode 100644 index 00000000000..a283d9718a4 --- /dev/null +++ b/queue-2.6.36/usb-storage-add-unusual_devs-entry-for-vtech-kidizoom.patch @@ -0,0 +1,35 @@ +From c25f6b1591b158f7ae3b9132367d0fa6d632e70e Mon Sep 17 00:00:00 2001 +From: Nick Holloway +Date: Wed, 26 Jan 2011 21:47:43 +0000 +Subject: USB: Storage: Add unusual_devs entry for VTech Kidizoom + +From: Nick Holloway + +commit c25f6b1591b158f7ae3b9132367d0fa6d632e70e upstream. + +This device suffers from the off-by-one error when reporting the capacity, +so add entry with US_FL_FIX_CAPACITY. + +Signed-off-by: Nick Holloway +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/storage/unusual_devs.h | 7 +++++++ + 1 file changed, 7 insertions(+) + +--- a/drivers/usb/storage/unusual_devs.h ++++ b/drivers/usb/storage/unusual_devs.h +@@ -1396,6 +1396,13 @@ UNUSUAL_DEV( 0x0f19, 0x0105, 0x0100, 0x + US_SC_DEVICE, US_PR_DEVICE, NULL, + US_FL_IGNORE_RESIDUE ), + ++/* Submitted by Nick Holloway */ ++UNUSUAL_DEV( 0x0f88, 0x042e, 0x0100, 0x0100, ++ "VTech", ++ "Kidizoom", ++ US_SC_DEVICE, US_PR_DEVICE, NULL, ++ US_FL_FIX_CAPACITY ), ++ + /* Reported by Michael Stattmann */ + UNUSUAL_DEV( 0x0fce, 0xd008, 0x0000, 0x0000, + "Sony Ericsson", diff --git a/queue-2.6.36/usb-ti_usb-fix-module-removal.patch b/queue-2.6.36/usb-ti_usb-fix-module-removal.patch new file mode 100644 index 00000000000..ace0c43b753 --- /dev/null +++ b/queue-2.6.36/usb-ti_usb-fix-module-removal.patch @@ -0,0 +1,76 @@ +From b14de3857227cd978f515247853fd15cc2425d3e Mon Sep 17 00:00:00 2001 +From: Ionut Nicu +Date: Tue, 28 Dec 2010 22:21:08 +0200 +Subject: USB: ti_usb: fix module removal + +From: Ionut Nicu + +commit b14de3857227cd978f515247853fd15cc2425d3e upstream. + +If usb_deregister() is called after usb_serial_deregister() when +the device is plugged in, the following Oops occurs: + +[ 95.337377] BUG: unable to handle kernel NULL pointer dereference at 00000010 +[ 95.338236] IP: [] klist_put+0x12/0x62 +[ 95.338356] *pdpt = 000000003001a001 *pde = 0000000000000000 +[ 95.338356] Oops: 0000 [#1] SMP +[ 95.340499] last sysfs file: /sys/devices/pci0000:00/0000:00:1d.2/usb8/idVendor +[ 95.340499] Modules linked in: ti_usb_3410_5052(-) usbserial cpufreq_ondemand acpi_cpufreq mperf iptable_nat nf_nat iptable_mangle ip6t_REJECT nf_conntrack_ipv6 nf_defrag_ipv6 ip6table_filter ip6_tables ipv6 uinput arc4 ecb iwlagn iwlcore mac80211 cfg80211 microcode pcspkr acer_wmi joydev wmi sky2 [last unloaded: scsi_wait_scan] +[ 95.341908] +[ 95.341908] Pid: 1532, comm: modprobe Not tainted 2.6.37-rc7+ #6 Eiger /Aspire 5930 +[ 95.341908] EIP: 0060:[] EFLAGS: 00010246 CPU: 0 +[ 95.341908] EIP is at klist_put+0x12/0x62 +[ 95.341908] EAX: 00000000 EBX: eedc0c84 ECX: c09c21b4 EDX: 00000001 +[ 95.341908] ESI: 00000000 EDI: efaa0c1c EBP: f214fe2c ESP: f214fe1c +[ 95.341908] DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068 +[ 95.341908] Process modprobe (pid: 1532, ti=f214e000 task=efaaf080 task.ti=f214e000) +[ 95.341908] Stack: +[ 95.341908] f214fe24 eedc0c84 efaaf080 efaa0c1c f214fe34 c0776ba8 f214fe5c c0776c76 +[ 95.341908] c09c21b4 c09c21b4 eedc0c84 efaaf080 00000000 c0634398 eafe2d1c f7b515f0 +[ 95.341908] f214fe6c c0631b5c eafe2d50 eafe2d1c f214fe7c c0631ba2 eafe2d1c eafe2c00 +[ 95.341908] Call Trace: +[ 95.341908] [] ? klist_del+0xd/0xf +[ 95.341908] [] ? klist_remove+0x48/0x74 +[ 95.341908] [] ? devres_release_all+0x49/0x51 +[ 95.341908] [] ? __device_release_driver+0x7b/0xa4 +[ 95.341908] [] ? device_release_driver+0x1d/0x28 +[ 95.341908] [] ? bus_remove_device+0x92/0xa1 +[ 95.341908] [] ? device_del+0xf9/0x13e +[ 95.341908] [] ? usb_serial_disconnect+0xd9/0x116 [usbserial] +[ 95.341908] [] ? usb_disable_interface+0x32/0x40 +[ 95.341908] [] ? usb_unbind_interface+0x48/0xfd +[ 95.341908] [] ? __device_release_driver+0x62/0xa4 +[ 95.341908] [] ? driver_detach+0x62/0x81 +[ 95.341908] [] ? bus_remove_driver+0x8f/0xae +[ 95.341908] [] ? driver_unregister+0x50/0x57 +[ 95.341908] [] ? usb_deregister+0x77/0x84 +[ 95.341908] [] ? ti_exit+0x26/0x28 [ti_usb_3410_5052] +[ 95.341908] [] ? sys_delete_module+0x181/0x1de +[ 95.341908] [] ? path_put+0x1a/0x1d +[ 95.341908] [] ? audit_syscall_entry+0x116/0x138 +[ 95.341908] [] ? sysenter_do_call+0x12/0x28 +[ 95.341908] Code: 00 83 7d f0 00 74 09 85 f6 74 05 89 f0 ff 55 f0 8b 43 04 5a 5b 5e 5f 5d c3 55 89 e5 57 56 53 89 c3 83 ec 04 8b 30 83 e6 fe 89 f0 <8b> 7e 10 88 55 f0 e8 47 26 01 00 8a 55 f0 84 d2 74 17 f6 03 01 +[ 95.341908] EIP: [] klist_put+0x12/0x62 SS:ESP 0068:f214fe1c +[ 95.341908] CR2: 0000000000000010 +[ 95.342357] ---[ end trace 8124d00ad871ad18 ]--- + +Signed-off-by: Ionut Nicu +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/serial/ti_usb_3410_5052.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/usb/serial/ti_usb_3410_5052.c ++++ b/drivers/usb/serial/ti_usb_3410_5052.c +@@ -365,9 +365,9 @@ failed_1port: + + static void __exit ti_exit(void) + { ++ usb_deregister(&ti_usb_driver); + usb_serial_deregister(&ti_1port_device); + usb_serial_deregister(&ti_2port_device); +- usb_deregister(&ti_usb_driver); + } + + diff --git a/queue-2.6.36/usb-usb-storage-unusual_devs-entry-for-camsport-evo.patch b/queue-2.6.36/usb-usb-storage-unusual_devs-entry-for-camsport-evo.patch new file mode 100644 index 00000000000..f0ca9b07643 --- /dev/null +++ b/queue-2.6.36/usb-usb-storage-unusual_devs-entry-for-camsport-evo.patch @@ -0,0 +1,39 @@ +From 12f68c480c7155a66bd2a76ab2fef28dd5f93fa2 Mon Sep 17 00:00:00 2001 +From: Alan Stern +Date: Mon, 3 Jan 2011 16:47:49 -0500 +Subject: USB: usb-storage: unusual_devs entry for CamSport Evo + +From: Alan Stern + +commit 12f68c480c7155a66bd2a76ab2fef28dd5f93fa2 upstream. + +This patch (as1438) adds an unusual_devs entry for the MagicPixel +FW_Omega2 chip, used in the CamSport Evo camera. The firmware +incorrectly reports a vendor-specific bDeviceClass. + +Signed-off-by: Alan Stern +Reported-by: +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/storage/unusual_devs.h | 9 +++++++++ + 1 file changed, 9 insertions(+) + +--- a/drivers/usb/storage/unusual_devs.h ++++ b/drivers/usb/storage/unusual_devs.h +@@ -1043,6 +1043,15 @@ UNUSUAL_DEV( 0x084d, 0x0011, 0x0110, 0x + US_SC_DEVICE, US_PR_DEVICE, NULL, + US_FL_BULK32), + ++/* Reported by ++ * The device reports a vendor-specific device class, requiring an ++ * explicit vendor/product match. ++ */ ++UNUSUAL_DEV( 0x0851, 0x1542, 0x0002, 0x0002, ++ "MagicPixel", ++ "FW_Omega2", ++ US_SC_DEVICE, US_PR_DEVICE, NULL, 0), ++ + /* Andrew Lunn + * PanDigital Digital Picture Frame. Does not like ALLOW_MEDIUM_REMOVAL + * on LUN 4. diff --git a/queue-2.6.36/usb-usb-storage-unusual_devs-entry-for-coby-mp3-player.patch b/queue-2.6.36/usb-usb-storage-unusual_devs-entry-for-coby-mp3-player.patch new file mode 100644 index 00000000000..ad70589c69b --- /dev/null +++ b/queue-2.6.36/usb-usb-storage-unusual_devs-entry-for-coby-mp3-player.patch @@ -0,0 +1,36 @@ +From 3ea3c9b5a8464ec8223125f95e5dddb3bfd02a39 Mon Sep 17 00:00:00 2001 +From: Alan Stern +Date: Tue, 25 Jan 2011 13:07:04 -0500 +Subject: USB: usb-storage: unusual_devs entry for Coby MP3 player + +From: Alan Stern + +commit 3ea3c9b5a8464ec8223125f95e5dddb3bfd02a39 upstream. + +This patch (as1444) adds an unusual_devs entry for an MP3 player from +Coby electronics. The device has two nasty bugs. + +Signed-off-by: Alan Stern +Tested-by: Jasper Mackenzie +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/storage/unusual_devs.h | 7 +++++++ + 1 file changed, 7 insertions(+) + +--- a/drivers/usb/storage/unusual_devs.h ++++ b/drivers/usb/storage/unusual_devs.h +@@ -1884,6 +1884,13 @@ UNUSUAL_DEV( 0x1e68, 0x001b, 0x0000, 0x + US_SC_DEVICE, US_PR_DEVICE, NULL, + US_FL_IGNORE_RESIDUE | US_FL_SANE_SENSE ), + ++/* Reported by Jasper Mackenzie */ ++UNUSUAL_DEV( 0x1e74, 0x4621, 0x0000, 0x0000, ++ "Coby Electronics", ++ "MP3 Player", ++ US_SC_DEVICE, US_PR_DEVICE, NULL, ++ US_FL_BULK_IGNORE_TAG | US_FL_MAX_SECTORS_64 ), ++ + UNUSUAL_DEV( 0x2116, 0x0320, 0x0001, 0x0001, + "ST", + "2A", diff --git a/queue-2.6.36/usb-usb-storage-unusual_devs-update-for-cypress-atacb.patch b/queue-2.6.36/usb-usb-storage-unusual_devs-update-for-cypress-atacb.patch new file mode 100644 index 00000000000..0679a8ccc87 --- /dev/null +++ b/queue-2.6.36/usb-usb-storage-unusual_devs-update-for-cypress-atacb.patch @@ -0,0 +1,33 @@ +From cae41118f50ef0c431e13159df6d7dd8bbd54004 Mon Sep 17 00:00:00 2001 +From: Richard Schütz +Date: Sun, 19 Dec 2010 21:18:38 +0100 +Subject: USB: usb-storage: unusual_devs update for Cypress ATACB +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Richard Schütz + +commit cae41118f50ef0c431e13159df6d7dd8bbd54004 upstream. + +New device ID added for unusual Cypress ATACB device. + +Signed-off-by: Richard Schütz +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/storage/unusual_cypress.h | 5 +++++ + 1 file changed, 5 insertions(+) + +--- a/drivers/usb/storage/unusual_cypress.h ++++ b/drivers/usb/storage/unusual_cypress.h +@@ -31,4 +31,9 @@ UNUSUAL_DEV( 0x04b4, 0x6831, 0x0000, 0x + "Cypress ISD-300LP", + US_SC_CYP_ATACB, US_PR_DEVICE, NULL, 0), + ++UNUSUAL_DEV( 0x14cd, 0x6116, 0x0000, 0x9999, ++ "Super Top", ++ "USB 2.0 SATA BRIDGE", ++ USB_SC_CYP_ATACB, USB_PR_DEVICE, NULL, 0), ++ + #endif /* defined(CONFIG_USB_STORAGE_CYPRESS_ATACB) || ... */ diff --git a/queue-2.6.36/usb-usb-storage-unusual_devs-update-for-trekstor-datastation-maxi-g.u-external-hard-drive-enclosure.patch b/queue-2.6.36/usb-usb-storage-unusual_devs-update-for-trekstor-datastation-maxi-g.u-external-hard-drive-enclosure.patch new file mode 100644 index 00000000000..5b86ecc5377 --- /dev/null +++ b/queue-2.6.36/usb-usb-storage-unusual_devs-update-for-trekstor-datastation-maxi-g.u-external-hard-drive-enclosure.patch @@ -0,0 +1,41 @@ +From 7e1e7bd9dbd469267b6e6de1bf8d71a7d65ce86a Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Richard=20Sch=C3=BCtz?= +Date: Wed, 22 Dec 2010 14:28:56 +0100 +Subject: USB: usb-storage: unusual_devs update for TrekStor DataStation maxi g.u external hard drive enclosure +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: =?UTF-8?q?Richard=20Sch=C3=BCtz?= + +commit 7e1e7bd9dbd469267b6e6de1bf8d71a7d65ce86a upstream. + +The TrekStor DataStation maxi g.u external hard drive enclosure uses a +JMicron USB to SATA chip which needs the US_FL_IGNORE_RESIDUE flag to work +properly. + +Signed-off-by: Richard Schütz +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/storage/unusual_devs.h | 9 +++++++++ + 1 file changed, 9 insertions(+) + +--- a/drivers/usb/storage/unusual_devs.h ++++ b/drivers/usb/storage/unusual_devs.h +@@ -1866,6 +1866,15 @@ UNUSUAL_DEV( 0x1908, 0x1320, 0x0000, 0x0 + US_SC_DEVICE, US_PR_DEVICE, NULL, + US_FL_BAD_SENSE ), + ++/* Patch by Richard Schütz ++ * This external hard drive enclosure uses a JMicron chip which ++ * needs the US_FL_IGNORE_RESIDUE flag to work properly. */ ++UNUSUAL_DEV( 0x1e68, 0x001b, 0x0000, 0x0000, ++ "TrekStor GmbH & Co. KG", ++ "DataStation maxi g.u", ++ US_SC_DEVICE, US_PR_DEVICE, NULL, ++ US_FL_IGNORE_RESIDUE | US_FL_SANE_SENSE ), ++ + UNUSUAL_DEV( 0x2116, 0x0320, 0x0001, 0x0001, + "ST", + "2A",