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_ */ 150