summaryrefslogtreecommitdiff
path: root/sys/dev/ic/tms9914reg.h
blob: 2ca2afd75997e31ec960f142cff7b151c9e9b63e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
/*	$NetBSD: tms9914reg.h,v 1.1 2003/06/02 03:55:04 gmcgarry Exp $	*/

/*-
 * Copyright (c) 2002 The NetBSD Foundation, Inc.
 * All rights reserved.
 *
 * This code is derived from software contributed to The NetBSD Foundation
 * by Gregory McGarry.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. All advertising materials mentioning features or use of this software
 *    must display the following acknowledgement:
 *        This product includes software developed by the NetBSD
 *        Foundation, Inc. and its contributors.
 * 4. Neither the name of The NetBSD Foundation nor the names of its
 *    contributors may be used to endorse or promote products derived
 *    from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 */

#define TMS9914_IOSIZE		8

/*
 * Direct-access Registers (write only)
 */

#define TMS9914_IMR0		0	/* (W) interrupt mask 0 */
#define 	IMR0_MAC	0x01	/* my address change */
#define 	IMR0_RLC	0x02	/* remote/local address change */
#define 	IMR0_SPAS	0x04	/* serial poll active state */
#define 	IMR0_END	0x08	/* EOI or EOS */
#define 	IMR0_BO		0x10	/* byte out */
#define 	IMR0_BI		0x20	/* byte in */
#define TMS9914_IMR1		1	/* (W) interrupt mask 1 */
#define 	IMR1_IFC	0x01	/* IFC asserted */
#define		IMR1_SRQ	0x02	/* SRQ asserted */
#define		IMR1_MA		0x04	/* my address */
#define		IMR1_DCAS	0x08	/* device clear active state */
#define		IMR1_APT	0x10	/* address pass-through */
#define		IMR1_UCG	0x20	/* unrecognised command */
#define		IMR1_ERR	0x40	/* data transmission error */
#define		IMR1_GET	0x80	/* group execute trigger */
#define TMS9914_AUXCR		3	/* (W) auxiliary command */
#define TMS9914_ADDR		4	/* (W) address register */
#define 	ADDR_DAT	0x20
#define 	ADDR_DAL	0x40
#define 	ADDR_EDPA	0x80
#define TMS9914_SPMR		5	/* (W) serial poll register */
#define TMS9914_PPR		6	/* (W) parallel poll */
#define TMS9914_CDOR		7	/* (W) data-out register */

/*
 * Direct-access Registers (read only)
 */

#define TMS9914_ISR0		0	/* (R) interrupt status 0 */
#define 	ISR0_MAC	0x01	/* my address change */
#define 	ISR0_RLC	0x02	/* remote/local address change */
#define 	ISR0_SPAS	0x04	/* serial poll active state */
#define 	ISR0_END	0x08	/* EOI or EOS */
#define 	ISR0_BO		0x10	/* byte out */
#define 	ISR0_BI		0x20	/* byte in */
#define TMS9914_ISR1		1	/* (R) interrupt status 1 */
#define 	ISR1_IFC	0x01	/* IFC asserted */
#define		ISR1_SRQ	0x02	/* SRQ asserted */
#define		ISR1_MA		0x04	/* my address */
#define		ISR1_DCAS	0x08	/* device clear active state */
#define		ISR1_APT	0x10	/* address pass-through */
#define		ISR1_UCG	0x20	/* unrecognised command */
#define		ISR1_ERR	0x40	/* data transmission error */
#define		ISR1_GET	0x80	/* group execute trigger */
#define TMS9914_ADSR		2	/* (R) address status */
#define 	ADSR_ULPA	0x01	/* store last address LSB */
#define 	ADSR_TADS	0x02	/* talker addressed */
#define 	ADSR_LADS	0x04	/* listener addressed */
#define 	ADSR_TPAS	0x08	/* talker primary address state */
#define 	ADSR_LPAS	0x10	/* listener primary address state */
#define 	ADSR_ATN	0x20	/* ATN active */
#define 	ADSR_LLO	0x40	/* LLO active */
#define 	ADSR_REM	0x80	/* REM active */
#define TMS9914_CPTR		6	/* (R) command pass-through */
#define TMS9914_DIR		7	/* (R) data-in register */

/*
 * Auxiliary Commands
 *
 * Two basic type of commands are implemented: pulsed and static.
 * Static commands enable (set) or disable (clear) chip features.
 * Pulsed commands stay active for one clock pulse.
 *
 */

/* pulsed commands */
#define	AUXCMD_RHDF	0x02	/* release RFD holdoff */
#define AUXCMD_NBAF	0x05	/* new byte available false */
#define	AUXCMD_SEOI	0x08	/* send EOI with next byte */
#define	AUXCMD_GTS	0x0b	/* go to standby (clear ATN line) */
#define	AUXCMD_TCA	0x0c	/* take control (async) */
#define	AUXCMD_TCS	0x0d	/* take control (sync) */

/* static commands */
#define AUXCMD_SET	0x80
#define AUXCMD_CLEAR	0x00
#define	AUXCMD_SWRST	0x00	/* Software reset */
#define	AUXCMD_HDFA	0x03	/* holdoff on all data */
#define	AUXCMD_HDFE	0x04	/* holdoff on EOI data only */
#define AUXCMD_RTL	0x07	/* return to local */
#define	AUXCMD_LON	0x09	/* listen only */
#define	AUXCMD_TON	0x0a	/* talk only */
#define	AUXCMD_RPP	0x0e	/* request parallel poll */
#define	AUXCMD_SIC	0x0f	/* IFC (interface clear) line */
#define	AUXCMD_SRE	0x10	/* REN (remote enable) line */
#define	AUXCMD_DAI	0x13	/* interrupt disable */
#define	AUXCMD_STD1	0x15	/* 1200ns T1 delay */
#define	AUXCMD_SHDW	0x16	/* shadow handshake */
#define	AUXCMD_VSTD1	0x17	/* 600ns T1 delay */