Lines Matching refs:member
32 * There are 3 types of interaction: One member is alone, in this case only
54 * individual member. This is only the case if data needs to be dejittered
87 * If a member joins a conference:
89 * - If a member joins, its rx_buff is set to silence and change read pointer
109 * If tones are generated by hardware, this conference member is removed for
151 struct dsp_conf_member *member;
168 list_for_each_entry(member, &conf->mlist, list) {
170 " - member = %s (slot_tx %d, bank_tx %d, "
173 member->dsp->name, member->dsp->pcm_slot_tx,
174 member->dsp->pcm_bank_tx, member->dsp->pcm_slot_rx,
175 member->dsp->pcm_bank_rx, member->dsp->hfc_conf,
176 member->dsp->tx_data, member->dsp->rx_is_off,
177 (member->dsp == dsp) ? " *this*" : "");
206 * add member to conference
211 struct dsp_conf_member *member;
217 if (dsp->member) {
218 printk(KERN_WARNING "%s: dsp is already member in a conf.\n",
229 member = kzalloc(sizeof(struct dsp_conf_member), GFP_ATOMIC);
230 if (!member) {
234 member->dsp = dsp;
241 list_add_tail(&member->list, &conf->mlist);
244 dsp->member = member;
251 * del member from conference
256 struct dsp_conf_member *member;
277 list_for_each_entry(member, &dsp->conf->mlist, list) {
278 if (member->dsp == dsp) {
279 list_del(&member->list);
281 dsp->member = NULL;
282 kfree(member);
370 * be member of that conference.
375 struct dsp_conf_member *member, *nextm;
502 member = list_entry(conf->mlist.next, struct dsp_conf_member, list);
503 same_hfc = member->dsp->features.hfc_id;
504 same_pcm = member->dsp->features.pcm_id;
506 list_for_each_entry(member, &conf->mlist, list) {
507 /* check if member uses mixing */
508 if (member->dsp->tx_mix) {
513 member->dsp->name);
515 list_for_each_entry(member, &conf->mlist, list) {
516 dsp = member->dsp;
557 /* check if member has echo turned on */
558 if (member->dsp->echo.hardware || member->dsp->echo.software) {
563 member->dsp->name);
566 /* check if member has tx_mix turned on */
567 if (member->dsp->tx_mix) {
572 __func__, member->dsp->name);
575 /* check if member changes volume at an not suppoted level */
576 if (member->dsp->tx_volume) {
581 __func__, member->dsp->name);
584 if (member->dsp->rx_volume) {
589 __func__, member->dsp->name);
593 if (member->dsp->tx_data) {
597 __func__, member->dsp->name);
601 if (member->dsp->pipeline.inuse) {
606 member->dsp->name);
610 if (member->dsp->bf_enable) {
614 __func__, member->dsp->name);
617 /* check if member is on a card with PCM support */
618 if (member->dsp->features.pcm_id < 0) {
623 __func__, member->dsp->name);
627 if (member->dsp->features.pcm_id != same_pcm) {
633 __func__, member->dsp->name);
637 if (same_hfc != member->dsp->features.hfc_id)
640 if (current_conf < 0 && member->dsp->hfc_conf >= 0)
641 current_conf = member->dsp->hfc_conf;
642 /* if any member is not in a conference */
643 if (member->dsp->hfc_conf < 0)
649 /* if no member, this is an error */
653 /* one member */
661 member = list_entry(conf->mlist.next, struct dsp_conf_member,
663 dsp = member->dsp;
675 member = list_entry(conf->mlist.next, struct dsp_conf_member,
677 nextm = list_entry(member->list.next, struct dsp_conf_member,
680 if (member->dsp->hfc_conf >= 0) {
685 __func__, member->dsp->name,
686 member->dsp->hfc_conf);
687 dsp_cmx_hw_message(member->dsp,
689 member->dsp->hfc_conf = -1;
703 if (member->dsp->features.pcm_banks > 1 &&
705 member->dsp->features.hfc_id !=
708 if (member->dsp->pcm_slot_tx >= 0 &&
709 member->dsp->pcm_slot_rx >= 0 &&
713 member->dsp->pcm_slot_rx &&
715 member->dsp->pcm_slot_tx &&
717 member->dsp->pcm_slot_tx &&
718 member->dsp->pcm_bank_tx !=
719 member->dsp->pcm_bank_rx &&
729 member->dsp->name,
731 member->dsp->pcm_slot_tx,
732 member->dsp->pcm_bank_tx,
733 member->dsp->pcm_bank_rx);
741 if (dsp != member->dsp &&
743 member->dsp->features.pcm_id ==
756 ii = member->dsp->features.pcm_slots;
767 member->dsp->name,
773 member->dsp->pcm_slot_tx = i;
774 member->dsp->pcm_slot_rx = i;
777 member->dsp->pcm_bank_rx = 0;
778 member->dsp->pcm_bank_tx = 1;
787 member->dsp->name,
789 member->dsp->pcm_slot_tx);
790 dsp_cmx_hw_message(member->dsp, MISDN_CTRL_HFC_PCM_CONN,
791 member->dsp->pcm_slot_tx, member->dsp->pcm_bank_tx,
792 member->dsp->pcm_slot_rx, member->dsp->pcm_bank_rx);
802 if (member->dsp->pcm_slot_tx >= 0 &&
803 member->dsp->pcm_slot_rx >= 0 &&
807 member->dsp->pcm_slot_rx &&
809 member->dsp->pcm_slot_tx &&
810 member->dsp->pcm_slot_tx !=
811 member->dsp->pcm_slot_rx &&
812 member->dsp->pcm_bank_tx == 0 &&
813 member->dsp->pcm_bank_rx == 0 &&
822 member->dsp->name,
824 member->dsp->pcm_slot_tx,
825 member->dsp->pcm_slot_rx);
833 if (dsp != member->dsp &&
835 member->dsp->features.pcm_id ==
848 ii = member->dsp->features.pcm_slots;
859 member->dsp->name,
876 member->dsp->name,
882 member->dsp->pcm_slot_tx = i1;
883 member->dsp->pcm_slot_rx = i2;
886 member->dsp->pcm_bank_rx = 0;
887 member->dsp->pcm_bank_tx = 0;
896 member->dsp->name,
898 member->dsp->pcm_slot_tx,
899 member->dsp->pcm_slot_rx);
900 dsp_cmx_hw_message(member->dsp, MISDN_CTRL_HFC_PCM_CONN,
901 member->dsp->pcm_slot_tx, member->dsp->pcm_bank_tx,
902 member->dsp->pcm_slot_rx, member->dsp->pcm_bank_rx);
942 list_for_each_entry(member, &conf->mlist, list) {
945 if (!member->dsp->features.hfc_conf)
948 if (member->dsp->hdlc)
951 if (member->dsp->hfc_conf == current_conf)
957 * not checking current member, because
961 dsp != member->dsp &&
963 member->dsp->features.pcm_id ==
977 ii = member->dsp->features.pcm_slots;
996 member->dsp->name, current_conf, i);
998 member->dsp->pcm_slot_tx = i;
999 member->dsp->pcm_slot_rx = i;
1000 member->dsp->pcm_bank_tx = 2; /* loop */
1001 member->dsp->pcm_bank_rx = 2;
1002 member->dsp->hfc_conf = current_conf;
1003 dsp_cmx_hw_message(member->dsp, MISDN_CTRL_HFC_PCM_CONN,
1005 dsp_cmx_hw_message(member->dsp,
1014 * no member is in a conference yet, so we find a free one
1057 struct dsp_conf_member *member;
1110 member = list_entry(conf->mlist.next, struct dsp_conf_member,
1112 if (dsp->hdlc && !member->dsp->hdlc) {
1118 if (!dsp->hdlc && member->dsp->hdlc) {
1125 /* add conference member */
1301 struct dsp *member, *other;
1356 member = dsp;
1407 /* PROCESS DATA (one member / no conf) */
1451 if (other == member)
1462 * -> copy other member's rx-data,
1477 * -> mix other member's rx-data with echo,
1620 struct dsp_conf_member *member;
1694 member = list_entry(conf->mlist.next,
1696 if (member->dsp->hdlc)
1700 list_for_each_entry(member, &conf->mlist, list) {
1701 dsp = member->dsp;
1707 /* add member's data */
1714 /* process each member */
1715 list_for_each_entry(member, &conf->mlist, list) {
1717 dsp_cmx_send_member(member->dsp, length,
1908 struct dsp_conf_member *member;
1937 list_for_each_entry(member, &dsp->conf->mlist, list) {
1938 if (dsp->echo.software || member->dsp != dsp) {
1944 skb_queue_tail(&member->dsp->sendq, nskb);
1945 schedule_work(&member->dsp->workq);