Lines Matching refs:cs
56 ReadISAC(struct IsdnCardState *cs, u_char offset) in ReadISAC() argument
58 return (readreg(cs->hw.avm.isac, offset)); in ReadISAC()
62 WriteISAC(struct IsdnCardState *cs, u_char offset, u_char value) in WriteISAC() argument
64 writereg(cs->hw.avm.isac, offset, value); in WriteISAC()
68 ReadISACfifo(struct IsdnCardState *cs, u_char *data, int size) in ReadISACfifo() argument
70 read_fifo(cs->hw.avm.isacfifo, data, size); in ReadISACfifo()
74 WriteISACfifo(struct IsdnCardState *cs, u_char *data, int size) in WriteISACfifo() argument
76 write_fifo(cs->hw.avm.isacfifo, data, size); in WriteISACfifo()
80 ReadHSCX(struct IsdnCardState *cs, int hscx, u_char offset) in ReadHSCX() argument
82 return (readreg(cs->hw.avm.hscx[hscx], offset)); in ReadHSCX()
86 WriteHSCX(struct IsdnCardState *cs, int hscx, u_char offset, u_char value) in WriteHSCX() argument
88 writereg(cs->hw.avm.hscx[hscx], offset, value); in WriteHSCX()
95 #define READHSCX(cs, nr, reg) readreg(cs->hw.avm.hscx[nr], reg) argument
96 #define WRITEHSCX(cs, nr, reg, data) writereg(cs->hw.avm.hscx[nr], reg, data) argument
97 #define READHSCXFIFO(cs, nr, ptr, cnt) read_fifo(cs->hw.avm.hscxfifo[nr], ptr, cnt) argument
98 #define WRITEHSCXFIFO(cs, nr, ptr, cnt) write_fifo(cs->hw.avm.hscxfifo[nr], ptr, cnt) argument
105 struct IsdnCardState *cs = dev_id; in avm_a1_interrupt() local
109 spin_lock_irqsave(&cs->lock, flags); in avm_a1_interrupt()
110 while (((sval = bytein(cs->hw.avm.cfg_reg)) & 0xf) != 0x7) { in avm_a1_interrupt()
112 byteout(cs->hw.avm.cfg_reg, 0x1E); in avm_a1_interrupt()
113 sval = bytein(cs->hw.avm.cfg_reg); in avm_a1_interrupt()
114 } else if (cs->debug & L1_DEB_INTSTAT) in avm_a1_interrupt()
115 debugl1(cs, "avm IntStatus %x", sval); in avm_a1_interrupt()
117 val = readreg(cs->hw.avm.hscx[1], HSCX_ISTA); in avm_a1_interrupt()
119 hscx_int_main(cs, val); in avm_a1_interrupt()
122 val = readreg(cs->hw.avm.isac, ISAC_ISTA); in avm_a1_interrupt()
124 isac_interrupt(cs, val); in avm_a1_interrupt()
127 writereg(cs->hw.avm.hscx[0], HSCX_MASK, 0xFF); in avm_a1_interrupt()
128 writereg(cs->hw.avm.hscx[1], HSCX_MASK, 0xFF); in avm_a1_interrupt()
129 writereg(cs->hw.avm.isac, ISAC_MASK, 0xFF); in avm_a1_interrupt()
130 writereg(cs->hw.avm.isac, ISAC_MASK, 0x0); in avm_a1_interrupt()
131 writereg(cs->hw.avm.hscx[0], HSCX_MASK, 0x0); in avm_a1_interrupt()
132 writereg(cs->hw.avm.hscx[1], HSCX_MASK, 0x0); in avm_a1_interrupt()
133 spin_unlock_irqrestore(&cs->lock, flags); in avm_a1_interrupt()
138 release_ioregs(struct IsdnCardState *cs, int mask) in release_ioregs() argument
140 release_region(cs->hw.avm.cfg_reg, 8); in release_ioregs()
142 release_region(cs->hw.avm.isac + 32, 32); in release_ioregs()
144 release_region(cs->hw.avm.isacfifo, 1); in release_ioregs()
146 release_region(cs->hw.avm.hscx[0] + 32, 32); in release_ioregs()
148 release_region(cs->hw.avm.hscxfifo[0], 1); in release_ioregs()
150 release_region(cs->hw.avm.hscx[1] + 32, 32); in release_ioregs()
152 release_region(cs->hw.avm.hscxfifo[1], 1); in release_ioregs()
156 AVM_card_msg(struct IsdnCardState *cs, int mt, void *arg) in AVM_card_msg() argument
164 release_ioregs(cs, 0x3f); in AVM_card_msg()
167 spin_lock_irqsave(&cs->lock, flags); in AVM_card_msg()
168 inithscxisac(cs, 1); in AVM_card_msg()
169 byteout(cs->hw.avm.cfg_reg, 0x16); in AVM_card_msg()
170 byteout(cs->hw.avm.cfg_reg, 0x1E); in AVM_card_msg()
171 inithscxisac(cs, 2); in AVM_card_msg()
172 spin_unlock_irqrestore(&cs->lock, flags); in AVM_card_msg()
183 struct IsdnCardState *cs = card->cs; in setup_avm_a1() local
188 if (cs->typ != ISDN_CTYPE_A1) in setup_avm_a1()
191 cs->hw.avm.cfg_reg = card->para[1] + 0x1800; in setup_avm_a1()
192 cs->hw.avm.isac = card->para[1] + 0x1400 - 0x20; in setup_avm_a1()
193 cs->hw.avm.hscx[0] = card->para[1] + 0x400 - 0x20; in setup_avm_a1()
194 cs->hw.avm.hscx[1] = card->para[1] + 0xc00 - 0x20; in setup_avm_a1()
195 cs->hw.avm.isacfifo = card->para[1] + 0x1000; in setup_avm_a1()
196 cs->hw.avm.hscxfifo[0] = card->para[1]; in setup_avm_a1()
197 cs->hw.avm.hscxfifo[1] = card->para[1] + 0x800; in setup_avm_a1()
198 cs->irq = card->para[0]; in setup_avm_a1()
199 if (!request_region(cs->hw.avm.cfg_reg, 8, "avm cfg")) { in setup_avm_a1()
202 cs->hw.avm.cfg_reg, in setup_avm_a1()
203 cs->hw.avm.cfg_reg + 8); in setup_avm_a1()
206 if (!request_region(cs->hw.avm.isac + 32, 32, "HiSax isac")) { in setup_avm_a1()
209 cs->hw.avm.isac + 32, in setup_avm_a1()
210 cs->hw.avm.isac + 64); in setup_avm_a1()
211 release_ioregs(cs, 0); in setup_avm_a1()
214 if (!request_region(cs->hw.avm.isacfifo, 1, "HiSax isac fifo")) { in setup_avm_a1()
217 cs->hw.avm.isacfifo); in setup_avm_a1()
218 release_ioregs(cs, 1); in setup_avm_a1()
221 if (!request_region(cs->hw.avm.hscx[0] + 32, 32, "HiSax hscx A")) { in setup_avm_a1()
224 cs->hw.avm.hscx[0] + 32, in setup_avm_a1()
225 cs->hw.avm.hscx[0] + 64); in setup_avm_a1()
226 release_ioregs(cs, 3); in setup_avm_a1()
229 if (!request_region(cs->hw.avm.hscxfifo[0], 1, "HiSax hscx A fifo")) { in setup_avm_a1()
232 cs->hw.avm.hscxfifo[0]); in setup_avm_a1()
233 release_ioregs(cs, 7); in setup_avm_a1()
236 if (!request_region(cs->hw.avm.hscx[1] + 32, 32, "HiSax hscx B")) { in setup_avm_a1()
239 cs->hw.avm.hscx[1] + 32, in setup_avm_a1()
240 cs->hw.avm.hscx[1] + 64); in setup_avm_a1()
241 release_ioregs(cs, 0xf); in setup_avm_a1()
244 if (!request_region(cs->hw.avm.hscxfifo[1], 1, "HiSax hscx B fifo")) { in setup_avm_a1()
247 cs->hw.avm.hscxfifo[1]); in setup_avm_a1()
248 release_ioregs(cs, 0x1f); in setup_avm_a1()
251 byteout(cs->hw.avm.cfg_reg, 0x0); in setup_avm_a1()
253 byteout(cs->hw.avm.cfg_reg, 0x1); in setup_avm_a1()
255 byteout(cs->hw.avm.cfg_reg, 0x0); in setup_avm_a1()
257 val = cs->irq; in setup_avm_a1()
260 byteout(cs->hw.avm.cfg_reg + 1, val); in setup_avm_a1()
262 byteout(cs->hw.avm.cfg_reg, 0x0); in setup_avm_a1()
265 val = bytein(cs->hw.avm.cfg_reg); in setup_avm_a1()
267 cs->hw.avm.cfg_reg, val); in setup_avm_a1()
268 val = bytein(cs->hw.avm.cfg_reg + 3); in setup_avm_a1()
270 cs->hw.avm.cfg_reg + 3, val); in setup_avm_a1()
271 val = bytein(cs->hw.avm.cfg_reg + 2); in setup_avm_a1()
273 cs->hw.avm.cfg_reg + 2, val); in setup_avm_a1()
274 val = bytein(cs->hw.avm.cfg_reg); in setup_avm_a1()
276 cs->hw.avm.cfg_reg, val); in setup_avm_a1()
279 cs->irq, in setup_avm_a1()
280 cs->hw.avm.cfg_reg); in setup_avm_a1()
283 cs->hw.avm.isac + 32, cs->hw.avm.isacfifo); in setup_avm_a1()
286 cs->hw.avm.hscx[0] + 32, cs->hw.avm.hscxfifo[0], in setup_avm_a1()
287 cs->hw.avm.hscx[1] + 32, cs->hw.avm.hscxfifo[1]); in setup_avm_a1()
289 cs->readisac = &ReadISAC; in setup_avm_a1()
290 cs->writeisac = &WriteISAC; in setup_avm_a1()
291 cs->readisacfifo = &ReadISACfifo; in setup_avm_a1()
292 cs->writeisacfifo = &WriteISACfifo; in setup_avm_a1()
293 cs->BC_Read_Reg = &ReadHSCX; in setup_avm_a1()
294 cs->BC_Write_Reg = &WriteHSCX; in setup_avm_a1()
295 cs->BC_Send_Data = &hscx_fill_fifo; in setup_avm_a1()
296 setup_isac(cs); in setup_avm_a1()
297 cs->cardmsg = &AVM_card_msg; in setup_avm_a1()
298 cs->irq_func = &avm_a1_interrupt; in setup_avm_a1()
299 ISACVersion(cs, "AVM A1:"); in setup_avm_a1()
300 if (HscxVersion(cs, "AVM A1:")) { in setup_avm_a1()
303 release_ioregs(cs, 0x3f); in setup_avm_a1()