Lines Matching refs:bcs
666 struct cardstate *cs, struct bc_state *bcs) in disconnect_bc() argument
682 cs->ops->close_bchannel(bcs); in disconnect_bc()
685 if (bcs->chstate & (CHS_D_UP | CHS_NOTIFY_LL)) { in disconnect_bc()
686 bcs->chstate &= ~(CHS_D_UP | CHS_NOTIFY_LL); in disconnect_bc()
687 gigaset_isdn_hupD(bcs); in disconnect_bc()
709 if (gigaset_get_channel(cs->bcs + i) >= 0) { in get_free_channel()
710 ret = &cs->bcs[i].at_state; in get_free_channel()
735 at_state = &cs->bcs[i].at_state; in init_failed()
798 if (cid == cs->bcs[i].at_state.cid) in at_state_from_cid()
799 return &cs->bcs[i].at_state; in at_state_from_cid()
814 static void bchannel_down(struct bc_state *bcs) in bchannel_down() argument
816 if (bcs->chstate & CHS_B_UP) { in bchannel_down()
817 bcs->chstate &= ~CHS_B_UP; in bchannel_down()
818 gigaset_isdn_hupB(bcs); in bchannel_down()
821 if (bcs->chstate & (CHS_D_UP | CHS_NOTIFY_LL)) { in bchannel_down()
822 bcs->chstate &= ~(CHS_D_UP | CHS_NOTIFY_LL); in bchannel_down()
823 gigaset_isdn_hupD(bcs); in bchannel_down()
826 gigaset_free_channel(bcs); in bchannel_down()
828 gigaset_bcs_reinit(bcs); in bchannel_down()
831 static void bchannel_up(struct bc_state *bcs) in bchannel_up() argument
833 if (bcs->chstate & CHS_B_UP) { in bchannel_up()
834 dev_notice(bcs->cs->dev, "%s: B channel already up\n", in bchannel_up()
839 bcs->chstate |= CHS_B_UP; in bchannel_up()
840 gigaset_isdn_connB(bcs); in bchannel_up()
846 struct bc_state *bcs = at_state->bcs; in start_dial() local
852 bcs->chstate |= CHS_NOTIFY_LL; in start_dial()
862 kfree(bcs->commands[i]); in start_dial()
863 bcs->commands[i] = commands[i]; in start_dial()
885 struct bc_state *bcs = at_state->bcs; in start_accept() local
889 kfree(bcs->commands[i]); in start_accept()
890 bcs->commands[i] = NULL; in start_accept()
893 bcs->commands[AT_PROTO] = kmalloc(9, GFP_ATOMIC); in start_accept()
894 bcs->commands[AT_ISO] = kmalloc(9, GFP_ATOMIC); in start_accept()
895 if (!bcs->commands[AT_PROTO] || !bcs->commands[AT_ISO]) { in start_accept()
904 snprintf(bcs->commands[AT_PROTO], 9, "^SBPR=%u\r", bcs->proto2); in start_accept()
905 snprintf(bcs->commands[AT_ISO], 9, "^SISO=%u\r", bcs->channel + 1); in start_accept()
986 if (cs->bcs[i].at_state.cid > 0) in reinit_and_retry()
995 cs->bcs[channel].at_state.pending_commands |= PC_CID; in reinit_and_retry()
1019 if (&cs->bcs[channel].at_state == test_ptr) in at_state_invalid()
1028 static void handle_icall(struct cardstate *cs, struct bc_state *bcs, in handle_icall() argument
1065 if (cs->bcs[i].at_state.pending_commands) in do_lock()
1100 struct bc_state *bcs, in do_action() argument
1228 handle_icall(cs, bcs, at_state); in do_action()
1244 bcs->chstate |= CHS_D_UP; in do_action()
1245 gigaset_isdn_connD(bcs); in do_action()
1246 cs->ops->init_bchannel(bcs); in do_action()
1250 bcs = cs->bcs + cs->curchannel; in do_action()
1252 bcs->chstate |= CHS_D_UP; in do_action()
1253 gigaset_isdn_connD(bcs); in do_action()
1254 cs->ops->init_bchannel(bcs); in do_action()
1262 if (!bcs) { in do_action()
1271 disconnect_bc(at_state, cs, bcs); in do_action()
1280 bcs2 = cs->bcs + cs->curchannel; in do_action()
1287 if (!bcs) in do_action()
1292 disconnect_bc(at_state, cs, bcs); in do_action()
1299 bcs2 = cs->bcs + cs->curchannel; in do_action()
1308 cs->bcs[channel].at_state.pending_commands |= PC_HUP; in do_action()
1316 cs->bcs[channel].at_state.cid = ev->parameter; in do_action()
1317 cs->bcs[channel].at_state.pending_commands |= in do_action()
1329 bcs2 = cs->bcs + channel; in do_action()
1335 bcs2 = cs->bcs + cs->curchannel; in do_action()
1345 if (bcs) in do_action()
1346 disconnect_bc(at_state, cs, bcs); in do_action()
1505 bchannel_down(bcs); in do_action()
1508 bchannel_up(bcs); in do_action()
1517 *pp_command = at_state->bcs->commands[action - ACT_CMD]; in do_action()
1530 struct bc_state *bcs; in process_event() local
1562 bcs = at_state->bcs; in process_event()
1623 do_action(rep->action[curact], cs, bcs, &at_state, &p_command, in process_event()
1673 struct bc_state *bcs; in process_command_flags() local
1693 bcs = cs->bcs + i; in process_command_flags()
1694 at_state = &bcs->at_state; in process_command_flags()
1710 bcs = cs->bcs + i; in process_command_flags()
1711 at_state = &bcs->at_state; in process_command_flags()
1735 bcs = cs->bcs + i; in process_command_flags()
1736 if (bcs->at_state.pending_commands || in process_command_flags()
1737 bcs->at_state.cid > 0) { in process_command_flags()
1751 bcs = cs->bcs + i; in process_command_flags()
1752 if (bcs->at_state.pending_commands & PC_HUP) { in process_command_flags()
1754 cs->curchannel = bcs->channel; in process_command_flags()
1758 bcs->at_state.pending_commands &= ~PC_HUP; in process_command_flags()
1759 if (bcs->at_state.pending_commands & PC_CID) { in process_command_flags()
1761 bcs->at_state.pending_commands |= PC_NOCID; in process_command_flags()
1762 bcs->at_state.pending_commands &= ~PC_CID; in process_command_flags()
1764 schedule_sequence(cs, &bcs->at_state, SEQ_HUP); in process_command_flags()
1768 if (bcs->at_state.pending_commands & PC_NOCID) { in process_command_flags()
1769 bcs->at_state.pending_commands &= ~PC_NOCID; in process_command_flags()
1770 cs->curchannel = bcs->channel; in process_command_flags()
1773 } else if (bcs->at_state.pending_commands & PC_DLE0) { in process_command_flags()
1774 bcs->at_state.pending_commands &= ~PC_DLE0; in process_command_flags()
1775 cs->curchannel = bcs->channel; in process_command_flags()
1810 bcs = cs->bcs + i; in process_command_flags()
1811 if (bcs->at_state.pending_commands & PC_DLE1) { in process_command_flags()
1812 bcs->at_state.pending_commands &= ~PC_DLE1; in process_command_flags()
1813 cs->curchannel = bcs->channel; in process_command_flags()
1817 if (bcs->at_state.pending_commands & PC_ACCEPT) { in process_command_flags()
1818 bcs->at_state.pending_commands &= ~PC_ACCEPT; in process_command_flags()
1819 schedule_sequence(cs, &bcs->at_state, SEQ_ACCEPT); in process_command_flags()
1822 if (bcs->at_state.pending_commands & PC_DIAL) { in process_command_flags()
1823 bcs->at_state.pending_commands &= ~PC_DIAL; in process_command_flags()
1824 schedule_sequence(cs, &bcs->at_state, SEQ_DIAL); in process_command_flags()
1827 if (bcs->at_state.pending_commands & PC_CID) { in process_command_flags()
1838 bcs->at_state.pending_commands &= ~PC_CID; in process_command_flags()
1839 cs->curchannel = bcs->channel; in process_command_flags()