hc
2023-02-13 e440ec23c5a540cdd3f7464e8779219be6fd3d95
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
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
/*
 * tcic.h 1.13 1999/10/25 20:03:34
 *
 * The contents of this file are subject to the Mozilla Public License
 * Version 1.1 (the "License"); you may not use this file except in
 * compliance with the License. You may obtain a copy of the License
 * at http://www.mozilla.org/MPL/
 *
 * Software distributed under the License is distributed on an "AS IS"
 * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
 * the License for the specific language governing rights and
 * limitations under the License. 
 *
 * The initial developer of the original code is David A. Hinds
 * <dahinds@users.sourceforge.net>.  Portions created by David A. Hinds
 * are Copyright (C) 1999 David A. Hinds.  All Rights Reserved.
 *
 * Alternatively, the contents of this file may be used under the
 * terms of the GNU General Public License version 2 (the "GPL"), in which
 * case the provisions of the GPL are applicable instead of the
 * above.  If you wish to allow the use of your version of this file
 * only under the terms of the GPL and not to allow others to use
 * your version of this file under the MPL, indicate your decision by
 * deleting the provisions above and replace them with the notice and
 * other provisions required by the GPL.  If you do not delete the
 * provisions above, a recipient may use your version of this file
 * under either the MPL or the GPL.
 */
 
#ifndef _LINUX_TCIC_H
#define _LINUX_TCIC_H
 
#define TCIC_BASE        0x240
 
/* offsets of registers from TCIC_BASE */
#define TCIC_DATA        0x00
#define TCIC_ADDR        0x02
#define TCIC_SCTRL        0x06
#define TCIC_SSTAT        0x07
#define TCIC_MODE        0x08
#define TCIC_PWR        0x09
#define TCIC_EDC        0x0A
#define TCIC_ICSR        0x0C
#define TCIC_IENA        0x0D
#define TCIC_AUX        0x0E
 
#define TCIC_SS_SHFT        12
#define TCIC_SS_MASK        0x7000
 
/* Flags for TCIC_ADDR */
#define TCIC_ADR2_REG        0x8000
#define TCIC_ADR2_INDREG    0x0800
 
#define TCIC_ADDR_REG        0x80000000
#define TCIC_ADDR_SS_SHFT    (TCIC_SS_SHFT+16)
#define TCIC_ADDR_SS_MASK    (TCIC_SS_MASK<<16)
#define TCIC_ADDR_INDREG    0x08000000
#define TCIC_ADDR_IO        0x04000000
#define TCIC_ADDR_MASK        0x03ffffff
 
/* Flags for TCIC_SCTRL */
#define TCIC_SCTRL_ENA        0x01
#define TCIC_SCTRL_INCMODE    0x18
#define TCIC_SCTRL_INCMODE_HOLD    0x00
#define TCIC_SCTRL_INCMODE_WORD    0x08
#define TCIC_SCTRL_INCMODE_REG    0x10
#define TCIC_SCTRL_INCMODE_AUTO    0x18
#define TCIC_SCTRL_EDCSUM    0x20
#define TCIC_SCTRL_RESET    0x80
 
/* Flags for TCIC_SSTAT */
#define TCIC_SSTAT_6US        0x01
#define TCIC_SSTAT_10US        0x02
#define TCIC_SSTAT_PROGTIME    0x04
#define TCIC_SSTAT_LBAT1    0x08
#define TCIC_SSTAT_LBAT2    0x10
#define TCIC_SSTAT_RDY        0x20    /* Inverted */
#define TCIC_SSTAT_WP        0x40
#define TCIC_SSTAT_CD        0x80    /* Card detect */
 
/* Flags for TCIC_MODE */
#define TCIC_MODE_PGMMASK    0x1f
#define TCIC_MODE_NORMAL    0x00
#define TCIC_MODE_PGMWR        0x01
#define TCIC_MODE_PGMRD        0x02
#define TCIC_MODE_PGMCE        0x04
#define TCIC_MODE_PGMDBW    0x08
#define TCIC_MODE_PGMWORD    0x10
#define TCIC_MODE_AUXSEL_MASK    0xe0
 
/* Registers accessed through TCIC_AUX, by setting TCIC_MODE */
#define TCIC_AUX_TCTL        (0<<5)
#define TCIC_AUX_PCTL        (1<<5)
#define TCIC_AUX_WCTL        (2<<5)
#define TCIC_AUX_EXTERN        (3<<5)
#define TCIC_AUX_PDATA        (4<<5)
#define TCIC_AUX_SYSCFG        (5<<5)
#define TCIC_AUX_ILOCK        (6<<5)
#define TCIC_AUX_TEST        (7<<5)
 
/* Flags for TCIC_PWR */
#define TCIC_PWR_VCC(sock)    (0x01<<(sock))
#define TCIC_PWR_VCC_MASK    0x03
#define TCIC_PWR_VPP(sock)    (0x08<<(sock))
#define TCIC_PWR_VPP_MASK    0x18
#define TCIC_PWR_CLIMENA    0x40
#define TCIC_PWR_CLIMSTAT    0x80
 
/* Flags for TCIC_ICSR */
#define TCIC_ICSR_CLEAR        0x01
#define TCIC_ICSR_SET        0x02
#define TCIC_ICSR_JAM        (TCIC_ICSR_CLEAR|TCIC_ICSR_SET)
#define TCIC_ICSR_STOPCPU    0x04
#define TCIC_ICSR_ILOCK        0x08
#define TCIC_ICSR_PROGTIME    0x10
#define TCIC_ICSR_ERR        0x20
#define TCIC_ICSR_CDCHG        0x40
#define TCIC_ICSR_IOCHK        0x80
 
/* Flags for TCIC_IENA */
#define TCIC_IENA_CFG_MASK    0x03
#define TCIC_IENA_CFG_OFF    0x00    /* disabled */
#define TCIC_IENA_CFG_OD    0x01    /* active low, open drain */
#define TCIC_IENA_CFG_LOW    0x02    /* active low, totem pole */
#define TCIC_IENA_CFG_HIGH    0x03    /* active high, totem pole */
#define TCIC_IENA_ILOCK        0x08
#define TCIC_IENA_PROGTIME    0x10
#define TCIC_IENA_ERR        0x20    /* overcurrent or iochk */
#define TCIC_IENA_CDCHG        0x40
 
/* Flags for TCIC_AUX_WCTL */
#define TCIC_WAIT_COUNT_MASK    0x001f
#define TCIC_WAIT_ASYNC        0x0020
#define TCIC_WAIT_SENSE        0x0040
#define TCIC_WAIT_SRC        0x0080
#define TCIC_WCTL_WR        0x0100
#define TCIC_WCTL_RD        0x0200
#define TCIC_WCTL_CE        0x0400
#define TCIC_WCTL_LLBAT1    0x0800
#define TCIC_WCTL_LLBAT2    0x1000
#define TCIC_WCTL_LRDY        0x2000
#define TCIC_WCTL_LWP        0x4000
#define TCIC_WCTL_LCD        0x8000
 
/* Flags for TCIC_AUX_SYSCFG */
#define TCIC_SYSCFG_IRQ_MASK    0x000f
#define TCIC_SYSCFG_MCSFULL    0x0010
#define TCIC_SYSCFG_IO1723    0x0020
#define TCIC_SYSCFG_MCSXB    0x0040
#define TCIC_SYSCFG_ICSXB    0x0080
#define TCIC_SYSCFG_NOPDN    0x0100
#define TCIC_SYSCFG_MPSEL_SHFT    9
#define TCIC_SYSCFG_MPSEL_MASK    0x0e00
#define TCIC_SYSCFG_MPSENSE    0x2000
#define TCIC_SYSCFG_AUTOBUSY    0x4000
#define TCIC_SYSCFG_ACC        0x8000
 
#define TCIC_ILOCK_OUT        0x01
#define TCIC_ILOCK_SENSE    0x02
#define TCIC_ILOCK_CRESET    0x04
#define TCIC_ILOCK_CRESENA    0x08
#define TCIC_ILOCK_CWAIT    0x10
#define TCIC_ILOCK_CWAITSNS    0x20
#define TCIC_ILOCK_HOLD_MASK    0xc0
#define TCIC_ILOCK_HOLD_CCLK    0xc0
 
#define TCIC_ILOCKTEST_ID_SH    8
#define TCIC_ILOCKTEST_ID_MASK    0x7f00
#define TCIC_ILOCKTEST_MCIC_1    0x8000
 
#define TCIC_ID_DB86082        0x02
#define TCIC_ID_DB86082A    0x03
#define TCIC_ID_DB86084        0x04
#define TCIC_ID_DB86084A    0x08
#define TCIC_ID_DB86072        0x15
#define TCIC_ID_DB86184        0x14
#define TCIC_ID_DB86082B    0x17
 
#define TCIC_TEST_DIAG        0x8000
 
/*
 * Indirectly addressed registers
 */
 
#define TCIC_SCF1(sock)    ((sock)<<3)
#define TCIC_SCF2(sock) (((sock)<<3)+2)
 
/* Flags for SCF1 */
#define TCIC_SCF1_IRQ_MASK    0x000f
#define TCIC_SCF1_IRQ_OFF    0x0000
#define TCIC_SCF1_IRQOC        0x0010
#define TCIC_SCF1_PCVT        0x0020
#define TCIC_SCF1_IRDY        0x0040
#define TCIC_SCF1_ATA        0x0080
#define TCIC_SCF1_DMA_SHIFT    8
#define TCIC_SCF1_DMA_MASK    0x0700
#define TCIC_SCF1_DMA_OFF    0
#define TCIC_SCF1_DREQ2        2
#define TCIC_SCF1_IOSTS        0x0800
#define TCIC_SCF1_SPKR        0x1000
#define TCIC_SCF1_FINPACK    0x2000
#define TCIC_SCF1_DELWR        0x4000
#define TCIC_SCF1_HD7IDE    0x8000
 
/* Flags for SCF2 */
#define TCIC_SCF2_RI        0x0001
#define TCIC_SCF2_IDBR        0x0002
#define TCIC_SCF2_MDBR        0x0004
#define TCIC_SCF2_MLBAT1    0x0008
#define TCIC_SCF2_MLBAT2    0x0010
#define TCIC_SCF2_MRDY        0x0020
#define TCIC_SCF2_MWP        0x0040
#define TCIC_SCF2_MCD        0x0080
#define TCIC_SCF2_MALL        0x00f8
 
/* Indirect addresses for memory window registers */
#define TCIC_MWIN(sock,map)    (0x100+(((map)+((sock)<<2))<<3))
#define TCIC_MBASE_X        2
#define TCIC_MMAP_X        4
#define TCIC_MCTL_X        6
 
#define TCIC_MBASE_4K_BIT    0x4000
#define TCIC_MBASE_HA_SHFT    12
#define TCIC_MBASE_HA_MASK    0x0fff
 
#define TCIC_MMAP_REG        0x8000
#define TCIC_MMAP_CA_SHFT    12
#define TCIC_MMAP_CA_MASK    0x3fff
 
#define TCIC_MCTL_WSCNT_MASK    0x001f
#define TCIC_MCTL_WCLK        0x0020
#define TCIC_MCTL_WCLK_CCLK    0x0000
#define TCIC_MCTL_WCLK_BCLK    0x0020
#define TCIC_MCTL_QUIET        0x0040
#define TCIC_MCTL_WP        0x0080
#define TCIC_MCTL_ACC        0x0100
#define TCIC_MCTL_KE        0x0200
#define TCIC_MCTL_EDC        0x0400
#define TCIC_MCTL_B8        0x0800
#define TCIC_MCTL_SS_SHFT    TCIC_SS_SHFT
#define TCIC_MCTL_SS_MASK    TCIC_SS_MASK
#define TCIC_MCTL_ENA        0x8000
 
/* Indirect addresses for I/O window registers */
#define TCIC_IWIN(sock,map)    (0x200+(((map)+((sock)<<1))<<2))
#define TCIC_IBASE_X        0
#define TCIC_ICTL_X        2
 
#define TCIC_ICTL_WSCNT_MASK    TCIC_MCTL_WSCNT_MASK
#define TCIC_ICTL_QUIET        TCIC_MCTL_QUIET
#define TCIC_ICTL_1K        0x0080
#define TCIC_ICTL_PASS16    0x0100
#define TCIC_ICTL_ACC        TCIC_MCTL_ACC
#define TCIC_ICTL_TINY        0x0200
#define TCIC_ICTL_B16        0x0400
#define TCIC_ICTL_B8        TCIC_MCTL_B8
#define TCIC_ICTL_BW_MASK    (TCIC_ICTL_B16|TCIC_ICTL_B8)
#define TCIC_ICTL_BW_DYN    0
#define TCIC_ICTL_BW_8        TCIC_ICTL_B8
#define TCIC_ICTL_BW_16        TCIC_ICTL_B16
#define TCIC_ICTL_BW_ATA    (TCIC_ICTL_B16|TCIC_ICTL_B8)
#define TCIC_ICTL_SS_SHFT    TCIC_SS_SHFT
#define TCIC_ICTL_SS_MASK    TCIC_SS_MASK
#define TCIC_ICTL_ENA        TCIC_MCTL_ENA
 
#endif /* _LINUX_TCIC_H */