public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/9] New set of input patches
@ 2004-02-29  6:53 Dmitry Torokhov
  2004-02-29  6:55 ` [PATCH 1/9] atkbd whitespace fixes Dmitry Torokhov
  2004-03-02 13:02 ` [PATCH 0/9] New set of input patches Vojtech Pavlik
  0 siblings, 2 replies; 16+ messages in thread
From: Dmitry Torokhov @ 2004-02-29  6:53 UTC (permalink / raw)
  To: Vojtech Pavlik; +Cc: linux-kernel

Hi Vojtech,

Here is the new set of input patches that I have. You have seen some of
them, buit this time they are rediffed against 2.6.4-rc1 and in nice order.

01-atkbd-whitespace-fixes.patch
	simple whitespace fixes

02-atkbd-bad-merge.patch
	clean up bad merge in atkbd module (get rid of MODULE_PARMs,
        atkbd_softrepeat was declared twice)

03-synaptics-relaxed-proto.patch
	some hardware (PowerBook) require relaxed Synaptics protocol checks,
        but relaxed checks hurt hardware implementing proper protocol when
        device looses sync. With the patch synaptics driver analyzes first
        full data packet and either staus in relaxed mode or switches into
        strict mode.

04-psmouse-whitespace-fixes.patch
	simple whitespace fixes

05-psmouse-workaround-noack.patch
	some mice do not ACK "disable streaming mode" command causing psmouse
        driver abort initialization without any indication to the user. This
        is a regression compared to 2.4. Have kernel complain but continue
        with prbing hardware (after all we got valid responce from GET ID
	command).

06-module-param-array-named.patch
	introduce module_param_array_named() modeled after module_param_named
	that allows mapping array module option to

07-joystick-module-param.patch
	complete moving input drivers to the new way of handling module
	parameters using module_param()

08-obsolete-setup.patch
	introduce __obsolete_setup(). This is a drop-in replacement for
        __setup() for truly obsolete options. Kernel will complain when sees
        such an option.

09-input-obsolete-setup.patch
	document removed or renamed options in input drivers using
	__obsolete_setup() so users will have some clue why old options
        stopped having any effect.

-- 
Dmitry

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH 1/9] atkbd whitespace fixes
  2004-02-29  6:53 [PATCH 0/9] New set of input patches Dmitry Torokhov
@ 2004-02-29  6:55 ` Dmitry Torokhov
  2004-02-29  6:55   ` [PATCH 2/9] atkbd bad merge Dmitry Torokhov
  2004-03-02 13:02 ` [PATCH 0/9] New set of input patches Vojtech Pavlik
  1 sibling, 1 reply; 16+ messages in thread
From: Dmitry Torokhov @ 2004-02-29  6:55 UTC (permalink / raw)
  To: Vojtech Pavlik; +Cc: linux-kernel


===================================================================


ChangeSet@1.1685, 2004-02-27 23:41:11-05:00, dtor_core@ameritech.net
  Atkbd: whitespace fixes


 atkbd.c |   20 ++++++++++----------
 1 files changed, 10 insertions(+), 10 deletions(-)


===================================================================



diff -Nru a/drivers/input/keyboard/atkbd.c b/drivers/input/keyboard/atkbd.c
--- a/drivers/input/keyboard/atkbd.c	Sun Feb 29 01:14:59 2004
+++ b/drivers/input/keyboard/atkbd.c	Sun Feb 29 01:14:59 2004
@@ -202,7 +202,7 @@
 		atkbd->resend = 1;
 		goto out;
 	}
-	
+
 	if (!flags && data == ATKBD_RET_ACK)
 		atkbd->resend = 0;
 #endif
@@ -276,7 +276,7 @@
 		case ATKBD_KEY_UNKNOWN:
 			printk(KERN_WARNING "atkbd.c: Unknown key %s (%s set %d, code %#x on %s).\n",
 				atkbd->release ? "released" : "pressed",
-				atkbd->translated ? "translated" : "raw", 
+				atkbd->translated ? "translated" : "raw",
 				atkbd->set, code, serio->phys);
 			if (atkbd->translated && atkbd->set == 2 && code == 0x7a)
 				printk(KERN_WARNING "atkbd.c: This is an XFree86 bug. It shouldn't access"
@@ -353,7 +353,7 @@
 	if (receive && param)
 		for (i = 0; i < receive; i++)
 			atkbd->cmdbuf[(receive - 1) - i] = param[i];
-	
+
 	if (command & 0xff)
 		if (atkbd_sendbyte(atkbd, command & 0xff))
 			return (atkbd->cmdcnt = 0) - 1;
@@ -373,7 +373,7 @@
 			atkbd->cmdcnt = 0;
 			break;
 		}
-	
+
 		udelay(1);
 	}
 
@@ -466,7 +466,7 @@
  */
 
 	if (atkbd_reset)
-		if (atkbd_command(atkbd, NULL, ATKBD_CMD_RESET_BAT)) 
+		if (atkbd_command(atkbd, NULL, ATKBD_CMD_RESET_BAT))
 			printk(KERN_WARNING "atkbd.c: keyboard reset failed on %s\n", atkbd->serio->phys);
 
 /*
@@ -529,7 +529,7 @@
 		return 3;
 	}
 
-	if (atkbd_set != 2) 
+	if (atkbd_set != 2)
 		if (!atkbd_command(atkbd, param, ATKBD_CMD_OK_GETID)) {
 			atkbd->id = param[0] << 8 | param[1];
 			return 2;
@@ -541,7 +541,7 @@
 			return 4;
 	}
 
-	if (atkbd_set != 3) 
+	if (atkbd_set != 3)
 		return 2;
 
 	param[0] = 3;
@@ -637,7 +637,7 @@
 
 	switch (serio->type & SERIO_TYPE) {
 
-		case SERIO_8042_XL: 
+		case SERIO_8042_XL:
 			atkbd->translated = 1;
 		case SERIO_8042:
 			if (serio->write)
@@ -650,7 +650,7 @@
 			kfree(atkbd);
 			return;
 	}
-			
+
 	if (atkbd->write) {
 		atkbd->dev.evbit[0] = BIT(EV_KEY) | BIT(EV_LED) | BIT(EV_REP);
 		atkbd->dev.ledbit[0] = BIT(LED_NUML) | BIT(LED_CAPSL) | BIT(LED_SCROLLL);
@@ -687,7 +687,7 @@
 			kfree(atkbd);
 			return;
 		}
-		
+
 		atkbd->set = atkbd_set_3(atkbd);
 		atkbd_enable(atkbd);
 

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH 2/9] atkbd bad merge
  2004-02-29  6:55 ` [PATCH 1/9] atkbd whitespace fixes Dmitry Torokhov
@ 2004-02-29  6:55   ` Dmitry Torokhov
  2004-02-29  6:56     ` [PATCH 3/9] synaptics strict/relaxed protocol checks Dmitry Torokhov
  0 siblings, 1 reply; 16+ messages in thread
From: Dmitry Torokhov @ 2004-02-29  6:55 UTC (permalink / raw)
  To: Vojtech Pavlik; +Cc: linux-kernel


===================================================================


ChangeSet@1.1686, 2004-02-27 23:42:30-05:00, dtor_core@ameritech.net
  Atkbd: Clean up unclean merge (remove old MODULE_PARMs)


 atkbd.c |    6 +-----
 1 files changed, 1 insertion(+), 5 deletions(-)


===================================================================



diff -Nru a/drivers/input/keyboard/atkbd.c b/drivers/input/keyboard/atkbd.c
--- a/drivers/input/keyboard/atkbd.c	Sun Feb 29 01:15:45 2004
+++ b/drivers/input/keyboard/atkbd.c	Sun Feb 29 01:15:45 2004
@@ -30,21 +30,17 @@
 
 MODULE_AUTHOR("Vojtech Pavlik <vojtech@suse.cz>");
 MODULE_DESCRIPTION("AT and PS/2 keyboard driver");
-MODULE_PARM(atkbd_set, "1i");
-MODULE_PARM(atkbd_reset, "1i");
-MODULE_PARM(atkbd_softrepeat, "1i");
 MODULE_LICENSE("GPL");
 
 static int atkbd_set = 2;
 module_param_named(set, atkbd_set, int, 0);
 MODULE_PARM_DESC(set, "Select keyboard code set (2 = default, 3, 4)");
+
 #if defined(__i386__) || defined(__x86_64__) || defined(__hppa__)
 static int atkbd_reset;
 #else
 static int atkbd_reset = 1;
 #endif
-static int atkbd_softrepeat;
-
 module_param_named(reset, atkbd_reset, bool, 0);
 MODULE_PARM_DESC(reset, "Reset keyboard during initialization");
 

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH 3/9] synaptics strict/relaxed protocol checks
  2004-02-29  6:55   ` [PATCH 2/9] atkbd bad merge Dmitry Torokhov
@ 2004-02-29  6:56     ` Dmitry Torokhov
  2004-02-29  6:58       ` [PATCH 4/9] psmouse whitespace fixes Dmitry Torokhov
  0 siblings, 1 reply; 16+ messages in thread
From: Dmitry Torokhov @ 2004-02-29  6:56 UTC (permalink / raw)
  To: Vojtech Pavlik; +Cc: linux-kernel


===================================================================


ChangeSet@1.1687, 2004-02-27 23:44:17-05:00, dtor_core@ameritech.net
  Input: Switch between strict/relaxed synaptics protocol checks based on
         data in the first full data packet. Having strict checks helps
         getting rid of bad data after loosing sync, but not all harware
         implements strict protocol.


 synaptics.c |   53 +++++++++++++++++++++++++++++++++++++++++------------
 synaptics.h |    7 +++++++
 2 files changed, 48 insertions(+), 12 deletions(-)


===================================================================



diff -Nru a/drivers/input/mouse/synaptics.c b/drivers/input/mouse/synaptics.c
--- a/drivers/input/mouse/synaptics.c	Sun Feb 29 01:16:28 2004
+++ b/drivers/input/mouse/synaptics.c	Sun Feb 29 01:16:28 2004
@@ -435,6 +435,8 @@
 		goto init_fail;
 	}
 
+	priv->pkt_type = SYN_MODEL_NEWABS(priv->model_id) ? SYN_NEWABS : SYN_OLDABS;
+
 	if (SYN_CAP_EXTENDED(priv->capabilities) && SYN_CAP_PASS_THROUGH(priv->capabilities))
        		synaptics_pt_create(psmouse);
 
@@ -602,19 +604,42 @@
 	input_sync(dev);
 }
 
-static int synaptics_validate_byte(struct psmouse *psmouse)
+static int synaptics_validate_byte(unsigned char packet[], int idx, unsigned char pkt_type)
 {
-	static unsigned char newabs_mask[] = { 0xC0, 0x00, 0x00, 0xC0, 0x00 };
-	static unsigned char newabs_rslt[] = { 0x80, 0x00, 0x00, 0xC0, 0x00 };
-	static unsigned char oldabs_mask[] = { 0xC0, 0x60, 0x00, 0xC0, 0x60 };
-	static unsigned char oldabs_rslt[] = { 0xC0, 0x00, 0x00, 0x80, 0x00 };
-	struct synaptics_data *priv = psmouse->private;
-	int idx = psmouse->pktcnt - 1;
+	static unsigned char newabs_mask[]	= { 0xC8, 0x00, 0x00, 0xC8, 0x00 };
+	static unsigned char newabs_rel_mask[]	= { 0xC0, 0x00, 0x00, 0xC0, 0x00 };
+	static unsigned char newabs_rslt[]	= { 0x80, 0x00, 0x00, 0xC0, 0x00 };
+	static unsigned char oldabs_mask[]	= { 0xC0, 0x60, 0x00, 0xC0, 0x60 };
+	static unsigned char oldabs_rslt[]	= { 0xC0, 0x00, 0x00, 0x80, 0x00 };
+
+	switch (pkt_type) {
+		case SYN_NEWABS:
+		case SYN_NEWABS_RELAXED:
+			return (packet[idx] & newabs_rel_mask[idx]) == newabs_rslt[idx];
+
+		case SYN_NEWABS_STRICT:
+			return (packet[idx] & newabs_mask[idx]) == newabs_rslt[idx];
+
+		case SYN_OLDABS:
+			return (packet[idx] & oldabs_mask[idx]) == oldabs_rslt[idx];
 
-	if (SYN_MODEL_NEWABS(priv->model_id))
-		return (psmouse->packet[idx] & newabs_mask[idx]) == newabs_rslt[idx];
-	else
-		return (psmouse->packet[idx] & oldabs_mask[idx]) == oldabs_rslt[idx];
+		default:
+			printk(KERN_ERR "synaptics: unknown packet type %d\n", pkt_type);
+			return 0;
+	}
+}
+
+static unsigned char synaptics_detect_pkt_type(struct psmouse *psmouse)
+{
+	int i;
+
+	for (i = 0; i < 5; i++)
+		if (!synaptics_validate_byte(psmouse->packet, i, SYN_NEWABS_STRICT)) {
+			printk(KERN_INFO "synaptics: using relaxed packet validation\n");
+			return SYN_NEWABS_RELAXED;
+		}
+
+	return SYN_NEWABS_STRICT;
 }
 
 void synaptics_process_byte(struct psmouse *psmouse, struct pt_regs *regs)
@@ -630,13 +655,17 @@
 			printk(KERN_NOTICE "Synaptics driver resynced.\n");
 		}
 
+		if (unlikely(priv->pkt_type == SYN_NEWABS))
+			priv->pkt_type = synaptics_detect_pkt_type(psmouse);
+
 		if (psmouse->ptport && psmouse->ptport->serio.dev && synaptics_is_pt_packet(psmouse->packet))
 			synaptics_pass_pt_packet(&psmouse->ptport->serio, psmouse->packet);
 		else
 			synaptics_process_packet(psmouse);
 		psmouse->pktcnt = 0;
 
-	} else if (psmouse->pktcnt && !synaptics_validate_byte(psmouse)) {
+	} else if (psmouse->pktcnt &&
+		   !synaptics_validate_byte(psmouse->packet, psmouse->pktcnt - 1, priv->pkt_type)) {
 		printk(KERN_WARNING "Synaptics driver lost sync at byte %d\n", psmouse->pktcnt);
 		psmouse->pktcnt = 0;
 		if (++priv->out_of_sync == psmouse_resetafter) {
diff -Nru a/drivers/input/mouse/synaptics.h b/drivers/input/mouse/synaptics.h
--- a/drivers/input/mouse/synaptics.h	Sun Feb 29 01:16:28 2004
+++ b/drivers/input/mouse/synaptics.h	Sun Feb 29 01:16:28 2004
@@ -70,6 +70,12 @@
 #define SYN_PS_SET_MODE2		0x14
 #define SYN_PS_CLIENT_CMD		0x28
 
+/* synaptics packet types */
+#define SYN_NEWABS			0
+#define SYN_NEWABS_STRICT		1
+#define SYN_NEWABS_RELAXED		2
+#define SYN_OLDABS			3
+
 /*
  * A structure to describe the state of the touchpad hardware (buttons and pad)
  */
@@ -103,6 +109,7 @@
 	/* Data for normal processing */
 	unsigned int out_of_sync;		/* # of packets out of sync */
 	int old_w;				/* Previous w value */
+	unsigned char pkt_type;			/* packet type - old, new, etc */
 };
 
 #endif /* _SYNAPTICS_H */

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH 4/9] psmouse whitespace fixes
  2004-02-29  6:56     ` [PATCH 3/9] synaptics strict/relaxed protocol checks Dmitry Torokhov
@ 2004-02-29  6:58       ` Dmitry Torokhov
  2004-02-29  6:58         ` [PATCH 5/9] psmouse broken hardware workaround Dmitry Torokhov
  0 siblings, 1 reply; 16+ messages in thread
From: Dmitry Torokhov @ 2004-02-29  6:58 UTC (permalink / raw)
  To: Vojtech Pavlik; +Cc: linux-kernel


===================================================================


ChangeSet@1.1688, 2004-02-27 23:46:16-05:00, dtor_core@ameritech.net
  Psmouse: whitespace fixes


 psmouse-base.c |   14 +++++++-------
 1 files changed, 7 insertions(+), 7 deletions(-)


===================================================================



diff -Nru a/drivers/input/mouse/psmouse-base.c b/drivers/input/mouse/psmouse-base.c
--- a/drivers/input/mouse/psmouse-base.c	Sun Feb 29 01:17:01 2004
+++ b/drivers/input/mouse/psmouse-base.c	Sun Feb 29 01:17:01 2004
@@ -163,14 +163,14 @@
 		       psmouse->name, psmouse->phys, psmouse->pktcnt);
 		psmouse->pktcnt = 0;
 	}
-	
+
 	psmouse->last = jiffies;
 	psmouse->packet[psmouse->pktcnt++] = data;
 
 	if (psmouse->packet[0] == PSMOUSE_RET_BAT) {
 		if (psmouse->pktcnt == 1)
 			goto out;
-		
+
 		if (psmouse->pktcnt == 2) {
 			if (psmouse->packet[1] == PSMOUSE_RET_ID) {
 				psmouse->state = PSMOUSE_IGNORE;
@@ -258,7 +258,7 @@
 			return (psmouse->cmdcnt = 0) - 1;
 
 	while (psmouse->cmdcnt && timeout--) {
-	
+
 		if (psmouse->cmdcnt == 1 && command == PSMOUSE_CMD_RESET_BAT &&
 				timeout > 100000) /* do not run in a endless loop */
 			timeout = 100000; /* 1 sec */
@@ -497,7 +497,7 @@
 static void psmouse_initialize(struct psmouse *psmouse)
 {
 	unsigned char param[2];
-	
+
 /*
  * We set the mouse report rate, resolution and scaling.
  */
@@ -571,7 +571,7 @@
 static void psmouse_connect(struct serio *serio, struct serio_dev *dev)
 {
 	struct psmouse *psmouse;
-	
+
 	if ((serio->type & SERIO_TYPE) != SERIO_8042 &&
 	    (serio->type & SERIO_TYPE) != SERIO_PS_PSTHRU)
 		return;
@@ -603,7 +603,7 @@
 		serio->private = NULL;
 		return;
 	}
-	
+
 	sprintf(psmouse->devname, "%s %s %s",
 		psmouse_protocols[psmouse->type], psmouse->vendor, psmouse->name);
 	sprintf(psmouse->phys, "%s/input0",
@@ -617,7 +617,7 @@
 	psmouse->dev.id.version = psmouse->model;
 
 	input_register_device(&psmouse->dev);
-	
+
 	printk(KERN_INFO "input: %s on %s\n", psmouse->devname, serio->phys);
 
 	psmouse_initialize(psmouse);

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH 5/9] psmouse broken hardware workaround
  2004-02-29  6:58       ` [PATCH 4/9] psmouse whitespace fixes Dmitry Torokhov
@ 2004-02-29  6:58         ` Dmitry Torokhov
  2004-02-29  7:00           ` [PATCH 6/9] introduce module_param_array_named Dmitry Torokhov
  0 siblings, 1 reply; 16+ messages in thread
From: Dmitry Torokhov @ 2004-02-29  6:58 UTC (permalink / raw)
  To: Vojtech Pavlik; +Cc: linux-kernel


===================================================================


ChangeSet@1.1689, 2004-02-27 23:57:31-05:00, dtor_core@ameritech.net
  Psmouse: some hardware does not ACK "disable streaming mode" command.
           Since we already have an idea that it's a mouse device that
           is present (from its response to GET ID command), instead of
           aborting, issue a warning and continue.


 psmouse-base.c |    2 +-
 1 files changed, 1 insertion(+), 1 deletion(-)


===================================================================



diff -Nru a/drivers/input/mouse/psmouse-base.c b/drivers/input/mouse/psmouse-base.c
--- a/drivers/input/mouse/psmouse-base.c	Sun Feb 29 01:17:30 2004
+++ b/drivers/input/mouse/psmouse-base.c	Sun Feb 29 01:17:30 2004
@@ -442,7 +442,7 @@
  */
 
 	if (psmouse_command(psmouse, NULL, PSMOUSE_CMD_RESET_DIS))
-		return -1;
+		printk(KERN_WARNING "psmouse.c: Failed to reset mouse on %s\n", psmouse->serio->phys);
 
 /*
  * And here we try to determine if it has any extensions over the

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH 6/9] introduce module_param_array_named
  2004-02-29  6:58         ` [PATCH 5/9] psmouse broken hardware workaround Dmitry Torokhov
@ 2004-02-29  7:00           ` Dmitry Torokhov
  2004-02-29  7:01             ` [PATCH 7/9] Move joysticks to the module_param way of handling options Dmitry Torokhov
  0 siblings, 1 reply; 16+ messages in thread
From: Dmitry Torokhov @ 2004-02-29  7:00 UTC (permalink / raw)
  To: Vojtech Pavlik; +Cc: linux-kernel


===================================================================


ChangeSet@1.1690, 2004-02-28 00:20:14-05:00, dtor_core@ameritech.net
  Introduce module_param_array_named to allow for module options with
  name different form corresponding array variable. Allows using short
  (but descriptive) option names without hurting code readability.
  
  Modeled after module_param_named.


 moduleparam.h |    9 ++++++---
 1 files changed, 6 insertions(+), 3 deletions(-)


===================================================================



diff -Nru a/include/linux/moduleparam.h b/include/linux/moduleparam.h
--- a/include/linux/moduleparam.h	Sun Feb 29 01:18:36 2004
+++ b/include/linux/moduleparam.h	Sun Feb 29 01:18:36 2004
@@ -126,12 +126,15 @@
 #define param_check_invbool(name, p) __param_check(name, p, int)
 
 /* Comma-separated array: num is set to number they actually specified. */
-#define module_param_array(name, type, num, perm)			\
+#define module_param_array_named(name, array, type, num, perm)		\
 	static struct kparam_array __param_arr_##name			\
-	= { ARRAY_SIZE(name), &num, param_set_##type, param_get_##type,	\
-	    sizeof(name[0]), name };					\
+	= { ARRAY_SIZE(array), &num, param_set_##type, param_get_##type,\
+	    sizeof(array[0]), array };					\
 	module_param_call(name, param_array_set, param_array_get, 	\
 			  &__param_arr_##name, perm)
+
+#define module_param_array(name, type, num, perm)		\
+	module_param_array_named(name, name, type, num, perm)
 
 extern int param_array_set(const char *val, struct kernel_param *kp);
 extern int param_array_get(char *buffer, struct kernel_param *kp);

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH 7/9] Move joysticks to the module_param way of handling options
  2004-02-29  7:00           ` [PATCH 6/9] introduce module_param_array_named Dmitry Torokhov
@ 2004-02-29  7:01             ` Dmitry Torokhov
  2004-02-29  7:02               ` [PATCH 8/9] introduce __obsolete_setup Dmitry Torokhov
  0 siblings, 1 reply; 16+ messages in thread
From: Dmitry Torokhov @ 2004-02-29  7:01 UTC (permalink / raw)
  To: Vojtech Pavlik; +Cc: linux-kernel


===================================================================


ChangeSet@1.1691, 2004-02-28 00:48:18-05:00, dtor_core@ameritech.net
  Input: Convert joystick modules to the new way of handling parameters and
         document them in kernel-parameters.txt
  
         The new names are:
           amijoy.map=<a>,<b>
           analog.map=<type1>,<type2>,...<type16>
           db9.dev[2|3]=<parport#>,<type>
           gamecon.map[2|3]=<parport#>,<pad1>,<pad2>,...<pad5>
           turbografx.map[2|3]=<parport#>,<js1>,<js2>,...<js7>
  
         Also there is a tiny change to mousedev and tsdev descriptions in
         kernel-parameters, but no name changes.


 Documentation/input/joystick-parport.txt |   16 +++---
 Documentation/input/joystick.txt         |    6 +-
 Documentation/kernel-parameters.txt      |   46 ++++++++++-------
 drivers/input/joystick/amijoy.c          |   17 +-----
 drivers/input/joystick/analog.c          |   26 +--------
 drivers/input/joystick/db9.c             |   63 +++++++++--------------
 drivers/input/joystick/gamecon.c         |   82 +++++++++++++------------------
 drivers/input/joystick/turbografx.c      |   68 ++++++++++---------------
 8 files changed, 140 insertions(+), 184 deletions(-)


===================================================================



diff -Nru a/Documentation/input/joystick-parport.txt b/Documentation/input/joystick-parport.txt
--- a/Documentation/input/joystick-parport.txt	Sun Feb 29 01:19:19 2004
+++ b/Documentation/input/joystick-parport.txt	Sun Feb 29 01:19:19 2004
@@ -434,7 +434,7 @@
   Using gamecon.c you can connect up to five devices to one parallel port. It
 uses the following kernel/module command line:
 
-	gc=port,pad1,pad2,pad3,pad4,pad5
+	gamecon.map=port,pad1,pad2,pad3,pad4,pad5
 
   Where 'port' the number of the parport interface (eg. 0 for parport0).
 
@@ -457,15 +457,15 @@
 your controller plugged in before initializing.
 
   Should you want to use more than one of parallel ports at once, you can use
-gc_2 and gc_3 as additional command line parameters for two more parallel
-ports.
+gamecon.map2 and gamecon.map3 as additional command line parameters for two
+more parallel ports.
 
 3.2 db9.c
 ~~~~~~~~~
   Apart from making an interface, there is nothing difficult on using the
 db9.c driver. It uses the following kernel/module command line:
 
-	db9=port,type
+	db9.dev=port,type
 
   Where 'port' is the number of the parport interface (eg. 0 for parport0).
 
@@ -489,14 +489,14 @@
 	 10  | Amiga CD32 pad
 
   Should you want to use more than one of these joysticks/pads at once, you
-can use db9_2 and db9_3 as additional command line parameters for two
+can use db9.dev2 and db9.dev3 as additional command line parameters for two
 more joysticks/pads.
 
 3.3 turbografx.c
 ~~~~~~~~~~~~~~~~
   The turbografx.c driver uses a very simple kernel/module command line:
 
-	tgfx=port,js1,js2,js3,js4,js5,js6,js7
+	turbografx.map=port,js1,js2,js3,js4,js5,js6,js7
 
   Where 'port' is the number of the parport interface (eg. 0 for parport0).
 
@@ -504,8 +504,8 @@
 interface ports 1-7 have. For a standard multisystem joystick, this is 1.
 
   Should you want to use more than one of these interfaces at once, you can
-use tgfx_2 and tgfx_3 as additional command line parameters for two more
-interfaces.
+use turbografx.map2 and turbografx.map3 as additional command line parameters
+for two more interfaces.
 
 3.4 PC parallel port pinout
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
diff -Nru a/Documentation/input/joystick.txt b/Documentation/input/joystick.txt
--- a/Documentation/input/joystick.txt	Sun Feb 29 01:19:19 2004
+++ b/Documentation/input/joystick.txt	Sun Feb 29 01:19:19 2004
@@ -111,7 +111,7 @@
 	alias tty-ldisc-2 serport
 	alias char-major-13 input
 	above input joydev ns558 analog
-	options analog js=gamepad
+	options analog map=gamepad,none,2btn
 
 2.5 Verifying that it works
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -185,7 +185,7 @@
 module command line, when inserting analog.o into the kernel. The
 parameters are:
 
-	js=type,type,type,....
+	analog.map=<type1>,<type2>,<type3>,....
 
   'type' is type of the joystick from the table below, defining joysticks
 present on gameports in the system, starting with gameport0, second 'type'
@@ -419,7 +419,7 @@
   Amiga joysticks, connected to an Amiga, are supported by the amijoy.c
 driver. Since they can't be autodetected, the driver has a command line.
 
-	amijoy=a,b
+	amijoy.map=<a>,<b>
 
   a and b define the joysticks connected to the JOY0DAT and JOY1DAT ports of
 the Amiga.
diff -Nru a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
--- a/Documentation/kernel-parameters.txt	Sun Feb 29 01:19:19 2004
+++ b/Documentation/kernel-parameters.txt	Sun Feb 29 01:19:19 2004
@@ -151,7 +151,15 @@
 			Format: <host-scsi-id>,<target-scsi-id>,<max-rate>,<max-offset>
 			See also header of drivers/scsi/AM53C974.c.
 
-	amijoy=		[HW,JOY] Amiga joystick support 
+	amijoy.map=	[HW,JOY] Amiga joystick support
+			Map of devices attached to JOY0DAT and JOY1DAT
+			Format: <a>,<b>
+			See also Documentation/kernel/input/joystick.txt
+
+	analog.map=	[HW,JOY] Analog joystick and gamepad support
+			Specifies type or capabilities of an analog joystick
+			connected to one of 16 gameports
+			Format: <type1>,<type2>,..<type16>
 
 	apc=		[HW,SPARC] Power management functions (SPARCstation-4/5 + deriv.)
 			Format: noidle
@@ -280,10 +288,11 @@
 	dasd=		[HW,NET]    
 			See header of drivers/s390/block/dasd_devmap.c.
 
-	db9=		[HW,JOY]
-	db9_2=
-	db9_3=
- 
+	db9.dev[2|3]=	[HW,JOY] Multisystem joystick support via parallel port
+			(one device per port)
+			Format: <port#>,<type>
+			See also Documentation/input/joystick-parport.txt
+
 	debug		[KNL] Enable kernel debugging (events log level).
 
 	decnet=		[HW,NET]
@@ -377,12 +386,14 @@
 	ftape=		[HW] Floppy Tape subsystem debugging options.
 			See Documentation/ftape.txt.
 
+	gamecon.map[2|3]=
+			[HW,JOY] Multisystem joystick and NES/SNES/PSX pad
+			support via parallel port (up to 5 devices per port)
+			Format: <port#>,<pad1>,<pad2>,<pad3>,<pad4>,<pad5>
+			See also Documentation/input/joystick-parport.txt
+
 	gamma=		[HW,DRM]
 
-	gc=		[HW,JOY]
-	gc_2=		See Documentation/input/joystick-parport.txt.
-	gc_3=		
- 
 	gdth=		[HW,SCSI]
 			See header of drivers/scsi/gdth.c.
 
@@ -609,9 +620,9 @@
 
 	mga=		[HW,DRM]
 
-	mousedev.xres	[MOUSE] Horizontal screen resolution, used for devices
+	mousedev.xres=	[MOUSE] Horizontal screen resolution, used for devices
 			reporting absolute coordinates, such as tablets
-	mousedev.yres	[MOUSE] Vertical screen resolution, used for devices
+	mousedev.yres=	[MOUSE] Vertical screen resolution, used for devices
 			reporting absolute coordinates, such as tablets
 
 	mpu401=		[HW,OSS]
@@ -1156,10 +1167,6 @@
 			See header of drivers/scsi/t128.c.
 
 	tdfx=		[HW,DRM]
- 
-	tgfx=		[HW,JOY] TurboGraFX parallel port interface
-	tgfx_2=		See Documentation/input/joystick-parport.txt.
-	tgfx_3=
 
 	thash_entries=	[KNL,NET]
 			Set number of hash buckets for TCP connection
@@ -1182,8 +1189,13 @@
 	trix=		[HW,OSS] MediaTrix AudioTrix Pro
 			Format: <io>,<irq>,<dma>,<dma2>,<sb_io>,<sb_irq>,<sb_dma>,<mpu_io>,<mpu_irq>
  
-	tsdev.xres	[TS] Horizontal screen resolution.
-	tsdev.yres	[TS] Vertical screen resolution.
+	tsdev.xres=	[TS] Horizontal screen resolution.
+	tsdev.yres=	[TS] Vertical screen resolution.
+
+	turbografx.map[2|3]=
+			[HW,JOY] TurboGraFX parallel port interface
+			Format: <port#>,<js1>,<js2>,<js3>,<js4>,<js5>,<js6>,<js7>
+			See also Documentation/input/joystick-parport.txt
 
 	u14-34f=	[HW,SCSI] UltraStor 14F/34F SCSI host adapter
 			See header of drivers/scsi/u14-34f.c.
diff -Nru a/drivers/input/joystick/amijoy.c b/drivers/input/joystick/amijoy.c
--- a/drivers/input/joystick/amijoy.c	Sun Feb 29 01:19:19 2004
+++ b/drivers/input/joystick/amijoy.c	Sun Feb 29 01:19:19 2004
@@ -32,6 +32,7 @@
 #include <linux/errno.h>
 #include <linux/kernel.h>
 #include <linux/module.h>
+#include <linux/moduleparam.h>
 #include <linux/init.h>
 #include <linux/input.h>
 #include <linux/interrupt.h>
@@ -42,10 +43,13 @@
 
 MODULE_AUTHOR("Vojtech Pavlik <vojtech@ucw.cz>");
 MODULE_DESCRIPTION("Driver for Amiga joysticks");
-MODULE_PARM(amijoy, "1-2i");
 MODULE_LICENSE("GPL");
 
 static int amijoy[2] = { 0, 1 };
+static int amijoy_nargs;  
+module_param_array_named(map, amijoy, uint, amijoy_nargs, 0);
+MODULE_PARM_DESC(map, "Map of attached joysticks in form of <a>,<b> (default is 0,1)");
+
 static int amijoy_used[2] = { 0, 0 };
 static struct input_dev amijoy_dev[2];
 static char *amijoy_phys[2] = { "amijoy/input0", "amijoy/input1" };
@@ -100,17 +104,6 @@
 	if (!--(*used))
 		free_irq(IRQ_AMIGA_VERTB, amijoy_interrupt);
 }
-
-static int __init amijoy_setup(char *str)
-{
-	int i;
-	int ints[4];
-
-	str = get_options(str, ARRAY_SIZE(ints), ints);
-	for (i = 0; i <= ints[0] && i < 2; i++) amijoy[i] = ints[i+1];
-	return 1;
-}
-__setup("amijoy=", amijoy_setup);
 
 static int __init amijoy_init(void)
 {
diff -Nru a/drivers/input/joystick/analog.c b/drivers/input/joystick/analog.c
--- a/drivers/input/joystick/analog.c	Sun Feb 29 01:19:19 2004
+++ b/drivers/input/joystick/analog.c	Sun Feb 29 01:19:19 2004
@@ -32,6 +32,7 @@
 #include <linux/delay.h>
 #include <linux/kernel.h>
 #include <linux/module.h>
+#include <linux/moduleparam.h>
 #include <linux/slab.h>
 #include <linux/bitops.h>
 #include <linux/init.h>
@@ -50,9 +51,10 @@
 #define ANALOG_PORTS		16
 
 static char *js[ANALOG_PORTS];
+static int js_nargs;
 static int analog_options[ANALOG_PORTS];
-MODULE_PARM(js, "1-" __MODULE_STRING(ANALOG_PORTS) "s");
-MODULE_PARM_DESC(js, "Analog joystick options");
+module_param_array_named(map, js, charp, js_nargs, 0);
+MODULE_PARM_DESC(map, "Describes analog joysticks type/capabilities");
 
 /*
  * Times, feature definitions.
@@ -711,7 +713,7 @@
 	int i, j;
 	char *end;
 
-	for (i = 0; i < ANALOG_PORTS && js[i]; i++) {
+	for (i = 0; i < js_nargs; i++) {
 
 		for (j = 0; analog_types[j].name; j++)
 			if (!strcmp(analog_types[j].name, js[i])) {
@@ -741,24 +743,6 @@
 	.connect =	analog_connect,
 	.disconnect =	analog_disconnect,
 };
-
-#ifndef MODULE
-static int __init analog_setup(char *str)
-{
-	char *s = str;
-	int i = 0;
-
-	if (!str || !*str) return 0;
-
-	while ((str = s) && (i < ANALOG_PORTS)) {
-		if ((s = strchr(str,','))) *s++ = 0;
-		js[i++] = str;
-	}
-
-	return 1;
-}
-__setup("js=", analog_setup);
-#endif
 
 int __init analog_init(void)
 {
diff -Nru a/drivers/input/joystick/db9.c b/drivers/input/joystick/db9.c
--- a/drivers/input/joystick/db9.c	Sun Feb 29 01:19:19 2004
+++ b/drivers/input/joystick/db9.c	Sun Feb 29 01:19:19 2004
@@ -33,6 +33,7 @@
 
 #include <linux/kernel.h>
 #include <linux/module.h>
+#include <linux/moduleparam.h>
 #include <linux/delay.h>
 #include <linux/init.h>
 #include <linux/parport.h>
@@ -42,9 +43,20 @@
 MODULE_DESCRIPTION("Atari, Amstrad, Commodore, Amiga, Sega, etc. joystick driver");
 MODULE_LICENSE("GPL");
 
-MODULE_PARM(db9, "2i");
-MODULE_PARM(db9_2, "2i");
-MODULE_PARM(db9_3, "2i");
+static int db9[] __initdata = { -1, 0 };
+static int db9_nargs __initdata = 0;
+module_param_array_named(dev, db9, int, db9_nargs, 0);
+MODULE_PARM_DESC(dev, "Describes first attached device (<parport#>,<type>)");
+
+static int db9_2[] __initdata = { -1, 0 };
+static int db9_nargs_2 __initdata = 0;
+module_param_array_named(dev2, db9_2, int, db9_nargs_2, 0);
+MODULE_PARM_DESC(dev2, "Describes second attached device (<parport#>,<type>)");
+
+static int db9_3[] __initdata = { -1, 0 };
+static int db9_nargs_3 __initdata = 0;
+module_param_array_named(dev3, db9_3, int, db9_nargs_3, 0);
+MODULE_PARM_DESC(dev3, "Describes third attached device (<parport#>,<type>)");
 
 #define DB9_MULTI_STICK		0x01
 #define DB9_MULTI2_STICK	0x02
@@ -76,10 +88,6 @@
 #define DB9_GENESIS6_DELAY	14
 #define DB9_REFRESH_TIME	HZ/100
 
-static int db9[] __initdata = { -1, 0 };
-static int db9_2[] __initdata = { -1, 0 };
-static int db9_3[] __initdata = { -1, 0 };
-
 struct db9 {
 	struct input_dev dev[DB9_MAX_DEVICES];
 	struct timer_list timer;
@@ -518,7 +526,7 @@
 	}
 }
 
-static struct db9 __init *db9_probe(int *config)
+static struct db9 __init *db9_probe(int *config, int nargs)
 {
 	struct db9 *db9;
 	struct parport *pp;
@@ -526,6 +534,12 @@
 
 	if (config[0] < 0)
 		return NULL;
+
+	if (nargs < 2) {
+		printk(KERN_ERR "db9.c: Device type must be specified.\n");
+		return NULL;
+	}
+
 	if (config[1] < 1 || config[1] >= DB9_MAX_PAD || !db9_buttons[config[1]]) {
 		printk(KERN_ERR "db9.c: bad config\n");
 		return NULL;
@@ -601,38 +615,11 @@
 	return db9;
 }
 
-#ifndef MODULE
-static int __init db9_setup(char *str)
-{
-	int i, ints[3];
-	get_options(str, ARRAY_SIZE(ints), ints);
-	for (i = 0; i <= ints[0] && i < 2; i++) db9[i] = ints[i + 1];
-	return 1;
-}
-static int __init db9_setup_2(char *str)
-{
-	int i, ints[3];
-	get_options(str, ARRAY_SIZE(ints), ints);
-	for (i = 0; i <= ints[0] && i < 2; i++) db9_2[i] = ints[i + 1];
-	return 1;
-}
-static int __init db9_setup_3(char *str)
-{
-	int i, ints[3];
-	get_options(str, ARRAY_SIZE(ints), ints);
-	for (i = 0; i <= ints[0] && i < 2; i++) db9_3[i] = ints[i + 1];
-	return 1;
-}
-__setup("db9=", db9_setup);
-__setup("db9_2=", db9_setup_2);
-__setup("db9_3=", db9_setup_3);
-#endif
-
 int __init db9_init(void)
 {
-	db9_base[0] = db9_probe(db9);
-	db9_base[1] = db9_probe(db9_2);
-	db9_base[2] = db9_probe(db9_3);
+	db9_base[0] = db9_probe(db9, db9_nargs);
+	db9_base[1] = db9_probe(db9_2, db9_nargs_2);
+	db9_base[2] = db9_probe(db9_3, db9_nargs_3);
 
 	if (db9_base[0] || db9_base[1] || db9_base[2])
 		return 0;
diff -Nru a/drivers/input/joystick/gamecon.c b/drivers/input/joystick/gamecon.c
--- a/drivers/input/joystick/gamecon.c	Sun Feb 29 01:19:19 2004
+++ b/drivers/input/joystick/gamecon.c	Sun Feb 29 01:19:19 2004
@@ -35,6 +35,7 @@
 #include <linux/kernel.h>
 #include <linux/delay.h>
 #include <linux/module.h>
+#include <linux/moduleparam.h>
 #include <linux/init.h>
 #include <linux/parport.h>
 #include <linux/input.h>
@@ -43,10 +44,26 @@
 MODULE_DESCRIPTION("NES, SNES, N64, MultiSystem, PSX gamepad driver");
 MODULE_LICENSE("GPL");
 
-MODULE_PARM(gc, "2-6i");
-MODULE_PARM(gc_2,"2-6i");
-MODULE_PARM(gc_3,"2-6i");
-MODULE_PARM(gc_psx_delay, "i");
+static int gc[] __initdata = { -1, 0, 0, 0, 0, 0 };
+static int gc_nargs __initdata = 0;
+module_param_array_named(map, gc, int, gc_nargs, 0);
+MODULE_PARM_DESC(map, "Describers first set of devices (<parport#>,<pad1>,<pad2>,..<pad5>)");
+
+static int gc_2[] __initdata = { -1, 0, 0, 0, 0, 0 };
+static int gc_nargs_2 __initdata = 0;
+module_param_array_named(map2, gc_2, int, gc_nargs_2, 0);
+MODULE_PARM_DESC(map2, "Describers second set of devices");
+
+static int gc_3[] __initdata = { -1, 0, 0, 0, 0, 0 };
+static int gc_nargs_3 __initdata = 0;
+module_param_array_named(map3, gc_3, int, gc_nargs_3, 0);
+MODULE_PARM_DESC(map3, "Describers third set of devices");
+
+__obsolete_setup("gc=");
+__obsolete_setup("gc_2=");
+__obsolete_setup("gc_3=");
+
+/* see also gs_psx_delay parameter in PSX support section */
 
 #define GC_SNES		1
 #define GC_NES		2
@@ -71,10 +88,6 @@
 
 static struct gc *gc_base[3];
 
-static int gc[] __initdata = { -1, 0, 0, 0, 0, 0 };
-static int gc_2[] __initdata = { -1, 0, 0, 0, 0, 0 };
-static int gc_3[] __initdata = { -1, 0, 0, 0, 0, 0 };
-
 static int gc_status_bit[] = { 0x40, 0x80, 0x20, 0x10, 0x08 };
 
 static char *gc_names[] = { NULL, "SNES pad", "NES pad", "NES FourPort", "Multisystem joystick",
@@ -232,6 +245,11 @@
 #define GC_PSX_LEN(x)	((x) & 0xf)	/* Low nibble is length in words */
 
 static int gc_psx_delay = GC_PSX_DELAY;
+module_param_named(psx_delay, gc_psx_delay, uint, 0);
+MODULE_PARM_DESC(psx_delay, "Delay when accessing Sony PSX controller (usecs)");
+
+__obsolete_setup("gc_psx_delay=");
+
 static short gc_psx_abs[] = { ABS_X, ABS_Y, ABS_RX, ABS_RY, ABS_HAT0X, ABS_HAT0Y };
 static short gc_psx_btn[] = { BTN_TL, BTN_TR, BTN_TL2, BTN_TR2, BTN_A, BTN_B, BTN_X, BTN_Y,
 				BTN_START, BTN_SELECT, BTN_THUMBL, BTN_THUMBR };
@@ -468,7 +486,7 @@
 	}
 }
 
-static struct gc __init *gc_probe(int *config)
+static struct gc __init *gc_probe(int *config, int nargs)
 {
 	struct gc *gc;
 	struct parport *pp;
@@ -478,6 +496,11 @@
 	if (config[0] < 0)
 		return NULL;
 
+	if (nargs < 2) {
+		printk(KERN_ERR "gamecon.c: at least one device must be specified\n");
+		return NULL;
+	}
+
 	pp = parport_find_number(config[0]);
 
 	if (!pp) {
@@ -507,7 +530,7 @@
 	gc->timer.data = (long) gc;
 	gc->timer.function = gc_timer;
 
-	for (i = 0; i < 5; i++) {
+	for (i = 0; i < nargs - 1; i++) {
 
 		if (!config[i + 1])
 			continue;
@@ -632,44 +655,11 @@
 	return gc;
 }
 
-#ifndef MODULE
-static int __init gc_setup(char *str)
-{
-	int i, ints[7];
-	get_options(str, ARRAY_SIZE(ints), ints);
-	for (i = 0; i <= ints[0] && i < 6; i++) gc[i] = ints[i + 1];
-	return 1;
-}
-static int __init gc_setup_2(char *str)
-{
-	int i, ints[7];
-	get_options(str, ARRAY_SIZE(ints), ints);
-	for (i = 0; i <= ints[0] && i < 6; i++) gc_2[i] = ints[i + 1];
-	return 1;
-}
-static int __init gc_setup_3(char *str)
-{
-	int i, ints[7];
-	get_options(str, ARRAY_SIZE(ints), ints);
-	for (i = 0; i <= ints[0] && i < 6; i++) gc_3[i] = ints[i + 1];
-	return 1;
-}
-static int __init gc_psx_setup(char *str)
-{
-        get_option(&str, &gc_psx_delay);
-        return 1;
-}
-__setup("gc=", gc_setup);
-__setup("gc_2=", gc_setup_2);
-__setup("gc_3=", gc_setup_3);
-__setup("gc_psx_delay=", gc_psx_setup);
-#endif
-
 int __init gc_init(void)
 {
-	gc_base[0] = gc_probe(gc);
-	gc_base[1] = gc_probe(gc_2);
-	gc_base[2] = gc_probe(gc_3);
+	gc_base[0] = gc_probe(gc, gc_nargs);
+	gc_base[1] = gc_probe(gc_2, gc_nargs_2);
+	gc_base[2] = gc_probe(gc_3, gc_nargs_3);
 
 	if (gc_base[0] || gc_base[1] || gc_base[2])
 		return 0;
diff -Nru a/drivers/input/joystick/turbografx.c b/drivers/input/joystick/turbografx.c
--- a/drivers/input/joystick/turbografx.c	Sun Feb 29 01:19:19 2004
+++ b/drivers/input/joystick/turbografx.c	Sun Feb 29 01:19:19 2004
@@ -35,15 +35,31 @@
 #include <linux/parport.h>
 #include <linux/input.h>
 #include <linux/module.h>
+#include <linux/moduleparam.h>
 #include <linux/init.h>
 
 MODULE_AUTHOR("Vojtech Pavlik <vojtech@ucw.cz>");
 MODULE_DESCRIPTION("TurboGraFX parallel port interface driver");
 MODULE_LICENSE("GPL");
 
-MODULE_PARM(tgfx, "2-8i");
-MODULE_PARM(tgfx_2, "2-8i");
-MODULE_PARM(tgfx_3, "2-8i");
+static int tgfx[] __initdata = { -1, 0, 0, 0, 0, 0, 0, 0 };
+static int tgfx_nargs __initdata = 0;
+module_param_array_named(map, tgfx, int, tgfx_nargs, 0);
+MODULE_PARM_DESC(map, "Describes first set of devices (<parport#>,<js1>,<js2>,..<js7>");
+
+static int tgfx_2[] __initdata = { -1, 0, 0, 0, 0, 0, 0, 0 };
+static int tgfx_nargs_2 __initdata = 0;
+module_param_array_named(map2, tgfx_2, int, tgfx_nargs_2, 0);
+MODULE_PARM_DESC(map2, "Describes second set of devices");
+
+static int tgfx_3[] __initdata = { -1, 0, 0, 0, 0, 0, 0, 0 };
+static int tgfx_nargs_3 __initdata = 0;
+module_param_array_named(map3, tgfx_3, int, tgfx_nargs_3, 0);
+MODULE_PARM_DESC(map3, "Describes third set of devices");
+
+__obsolete_setup("tgfx=");
+__obsolete_setup("tgfx_2=");
+__obsolete_setup("tgfx_3=");
 
 #define TGFX_REFRESH_TIME	HZ/100	/* 10 ms */
 
@@ -58,10 +74,6 @@
 #define TGFX_TOP		0x01
 #define TGFX_TOP2		0x08
 
-static int tgfx[] __initdata = { -1, 0, 0, 0, 0, 0, 0, 0 };
-static int tgfx_2[] __initdata = { -1, 0, 0, 0, 0, 0, 0, 0 };
-static int tgfx_3[] __initdata = { -1, 0, 0, 0, 0, 0, 0, 0 };
-
 static int tgfx_buttons[] = { BTN_TRIGGER, BTN_THUMB, BTN_THUMB2, BTN_TOP, BTN_TOP2 };
 static char *tgfx_name = "TurboGraFX Multisystem joystick";
 
@@ -133,7 +145,7 @@
  * tgfx_probe() probes for tg gamepads.
  */
 
-static struct tgfx __init *tgfx_probe(int *config)
+static struct tgfx __init *tgfx_probe(int *config, int nargs)
 {
 	struct tgfx *tgfx;
 	struct parport *pp;
@@ -142,6 +154,11 @@
 	if (config[0] < 0)
 		return NULL;
 
+	if (nargs < 2) {
+		printk(KERN_ERR "turbografx.c: at least one joystick must be specified\n");
+		return NULL;
+	}
+
 	pp = parport_find_number(config[0]);
 
 	if (!pp) {
@@ -171,7 +188,7 @@
 
 	tgfx->sticks = 0;
 
-	for (i = 0; i < 7; i++)
+	for (i = 0; i < nargs - 1; i++)
 		if (config[i+1] > 0 && config[i+1] < 6) {
 
 			tgfx->sticks |= (1 << i);
@@ -212,38 +229,11 @@
 	return tgfx;
 }
 
-#ifndef MODULE
-static int __init tgfx_setup(char *str)
-{
-	int i, ints[9];
-	get_options(str, ARRAY_SIZE(ints), ints);
-	for (i = 0; i <= ints[0] && i < 8; i++) tgfx[i] = ints[i + 1];
-	return 1;
-}
-static int __init tgfx_setup_2(char *str)
-{
-	int i, ints[9];
-	get_options(str, ARRAY_SIZE(ints), ints);
-	for (i = 0; i <= ints[0] && i < 8; i++) tgfx_2[i] = ints[i + 1];
-	return 1;
-}
-static int __init tgfx_setup_3(char *str)
-{
-	int i, ints[9];
-	get_options(str, ARRAY_SIZE(ints), ints);
-	for (i = 0; i <= ints[0] && i < 8; i++) tgfx_3[i] = ints[i + 1];
-	return 1;
-}
-__setup("tgfx=", tgfx_setup);
-__setup("tgfx_2=", tgfx_setup_2);
-__setup("tgfx_3=", tgfx_setup_3);
-#endif
-
 int __init tgfx_init(void)
 {
-	tgfx_base[0] = tgfx_probe(tgfx);
-	tgfx_base[1] = tgfx_probe(tgfx_2);
-	tgfx_base[2] = tgfx_probe(tgfx_3);
+	tgfx_base[0] = tgfx_probe(tgfx, tgfx_nargs);
+	tgfx_base[1] = tgfx_probe(tgfx_2, tgfx_nargs_2);
+	tgfx_base[2] = tgfx_probe(tgfx_3, tgfx_nargs_3);
 
 	if (tgfx_base[0] || tgfx_base[1] || tgfx_base[2])
 		return 0;

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH 8/9] introduce __obsolete_setup
  2004-02-29  7:01             ` [PATCH 7/9] Move joysticks to the module_param way of handling options Dmitry Torokhov
@ 2004-02-29  7:02               ` Dmitry Torokhov
  2004-02-29  7:03                 ` [PATCH 9/9] Document removed input options using __obsolete_setup Dmitry Torokhov
  0 siblings, 1 reply; 16+ messages in thread
From: Dmitry Torokhov @ 2004-02-29  7:02 UTC (permalink / raw)
  To: Vojtech Pavlik; +Cc: linux-kernel


===================================================================


ChangeSet@1.1692, 2004-02-28 00:49:41-05:00, dtor_core@ameritech.net
  Setup: introduce __obsolete_setup macro to denote truly obsolete
         parameters. Whenever such parameter is specified kernel
         will comlain that "Parameter %s is obsolete, ignored"


 include/linux/init.h |   22 +++++++++++++++++-----
 init/main.c          |    7 +++++--
 2 files changed, 22 insertions(+), 7 deletions(-)


===================================================================



diff -Nru a/include/linux/init.h b/include/linux/init.h
--- a/include/linux/init.h	Sun Feb 29 01:19:55 2004
+++ b/include/linux/init.h	Sun Feb 29 01:19:55 2004
@@ -110,12 +110,21 @@
 };
 
 /* OBSOLETE: see moduleparam.h for the right way. */
-#define __setup(str, fn)					\
-	static char __setup_str_##fn[] __initdata = str;	\
-	static struct obs_kernel_param __setup_##fn		\
+#define __setup_param(str, unique_id, fn)			\
+	static char __setup_str_##unique_id[] __initdata = str;	\
+	static struct obs_kernel_param __setup_##unique_id	\
 		 __attribute_used__				\
 		 __attribute__((__section__(".init.setup")))	\
-		= { __setup_str_##fn, fn }
+		= { __setup_str_##unique_id, fn }
+
+#define __setup_null_param(str, unique_id)			\
+	__setup_param(str, unique_id, NULL)
+
+#define __setup(str, fn)					\
+	__setup_param(str, fn, fn)
+
+#define __obsolete_setup(str)					\
+	__setup_null_param(str, __LINE__)
 
 #endif /* __ASSEMBLY__ */
 
@@ -172,7 +181,10 @@
 	{ return exitfn; }					\
 	void cleanup_module(void) __attribute__((alias(#exitfn)));
 
-#define __setup(str,func) /* nothing */
+#define __setup_param(str, unique_id, fn)	/* nothing */
+#define __setup_null_param(str, unique_id) 	/* nothing */
+#define __setup(str, func) 			/* nothing */
+#define __obsolete_setup(str) 			/* nothing */
 #endif
 
 /* Data marked not to be saved by software_suspend() */
diff -Nru a/init/main.c b/init/main.c
--- a/init/main.c	Sun Feb 29 01:19:55 2004
+++ b/init/main.c	Sun Feb 29 01:19:55 2004
@@ -155,8 +155,11 @@
 	p = &__setup_start;
 	do {
 		int n = strlen(p->str);
-		if (!strncmp(line,p->str,n)) {
-			if (p->setup_func(line+n))
+		if (!strncmp(line, p->str, n)) {
+			if (!p->setup_func) {
+				printk(KERN_WARNING "Parameter %s is obsolete, ignored\n", p->str);
+				return 1;
+			} else if (p->setup_func(line + n))
 				return 1;
 		}
 		p++;

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH 9/9] Document removed input options using __obsolete_setup
  2004-02-29  7:02               ` [PATCH 8/9] introduce __obsolete_setup Dmitry Torokhov
@ 2004-02-29  7:03                 ` Dmitry Torokhov
  0 siblings, 0 replies; 16+ messages in thread
From: Dmitry Torokhov @ 2004-02-29  7:03 UTC (permalink / raw)
  To: Vojtech Pavlik; +Cc: linux-kernel


===================================================================


ChangeSet@1.1693, 2004-02-28 00:51:33-05:00, dtor_core@ameritech.net
  Input: use __obsolete_setup to document removed (renamed)
         options so users will have a clue why the options
         do not work anymore


 joystick/amijoy.c     |    2 ++
 joystick/analog.c     |    2 ++
 joystick/db9.c        |    4 ++++
 joystick/gamecon.c    |    6 ++++++
 joystick/turbografx.c |    4 ++++
 keyboard/atkbd.c      |    4 ++++
 mouse/98busmouse.c    |    2 ++
 mouse/inport.c        |    2 ++
 mouse/logibm.c        |    2 ++
 mouse/psmouse-base.c  |    6 ++++++
 serio/i8042.c         |    7 +++++++
 11 files changed, 41 insertions(+)


===================================================================



diff -Nru a/drivers/input/joystick/amijoy.c b/drivers/input/joystick/amijoy.c
--- a/drivers/input/joystick/amijoy.c	Sun Feb 29 01:20:26 2004
+++ b/drivers/input/joystick/amijoy.c	Sun Feb 29 01:20:26 2004
@@ -50,6 +50,8 @@
 module_param_array_named(map, amijoy, uint, amijoy_nargs, 0);
 MODULE_PARM_DESC(map, "Map of attached joysticks in form of <a>,<b> (default is 0,1)");
 
+__obsolete_setup("amijoy=");
+
 static int amijoy_used[2] = { 0, 0 };
 static struct input_dev amijoy_dev[2];
 static char *amijoy_phys[2] = { "amijoy/input0", "amijoy/input1" };
diff -Nru a/drivers/input/joystick/analog.c b/drivers/input/joystick/analog.c
--- a/drivers/input/joystick/analog.c	Sun Feb 29 01:20:26 2004
+++ b/drivers/input/joystick/analog.c	Sun Feb 29 01:20:26 2004
@@ -56,6 +56,8 @@
 module_param_array_named(map, js, charp, js_nargs, 0);
 MODULE_PARM_DESC(map, "Describes analog joysticks type/capabilities");
 
+__obsolete_setup("js=");
+
 /*
  * Times, feature definitions.
  */
diff -Nru a/drivers/input/joystick/db9.c b/drivers/input/joystick/db9.c
--- a/drivers/input/joystick/db9.c	Sun Feb 29 01:20:26 2004
+++ b/drivers/input/joystick/db9.c	Sun Feb 29 01:20:26 2004
@@ -58,6 +58,10 @@
 module_param_array_named(dev3, db9_3, int, db9_nargs_3, 0);
 MODULE_PARM_DESC(dev3, "Describes third attached device (<parport#>,<type>)");
 
+__obsolete_setup("db9=");
+__obsolete_setup("db9_2=");
+__obsolete_setup("db9_3=");
+
 #define DB9_MULTI_STICK		0x01
 #define DB9_MULTI2_STICK	0x02
 #define DB9_GENESIS_PAD		0x03
diff -Nru a/drivers/input/joystick/gamecon.c b/drivers/input/joystick/gamecon.c
--- a/drivers/input/joystick/gamecon.c	Sun Feb 29 01:20:26 2004
+++ b/drivers/input/joystick/gamecon.c	Sun Feb 29 01:20:26 2004
@@ -63,6 +63,10 @@
 __obsolete_setup("gc_2=");
 __obsolete_setup("gc_3=");
 
+__obsolete_setup("gc=");
+__obsolete_setup("gc_2=");
+__obsolete_setup("gc_3=");
+
 /* see also gs_psx_delay parameter in PSX support section */
 
 #define GC_SNES		1
@@ -247,6 +251,8 @@
 static int gc_psx_delay = GC_PSX_DELAY;
 module_param_named(psx_delay, gc_psx_delay, uint, 0);
 MODULE_PARM_DESC(psx_delay, "Delay when accessing Sony PSX controller (usecs)");
+
+__obsolete_setup("gc_psx_delay=");
 
 __obsolete_setup("gc_psx_delay=");
 
diff -Nru a/drivers/input/joystick/turbografx.c b/drivers/input/joystick/turbografx.c
--- a/drivers/input/joystick/turbografx.c	Sun Feb 29 01:20:26 2004
+++ b/drivers/input/joystick/turbografx.c	Sun Feb 29 01:20:26 2004
@@ -61,6 +61,10 @@
 __obsolete_setup("tgfx_2=");
 __obsolete_setup("tgfx_3=");
 
+__obsolete_setup("tgfx=");
+__obsolete_setup("tgfx_2=");
+__obsolete_setup("tgfx_3=");
+
 #define TGFX_REFRESH_TIME	HZ/100	/* 10 ms */
 
 #define TGFX_TRIGGER		0x08
diff -Nru a/drivers/input/keyboard/atkbd.c b/drivers/input/keyboard/atkbd.c
--- a/drivers/input/keyboard/atkbd.c	Sun Feb 29 01:20:26 2004
+++ b/drivers/input/keyboard/atkbd.c	Sun Feb 29 01:20:26 2004
@@ -48,6 +48,10 @@
 module_param_named(softrepeat, atkbd_softrepeat, bool, 0);
 MODULE_PARM_DESC(softrepeat, "Use software keyboard repeat");
 
+__obsolete_setup("atkbd_set=");
+__obsolete_setup("atkbd_reset");
+__obsolete_setup("atkbd_softrepeat=");
+
 /*
  * Scancode to keycode tables. These are just the default setting, and
  * are loadable via an userland utility.
diff -Nru a/drivers/input/mouse/98busmouse.c b/drivers/input/mouse/98busmouse.c
--- a/drivers/input/mouse/98busmouse.c	Sun Feb 29 01:20:26 2004
+++ b/drivers/input/mouse/98busmouse.c	Sun Feb 29 01:20:26 2004
@@ -74,6 +74,8 @@
 module_param_named(irq, pc98bm_irq, uint, 0);
 MODULE_PARM_DESC(irq, "IRQ number (13=default)");
 
+__obsolete_setup("pc98bm_irq=");
+
 static int pc98bm_used = 0;
 
 static irqreturn_t pc98bm_interrupt(int irq, void *dev_id, struct pt_regs *regs);
diff -Nru a/drivers/input/mouse/inport.c b/drivers/input/mouse/inport.c
--- a/drivers/input/mouse/inport.c	Sun Feb 29 01:20:26 2004
+++ b/drivers/input/mouse/inport.c	Sun Feb 29 01:20:26 2004
@@ -85,6 +85,8 @@
 module_param_named(irq, inport_irq, uint, 0);
 MODULE_PARM_DESC(irq, "IRQ number (5=default)");
 
+__obsolete_setup("inport_irq=");
+
 static int inport_used;
 
 static irqreturn_t inport_interrupt(int irq, void *dev_id, struct pt_regs *regs);
diff -Nru a/drivers/input/mouse/logibm.c b/drivers/input/mouse/logibm.c
--- a/drivers/input/mouse/logibm.c	Sun Feb 29 01:20:26 2004
+++ b/drivers/input/mouse/logibm.c	Sun Feb 29 01:20:26 2004
@@ -75,6 +75,8 @@
 module_param_named(irq, logibm_irq, uint, 0);
 MODULE_PARM_DESC(irq, "IRQ number (5=default)");
 
+__obsolete_setup("logibm_irq=");
+
 static int logibm_used = 0;
 
 static irqreturn_t logibm_interrupt(int irq, void *dev_id, struct pt_regs *regs);
diff -Nru a/drivers/input/mouse/psmouse-base.c b/drivers/input/mouse/psmouse-base.c
--- a/drivers/input/mouse/psmouse-base.c	Sun Feb 29 01:20:26 2004
+++ b/drivers/input/mouse/psmouse-base.c	Sun Feb 29 01:20:26 2004
@@ -47,6 +47,12 @@
 module_param_named(resetafter, psmouse_resetafter, uint, 0);
 MODULE_PARM_DESC(resetafter, "Reset Synaptics Touchpad after so many bad packets (0 = never).");
 
+__obsolete_setup("psmouse_noext");
+__obsolete_setup("psmouse_resolution=");
+__obsolete_setup("psmouse_smartscroll=");
+__obsolete_setup("psmouse_resetafter=");
+__obsolete_setup("psmouse_rate=");
+
 static char *psmouse_protocols[] = { "None", "PS/2", "PS2++", "PS2T++", "GenPS/2", "ImPS/2", "ImExPS/2", "SynPS/2"};
 
 /*
diff -Nru a/drivers/input/serio/i8042.c b/drivers/input/serio/i8042.c
--- a/drivers/input/serio/i8042.c	Sun Feb 29 01:20:26 2004
+++ b/drivers/input/serio/i8042.c	Sun Feb 29 01:20:26 2004
@@ -52,6 +52,13 @@
 module_param_named(dumbkbd, i8042_dumbkbd, bool, 0);
 MODULE_PARM_DESC(dumbkbd, "Pretend that controller can only read data from keyboard");
 
+__obsolete_setup("i8042_noaux");
+__obsolete_setup("i8042_nomux");
+__obsolete_setup("i8042_unlock");
+__obsolete_setup("i8042_reset");
+__obsolete_setup("i8042_direct");
+__obsolete_setup("i8042_dumbkbd");
+
 #undef DEBUG
 #include "i8042.h"
 

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH 0/9] New set of input patches
@ 2004-02-29 14:57 Dmitry Torokhov
  0 siblings, 0 replies; 16+ messages in thread
From: Dmitry Torokhov @ 2004-02-29 14:57 UTC (permalink / raw)
  To: Vojtech Pavlik; +Cc: linux-kernel

This is a resend, list seems to have eaten first copy.


Hi Vojtech,

Here is the new set of input patches that I have. You have seen some of
them, buit this time they are rediffed against 2.6.4-rc1 and in nice order.

01-atkbd-whitespace-fixes.patch
	simple whitespace fixes

02-atkbd-bad-merge.patch
	clean up bad merge in atkbd module (get rid of MODULE_PARMs,
        atkbd_softrepeat was declared twice)

03-synaptics-relaxed-proto.patch
	some hardware (PowerBook) require relaxed Synaptics protocol checks,
        but relaxed checks hurt hardware implementing proper protocol when
        device looses sync. With the patch synaptics driver analyzes first
        full data packet and either staus in relaxed mode or switches into
        strict mode.

04-psmouse-whitespace-fixes.patch
	simple whitespace fixes

05-psmouse-workaround-noack.patch
	some mice do not ACK "disable streaming mode" command causing psmouse
        driver abort initialization without any indication to the user. This
        is a regression compared to 2.4. Have kernel complain but continue
        with prbing hardware (after all we got valid responce from GET ID
	command).

06-module-param-array-named.patch
	introduce module_param_array_named() modeled after module_param_named
	that allows mapping array module option to

07-joystick-module-param.patch
	complete moving input drivers to the new way of handling module
	parameters using module_param()

08-obsolete-setup.patch
	introduce __obsolete_setup(). This is a drop-in replacement for
        __setup() for truly obsolete options. Kernel will complain when sees
        such an option.

09-input-obsolete-setup.patch
	document removed or renamed options in input drivers using
	__obsolete_setup() so users will have some clue why old options
        stopped having any effect.

-- 
Dmitry

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH 0/9] New set of input patches
  2004-02-29  6:53 [PATCH 0/9] New set of input patches Dmitry Torokhov
  2004-02-29  6:55 ` [PATCH 1/9] atkbd whitespace fixes Dmitry Torokhov
@ 2004-03-02 13:02 ` Vojtech Pavlik
  2004-03-02 17:45   ` Dmitry Torokhov
  1 sibling, 1 reply; 16+ messages in thread
From: Vojtech Pavlik @ 2004-03-02 13:02 UTC (permalink / raw)
  To: Dmitry Torokhov; +Cc: linux-kernel

On Sun, Feb 29, 2004 at 01:53:58AM -0500, Dmitry Torokhov wrote:

> Here is the new set of input patches that I have. You have seen some of
> them, buit this time they are rediffed against 2.6.4-rc1 and in nice order.

I like them very much. Do you have a bitkeeper tree anywhere where I
could pull from, so that I don't have to apply these by hand?

> 01-atkbd-whitespace-fixes.patch
> 	simple whitespace fixes
> 
> 02-atkbd-bad-merge.patch
> 	clean up bad merge in atkbd module (get rid of MODULE_PARMs,
>         atkbd_softrepeat was declared twice)
> 
> 03-synaptics-relaxed-proto.patch
> 	some hardware (PowerBook) require relaxed Synaptics protocol checks,
>         but relaxed checks hurt hardware implementing proper protocol when
>         device looses sync. With the patch synaptics driver analyzes first
>         full data packet and either staus in relaxed mode or switches into
>         strict mode.
> 
> 04-psmouse-whitespace-fixes.patch
> 	simple whitespace fixes
> 
> 05-psmouse-workaround-noack.patch
> 	some mice do not ACK "disable streaming mode" command causing psmouse
>         driver abort initialization without any indication to the user. This
>         is a regression compared to 2.4. Have kernel complain but continue
>         with prbing hardware (after all we got valid responce from GET ID
> 	command).
> 
> 06-module-param-array-named.patch
> 	introduce module_param_array_named() modeled after module_param_named
> 	that allows mapping array module option to
> 
> 07-joystick-module-param.patch
> 	complete moving input drivers to the new way of handling module
> 	parameters using module_param()
> 
> 08-obsolete-setup.patch
> 	introduce __obsolete_setup(). This is a drop-in replacement for
>         __setup() for truly obsolete options. Kernel will complain when sees
>         such an option.
> 
> 09-input-obsolete-setup.patch
> 	document removed or renamed options in input drivers using
> 	__obsolete_setup() so users will have some clue why old options
>         stopped having any effect.

-- 
Vojtech Pavlik
SuSE Labs, SuSE CR

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH 0/9] New set of input patches
  2004-03-02 13:02 ` [PATCH 0/9] New set of input patches Vojtech Pavlik
@ 2004-03-02 17:45   ` Dmitry Torokhov
  2004-03-02 23:56     ` bkbits hosting (was Re: [PATCH 0/9] New set of input patches) Andy Isaacson
  0 siblings, 1 reply; 16+ messages in thread
From: Dmitry Torokhov @ 2004-03-02 17:45 UTC (permalink / raw)
  To: Vojtech Pavlik; +Cc: linux-kernel

On Tuesday 02 March 2004 08:02 am, Vojtech Pavlik wrote:
> On Sun, Feb 29, 2004 at 01:53:58AM -0500, Dmitry Torokhov wrote:
> 
> > Here is the new set of input patches that I have. You have seen some of
> > them, buit this time they are rediffed against 2.6.4-rc1 and in nice order.
> 
> I like them very much. Do you have a bitkeeper tree anywhere where I
> could pull from, so that I don't have to apply these by hand?
>
 
No, unfortunately I don't have an accessible tree... Hmm, what does it take
to get an account at kernel.bkbits.net?

-- 
Dmitry

^ permalink raw reply	[flat|nested] 16+ messages in thread

* bkbits hosting (was Re: [PATCH 0/9] New set of input patches)
  2004-03-02 17:45   ` Dmitry Torokhov
@ 2004-03-02 23:56     ` Andy Isaacson
  0 siblings, 0 replies; 16+ messages in thread
From: Andy Isaacson @ 2004-03-02 23:56 UTC (permalink / raw)
  To: linux-kernel

On Tue, Mar 02, 2004 at 12:45:10PM -0500, Dmitry Torokhov wrote:
> On Tuesday 02 March 2004 08:02 am, Vojtech Pavlik wrote:
> > I like them very much. Do you have a bitkeeper tree anywhere where I
> > could pull from, so that I don't have to apply these by hand?
>  
> No, unfortunately I don't have an accessible tree... Hmm, what does it take
> to get an account at kernel.bkbits.net?

I already sent private mail to Dmitry, but it occurs to me that other
developers are probably in the same straits.

The easiest thing to do in this case is to host your patches at
bkbits.net (hostme.bkbits.net, which is different than kernel.bkbits.net
-- kernel is a special case).  You don't have to change your workflow at
all, after it's been set up; you end up just pushing to the bkbits
repository when you've got changes to submit.

To set up a hosted project, just follow the directions under
http://www.bitkeeper.com/Hosted.html (the table of contents is on the
left).  You can clone Linus' tree to populate your tree initially, then
push your csets from your workstation to hostme.

If any kernel developers have difficulty doing this, drop me a line --
I'm trying to make the process easy and error-free, and I appreciate any
suggestions.

If any kernel developers are having BK workflow problems ("how do I
merge my work with other developers'?  How do I keep up-to-date without
generating hundreds of merge csets?") the first thing to do is to read
the BK kernel howto, http://lwn.net/2002/0425/a/bk-thing.php3.  If your
questions aren't answered there, send them to me or to the
bitkeeper-users list.

-andy

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH 0/9] New set of input patches
@ 2004-05-11  6:24 Dmitry Torokhov
  2004-05-11  9:01 ` Vojtech Pavlik
  0 siblings, 1 reply; 16+ messages in thread
From: Dmitry Torokhov @ 2004-05-11  6:24 UTC (permalink / raw)
  To: Vojtech Pavlik; +Cc: Andrew Morton, linux-kernel

Hi Vojtech,

I have some more input patches. Nothing too intresting, most of the important
stuff has been posted on LKML before. Here they are:

01-serio-whitespace.patch:
	trailing whitespace fixes in drivers/input/serio

02-kbd98io-interrupt.patch:
	kbd98io_interrupt should return irqreturn_t

03-kdb98-interrupt.patch:
	kbd98_interrupt should return irqreturn_t

04-h3600-fixes.patch:
	various fixes for H3600 touchscreen driver
         - h3600ts_interrupt, npower_button_handler and action_button_handler
           should return irqreturn_t
         - fix missing argument in h3600ts_process_packet call
         - add MODULE_AUTHOR, MODULE_DESCRIPTION and MODULE_LICENSE
         - small formatting changes
	It still does not compile because of bad PM_ constants though

05-twidjoy-fixes.patch:
         - twidjoy_interrupt should return irqreturn_t
         - add MODULE_DESCRIPTION and MODULE_LICENSE

06-keyboard-whitespace.patch:
	trailing whitespace fixes in drivers/input/keyboard

07-power-license.patch:
	power - add MODULE_LICENSE

08-joystick-whitespace.patch:
	trailing whitespace fixes in drivers/input/joystick

09-gameport-whitespace.patch:
	trailing whitespace fixes in drivers/input/gameport

10-input-whitespace.patch:
	trailing whitespace fixes in drivers/input

11-synaptics-reconnect.patch:
	do not call synaptics_init unless we are ready to do full
        mouse setup or we can oops on resume

12-i8042-interrupt.patch:
	split i8042 interrupt handling into an IRQ handler and a tasklet,
	as with mousedev, evdev and so on we were doing too much work in
	IRQ context

13-i8042-unload.patch:
	Patch from Sau Dan Lee
  	Kill the timer only after removing interrupt handler,
        otherwise there is a chance that interrupt handler will install
        the timer again and it will trigger after module is unloaded.

14-mousedev-multiplexing.patch:
	better multiplex absolute and relative devices; cleanups

I did merge with Linus' tree to resolve conflicts with Eric's latest
changes to logips2pp (hope he does not mind). Please do:
bk pull bk://dtor.bkbits.net/input

The following patches are against your tree rather then Linis' and I will
not post whitespace fixing patches as they are too boring...

There is also a cumulative patch agains Linus' tree at:
http://www.geocities.com/dt_or/input/2_6_6/input-cumulative.patch.gz

-- 
Dmitry

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH 0/9] New set of input patches
  2004-05-11  6:24 Dmitry Torokhov
@ 2004-05-11  9:01 ` Vojtech Pavlik
  0 siblings, 0 replies; 16+ messages in thread
From: Vojtech Pavlik @ 2004-05-11  9:01 UTC (permalink / raw)
  To: Dmitry Torokhov; +Cc: Andrew Morton, linux-kernel

On Tue, May 11, 2004 at 01:24:14AM -0500, Dmitry Torokhov wrote:
> Hi Vojtech,
> 
> I have some more input patches. Nothing too intresting, most of the important
> stuff has been posted on LKML before. Here they are:

All look good. Thanks!

> I did merge with Linus' tree to resolve conflicts with Eric's latest
> changes to logips2pp (hope he does not mind). Please do:
> bk pull bk://dtor.bkbits.net/input

That's very nice. So the MX700 support is still in? (Well, I'll pull and
see).

> The following patches are against your tree rather then Linis' and I will
> not post whitespace fixing patches as they are too boring...
> 
> There is also a cumulative patch agains Linus' tree at:
> http://www.geocities.com/dt_or/input/2_6_6/input-cumulative.patch.gz

-- 
Vojtech Pavlik
SuSE Labs, SuSE CR

^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2004-05-11  9:03 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-02-29  6:53 [PATCH 0/9] New set of input patches Dmitry Torokhov
2004-02-29  6:55 ` [PATCH 1/9] atkbd whitespace fixes Dmitry Torokhov
2004-02-29  6:55   ` [PATCH 2/9] atkbd bad merge Dmitry Torokhov
2004-02-29  6:56     ` [PATCH 3/9] synaptics strict/relaxed protocol checks Dmitry Torokhov
2004-02-29  6:58       ` [PATCH 4/9] psmouse whitespace fixes Dmitry Torokhov
2004-02-29  6:58         ` [PATCH 5/9] psmouse broken hardware workaround Dmitry Torokhov
2004-02-29  7:00           ` [PATCH 6/9] introduce module_param_array_named Dmitry Torokhov
2004-02-29  7:01             ` [PATCH 7/9] Move joysticks to the module_param way of handling options Dmitry Torokhov
2004-02-29  7:02               ` [PATCH 8/9] introduce __obsolete_setup Dmitry Torokhov
2004-02-29  7:03                 ` [PATCH 9/9] Document removed input options using __obsolete_setup Dmitry Torokhov
2004-03-02 13:02 ` [PATCH 0/9] New set of input patches Vojtech Pavlik
2004-03-02 17:45   ` Dmitry Torokhov
2004-03-02 23:56     ` bkbits hosting (was Re: [PATCH 0/9] New set of input patches) Andy Isaacson
  -- strict thread matches above, loose matches on Subject: below --
2004-02-29 14:57 [PATCH 0/9] New set of input patches Dmitry Torokhov
2004-05-11  6:24 Dmitry Torokhov
2004-05-11  9:01 ` Vojtech Pavlik

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox