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
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
|
/* $NetBSD: nec7210reg.h,v 1.5 2022/05/20 19:34:22 andvar Exp $ */
/*-
* Copyright (c) 2003 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.
*
* 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 NEC7210_IOSIZE 8
/*
* Direct-access Registers (write only)
*/
#define NEC7210_CDOR 0 /* (W) command/data out */
#define NEC7210_IMR1 1 /* (W) interrupt mask 1 */
#define IMR1_DI 0x01
#define IMR1_DO 0x02
#define IMR1_ERR 0x04
#define IMR1_DEC 0x08
#define IMR1_END 0x10
#define IMR1_DET 0x20
#define IMR1_APT 0x20
#define IMR1_CPT 0x80
#define NEC7210_IMR2 2 /* (W) interrupt mask 2 */
#define IMR2_ADSC 0x01
#define IMR2_REMC 0x02
#define IMR2_LOKC 0x04
#define IMR2_CO 0x08
#define IMR2_DMAI 0x10
#define IMR2_DMAO 0x20
#define IMR2_SRQ 0x40
#define NEC7210_SPMR 3 /* (W) serial poll mode */
#define SPMR_RSV 0x80
#define NEC7210_ADMR 4 /* (W) address mode */
#define ADMR_ADM0 0x01
#define ADMR_ADM1 0x02
#define ADMR_TRM0 0x10
#define ADMR_TRM1 0x20
#define ADMR_LON 0x40
#define ADMR_TON 0x80
#define NEC7210_AUXMR 5 /* (W) auxiliary mode */
#define AUXMR_CMD 0x00 /* see below */
#define AUXMR_ICR 0x20
#define AUXMR_REGD 0x40
#define AUXMR_PPOLL 0x60
#define AUXMR_REGA 0x80
#define AUXMR_REGB 0xa0
#define AUXMR_REGE 0xc0
#define AUXMR_EXTERN 0xe0
#define NEC7210_ADDR 6 /* (W) address */
#define ADDR_MASK 0x1f
#define ADDR_DL 0x20
#define ADDR_DT 0x40
#define ADDR_ARS 0x80
#define NEC7210_EOSR 7 /* (W) end-of-string */
/*
* Direct-access Registers (read only)
*/
#define NEC7210_DIR 0 /* (R) data in */
#define NEC7210_ISR1 1 /* (R) interrupt status 1 */
#define ISR1_DI 0x01
#define ISR1_DO 0x02
#define ISR1_ERR 0x04
#define ISR1_DEC 0x08
#define ISR1_END 0x10
#define ISR1_DET 0x20
#define ISR1_APT 0x40
#define ISR1_CPT 0x80
#define NEC7210_ISR2 2 /* (R) interrupt status 2 */
#define ISR2_ADSC 0x01
#define ISR2_REMC 0x02
#define ISR2_LOKC 0x04
#define ISR2_CO 0x08
#define ISR2_REM 0x10
#define ISR2_LOK 0x20
#define ISR2_SRQI 0x40
#define ISR2_INT 0x80
#define NEC7210_SPSR 3 /* (R) serial poll status */
#define SPSR_PEND 0x80
#define NEC7210_ADSR 4 /* (R) address status */
#define ADSR_MJMN 0x01
#define ADSR_TA 0x02
#define ADSR_LA 0x04
#define ADSR_TPAS 0x08
#define ADSR_LPAS 0x10
#define ADSR_SPMS 0x20
#define ADSR_NATN 0x40
#define ADSR_CIC 0x80
#define NEC7210_CPTR 5 /* (R) command pass-though */
#define NEC7210_ADDR0 6 /* (R) address 1 */
#define ADDR1_EOI 0x80
#define NEC7210_ADDR1 7 /* (R) address 2 */
/*
* Auxiliary Register A (indirect-access)
*/
#define AUX_A_HSNORM 0x00
#define AUX_A_HLDA 0x01
#define AUX_A_HLDE 0x02
#define AUX_A_REOS 0x04
#define AUX_A_XEOS 0x08
#define AUX_A_BIN 0x10
#define AUX_A_CONT (AUX_A_HLDA | AUX_A_HLDE)
/*
* Auxiliary Register B (indirect-access)
*/
#define AUX_B_CPTE 0x01
#define AUX_B_SPEOI 0x02
#define AUX_B_TRI 0x04
#define AUX_B_INV 0x08
#define AUX_B_ISS 0x10
/*
* Parallel Poll Register (indirect-access)
*/
#define PPOLL_PPS 0x08
#define PPOLL_PPU 0x10 /* Parallel poll unconfigure */
/*
* nec7210 Auxiliary Commands (NEC7210_AUXMR)
*/
#define AUXCMD_IEPON 0x0 /* Immediate Execute pon */
#define AUXCMD_CPPF 0x1 /* Clear Parallel Poll Flag */
#define AUXCMD_CRST 0x2 /* Chip Reset */
#define AUXCMD_RHDF 0x3 /* Release RFD holdoff */
#define AUXCMD_TRIG 0x4 /* Trigger */
#define AUXCMD_RTL 0x5 /* Return to local */
#define AUXCMD_SEOI 0x6 /* Send EOI */
#define AUXCMD_NVLD 0x7 /* Non-Valid Secondary Cmd or Addr */
#define AUXCMD_SPPF 0x9 /* Set Parallel Poll Flag */
#define AUXCMD_VLD 0xf /* Valid Secondary Cmd or Addr */
#define AUXCMD_GTS 0x10 /* Go To Standby */
#define AUXCMD_TCA 0x11 /* Take Control Asynchronously */
#define AUXCMD_TCS 0x12 /* Take Control Synchronously */
#define AUXCMD_LTN 0x13 /* Listen */
#define AUXCMD_DSC 0x14 /* Disable System Control */
#define AUXCMD_CIFC 0x16 /* Clear IFC */
#define AUXCMD_CREN 0x17 /* Clear REN */
#define AUXCMD_TCSE 0x1a /* Take Control Synchronously on End */
#define AUXCMD_LTNC 0x1b /* Listen in Continuous Mode */
#define AUXCMD_LUN 0x1c /* Local Unlisten */
#define AUXCMD_EPP 0x1d /* Execute Parallel Poll */
#define AUXCMD_SIFC 0x1e /* Set IFC */
#define AUXCMD_SREN 0x1f /* Set REN */
|