• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-WNDR4500-V1.0.1.40_1.0.68/src/linux/linux-2.6/drivers/isdn/hisax/

Lines Matching refs:cs

78 ReadISAC(struct IsdnCardState *cs, u_char offset)
83 outb(idx, cs->hw.avm.cfg_reg + 4);
84 val = inb(cs->hw.avm.isac + (offset & 0xf));
89 WriteISAC(struct IsdnCardState *cs, u_char offset, u_char value)
93 outb(idx, cs->hw.avm.cfg_reg + 4);
94 outb(value, cs->hw.avm.isac + (offset & 0xf));
98 ReadISACfifo(struct IsdnCardState *cs, u_char * data, int size)
100 outb(AVM_ISAC_FIFO, cs->hw.avm.cfg_reg + 4);
101 insb(cs->hw.avm.isac, data, size);
105 WriteISACfifo(struct IsdnCardState *cs, u_char * data, int size)
107 outb(AVM_ISAC_FIFO, cs->hw.avm.cfg_reg + 4);
108 outsb(cs->hw.avm.isac, data, size);
112 ReadHDLCPCI(struct IsdnCardState *cs, int chan, u_char offset)
117 outl(idx, cs->hw.avm.cfg_reg + 4);
118 val = inl(cs->hw.avm.isac + offset);
123 WriteHDLCPCI(struct IsdnCardState *cs, int chan, u_char offset, u_int value)
127 outl(idx, cs->hw.avm.cfg_reg + 4);
128 outl(value, cs->hw.avm.isac + offset);
132 ReadHDLCPnP(struct IsdnCardState *cs, int chan, u_char offset)
137 outb(idx, cs->hw.avm.cfg_reg + 4);
138 val = inb(cs->hw.avm.isac + offset);
143 WriteHDLCPnP(struct IsdnCardState *cs, int chan, u_char offset, u_char value)
147 outb(idx, cs->hw.avm.cfg_reg + 4);
148 outb(value, cs->hw.avm.isac + offset);
152 ReadHDLC_s(struct IsdnCardState *cs, int chan, u_char offset)
154 return(0xff & ReadHDLCPCI(cs, chan, offset));
158 WriteHDLC_s(struct IsdnCardState *cs, int chan, u_char offset, u_char value)
160 WriteHDLCPCI(cs, chan, offset, value);
164 struct BCState *Sel_BCS(struct IsdnCardState *cs, int channel)
166 if (cs->bcs[0].mode && (cs->bcs[0].channel == channel))
167 return(&cs->bcs[0]);
168 else if (cs->bcs[1].mode && (cs->bcs[1].channel == channel))
169 return(&cs->bcs[1]);
177 if (bcs->cs->debug & L1_DEB_HSCX)
178 debugl1(bcs->cs, "hdlc %c wr%x ctrl %x",
180 if (bcs->cs->subtyp == AVM_FRITZ_PCI) {
181 WriteHDLCPCI(bcs->cs, bcs->channel, HDLC_STATUS, bcs->hw.hdlc.ctrl.ctrl);
184 WriteHDLCPnP(bcs->cs, bcs->channel, HDLC_STATUS + 2,
187 WriteHDLCPnP(bcs->cs, bcs->channel, HDLC_STATUS + 1,
190 WriteHDLCPnP(bcs->cs, bcs->channel, HDLC_STATUS,
198 struct IsdnCardState *cs = bcs->cs;
201 if (cs->debug & L1_DEB_HSCX)
202 debugl1(cs, "hdlc %c mode %d --> %d ichan %d --> %d",
251 struct IsdnCardState *cs = bcs->cs;
253 if ((cs->debug & L1_DEB_HSCX) && !(cs->debug & L1_DEB_HSCX_FIFO))
254 debugl1(cs, "hdlc_empty_fifo %d", count);
256 if (cs->debug & L1_DEB_WARN)
257 debugl1(cs, "hdlc_empty_fifo: incoming packet too large");
263 if (cs->subtyp == AVM_FRITZ_PCI) {
264 outl(idx, cs->hw.avm.cfg_reg + 4);
268 *ptr++ = in_le32((unsigned *)(cs->hw.avm.isac +_IO_BASE));
270 *ptr++ = in_be32((unsigned *)(cs->hw.avm.isac +_IO_BASE));
273 *ptr++ = inl(cs->hw.avm.isac);
278 outb(idx, cs->hw.avm.cfg_reg + 4);
280 *p++ = inb(cs->hw.avm.isac);
284 if (cs->debug & L1_DEB_HSCX_FIFO) {
287 if (cs->subtyp == AVM_FRITZ_PNP)
292 debugl1(cs, bcs->blog);
299 struct IsdnCardState *cs = bcs->cs;
305 if ((cs->debug & L1_DEB_HSCX) && !(cs->debug & L1_DEB_HSCX_FIFO))
306 debugl1(cs, "hdlc_fill_fifo");
320 if ((cs->debug & L1_DEB_HSCX) && !(cs->debug & L1_DEB_HSCX_FIFO))
321 debugl1(cs, "hdlc_fill_fifo %d/%ld", count, bcs->tx_skb->len);
329 if (cs->subtyp == AVM_FRITZ_PCI) {
333 out_le32((unsigned *)(cs->hw.avm.isac +_IO_BASE), *ptr++);
335 out_be32((unsigned *)(cs->hw.avm.isac +_IO_BASE), *ptr++);
338 outl(*ptr++, cs->hw.avm.isac);
344 outb(*p++, cs->hw.avm.isac);
348 if (cs->debug & L1_DEB_HSCX_FIFO) {
351 if (cs->subtyp == AVM_FRITZ_PNP)
356 debugl1(cs, bcs->blog);
365 if (bcs->cs->debug & L1_DEB_HSCX)
366 debugl1(bcs->cs, "ch%d stat %#x", bcs->channel, stat);
369 if (bcs->cs->debug & L1_DEB_HSCX)
370 debugl1(bcs->cs, "RDO");
372 debugl1(bcs->cs, "ch%d stat %#x", bcs->channel, stat);
396 if (bcs->cs->debug & L1_DEB_HSCX)
397 debugl1(bcs->cs, "invalid frame");
399 debugl1(bcs->cs, "ch%d invalid frame %#x", bcs->channel, stat);
413 if (bcs->cs->debug & L1_DEB_WARN)
414 debugl1(bcs->cs, "ch%d XDU", bcs->channel);
415 } else if (bcs->cs->debug & L1_DEB_WARN)
416 debugl1(bcs->cs, "ch%d XDU without skb", bcs->channel);
454 HDLC_irq_main(struct IsdnCardState *cs)
459 if (cs->subtyp == AVM_FRITZ_PCI) {
460 stat = ReadHDLCPCI(cs, 0, HDLC_STATUS);
462 stat = ReadHDLCPnP(cs, 0, HDLC_STATUS);
464 stat |= (ReadHDLCPnP(cs, 0, HDLC_STATUS+1))<<8;
467 if (!(bcs = Sel_BCS(cs, 0))) {
468 if (cs->debug)
469 debugl1(cs, "hdlc spurious channel 0 IRQ");
473 if (cs->subtyp == AVM_FRITZ_PCI) {
474 stat = ReadHDLCPCI(cs, 1, HDLC_STATUS);
476 stat = ReadHDLCPnP(cs, 1, HDLC_STATUS);
478 stat |= (ReadHDLCPnP(cs, 1, HDLC_STATUS+1))<<8;
481 if (!(bcs = Sel_BCS(cs, 1))) {
482 if (cs->debug)
483 debugl1(cs, "hdlc spurious channel 1 IRQ");
498 spin_lock_irqsave(&bcs->cs->lock, flags);
505 bcs->cs->BC_Send_Data(bcs);
507 spin_unlock_irqrestore(&bcs->cs->lock, flags);
510 spin_lock_irqsave(&bcs->cs->lock, flags);
517 bcs->cs->BC_Send_Data(bcs);
519 spin_unlock_irqrestore(&bcs->cs->lock, flags);
529 spin_lock_irqsave(&bcs->cs->lock, flags);
532 spin_unlock_irqrestore(&bcs->cs->lock, flags);
539 spin_lock_irqsave(&bcs->cs->lock, flags);
543 spin_unlock_irqrestore(&bcs->cs->lock, flags);
569 open_hdlcstate(struct IsdnCardState *cs, struct BCState *bcs)
612 inithdlc(struct IsdnCardState *cs)
614 cs->bcs[0].BC_SetStack = setstack_hdlc;
615 cs->bcs[1].BC_SetStack = setstack_hdlc;
616 cs->bcs[0].BC_Close = close_hdlcstate;
617 cs->bcs[1].BC_Close = close_hdlcstate;
618 modehdlc(cs->bcs, -1, 0);
619 modehdlc(cs->bcs + 1, -1, 1);
625 struct IsdnCardState *cs = dev_id;
630 spin_lock_irqsave(&cs->lock, flags);
631 sval = inb(cs->hw.avm.cfg_reg + 2);
634 spin_unlock_irqrestore(&cs->lock, flags);
638 val = ReadISAC(cs, ISAC_ISTA);
639 isac_interrupt(cs, val);
642 HDLC_irq_main(cs);
644 WriteISAC(cs, ISAC_MASK, 0xFF);
645 WriteISAC(cs, ISAC_MASK, 0x0);
646 spin_unlock_irqrestore(&cs->lock, flags);
651 reset_avmpcipnp(struct IsdnCardState *cs)
654 outb(AVM_STATUS0_RESET | AVM_STATUS0_DIS_TIMER, cs->hw.avm.cfg_reg + 2);
656 outb(AVM_STATUS0_DIS_TIMER | AVM_STATUS0_RES_TIMER | AVM_STATUS0_ENA_IRQ, cs->hw.avm.cfg_reg + 2);
657 outb(AVM_STATUS1_ENA_IOM | cs->irq, cs->hw.avm.cfg_reg + 3);
659 printk(KERN_INFO "AVM PCI/PnP: S1 %x\n", inb(cs->hw.avm.cfg_reg + 3));
663 AVM_card_msg(struct IsdnCardState *cs, int mt, void *arg)
669 spin_lock_irqsave(&cs->lock, flags);
670 reset_avmpcipnp(cs);
671 spin_unlock_irqrestore(&cs->lock, flags);
674 outb(0, cs->hw.avm.cfg_reg + 2);
675 release_region(cs->hw.avm.cfg_reg, 32);
678 spin_lock_irqsave(&cs->lock, flags);
679 reset_avmpcipnp(cs);
680 clear_pending_isac_ints(cs);
681 initisac(cs);
682 inithdlc(cs);
684 cs->hw.avm.cfg_reg + 2);
685 WriteISAC(cs, ISAC_MASK, 0);
687 AVM_STATUS0_ENA_IRQ, cs->hw.avm.cfg_reg + 2);
689 WriteISAC(cs, ISAC_CMDR, 0x41);
690 spin_unlock_irqrestore(&cs->lock, flags);
709 struct IsdnCardState *cs = card->cs;
714 if (cs->typ != ISDN_CTYPE_FRITZPCI)
718 cs->hw.avm.cfg_reg = card->para[1];
719 cs->irq = card->para[0];
720 cs->subtyp = AVM_FRITZ_PNP;
741 cs->hw.avm.cfg_reg =
743 cs->irq = pnp_irq(pnp_avm_d, 0);
744 if (!cs->irq) {
748 if (!cs->hw.avm.cfg_reg) {
752 cs->subtyp = AVM_FRITZ_PNP;
765 cs->irq = dev_avm->irq;
766 if (!cs->irq) {
770 cs->hw.avm.cfg_reg = pci_resource_start(dev_avm, 1);
771 if (!cs->hw.avm.cfg_reg) {
775 cs->subtyp = AVM_FRITZ_PCI;
780 cs->irq_flags |= IRQF_SHARED;
786 cs->hw.avm.isac = cs->hw.avm.cfg_reg + 0x10;
787 if (!request_region(cs->hw.avm.cfg_reg, 32,
788 (cs->subtyp == AVM_FRITZ_PCI) ? "avm PCI" : "avm PnP")) {
792 cs->hw.avm.cfg_reg,
793 cs->hw.avm.cfg_reg + 31);
796 switch (cs->subtyp) {
798 val = inl(cs->hw.avm.cfg_reg);
802 cs->BC_Read_Reg = &ReadHDLC_s;
803 cs->BC_Write_Reg = &WriteHDLC_s;
806 val = inb(cs->hw.avm.cfg_reg);
807 ver = inb(cs->hw.avm.cfg_reg + 1);
809 cs->BC_Read_Reg = &ReadHDLCPnP;
810 cs->BC_Write_Reg = &WriteHDLCPnP;
813 printk(KERN_WARNING "AVM unknown subtype %d\n", cs->subtyp);
817 (cs->subtyp == AVM_FRITZ_PCI) ? "AVM Fritz!PCI" : "AVM Fritz!PnP",
818 cs->irq, cs->hw.avm.cfg_reg);
820 setup_isac(cs);
821 cs->readisac = &ReadISAC;
822 cs->writeisac = &WriteISAC;
823 cs->readisacfifo = &ReadISACfifo;
824 cs->writeisacfifo = &WriteISACfifo;
825 cs->BC_Send_Data = &hdlc_fill_fifo;
826 cs->cardmsg = &AVM_card_msg;
827 cs->irq_func = &avm_pcipnp_interrupt;
828 cs->writeisac(cs, ISAC_MASK, 0xFF);
829 ISACVersion(cs, (cs->subtyp == AVM_FRITZ_PCI) ? "AVM PCI:" : "AVM PnP:");