lkml.org 
[lkml]   [2002]   [Jul]   [6]   [last100]   RSS Feed
Views: [more markup]  [less markup]  [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
FromBrad Hards <>
SubjectRe: [patch] 2.5.25 no source for joydump
DateSat, 6 Jul 2002 18:08:55 +1000
On Sat, 6 Jul 2002 16:14, Keith Owens wrote:
> There is no source for joydump.  Detected by kbuild 2.5, not detected
> by the existing build system.
>
> Index: 25.1/drivers/input/joystick/Makefile
> --- 25.1/drivers/input/joystick/Makefile Sat, 06 Jul 2002 13:37:55 +1000
> kaos (linux-2.5/V/d/23_Makefile 1.3 444) +++
<snip>
Or you could add the driver. Attached.

Brad
-- 
http://conf.linux.org.au. 22-25Jan2003. Perth, Australia. Birds in Black.diff -Naur -X dontdiff linux-2.5.25-clean/drivers/input/joystick/Config.help linux-2.5.25-joydump/drivers/input/joystick/Config.help
--- linux-2.5.25-clean/drivers/input/joystick/Config.help	Sat Jul  6 09:42:03 2002
+++ linux-2.5.25-joydump/drivers/input/joystick/Config.help	Sat Jul  6 17:40:27 2002
@@ -221,3 +221,12 @@
   The module will be called joy-amiga.o. If you want to compile it as
   a module, say M here and read <file:Documentation/modules.txt>.
 
+CONFIG_INPUT_JOYDUMP
+  Say Y here if you want to dump data from your joystick into the system
+  log for debugging purposes. Say N if you are making a production
+  configuration or aren't sure. 
+
+  This driver is also available as a module ( = code which can be
+  inserted in and removed from the running kernel whenever you want).
+  The module will be called joydump.o. If you want to compile it as
+  a module, say M here and read <file:Documentation/modules.txt>.
diff -Naur -X dontdiff linux-2.5.25-clean/drivers/input/joystick/Config.in linux-2.5.25-joydump/drivers/input/joystick/Config.in
--- linux-2.5.25-clean/drivers/input/joystick/Config.in	Sat Jul  6 09:42:33 2002
+++ linux-2.5.25-joydump/drivers/input/joystick/Config.in	Sat Jul  6 17:35:37 2002
@@ -31,3 +31,5 @@
 if [ "$CONFIG_AMIGA" = "y" ]; then
    dep_tristate '  Amiga joysticks' CONFIG_JOYSTICK_AMIJOY $CONFIG_INPUT $CONFIG_INPUT_JOYSTICK
 fi
+
+dep_tristate '  Gameport data dumper' CONFIG_INPUT_JOYDUMP $CONFIG_INPUT $CONFIG_INPUT_JOYSTICK
diff -Naur -X dontdiff linux-2.5.25-clean/drivers/input/joystick/joydump.c linux-2.5.25-joydump/drivers/input/joystick/joydump.c
--- linux-2.5.25-clean/drivers/input/joystick/joydump.c	Thu Jan  1 10:00:00 1970
+++ linux-2.5.25-joydump/drivers/input/joystick/joydump.c	Sat Jul  6 17:41:32 2002
@@ -0,0 +1,152 @@
+/*
+ * $Id: joydump.c,v 1.1 2002/01/23 06:56:16 jsimmons Exp $
+ *
+ *  Copyright (c) 1996-2001 Vojtech Pavlik
+ */
+
+/*
+ * This is just a very simple driver that can dump the data
+ * out of the joystick port into the syslog ...
+ */
+
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or 
+ * (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ * 
+ * Should you need to contact me, the author, you can do so either by
+ * e-mail - mail your message to <vojtech@ucw.cz>, or by paper mail:
+ * Vojtech Pavlik, Simunkova 1594, Prague 8, 182 00 Czech Republic
+ */
+
+#include <linux/module.h>
+#include <linux/gameport.h>
+#include <linux/kernel.h>
+#include <linux/delay.h>
+#include <linux/init.h>
+
+MODULE_AUTHOR("Vojtech Pavlik <vojtech@ucw.cz>");
+MODULE_DESCRIPTION("Gameport data dumper module");
+MODULE_LICENSE("GPL");
+
+#define BUF_SIZE 256
+
+struct joydump {
+	unsigned int time;
+	unsigned char data;
+};
+
+static void __devinit joydump_connect(struct gameport *gameport, struct gameport_dev *dev)
+{
+	struct joydump buf[BUF_SIZE];
+	int axes[4], buttons;
+	int i, j, t, timeout;
+	unsigned long flags;
+	unsigned char u;
+
+	printk(KERN_INFO "joydump: ,------------------- START ------------------.\n");
+	printk(KERN_INFO "joydump: | Dumping gameport%s.\n", gameport->phys);
+	printk(KERN_INFO "joydump: | Speed: %4d kHz.                            |\n", gameport->speed);
+
+	if (gameport_open(gameport, dev, GAMEPORT_MODE_RAW)) {
+
+		printk(KERN_INFO "joydump: | Raw mode not available - trying cooked.    |\n");
+
+		if (gameport_open(gameport, dev, GAMEPORT_MODE_COOKED)) {
+			
+			printk(KERN_INFO "joydump: | Cooked not available either. Failing.      |\n");
+			printk(KERN_INFO "joydump: `-------------------- END -------------------'\n");
+			return;
+		}
+
+		gameport_cooked_read(gameport, axes, &buttons);
+
+		for (i = 0; i < 4; i++)
+			printk(KERN_INFO "joydump: | Axis %d: %4d.                              |\n", i, axes[i]);
+		printk(KERN_INFO "joydump: | Buttons %02x.                                |\n", buttons);
+		printk(KERN_INFO "joydump: `-------------------- END -------------------'\n");
+	}
+
+	timeout = gameport_time(gameport, 10000); /* 10 ms */
+	t = 0;
+	i = 1;
+
+	save_flags(flags);
+	cli();
+
+	u = gameport_read(gameport);
+
+	buf[0].data = u;
+	buf[0].time = t;
+
+	gameport_trigger(gameport);
+
+	while (i < BUF_SIZE && t < timeout) {
+
+		buf[i].data = gameport_read(gameport);
+
+		if (buf[i].data ^ u) {
+			u = buf[i].data;
+			buf[i].time = t;
+			i++;
+		}
+		t++;
+	}
+
+	restore_flags(flags);
+
+/*
+ * Dump data.
+ */
+
+	t = i;
+
+	printk(KERN_INFO "joydump: >------------------- DATA -------------------<\n");
+	printk(KERN_INFO "joydump: | index: %3d delta: %3d.%02d us data: ", 0, 0, 0);
+	for (j = 7; j >= 0; j--)
+		printk("%d",(buf[0].data >> j) & 1);
+	printk(" |\n");
+	for (i = 1; i < t; i++) {
+		printk(KERN_INFO "joydump: | index: %3d delta: %3d us data: ",
+			i, buf[i].time - buf[i-1].time);
+		for (j = 7; j >= 0; j--)
+			printk("%d",(buf[i].data >> j) & 1);
+		printk("    |\n");
+	}
+
+	printk(KERN_INFO "joydump: `-------------------- END -------------------'\n");
+}
+
+static void __devexit joydump_disconnect(struct gameport *gameport)
+{
+	gameport_close(gameport);
+}
+
+static struct gameport_dev joydump_dev = {
+	connect:	joydump_connect,
+	disconnect:	joydump_disconnect,
+};
+
+static int __init joydump_init(void)
+{
+	gameport_register_device(&joydump_dev);
+	return 0;
+}
+
+static void __exit joydump_exit(void)
+{
+	gameport_unregister_device(&joydump_dev);
+}
+
+module_init(joydump_init);
+module_exit(joydump_exit);
\
 
 \ /
  Last update: 2005-03-22 12:22    [W:0.461 / U:0.060 seconds]
©2003-2008 Jasper Spaans