xref: /netbsd-src/sys/arch/mac68k/include/adbsys.h (revision 8a0074078929afd641f0bf5152013b6b45d42373)
1*8a007407Sscottr /*	$NetBSD: adbsys.h,v 1.13 2000/02/14 07:01:48 scottr Exp $	*/
24fdae7a0Scgd 
3f3c8dbbdSlkestel /*-
4f3c8dbbdSlkestel  * Copyright (C) 1993, 1994	Allen K. Briggs, Chris P. Caputo,
5f3c8dbbdSlkestel  *			Michael L. Finch, Bradley A. Grantham, and
6f3c8dbbdSlkestel  *			Lawrence A. Kesteloot
7f3c8dbbdSlkestel  * All rights reserved.
8f3c8dbbdSlkestel  *
9f3c8dbbdSlkestel  * Redistribution and use in source and binary forms, with or without
10f3c8dbbdSlkestel  * modification, are permitted provided that the following conditions
11f3c8dbbdSlkestel  * are met:
12f3c8dbbdSlkestel  * 1. Redistributions of source code must retain the above copyright
13f3c8dbbdSlkestel  *    notice, this list of conditions and the following disclaimer.
14f3c8dbbdSlkestel  * 2. Redistributions in binary form must reproduce the above copyright
15f3c8dbbdSlkestel  *    notice, this list of conditions and the following disclaimer in the
16f3c8dbbdSlkestel  *    documentation and/or other materials provided with the distribution.
17f3c8dbbdSlkestel  * 3. All advertising materials mentioning features or use of this software
18f3c8dbbdSlkestel  *    must display the following acknowledgement:
19f3c8dbbdSlkestel  *	This product includes software developed by the Alice Group.
20f3c8dbbdSlkestel  * 4. The names of the Alice Group or any of its members may not be used
21f3c8dbbdSlkestel  *    to endorse or promote products derived from this software without
22f3c8dbbdSlkestel  *    specific prior written permission.
23f3c8dbbdSlkestel  *
24f3c8dbbdSlkestel  * THIS SOFTWARE IS PROVIDED BY THE ALICE GROUP ``AS IS'' AND ANY EXPRESS OR
25f3c8dbbdSlkestel  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
26f3c8dbbdSlkestel  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
27f3c8dbbdSlkestel  * IN NO EVENT SHALL THE ALICE GROUP BE LIABLE FOR ANY DIRECT, INDIRECT,
28f3c8dbbdSlkestel  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
29f3c8dbbdSlkestel  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
30f3c8dbbdSlkestel  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
31f3c8dbbdSlkestel  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
32f3c8dbbdSlkestel  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
33f3c8dbbdSlkestel  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34f3c8dbbdSlkestel  */
35f3c8dbbdSlkestel 
3637163421Sbriggs #ifndef _ADBSYS_MACHINE_
3737163421Sbriggs #define _ADBSYS_MACHINE_
38f3c8dbbdSlkestel 
39f3c8dbbdSlkestel #include <sys/time.h>	/* timeval stuff */
40f3c8dbbdSlkestel #include <sys/ioctl.h>	/* ioctls */
41f3c8dbbdSlkestel 
42f3c8dbbdSlkestel 
43f3c8dbbdSlkestel /* Handy visual constants */
44f3c8dbbdSlkestel #define ADB_MAX_HANDLERS	256
45f3c8dbbdSlkestel #define ADB_MAX_DEVS	16
46f3c8dbbdSlkestel 
47f3c8dbbdSlkestel 
48f3c8dbbdSlkestel /* Different ADB system types */
49f3c8dbbdSlkestel enum adb_system_e {
50f3c8dbbdSlkestel 	MacIIADB,
51f3c8dbbdSlkestel 	MacIIsiADB,
52f3c8dbbdSlkestel 	MacPBADB};
53f3c8dbbdSlkestel extern enum adb_system_e adb_system_type;
54f3c8dbbdSlkestel 
55f3c8dbbdSlkestel 
56f3c8dbbdSlkestel /* an ADB event */
57f3c8dbbdSlkestel typedef struct adb_event_s {
58f3c8dbbdSlkestel 	int addr;			/* device address */
59f3c8dbbdSlkestel 	int hand_id;			/* handler id */
60f3c8dbbdSlkestel 	int def_addr;			/* default address */
61f3c8dbbdSlkestel 	int byte_count;			/* number of bytes */
62f3c8dbbdSlkestel 	unsigned char bytes[8];		/* bytes from register 0 */
63f3c8dbbdSlkestel 	struct timeval timestamp;	/* time event was acquired */
64f3c8dbbdSlkestel 	union {
65f3c8dbbdSlkestel 		struct adb_keydata_s{
66f3c8dbbdSlkestel 			int key;	/* ADB key code */
67f3c8dbbdSlkestel 		} k;
68f3c8dbbdSlkestel 		struct adb_mousedata_s{
69f3c8dbbdSlkestel 			int dx;		/* mouse delta x */
70f3c8dbbdSlkestel 			int dy;		/* mouse delta y */
71f3c8dbbdSlkestel 			int buttons;	/* buttons (down << (buttonnum)) */
72f3c8dbbdSlkestel 		} m;
73f3c8dbbdSlkestel 	} u;				/* courtesy interpretation */
74f3c8dbbdSlkestel } adb_event_t;
75f3c8dbbdSlkestel 
76f3c8dbbdSlkestel 
77f3c8dbbdSlkestel /* a device on the ADB */
78f3c8dbbdSlkestel typedef struct adb_dev_s{
791c47e248Sbriggs 	int		addr;		/* current address */
80f3c8dbbdSlkestel 	int		default_addr;	/* startup address */
81f3c8dbbdSlkestel 	int		handler_id;	/* handler ID */
82f3c8dbbdSlkestel } adb_dev_t;
83f3c8dbbdSlkestel 
84f3c8dbbdSlkestel 
85f3c8dbbdSlkestel 	/* Interesting default addresses */
8685f80dd2Sender #define	ADBADDR_SECURE	1		/* Security dongles */
8785f80dd2Sender #define ADBADDR_MAP	2		/* Mapped devices (keyboards/pads) */
8885f80dd2Sender #define ADBADDR_REL	3		/* Relative positioning devices
8985f80dd2Sender 					   (mice, trackballs/pads) */
9085f80dd2Sender #define ADBADDR_ABS	4		/* Absolute positioning devices
9185f80dd2Sender 					   (graphics tablets) */
9285f80dd2Sender #define ADBADDR_DATATX	5
9385f80dd2Sender #define ADBADDR_RSRVD	6		/* Reserved by Apple */
9485f80dd2Sender #define ADBADDR_MISC	7		/* Miscellaneous appliances */
9585f80dd2Sender #define ADBADDR_DONGLE	ADBADDR_SECURE
96f3c8dbbdSlkestel #define ADBADDR_KBD	ADBADDR_MAP
97f3c8dbbdSlkestel #define ADBADDR_MS	ADBADDR_REL
98f3c8dbbdSlkestel #define ADBADDR_TABLET	ADBADDR_ABS
9985f80dd2Sender #define ADBADDR_MODEM	ADBADDR_DATATX
100f3c8dbbdSlkestel 
101f3c8dbbdSlkestel 
102f8f304c7Sender 	/* Interesting keyboard handler IDs */
103f3c8dbbdSlkestel #define ADB_STDKBD	1
104f3c8dbbdSlkestel #define ADB_EXTKBD	2
105e38a3074Sender #define ADB_ISOKBD	4
106f8f304c7Sender #define ADB_EXTISOKBD	5
107f8f304c7Sender #define ADB_KBDII	8
108f8f304c7Sender #define ADB_ISOKBDII	9
10930023f7aSbriggs #define ADB_PBKBD	12
110f8f304c7Sender #define ADB_PBISOKBD	13
111f8f304c7Sender #define ADB_ADJKPD	14
112f8f304c7Sender #define ADB_ADJKBD	16
113f8f304c7Sender #define ADB_ADJISOKBD	17
114f8f304c7Sender #define ADB_ADJJAPKBD	18
11585f80dd2Sender #define ADB_PBEXTISOKBD	20
11685f80dd2Sender #define ADB_PBEXTJAPKBD	21
117*8a007407Sscottr #define ADB_JPKBDII	22
11885f80dd2Sender #define ADB_PBEXTKBD	24
11985f80dd2Sender #define ADB_DESIGNKBD	27	/* XXX Needs to be verified XXX */
120*8a007407Sscottr #define ADB_PBJPKBD	30
121f8f304c7Sender 
122f8f304c7Sender 	/* Interesting mouse handler IDs */
123f3c8dbbdSlkestel #define ADBMS_100DPI	1
124f3c8dbbdSlkestel #define ADBMS_200DPI	2
1259dfb9a7fSscottr #define ADBMS_MSA3	3	/* Mouse Systems A3 Mouse */
12685f80dd2Sender #define ADBMS_EXTENDED	4	/* Extended mouse protocol */
127b3e5811aSbriggs #define ADBMS_USPEED    0x2f	/* MicroSpeed mouse */
128b3e5811aSbriggs #define ADBMS_UCONTOUR  0x66	/* Contour mouse */
129f3c8dbbdSlkestel 
130407e2e62Sbriggs 	/* Interesting tablet handler ID */
131407e2e62Sbriggs #define ADB_ARTPAD	58	/* WACOM ArtPad II tablet */
132407e2e62Sbriggs 
133407e2e62Sbriggs 	/* Interesting miscellaneous handler ID */
134407e2e62Sbriggs #define ADB_POWERKEY	34	/* Sophisticated Circuits PowerKey */
135407e2e62Sbriggs 				/* (intelligent power tap) */
136f3c8dbbdSlkestel 
137f3c8dbbdSlkestel 	/* Get device info from ADB system */
138f3c8dbbdSlkestel typedef struct adb_devinfo_s{
139f3c8dbbdSlkestel 	adb_dev_t	dev[ADB_MAX_DEVS];
1401c47e248Sbriggs 		/* [addr].addr == -1 if none */
141f3c8dbbdSlkestel } adb_devinfo_t;
1421c47e248Sbriggs #define ADBIOC_DEVSINFO	_IOR('A', 128, adb_devinfo_t)
143f3c8dbbdSlkestel 
144f3c8dbbdSlkestel 
145f3c8dbbdSlkestel 	/* Event auto-repeat */
146f3c8dbbdSlkestel typedef struct adb_rptinfo_s{
147f3c8dbbdSlkestel 	int delay_ticks;	/* ticks before repeat */
148f3c8dbbdSlkestel 	int interval_ticks;	/* ticks between repeats */
149f3c8dbbdSlkestel } adb_rptinfo_t;
150f3c8dbbdSlkestel #define ADBIOC_GETREPEAT	_IOR('A', 130, adb_rptinfo_t)
151f3c8dbbdSlkestel #define ADBIOC_SETREPEAT	_IOW('A', 131, adb_rptinfo_t)
1521c47e248Sbriggs 
1531c47e248Sbriggs 
1541c47e248Sbriggs 	/* Reset and reinitialize */
1551c47e248Sbriggs #define ADBIOC_RESET		_IO('A', 132)
1561c47e248Sbriggs 
1571c47e248Sbriggs 
1581c47e248Sbriggs typedef struct adb_listencmd_s{
1591c47e248Sbriggs 	int address;		/* device address */
1601c47e248Sbriggs 	int reg;		/* register to which to send bytes */
1611c47e248Sbriggs 	int bytecnt;		/* number of bytes */
1621c47e248Sbriggs 	u_char bytes[8];	/* bytes */
1631c47e248Sbriggs } adb_listencmd_t;
1641c47e248Sbriggs #define ADBIOC_LISTENCMD	_IOW('A', 133, adb_listencmd_t)
16537163421Sbriggs 
16637163421Sbriggs #endif /* _ADBSYS_MACHINE_ */
167