diff options
| -rw-r--r-- | drivers/usb/input/aiptek.c | 14 | ||||
| -rw-r--r-- | drivers/usb/input/ati_remote.c | 28 | ||||
| -rw-r--r-- | drivers/usb/input/itmtouch.c | 10 | ||||
| -rw-r--r-- | drivers/usb/input/kbtab.c | 11 | ||||
| -rw-r--r-- | drivers/usb/input/mtouchusb.c | 11 | ||||
| -rw-r--r-- | drivers/usb/input/touchkitusb.c | 11 | ||||
| -rw-r--r-- | drivers/usb/input/usbkbd.c | 11 | ||||
| -rw-r--r-- | drivers/usb/input/usbmouse.c | 11 | ||||
| -rw-r--r-- | drivers/usb/input/wacom.c | 11 | ||||
| -rw-r--r-- | drivers/usb/input/xpad.c | 11 |
10 files changed, 23 insertions, 106 deletions
diff --git a/drivers/usb/input/aiptek.c b/drivers/usb/input/aiptek.c index 68d9d281386c..a6921856a112 100644 --- a/drivers/usb/input/aiptek.c +++ b/drivers/usb/input/aiptek.c | |||
| @@ -324,7 +324,6 @@ struct aiptek { | |||
| 324 | struct aiptek_settings curSetting; /* tablet's current programmable */ | 324 | struct aiptek_settings curSetting; /* tablet's current programmable */ |
| 325 | struct aiptek_settings newSetting; /* ... and new param settings */ | 325 | struct aiptek_settings newSetting; /* ... and new param settings */ |
| 326 | unsigned int ifnum; /* interface number for IO */ | 326 | unsigned int ifnum; /* interface number for IO */ |
| 327 | int openCount; /* module use counter */ | ||
| 328 | int diagnostic; /* tablet diagnostic codes */ | 327 | int diagnostic; /* tablet diagnostic codes */ |
| 329 | unsigned long eventCount; /* event count */ | 328 | unsigned long eventCount; /* event count */ |
| 330 | int inDelay; /* jitter: in jitter delay? */ | 329 | int inDelay; /* jitter: in jitter delay? */ |
| @@ -814,15 +813,9 @@ static int aiptek_open(struct input_dev *inputdev) | |||
| 814 | { | 813 | { |
| 815 | struct aiptek *aiptek = inputdev->private; | 814 | struct aiptek *aiptek = inputdev->private; |
| 816 | 815 | ||
| 817 | if (aiptek->openCount++ > 0) { | ||
| 818 | return 0; | ||
| 819 | } | ||
| 820 | |||
| 821 | aiptek->urb->dev = aiptek->usbdev; | 816 | aiptek->urb->dev = aiptek->usbdev; |
| 822 | if (usb_submit_urb(aiptek->urb, GFP_KERNEL) != 0) { | 817 | if (usb_submit_urb(aiptek->urb, GFP_KERNEL) != 0) |
| 823 | aiptek->openCount--; | ||
| 824 | return -EIO; | 818 | return -EIO; |
| 825 | } | ||
| 826 | 819 | ||
| 827 | return 0; | 820 | return 0; |
| 828 | } | 821 | } |
| @@ -834,9 +827,7 @@ static void aiptek_close(struct input_dev *inputdev) | |||
| 834 | { | 827 | { |
| 835 | struct aiptek *aiptek = inputdev->private; | 828 | struct aiptek *aiptek = inputdev->private; |
| 836 | 829 | ||
| 837 | if (--aiptek->openCount == 0) { | 830 | usb_kill_urb(aiptek->urb); |
| 838 | usb_kill_urb(aiptek->urb); | ||
| 839 | } | ||
| 840 | } | 831 | } |
| 841 | 832 | ||
| 842 | /*********************************************************************** | 833 | /*********************************************************************** |
| @@ -2252,7 +2243,6 @@ static void aiptek_disconnect(struct usb_interface *intf) | |||
| 2252 | AIPTEK_PACKET_LENGTH, | 2243 | AIPTEK_PACKET_LENGTH, |
| 2253 | aiptek->data, aiptek->data_dma); | 2244 | aiptek->data, aiptek->data_dma); |
| 2254 | kfree(aiptek); | 2245 | kfree(aiptek); |
| 2255 | aiptek = NULL; | ||
| 2256 | } | 2246 | } |
| 2257 | } | 2247 | } |
| 2258 | 2248 | ||
diff --git a/drivers/usb/input/ati_remote.c b/drivers/usb/input/ati_remote.c index cf45add81713..db95c975952b 100644 --- a/drivers/usb/input/ati_remote.c +++ b/drivers/usb/input/ati_remote.c | |||
| @@ -113,11 +113,11 @@ | |||
| 113 | #define DATA_BUFSIZE 63 /* size of URB data buffers */ | 113 | #define DATA_BUFSIZE 63 /* size of URB data buffers */ |
| 114 | #define ATI_INPUTNUM 1 /* Which input device to register as */ | 114 | #define ATI_INPUTNUM 1 /* Which input device to register as */ |
| 115 | 115 | ||
| 116 | static unsigned long channel_mask = 0; | 116 | static unsigned long channel_mask; |
| 117 | module_param(channel_mask, ulong, 0444); | 117 | module_param(channel_mask, ulong, 0444); |
| 118 | MODULE_PARM_DESC(channel_mask, "Bitmask of remote control channels to ignore"); | 118 | MODULE_PARM_DESC(channel_mask, "Bitmask of remote control channels to ignore"); |
| 119 | 119 | ||
| 120 | static int debug = 0; | 120 | static int debug; |
| 121 | module_param(debug, int, 0444); | 121 | module_param(debug, int, 0444); |
| 122 | MODULE_PARM_DESC(debug, "Enable extra debug messages and information"); | 122 | MODULE_PARM_DESC(debug, "Enable extra debug messages and information"); |
| 123 | 123 | ||
| @@ -174,8 +174,6 @@ struct ati_remote { | |||
| 174 | dma_addr_t inbuf_dma; | 174 | dma_addr_t inbuf_dma; |
| 175 | dma_addr_t outbuf_dma; | 175 | dma_addr_t outbuf_dma; |
| 176 | 176 | ||
| 177 | int open; /* open counter */ | ||
| 178 | |||
| 179 | unsigned char old_data[2]; /* Detect duplicate events */ | 177 | unsigned char old_data[2]; /* Detect duplicate events */ |
| 180 | unsigned long old_jiffies; | 178 | unsigned long old_jiffies; |
| 181 | unsigned long acc_jiffies; /* handle acceleration */ | 179 | unsigned long acc_jiffies; /* handle acceleration */ |
| @@ -328,25 +326,16 @@ static void ati_remote_dump(unsigned char *data, unsigned int len) | |||
| 328 | static int ati_remote_open(struct input_dev *inputdev) | 326 | static int ati_remote_open(struct input_dev *inputdev) |
| 329 | { | 327 | { |
| 330 | struct ati_remote *ati_remote = inputdev->private; | 328 | struct ati_remote *ati_remote = inputdev->private; |
| 331 | int retval = 0; | ||
| 332 | |||
| 333 | down(&disconnect_sem); | ||
| 334 | |||
| 335 | if (ati_remote->open++) | ||
| 336 | goto exit; | ||
| 337 | 329 | ||
| 338 | /* On first open, submit the read urb which was set up previously. */ | 330 | /* On first open, submit the read urb which was set up previously. */ |
| 339 | ati_remote->irq_urb->dev = ati_remote->udev; | 331 | ati_remote->irq_urb->dev = ati_remote->udev; |
| 340 | if (usb_submit_urb(ati_remote->irq_urb, GFP_KERNEL)) { | 332 | if (usb_submit_urb(ati_remote->irq_urb, GFP_KERNEL)) { |
| 341 | dev_err(&ati_remote->interface->dev, | 333 | dev_err(&ati_remote->interface->dev, |
| 342 | "%s: usb_submit_urb failed!\n", __FUNCTION__); | 334 | "%s: usb_submit_urb failed!\n", __FUNCTION__); |
| 343 | ati_remote->open--; | 335 | return -EIO; |
| 344 | retval = -EIO; | ||
| 345 | } | 336 | } |
| 346 | 337 | ||
| 347 | exit: | 338 | return 0; |
| 348 | up(&disconnect_sem); | ||
| 349 | return retval; | ||
| 350 | } | 339 | } |
| 351 | 340 | ||
| 352 | /* | 341 | /* |
| @@ -356,8 +345,7 @@ static void ati_remote_close(struct input_dev *inputdev) | |||
| 356 | { | 345 | { |
| 357 | struct ati_remote *ati_remote = inputdev->private; | 346 | struct ati_remote *ati_remote = inputdev->private; |
| 358 | 347 | ||
| 359 | if (!--ati_remote->open) | 348 | usb_kill_urb(ati_remote->irq_urb); |
| 360 | usb_kill_urb(ati_remote->irq_urb); | ||
| 361 | } | 349 | } |
| 362 | 350 | ||
| 363 | /* | 351 | /* |
| @@ -602,8 +590,6 @@ static void ati_remote_irq_in(struct urb *urb, struct pt_regs *regs) | |||
| 602 | */ | 590 | */ |
| 603 | static void ati_remote_delete(struct ati_remote *ati_remote) | 591 | static void ati_remote_delete(struct ati_remote *ati_remote) |
| 604 | { | 592 | { |
| 605 | if (!ati_remote) return; | ||
| 606 | |||
| 607 | if (ati_remote->irq_urb) | 593 | if (ati_remote->irq_urb) |
| 608 | usb_kill_urb(ati_remote->irq_urb); | 594 | usb_kill_urb(ati_remote->irq_urb); |
| 609 | 595 | ||
| @@ -799,8 +785,6 @@ static void ati_remote_disconnect(struct usb_interface *interface) | |||
| 799 | { | 785 | { |
| 800 | struct ati_remote *ati_remote; | 786 | struct ati_remote *ati_remote; |
| 801 | 787 | ||
| 802 | down(&disconnect_sem); | ||
| 803 | |||
| 804 | ati_remote = usb_get_intfdata(interface); | 788 | ati_remote = usb_get_intfdata(interface); |
| 805 | usb_set_intfdata(interface, NULL); | 789 | usb_set_intfdata(interface, NULL); |
| 806 | if (!ati_remote) { | 790 | if (!ati_remote) { |
| @@ -809,8 +793,6 @@ static void ati_remote_disconnect(struct usb_interface *interface) | |||
| 809 | } | 793 | } |
| 810 | 794 | ||
| 811 | ati_remote_delete(ati_remote); | 795 | ati_remote_delete(ati_remote); |
| 812 | |||
| 813 | up(&disconnect_sem); | ||
| 814 | } | 796 | } |
| 815 | 797 | ||
| 816 | /* | 798 | /* |
diff --git a/drivers/usb/input/itmtouch.c b/drivers/usb/input/itmtouch.c index 5122a7f701a9..47dec6a1b344 100644 --- a/drivers/usb/input/itmtouch.c +++ b/drivers/usb/input/itmtouch.c | |||
| @@ -137,15 +137,10 @@ static int itmtouch_open(struct input_dev *input) | |||
| 137 | { | 137 | { |
| 138 | struct itmtouch_dev *itmtouch = input->private; | 138 | struct itmtouch_dev *itmtouch = input->private; |
| 139 | 139 | ||
| 140 | if (itmtouch->users++) | ||
| 141 | return 0; | ||
| 142 | |||
| 143 | itmtouch->readurb->dev = itmtouch->usbdev; | 140 | itmtouch->readurb->dev = itmtouch->usbdev; |
| 144 | 141 | ||
| 145 | if (usb_submit_urb(itmtouch->readurb, GFP_KERNEL)) { | 142 | if (usb_submit_urb(itmtouch->readurb, GFP_KERNEL)) |
| 146 | itmtouch->users--; | ||
| 147 | return -EIO; | 143 | return -EIO; |
| 148 | } | ||
| 149 | 144 | ||
| 150 | return 0; | 145 | return 0; |
| 151 | } | 146 | } |
| @@ -154,8 +149,7 @@ static void itmtouch_close(struct input_dev *input) | |||
| 154 | { | 149 | { |
| 155 | struct itmtouch_dev *itmtouch = input->private; | 150 | struct itmtouch_dev *itmtouch = input->private; |
| 156 | 151 | ||
| 157 | if (!--itmtouch->users) | 152 | usb_kill_urb(itmtouch->readurb); |
| 158 | usb_kill_urb(itmtouch->readurb); | ||
| 159 | } | 153 | } |
| 160 | 154 | ||
| 161 | static int itmtouch_probe(struct usb_interface *intf, const struct usb_device_id *id) | 155 | static int itmtouch_probe(struct usb_interface *intf, const struct usb_device_id *id) |
diff --git a/drivers/usb/input/kbtab.c b/drivers/usb/input/kbtab.c index fff5753b16ca..d2f0f90a9bcd 100644 --- a/drivers/usb/input/kbtab.c +++ b/drivers/usb/input/kbtab.c | |||
| @@ -36,7 +36,6 @@ struct kbtab { | |||
| 36 | struct input_dev dev; | 36 | struct input_dev dev; |
| 37 | struct usb_device *usbdev; | 37 | struct usb_device *usbdev; |
| 38 | struct urb *irq; | 38 | struct urb *irq; |
| 39 | int open; | ||
| 40 | int x, y; | 39 | int x, y; |
| 41 | int button; | 40 | int button; |
| 42 | int pressure; | 41 | int pressure; |
| @@ -105,14 +104,9 @@ static int kbtab_open(struct input_dev *dev) | |||
| 105 | { | 104 | { |
| 106 | struct kbtab *kbtab = dev->private; | 105 | struct kbtab *kbtab = dev->private; |
| 107 | 106 | ||
| 108 | if (kbtab->open++) | ||
| 109 | return 0; | ||
| 110 | |||
| 111 | kbtab->irq->dev = kbtab->usbdev; | 107 | kbtab->irq->dev = kbtab->usbdev; |
| 112 | if (usb_submit_urb(kbtab->irq, GFP_KERNEL)) { | 108 | if (usb_submit_urb(kbtab->irq, GFP_KERNEL)) |
| 113 | kbtab->open--; | ||
| 114 | return -EIO; | 109 | return -EIO; |
| 115 | } | ||
| 116 | 110 | ||
| 117 | return 0; | 111 | return 0; |
| 118 | } | 112 | } |
| @@ -121,8 +115,7 @@ static void kbtab_close(struct input_dev *dev) | |||
| 121 | { | 115 | { |
| 122 | struct kbtab *kbtab = dev->private; | 116 | struct kbtab *kbtab = dev->private; |
| 123 | 117 | ||
| 124 | if (!--kbtab->open) | 118 | usb_kill_urb(kbtab->irq); |
| 125 | usb_kill_urb(kbtab->irq); | ||
| 126 | } | 119 | } |
| 127 | 120 | ||
| 128 | static int kbtab_probe(struct usb_interface *intf, const struct usb_device_id *id) | 121 | static int kbtab_probe(struct usb_interface *intf, const struct usb_device_id *id) |
diff --git a/drivers/usb/input/mtouchusb.c b/drivers/usb/input/mtouchusb.c index ec1dd6278f7b..09b5cc7c66de 100644 --- a/drivers/usb/input/mtouchusb.c +++ b/drivers/usb/input/mtouchusb.c | |||
| @@ -98,7 +98,6 @@ struct mtouch_usb { | |||
| 98 | struct urb *irq; | 98 | struct urb *irq; |
| 99 | struct usb_device *udev; | 99 | struct usb_device *udev; |
| 100 | struct input_dev input; | 100 | struct input_dev input; |
| 101 | int open; | ||
| 102 | char name[128]; | 101 | char name[128]; |
| 103 | char phys[64]; | 102 | char phys[64]; |
| 104 | }; | 103 | }; |
| @@ -155,15 +154,10 @@ static int mtouchusb_open(struct input_dev *input) | |||
| 155 | { | 154 | { |
| 156 | struct mtouch_usb *mtouch = input->private; | 155 | struct mtouch_usb *mtouch = input->private; |
| 157 | 156 | ||
| 158 | if (mtouch->open++) | ||
| 159 | return 0; | ||
| 160 | |||
| 161 | mtouch->irq->dev = mtouch->udev; | 157 | mtouch->irq->dev = mtouch->udev; |
| 162 | 158 | ||
| 163 | if (usb_submit_urb(mtouch->irq, GFP_ATOMIC)) { | 159 | if (usb_submit_urb(mtouch->irq, GFP_ATOMIC)) |
| 164 | mtouch->open--; | ||
| 165 | return -EIO; | 160 | return -EIO; |
| 166 | } | ||
| 167 | 161 | ||
| 168 | return 0; | 162 | return 0; |
| 169 | } | 163 | } |
| @@ -172,8 +166,7 @@ static void mtouchusb_close(struct input_dev *input) | |||
| 172 | { | 166 | { |
| 173 | struct mtouch_usb *mtouch = input->private; | 167 | struct mtouch_usb *mtouch = input->private; |
| 174 | 168 | ||
| 175 | if (!--mtouch->open) | 169 | usb_kill_urb(mtouch->irq); |
| 176 | usb_kill_urb(mtouch->irq); | ||
| 177 | } | 170 | } |
| 178 | 171 | ||
| 179 | static int mtouchusb_alloc_buffers(struct usb_device *udev, struct mtouch_usb *mtouch) | 172 | static int mtouchusb_alloc_buffers(struct usb_device *udev, struct mtouch_usb *mtouch) |
diff --git a/drivers/usb/input/touchkitusb.c b/drivers/usb/input/touchkitusb.c index a71f1bbd0a17..386595ee21c0 100644 --- a/drivers/usb/input/touchkitusb.c +++ b/drivers/usb/input/touchkitusb.c | |||
| @@ -69,7 +69,6 @@ struct touchkit_usb { | |||
| 69 | struct urb *irq; | 69 | struct urb *irq; |
| 70 | struct usb_device *udev; | 70 | struct usb_device *udev; |
| 71 | struct input_dev input; | 71 | struct input_dev input; |
| 72 | int open; | ||
| 73 | char name[128]; | 72 | char name[128]; |
| 74 | char phys[64]; | 73 | char phys[64]; |
| 75 | }; | 74 | }; |
| @@ -134,15 +133,10 @@ static int touchkit_open(struct input_dev *input) | |||
| 134 | { | 133 | { |
| 135 | struct touchkit_usb *touchkit = input->private; | 134 | struct touchkit_usb *touchkit = input->private; |
| 136 | 135 | ||
| 137 | if (touchkit->open++) | ||
| 138 | return 0; | ||
| 139 | |||
| 140 | touchkit->irq->dev = touchkit->udev; | 136 | touchkit->irq->dev = touchkit->udev; |
| 141 | 137 | ||
| 142 | if (usb_submit_urb(touchkit->irq, GFP_ATOMIC)) { | 138 | if (usb_submit_urb(touchkit->irq, GFP_ATOMIC)) |
| 143 | touchkit->open--; | ||
| 144 | return -EIO; | 139 | return -EIO; |
| 145 | } | ||
| 146 | 140 | ||
| 147 | return 0; | 141 | return 0; |
| 148 | } | 142 | } |
| @@ -151,8 +145,7 @@ static void touchkit_close(struct input_dev *input) | |||
| 151 | { | 145 | { |
| 152 | struct touchkit_usb *touchkit = input->private; | 146 | struct touchkit_usb *touchkit = input->private; |
| 153 | 147 | ||
| 154 | if (!--touchkit->open) | 148 | usb_kill_urb(touchkit->irq); |
| 155 | usb_kill_urb(touchkit->irq); | ||
| 156 | } | 149 | } |
| 157 | 150 | ||
| 158 | static int touchkit_alloc_buffers(struct usb_device *udev, | 151 | static int touchkit_alloc_buffers(struct usb_device *udev, |
diff --git a/drivers/usb/input/usbkbd.c b/drivers/usb/input/usbkbd.c index 255b47a517b1..f35db1974c42 100644 --- a/drivers/usb/input/usbkbd.c +++ b/drivers/usb/input/usbkbd.c | |||
| @@ -72,7 +72,6 @@ struct usb_kbd { | |||
| 72 | unsigned char newleds; | 72 | unsigned char newleds; |
| 73 | char name[128]; | 73 | char name[128]; |
| 74 | char phys[64]; | 74 | char phys[64]; |
| 75 | int open; | ||
| 76 | 75 | ||
| 77 | unsigned char *new; | 76 | unsigned char *new; |
| 78 | struct usb_ctrlrequest *cr; | 77 | struct usb_ctrlrequest *cr; |
| @@ -180,14 +179,9 @@ static int usb_kbd_open(struct input_dev *dev) | |||
| 180 | { | 179 | { |
| 181 | struct usb_kbd *kbd = dev->private; | 180 | struct usb_kbd *kbd = dev->private; |
| 182 | 181 | ||
| 183 | if (kbd->open++) | ||
| 184 | return 0; | ||
| 185 | |||
| 186 | kbd->irq->dev = kbd->usbdev; | 182 | kbd->irq->dev = kbd->usbdev; |
| 187 | if (usb_submit_urb(kbd->irq, GFP_KERNEL)) { | 183 | if (usb_submit_urb(kbd->irq, GFP_KERNEL)) |
| 188 | kbd->open--; | ||
| 189 | return -EIO; | 184 | return -EIO; |
| 190 | } | ||
| 191 | 185 | ||
| 192 | return 0; | 186 | return 0; |
| 193 | } | 187 | } |
| @@ -196,8 +190,7 @@ static void usb_kbd_close(struct input_dev *dev) | |||
| 196 | { | 190 | { |
| 197 | struct usb_kbd *kbd = dev->private; | 191 | struct usb_kbd *kbd = dev->private; |
| 198 | 192 | ||
| 199 | if (!--kbd->open) | 193 | usb_kill_urb(kbd->irq); |
| 200 | usb_kill_urb(kbd->irq); | ||
| 201 | } | 194 | } |
| 202 | 195 | ||
| 203 | static int usb_kbd_alloc_mem(struct usb_device *dev, struct usb_kbd *kbd) | 196 | static int usb_kbd_alloc_mem(struct usb_device *dev, struct usb_kbd *kbd) |
diff --git a/drivers/usb/input/usbmouse.c b/drivers/usb/input/usbmouse.c index 8ca2811fd174..1ec41b5effe6 100644 --- a/drivers/usb/input/usbmouse.c +++ b/drivers/usb/input/usbmouse.c | |||
| @@ -51,7 +51,6 @@ struct usb_mouse { | |||
| 51 | struct usb_device *usbdev; | 51 | struct usb_device *usbdev; |
| 52 | struct input_dev dev; | 52 | struct input_dev dev; |
| 53 | struct urb *irq; | 53 | struct urb *irq; |
| 54 | int open; | ||
| 55 | 54 | ||
| 56 | signed char *data; | 55 | signed char *data; |
| 57 | dma_addr_t data_dma; | 56 | dma_addr_t data_dma; |
| @@ -101,14 +100,9 @@ static int usb_mouse_open(struct input_dev *dev) | |||
| 101 | { | 100 | { |
| 102 | struct usb_mouse *mouse = dev->private; | 101 | struct usb_mouse *mouse = dev->private; |
| 103 | 102 | ||
| 104 | if (mouse->open++) | ||
| 105 | return 0; | ||
| 106 | |||
| 107 | mouse->irq->dev = mouse->usbdev; | 103 | mouse->irq->dev = mouse->usbdev; |
| 108 | if (usb_submit_urb(mouse->irq, GFP_KERNEL)) { | 104 | if (usb_submit_urb(mouse->irq, GFP_KERNEL)) |
| 109 | mouse->open--; | ||
| 110 | return -EIO; | 105 | return -EIO; |
| 111 | } | ||
| 112 | 106 | ||
| 113 | return 0; | 107 | return 0; |
| 114 | } | 108 | } |
| @@ -117,8 +111,7 @@ static void usb_mouse_close(struct input_dev *dev) | |||
| 117 | { | 111 | { |
| 118 | struct usb_mouse *mouse = dev->private; | 112 | struct usb_mouse *mouse = dev->private; |
| 119 | 113 | ||
| 120 | if (!--mouse->open) | 114 | usb_kill_urb(mouse->irq); |
| 121 | usb_kill_urb(mouse->irq); | ||
| 122 | } | 115 | } |
| 123 | 116 | ||
| 124 | static int usb_mouse_probe(struct usb_interface * intf, const struct usb_device_id * id) | 117 | static int usb_mouse_probe(struct usb_interface * intf, const struct usb_device_id * id) |
diff --git a/drivers/usb/input/wacom.c b/drivers/usb/input/wacom.c index b3420e12ae4f..e37d31b57b23 100644 --- a/drivers/usb/input/wacom.c +++ b/drivers/usb/input/wacom.c | |||
| @@ -102,7 +102,6 @@ struct wacom { | |||
| 102 | struct urb *irq; | 102 | struct urb *irq; |
| 103 | struct wacom_features *features; | 103 | struct wacom_features *features; |
| 104 | int tool[2]; | 104 | int tool[2]; |
| 105 | int open; | ||
| 106 | __u32 serial[2]; | 105 | __u32 serial[2]; |
| 107 | char phys[32]; | 106 | char phys[32]; |
| 108 | }; | 107 | }; |
| @@ -771,14 +770,9 @@ static int wacom_open(struct input_dev *dev) | |||
| 771 | { | 770 | { |
| 772 | struct wacom *wacom = dev->private; | 771 | struct wacom *wacom = dev->private; |
| 773 | 772 | ||
| 774 | if (wacom->open++) | ||
| 775 | return 0; | ||
| 776 | |||
| 777 | wacom->irq->dev = wacom->usbdev; | 773 | wacom->irq->dev = wacom->usbdev; |
| 778 | if (usb_submit_urb(wacom->irq, GFP_KERNEL)) { | 774 | if (usb_submit_urb(wacom->irq, GFP_KERNEL)) |
| 779 | wacom->open--; | ||
| 780 | return -EIO; | 775 | return -EIO; |
| 781 | } | ||
| 782 | 776 | ||
| 783 | return 0; | 777 | return 0; |
| 784 | } | 778 | } |
| @@ -787,8 +781,7 @@ static void wacom_close(struct input_dev *dev) | |||
| 787 | { | 781 | { |
| 788 | struct wacom *wacom = dev->private; | 782 | struct wacom *wacom = dev->private; |
| 789 | 783 | ||
| 790 | if (!--wacom->open) | 784 | usb_kill_urb(wacom->irq); |
| 791 | usb_kill_urb(wacom->irq); | ||
| 792 | } | 785 | } |
| 793 | 786 | ||
| 794 | static int wacom_probe(struct usb_interface *intf, const struct usb_device_id *id) | 787 | static int wacom_probe(struct usb_interface *intf, const struct usb_device_id *id) |
diff --git a/drivers/usb/input/xpad.c b/drivers/usb/input/xpad.c index a8076ccc0b2e..a7fa1b17dcfe 100644 --- a/drivers/usb/input/xpad.c +++ b/drivers/usb/input/xpad.c | |||
| @@ -110,7 +110,6 @@ struct usb_xpad { | |||
| 110 | dma_addr_t idata_dma; | 110 | dma_addr_t idata_dma; |
| 111 | 111 | ||
| 112 | char phys[65]; /* physical device path */ | 112 | char phys[65]; /* physical device path */ |
| 113 | int open_count; /* reference count */ | ||
| 114 | }; | 113 | }; |
| 115 | 114 | ||
| 116 | /* | 115 | /* |
| @@ -197,14 +196,9 @@ static int xpad_open (struct input_dev *dev) | |||
| 197 | { | 196 | { |
| 198 | struct usb_xpad *xpad = dev->private; | 197 | struct usb_xpad *xpad = dev->private; |
| 199 | 198 | ||
| 200 | if (xpad->open_count++) | ||
| 201 | return 0; | ||
| 202 | |||
| 203 | xpad->irq_in->dev = xpad->udev; | 199 | xpad->irq_in->dev = xpad->udev; |
| 204 | if (usb_submit_urb(xpad->irq_in, GFP_KERNEL)) { | 200 | if (usb_submit_urb(xpad->irq_in, GFP_KERNEL)) |
| 205 | xpad->open_count--; | ||
| 206 | return -EIO; | 201 | return -EIO; |
| 207 | } | ||
| 208 | 202 | ||
| 209 | return 0; | 203 | return 0; |
| 210 | } | 204 | } |
| @@ -213,8 +207,7 @@ static void xpad_close (struct input_dev *dev) | |||
| 213 | { | 207 | { |
| 214 | struct usb_xpad *xpad = dev->private; | 208 | struct usb_xpad *xpad = dev->private; |
| 215 | 209 | ||
| 216 | if (!--xpad->open_count) | 210 | usb_kill_urb(xpad->irq_in); |
| 217 | usb_kill_urb(xpad->irq_in); | ||
| 218 | } | 211 | } |
| 219 | 212 | ||
| 220 | static int xpad_probe(struct usb_interface *intf, const struct usb_device_id *id) | 213 | static int xpad_probe(struct usb_interface *intf, const struct usb_device_id *id) |
