Lines Matching refs:cs
22 WaitForBusy(struct IsdnCardState *cs) in WaitForBusy() argument
27 while (!(cs->BC_Read_Reg(cs, HFC_STATUS, 0) & HFC_BUSY) && to) { in WaitForBusy()
28 val = cs->BC_Read_Reg(cs, HFC_DATA, HFC_CIP | HFC_F2 | in WaitForBusy()
29 (cs->hw.hfc.cip & 3)); in WaitForBusy()
41 WaitNoBusy(struct IsdnCardState *cs) in WaitNoBusy() argument
45 while ((cs->BC_Read_Reg(cs, HFC_STATUS, 0) & HFC_BUSY) && to) { in WaitNoBusy()
62 return (bcs->cs->hw.hfc.fifosize); in GetFreeFifoBytes()
65 s += bcs->cs->hw.hfc.fifosize; in GetFreeFifoBytes()
66 s = bcs->cs->hw.hfc.fifosize - s; in GetFreeFifoBytes()
75 WaitNoBusy(bcs->cs); in ReadZReg()
76 val = 256 * bcs->cs->BC_Read_Reg(bcs->cs, HFC_DATA, reg | HFC_CIP | HFC_Z_HIGH); in ReadZReg()
77 WaitNoBusy(bcs->cs); in ReadZReg()
78 val += bcs->cs->BC_Read_Reg(bcs->cs, HFC_DATA, reg | HFC_CIP | HFC_Z_LOW); in ReadZReg()
85 struct IsdnCardState *cs = bcs->cs; in hfc_clear_fifo() local
90 if ((cs->debug & L1_DEB_HSCX) && !(cs->debug & L1_DEB_HSCX_FIFO)) in hfc_clear_fifo()
91 debugl1(cs, "hfc_clear_fifo"); in hfc_clear_fifo()
93 if ((cip & 0xc3) != (cs->hw.hfc.cip & 0xc3)) { in hfc_clear_fifo()
94 cs->BC_Write_Reg(cs, HFC_STATUS, cip, cip); in hfc_clear_fifo()
95 WaitForBusy(cs); in hfc_clear_fifo()
97 WaitNoBusy(cs); in hfc_clear_fifo()
98 f1 = cs->BC_Read_Reg(cs, HFC_DATA, cip); in hfc_clear_fifo()
100 WaitNoBusy(cs); in hfc_clear_fifo()
101 f2 = cs->BC_Read_Reg(cs, HFC_DATA, cip); in hfc_clear_fifo()
106 if (cs->debug & L1_DEB_HSCX) in hfc_clear_fifo()
107 debugl1(cs, "hfc clear %d f1(%d) f2(%d)", in hfc_clear_fifo()
111 rcnt += cs->hw.hfc.fifosize; in hfc_clear_fifo()
114 if (cs->debug & L1_DEB_HSCX) in hfc_clear_fifo()
115 debugl1(cs, "hfc clear %d z1(%x) z2(%x) cnt(%d)", in hfc_clear_fifo()
119 while ((idx < rcnt) && WaitNoBusy(cs)) { in hfc_clear_fifo()
120 cs->BC_Read_Reg(cs, HFC_DATA_NODEB, cip); in hfc_clear_fifo()
124 WaitNoBusy(cs); in hfc_clear_fifo()
125 cs->BC_Read_Reg(cs, HFC_DATA, HFC_CIP | HFC_F2_INC | HFC_REC | in hfc_clear_fifo()
127 WaitForBusy(cs); in hfc_clear_fifo()
130 WaitNoBusy(cs); in hfc_clear_fifo()
131 f1 = cs->BC_Read_Reg(cs, HFC_DATA, cip); in hfc_clear_fifo()
133 WaitNoBusy(cs); in hfc_clear_fifo()
134 f2 = cs->BC_Read_Reg(cs, HFC_DATA, cip); in hfc_clear_fifo()
148 struct IsdnCardState *cs = bcs->cs; in hfc_empty_fifo() local
153 if ((cs->debug & L1_DEB_HSCX) && !(cs->debug & L1_DEB_HSCX_FIFO)) in hfc_empty_fifo()
154 debugl1(cs, "hfc_empty_fifo"); in hfc_empty_fifo()
157 if (cs->debug & L1_DEB_WARN) in hfc_empty_fifo()
158 debugl1(cs, "hfc_empty_fifo: incoming packet too large"); in hfc_empty_fifo()
160 while ((idx++ < count) && WaitNoBusy(cs)) in hfc_empty_fifo()
161 cs->BC_Read_Reg(cs, HFC_DATA_NODEB, cip); in hfc_empty_fifo()
162 WaitNoBusy(cs); in hfc_empty_fifo()
163 stat = cs->BC_Read_Reg(cs, HFC_DATA, HFC_CIP | HFC_F2_INC | HFC_REC | in hfc_empty_fifo()
165 WaitForBusy(cs); in hfc_empty_fifo()
169 if (cs->debug & L1_DEB_WARN) in hfc_empty_fifo()
170 debugl1(cs, "hfc_empty_fifo: incoming packet too small"); in hfc_empty_fifo()
172 while ((idx++ < count) && WaitNoBusy(cs)) in hfc_empty_fifo()
173 cs->BC_Read_Reg(cs, HFC_DATA_NODEB, cip); in hfc_empty_fifo()
174 WaitNoBusy(cs); in hfc_empty_fifo()
175 stat = cs->BC_Read_Reg(cs, HFC_DATA, HFC_CIP | HFC_F2_INC | HFC_REC | in hfc_empty_fifo()
177 WaitForBusy(cs); in hfc_empty_fifo()
193 while ((idx < count) && WaitNoBusy(cs)) { in hfc_empty_fifo()
194 *ptr++ = cs->BC_Read_Reg(cs, HFC_DATA_NODEB, cip); in hfc_empty_fifo()
198 debugl1(cs, "RFIFO BUSY error"); in hfc_empty_fifo()
202 WaitNoBusy(cs); in hfc_empty_fifo()
203 stat = cs->BC_Read_Reg(cs, HFC_DATA, HFC_CIP | HFC_F2_INC | HFC_REC | in hfc_empty_fifo()
205 WaitForBusy(cs); in hfc_empty_fifo()
210 WaitNoBusy(cs); in hfc_empty_fifo()
211 chksum = (cs->BC_Read_Reg(cs, HFC_DATA, cip) << 8); in hfc_empty_fifo()
212 WaitNoBusy(cs); in hfc_empty_fifo()
213 chksum += cs->BC_Read_Reg(cs, HFC_DATA, cip); in hfc_empty_fifo()
214 WaitNoBusy(cs); in hfc_empty_fifo()
215 stat = cs->BC_Read_Reg(cs, HFC_DATA, cip); in hfc_empty_fifo()
216 if (cs->debug & L1_DEB_HSCX) in hfc_empty_fifo()
217 debugl1(cs, "hfc_empty_fifo %d chksum %x stat %x", in hfc_empty_fifo()
220 debugl1(cs, "FIFO CRC error"); in hfc_empty_fifo()
227 WaitNoBusy(cs); in hfc_empty_fifo()
228 stat = cs->BC_Read_Reg(cs, HFC_DATA, HFC_CIP | HFC_F2_INC | HFC_REC | in hfc_empty_fifo()
230 WaitForBusy(cs); in hfc_empty_fifo()
239 struct IsdnCardState *cs = bcs->cs; in hfc_fill_fifo() local
251 if ((cip & 0xc3) != (cs->hw.hfc.cip & 0xc3)) { in hfc_fill_fifo()
252 cs->BC_Write_Reg(cs, HFC_STATUS, cip, cip); in hfc_fill_fifo()
253 WaitForBusy(cs); in hfc_fill_fifo()
255 WaitNoBusy(cs); in hfc_fill_fifo()
257 bcs->hw.hfc.f1 = cs->BC_Read_Reg(cs, HFC_DATA, cip); in hfc_fill_fifo()
259 WaitNoBusy(cs); in hfc_fill_fifo()
260 bcs->hw.hfc.f2 = cs->BC_Read_Reg(cs, HFC_DATA, cip); in hfc_fill_fifo()
262 if (cs->debug & L1_DEB_HSCX) in hfc_fill_fifo()
263 debugl1(cs, "hfc_fill_fifo %d f1(%d) f2(%d) z1(%x)", in hfc_fill_fifo()
270 if (cs->debug & L1_DEB_HSCX) in hfc_fill_fifo()
271 debugl1(cs, "hfc_fill_fifo more as 30 frames"); in hfc_fill_fifo()
277 WaitForBusy(cs); in hfc_fill_fifo()
282 count += cs->hw.hfc.fifosize; in hfc_fill_fifo()
284 if (cs->debug & L1_DEB_HSCX) in hfc_fill_fifo()
285 debugl1(cs, "hfc_fill_fifo %d count(%u/%d)", in hfc_fill_fifo()
289 if (cs->debug & L1_DEB_HSCX) in hfc_fill_fifo()
290 debugl1(cs, "hfc_fill_fifo no fifo mem"); in hfc_fill_fifo()
295 while ((idx < bcs->tx_skb->len) && WaitNoBusy(cs)) in hfc_fill_fifo()
296 cs->BC_Write_Reg(cs, HFC_DATA_NODEB, cip, bcs->tx_skb->data[idx++]); in hfc_fill_fifo()
298 debugl1(cs, "FIFO Send BUSY error"); in hfc_fill_fifo()
308 WaitForBusy(cs); in hfc_fill_fifo()
309 WaitNoBusy(cs); in hfc_fill_fifo()
310 cs->BC_Read_Reg(cs, HFC_DATA, HFC_CIP | HFC_F1_INC | HFC_SEND | HFC_CHANNEL(bcs->channel)); in hfc_fill_fifo()
328 struct IsdnCardState *cs = bcs->cs; in main_irq_hfc() local
337 if ((cip & 0xc3) != (cs->hw.hfc.cip & 0xc3)) { in main_irq_hfc()
338 cs->BC_Write_Reg(cs, HFC_STATUS, cip, cip); in main_irq_hfc()
339 WaitForBusy(cs); in main_irq_hfc()
341 WaitNoBusy(cs); in main_irq_hfc()
344 f1 = cs->BC_Read_Reg(cs, HFC_DATA, cip); in main_irq_hfc()
346 WaitNoBusy(cs); in main_irq_hfc()
347 f2 = cs->BC_Read_Reg(cs, HFC_DATA, cip); in main_irq_hfc()
349 if (cs->debug & L1_DEB_HSCX) in main_irq_hfc()
350 debugl1(cs, "hfc rec %d f1(%d) f2(%d)", in main_irq_hfc()
356 WaitForBusy(cs); in main_irq_hfc()
361 rcnt += cs->hw.hfc.fifosize; in main_irq_hfc()
364 if (cs->debug & L1_DEB_HSCX) in main_irq_hfc()
365 debugl1(cs, "hfc rec %d z1(%x) z2(%x) cnt(%d)", in main_irq_hfc()
401 struct IsdnCardState *cs = bcs->cs; in mode_hfc() local
403 if (cs->debug & L1_DEB_HSCX) in mode_hfc()
404 debugl1(cs, "HFC 2BS0 mode %d bchan %d/%d", in mode_hfc()
412 cs->hw.hfc.ctmt &= ~1; in mode_hfc()
413 cs->hw.hfc.isac_spcr &= ~0x03; in mode_hfc()
416 cs->hw.hfc.ctmt &= ~2; in mode_hfc()
417 cs->hw.hfc.isac_spcr &= ~0x0c; in mode_hfc()
421 cs->hw.hfc.ctmt &= ~(1 << bc); /* set HDLC mode */ in mode_hfc()
422 cs->BC_Write_Reg(cs, HFC_STATUS, cs->hw.hfc.ctmt, cs->hw.hfc.ctmt); in mode_hfc()
425 cs->hw.hfc.ctmt |= 1; in mode_hfc()
426 cs->hw.hfc.isac_spcr &= ~0x03; in mode_hfc()
427 cs->hw.hfc.isac_spcr |= 0x02; in mode_hfc()
429 cs->hw.hfc.ctmt |= 2; in mode_hfc()
430 cs->hw.hfc.isac_spcr &= ~0x0c; in mode_hfc()
431 cs->hw.hfc.isac_spcr |= 0x08; in mode_hfc()
436 cs->hw.hfc.ctmt &= ~1; in mode_hfc()
437 cs->hw.hfc.isac_spcr &= ~0x03; in mode_hfc()
438 cs->hw.hfc.isac_spcr |= 0x02; in mode_hfc()
440 cs->hw.hfc.ctmt &= ~2; in mode_hfc()
441 cs->hw.hfc.isac_spcr &= ~0x0c; in mode_hfc()
442 cs->hw.hfc.isac_spcr |= 0x08; in mode_hfc()
446 cs->BC_Write_Reg(cs, HFC_STATUS, cs->hw.hfc.ctmt, cs->hw.hfc.ctmt); in mode_hfc()
447 cs->writeisac(cs, ISAC_SPCR, cs->hw.hfc.isac_spcr); in mode_hfc()
461 spin_lock_irqsave(&bcs->cs->lock, flags); in hfc_l2l1()
467 bcs->cs->BC_Send_Data(bcs); in hfc_l2l1()
469 spin_unlock_irqrestore(&bcs->cs->lock, flags); in hfc_l2l1()
472 spin_lock_irqsave(&bcs->cs->lock, flags); in hfc_l2l1()
478 bcs->cs->BC_Send_Data(bcs); in hfc_l2l1()
480 spin_unlock_irqrestore(&bcs->cs->lock, flags); in hfc_l2l1()
490 spin_lock_irqsave(&bcs->cs->lock, flags); in hfc_l2l1()
493 spin_unlock_irqrestore(&bcs->cs->lock, flags); in hfc_l2l1()
500 spin_lock_irqsave(&bcs->cs->lock, flags); in hfc_l2l1()
504 spin_unlock_irqrestore(&bcs->cs->lock, flags); in hfc_l2l1()
528 open_hfcstate(struct IsdnCardState *cs, struct BCState *bcs) in open_hfcstate() argument
570 inithfc(struct IsdnCardState *cs) in inithfc() argument
572 init_send(&cs->bcs[0]); in inithfc()
573 init_send(&cs->bcs[1]); in inithfc()
574 cs->BC_Send_Data = &hfc_fill_fifo; in inithfc()
575 cs->bcs[0].BC_SetStack = setstack_hfc; in inithfc()
576 cs->bcs[1].BC_SetStack = setstack_hfc; in inithfc()
577 cs->bcs[0].BC_Close = close_hfcstate; in inithfc()
578 cs->bcs[1].BC_Close = close_hfcstate; in inithfc()
579 mode_hfc(cs->bcs, 0, 0); in inithfc()
580 mode_hfc(cs->bcs + 1, 0, 0); in inithfc()
584 releasehfc(struct IsdnCardState *cs) in releasehfc() argument
586 kfree(cs->bcs[0].hw.hfc.send); in releasehfc()
587 cs->bcs[0].hw.hfc.send = NULL; in releasehfc()
588 kfree(cs->bcs[1].hw.hfc.send); in releasehfc()
589 cs->bcs[1].hw.hfc.send = NULL; in releasehfc()