From: Dmitry Torokhov <dtor_core@ameritech.net>
To: linux-kernel@vger.kernel.org
Cc: Andrew Morton <akpm@osdl.org>, Greg KH <gregkh@suse.de>,
Kay Sievers <kay.sievers@vrfy.org>,
Vojtech Pavlik <vojtech@suse.cz>, Hannes Reinecke <hare@suse.de>
Subject: [patch 11/28] Input: convert konicawc to dynamic input_dev allocation
Date: Thu, 15 Sep 2005 02:01:42 -0500 [thread overview]
Message-ID: <20050915070303.236124000.dtor_core@ameritech.net> (raw)
In-Reply-To: <20050915070131.813650000.dtor_core@ameritech.net>
[-- Attachment #1: input-dynalloc-konicawc.patch --]
[-- Type: text/plain, Size: 4514 bytes --]
Input: convert konicawc to dynamic input_dev allocation
This is required for input_dev sysfs integration
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
---
drivers/usb/media/konicawc.c | 89 +++++++++++++++++++++++++++++--------------
1 files changed, 61 insertions(+), 28 deletions(-)
Index: work/drivers/usb/media/konicawc.c
===================================================================
--- work.orig/drivers/usb/media/konicawc.c
+++ work/drivers/usb/media/konicawc.c
@@ -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
};
@@ -218,6 +218,57 @@ static void konicawc_adjust_picture(stru
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)
{
@@ -273,10 +324,7 @@ static int konicawc_compress_iso(struct
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 */
@@ -645,9 +693,9 @@ static int konicawc_set_video_mode(struc
RingQueue_Flush(&uvd->dp);
cam->lastframe = -2;
if(uvd->curframe != -1) {
- uvd->frame[uvd->curframe].curline = 0;
- uvd->frame[uvd->curframe].seqRead_Length = 0;
- uvd->frame[uvd->curframe].seqRead_Index = 0;
+ uvd->frame[uvd->curframe].curline = 0;
+ uvd->frame[uvd->curframe].seqRead_Length = 0;
+ uvd->frame[uvd->curframe].seqRead_Index = 0;
}
konicawc_start_data(uvd);
@@ -718,7 +766,6 @@ static void konicawc_configure_video(str
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);
@@ -839,21 +886,8 @@ static int konicawc_probe(struct usb_int
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) {
@@ -869,10 +903,9 @@ static void konicawc_free_uvd(struct uvd
int i;
struct konicawc *cam = (struct konicawc *)uvd->user_data;
-#ifdef CONFIG_INPUT
- input_unregister_device(&cam->input);
-#endif
- for (i=0; i < USBVIDEO_NUMSBUF; i++) {
+ konicawc_unregister_input(cam);
+
+ for (i = 0; i < USBVIDEO_NUMSBUF; i++) {
usb_free_urb(cam->sts_urb[i]);
cam->sts_urb[i] = NULL;
}
next prev parent reply other threads:[~2005-09-15 7:32 UTC|newest]
Thread overview: 54+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-09-15 7:01 [patch 00/28] RFC/RFT: Input - sysfs integration Dmitry Torokhov
2005-09-15 7:01 ` [patch 01/28] I2O: remove class interface Dmitry Torokhov
2005-09-27 0:03 ` Greg KH
2005-09-27 8:39 ` Markus Lidel
2005-09-15 7:01 ` [patch 02/28] I2O: remove i2o_device_class Dmitry Torokhov
2005-09-27 0:28 ` Greg KH
2005-09-15 7:01 ` [patch 03/28] Driver core: allow nesting classes Dmitry Torokhov
2005-09-15 7:01 ` [patch 04/28] Driver core: make parent class define subsystem Dmitry Torokhov
2005-09-15 7:01 ` [patch 05/28] Driver core: pass interface to class intreface methods Dmitry Torokhov
2005-09-15 7:01 ` [patch 06/28] Driver core: send hotplug event before adding class interfaces Dmitry Torokhov
2005-09-15 7:01 ` [patch 07/28] Input: kill devfs references Dmitry Torokhov
2005-09-15 7:01 ` [patch 08/28] Input: prepare to sysfs integration Dmitry Torokhov
2005-10-05 22:03 ` Greg KH
2005-10-05 22:17 ` Dmitry Torokhov
2005-10-05 22:55 ` Greg KH
2005-10-06 17:46 ` Dmitry Torokhov
2005-10-06 23:05 ` Vojtech Pavlik
2005-10-07 3:58 ` Dmitry Torokhov
2005-10-07 6:41 ` Al Viro
2005-10-07 6:49 ` Dmitry Torokhov
2005-09-15 7:01 ` [patch 09/28] Input: convert net/bluetooth to dynamic input_dev allocation Dmitry Torokhov
2005-09-15 7:54 ` Marcel Holtmann
2005-09-15 14:22 ` Dmitry Torokhov
2005-09-15 14:41 ` Marcel Holtmann
2005-09-15 19:07 ` Vojtech Pavlik
2005-09-15 19:22 ` Dmitry Torokhov
2005-09-15 19:31 ` Greg KH
2005-09-15 19:52 ` Dmitry Torokhov
2005-09-15 20:25 ` Vojtech Pavlik
2005-09-15 20:55 ` Dmitry Torokhov
2005-09-15 21:16 ` Vojtech Pavlik
2005-09-15 7:01 ` [patch 10/28] Input: convert drivers/macintosh " Dmitry Torokhov
2005-09-15 7:01 ` Dmitry Torokhov [this message]
2005-09-15 7:01 ` [patch 12/28] Input: convert onetouch " Dmitry Torokhov
2005-09-15 7:01 ` [patch 13/28] drivers/input/mouse: convert " Dmitry Torokhov
2005-09-15 7:01 ` [patch 14/28] drivers/input/keyboard: " Dmitry Torokhov
2005-09-15 7:01 ` [patch 15/28] drivers/input/touchscreen: " Dmitry Torokhov
2005-09-15 7:01 ` [patch 17/28] Input: convert ucb1x00-ts " Dmitry Torokhov
2005-09-15 7:01 ` [patch 18/28] Input: convert sound/ppc/beep " Dmitry Torokhov
2005-09-15 7:01 ` [patch 19/28] Input: convert sonypi " Dmitry Torokhov
2005-09-15 7:01 ` [patch 20/28] Input: convert driver/input/misc " Dmitry Torokhov
2005-09-15 7:01 ` [patch 22/28] drivers/media: convert " Dmitry Torokhov
2005-09-15 7:01 ` [patch 23/28] Input: show sysfs path in /proc/bus/input/devices Dmitry Torokhov
2005-09-15 7:01 ` [patch 24/28] Input: export input_dev data via sysfs attributes Dmitry Torokhov
2005-09-15 7:01 ` [patch 25/28] input core: implement class hierachy Dmitry Torokhov
2005-09-15 7:01 ` [patch 26/28] input core: remove custom-made hotplug handler Dmitry Torokhov
2005-09-15 7:01 ` [patch 27/28] Input: convert input handlers to class interfaces Dmitry Torokhov
2005-09-15 7:01 ` [patch 28/28] Input: convert to seq_file Dmitry Torokhov
2005-09-15 7:59 ` [patch 00/28] RFC/RFT: Input - sysfs integration Marcel Holtmann
2005-09-15 14:27 ` Dmitry Torokhov
[not found] ` <20050915070304.070090000.dtor_core@ameritech.net>
2005-09-16 3:53 ` [patch 16/28] drivers/usb/input: convert to dynamic input_dev allocation Andrew Morton
2005-09-16 3:59 ` Dmitry Torokhov
2005-09-16 4:18 ` Andrew Morton
2005-09-16 4:30 ` Dmitry Torokhov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20050915070303.236124000.dtor_core@ameritech.net \
--to=dtor_core@ameritech.net \
--cc=akpm@osdl.org \
--cc=gregkh@suse.de \
--cc=hare@suse.de \
--cc=kay.sievers@vrfy.org \
--cc=linux-kernel@vger.kernel.org \
--cc=vojtech@suse.cz \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome