Lines Matching refs:a
43 void pr_out(ADAPTER *a);
44 byte pr_dpc(ADAPTER *a);
45 static byte pr_ready(ADAPTER *a);
78 void pr_out(ADAPTER *a) in pr_out() argument
93 e_no = look_req(a); in pr_out()
99 ReadyCount = pr_ready(a); in pr_out()
107 next_req(a); in pr_out()
108 this = entity_ptr(a, e_no); in pr_out()
113 xdi_xlog_sec++, (int)((ISDN_ADAPTER *)a->io)->ANum)) in pr_out()
114 e_no = look_req(a); in pr_out()
119 DBG_TRC((">A%d Id=0x%x Req=0x%x", ((ISDN_ADAPTER *)a->io)->ANum, this->Id, this->Req)) in pr_out()
125 ReqOut = (REQ *)&PR_RAM->B[a->ram_inw(a, &PR_RAM->NextReq)]; in pr_out()
127 if (!(a->tx_stream[this->Id] && in pr_out()
134 X = PTR_X(a, this); in pr_out()
137 a->ram_out_buffer(a, in pr_out()
139 PTR_P(a, this, &X[i].P[this->XOffset]), in pr_out()
151 X = PTR_X(a, this); in pr_out()
153 diva_istream_write(a, in pr_out()
155 PTR_P(a, this, &X[i].P[0]), in pr_out()
164 a->ram_outw(a, &ReqOut->XBuffer.length, length); in pr_out()
165 a->ram_out(a, &ReqOut->ReqId, this->Id); in pr_out()
166 a->ram_out(a, &ReqOut->ReqCh, this->ReqCh); in pr_out()
173 xdi_xlog_request(XDI_A_NR(a), this->Id, this->ReqCh, this->MInd, in pr_out()
174 a->IdTypeTable[this->No]); in pr_out()
175 a->ram_out(a, &ReqOut->Req, this->MInd); in pr_out()
179 xdi_xlog_request(XDI_A_NR(a), this->Id, this->ReqCh, this->Req, in pr_out()
180 a->IdTypeTable[this->No]); in pr_out()
182 a->ram_out(a, &ReqOut->Req, this->Req); in pr_out()
184 if (a->FlowControlIdTable[this->ReqCh] == this->Id) in pr_out()
185 a->FlowControlSkipTable[this->ReqCh] = true; in pr_out()
190 a->misc_flags_table[e_no] |= DIVA_MISC_FLAGS_REMOVE_PENDING; in pr_out()
196 req_queue(a, this->No); in pr_out()
209 a->IdTypeTable[this->No] = this->Id; in pr_out()
210 xdi_xlog_request(XDI_A_NR(a), this->Id, this->ReqCh, this->Req, this->Id); in pr_out()
212 a->ram_out(a, &ReqOut->Req, this->Req); in pr_out()
214 assign_queue(a, this->No, a->ram_inw(a, &ReqOut->Reference)); in pr_out()
216 a->ram_outw(a, &PR_RAM->NextReq, a->ram_inw(a, &ReqOut->next)); in pr_out()
219 e_no = look_req(a); in pr_out()
222 a->ram_out(a, &PR_RAM->ReqInput, in pr_out()
223 (byte)(a->ram_in(a, &PR_RAM->ReqInput) + ReqCount)); in pr_out()
228 e_no = a->IdTable[Id]; in pr_out()
229 free_entity(a, e_no); in pr_out()
232 if (a->FlowControlIdTable[i] == Id) in pr_out()
233 a->FlowControlIdTable[i] = 0; in pr_out()
235 a->IdTable[Id] = 0; in pr_out()
239 static byte pr_ready(ADAPTER *a) in pr_ready() argument
242 ReadyCount = (byte)(a->ram_in(a, &PR_RAM->ReqOutput) - in pr_ready()
243 a->ram_in(a, &PR_RAM->ReqInput)); in pr_ready()
245 if (!a->ReadyInt) { in pr_ready()
246 a->ram_inc(a, &PR_RAM->ReadyInt); in pr_ready()
247 a->ReadyInt++; in pr_ready()
255 byte pr_dpc(ADAPTER *a) in pr_dpc() argument
265 if ((Count = a->ram_in(a, &PR_RAM->RcOutput)) != 0) { in pr_dpc()
268 RcIn = (RC *)&PR_RAM->B[a->ram_inw(a, &PR_RAM->NextRc)]; in pr_dpc()
271 if ((Rc = a->ram_in(a, &RcIn->Rc)) != 0) { in pr_dpc()
276 a->ram_in_buffer(a, in pr_dpc()
283 isdn_rc(a, in pr_dpc()
285 a->ram_in(a, &RcIn->RcId), in pr_dpc()
286 a->ram_in(a, &RcIn->RcCh), in pr_dpc()
287 a->ram_inw(a, &RcIn->Reference), in pr_dpc()
290 a->ram_out(a, &RcIn->Rc, 0); in pr_dpc()
293 RcIn = (RC *)&PR_RAM->B[a->ram_inw(a, &RcIn->next)]; in pr_dpc()
296 a->ram_out(a, &PR_RAM->RcOutput, 0); in pr_dpc()
298 pr_out(a); in pr_dpc()
303 if ((Count = a->ram_in(a, &PR_RAM->IndOutput)) != 0) { in pr_dpc()
306 IndIn = (IND *)&PR_RAM->B[a->ram_inw(a, &PR_RAM->NextInd)]; in pr_dpc()
312 if (RNRId && RNRId == a->ram_in(a, &IndIn->IndId)) { in pr_dpc()
313 a->ram_out(a, &IndIn->Ind, 0); in pr_dpc()
314 a->ram_out(a, &IndIn->RNR, true); in pr_dpc()
317 Ind = a->ram_in(a, &IndIn->Ind); in pr_dpc()
323 c = isdn_ind(a, in pr_dpc()
325 a->ram_in(a, &IndIn->IndId), in pr_dpc()
326 a->ram_in(a, &IndIn->IndCh), in pr_dpc()
328 a->ram_in(a, &IndIn->MInd), in pr_dpc()
329 a->ram_inw(a, &IndIn->MLength)); in pr_dpc()
332 a->ram_out(a, &IndIn->Ind, 0); in pr_dpc()
333 RNRId = a->ram_in(a, &IndIn->IndId); in pr_dpc()
334 a->ram_out(a, &IndIn->RNR, true); in pr_dpc()
339 IndIn = (IND *)&PR_RAM->B[a->ram_inw(a, &IndIn->next)]; in pr_dpc()
341 a->ram_out(a, &PR_RAM->IndOutput, 0); in pr_dpc()
345 byte scom_test_int(ADAPTER *a) in scom_test_int() argument
347 return a->ram_in(a, (void *)0x3fe); in scom_test_int()
349 void scom_clear_int(ADAPTER *a) in scom_clear_int() argument
351 a->ram_out(a, (void *)0x3fe, 0); in scom_clear_int()
356 static byte isdn_rc(ADAPTER *a, in isdn_rc() argument
370 DBG_TRC(("<A%d Id=0x%x Rc=0x%x", ((ISDN_ADAPTER *)a->io)->ANum, Id, Rc)) in isdn_rc()
377 xdi_xlog_rc_event(XDI_A_NR(a), Id, Ch, Rc, 0, 0); in isdn_rc()
378 if (a->ReadyInt) { in isdn_rc()
379 a->ReadyInt--; in isdn_rc()
385 e_no = a->IdTable[Id]; in isdn_rc()
387 this = entity_ptr(a, e_no); in isdn_rc()
388 xdi_xlog_rc_event(XDI_A_NR(a), Id, Ch, Rc, 0, a->IdTypeTable[this->No]); in isdn_rc()
392 if ((a->misc_flags_table[e_no] & DIVA_MISC_FLAGS_REMOVE_PENDING) && in isdn_rc()
394 if (a->IdTypeTable[e_no] == NL_ID) { in isdn_rc()
395 if (a->RcExtensionSupported && in isdn_rc()
398 XDI_A_NR(a), Id)); in isdn_rc()
402 a->RcExtensionSupported = true; in isdn_rc()
404 a->misc_flags_table[e_no] &= ~DIVA_MISC_FLAGS_REMOVE_PENDING; in isdn_rc()
405 a->misc_flags_table[e_no] &= ~DIVA_MISC_FLAGS_NO_RC_CANCELLING; in isdn_rc()
406 free_entity(a, e_no); in isdn_rc()
409 if (a->FlowControlIdTable[i] == Id) in isdn_rc()
410 a->FlowControlIdTable[i] = 0; in isdn_rc()
412 a->IdTable[Id] = 0; in isdn_rc()
426 XDI_A_NR(a), Id)); in isdn_rc()
430 a->FlowControlIdTable[Ch] = Id; in isdn_rc()
431 a->FlowControlSkipTable[Ch] = false; in isdn_rc()
435 xdi_xlog_rc_event(XDI_A_NR(a), Id, Ch, Rc, 1, a->IdTypeTable[this->No]); in isdn_rc()
436 CALLBACK(a, this); in isdn_rc()
450 a->misc_flags_table[e_no] |= DIVA_MISC_FLAGS_NO_RC_CANCELLING; in isdn_rc()
453 xdi_xlog_rc_event(XDI_A_NR(a), Id, Ch, Rc, 1, a->IdTypeTable[this->No]); in isdn_rc()
455 XDI_A_NR(a), Id, Ch, Rc)) in isdn_rc()
456 CALLBACK(a, this); in isdn_rc()
459 cancel_rc = !(a->misc_flags_table[e_no] & DIVA_MISC_FLAGS_NO_RC_CANCELLING); in isdn_rc()
460 if (cancel_rc && (a->FlowControlIdTable[Ch] == Id)) in isdn_rc()
462 a->FlowControlIdTable[Ch] = 0; in isdn_rc()
463 if ((Rc != OK) || !a->FlowControlSkipTable[Ch]) in isdn_rc()
471 xdi_xlog_rc_event(XDI_A_NR(a), Id, Ch, Rc, 1, a->IdTypeTable[this->No]); in isdn_rc()
472 CALLBACK(a, this); in isdn_rc()
483 xdi_xlog_rc_event(XDI_A_NR(a), Id, Ch, Rc, 1, a->IdTypeTable[this->No]); in isdn_rc()
484 CALLBACK(a, this); in isdn_rc()
491 e_no = get_assign(a, Ref); in isdn_rc()
493 this = entity_ptr(a, e_no); in isdn_rc()
495 xdi_xlog_rc_event(XDI_A_NR(a), Id, Ch, Rc, 2, a->IdTypeTable[this->No]); in isdn_rc()
501 if ((Rc == ASSIGN_OK) && a->ram_offset && in isdn_rc()
502 (a->IdTypeTable[this->No] == NL_ID) && in isdn_rc()
506 dword offset = (*(a->ram_offset)) (a); in isdn_rc()
510 a->ram_in_dw(a, (void *)ULongToPtr(extended_info), (dword *)&tmp[0], 2); in isdn_rc()
512 a->ram_in_dw(a, (void *)extended_info, (dword *)&tmp[0], 2); in isdn_rc()
514 a->tx_stream[Id] = tmp[0]; in isdn_rc()
515 a->rx_stream[Id] = tmp[1]; in isdn_rc()
518 Id, a->tx_stream[Id], a->rx_stream[Id])) in isdn_rc()
519 a->misc_flags_table[this->No] |= DIVA_MISC_FLAGS_RX_DMA; in isdn_rc()
522 Id, a->tx_stream[Id], a->rx_stream[Id])) in isdn_rc()
523 a->misc_flags_table[this->No] &= ~DIVA_MISC_FLAGS_RX_DMA; in isdn_rc()
524 a->rx_pos[Id] = 0; in isdn_rc()
525 a->rx_stream[Id] -= offset; in isdn_rc()
527 a->tx_pos[Id] = 0; in isdn_rc()
528 a->tx_stream[Id] -= offset; in isdn_rc()
530 a->tx_stream[Id] = 0; in isdn_rc()
531 a->rx_stream[Id] = 0; in isdn_rc()
532 a->misc_flags_table[this->No] &= ~DIVA_MISC_FLAGS_RX_DMA; in isdn_rc()
535 CALLBACK(a, this); in isdn_rc()
537 a->IdTable[Id] = e_no; in isdn_rc()
541 free_entity(a, e_no); in isdn_rc()
544 if (a->FlowControlIdTable[i] == Id) in isdn_rc()
545 a->FlowControlIdTable[i] = 0; in isdn_rc()
547 a->IdTable[Id] = 0; in isdn_rc()
558 static byte isdn_ind(ADAPTER *a, in isdn_ind() argument
573 DBG_TRC(("<A%d Id=0x%x Ind=0x%x", ((ISDN_ADAPTER *)a->io)->ANum, Id, Ind)) in isdn_ind()
578 if (a->IdTable[Id]) { in isdn_ind()
579 this = entity_ptr(a, a->IdTable[Id]); in isdn_ind()
581 xdi_xlog_ind(XDI_A_NR(a), Id, Ch, Ind, in isdn_ind()
582 0/* rnr_valid */, 0 /* rnr */, a->IdTypeTable[this->No]); in isdn_ind()
599 if ((a->rx_stream[this->Id] || in isdn_ind()
600 (a->misc_flags_table[this->No] & DIVA_MISC_FLAGS_RX_DMA)) && in isdn_ind()
602 (a->protocol_capabilities & PROTCAP_CMA_ALLPR))) { in isdn_ind()
603 PISDN_ADAPTER IoAdapter = (PISDN_ADAPTER)a->io; in isdn_ind()
604 if (a->misc_flags_table[this->No] & DIVA_MISC_FLAGS_RX_DMA) { in isdn_ind()
609 (int)a->rx_stream[this->Id], (void **)&cma, &d); in isdn_ind()
611 cma = &a->stream_buffer[0]; in isdn_ind()
618 cma = &a->stream_buffer[0]; in isdn_ind()
619 this->RLength = MLength = (word)diva_istream_read(a, in isdn_ind()
622 sizeof(a->stream_buffer), in isdn_ind()
636 a->ram_look_ahead(a, RBuffer, this); in isdn_ind()
639 CALLBACK(a, this); in isdn_ind()
642 this = entity_ptr(a, a->IdTable[Id]); in isdn_ind()
643 xdi_xlog_ind(XDI_A_NR(a), Id, Ch, Ind, in isdn_ind()
644 1/* rnr_valid */, this->RNR/* rnr */, a->IdTypeTable[this->No]); in isdn_ind()
654 xdi_xlog_ind(XDI_A_NR(a), Id, Ch, Ind, in isdn_ind()
655 2/* rnr_valid */, 0/* rnr */, a->IdTypeTable[this->No]); in isdn_ind()
672 R = PTR_R(a, this); in isdn_ind()
681 clength = min(a->ram_inw(a, &RBuffer->length)-offset, in isdn_ind()
686 memcpy(PTR_P(a, this, &R[this->RCurrent].P[this->ROffset]), in isdn_ind()
690 a->ram_in_buffer(a, in isdn_ind()
692 PTR_P(a, this, &R[this->RCurrent].P[this->ROffset]), in isdn_ind()
704 } while (offset < (a->ram_inw(a, &RBuffer->length))); in isdn_ind()
715 xdi_xlog_ind(XDI_A_NR(a), Id, Ch, Ind, in isdn_ind()
716 3/* rnr_valid */, 0/* rnr */, a->IdTypeTable[this->No]); in isdn_ind()
717 CALLBACK(a, this); in isdn_ind()