Loading drivers/usb/storage/onetouch.c +50 −49 Original line number Diff line number Diff line Loading @@ -46,7 +46,7 @@ void onetouch_release_input(void *onetouch_); struct usb_onetouch { char name[128]; char phys[64]; struct input_dev dev; /* input device interface */ struct input_dev *dev; /* input device interface */ struct usb_device *udev; /* usb device */ struct urb *irq; /* urb for interrupt in report */ Loading @@ -58,7 +58,7 @@ static void usb_onetouch_irq(struct urb *urb, struct pt_regs *regs) { struct usb_onetouch *onetouch = urb->context; signed char *data = onetouch->data; struct input_dev *dev = &onetouch->dev; struct input_dev *dev = onetouch->dev; int status; switch (urb->status) { Loading @@ -74,11 +74,9 @@ static void usb_onetouch_irq(struct urb *urb, struct pt_regs *regs) } input_regs(dev, regs); input_report_key(&onetouch->dev, ONETOUCH_BUTTON, data[0] & 0x02); input_report_key(dev, ONETOUCH_BUTTON, data[0] & 0x02); input_sync(dev); resubmit: status = usb_submit_urb (urb, SLAB_ATOMIC); if (status) Loading Loading @@ -113,8 +111,8 @@ int onetouch_connect_input(struct us_data *ss) struct usb_host_interface *interface; struct usb_endpoint_descriptor *endpoint; struct usb_onetouch *onetouch; struct input_dev *input_dev; int pipe, maxp; char path[64]; interface = ss->pusb_intf->cur_altsetting; Loading @@ -131,53 +129,53 @@ int onetouch_connect_input(struct us_data *ss) pipe = usb_rcvintpipe(udev, endpoint->bEndpointAddress); maxp = usb_maxpacket(udev, pipe, usb_pipeout(pipe)); if (!(onetouch = kcalloc(1, sizeof(struct usb_onetouch), GFP_KERNEL))) return -ENOMEM; onetouch = kzalloc(sizeof(struct usb_onetouch), GFP_KERNEL); input_dev = input_allocate_device(); if (!onetouch || !input_dev) goto fail1; onetouch->data = usb_buffer_alloc(udev, ONETOUCH_PKT_LEN, SLAB_ATOMIC, &onetouch->data_dma); if (!onetouch->data){ kfree(onetouch); return -ENOMEM; } if (!onetouch->data) goto fail1; onetouch->irq = usb_alloc_urb(0, GFP_KERNEL); if (!onetouch->irq){ kfree(onetouch); usb_buffer_free(udev, ONETOUCH_PKT_LEN, onetouch->data, onetouch->data_dma); return -ENODEV; } if (!onetouch->irq) goto fail2; onetouch->udev = udev; onetouch->dev = input_dev; set_bit(EV_KEY, onetouch->dev.evbit); set_bit(ONETOUCH_BUTTON, onetouch->dev.keybit); clear_bit(0, onetouch->dev.keybit); onetouch->dev.private = onetouch; onetouch->dev.open = usb_onetouch_open; onetouch->dev.close = usb_onetouch_close; if (udev->manufacturer) strlcpy(onetouch->name, udev->manufacturer, sizeof(onetouch->name)); if (udev->product) { if (udev->manufacturer) strlcat(onetouch->name, " ", sizeof(onetouch->name)); strlcat(onetouch->name, udev->product, sizeof(onetouch->name)); } usb_make_path(udev, path, sizeof(path)); sprintf(onetouch->phys, "%s/input0", path); if (!strlen(onetouch->name)) snprintf(onetouch->name, sizeof(onetouch->name), "Maxtor Onetouch %04x:%04x", le16_to_cpu(udev->descriptor.idVendor), le16_to_cpu(udev->descriptor.idProduct)); onetouch->dev.name = onetouch->name; onetouch->dev.phys = onetouch->phys; usb_make_path(udev, onetouch->phys, sizeof(onetouch->phys)); strlcat(onetouch->phys, "/input0", sizeof(onetouch->phys)); usb_to_input_id(udev, &onetouch->dev.id); input_dev->name = onetouch->name; input_dev->phys = onetouch->phys; usb_to_input_id(udev, &input_dev->id); input_dev->cdev.dev = &udev->dev; onetouch->dev.dev = &udev->dev; set_bit(EV_KEY, input_dev->evbit); set_bit(ONETOUCH_BUTTON, input_dev->keybit); clear_bit(0, input_dev->keybit); if (udev->manufacturer) strcat(onetouch->name, udev->manufacturer); if (udev->product) sprintf(onetouch->name, "%s %s", onetouch->name, udev->product); if (!strlen(onetouch->name)) sprintf(onetouch->name, "Maxtor Onetouch %04x:%04x", onetouch->dev.id.vendor, onetouch->dev.id.product); input_dev->private = onetouch; input_dev->open = usb_onetouch_open; input_dev->close = usb_onetouch_close; usb_fill_int_urb(onetouch->irq, udev, pipe, onetouch->data, (maxp > 8 ? 8 : maxp), Loading @@ -188,10 +186,15 @@ int onetouch_connect_input(struct us_data *ss) ss->extra_destructor = onetouch_release_input; ss->extra = onetouch; input_register_device(&onetouch->dev); printk(KERN_INFO "usb-input: %s on %s\n", onetouch->dev.name, path); input_register_device(onetouch->dev); return 0; fail2: usb_buffer_free(udev, ONETOUCH_PKT_LEN, onetouch->data, onetouch->data_dma); fail1: kfree(onetouch); input_free_device(input_dev); return -ENOMEM; } void onetouch_release_input(void *onetouch_) Loading @@ -200,11 +203,9 @@ void onetouch_release_input(void *onetouch_) if (onetouch) { usb_kill_urb(onetouch->irq); input_unregister_device(&onetouch->dev); input_unregister_device(onetouch->dev); usb_free_urb(onetouch->irq); usb_buffer_free(onetouch->udev, ONETOUCH_PKT_LEN, onetouch->data, onetouch->data_dma); printk(KERN_INFO "usb-input: deregistering %s\n", onetouch->dev.name); } } Loading
drivers/usb/storage/onetouch.c +50 −49 Original line number Diff line number Diff line Loading @@ -46,7 +46,7 @@ void onetouch_release_input(void *onetouch_); struct usb_onetouch { char name[128]; char phys[64]; struct input_dev dev; /* input device interface */ struct input_dev *dev; /* input device interface */ struct usb_device *udev; /* usb device */ struct urb *irq; /* urb for interrupt in report */ Loading @@ -58,7 +58,7 @@ static void usb_onetouch_irq(struct urb *urb, struct pt_regs *regs) { struct usb_onetouch *onetouch = urb->context; signed char *data = onetouch->data; struct input_dev *dev = &onetouch->dev; struct input_dev *dev = onetouch->dev; int status; switch (urb->status) { Loading @@ -74,11 +74,9 @@ static void usb_onetouch_irq(struct urb *urb, struct pt_regs *regs) } input_regs(dev, regs); input_report_key(&onetouch->dev, ONETOUCH_BUTTON, data[0] & 0x02); input_report_key(dev, ONETOUCH_BUTTON, data[0] & 0x02); input_sync(dev); resubmit: status = usb_submit_urb (urb, SLAB_ATOMIC); if (status) Loading Loading @@ -113,8 +111,8 @@ int onetouch_connect_input(struct us_data *ss) struct usb_host_interface *interface; struct usb_endpoint_descriptor *endpoint; struct usb_onetouch *onetouch; struct input_dev *input_dev; int pipe, maxp; char path[64]; interface = ss->pusb_intf->cur_altsetting; Loading @@ -131,53 +129,53 @@ int onetouch_connect_input(struct us_data *ss) pipe = usb_rcvintpipe(udev, endpoint->bEndpointAddress); maxp = usb_maxpacket(udev, pipe, usb_pipeout(pipe)); if (!(onetouch = kcalloc(1, sizeof(struct usb_onetouch), GFP_KERNEL))) return -ENOMEM; onetouch = kzalloc(sizeof(struct usb_onetouch), GFP_KERNEL); input_dev = input_allocate_device(); if (!onetouch || !input_dev) goto fail1; onetouch->data = usb_buffer_alloc(udev, ONETOUCH_PKT_LEN, SLAB_ATOMIC, &onetouch->data_dma); if (!onetouch->data){ kfree(onetouch); return -ENOMEM; } if (!onetouch->data) goto fail1; onetouch->irq = usb_alloc_urb(0, GFP_KERNEL); if (!onetouch->irq){ kfree(onetouch); usb_buffer_free(udev, ONETOUCH_PKT_LEN, onetouch->data, onetouch->data_dma); return -ENODEV; } if (!onetouch->irq) goto fail2; onetouch->udev = udev; onetouch->dev = input_dev; set_bit(EV_KEY, onetouch->dev.evbit); set_bit(ONETOUCH_BUTTON, onetouch->dev.keybit); clear_bit(0, onetouch->dev.keybit); onetouch->dev.private = onetouch; onetouch->dev.open = usb_onetouch_open; onetouch->dev.close = usb_onetouch_close; if (udev->manufacturer) strlcpy(onetouch->name, udev->manufacturer, sizeof(onetouch->name)); if (udev->product) { if (udev->manufacturer) strlcat(onetouch->name, " ", sizeof(onetouch->name)); strlcat(onetouch->name, udev->product, sizeof(onetouch->name)); } usb_make_path(udev, path, sizeof(path)); sprintf(onetouch->phys, "%s/input0", path); if (!strlen(onetouch->name)) snprintf(onetouch->name, sizeof(onetouch->name), "Maxtor Onetouch %04x:%04x", le16_to_cpu(udev->descriptor.idVendor), le16_to_cpu(udev->descriptor.idProduct)); onetouch->dev.name = onetouch->name; onetouch->dev.phys = onetouch->phys; usb_make_path(udev, onetouch->phys, sizeof(onetouch->phys)); strlcat(onetouch->phys, "/input0", sizeof(onetouch->phys)); usb_to_input_id(udev, &onetouch->dev.id); input_dev->name = onetouch->name; input_dev->phys = onetouch->phys; usb_to_input_id(udev, &input_dev->id); input_dev->cdev.dev = &udev->dev; onetouch->dev.dev = &udev->dev; set_bit(EV_KEY, input_dev->evbit); set_bit(ONETOUCH_BUTTON, input_dev->keybit); clear_bit(0, input_dev->keybit); if (udev->manufacturer) strcat(onetouch->name, udev->manufacturer); if (udev->product) sprintf(onetouch->name, "%s %s", onetouch->name, udev->product); if (!strlen(onetouch->name)) sprintf(onetouch->name, "Maxtor Onetouch %04x:%04x", onetouch->dev.id.vendor, onetouch->dev.id.product); input_dev->private = onetouch; input_dev->open = usb_onetouch_open; input_dev->close = usb_onetouch_close; usb_fill_int_urb(onetouch->irq, udev, pipe, onetouch->data, (maxp > 8 ? 8 : maxp), Loading @@ -188,10 +186,15 @@ int onetouch_connect_input(struct us_data *ss) ss->extra_destructor = onetouch_release_input; ss->extra = onetouch; input_register_device(&onetouch->dev); printk(KERN_INFO "usb-input: %s on %s\n", onetouch->dev.name, path); input_register_device(onetouch->dev); return 0; fail2: usb_buffer_free(udev, ONETOUCH_PKT_LEN, onetouch->data, onetouch->data_dma); fail1: kfree(onetouch); input_free_device(input_dev); return -ENOMEM; } void onetouch_release_input(void *onetouch_) Loading @@ -200,11 +203,9 @@ void onetouch_release_input(void *onetouch_) if (onetouch) { usb_kill_urb(onetouch->irq); input_unregister_device(&onetouch->dev); input_unregister_device(onetouch->dev); usb_free_urb(onetouch->irq); usb_buffer_free(onetouch->udev, ONETOUCH_PKT_LEN, onetouch->data, onetouch->data_dma); printk(KERN_INFO "usb-input: deregistering %s\n", onetouch->dev.name); } }