Input patches for 2.6.12
Subsystems (2)
cover Input patches for 2.6.12
Hi Linus,
I have prepared some input patches that I would like to see in 2.6.12. Most of them are coming from Vojtech's BK tree and were in -mm for quite some time. They fix a warning in pmouse module, allow OSS drivers to be compiled when gameport support is disabled, fix joystick button mapping, broken mapping for right "win" key and more.
Please consider pulling from:
rsync://rsync.kernel.org/pub/scm/linux/kernel/git/dtor/input.git
branch "for-linus"
--
Dmitry
PATCH 1/13 Fix a warning in psmouse-base.c
From: Andrew Morton <[email protected]>
Input: Fix a warning in psmouse-base.c
---
drivers/input/mouse/psmouse-base.c | 2 +- 1 files changed, 1 insertion(+), 1 deletion(-)
drivers/input/mouse/psmouse-base.c +1 -1
@@ -972,7 +972,7 @@ static int psmouse_set_maxproto(const chreturn -EINVAL ;if (!strncmp (val,"any" ,3 )) { - *((unsigned int *)kp->arg) =-1UL ; + *((unsigned int *)kp->arg) =-1U ;return 0 ; }
PATCH 2/13 gameport: implement stubs to make OSS drivers buildable
In reply to Dmitry TorokhovFrom: Adrian Bunk <[email protected]>
Input:
This patch adds dummy gameport_register_port, gameport_unregister_port and gameport_set_phys functions to gameport.h for the case when a driver can't use gameport.
This fixes the compilation of some OSS drivers with GAMEPORT=n without the need to #if inside every single driver.
This patch also removes the non-working and now obsolete SOUND_GAMEPORT.
This patch is also an alternative solution for ALSA drivers with similar problems (but #if's inside the drivers might have the advantage of saving some more bytes of gameport is not available).
The only user-visible change is that for GAMEPORT=m the affected OSS drivers are now allowed to be built statically (but they won't have gameport support).
---
drivers/input/gameport/Kconfig | 20 -------------------- include/linux/gameport.h | 28 +++++++++++++++++++++++++--- sound/oss/Kconfig | 12 ++++++------ 3 files changed, 31 insertions(+), 29 deletions(-)
drivers/input/gameport/Kconfig +0 -20
@@ -68,23 +68,3 @@ config GAMEPORT_CS461X depends on PCI endif - -# Yes, SOUND_GAMEPORT looks a bit odd. Yes, it ends up being turned on -# in every .config. Please don't touch it. It is here to handle an -# unusual dependency between GAMEPORT and sound drivers. -# -# Some sound drivers call gameport functions. If GAMEPORT is -# not selected, empty stubs are provided for the functions and all is -# well. -# If GAMEPORT is built in, everything is fine. -# If GAMEPORT is a module, however, it would need to be loaded for the -# sound driver to be able to link properly. Therefore, the sound -# driver must be a module as well in that case. Since there's no way -# to express that directly in Kconfig, we use SOUND_GAMEPORT to -# express it. SOUND_GAMEPORT boils down to "if GAMEPORT is 'm', -# anything that depends on SOUND_GAMEPORT must be 'm' as well. if -# GAMEPORT is 'y' or 'n', it can be anything". -config SOUND_GAMEPORT - tristate - default m if GAMEPORT=m - default y
include/linux/gameport.h +25 -3
@@ -67,6 +67,8 @@ int gameport_open(struct gameport *gamepvoid gameport_close (struct gameport *gameport);void gameport_rescan (struct gameport *gameport); +#if defined(CONFIG_GAMEPORT ) || (defined(MODULE ) && defined(CONFIG_GAMEPORT_MODULE )) +void __gameport_register_port (struct gameport *gameport,struct module *owner);static inline void gameport_register_port (struct gameport *gameport) {
@@ -75,6 +77,29 @@ static inline void gameport_register_porvoid gameport_unregister_port (struct gameport *gameport); +void gameport_set_phys (struct gameport *gameport,const char *fmt, ...) + __attribute__ ((format (printf,2 ,3 ))); + +#else + +static inline void gameport_register_port (struct gameport *gameport) +{ +return ; +} + +static inline void gameport_unregister_port (struct gameport *gameport) +{ +return ; +} + +static inline void gameport_set_phys (struct gameport *gameport, +const char *fmt, ...) +{ +return ; +} + +#endif +static inline struct gameport *gameport_allocate_port (void ) {struct gameport *gameport =kcalloc (1 ,sizeof (struct gameport ),GFP_KERNEL );
@@ -92,9 +117,6 @@ static inline void gameport_set_name(strstrlcpy (gameport->name, name,sizeof (gameport->name)); } -void gameport_set_phys (struct gameport *gameport,const char *fmt, ...) - __attribute__ ((format (printf,2 ,3 ))); -/* * Use the following fucntions to manipulate gameport's per-port * driver-specific data.
sound/oss/Kconfig +6 -6
@@ -112,7 +112,7 @@ config SOUND_BCM_CS4297A config SOUND_ES1370 tristate "Ensoniq AudioPCI (ES1370)" - depends on SOUND_PRIME!=n && SOUND && PCI && SOUND_GAMEPORT + depends on SOUND_PRIME!=n && SOUND && PCI help Say Y or M if you have a PCI sound card utilizing the Ensoniq ES1370 chipset, such as Ensoniq's AudioPCI (non-97). To find
@@ -125,7 +125,7 @@ config SOUND_ES1370 config SOUND_ES1371 tristate "Creative Ensoniq AudioPCI 97 (ES1371)" - depends on SOUND_PRIME!=n && SOUND && PCI && SOUND_GAMEPORT + depends on SOUND_PRIME!=n && SOUND && PCI help Say Y or M if you have a PCI sound card utilizing the Ensoniq ES1371 chipset, such as Ensoniq's AudioPCI97. To find out if
@@ -138,7 +138,7 @@ config SOUND_ES1371 config SOUND_ESSSOLO1 tristate "ESS Technology Solo1" - depends on SOUND_PRIME!=n && SOUND && SOUND_GAMEPORT && PCI + depends on SOUND_PRIME!=n && SOUND && PCI help Say Y or M if you have a PCI sound card utilizing the ESS Technology Solo1 chip. To find out if your sound card uses a
@@ -179,7 +179,7 @@ config SOUND_HARMONY config SOUND_SONICVIBES tristate "S3 SonicVibes" - depends on SOUND_PRIME!=n && SOUND && SOUND_GAMEPORT + depends on SOUND_PRIME!=n && SOUND help Say Y or M if you have a PCI sound card utilizing the S3 SonicVibes chipset. To find out if your sound card uses a
@@ -226,7 +226,7 @@ config SOUND_AU1550_AC97 config SOUND_TRIDENT tristate "Trident 4DWave DX/NX, SiS 7018 or ALi 5451 PCI Audio Core" - depends on SOUND_PRIME!=n && SOUND && SOUND_GAMEPORT + depends on SOUND_PRIME!=n && SOUND ---help--- Say Y or M if you have a PCI sound card utilizing the Trident 4DWave-DX/NX chipset or your mother board chipset has SiS 7018
@@ -739,7 +739,7 @@ config SOUND_NM256 config SOUND_MAD16 tristate "OPTi MAD16 and/or Mozart based cards" - depends on SOUND_OSS && SOUND_GAMEPORT + depends on SOUND_OSS ---help--- Answer Y if your card has a Mozart (OAK OTI-601) or MAD16 (OPTi 82C928 or 82C929 or 82C931) audio interface chip. These chips are
PATCH 3/13 i8042: try AUX (on x86) even if PNP only reports KBD
In reply to Dmitry TorokhovFrom: Vojtech Pavlik <[email protected]>
Input: Add a missing KERN_INFO message designation, fix behavior
when only a keyboard part of the controller is detected.
---
drivers/input/serio/i8042-x86ia64io.h | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-)
drivers/input/serio/i8042-x86ia64io.h +2 -2
@@ -227,7 +227,7 @@ static int i8042_pnp_init(void)int result_kbd, result_aux;if (i8042_nopnp) { -printk ("i8042: PNP detection disabled\n" ); +printk (KERN_INFO "i8042: PNP detection disabled\n" );return 0 ; }
@@ -265,7 +265,7 @@ static int i8042_pnp_init(void) i8042_pnp_kbd_irq = i8042_kbd_irq; } -if (result_aux >0 && !i8042_pnp_aux_irq) { +if (!i8042_pnp_aux_irq) {printk (KERN_WARNING "PNP: PS/2 controller doesn't have AUX irq; using default %#x\n" , i8042_aux_irq); i8042_pnp_aux_irq = i8042_aux_irq; }
PATCH 4/13 i8042: remove unused variable
In reply to Dmitry TorokhovFrom: Vojtech Pavlik <[email protected]>
Input: Remove (now) unused variable in i8042.c
---
drivers/input/serio/i8042.c | 2 -- 1 files changed, 2 deletions(-)
drivers/input/serio/i8042.c +0 -2
@@ -802,8 +802,6 @@ static int i8042_controller_init(void)*/ static void i8042_controller_reset (void ) { -unsigned char param; -/* * Reset the controller if requested. */
PATCH 5/13 i8042: dont read CTR when resuming
In reply to Dmitry TorokhovFrom: Vojtech Pavlik <[email protected]>
Input: Only write the CTR in i8042 resume function. Reading it is
wrong, since it may (will) contain nonsensical data.
---
drivers/input/serio/i8042.c | 48 +++++++++++++++++++++++++------------------- 1 files changed, 28 insertions(+), 20 deletions(-)
drivers/input/serio/i8042.c +28 -20
@@ -698,6 +698,26 @@ static void i8042_timer_func(unsigned loi8042_interrupt (0 ,NULL ,NULL ); } +static int i8042_ctl_test (void ) +{ +unsigned char param; + +if (!i8042_reset) +return 0 ; + +if (i8042_command (¶m,I8042_CMD_CTL_TEST )) { +printk (KERN_ERR "i8042.c: i8042 controller self test timeout.\n" ); +return -1 ; + } + +if (param !=I8042_RET_CTL_TEST ) { +printk (KERN_ERR "i8042.c: i8042 controller selftest failed. (%#x != %#x)\n" , + param,I8042_RET_CTL_TEST ); +return -1 ; + } + +return 0 ; +}/* * i8042_controller init initializes the i8042 controller, and,
@@ -719,21 +739,8 @@ static int i8042_controller_init(void)return -1 ; } -if (i8042_reset) { - -unsigned char param; - -if (i8042_command (¶m,I8042_CMD_CTL_TEST )) { -printk (KERN_ERR "i8042.c: i8042 controller self test timeout.\n" ); -return -1 ; - } - -if (param !=I8042_RET_CTL_TEST ) { -printk (KERN_ERR "i8042.c: i8042 controller selftest failed. (%#x != %#x)\n" , - param,I8042_RET_CTL_TEST ); -return -1 ; - } - } +if (i8042_ctl_test ()) +return -1 ;/* * Save the CTR for restoral on unload / reboot.
@@ -806,9 +813,7 @@ static void i8042_controller_reset(void)* Reset the controller if requested. */ -if (i8042_reset) -if (i8042_command (¶m,I8042_CMD_CTL_TEST )) -printk (KERN_ERR "i8042.c: i8042 controller reset timeout.\n" ); +i8042_ctl_test ();/* * Disable MUX mode if present.
@@ -920,8 +925,11 @@ static int i8042_resume(struct device *dif (level !=RESUME_ENABLE )return 0 ; -if (i8042_controller_init ()) { -printk (KERN_ERR "i8042: resume failed\n" ); +if (i8042_ctl_test ()) +return -1 ; + +if (i8042_command (&i8042_ctr,I8042_CMD_CTL_WCTR )) { +printk (KERN_ERR "i8042: Can't write CTR\n" );return -1 ; }
PATCH 6/13 i8042: tone down warning when PNP insists that KBC is missing
In reply to Dmitry TorokhovInput: Tone down the severity of a printk() in i386/ia64 arch code
for i386, it's printed on many machines and usually is not a cause for worry.
---
drivers/input/serio/i8042-x86ia64io.h | 2 +- 1 files changed, 1 insertion(+), 1 deletion(-)
drivers/input/serio/i8042-x86ia64io.h +1 -1
@@ -241,7 +241,7 @@ static int i8042_pnp_init(void)#if defined(__ia64__)return -ENODEV ;#else -printk (KERN_WARNING "PNP: No PS/2 controller found. Probing ports directly.\n" ); +printk (KERN_INFO "PNP: No PS/2 controller found. Probing ports directly.\n" );return 0 ;#endif }
PATCH 7/13 i8042: Make sure we unregister PNP driver only once
In reply to Dmitry TorokhovFrom: Kurt Garloff <[email protected]>
Input: Avoid double unregistering of i8042 PnP driver. This can happen
when no i8042 controller (not PnP, not legacy) is present.
From: Kurt Garloff <[email protected]>
---
drivers/input/serio/i8042-x86ia64io.h | 8 ++++++-- 1 files changed, 6 insertions(+), 2 deletions(-)
drivers/input/serio/i8042-x86ia64io.h +6 -2
@@ -215,11 +215,15 @@ static struct pnp_driver i8042_pnp_aux_dstatic void i8042_pnp_exit (void ) { -if (i8042_pnp_kbd_registered) +if (i8042_pnp_kbd_registered) { + i8042_pnp_kbd_registered =0 ;pnp_unregister_driver (&i8042_pnp_kbd_driver); + } -if (i8042_pnp_aux_registered) +if (i8042_pnp_aux_registered) { + i8042_pnp_aux_registered =0 ;pnp_unregister_driver (&i8042_pnp_aux_driver); + } }static int i8042_pnp_init (void )
PATCH 8/13 psmouse: workaround for Sunrex mouse
In reply to Dmitry TorokhovFrom: Vojtech Pavlik <[email protected]>
Input: Workaround for Sunrex K8561 IR Keyboard/Mouse. The mouse
sends an incorrect ID and wasn't recognized.
---
drivers/input/mouse/psmouse-base.c | 5 ++++- 1 files changed, 4 insertions(+), 1 deletion(-)
drivers/input/mouse/psmouse-base.c +4 -1
@@ -518,13 +518,16 @@ static int psmouse_probe(struct psmouse/* * First, we check if it's a mouse. It should send 0x00 or 0x03 * in case of an IntelliMouse in 4-byte mode or 0x04 for IM Explorer. +* Sunrex K8561 IR Keyboard/Mouse reports 0xff on second and subsequent +* ID queries, probably due to a firmware bug. */ param[0 ] =0xa5 ;if (ps2_command (ps2dev, param,PSMOUSE_CMD_GETID ))return -1 ; -if (param[0 ] !=0x00 && param[0 ] !=0x03 && param[0 ] !=0x04 ) +if (param[0 ] !=0x00 && param[0 ] !=0x03 && + param[0 ] !=0x04 && param[0 ] !=0xff )return -1 ;/*
PATCH 9/13 joydev: fix button mapping
In reply to Dmitry TorokhovFrom: Vojtech Pavlik <[email protected]>
Input: Fix button mapping in joydev - BTN_TRIGGER was being
mapped twice, resulting in it being the last (instead of first) button on a joystick.
---
drivers/input/joydev.c | 2 +- 1 files changed, 1 insertion(+), 1 deletion(-)
drivers/input/joydev.c +1 -1
@@ -422,7 +422,7 @@ static struct input_handle *joydev_conne joydev->nkey++; } -for (i =0 ; i <BTN_JOYSTICK -BTN_MISC +1 ; i++) +for (i =0 ; i <BTN_JOYSTICK -BTN_MISC ; i++)if (test_bit (i +BTN_MISC , dev->keybit)) { joydev->keymap[i] = joydev->nkey; joydev->keypam[joydev->nkey] = i +BTN_MISC ;
PATCH 10/13 gunze: fix out-of-bound array access
In reply to Dmitry TorokhovInput: gunze - fix out-of-bound array access reported by Adrian Bunk.
---
drivers/input/touchscreen/gunze.c | 3 +-- 1 files changed, 1 insertion(+), 2 deletions(-)
drivers/input/touchscreen/gunze.c +1 -2
@@ -68,8 +68,7 @@ static void gunze_process_packet(structif (gunze->idx !=GUNZE_MAX_LENGTH || gunze->data[5 ] !=',' || (gunze->data[0 ] !='T' && gunze->data[0 ] !='R' )) { - gunze->data[10 ] =0 ; -printk (KERN_WARNING "gunze.c: bad packet: >%s<\n" , gunze->data); +printk (KERN_WARNING "gunze.c: bad packet: >%.*s<\n" ,GUNZE_MAX_LENGTH , gunze->data);return ; }
PATCH 11/13 i8042: dont activate MUX mode on Toshiba Satellite P10
In reply to Dmitry TorokhovInput: automatically disable MUX mode on Toshiba Satellite P10
because it interferes with ALPS touchpad detection and causes horrible death on reboot. Since P10 does not have external PS/2 ports MUX mode does not have any advantages over legacy mode anyway.
---
drivers/input/serio/i8042-x86ia64io.h | 11 ++++++++++- 1 files changed, 10 insertions(+), 1 deletion(-)
drivers/input/serio/i8042-x86ia64io.h +10 -1
@@ -88,9 +88,11 @@ static struct dmi_system_id __initdata i };/* -* Some Fujitsu notebooks are ahving trouble with touhcpads if +* Some Fujitsu notebooks are having trouble with touchpads if * active multiplexing mode is activated. Luckily they don't have * external PS/2 ports so we can safely disable it. +* ... apparently some Toshibas don't like MUX mode either and +* die horrible death on reboot. */ static struct dmi_system_id __initdata i8042_dmi_nomux_table[] = { {
@@ -121,6 +123,13 @@ static struct dmi_system_id __initdata i DMI_MATCH(DMI_PRODUCT_NAME, "FMVLT70H"), }, }, + { + .ident = "Toshiba P10", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"), + DMI_MATCH(DMI_PRODUCT_NAME, "Satellite P10"), + }, + }, { } };
PATCH 12/13 i8042: dont activate MUX mode on Fujitsu Lifebook S6230
In reply to Dmitry TorokhovInput: yet another model that does not play nicely when i8042 is
put in MUX mode - Fujitsu Lifebook S6230
---
drivers/input/serio/i8042-x86ia64io.h | 7 +++++++ 1 files changed, 7 insertions(+)
drivers/input/serio/i8042-x86ia64io.h +7 -0
@@ -117,6 +117,13 @@ static struct dmi_system_id __initdata i }, }, { + .ident = "Fujitsu Lifebook S6230", + .matches = { +DMI_MATCH (DMI_SYS_VENDOR ,"FUJITSU" ), + DMI_MATCH(DMI_PRODUCT_NAME, "LifeBook S6230"), + }, + }, + { .ident ="Fujitsu T70H" , .matches = { DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"),
PATCH 13/13 synaptics: be less verbose on startup
In reply to Dmitry TorokhovInput: synaptics - reduce verboseness of synaptics driver - there
is no reason one driver should take 10 lines in dmesg.
---
drivers/input/mouse/synaptics.c | 39 +++++---------------------------------- 1 files changed, 5 insertions(+), 34 deletions(-)
drivers/input/mouse/synaptics.c +5 -34
@@ -143,39 +143,6 @@ static int synaptics_identify(struct psmreturn -1 ; } -static void print_ident (struct synaptics_data *priv) -{ -printk (KERN_INFO "Synaptics Touchpad, model: %ld\n" ,SYN_ID_MODEL (priv->identity)); -printk (KERN_INFO " Firmware: %ld.%ld\n" ,SYN_ID_MAJOR (priv->identity), -SYN_ID_MINOR (priv->identity)); -if (SYN_MODEL_ROT180 (priv->model_id)) -printk (KERN_INFO " 180 degree mounted touchpad\n" ); -if (SYN_MODEL_PORTRAIT (priv->model_id)) -printk (KERN_INFO " portrait touchpad\n" ); -printk (KERN_INFO " Sensor: %ld\n" ,SYN_MODEL_SENSOR (priv->model_id)); -if (SYN_MODEL_NEWABS (priv->model_id)) -printk (KERN_INFO " new absolute packet format\n" ); -if (SYN_MODEL_PEN (priv->model_id)) -printk (KERN_INFO " pen detection\n" ); - -if (SYN_CAP_EXTENDED (priv->capabilities)) { -printk (KERN_INFO " Touchpad has extended capability bits\n" ); -if (SYN_CAP_MULTI_BUTTON_NO (priv->ext_cap)) -printk (KERN_INFO " -> %d multi-buttons, i.e. besides standard buttons\n" , - (int )(SYN_CAP_MULTI_BUTTON_NO (priv->ext_cap))); -if (SYN_CAP_MIDDLE_BUTTON (priv->capabilities)) -printk (KERN_INFO " -> middle button\n" ); -if (SYN_CAP_FOUR_BUTTON (priv->capabilities)) -printk (KERN_INFO " -> four buttons\n" ); -if (SYN_CAP_MULTIFINGER (priv->capabilities)) -printk (KERN_INFO " -> multifinger detection\n" ); -if (SYN_CAP_PALMDETECT (priv->capabilities)) -printk (KERN_INFO " -> palm detection\n" ); -if (SYN_CAP_PASS_THROUGH (priv->capabilities)) -printk (KERN_INFO " -> pass-through port\n" ); - } -} -static int synaptics_query_hardware (struct psmouse *psmouse) {int retries =0 ;
@@ -666,7 +633,11 @@ int synaptics_init(struct psmouse *psmou priv->pkt_type =SYN_MODEL_NEWABS (priv->model_id) ?SYN_NEWABS :SYN_OLDABS ; -print_ident (priv); +printk (KERN_INFO "Synaptics Touchpad, model: %ld, fw: %ld.%ld, id: %#lx, caps: %#lx/%#lx\n" , +SYN_ID_MODEL (priv->identity), +SYN_ID_MAJOR (priv->identity),SYN_ID_MINOR (priv->identity), + priv->model_id, priv->capabilities, priv->ext_cap); +set_input_params (&psmouse->dev, priv); psmouse->protocol_handler = synaptics_process_byte;
[patch 14/13] Fix broken mapping for right "win" key
In reply to Dmitry TorokhovFrom: Vojtech Pavlik <[email protected]>
Input: Fix fast scrolling scancodes in atkbd.c
---
drivers/input/keyboard/atkbd.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-)
drivers/input/keyboard/atkbd.c +3 -3
@@ -171,9 +171,9 @@ static struct {unsigned char set2; } atkbd_scroll_keys[] = { { ATKBD_SCR_1, 0xc5 }, - { ATKBD_SCR_2, 0xa9 }, - { ATKBD_SCR_4, 0xb6 }, - { ATKBD_SCR_8, 0xa7 }, + { ATKBD_SCR_2, 0x9d }, + { ATKBD_SCR_4, 0xa4 }, + { ATKBD_SCR_8, 0x9b }, { ATKBD_SCR_CLICK, 0xe0 }, { ATKBD_SCR_LEFT, 0xcb }, { ATKBD_SCR_RIGHT, 0xd2 },
Quoted 8 lines · Dmitry Torokhov
Hi Linus,
I have prepared some input patches that I would like to see in 2.6.12. Most of them are coming from Vojtech's BK tree and were in -mm for quite some time. They fix a warning in pmouse module, allow OSS drivers to be compiled when gameport support is disabled, fix joystick button mapping, broken mapping for right "win" key and more.
Quoted 5 lines
Please consider pulling from:
rsync://rsync.kernel.org/pub/scm/linux/kernel/git/dtor/input.git
branch "for-linus"
Linus, this pull has my blessing.
I wasn't able to prepare it myself for health and other reason.
Thank you very much Dmitry.
Signature · 2 lines
Vojtech Pavlik SuSE Labs, SuSE CR