xref: /netbsd/sys/arch/pmax/tc/dtreg.h (revision 95e1ffb1)
1 /*	$NetBSD: dtreg.h,v 1.3 2005/12/11 12:18:41 christos Exp $	*/
2 
3 /*-
4  * Copyright (c) 1992, 1993
5  *	The Regents of the University of California.  All rights reserved.
6  *
7  * This code is derived from software contributed to Berkeley by
8  * Ralph Campbell and Rick Macklem.
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. Neither the name of the University nor the names of its contributors
19  *    may be used to endorse or promote products derived from this software
20  *    without specific prior written permission.
21  *
22  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
23  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
26  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
27  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
28  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
29  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
31  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32  * SUCH DAMAGE.
33  *
34  *	@(#)dtopreg.h	8.1 (Berkeley) 6/10/93
35  */
36 
37 /*
38  * Mach Operating System
39  * Copyright (c) 1992 Carnegie Mellon University
40  * All Rights Reserved.
41  *
42  * Permission to use, copy, modify and distribute this software and its
43  * documentation is hereby granted, provided that both the copyright
44  * notice and this permission notice appear in all copies of the
45  * software, derivative works or modified versions, and any portions
46  * thereof, and that both notices appear in supporting documentation.
47  *
48  * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
49  * CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
50  * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
51  *
52  * Carnegie Mellon requests users of this software to return to
53  *
54  *  Software Distribution Coordinator  or  Software.Distribution@CS.CMU.EDU
55  *  School of Computer Science
56  *  Carnegie Mellon University
57  *  Pittsburgh PA 15213-3890
58  *
59  * any improvements or extensions that they make and grant Carnegie Mellon
60  * the rights to redistribute these changes.
61  */
62 /*
63  * HISTORY
64  * Log:	dtop.h,v
65  * Revision 2.3  92/03/05  17:08:17  rpd
66  * 	Define how many buttons and coordinates we can take.
67  * 	[92/03/05            af]
68  *
69  * Revision 2.2  92/03/02  18:32:17  rpd
70  * 	Created from DEC specs:
71  * 	"DESKTOPinterconnect Description and Protocol Specification"
72  * 	Version 0.9, Jun 17 1991
73  * 	"Open Desktop Bus, Locator Device Protocol Specification"
74  * 	Version 0.4, Dec 13 1990
75  * 	"Open Desktop Bus, Keyboard Device Protocol Specification"
76  * 	Version 0.7, Jan 9 1991
77  * 	[92/01/19            af]
78  *
79  */
80 /*
81  *	File: dtop.h
82  * 	Author: Alessandro Forin, Carnegie Mellon University
83  *	Date:	1/92
84  *
85  *	Definitions for the Desktop serial bus (i2c aka ACCESS).
86  */
87 
88 #ifndef	_DTREG_H_
89 #define	_DTREG_H_
90 
91 #define	DT_MAX_DEVICES		14
92 #define	DT_MAX_MSG_SIZE		36	/* 3 hdr + 32 data + 1 checksum */
93 
94 /*
95  * Standard addresses.
96  */
97 #define	DT_ADDR_HOST		0x50	/* address for the (only) host */
98 #define	DT_ADDR_FIRST		0x52	/* first assignable address */
99 #define	DT_ADDR_MOUSE		0x6a	/* mouse */
100 #define	DT_ADDR_KBD		0x6c	/* keyboard */
101 #define	DT_ADDR_DEFAULT		0x6e	/* power-up default address */
102 #define	DT_ADDR_LAST		0x6c	/* last, inclusive */
103 
104 /*
105  * Standard messages
106  */
107 #define	DT_MSG_RESET		0xf0	/* preceded by 0x81: P,len 1 */
108 #define	DT_MSG_ID_REQUEST	0xf1	/* preceded by 0x81: P,len 1 */
109 #define	DT_MSG_ASSIGN_ADDRESS	0xf2	/* preceded by 0x9e: P,len 30 */
110 					/* followed by a dt_id_reply_t */
111 					/* and by the new_IC_address */
112 #define	DT_MSG_CAP_REQUEST	0xf3	/* preceded by 0x83: P,len 3 */
113 					/* followed by a 16 bit u_offset */
114 #define	DT_MSG_APPL_TEST	0xb1	/* precede by P, sub, len 1 */
115 
116 /* from devices to host */
117 
118 #define	DT_MSG_ATTENTION	0xe0	/* preceded by P, len */
119 #	define DT_ATN_OK_STATUS	0x00	/* anything else bad */
120 					/* followed by 0-30 bytes */
121 
122 #define	DT_MSG_ID_REPLY	0xe1	/* preceded by P,len (29..32) */
123 
124 struct dt_ident {
125 	uint8_t	revision[8];	/* ascii, blank padded */
126 	uint8_t	vendor[8];
127 	uint8_t	module[8];
128 	int	device_number;	/* 32 bits cpl-2 */
129 	uint8_t	optional[4];	/* 0-3 optional bytes, ignore */
130 };
131 
132 #define	DT_MSG_CAP_REPLY	0xe3	/* preceded by P,len (3..32) */
133 					/* followed by 16 bit u_offset */
134 					/* followed by data */
135 
136 #define	DT_MSG_APPL_SIGNAL	0xa0	/* application level signal */
137 #	define DT_SIG_ATTENTION	0x00
138 #	define DT_SIG_RESET		0x01
139 #	define DT_SIG_HALT		0x02
140 
141 #define	DT_MSG_APPL_TREPLY	0xa1	/* followed by status (0-->ok) */
142 					/* and 0..30 bytes of result data  */
143 
144 /* reserved message codes (testing, manifacturing) */
145 
146 #define	DT_MSG_RES0		0xc0
147 #define	DT_MSG_RES1		0xc1
148 #define	DT_MSG_RES2		0xc2
149 #define	DT_MSG_RES3		0xc3
150 
151 
152 /*
153  * Device specific definitions:  Keyboard
154  */
155 
156 /* From host to keyboard. */
157 
158 #define	DT_KMSG_CLICK		0x01	/* preceded by P, sub len 2 */
159 #	define	DT_CLICK_VOLUME_MAX	0x7	/* followed by one byte */
160 
161 #define	DT_KMSG_BELL		0x02	/* preceded by P, sub len 2 */
162 					/* same as above */
163 
164 #define	DT_KMSG_LED		0x03	/* preceded by P, sub len 2 */
165 					/* four lower bits turn leds on */
166 
167 #define	DT_KMSG_POLL		0x04	/* preceded by P, sub len 1 */
168 
169 /* Keyboard sends up to 11 codes in a data message, distinguished values: */
170 #define	DT_KBD_EMPTY		0x00
171 #define	DT_KBD_OUT_ERR		0x01
172 #define	DT_KBD_IN_ERR		0x02
173 
174 #define	DT_KBD_KEY_MIN	0x08
175 #define	DT_KBD_KEY_MAX	0xff
176 
177 /* Powerup status values */
178 #define	DT_KBD_OK	0x00
179 #define	DT_KBD_ROM_FAIL	0x01
180 #define	DT_KBD_RAM_FAIL	0x02
181 #define	DT_KBD_KEY_DOWN	0x03
182 
183 /*
184  * Device specific definitions:  Locators (mouse)
185  */
186 
187 struct dt_locator_msg {
188 	uint16_t	buttons;	/* 1->pressed */
189 	int16_t		x;
190 	int16_t		y;
191 	int16_t		z;
192 	/* possibly 3 more dimensions for gloves */
193 };
194 
195 #define	DT_LMSG_SET_RATE	0x01	/* preceded by P,sub, len 2 */
196 					/* followed by sampling interval,
197 					   from 8 to 25 msecs (0->polled */
198 #define	DT_LMSG_POLL		0x02	/* preceded by P,sub, len 1 */
199 
200 /* Powerup status values: 0 ok, else.. */
201 #define	DT_MOUSE_ROM_FAIL	0x01
202 #define	DT_MOUSE_RAM_FAIL	0x02
203 #define	DT_MOUSE_KEY_DOWN	0x03
204 
205 #endif	/* !_DTREG_H_ */
206