xref: /utopia/UTPA2-700.0.x/projects/tools/lint/mips-linux-gnu_include/linux/joystick.h (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
1*53ee8cc1Swenshuai.xi #ifndef _LINUX_JOYSTICK_H
2*53ee8cc1Swenshuai.xi #define _LINUX_JOYSTICK_H
3*53ee8cc1Swenshuai.xi 
4*53ee8cc1Swenshuai.xi /*
5*53ee8cc1Swenshuai.xi  * $Id: joystick.h,v 1.3 2000/11/30 11:07:05 vojtech Exp $
6*53ee8cc1Swenshuai.xi  *
7*53ee8cc1Swenshuai.xi  *  Copyright (C) 1996-2000 Vojtech Pavlik
8*53ee8cc1Swenshuai.xi  *
9*53ee8cc1Swenshuai.xi  *  Sponsored by SuSE
10*53ee8cc1Swenshuai.xi  */
11*53ee8cc1Swenshuai.xi 
12*53ee8cc1Swenshuai.xi /*
13*53ee8cc1Swenshuai.xi  * This program is free software; you can redistribute it and/or modify
14*53ee8cc1Swenshuai.xi  * it under the terms of the GNU General Public License as published by
15*53ee8cc1Swenshuai.xi  * the Free Software Foundation; either version 2 of the License, or
16*53ee8cc1Swenshuai.xi  * (at your option) any later version.
17*53ee8cc1Swenshuai.xi  *
18*53ee8cc1Swenshuai.xi  * This program is distributed in the hope that it will be useful,
19*53ee8cc1Swenshuai.xi  * but WITHOUT ANY WARRANTY; without even the implied warranty of
20*53ee8cc1Swenshuai.xi  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
21*53ee8cc1Swenshuai.xi  * GNU General Public License for more details.
22*53ee8cc1Swenshuai.xi  *
23*53ee8cc1Swenshuai.xi  * You should have received a copy of the GNU General Public License
24*53ee8cc1Swenshuai.xi  * along with this program; if not, write to the Free Software
25*53ee8cc1Swenshuai.xi  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
26*53ee8cc1Swenshuai.xi  *
27*53ee8cc1Swenshuai.xi  * Should you need to contact me, the author, you can do so either by
28*53ee8cc1Swenshuai.xi  * e-mail - mail your message to <vojtech@suse.cz>, or by paper mail:
29*53ee8cc1Swenshuai.xi  * Vojtech Pavlik, Ucitelska 1576, Prague 8, 182 00 Czech Republic
30*53ee8cc1Swenshuai.xi  */
31*53ee8cc1Swenshuai.xi 
32*53ee8cc1Swenshuai.xi #include <asm/types.h>
33*53ee8cc1Swenshuai.xi #include <linux/input.h>
34*53ee8cc1Swenshuai.xi 
35*53ee8cc1Swenshuai.xi /*
36*53ee8cc1Swenshuai.xi  * Version
37*53ee8cc1Swenshuai.xi  */
38*53ee8cc1Swenshuai.xi 
39*53ee8cc1Swenshuai.xi #define JS_VERSION		0x020100
40*53ee8cc1Swenshuai.xi 
41*53ee8cc1Swenshuai.xi /*
42*53ee8cc1Swenshuai.xi  * Types and constants for reading from /dev/js
43*53ee8cc1Swenshuai.xi  */
44*53ee8cc1Swenshuai.xi 
45*53ee8cc1Swenshuai.xi #define JS_EVENT_BUTTON		0x01	/* button pressed/released */
46*53ee8cc1Swenshuai.xi #define JS_EVENT_AXIS		0x02	/* joystick moved */
47*53ee8cc1Swenshuai.xi #define JS_EVENT_INIT		0x80	/* initial state of device */
48*53ee8cc1Swenshuai.xi 
49*53ee8cc1Swenshuai.xi struct js_event {
50*53ee8cc1Swenshuai.xi 	__u32 time;	/* event timestamp in milliseconds */
51*53ee8cc1Swenshuai.xi 	__s16 value;	/* value */
52*53ee8cc1Swenshuai.xi 	__u8 type;	/* event type */
53*53ee8cc1Swenshuai.xi 	__u8 number;	/* axis/button number */
54*53ee8cc1Swenshuai.xi };
55*53ee8cc1Swenshuai.xi 
56*53ee8cc1Swenshuai.xi /*
57*53ee8cc1Swenshuai.xi  * IOCTL commands for joystick driver
58*53ee8cc1Swenshuai.xi  */
59*53ee8cc1Swenshuai.xi 
60*53ee8cc1Swenshuai.xi #define JSIOCGVERSION		_IOR('j', 0x01, __u32)				/* get driver version */
61*53ee8cc1Swenshuai.xi 
62*53ee8cc1Swenshuai.xi #define JSIOCGAXES		_IOR('j', 0x11, __u8)				/* get number of axes */
63*53ee8cc1Swenshuai.xi #define JSIOCGBUTTONS		_IOR('j', 0x12, __u8)				/* get number of buttons */
64*53ee8cc1Swenshuai.xi #define JSIOCGNAME(len)		_IOC(_IOC_READ, 'j', 0x13, len)			/* get identifier string */
65*53ee8cc1Swenshuai.xi 
66*53ee8cc1Swenshuai.xi #define JSIOCSCORR		_IOW('j', 0x21, struct js_corr)			/* set correction values */
67*53ee8cc1Swenshuai.xi #define JSIOCGCORR		_IOR('j', 0x22, struct js_corr)			/* get correction values */
68*53ee8cc1Swenshuai.xi 
69*53ee8cc1Swenshuai.xi #define JSIOCSAXMAP		_IOW('j', 0x31, __u8[ABS_MAX + 1])		/* set axis mapping */
70*53ee8cc1Swenshuai.xi #define JSIOCGAXMAP		_IOR('j', 0x32, __u8[ABS_MAX + 1])		/* get axis mapping */
71*53ee8cc1Swenshuai.xi #define JSIOCSBTNMAP		_IOW('j', 0x33, __u16[KEY_MAX - BTN_MISC + 1])	/* set button mapping */
72*53ee8cc1Swenshuai.xi #define JSIOCGBTNMAP		_IOR('j', 0x34, __u16[KEY_MAX - BTN_MISC + 1])	/* get button mapping */
73*53ee8cc1Swenshuai.xi 
74*53ee8cc1Swenshuai.xi /*
75*53ee8cc1Swenshuai.xi  * Types and constants for get/set correction
76*53ee8cc1Swenshuai.xi  */
77*53ee8cc1Swenshuai.xi 
78*53ee8cc1Swenshuai.xi #define JS_CORR_NONE		0x00	/* returns raw values */
79*53ee8cc1Swenshuai.xi #define JS_CORR_BROKEN		0x01	/* broken line */
80*53ee8cc1Swenshuai.xi 
81*53ee8cc1Swenshuai.xi struct js_corr {
82*53ee8cc1Swenshuai.xi 	__s32 coef[8];
83*53ee8cc1Swenshuai.xi 	__s16 prec;
84*53ee8cc1Swenshuai.xi 	__u16 type;
85*53ee8cc1Swenshuai.xi };
86*53ee8cc1Swenshuai.xi 
87*53ee8cc1Swenshuai.xi /*
88*53ee8cc1Swenshuai.xi  * v0.x compatibility definitions
89*53ee8cc1Swenshuai.xi  */
90*53ee8cc1Swenshuai.xi 
91*53ee8cc1Swenshuai.xi #define JS_RETURN		sizeof(struct JS_DATA_TYPE)
92*53ee8cc1Swenshuai.xi #define JS_TRUE			1
93*53ee8cc1Swenshuai.xi #define JS_FALSE		0
94*53ee8cc1Swenshuai.xi #define JS_X_0			0x01
95*53ee8cc1Swenshuai.xi #define JS_Y_0			0x02
96*53ee8cc1Swenshuai.xi #define JS_X_1			0x04
97*53ee8cc1Swenshuai.xi #define JS_Y_1			0x08
98*53ee8cc1Swenshuai.xi #define JS_MAX			2
99*53ee8cc1Swenshuai.xi 
100*53ee8cc1Swenshuai.xi #define JS_DEF_TIMEOUT		0x1300
101*53ee8cc1Swenshuai.xi #define JS_DEF_CORR		0
102*53ee8cc1Swenshuai.xi #define JS_DEF_TIMELIMIT	10L
103*53ee8cc1Swenshuai.xi 
104*53ee8cc1Swenshuai.xi #define JS_SET_CAL		1
105*53ee8cc1Swenshuai.xi #define JS_GET_CAL		2
106*53ee8cc1Swenshuai.xi #define JS_SET_TIMEOUT		3
107*53ee8cc1Swenshuai.xi #define JS_GET_TIMEOUT		4
108*53ee8cc1Swenshuai.xi #define JS_SET_TIMELIMIT	5
109*53ee8cc1Swenshuai.xi #define JS_GET_TIMELIMIT	6
110*53ee8cc1Swenshuai.xi #define JS_GET_ALL		7
111*53ee8cc1Swenshuai.xi #define JS_SET_ALL		8
112*53ee8cc1Swenshuai.xi 
113*53ee8cc1Swenshuai.xi struct JS_DATA_TYPE {
114*53ee8cc1Swenshuai.xi 	__s32 buttons;
115*53ee8cc1Swenshuai.xi 	__s32 x;
116*53ee8cc1Swenshuai.xi 	__s32 y;
117*53ee8cc1Swenshuai.xi };
118*53ee8cc1Swenshuai.xi 
119*53ee8cc1Swenshuai.xi struct JS_DATA_SAVE_TYPE_32 {
120*53ee8cc1Swenshuai.xi 	__s32 JS_TIMEOUT;
121*53ee8cc1Swenshuai.xi 	__s32 BUSY;
122*53ee8cc1Swenshuai.xi 	__s32 JS_EXPIRETIME;
123*53ee8cc1Swenshuai.xi 	__s32 JS_TIMELIMIT;
124*53ee8cc1Swenshuai.xi 	struct JS_DATA_TYPE JS_SAVE;
125*53ee8cc1Swenshuai.xi 	struct JS_DATA_TYPE JS_CORR;
126*53ee8cc1Swenshuai.xi };
127*53ee8cc1Swenshuai.xi 
128*53ee8cc1Swenshuai.xi struct JS_DATA_SAVE_TYPE_64 {
129*53ee8cc1Swenshuai.xi 	__s32 JS_TIMEOUT;
130*53ee8cc1Swenshuai.xi 	__s32 BUSY;
131*53ee8cc1Swenshuai.xi 	__s64 JS_EXPIRETIME;
132*53ee8cc1Swenshuai.xi 	__s64 JS_TIMELIMIT;
133*53ee8cc1Swenshuai.xi 	struct JS_DATA_TYPE JS_SAVE;
134*53ee8cc1Swenshuai.xi 	struct JS_DATA_TYPE JS_CORR;
135*53ee8cc1Swenshuai.xi };
136*53ee8cc1Swenshuai.xi 
137*53ee8cc1Swenshuai.xi 
138*53ee8cc1Swenshuai.xi #endif /* _LINUX_JOYSTICK_H */
139