jcs's openbsd hax
openbsd
1/* $OpenBSD: adb.h,v 1.6 2022/10/21 22:42:36 gkoehler Exp $ */
2/* $NetBSD: adbsys.h,v 1.4 2000/12/19 02:59:24 tsubai Exp $ */
3
4/*-
5 * Copyright (C) 1993, 1994 Allen K. Briggs, Chris P. Caputo,
6 * Michael L. Finch, Bradley A. Grantham, and
7 * Lawrence A. Kesteloot
8 * All rights reserved.
9 *
10 * Redistribution and use in source and binary forms, with or without
11 * modification, are permitted provided that the following conditions
12 * are met:
13 * 1. Redistributions of source code must retain the above copyright
14 * notice, this list of conditions and the following disclaimer.
15 * 2. Redistributions in binary form must reproduce the above copyright
16 * notice, this list of conditions and the following disclaimer in the
17 * documentation and/or other materials provided with the distribution.
18 * 3. All advertising materials mentioning features or use of this software
19 * must display the following acknowledgement:
20 * This product includes software developed by the Alice Group.
21 * 4. The names of the Alice Group or any of its members may not be used
22 * to endorse or promote products derived from this software without
23 * specific prior written permission.
24 *
25 * THIS SOFTWARE IS PROVIDED BY THE ALICE GROUP ``AS IS'' AND ANY EXPRESS OR
26 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
27 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
28 * IN NO EVENT SHALL THE ALICE GROUP BE LIABLE FOR ANY DIRECT, INDIRECT,
29 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
30 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
31 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
32 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
33 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
34 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35 */
36
37#ifndef _ADB_H_
38#define _ADB_H_
39
40#ifdef _KERNEL
41
42/*
43 * Arguments used to attach a device to the Apple Desktop Bus
44 */
45struct adb_attach_args {
46 const char *name; /* adb_device_name if real adb device */
47 int origaddr;
48 int adbaddr;
49 int handler_id;
50};
51
52extern const char adb_device_name[];
53
54#define ADB_CMDADDR(cmd) ((u_int8_t)(cmd & 0xf0) >> 4)
55#define ADBFLUSH(dev) ((((u_int8_t)dev & 0x0f) << 4) | 0x01)
56#define ADBLISTEN(dev, reg) ((((u_int8_t)dev & 0x0f) << 4) | 0x08 | reg)
57#define ADBTALK(dev, reg) ((((u_int8_t)dev & 0x0f) << 4) | 0x0c | reg)
58
59/* an ADB event */
60typedef struct adb_event_s {
61 int byte_count; /* number of bytes */
62 unsigned char bytes[8]; /* bytes from register 0 */
63} adb_event_t;
64
65 /* Interesting default addresses */
66#define ADBADDR_SECURE 1 /* Security dongles */
67#define ADBADDR_MAP 2 /* Mapped devices (keyboards/pads) */
68#define ADBADDR_REL 3 /* Relative positioning devices
69 (mice, trackballs/pads) */
70#define ADBADDR_ABS 4 /* Absolute positioning devices
71 (graphics tablets) */
72#define ADBADDR_DATATX 5
73#define ADBADDR_RSRVD 6 /* Reserved by Apple */
74#define ADBADDR_MISC 7 /* Miscellaneous appliances */
75#define ADBADDR_DONGLE ADBADDR_SECURE
76#define ADBADDR_KBD ADBADDR_MAP
77#define ADBADDR_MS ADBADDR_REL
78#define ADBADDR_TABLET ADBADDR_ABS
79#define ADBADDR_MODEM ADBADDR_DATATX
80
81 /* Interesting keyboard handler IDs */
82#define ADB_STDKBD 1
83#define ADB_EXTKBD 2
84#define ADB_ISOKBD 4
85#define ADB_EXTISOKBD 5
86#define ADB_KBDII 8
87#define ADB_ISOKBDII 9
88#define ADB_PBKBD 12
89#define ADB_PBISOKBD 13
90#define ADB_ADJKPD 14
91#define ADB_ADJKBD 16
92#define ADB_ADJISOKBD 17
93#define ADB_ADJJAPKBD 18
94#define ADB_PBEXTISOKBD 20
95#define ADB_PBEXTJAPKBD 21
96#define ADB_JPKBDII 22
97#define ADB_PBEXTKBD 24
98#define ADB_DESIGNKBD 27 /* XXX Needs to be verified XXX */
99#define ADB_PBJPKBD 30
100#define ADB_PBG4KBD 195
101#define ADB_IBITISOKBD 196
102#define ADB_PBG3JPKBD 201
103
104 /* Interesting mouse handler IDs */
105#define ADBMS_100DPI 1
106#define ADBMS_200DPI 2
107#define ADBMS_MSA3 3 /* Mouse Systems A3 Mouse */
108#define ADBMS_EXTENDED 4 /* Extended mouse protocol */
109#define ADBMS_USPEED 0x2f /* MicroSpeed mouse */
110#define ADBMS_UCONTOUR 0x66 /* Contour mouse */
111#define ADBMS_TURBO 50 /* Kensington Turbo Mouse */
112
113 /* Interesting tablet handler ID */
114#define ADB_ARTPAD 58 /* WACOM ArtPad II tablet */
115
116 /* Interesting miscellaneous handler ID */
117#define ADB_POWERKEY 34 /* Sophisticated Circuits PowerKey */
118 /* (intelligent power tap) */
119
120extern int adb_polling;
121#ifdef ADB_DEBUG
122extern int adb_debug;
123#endif
124
125/* ADB Manager */
126
127typedef caddr_t Ptr;
128
129typedef struct {
130 Ptr siServiceRtPtr;
131 Ptr siDataAreaAddr;
132} ADBSetInfoBlock;
133
134typedef struct {
135 unsigned char devType;
136 unsigned char origADBAddr;
137 Ptr dbServiceRtPtr;
138 Ptr dbDataAreaAddr;
139} ADBDataBlock;
140
141int adbprint(void *, const char *);
142void adb_lid_closed_intr(void);
143void adb_power_button_intr(void);
144int adb_op_sync(Ptr, short);
145int set_adb_info(ADBSetInfoBlock *, int);
146
147#endif /* _KERNEL */
148
149#endif /* _ADB_H_ */