Input: convert driver/input/misc to dynamic input_dev allocation
Subsystems (3)
PATCH 1/1 Input: convert driver/input/misc to dynamic input_dev allocation
In reply to a message not in the archive[PATCH] Input: convert driver/input/misc to dynamic input_dev allocation
Input: convert driver/input/misc to dynamic input_dev allocation
This is required for input_dev sysfs integration
---
commit fa68a960b3f68ecabca13a8d6239ebe52435cff9
tree 108b3b7bf93870e525643c1bafdaf49a09f0e5ab
parent 9b372d662ed489f3aac7e88e9452ce4c923b11d7
author Dmitry Torokhov <[email protected]> Thu, 15 Sep 2005 02:01:51 -0500 committer Greg Kroah-Hartman <[email protected]> Thu, 27 Oct 2005 22:48:04 -0700
drivers/input/misc/m68kspkr.c | 40 ++++++++++++++++++------------------ drivers/input/misc/pcspkr.c | 34 +++++++++++++++--------------- drivers/input/misc/sparcspkr.c | 45 ++++++++++++++++++++-------------------- 3 files changed, 59 insertions(+), 60 deletions(-)
drivers/input/misc/m68kspkr.c +20 -20
@@ -24,9 +24,7 @@ MODULE_AUTHOR("Richard Zidlicky <rz@linuMODULE_DESCRIPTION ("m68k beeper driver" );MODULE_LICENSE ("GPL" ); -static char m68kspkr_name[] ="m68k beeper" ; -static char m68kspkr_phys[] ="m68k/generic" ; -static struct input_dev m68kspkr_dev; +static struct input_dev *m68kspkr_dev;static int m68kspkr_event (struct input_dev *dev,unsigned int type,unsigned int code,int value) {
@@ -51,32 +49,34 @@ static int m68kspkr_event(struct input_dstatic int __init m68kspkr_init (void ) { -if (!mach_beep){ -printk ("%s: no lowlevel beep support\n" , m68kspkr_name); -return -1 ; +if (!mach_beep) { +printk (KERN_INFO "m68kspkr: no lowlevel beep support\n" ); +return -ENODEV ; } - m68kspkr_dev.evbit[0 ] =BIT (EV_SND ); - m68kspkr_dev.sndbit[0 ] =BIT (SND_BELL ) |BIT (SND_TONE ); - m68kspkr_dev.event = m68kspkr_event; - - m68kspkr_dev.name = m68kspkr_name; - m68kspkr_dev.phys = m68kspkr_phys; - m68kspkr_dev.id.bustype =BUS_HOST ; - m68kspkr_dev.id.vendor =0x001f ; - m68kspkr_dev.id.product =0x0001 ; - m68kspkr_dev.id.version =0x0100 ; - -input_register_device (&m68kspkr_dev); + m68kspkr_dev =input_allocate_device (); +if (!m68kspkr_dev) +return -ENOMEM ; + + m68kspkr_dev->name ="m68k beeper" ; + m68kspkr_dev->phys ="m68k/generic" ; + m68kspkr_dev->id.bustype =BUS_HOST ; + m68kspkr_dev->id.vendor =0x001f ; + m68kspkr_dev->id.product =0x0001 ; + m68kspkr_dev->id.version =0x0100 ; + + m68kspkr_dev->evbit[0 ] =BIT (EV_SND ); + m68kspkr_dev->sndbit[0 ] =BIT (SND_BELL ) |BIT (SND_TONE ); + m68kspkr_dev->event = m68kspkr_event; -printk (KERN_INFO "input: %s\n" , m68kspkr_name); +input_register_device (m68kspkr_dev);return 0 ; } static void __exit m68kspkr_exit(void) { -input_unregister_device (&m68kspkr_dev); +input_unregister_device (m68kspkr_dev); }module_init (m68kspkr_init);
drivers/input/misc/pcspkr.c +17 -17
@@ -23,9 +23,7 @@ MODULE_AUTHOR("Vojtech Pavlik <vojtech@uMODULE_DESCRIPTION ("PC Speaker beeper driver" );MODULE_LICENSE ("GPL" ); -static char pcspkr_name[] ="PC Speaker" ; -static char pcspkr_phys[] ="isa0061/input0" ; -static struct input_dev pcspkr_dev; +static struct input_dev *pcspkr_dev;static DEFINE_SPINLOCK (i8253_beep_lock);
@@ -68,27 +66,29 @@ static int pcspkr_event(struct input_devstatic int __init pcspkr_init (void ) { - pcspkr_dev.evbit[0 ] =BIT (EV_SND ); - pcspkr_dev.sndbit[0 ] =BIT (SND_BELL ) |BIT (SND_TONE ); - pcspkr_dev.event = pcspkr_event; - - pcspkr_dev.name = pcspkr_name; - pcspkr_dev.phys = pcspkr_phys; - pcspkr_dev.id.bustype =BUS_ISA ; - pcspkr_dev.id.vendor =0x001f ; - pcspkr_dev.id.product =0x0001 ; - pcspkr_dev.id.version =0x0100 ; + pcspkr_dev =input_allocate_device (); +if (!pcspkr_dev) +return -ENOMEM ; + + pcspkr_dev->name ="PC Speaker" ; + pcspkr_dev->name ="isa0061/input0" ; + pcspkr_dev->id.bustype =BUS_ISA ; + pcspkr_dev->id.vendor =0x001f ; + pcspkr_dev->id.product =0x0001 ; + pcspkr_dev->id.version =0x0100 ; + + pcspkr_dev->evbit[0 ] =BIT (EV_SND ); + pcspkr_dev->sndbit[0 ] =BIT (SND_BELL ) |BIT (SND_TONE ); + pcspkr_dev->event = pcspkr_event; -input_register_device (&pcspkr_dev); - -printk (KERN_INFO "input: %s\n" , pcspkr_name); +input_register_device (pcspkr_dev);return 0 ; } static void __exit pcspkr_exit(void) { -input_unregister_device (&pcspkr_dev); +input_unregister_device (pcspkr_dev);/* turn off the speaker */ pcspkr_event (NULL ,EV_SND ,SND_BELL ,0 ); }
drivers/input/misc/sparcspkr.c +22 -23
86 lines not on this page · raw message
PATCH 1/1 Input: convert net/bluetooth to dynamic input_dev allocation
[PATCH] Input: convert net/bluetooth to dynamic input_dev allocation
Input: convert net/bluetooth to dynamic input_dev allocation
This is required for input_dev sysfs integration
---
commit 08303093569fb58889c06a5920947fafc22b66ff
tree 319a26550cf85cb0d4220685bb9877815143d07e
parent 398edfe67704c8fe4ba6fbc79907cbcdc6111768
author Dmitry Torokhov <[email protected]> Thu, 15 Sep 2005 02:01:40 -0500 committer Greg Kroah-Hartman <[email protected]> Thu, 27 Oct 2005 22:48:05 -0700
net/bluetooth/hidp/core.c | 13 ++++++++----- 1 files changed, 8 insertions(+), 5 deletions(-)
net/bluetooth/hidp/core.c +8 -5
@@ -520,7 +520,7 @@ static int hidp_session(void *arg)if (session->input) {input_unregister_device (session->input); -kfree (session->input); + session->input =NULL ; }up_write (&hidp_session_sem);
@@ -536,6 +536,8 @@ static inline void hidp_setup_input(stru input->private = session; + input->name ="Bluetooth HID Boot Protocol Device" ; + input->id.bustype =BUS_BLUETOOTH ; input->id.vendor = req->vendor; input->id.product = req->product;
@@ -582,16 +584,15 @@ int hidp_add_connection(struct hidp_connreturn -ENOTUNIQ ; session =kmalloc (sizeof (struct hidp_session ),GFP_KERNEL ); -if (!session) +if (!session)return -ENOMEM ;memset (session,0 ,sizeof (struct hidp_session )); - session->input =kmalloc (sizeof (struct input_dev ),GFP_KERNEL ); + session->input =input_allocate_device ();if (!session->input) {kfree (session);return -ENOMEM ; } -memset (session->input,0 ,sizeof (struct input_dev ));down_write (&hidp_session_sem);
@@ -651,8 +652,10 @@ unlink:__hidp_unlink_session (session); -if (session->input) +if (session->input) {input_unregister_device (session->input); + session->input =NULL ;/* don't try to free it here */ + } failed:up_write (&hidp_session_sem);
PATCH 1/1 Input: convert konicawc to dynamic input_dev allocation
[PATCH] Input: convert konicawc to dynamic input_dev allocation
Input: convert konicawc to dynamic input_dev allocation
This is required for input_dev sysfs integration
---
commit 1f204b896615770bd80caff2570deec2fd1c0221
tree b102440fa6844542b0986c4c4e23a83965700512
parent 46aefdd22b2862771431be7e90a0b2c7d5d0524b
author Dmitry Torokhov <[email protected]> Thu, 15 Sep 2005 02:01:42 -0500 committer Greg Kroah-Hartman <[email protected]> Thu, 27 Oct 2005 22:48:05 -0700
drivers/usb/media/konicawc.c | 89 +++++++++++++++++++++++++++++------------- 1 files changed, 61 insertions(+), 28 deletions(-)
drivers/usb/media/konicawc.c +61 -28
@@ -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(strukonicawc_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(structif (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(strucRingQueue_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(strDEBUG (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_interr ("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 uvdint 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 ; }