Lines Matching refs:pcm
147 struct hdac_hdmi_pcm *pcm;
149 list_for_each_entry(pcm, &hdmi->pcm_list, head) {
150 if (pcm->cvt == cvt)
151 return pcm;
157 static void hdac_hdmi_jack_report(struct hdac_hdmi_pcm *pcm,
169 if (pcm->jack_event == 0) {
171 "jack report for pcm=%d\n",
172 pcm->pcm_id);
173 snd_soc_jack_report(pcm->jack, SND_JACK_AVOUT,
176 pcm->jack_event++;
183 if (pcm->jack_event == 1)
184 snd_soc_jack_report(pcm->jack, 0, SND_JACK_AVOUT);
185 if (pcm->jack_event > 0)
186 pcm->jack_event--;
207 static void hdac_hdmi_jack_report_sync(struct hdac_hdmi_pcm *pcm,
210 hdac_hdmi_jack_report(pcm, port, is_connect);
285 struct hdac_hdmi_pcm *pcm;
287 list_for_each_entry(pcm, &hdmi->pcm_list, head) {
288 if (pcm->pcm_id == pcm_idx)
289 return pcm;
357 struct hdac_hdmi_pcm *pcm, struct hdac_hdmi_port *port)
364 struct hdac_hdmi_cvt *cvt = pcm->cvt;
373 pcm->channels, pcm->chmap_set, true, pcm->chmap);
379 pcm->channels, pcm->chmap, pcm->chmap_set);
445 struct hdac_hdmi_pcm *pcm;
457 pcm = hdac_hdmi_get_pcm_from_cvt(hdmi, dai_map->cvt);
459 if (pcm)
460 pcm->stream_tag = (hstream->stream_tag << 4);
470 struct hdac_hdmi_pcm *pcm;
479 pcm = hdac_hdmi_get_pcm_from_cvt(hdmi, dai_map->cvt);
480 if (!pcm)
483 pcm->format = format;
484 pcm->channels = params_channels(hparams);
517 * Query pcm list and return port to which stream is routed.
530 struct hdac_hdmi_pcm *pcm;
534 list_for_each_entry(pcm, &hdmi->pcm_list, head) {
535 if (pcm->cvt == cvt) {
536 if (list_empty(&pcm->port_list))
539 list_for_each_entry(port, &pcm->port_list, head) {
540 mutex_lock(&pcm->lock);
543 mutex_unlock(&pcm->lock);
636 struct hdac_hdmi_pcm *pcm;
640 pcm = hdac_hdmi_get_pcm_from_cvt(hdmi, dai_map->cvt);
642 if (pcm) {
643 mutex_lock(&pcm->lock);
644 pcm->chmap_set = false;
645 memset(pcm->chmap, 0, sizeof(pcm->chmap));
646 pcm->channels = 0;
647 mutex_unlock(&pcm->lock);
676 "Failed to query pcm params for nid %d: %d\n",
721 struct hdac_hdmi_pcm *pcm = NULL;
724 list_for_each_entry(pcm, &hdmi->pcm_list, head) {
725 if (list_empty(&pcm->port_list))
728 list_for_each_entry(p, &pcm->port_list, head) {
730 return pcm;
772 struct hdac_hdmi_pcm *pcm;
777 pcm = hdac_hdmi_get_pcm(hdev, port);
778 if (!pcm)
795 return hdac_hdmi_setup_audio_infoframe(hdev, pcm, port);
818 struct hdac_hdmi_pcm *pcm;
823 pcm = hdac_hdmi_get_pcm_from_cvt(hdmi, cvt);
824 if (!pcm)
840 AC_VERB_SET_CHANNEL_STREAMID, pcm->stream_tag);
842 AC_VERB_SET_STREAM_FORMAT, pcm->format);
908 struct hdac_hdmi_pcm *pcm = NULL;
919 list_for_each_entry(pcm, &hdmi->pcm_list, head) {
920 if (list_empty(&pcm->port_list))
923 list_for_each_entry_safe(p, p_next, &pcm->port_list, head) {
926 hdac_hdmi_jack_report_sync(pcm, port, false);
936 list_for_each_entry(pcm, &hdmi->pcm_list, head) {
937 if (!strcmp(cvt_name, pcm->cvt->name)) {
938 list_add_tail(&port->head, &pcm->port_list);
940 hdac_hdmi_jack_report_sync(pcm, port, true);
1255 struct hdac_hdmi_pcm *pcm;
1296 pcm = hdac_hdmi_get_pcm(hdev, port);
1308 if (pcm) {
1309 hdac_hdmi_jack_report(pcm, port, false);
1318 if (pcm) {
1319 hdac_hdmi_jack_report(pcm, port, true);
1329 if (eld_changed && pcm)
1333 &pcm->eld_ctl->id);
1437 struct hdac_hdmi_pcm *pcm;
1444 pcm = get_hdmi_pcm_from_id(hdmi, kcontrol->id.device);
1445 if (!pcm) {
1446 dev_dbg(component->dev, "%s: no pcm, device %d\n", __func__,
1451 if (list_empty(&pcm->port_list)) {
1459 list_for_each_entry(port, &pcm->port_list, head) {
1478 struct hdac_hdmi_pcm *pcm;
1484 pcm = get_hdmi_pcm_from_id(hdmi, kcontrol->id.device);
1485 if (!pcm) {
1486 dev_dbg(component->dev, "%s: no pcm, device %d\n", __func__,
1491 if (list_empty(&pcm->port_list)) {
1499 list_for_each_entry(port, &pcm->port_list, head) {
1525 static int hdac_hdmi_create_eld_ctl(struct snd_soc_component *component, struct hdac_hdmi_pcm *pcm)
1535 .device = pcm->pcm_id,
1543 pcm->eld_ctl = kctl;
1761 if (rtd->pcm && (rtd->pcm->device == device))
1762 return rtd->pcm;
1893 struct hdac_hdmi_pcm *pcm;
1898 * this is a new PCM device, create new pcm and
1899 * add to the pcm list
1901 pcm = devm_kzalloc(&hdev->dev, sizeof(*pcm), GFP_KERNEL);
1902 if (!pcm)
1904 pcm->pcm_id = device;
1905 pcm->cvt = hdmi->dai_map[dai->id].cvt;
1906 pcm->jack_event = 0;
1907 pcm->jack = jack;
1908 mutex_init(&pcm->lock);
1909 INIT_LIST_HEAD(&pcm->port_list);
1915 "chmap control add failed with err: %d for pcm: %d\n",
1922 err = hdac_hdmi_create_eld_ctl(component, pcm);
1925 "eld control add failed with err: %d for pcm: %d\n",
1930 list_add_tail(&pcm->head, &hdmi->pcm_list);
2073 struct hdac_hdmi_pcm *pcm = get_hdmi_pcm_from_id(hdmi, pcm_idx);
2075 memcpy(chmap, pcm->chmap, ARRAY_SIZE(pcm->chmap));
2082 struct hdac_hdmi_pcm *pcm = get_hdmi_pcm_from_id(hdmi, pcm_idx);
2085 if (!pcm)
2088 if (list_empty(&pcm->port_list))
2091 mutex_lock(&pcm->lock);
2092 pcm->chmap_set = true;
2093 memcpy(pcm->chmap, chmap, ARRAY_SIZE(pcm->chmap));
2094 list_for_each_entry(port, &pcm->port_list, head)
2096 hdac_hdmi_setup_audio_infoframe(hdev, pcm, port);
2097 mutex_unlock(&pcm->lock);
2103 struct hdac_hdmi_pcm *pcm = get_hdmi_pcm_from_id(hdmi, pcm_idx);
2105 if (!pcm)
2108 if (list_empty(&pcm->port_list))
2117 struct hdac_hdmi_pcm *pcm = get_hdmi_pcm_from_id(hdmi, pcm_idx);
2120 if (!pcm)
2123 if (list_empty(&pcm->port_list))
2126 port = list_first_entry(&pcm->port_list, struct hdac_hdmi_port, head);