forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-02-19 1c055e55a242a33e574e48be530e06770a210dcd
kernel/drivers/usb/misc/idmouse.c
....@@ -56,11 +56,10 @@
5656 #define FTIP_SCROLL 0x24
5757
5858 #define ftip_command(dev, command, value, index) \
59
- usb_control_msg (dev->udev, usb_sndctrlpipe (dev->udev, 0), command, \
59
+ usb_control_msg(dev->udev, usb_sndctrlpipe(dev->udev, 0), command, \
6060 USB_TYPE_VENDOR | USB_RECIP_ENDPOINT | USB_DIR_OUT, value, index, NULL, 0, 1000)
6161
6262 MODULE_DEVICE_TABLE(usb, idmouse_table);
63
-static DEFINE_MUTEX(open_disc_mutex);
6463
6564 /* structure to hold all of our device specific stuff */
6665 struct usb_idmouse {
....@@ -158,8 +157,8 @@
158157
159158 /* loop over a blocking bulk read to get data from the device */
160159 while (bytes_read < IMGSIZE) {
161
- result = usb_bulk_msg (dev->udev,
162
- usb_rcvbulkpipe (dev->udev, dev->bulk_in_endpointAddr),
160
+ result = usb_bulk_msg(dev->udev,
161
+ usb_rcvbulkpipe(dev->udev, dev->bulk_in_endpointAddr),
163162 dev->bulk_in_buffer + bytes_read,
164163 dev->bulk_in_size, &bulk_read, 5000);
165164 if (result < 0) {
....@@ -178,10 +177,6 @@
178177 bytes_read += bulk_read;
179178 }
180179
181
- /* reset the device */
182
-reset:
183
- ftip_command(dev, FTIP_RELEASE, 0, 0);
184
-
185180 /* check for valid image */
186181 /* right border should be black (0x00) */
187182 for (bytes_read = sizeof(HEADER)-1 + WIDTH-1; bytes_read < IMGSIZE; bytes_read += WIDTH)
....@@ -192,6 +187,10 @@
192187 for (bytes_read = IMGSIZE-WIDTH; bytes_read < IMGSIZE-1; bytes_read++)
193188 if (dev->bulk_in_buffer[bytes_read] != 0xFF)
194189 return -EAGAIN;
190
+
191
+ /* reset the device */
192
+reset:
193
+ ftip_command(dev, FTIP_RELEASE, 0, 0);
195194
196195 /* should be IMGSIZE == 65040 */
197196 dev_dbg(&dev->interface->dev, "read %d bytes fingerprint data\n",
....@@ -223,21 +222,17 @@
223222 int result;
224223
225224 /* get the interface from minor number and driver information */
226
- interface = usb_find_interface (&idmouse_driver, iminor (inode));
225
+ interface = usb_find_interface(&idmouse_driver, iminor(inode));
227226 if (!interface)
228227 return -ENODEV;
229228
230
- mutex_lock(&open_disc_mutex);
231229 /* get the device information block from the interface */
232230 dev = usb_get_intfdata(interface);
233
- if (!dev) {
234
- mutex_unlock(&open_disc_mutex);
231
+ if (!dev)
235232 return -ENODEV;
236
- }
237233
238234 /* lock this device */
239235 mutex_lock(&dev->lock);
240
- mutex_unlock(&open_disc_mutex);
241236
242237 /* check if already open */
243238 if (dev->open) {
....@@ -251,7 +246,7 @@
251246 result = usb_autopm_get_interface(interface);
252247 if (result)
253248 goto error;
254
- result = idmouse_create_image (dev);
249
+ result = idmouse_create_image(dev);
255250 usb_autopm_put_interface(interface);
256251 if (result)
257252 goto error;
....@@ -280,27 +275,17 @@
280275 if (dev == NULL)
281276 return -ENODEV;
282277
283
- mutex_lock(&open_disc_mutex);
284278 /* lock our device */
285279 mutex_lock(&dev->lock);
286
-
287
- /* are we really open? */
288
- if (dev->open <= 0) {
289
- mutex_unlock(&dev->lock);
290
- mutex_unlock(&open_disc_mutex);
291
- return -ENODEV;
292
- }
293280
294281 --dev->open;
295282
296283 if (!dev->present) {
297284 /* the device was unplugged before the file was released */
298285 mutex_unlock(&dev->lock);
299
- mutex_unlock(&open_disc_mutex);
300286 idmouse_delete(dev);
301287 } else {
302288 mutex_unlock(&dev->lock);
303
- mutex_unlock(&open_disc_mutex);
304289 }
305290 return 0;
306291 }
....@@ -379,7 +364,6 @@
379364 if (result) {
380365 /* something prevented us from registering this device */
381366 dev_err(&interface->dev, "Unable to allocate minor number.\n");
382
- usb_set_intfdata(interface, NULL);
383367 idmouse_delete(dev);
384368 return result;
385369 }
....@@ -392,19 +376,13 @@
392376
393377 static void idmouse_disconnect(struct usb_interface *interface)
394378 {
395
- struct usb_idmouse *dev;
396
-
397
- /* get device structure */
398
- dev = usb_get_intfdata(interface);
379
+ struct usb_idmouse *dev = usb_get_intfdata(interface);
399380
400381 /* give back our minor */
401382 usb_deregister_dev(interface, &idmouse_class);
402383
403
- mutex_lock(&open_disc_mutex);
404
- usb_set_intfdata(interface, NULL);
405384 /* lock the device */
406385 mutex_lock(&dev->lock);
407
- mutex_unlock(&open_disc_mutex);
408386
409387 /* prevent device read, write and ioctl */
410388 dev->present = 0;