Loading drivers/usb/media/konicawc.c +61 −28 Original line number Diff line number Diff line Loading @@ -119,7 +119,7 @@ struct konicawc { int yplanesz; /* Number of bytes in the Y plane */ unsigned int buttonsts:1; #ifdef CONFIG_INPUT struct input_dev input; struct input_dev *input; char input_physname[64]; #endif }; Loading Loading @@ -218,6 +218,57 @@ static void konicawc_adjust_picture(struct uvd *uvd) konicawc_camera_on(uvd); } #ifdef CONFIG_INPUT static void konicawc_register_input(struct konicawc *cam, struct usb_device *dev) { struct input_dev *input_dev; usb_make_path(dev, cam->input_physname, sizeof(cam->input_physname)); strncat(cam->input_physname, "/input0", sizeof(cam->input_physname)); cam->input = input_dev = input_allocate_device(); if (!input_dev) { warn("Not enough memory for camera's input device\n"); return; } input_dev->name = "Konicawc snapshot button"; input_dev->phys = cam->input_physname; usb_to_input_id(dev, &input_dev->id); input_dev->cdev.dev = &dev->dev; input_dev->evbit[0] = BIT(EV_KEY); input_dev->keybit[LONG(BTN_0)] = BIT(BTN_0); input_dev->private = cam; input_register_device(cam->input); } static void konicawc_unregister_input(struct konicawc *cam) { if (cam->input) { input_unregister_device(cam->input); cam->input = NULL; } } static void konicawc_report_buttonstat(struct konicawc *cam) { if (cam->input) { input_report_key(cam->input, BTN_0, cam->buttonsts); input_sync(cam->input); } } #else static inline void konicawc_register_input(struct konicawc *cam, struct usb_device *dev) { } static inline void konicawc_unregister_input(struct konicawc *cam) { } static inline void konicawc_report_buttonstat(struct konicawc *cam) { } #endif /* CONFIG_INPUT */ static int konicawc_compress_iso(struct uvd *uvd, struct urb *dataurb, struct urb *stsurb) { Loading Loading @@ -273,10 +324,7 @@ static int konicawc_compress_iso(struct uvd *uvd, struct urb *dataurb, struct ur if(button != cam->buttonsts) { DEBUG(2, "button: %sclicked", button ? "" : "un"); cam->buttonsts = button; #ifdef CONFIG_INPUT input_report_key(&cam->input, BTN_0, cam->buttonsts); input_sync(&cam->input); #endif konicawc_report_buttonstat(cam); } if(sts == 0x01) { /* drop frame */ Loading Loading @@ -718,7 +766,6 @@ static void konicawc_configure_video(struct uvd *uvd) DEBUG(1, "setting initial values"); } static int konicawc_probe(struct usb_interface *intf, const struct usb_device_id *devid) { struct usb_device *dev = interface_to_usbdev(intf); Loading Loading @@ -839,21 +886,8 @@ static int konicawc_probe(struct usb_interface *intf, const struct usb_device_id err("usbvideo_RegisterVideoDevice() failed."); uvd = NULL; } #ifdef CONFIG_INPUT /* Register input device for button */ memset(&cam->input, 0, sizeof(struct input_dev)); cam->input.name = "Konicawc snapshot button"; cam->input.private = cam; cam->input.evbit[0] = BIT(EV_KEY); cam->input.keybit[LONG(BTN_0)] = BIT(BTN_0); usb_to_input_id(dev, &cam->input.id); input_register_device(&cam->input); usb_make_path(dev, cam->input_physname, 56); strcat(cam->input_physname, "/input0"); cam->input.phys = cam->input_physname; info("konicawc: %s on %s\n", cam->input.name, cam->input.phys); #endif konicawc_register_input(cam, dev); } if (uvd) { Loading @@ -869,9 +903,8 @@ static void konicawc_free_uvd(struct uvd *uvd) int i; struct konicawc *cam = (struct konicawc *)uvd->user_data; #ifdef CONFIG_INPUT input_unregister_device(&cam->input); #endif konicawc_unregister_input(cam); for (i = 0; i < USBVIDEO_NUMSBUF; i++) { usb_free_urb(cam->sts_urb[i]); cam->sts_urb[i] = NULL; Loading Loading
drivers/usb/media/konicawc.c +61 −28 Original line number Diff line number Diff line Loading @@ -119,7 +119,7 @@ struct konicawc { int yplanesz; /* Number of bytes in the Y plane */ unsigned int buttonsts:1; #ifdef CONFIG_INPUT struct input_dev input; struct input_dev *input; char input_physname[64]; #endif }; Loading Loading @@ -218,6 +218,57 @@ static void konicawc_adjust_picture(struct uvd *uvd) konicawc_camera_on(uvd); } #ifdef CONFIG_INPUT static void konicawc_register_input(struct konicawc *cam, struct usb_device *dev) { struct input_dev *input_dev; usb_make_path(dev, cam->input_physname, sizeof(cam->input_physname)); strncat(cam->input_physname, "/input0", sizeof(cam->input_physname)); cam->input = input_dev = input_allocate_device(); if (!input_dev) { warn("Not enough memory for camera's input device\n"); return; } input_dev->name = "Konicawc snapshot button"; input_dev->phys = cam->input_physname; usb_to_input_id(dev, &input_dev->id); input_dev->cdev.dev = &dev->dev; input_dev->evbit[0] = BIT(EV_KEY); input_dev->keybit[LONG(BTN_0)] = BIT(BTN_0); input_dev->private = cam; input_register_device(cam->input); } static void konicawc_unregister_input(struct konicawc *cam) { if (cam->input) { input_unregister_device(cam->input); cam->input = NULL; } } static void konicawc_report_buttonstat(struct konicawc *cam) { if (cam->input) { input_report_key(cam->input, BTN_0, cam->buttonsts); input_sync(cam->input); } } #else static inline void konicawc_register_input(struct konicawc *cam, struct usb_device *dev) { } static inline void konicawc_unregister_input(struct konicawc *cam) { } static inline void konicawc_report_buttonstat(struct konicawc *cam) { } #endif /* CONFIG_INPUT */ static int konicawc_compress_iso(struct uvd *uvd, struct urb *dataurb, struct urb *stsurb) { Loading Loading @@ -273,10 +324,7 @@ static int konicawc_compress_iso(struct uvd *uvd, struct urb *dataurb, struct ur if(button != cam->buttonsts) { DEBUG(2, "button: %sclicked", button ? "" : "un"); cam->buttonsts = button; #ifdef CONFIG_INPUT input_report_key(&cam->input, BTN_0, cam->buttonsts); input_sync(&cam->input); #endif konicawc_report_buttonstat(cam); } if(sts == 0x01) { /* drop frame */ Loading Loading @@ -718,7 +766,6 @@ static void konicawc_configure_video(struct uvd *uvd) DEBUG(1, "setting initial values"); } static int konicawc_probe(struct usb_interface *intf, const struct usb_device_id *devid) { struct usb_device *dev = interface_to_usbdev(intf); Loading Loading @@ -839,21 +886,8 @@ static int konicawc_probe(struct usb_interface *intf, const struct usb_device_id err("usbvideo_RegisterVideoDevice() failed."); uvd = NULL; } #ifdef CONFIG_INPUT /* Register input device for button */ memset(&cam->input, 0, sizeof(struct input_dev)); cam->input.name = "Konicawc snapshot button"; cam->input.private = cam; cam->input.evbit[0] = BIT(EV_KEY); cam->input.keybit[LONG(BTN_0)] = BIT(BTN_0); usb_to_input_id(dev, &cam->input.id); input_register_device(&cam->input); usb_make_path(dev, cam->input_physname, 56); strcat(cam->input_physname, "/input0"); cam->input.phys = cam->input_physname; info("konicawc: %s on %s\n", cam->input.name, cam->input.phys); #endif konicawc_register_input(cam, dev); } if (uvd) { Loading @@ -869,9 +903,8 @@ static void konicawc_free_uvd(struct uvd *uvd) int i; struct konicawc *cam = (struct konicawc *)uvd->user_data; #ifdef CONFIG_INPUT input_unregister_device(&cam->input); #endif konicawc_unregister_input(cam); for (i = 0; i < USBVIDEO_NUMSBUF; i++) { usb_free_urb(cam->sts_urb[i]); cam->sts_urb[i] = NULL; Loading