Merge branch 'fixes' into for-linus
[linux-2.6] / drivers / isdn / hisax / w6692.h
1 /* $Id: w6692.h,v 1.4.2.2 2004/01/12 22:52:29 keil Exp $
2  *
3  * Winbond W6692 specific defines
4  *
5  * Author       Petr Novak
6  * Copyright    by Petr Novak        <petr.novak@i.cz>
7  * 
8  * This software may be used and distributed according to the terms
9  * of the GNU General Public License, incorporated herein by reference.
10  *
11  */
12
13 /* map W6692 functions to ISAC functions */
14 #define readW6692       readisac
15 #define writeW6692      writeisac
16 #define readW6692fifo   readisacfifo
17 #define writeW6692fifo  writeisacfifo
18
19 /* B-channel FIFO read/write routines */
20
21 #define READW6692BFIFO(cs,bchan,ptr,count) \
22         insb(cs->hw.w6692.iobase+W_B_RFIFO+(bchan?0x40:0),ptr,count)
23
24 #define WRITEW6692BFIFO(cs,bchan,ptr,count) \
25         outsb(cs->hw.w6692.iobase+W_B_XFIFO+(bchan?0x40:0),ptr,count)
26
27 /* Specifications of W6692 registers */
28
29 #define W_D_RFIFO       0x00    /* R */
30 #define W_D_XFIFO       0x04    /* W */
31 #define W_D_CMDR        0x08    /* W */
32 #define W_D_MODE        0x0c    /* R/W */
33 #define W_D_TIMR        0x10    /* R/W */
34 #define W_ISTA          0x14    /* R_clr */
35 #define W_IMASK         0x18    /* R/W */
36 #define W_D_EXIR        0x1c    /* R_clr */
37 #define W_D_EXIM        0x20    /* R/W */
38 #define W_D_STAR        0x24    /* R */
39 #define W_D_RSTA        0x28    /* R */
40 #define W_D_SAM         0x2c    /* R/W */
41 #define W_D_SAP1        0x30    /* R/W */
42 #define W_D_SAP2        0x34    /* R/W */
43 #define W_D_TAM         0x38    /* R/W */
44 #define W_D_TEI1        0x3c    /* R/W */
45 #define W_D_TEI2        0x40    /* R/W */
46 #define W_D_RBCH        0x44    /* R */
47 #define W_D_RBCL        0x48    /* R */
48 #define W_TIMR2         0x4c    /* W */
49 #define W_L1_RC         0x50    /* R/W */
50 #define W_D_CTL         0x54    /* R/W */
51 #define W_CIR           0x58    /* R */
52 #define W_CIX           0x5c    /* W */
53 #define W_SQR           0x60    /* R */
54 #define W_SQX           0x64    /* W */
55 #define W_PCTL          0x68    /* R/W */
56 #define W_MOR           0x6c    /* R */
57 #define W_MOX           0x70    /* R/W */
58 #define W_MOSR          0x74    /* R_clr */
59 #define W_MOCR          0x78    /* R/W */
60 #define W_GCR           0x7c    /* R/W */
61
62 #define W_B_RFIFO       0x80    /* R */
63 #define W_B_XFIFO       0x84    /* W */
64 #define W_B_CMDR        0x88    /* W */
65 #define W_B_MODE        0x8c    /* R/W */
66 #define W_B_EXIR        0x90    /* R_clr */
67 #define W_B_EXIM        0x94    /* R/W */
68 #define W_B_STAR        0x98    /* R */
69 #define W_B_ADM1        0x9c    /* R/W */
70 #define W_B_ADM2        0xa0    /* R/W */
71 #define W_B_ADR1        0xa4    /* R/W */
72 #define W_B_ADR2        0xa8    /* R/W */
73 #define W_B_RBCL        0xac    /* R */
74 #define W_B_RBCH        0xb0    /* R */
75
76 #define W_XADDR         0xf4    /* R/W */
77 #define W_XDATA         0xf8    /* R/W */
78 #define W_EPCTL         0xfc    /* W */
79
80 /* W6692 register bits */
81
82 #define W_D_CMDR_XRST   0x01
83 #define W_D_CMDR_XME    0x02
84 #define W_D_CMDR_XMS    0x08
85 #define W_D_CMDR_STT    0x10
86 #define W_D_CMDR_RRST   0x40
87 #define W_D_CMDR_RACK   0x80
88
89 #define W_D_MODE_RLP    0x01
90 #define W_D_MODE_DLP    0x02
91 #define W_D_MODE_MFD    0x04
92 #define W_D_MODE_TEE    0x08
93 #define W_D_MODE_TMS    0x10
94 #define W_D_MODE_RACT   0x40
95 #define W_D_MODE_MMS    0x80
96
97 #define W_INT_B2_EXI    0x01
98 #define W_INT_B1_EXI    0x02
99 #define W_INT_D_EXI     0x04
100 #define W_INT_XINT0     0x08
101 #define W_INT_XINT1     0x10
102 #define W_INT_D_XFR     0x20
103 #define W_INT_D_RME     0x40
104 #define W_INT_D_RMR     0x80
105
106 #define W_D_EXI_WEXP    0x01
107 #define W_D_EXI_TEXP    0x02
108 #define W_D_EXI_ISC     0x04
109 #define W_D_EXI_MOC     0x08
110 #define W_D_EXI_TIN2    0x10
111 #define W_D_EXI_XCOL    0x20
112 #define W_D_EXI_XDUN    0x40
113 #define W_D_EXI_RDOV    0x80
114
115 #define W_D_STAR_DRDY   0x10
116 #define W_D_STAR_XBZ    0x20
117 #define W_D_STAR_XDOW   0x80
118
119 #define W_D_RSTA_RMB    0x10
120 #define W_D_RSTA_CRCE   0x20
121 #define W_D_RSTA_RDOV   0x40
122
123 #define W_D_CTL_SRST    0x20
124
125 #define W_CIR_SCC       0x80
126 #define W_CIR_ICC       0x40
127 #define W_CIR_COD_MASK  0x0f
128
129 #define W_B_CMDR_XRST   0x01
130 #define W_B_CMDR_XME    0x02
131 #define W_B_CMDR_XMS    0x04
132 #define W_B_CMDR_RACT   0x20
133 #define W_B_CMDR_RRST   0x40
134 #define W_B_CMDR_RACK   0x80
135
136 #define W_B_MODE_FTS0   0x01
137 #define W_B_MODE_FTS1   0x02
138 #define W_B_MODE_SW56   0x04
139 #define W_B_MODE_BSW0   0x08
140 #define W_B_MODE_BSW1   0x10
141 #define W_B_MODE_EPCM   0x20
142 #define W_B_MODE_ITF    0x40
143 #define W_B_MODE_MMS    0x80
144
145 #define W_B_EXI_XDUN    0x01
146 #define W_B_EXI_XFR     0x02
147 #define W_B_EXI_RDOV    0x10
148 #define W_B_EXI_RME     0x20
149 #define W_B_EXI_RMR     0x40
150
151 #define W_B_STAR_XBZ    0x01
152 #define W_B_STAR_XDOW   0x04
153 #define W_B_STAR_RMB    0x10
154 #define W_B_STAR_CRCE   0x20
155 #define W_B_STAR_RDOV   0x40
156
157 #define W_B_RBCH_LOV    0x20
158
159 /* W6692 Layer1 commands */
160
161 #define W_L1CMD_ECK     0x00
162 #define W_L1CMD_RST     0x01
163 #define W_L1CMD_SCP     0x04
164 #define W_L1CMD_SSP     0x02
165 #define W_L1CMD_AR8     0x08
166 #define W_L1CMD_AR10    0x09
167 #define W_L1CMD_EAL     0x0a
168 #define W_L1CMD_DRC     0x0f
169
170 /* W6692 Layer1 indications */
171
172 #define W_L1IND_CE      0x07
173 #define W_L1IND_DRD     0x00
174 #define W_L1IND_LD      0x04
175 #define W_L1IND_ARD     0x08
176 #define W_L1IND_TI      0x0a
177 #define W_L1IND_ATI     0x0b
178 #define W_L1IND_AI8     0x0c
179 #define W_L1IND_AI10    0x0d
180 #define W_L1IND_CD      0x0f
181
182 /* FIFO thresholds */
183 #define W_D_FIFO_THRESH 64
184 #define W_B_FIFO_THRESH 64