Lines Matching +full:cs +full:- +full:3

56 ReadISAC(struct IsdnCardState *cs, u_char offset)  in ReadISAC()  argument
58 return (readreg(cs->hw.teles3.isac, offset)); in ReadISAC()
62 WriteISAC(struct IsdnCardState *cs, u_char offset, u_char value) in WriteISAC() argument
64 writereg(cs->hw.teles3.isac, offset, value); in WriteISAC()
68 ReadISACfifo(struct IsdnCardState *cs, u_char * data, int size) in ReadISACfifo() argument
70 read_fifo(cs->hw.teles3.isacfifo, data, size); in ReadISACfifo()
74 WriteISACfifo(struct IsdnCardState *cs, u_char * data, int size) in WriteISACfifo() argument
76 write_fifo(cs->hw.teles3.isacfifo, data, size); in WriteISACfifo()
80 ReadHSCX(struct IsdnCardState *cs, int hscx, u_char offset) in ReadHSCX() argument
82 return (readreg(cs->hw.teles3.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.teles3.hscx[hscx], offset, value); in WriteHSCX()
95 #define READHSCX(cs, nr, reg) readreg(cs->hw.teles3.hscx[nr], reg) argument
96 #define WRITEHSCX(cs, nr, reg, data) writereg(cs->hw.teles3.hscx[nr], reg, data) argument
97 #define READHSCXFIFO(cs, nr, ptr, cnt) read_fifo(cs->hw.teles3.hscxfifo[nr], ptr, cnt) argument
98 #define WRITEHSCXFIFO(cs, nr, ptr, cnt) write_fifo(cs->hw.teles3.hscxfifo[nr], ptr, cnt) argument
106 struct IsdnCardState *cs = dev_id; in teles3_interrupt() local
111 spin_lock_irqsave(&cs->lock, flags); in teles3_interrupt()
112 val = readreg(cs->hw.teles3.hscx[1], HSCX_ISTA); in teles3_interrupt()
115 hscx_int_main(cs, val); in teles3_interrupt()
116 val = readreg(cs->hw.teles3.isac, ISAC_ISTA); in teles3_interrupt()
119 isac_interrupt(cs, val); in teles3_interrupt()
121 val = readreg(cs->hw.teles3.hscx[1], HSCX_ISTA); in teles3_interrupt()
123 if (cs->debug & L1_DEB_HSCX) in teles3_interrupt()
124 debugl1(cs, "HSCX IntStat after IntRoutine"); in teles3_interrupt()
127 val = readreg(cs->hw.teles3.isac, ISAC_ISTA); in teles3_interrupt()
129 if (cs->debug & L1_DEB_ISAC) in teles3_interrupt()
130 debugl1(cs, "ISAC IntStat after IntRoutine"); in teles3_interrupt()
135 writereg(cs->hw.teles3.hscx[0], HSCX_MASK, 0xFF); in teles3_interrupt()
136 writereg(cs->hw.teles3.hscx[1], HSCX_MASK, 0xFF); in teles3_interrupt()
137 writereg(cs->hw.teles3.isac, ISAC_MASK, 0xFF); in teles3_interrupt()
138 writereg(cs->hw.teles3.isac, ISAC_MASK, 0x0); in teles3_interrupt()
139 writereg(cs->hw.teles3.hscx[0], HSCX_MASK, 0x0); in teles3_interrupt()
140 writereg(cs->hw.teles3.hscx[1], HSCX_MASK, 0x0); in teles3_interrupt()
141 spin_unlock_irqrestore(&cs->lock, flags); in teles3_interrupt()
146 release_ioregs(struct IsdnCardState *cs, int mask) in release_ioregs() argument
149 release_region(cs->hw.teles3.isac + 32, 32); in release_ioregs()
151 release_region(cs->hw.teles3.hscx[0] + 32, 32); in release_ioregs()
153 release_region(cs->hw.teles3.hscx[1] + 32, 32); in release_ioregs()
157 release_io_teles3(struct IsdnCardState *cs) in release_io_teles3() argument
159 if (cs->typ == ISDN_CTYPE_TELESPCMCIA) { in release_io_teles3()
160 release_region(cs->hw.teles3.hscx[1], 96); in release_io_teles3()
162 if (cs->hw.teles3.cfg_reg) { in release_io_teles3()
163 if (cs->typ == ISDN_CTYPE_COMPAQ_ISA) { in release_io_teles3()
164 release_region(cs->hw.teles3.cfg_reg, 1); in release_io_teles3()
166 release_region(cs->hw.teles3.cfg_reg, 8); in release_io_teles3()
169 release_ioregs(cs, 0x7); in release_io_teles3()
174 reset_teles3(struct IsdnCardState *cs) in reset_teles3() argument
178 if (cs->typ != ISDN_CTYPE_TELESPCMCIA) { in reset_teles3()
179 if ((cs->hw.teles3.cfg_reg) && (cs->typ != ISDN_CTYPE_COMPAQ_ISA)) { in reset_teles3()
180 switch (cs->irq) { in reset_teles3()
185 case 3: in reset_teles3()
209 byteout(cs->hw.teles3.cfg_reg + 4, irqcfg); in reset_teles3()
211 byteout(cs->hw.teles3.cfg_reg + 4, irqcfg | 1); in reset_teles3()
213 } else if (cs->typ == ISDN_CTYPE_COMPAQ_ISA) { in reset_teles3()
214 byteout(cs->hw.teles3.cfg_reg, 0xff); in reset_teles3()
216 byteout(cs->hw.teles3.cfg_reg, 0x00); in reset_teles3()
220 byteout(cs->hw.teles3.isac + 0x3c, 0); in reset_teles3()
222 byteout(cs->hw.teles3.isac + 0x3c, 1); in reset_teles3()
230 Teles_card_msg(struct IsdnCardState *cs, int mt, void *arg) in Teles_card_msg() argument
236 spin_lock_irqsave(&cs->lock, flags); in Teles_card_msg()
237 reset_teles3(cs); in Teles_card_msg()
238 spin_unlock_irqrestore(&cs->lock, flags); in Teles_card_msg()
241 release_io_teles3(cs); in Teles_card_msg()
244 spin_lock_irqsave(&cs->lock, flags); in Teles_card_msg()
245 inithscxisac(cs, 3); in Teles_card_msg()
246 spin_unlock_irqrestore(&cs->lock, flags); in Teles_card_msg()
277 struct IsdnCardState *cs = card->cs; in setup_teles3() local
282 if ((cs->typ != ISDN_CTYPE_16_3) && (cs->typ != ISDN_CTYPE_PNP) in setup_teles3()
283 && (cs->typ != ISDN_CTYPE_TELESPCMCIA) && (cs->typ != ISDN_CTYPE_COMPAQ_ISA)) in setup_teles3()
287 if (!card->para[1] && isapnp_present()) { in setup_teles3()
289 while(ipid->card_vendor) { in setup_teles3()
290 if ((pnp_c = pnp_find_card(ipid->card_vendor, in setup_teles3()
291 ipid->card_device, pnp_c))) { in setup_teles3()
294 ipid->vendor, ipid->function, pnp_d))) { in setup_teles3()
298 (char *)ipid->driver_data); in setup_teles3()
306 card->para[3] = pnp_port_start(pnp_d, 2); in setup_teles3()
307 card->para[2] = pnp_port_start(pnp_d, 1); in setup_teles3()
308 card->para[1] = pnp_port_start(pnp_d, 0); in setup_teles3()
309 card->para[0] = pnp_irq(pnp_d, 0); in setup_teles3()
310 if (!card->para[0] || !card->para[1] || !card->para[2]) { in setup_teles3()
312 card->para[0], card->para[1], card->para[2]); in setup_teles3()
324 if (!ipid->card_vendor) { in setup_teles3()
330 if (cs->typ == ISDN_CTYPE_16_3) { in setup_teles3()
331 cs->hw.teles3.cfg_reg = card->para[1]; in setup_teles3()
332 switch (cs->hw.teles3.cfg_reg) { in setup_teles3()
336 cs->hw.teles3.cfg_reg |= 0xc00; in setup_teles3()
339 cs->hw.teles3.isac = cs->hw.teles3.cfg_reg - 0x420; in setup_teles3()
340 cs->hw.teles3.hscx[0] = cs->hw.teles3.cfg_reg - 0xc20; in setup_teles3()
341 cs->hw.teles3.hscx[1] = cs->hw.teles3.cfg_reg - 0x820; in setup_teles3()
342 } else if (cs->typ == ISDN_CTYPE_TELESPCMCIA) { in setup_teles3()
343 cs->hw.teles3.cfg_reg = 0; in setup_teles3()
344 cs->hw.teles3.hscx[0] = card->para[1] - 0x20; in setup_teles3()
345 cs->hw.teles3.hscx[1] = card->para[1]; in setup_teles3()
346 cs->hw.teles3.isac = card->para[1] + 0x20; in setup_teles3()
347 } else if (cs->typ == ISDN_CTYPE_COMPAQ_ISA) { in setup_teles3()
348 cs->hw.teles3.cfg_reg = card->para[3]; in setup_teles3()
349 cs->hw.teles3.isac = card->para[2] - 32; in setup_teles3()
350 cs->hw.teles3.hscx[0] = card->para[1] - 32; in setup_teles3()
351 cs->hw.teles3.hscx[1] = card->para[1]; in setup_teles3()
353 cs->hw.teles3.cfg_reg = 0; in setup_teles3()
354 cs->hw.teles3.isac = card->para[1] - 32; in setup_teles3()
355 cs->hw.teles3.hscx[0] = card->para[2] - 32; in setup_teles3()
356 cs->hw.teles3.hscx[1] = card->para[2]; in setup_teles3()
358 cs->irq = card->para[0]; in setup_teles3()
359 cs->hw.teles3.isacfifo = cs->hw.teles3.isac + 0x3e; in setup_teles3()
360 cs->hw.teles3.hscxfifo[0] = cs->hw.teles3.hscx[0] + 0x3e; in setup_teles3()
361 cs->hw.teles3.hscxfifo[1] = cs->hw.teles3.hscx[1] + 0x3e; in setup_teles3()
362 if (cs->typ == ISDN_CTYPE_TELESPCMCIA) { in setup_teles3()
363 if (!request_region(cs->hw.teles3.hscx[1], 96, "HiSax Teles PCMCIA")) { in setup_teles3()
365 "HiSax: %s ports %x-%x already in use\n", in setup_teles3()
366 CardType[cs->typ], in setup_teles3()
367 cs->hw.teles3.hscx[1], in setup_teles3()
368 cs->hw.teles3.hscx[1] + 96); in setup_teles3()
371 cs->irq_flags |= IRQF_SHARED; /* cardbus can share */ in setup_teles3()
373 if (cs->hw.teles3.cfg_reg) { in setup_teles3()
374 if (cs->typ == ISDN_CTYPE_COMPAQ_ISA) { in setup_teles3()
375 if (!request_region(cs->hw.teles3.cfg_reg, 1, "teles3 cfg")) { in setup_teles3()
378 CardType[card->typ], in setup_teles3()
379 cs->hw.teles3.cfg_reg); in setup_teles3()
383 if (!request_region(cs->hw.teles3.cfg_reg, 8, "teles3 cfg")) { in setup_teles3()
385 "HiSax: %s config port %x-%x already in use\n", in setup_teles3()
386 CardType[card->typ], in setup_teles3()
387 cs->hw.teles3.cfg_reg, in setup_teles3()
388 cs->hw.teles3.cfg_reg + 8); in setup_teles3()
393 if (!request_region(cs->hw.teles3.isac + 32, 32, "HiSax isac")) { in setup_teles3()
395 "HiSax: %s isac ports %x-%x already in use\n", in setup_teles3()
396 CardType[cs->typ], in setup_teles3()
397 cs->hw.teles3.isac + 32, in setup_teles3()
398 cs->hw.teles3.isac + 64); in setup_teles3()
399 if (cs->hw.teles3.cfg_reg) { in setup_teles3()
400 if (cs->typ == ISDN_CTYPE_COMPAQ_ISA) { in setup_teles3()
401 release_region(cs->hw.teles3.cfg_reg, 1); in setup_teles3()
403 release_region(cs->hw.teles3.cfg_reg, 8); in setup_teles3()
408 if (!request_region(cs->hw.teles3.hscx[0] + 32, 32, "HiSax hscx A")) { in setup_teles3()
410 "HiSax: %s hscx A ports %x-%x already in use\n", in setup_teles3()
411 CardType[cs->typ], in setup_teles3()
412 cs->hw.teles3.hscx[0] + 32, in setup_teles3()
413 cs->hw.teles3.hscx[0] + 64); in setup_teles3()
414 if (cs->hw.teles3.cfg_reg) { in setup_teles3()
415 if (cs->typ == ISDN_CTYPE_COMPAQ_ISA) { in setup_teles3()
416 release_region(cs->hw.teles3.cfg_reg, 1); in setup_teles3()
418 release_region(cs->hw.teles3.cfg_reg, 8); in setup_teles3()
421 release_ioregs(cs, 1); in setup_teles3()
424 if (!request_region(cs->hw.teles3.hscx[1] + 32, 32, "HiSax hscx B")) { in setup_teles3()
426 "HiSax: %s hscx B ports %x-%x already in use\n", in setup_teles3()
427 CardType[cs->typ], in setup_teles3()
428 cs->hw.teles3.hscx[1] + 32, in setup_teles3()
429 cs->hw.teles3.hscx[1] + 64); in setup_teles3()
430 if (cs->hw.teles3.cfg_reg) { in setup_teles3()
431 if (cs->typ == ISDN_CTYPE_COMPAQ_ISA) { in setup_teles3()
432 release_region(cs->hw.teles3.cfg_reg, 1); in setup_teles3()
434 release_region(cs->hw.teles3.cfg_reg, 8); in setup_teles3()
437 release_ioregs(cs, 3); in setup_teles3()
441 if ((cs->hw.teles3.cfg_reg) && (cs->typ != ISDN_CTYPE_COMPAQ_ISA)) { in setup_teles3()
442 if ((val = bytein(cs->hw.teles3.cfg_reg + 0)) != 0x51) { in setup_teles3()
444 cs->hw.teles3.cfg_reg + 0, val); in setup_teles3()
445 release_io_teles3(cs); in setup_teles3()
448 if ((val = bytein(cs->hw.teles3.cfg_reg + 1)) != 0x93) { in setup_teles3()
450 cs->hw.teles3.cfg_reg + 1, val); in setup_teles3()
451 release_io_teles3(cs); in setup_teles3()
454 val = bytein(cs->hw.teles3.cfg_reg + 2);/* 0x1e=without AB in setup_teles3()
459 * 0x46 16.3 with AB + Video (Teles-Vision) in setup_teles3()
463 cs->hw.teles3.cfg_reg + 2, val); in setup_teles3()
464 release_io_teles3(cs); in setup_teles3()
470 CardType[cs->typ], cs->irq, in setup_teles3()
471 cs->hw.teles3.isac + 32, cs->hw.teles3.cfg_reg); in setup_teles3()
474 cs->hw.teles3.hscx[0] + 32, cs->hw.teles3.hscx[1] + 32); in setup_teles3()
476 setup_isac(cs); in setup_teles3()
477 if (reset_teles3(cs)) { in setup_teles3()
479 release_io_teles3(cs); in setup_teles3()
482 cs->readisac = &ReadISAC; in setup_teles3()
483 cs->writeisac = &WriteISAC; in setup_teles3()
484 cs->readisacfifo = &ReadISACfifo; in setup_teles3()
485 cs->writeisacfifo = &WriteISACfifo; in setup_teles3()
486 cs->BC_Read_Reg = &ReadHSCX; in setup_teles3()
487 cs->BC_Write_Reg = &WriteHSCX; in setup_teles3()
488 cs->BC_Send_Data = &hscx_fill_fifo; in setup_teles3()
489 cs->cardmsg = &Teles_card_msg; in setup_teles3()
490 cs->irq_func = &teles3_interrupt; in setup_teles3()
491 ISACVersion(cs, "Teles3:"); in setup_teles3()
492 if (HscxVersion(cs, "Teles3:")) { in setup_teles3()
495 release_io_teles3(cs); in setup_teles3()