Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
6a11414a
Commit
6a11414a
authored
Jul 05, 2002
by
Brad Hards
Committed by
Linus Torvalds
Jul 05, 2002
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[PATCH] joydump driver
parent
691fc638
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
163 additions
and
0 deletions
+163
-0
drivers/input/joystick/Config.help
drivers/input/joystick/Config.help
+9
-0
drivers/input/joystick/Config.in
drivers/input/joystick/Config.in
+2
-0
drivers/input/joystick/joydump.c
drivers/input/joystick/joydump.c
+152
-0
No files found.
drivers/input/joystick/Config.help
View file @
6a11414a
...
...
@@ -221,3 +221,12 @@ CONFIG_JOYSTICK_AMIJOY
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>.
drivers/input/joystick/Config.in
View file @
6a11414a
...
...
@@ -31,3 +31,5 @@ dep_tristate ' Multisystem joysticks via TurboGraFX device' CONFIG_JOYSTICK_TUR
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
drivers/input/joystick/joydump.c
0 → 100644
View file @
6a11414a
/*
* $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
);
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment