diff options
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 | } |