diff options
author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-04-27 17:19:17 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-04-27 17:19:17 -0400 |
commit | 50f732ee63b91eb08a29974b36bd63e1150bb642 (patch) | |
tree | fdfc63411a34ffbe26a3b0a997aaeff742a0301b /drivers/usb/misc/ftdi-elan.c | |
parent | aa5bc2b58e3344da57f26b62e99e13e91c9e0a94 (diff) | |
parent | a7205b30106a2d4ee268132644cdb292da2d9b41 (diff) |
Merge master.kernel.org:/pub/scm/linux/kernel/git/gregkh/usb-2.6
* master.kernel.org:/pub/scm/linux/kernel/git/gregkh/usb-2.6: (78 commits)
USB: update MAINAINERS and CREDITS for Freescale USB driver
USB: update gadget files for fsl_usb2_udc driver
USB: add Freescale high-speed USB SOC device controller driver
USB: quirk for broken suspend of IT8152F/G
USB: iowarrior.c: timeouts too small in usb_control_msg calls
USB: dell device id for option.c
USB: Remove Huawei unusual_devs entry
USB: CP2101 New Device IDs
USB: add picdem device to ldusb
usbfs micro optimitation
USB: remove ancient/broken CRIS hcd
usb ethernet gadget, workaround network stack API glitch
USB: add "busnum" attribute for USB devices
USB: cxacru: ADSL state management
usbatm: Detect usb device shutdown and ignore failed urbs
USB: Remove duplicate define of OHCI_QUIRK_ZFMICRO
USB: BandRich BandLuxe HSDPA Data Card Driver
USB gadget rndis: fix struct rndis_packet_msg_type unaligned bug
USB Elan FTDI: check for driver registration status
USB: sierra: add more checks on shutdown
...
Diffstat (limited to 'drivers/usb/misc/ftdi-elan.c')
-rw-r--r-- | drivers/usb/misc/ftdi-elan.c | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/drivers/usb/misc/ftdi-elan.c b/drivers/usb/misc/ftdi-elan.c index bc3327e3dd78..e2172e5cf152 100644 --- a/drivers/usb/misc/ftdi-elan.c +++ b/drivers/usb/misc/ftdi-elan.c | |||
@@ -2304,7 +2304,6 @@ static int ftdi_elan_checkingPCI(struct usb_ftdi *ftdi) | |||
2304 | #define OHCI_QUIRK_SUPERIO 0x02 | 2304 | #define OHCI_QUIRK_SUPERIO 0x02 |
2305 | #define OHCI_QUIRK_INITRESET 0x04 | 2305 | #define OHCI_QUIRK_INITRESET 0x04 |
2306 | #define OHCI_BIG_ENDIAN 0x08 | 2306 | #define OHCI_BIG_ENDIAN 0x08 |
2307 | #define OHCI_QUIRK_ZFMICRO 0x10 | ||
2308 | #define OHCI_CONTROL_INIT OHCI_CTRL_CBSR | 2307 | #define OHCI_CONTROL_INIT OHCI_CTRL_CBSR |
2309 | #define OHCI_INTR_INIT (OHCI_INTR_MIE | OHCI_INTR_UE | OHCI_INTR_RD | \ | 2308 | #define OHCI_INTR_INIT (OHCI_INTR_MIE | OHCI_INTR_UE | OHCI_INTR_RD | \ |
2310 | OHCI_INTR_WDH) | 2309 | OHCI_INTR_WDH) |
@@ -2910,24 +2909,28 @@ static int __init ftdi_elan_init(void) | |||
2910 | INIT_LIST_HEAD(&ftdi_static_list); | 2909 | INIT_LIST_HEAD(&ftdi_static_list); |
2911 | status_queue = create_singlethread_workqueue("ftdi-status-control"); | 2910 | status_queue = create_singlethread_workqueue("ftdi-status-control"); |
2912 | if (!status_queue) | 2911 | if (!status_queue) |
2913 | goto err1; | 2912 | goto err_status_queue; |
2914 | command_queue = create_singlethread_workqueue("ftdi-command-engine"); | 2913 | command_queue = create_singlethread_workqueue("ftdi-command-engine"); |
2915 | if (!command_queue) | 2914 | if (!command_queue) |
2916 | goto err2; | 2915 | goto err_command_queue; |
2917 | respond_queue = create_singlethread_workqueue("ftdi-respond-engine"); | 2916 | respond_queue = create_singlethread_workqueue("ftdi-respond-engine"); |
2918 | if (!respond_queue) | 2917 | if (!respond_queue) |
2919 | goto err3; | 2918 | goto err_respond_queue; |
2920 | result = usb_register(&ftdi_elan_driver); | 2919 | result = usb_register(&ftdi_elan_driver); |
2921 | if (result) | 2920 | if (result) { |
2921 | destroy_workqueue(status_queue); | ||
2922 | destroy_workqueue(command_queue); | ||
2923 | destroy_workqueue(respond_queue); | ||
2922 | printk(KERN_ERR "usb_register failed. Error number %d\n", | 2924 | printk(KERN_ERR "usb_register failed. Error number %d\n", |
2923 | result); | 2925 | result); |
2926 | } | ||
2924 | return result; | 2927 | return result; |
2925 | 2928 | ||
2926 | err3: | 2929 | err_respond_queue: |
2927 | destroy_workqueue(command_queue); | 2930 | destroy_workqueue(command_queue); |
2928 | err2: | 2931 | err_command_queue: |
2929 | destroy_workqueue(status_queue); | 2932 | destroy_workqueue(status_queue); |
2930 | err1: | 2933 | err_status_queue: |
2931 | printk(KERN_ERR "%s couldn't create workqueue\n", ftdi_elan_driver.name); | 2934 | printk(KERN_ERR "%s couldn't create workqueue\n", ftdi_elan_driver.name); |
2932 | return -ENOMEM; | 2935 | return -ENOMEM; |
2933 | } | 2936 | } |