| Karsten Keil | cae86d4 | 2009-07-22 19:42:46 +0200 | [diff] [blame] | 1 | /* | 
|  | 2 | * | 
|  | 3 | * ipac.h	Defines for the Infineon (former Siemens) ISDN | 
|  | 4 | *		chip series | 
|  | 5 | * | 
|  | 6 | * Author       Karsten Keil <keil@isdn4linux.de> | 
|  | 7 | * | 
|  | 8 | * Copyright 2009  by Karsten Keil <keil@isdn4linux.de> | 
|  | 9 | * | 
|  | 10 | * This program is free software; you can redistribute it and/or modify | 
|  | 11 | * it under the terms of the GNU General Public License version 2 as | 
|  | 12 | * published by the Free Software Foundation. | 
|  | 13 | * | 
|  | 14 | * This program is distributed in the hope that it will be useful, | 
|  | 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
|  | 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
|  | 17 | * GNU General Public License for more details. | 
|  | 18 | * | 
|  | 19 | * You should have received a copy of the GNU General Public License | 
|  | 20 | * along with this program; if not, write to the Free Software | 
|  | 21 | * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | 
|  | 22 | * | 
|  | 23 | */ | 
|  | 24 |  | 
|  | 25 | #include "iohelper.h" | 
|  | 26 |  | 
|  | 27 | struct isac_hw { | 
|  | 28 | struct dchannel		dch; | 
|  | 29 | u32			type; | 
|  | 30 | u32			off;		/* offset to isac regs */ | 
|  | 31 | char			*name; | 
|  | 32 | spinlock_t		*hwlock;	/* lock HW acccess */ | 
| Karsten Keil | 663a31c | 2009-07-27 08:20:55 -0700 | [diff] [blame] | 33 | read_reg_func		*read_reg; | 
|  | 34 | write_reg_func		*write_reg; | 
|  | 35 | fifo_func		*read_fifo; | 
|  | 36 | fifo_func		*write_fifo; | 
| Karsten Keil | cae86d4 | 2009-07-22 19:42:46 +0200 | [diff] [blame] | 37 | int			(*monitor)(void *, u32, u8 *, int); | 
|  | 38 | void			(*release)(struct isac_hw *); | 
|  | 39 | int			(*init)(struct isac_hw *); | 
|  | 40 | int			(*ctrl)(struct isac_hw *, u32, u_long); | 
|  | 41 | int			(*open)(struct isac_hw *, struct channel_req *); | 
|  | 42 | u8			*mon_tx; | 
|  | 43 | u8			*mon_rx; | 
|  | 44 | int			mon_txp; | 
|  | 45 | int			mon_txc; | 
|  | 46 | int			mon_rxp; | 
|  | 47 | struct arcofi_msg	*arcofi_list; | 
|  | 48 | struct timer_list	arcofitimer; | 
|  | 49 | wait_queue_head_t	arcofi_wait; | 
|  | 50 | u8			arcofi_bc; | 
|  | 51 | u8			arcofi_state; | 
|  | 52 | u8			mocr; | 
|  | 53 | u8			adf2; | 
|  | 54 | u8			state; | 
|  | 55 | }; | 
|  | 56 |  | 
|  | 57 | struct ipac_hw; | 
|  | 58 |  | 
|  | 59 | struct hscx_hw { | 
|  | 60 | struct bchannel		bch; | 
|  | 61 | struct ipac_hw		*ip; | 
|  | 62 | u8			fifo_size; | 
|  | 63 | u8			off;	/* offset to ICA or ICB */ | 
|  | 64 | u8			slot; | 
|  | 65 | char			log[64]; | 
|  | 66 | }; | 
|  | 67 |  | 
|  | 68 | struct ipac_hw { | 
|  | 69 | struct isac_hw		isac; | 
|  | 70 | struct hscx_hw		hscx[2]; | 
|  | 71 | char			*name; | 
|  | 72 | void			*hw; | 
|  | 73 | spinlock_t		*hwlock;	/* lock HW acccess */ | 
|  | 74 | struct module		*owner; | 
|  | 75 | u32			type; | 
| Karsten Keil | 663a31c | 2009-07-27 08:20:55 -0700 | [diff] [blame] | 76 | read_reg_func		*read_reg; | 
|  | 77 | write_reg_func		*write_reg; | 
|  | 78 | fifo_func		*read_fifo; | 
|  | 79 | fifo_func		*write_fifo; | 
| Karsten Keil | cae86d4 | 2009-07-22 19:42:46 +0200 | [diff] [blame] | 80 | void			(*release)(struct ipac_hw *); | 
|  | 81 | int			(*init)(struct ipac_hw *); | 
|  | 82 | int			(*ctrl)(struct ipac_hw *, u32, u_long); | 
|  | 83 | u8			conf; | 
|  | 84 | }; | 
|  | 85 |  | 
|  | 86 | #define IPAC_TYPE_ISAC		0x0010 | 
|  | 87 | #define IPAC_TYPE_IPAC		0x0020 | 
|  | 88 | #define IPAC_TYPE_ISACX		0x0040 | 
|  | 89 | #define IPAC_TYPE_IPACX		0x0080 | 
|  | 90 | #define IPAC_TYPE_HSCX		0x0100 | 
|  | 91 |  | 
|  | 92 | #define ISAC_USE_ARCOFI		0x1000 | 
|  | 93 |  | 
|  | 94 | /* Monitor functions */ | 
|  | 95 | #define MONITOR_RX_0		0x1000 | 
|  | 96 | #define MONITOR_RX_1		0x1001 | 
|  | 97 | #define MONITOR_TX_0		0x2000 | 
|  | 98 | #define MONITOR_TX_1		0x2001 | 
|  | 99 |  | 
|  | 100 | /* All registers original Siemens Spec  */ | 
|  | 101 | /* IPAC/ISAC registers */ | 
|  | 102 | #define ISAC_MASK		0x20 | 
|  | 103 | #define ISAC_ISTA		0x20 | 
|  | 104 | #define ISAC_STAR		0x21 | 
|  | 105 | #define ISAC_CMDR		0x21 | 
|  | 106 | #define ISAC_EXIR		0x24 | 
|  | 107 | #define ISAC_ADF2		0x39 | 
|  | 108 | #define ISAC_SPCR		0x30 | 
|  | 109 | #define ISAC_ADF1		0x38 | 
|  | 110 | #define ISAC_CIR0		0x31 | 
|  | 111 | #define ISAC_CIX0		0x31 | 
|  | 112 | #define ISAC_CIR1		0x33 | 
|  | 113 | #define ISAC_CIX1		0x33 | 
|  | 114 | #define ISAC_STCR		0x37 | 
|  | 115 | #define ISAC_MODE		0x22 | 
|  | 116 | #define ISAC_RSTA		0x27 | 
|  | 117 | #define ISAC_RBCL		0x25 | 
|  | 118 | #define ISAC_RBCH		0x2A | 
|  | 119 | #define ISAC_TIMR		0x23 | 
|  | 120 | #define ISAC_SQXR		0x3b | 
|  | 121 | #define ISAC_SQRR		0x3b | 
|  | 122 | #define ISAC_MOSR		0x3a | 
|  | 123 | #define ISAC_MOCR		0x3a | 
|  | 124 | #define ISAC_MOR0		0x32 | 
|  | 125 | #define ISAC_MOX0		0x32 | 
|  | 126 | #define ISAC_MOR1		0x34 | 
|  | 127 | #define ISAC_MOX1		0x34 | 
|  | 128 |  | 
|  | 129 | #define ISAC_RBCH_XAC		0x80 | 
|  | 130 |  | 
|  | 131 | #define IPAC_D_TIN2		0x01 | 
|  | 132 |  | 
|  | 133 | /* IPAC/HSCX */ | 
|  | 134 | #define IPAC_ISTAB		0x20	/* RD	*/ | 
|  | 135 | #define IPAC_MASKB		0x20	/* WR	*/ | 
|  | 136 | #define IPAC_STARB		0x21	/* RD	*/ | 
|  | 137 | #define IPAC_CMDRB		0x21	/* WR	*/ | 
|  | 138 | #define IPAC_MODEB		0x22	/* R/W	*/ | 
|  | 139 | #define IPAC_EXIRB		0x24	/* RD	*/ | 
|  | 140 | #define IPAC_RBCLB		0x25	/* RD	*/ | 
|  | 141 | #define IPAC_RAH1		0x26	/* WR	*/ | 
|  | 142 | #define IPAC_RAH2		0x27	/* WR	*/ | 
|  | 143 | #define IPAC_RSTAB		0x27	/* RD	*/ | 
|  | 144 | #define IPAC_RAL1		0x28	/* R/W	*/ | 
|  | 145 | #define IPAC_RAL2		0x29	/* WR	*/ | 
|  | 146 | #define IPAC_RHCRB		0x29	/* RD	*/ | 
|  | 147 | #define IPAC_XBCL		0x2A	/* WR	*/ | 
|  | 148 | #define IPAC_CCR2		0x2C	/* R/W	*/ | 
|  | 149 | #define IPAC_RBCHB		0x2D	/* RD	*/ | 
|  | 150 | #define IPAC_XBCH		0x2D	/* WR	*/ | 
|  | 151 | #define HSCX_VSTR		0x2E	/* RD	*/ | 
|  | 152 | #define IPAC_RLCR		0x2E	/* WR	*/ | 
|  | 153 | #define IPAC_CCR1		0x2F	/* R/W	*/ | 
|  | 154 | #define IPAC_TSAX		0x30	/* WR	*/ | 
|  | 155 | #define IPAC_TSAR		0x31	/* WR	*/ | 
|  | 156 | #define IPAC_XCCR		0x32	/* WR	*/ | 
|  | 157 | #define IPAC_RCCR		0x33	/* WR	*/ | 
|  | 158 |  | 
|  | 159 | /* IPAC_ISTAB/IPAC_MASKB bits */ | 
|  | 160 | #define IPAC_B_XPR		0x10 | 
|  | 161 | #define IPAC_B_RPF		0x40 | 
|  | 162 | #define IPAC_B_RME		0x80 | 
|  | 163 | #define IPAC_B_ON		0x2F | 
|  | 164 |  | 
|  | 165 | /* IPAC_EXIRB bits */ | 
|  | 166 | #define IPAC_B_RFS		0x04 | 
|  | 167 | #define IPAC_B_RFO		0x10 | 
|  | 168 | #define IPAC_B_XDU		0x40 | 
|  | 169 | #define IPAC_B_XMR		0x80 | 
|  | 170 |  | 
|  | 171 | /* IPAC special registers */ | 
|  | 172 | #define IPAC_CONF		0xC0	/* R/W	*/ | 
|  | 173 | #define IPAC_ISTA		0xC1	/* RD	*/ | 
|  | 174 | #define IPAC_MASK		0xC1	/* WR	*/ | 
|  | 175 | #define IPAC_ID			0xC2	/* RD	*/ | 
|  | 176 | #define IPAC_ACFG		0xC3	/* R/W	*/ | 
|  | 177 | #define IPAC_AOE		0xC4	/* R/W	*/ | 
|  | 178 | #define IPAC_ARX		0xC5	/* RD	*/ | 
|  | 179 | #define IPAC_ATX		0xC5	/* WR	*/ | 
|  | 180 | #define IPAC_PITA1		0xC6	/* R/W	*/ | 
|  | 181 | #define IPAC_PITA2		0xC7	/* R/W	*/ | 
|  | 182 | #define IPAC_POTA1		0xC8	/* R/W	*/ | 
|  | 183 | #define IPAC_POTA2		0xC9	/* R/W	*/ | 
|  | 184 | #define IPAC_PCFG		0xCA	/* R/W	*/ | 
|  | 185 | #define IPAC_SCFG		0xCB	/* R/W	*/ | 
|  | 186 | #define IPAC_TIMR2		0xCC	/* R/W	*/ | 
|  | 187 |  | 
|  | 188 | /* IPAC_ISTA/_MASK bits */ | 
|  | 189 | #define IPAC__EXB		0x01 | 
|  | 190 | #define IPAC__ICB		0x02 | 
|  | 191 | #define IPAC__EXA		0x04 | 
|  | 192 | #define IPAC__ICA		0x08 | 
|  | 193 | #define IPAC__EXD		0x10 | 
|  | 194 | #define IPAC__ICD		0x20 | 
|  | 195 | #define IPAC__INT0		0x40 | 
|  | 196 | #define IPAC__INT1		0x80 | 
|  | 197 | #define IPAC__ON		0xC0 | 
|  | 198 |  | 
|  | 199 | /* HSCX ISTA/MASK bits */ | 
|  | 200 | #define HSCX__EXB		0x01 | 
|  | 201 | #define HSCX__EXA		0x02 | 
|  | 202 | #define HSCX__ICA		0x04 | 
|  | 203 |  | 
|  | 204 | /* ISAC/ISACX/IPAC/IPACX L1 commands */ | 
|  | 205 | #define ISAC_CMD_TIM		0x0 | 
|  | 206 | #define ISAC_CMD_RS		0x1 | 
|  | 207 | #define ISAC_CMD_SCZ		0x4 | 
|  | 208 | #define ISAC_CMD_SSZ		0x2 | 
|  | 209 | #define ISAC_CMD_AR8		0x8 | 
|  | 210 | #define ISAC_CMD_AR10		0x9 | 
|  | 211 | #define ISAC_CMD_ARL		0xA | 
|  | 212 | #define ISAC_CMD_DUI		0xF | 
|  | 213 |  | 
|  | 214 | /* ISAC/ISACX/IPAC/IPACX L1 indications */ | 
|  | 215 | #define ISAC_IND_RS		0x1 | 
|  | 216 | #define ISAC_IND_PU		0x7 | 
|  | 217 | #define ISAC_IND_DR		0x0 | 
|  | 218 | #define ISAC_IND_SD		0x2 | 
|  | 219 | #define ISAC_IND_DIS		0x3 | 
|  | 220 | #define ISAC_IND_EI		0x6 | 
|  | 221 | #define ISAC_IND_RSY		0x4 | 
|  | 222 | #define ISAC_IND_ARD		0x8 | 
|  | 223 | #define ISAC_IND_TI		0xA | 
|  | 224 | #define ISAC_IND_ATI		0xB | 
|  | 225 | #define ISAC_IND_AI8		0xC | 
|  | 226 | #define ISAC_IND_AI10		0xD | 
|  | 227 | #define ISAC_IND_DID		0xF | 
|  | 228 |  | 
|  | 229 | /* the new ISACX / IPACX */ | 
|  | 230 | /* D-channel registers   */ | 
|  | 231 | #define ISACX_RFIFOD		0x00	/* RD	*/ | 
|  | 232 | #define ISACX_XFIFOD		0x00	/* WR	*/ | 
|  | 233 | #define ISACX_ISTAD		0x20	/* RD	*/ | 
|  | 234 | #define ISACX_MASKD		0x20	/* WR	*/ | 
|  | 235 | #define ISACX_STARD		0x21	/* RD	*/ | 
|  | 236 | #define ISACX_CMDRD		0x21	/* WR	*/ | 
|  | 237 | #define ISACX_MODED		0x22	/* R/W	*/ | 
|  | 238 | #define ISACX_EXMD1		0x23	/* R/W	*/ | 
|  | 239 | #define ISACX_TIMR1		0x24	/* R/W	*/ | 
|  | 240 | #define ISACX_SAP1		0x25	/* WR	*/ | 
|  | 241 | #define ISACX_SAP2		0x26	/* WR	*/ | 
|  | 242 | #define ISACX_RBCLD		0x26	/* RD	*/ | 
|  | 243 | #define ISACX_RBCHD		0x27	/* RD	*/ | 
|  | 244 | #define ISACX_TEI1		0x27	/* WR	*/ | 
|  | 245 | #define ISACX_TEI2		0x28	/* WR	*/ | 
|  | 246 | #define ISACX_RSTAD		0x28	/* RD	*/ | 
|  | 247 | #define ISACX_TMD		0x29	/* R/W	*/ | 
|  | 248 | #define ISACX_CIR0		0x2E	/* RD	*/ | 
|  | 249 | #define ISACX_CIX0		0x2E	/* WR	*/ | 
|  | 250 | #define ISACX_CIR1		0x2F	/* RD	*/ | 
|  | 251 | #define ISACX_CIX1		0x2F	/* WR	*/ | 
|  | 252 |  | 
|  | 253 | /* Transceiver registers  */ | 
|  | 254 | #define ISACX_TR_CONF0		0x30	/* R/W	*/ | 
|  | 255 | #define ISACX_TR_CONF1		0x31	/* R/W	*/ | 
|  | 256 | #define ISACX_TR_CONF2		0x32	/* R/W	*/ | 
|  | 257 | #define ISACX_TR_STA		0x33	/* RD	*/ | 
|  | 258 | #define ISACX_TR_CMD		0x34	/* R/W	*/ | 
|  | 259 | #define ISACX_SQRR1		0x35	/* RD	*/ | 
|  | 260 | #define ISACX_SQXR1		0x35	/* WR	*/ | 
|  | 261 | #define ISACX_SQRR2		0x36	/* RD	*/ | 
|  | 262 | #define ISACX_SQXR2		0x36	/* WR	*/ | 
|  | 263 | #define ISACX_SQRR3		0x37	/* RD	*/ | 
|  | 264 | #define ISACX_SQXR3		0x37	/* WR	*/ | 
|  | 265 | #define ISACX_ISTATR		0x38	/* RD	*/ | 
|  | 266 | #define ISACX_MASKTR		0x39	/* R/W	*/ | 
|  | 267 | #define ISACX_TR_MODE		0x3A	/* R/W	*/ | 
|  | 268 | #define ISACX_ACFG1		0x3C	/* R/W	*/ | 
|  | 269 | #define ISACX_ACFG2		0x3D	/* R/W	*/ | 
|  | 270 | #define ISACX_AOE		0x3E	/* R/W	*/ | 
|  | 271 | #define ISACX_ARX		0x3F	/* RD	*/ | 
|  | 272 | #define ISACX_ATX		0x3F	/* WR	*/ | 
|  | 273 |  | 
|  | 274 | /* IOM: Timeslot, DPS, CDA  */ | 
|  | 275 | #define ISACX_CDA10		0x40	/* R/W	*/ | 
|  | 276 | #define ISACX_CDA11		0x41	/* R/W	*/ | 
|  | 277 | #define ISACX_CDA20		0x42	/* R/W	*/ | 
|  | 278 | #define ISACX_CDA21		0x43	/* R/W	*/ | 
|  | 279 | #define ISACX_CDA_TSDP10	0x44	/* R/W	*/ | 
|  | 280 | #define ISACX_CDA_TSDP11	0x45	/* R/W	*/ | 
|  | 281 | #define ISACX_CDA_TSDP20	0x46	/* R/W	*/ | 
|  | 282 | #define ISACX_CDA_TSDP21	0x47	/* R/W	*/ | 
|  | 283 | #define ISACX_BCHA_TSDP_BC1	0x48	/* R/W	*/ | 
|  | 284 | #define ISACX_BCHA_TSDP_BC2	0x49	/* R/W	*/ | 
|  | 285 | #define ISACX_BCHB_TSDP_BC1	0x4A	/* R/W	*/ | 
|  | 286 | #define ISACX_BCHB_TSDP_BC2	0x4B	/* R/W	*/ | 
|  | 287 | #define ISACX_TR_TSDP_BC1	0x4C	/* R/W	*/ | 
|  | 288 | #define ISACX_TR_TSDP_BC2	0x4D	/* R/W	*/ | 
|  | 289 | #define ISACX_CDA1_CR		0x4E	/* R/W	*/ | 
|  | 290 | #define ISACX_CDA2_CR		0x4F	/* R/W	*/ | 
|  | 291 |  | 
|  | 292 | /* IOM: Contol, Sync transfer, Monitor    */ | 
|  | 293 | #define ISACX_TR_CR		0x50	/* R/W	*/ | 
|  | 294 | #define ISACX_TRC_CR		0x50	/* R/W	*/ | 
|  | 295 | #define ISACX_BCHA_CR		0x51	/* R/W	*/ | 
|  | 296 | #define ISACX_BCHB_CR		0x52	/* R/W	*/ | 
|  | 297 | #define ISACX_DCI_CR		0x53	/* R/W	*/ | 
|  | 298 | #define ISACX_DCIC_CR		0x53	/* R/W	*/ | 
|  | 299 | #define ISACX_MON_CR		0x54	/* R/W	*/ | 
|  | 300 | #define ISACX_SDS1_CR		0x55	/* R/W	*/ | 
|  | 301 | #define ISACX_SDS2_CR		0x56	/* R/W	*/ | 
|  | 302 | #define ISACX_IOM_CR		0x57	/* R/W	*/ | 
|  | 303 | #define ISACX_STI		0x58	/* RD	*/ | 
|  | 304 | #define ISACX_ASTI		0x58	/* WR	*/ | 
|  | 305 | #define ISACX_MSTI		0x59	/* R/W	*/ | 
|  | 306 | #define ISACX_SDS_CONF		0x5A	/* R/W	*/ | 
|  | 307 | #define ISACX_MCDA		0x5B	/* RD	*/ | 
|  | 308 | #define ISACX_MOR		0x5C	/* RD	*/ | 
|  | 309 | #define ISACX_MOX		0x5C	/* WR	*/ | 
|  | 310 | #define ISACX_MOSR		0x5D	/* RD	*/ | 
|  | 311 | #define ISACX_MOCR		0x5E	/* R/W	*/ | 
|  | 312 | #define ISACX_MSTA		0x5F	/* RD	*/ | 
|  | 313 | #define ISACX_MCONF		0x5F	/* WR	*/ | 
|  | 314 |  | 
|  | 315 | /* Interrupt and general registers */ | 
|  | 316 | #define ISACX_ISTA		0x60	/* RD	*/ | 
|  | 317 | #define ISACX_MASK		0x60	/* WR	*/ | 
|  | 318 | #define ISACX_AUXI		0x61	/* RD	*/ | 
|  | 319 | #define ISACX_AUXM		0x61	/* WR	*/ | 
|  | 320 | #define ISACX_MODE1		0x62	/* R/W	*/ | 
|  | 321 | #define ISACX_MODE2		0x63	/* R/W	*/ | 
|  | 322 | #define ISACX_ID		0x64	/* RD	*/ | 
|  | 323 | #define ISACX_SRES		0x64	/* WR	*/ | 
|  | 324 | #define ISACX_TIMR2		0x65	/* R/W	*/ | 
|  | 325 |  | 
|  | 326 | /* Register Bits */ | 
|  | 327 | /* ISACX/IPACX _ISTAD (R) and _MASKD (W) */ | 
|  | 328 | #define ISACX_D_XDU		0x04 | 
|  | 329 | #define ISACX_D_XMR		0x08 | 
|  | 330 | #define ISACX_D_XPR		0x10 | 
|  | 331 | #define ISACX_D_RFO		0x20 | 
|  | 332 | #define ISACX_D_RPF		0x40 | 
|  | 333 | #define ISACX_D_RME		0x80 | 
|  | 334 |  | 
|  | 335 | /* ISACX/IPACX _ISTA (R) and _MASK (W) */ | 
|  | 336 | #define ISACX__ICD		0x01 | 
|  | 337 | #define ISACX__MOS		0x02 | 
|  | 338 | #define ISACX__TRAN		0x04 | 
|  | 339 | #define ISACX__AUX		0x08 | 
|  | 340 | #define ISACX__CIC		0x10 | 
|  | 341 | #define ISACX__ST		0x20 | 
|  | 342 | #define IPACX__ICB		0x40 | 
|  | 343 | #define IPACX__ICA		0x80 | 
|  | 344 | #define IPACX__ON		0x2C | 
|  | 345 |  | 
|  | 346 | /* ISACX/IPACX _CMDRD (W) */ | 
|  | 347 | #define ISACX_CMDRD_XRES	0x01 | 
|  | 348 | #define ISACX_CMDRD_XME		0x02 | 
|  | 349 | #define ISACX_CMDRD_XTF		0x08 | 
|  | 350 | #define ISACX_CMDRD_STI		0x10 | 
|  | 351 | #define ISACX_CMDRD_RRES	0x40 | 
|  | 352 | #define ISACX_CMDRD_RMC		0x80 | 
|  | 353 |  | 
|  | 354 | /* ISACX/IPACX _RSTAD (R) */ | 
|  | 355 | #define ISACX_RSTAD_TA		0x01 | 
|  | 356 | #define ISACX_RSTAD_CR		0x02 | 
|  | 357 | #define ISACX_RSTAD_SA0		0x04 | 
|  | 358 | #define ISACX_RSTAD_SA1		0x08 | 
|  | 359 | #define ISACX_RSTAD_RAB		0x10 | 
|  | 360 | #define ISACX_RSTAD_CRC		0x20 | 
|  | 361 | #define ISACX_RSTAD_RDO		0x40 | 
|  | 362 | #define ISACX_RSTAD_VFR		0x80 | 
|  | 363 |  | 
|  | 364 | /* ISACX/IPACX _CIR0 (R) */ | 
|  | 365 | #define ISACX_CIR0_BAS		0x01 | 
|  | 366 | #define ISACX_CIR0_SG		0x08 | 
|  | 367 | #define ISACX_CIR0_CIC1		0x08 | 
|  | 368 | #define ISACX_CIR0_CIC0		0x08 | 
|  | 369 |  | 
|  | 370 | /* B-channel registers */ | 
|  | 371 | #define IPACX_OFF_ICA		0x70 | 
|  | 372 | #define IPACX_OFF_ICB		0x80 | 
|  | 373 |  | 
|  | 374 | /* ICA: IPACX_OFF_ICA + Reg ICB: IPACX_OFF_ICB + Reg */ | 
|  | 375 |  | 
|  | 376 | #define IPACX_ISTAB		0x00    /* RD	*/ | 
|  | 377 | #define IPACX_MASKB		0x00	/* WR	*/ | 
|  | 378 | #define IPACX_STARB		0x01	/* RD	*/ | 
|  | 379 | #define IPACX_CMDRB		0x01	/* WR	*/ | 
|  | 380 | #define IPACX_MODEB		0x02	/* R/W	*/ | 
|  | 381 | #define IPACX_EXMB		0x03	/* R/W	*/ | 
|  | 382 | #define IPACX_RAH1		0x05	/* WR	*/ | 
|  | 383 | #define IPACX_RAH2		0x06	/* WR	*/ | 
|  | 384 | #define IPACX_RBCLB		0x06	/* RD	*/ | 
|  | 385 | #define IPACX_RBCHB		0x07	/* RD	*/ | 
|  | 386 | #define IPACX_RAL1		0x07	/* WR	*/ | 
|  | 387 | #define IPACX_RAL2		0x08	/* WR	*/ | 
|  | 388 | #define IPACX_RSTAB		0x08	/* RD	*/ | 
|  | 389 | #define IPACX_TMB		0x09	/* R/W	*/ | 
|  | 390 | #define IPACX_RFIFOB		0x0A	/* RD	*/ | 
|  | 391 | #define IPACX_XFIFOB		0x0A	/* WR	*/ | 
|  | 392 |  | 
|  | 393 | /* IPACX_ISTAB / IPACX_MASKB bits */ | 
|  | 394 | #define IPACX_B_XDU		0x04 | 
|  | 395 | #define IPACX_B_XPR		0x10 | 
|  | 396 | #define IPACX_B_RFO		0x20 | 
|  | 397 | #define IPACX_B_RPF		0x40 | 
|  | 398 | #define IPACX_B_RME		0x80 | 
|  | 399 |  | 
|  | 400 | #define IPACX_B_ON		0x0B | 
|  | 401 |  | 
|  | 402 | extern int mISDNisac_init(struct isac_hw *, void *); | 
|  | 403 | extern irqreturn_t mISDNisac_irq(struct isac_hw *, u8); | 
|  | 404 | extern u32 mISDNipac_init(struct ipac_hw *, void *); | 
|  | 405 | extern irqreturn_t mISDNipac_irq(struct ipac_hw *, int); |