Lines Matching refs:hcp
308 struct hdmi_codec_priv *hcp = snd_soc_component_get_drvdata(component); in hdmi_eld_ctl_get() local
310 memcpy(ucontrol->value.bytes.data, hcp->eld, sizeof(hcp->eld)); in hdmi_eld_ctl_get()
332 static void hdmi_codec_eld_chmap(struct hdmi_codec_priv *hcp) in hdmi_codec_eld_chmap() argument
337 spk_alloc = drm_eld_get_spk_alloc(hcp->eld); in hdmi_codec_eld_chmap()
341 if ((spk_mask & ~(FL | FR)) && hcp->chmap_info->max_channels > 2) in hdmi_codec_eld_chmap()
342 hcp->chmap_info->chmap = hdmi_codec_8ch_chmaps; in hdmi_codec_eld_chmap()
344 hcp->chmap_info->chmap = hdmi_codec_stereo_chmaps; in hdmi_codec_eld_chmap()
347 static int hdmi_codec_get_ch_alloc_table_idx(struct hdmi_codec_priv *hcp, in hdmi_codec_get_ch_alloc_table_idx() argument
355 if (hcp->eld_bypass) in hdmi_codec_get_ch_alloc_table_idx()
358 spk_alloc = drm_eld_get_spk_alloc(hcp->eld); in hdmi_codec_get_ch_alloc_table_idx()
380 struct hdmi_codec_priv *hcp = info->private_data; in hdmi_codec_chmap_ctl_get() local
382 map = info->chmap[hcp->chmap_idx].map; in hdmi_codec_chmap_ctl_get()
385 if (hcp->chmap_idx == HDMI_CODEC_CHMAP_IDX_UNKNOWN) in hdmi_codec_chmap_ctl_get()
406 struct hdmi_codec_priv *hcp = snd_soc_component_get_drvdata(component); in hdmi_codec_iec958_default_get() local
408 memcpy(ucontrol->value.iec958.status, hcp->iec_status, in hdmi_codec_iec958_default_get()
409 sizeof(hcp->iec_status)); in hdmi_codec_iec958_default_get()
418 struct hdmi_codec_priv *hcp = snd_soc_component_get_drvdata(component); in hdmi_codec_iec958_default_put() local
420 memcpy(hcp->iec_status, ucontrol->value.iec958.status, in hdmi_codec_iec958_default_put()
421 sizeof(hcp->iec_status)); in hdmi_codec_iec958_default_put()
439 struct hdmi_codec_priv *hcp = snd_soc_component_get_drvdata(component); in hdmi_codec_eld_bypass_get() local
441 ucontrol->value.integer.value[0] = hcp->eld_bypass; in hdmi_codec_eld_bypass_get()
450 struct hdmi_codec_priv *hcp = snd_soc_component_get_drvdata(component); in hdmi_codec_eld_bypass_put() local
452 if (hcp->eld_bypass == ucontrol->value.integer.value[0]) in hdmi_codec_eld_bypass_put()
455 hcp->eld_bypass = ucontrol->value.integer.value[0]; in hdmi_codec_eld_bypass_put()
463 struct hdmi_codec_priv *hcp = snd_soc_dai_get_drvdata(dai); in hdmi_codec_startup() local
467 mutex_lock(&hcp->lock); in hdmi_codec_startup()
468 if (hcp->busy) { in hdmi_codec_startup()
470 mutex_unlock(&hcp->lock); in hdmi_codec_startup()
474 if (hcp->hcd.ops->audio_startup) { in hdmi_codec_startup()
475 ret = hcp->hcd.ops->audio_startup(dai->dev->parent, hcp->hcd.data); in hdmi_codec_startup()
480 if (tx && !hcp->eld_bypass && hcp->hcd.ops->get_eld) { in hdmi_codec_startup()
481 ret = hcp->hcd.ops->get_eld(dai->dev->parent, hcp->hcd.data, in hdmi_codec_startup()
482 hcp->eld, sizeof(hcp->eld)); in hdmi_codec_startup()
486 ret = snd_pcm_hw_constraint_eld(substream->runtime, hcp->eld); in hdmi_codec_startup()
491 hdmi_codec_eld_chmap(hcp); in hdmi_codec_startup()
494 hcp->busy = true; in hdmi_codec_startup()
495 hcp->substream = substream; in hdmi_codec_startup()
498 mutex_unlock(&hcp->lock); in hdmi_codec_startup()
505 struct hdmi_codec_priv *hcp = snd_soc_dai_get_drvdata(dai); in hdmi_codec_shutdown() local
507 hcp->chmap_idx = HDMI_CODEC_CHMAP_IDX_UNKNOWN; in hdmi_codec_shutdown()
508 hcp->hcd.ops->audio_shutdown(dai->dev->parent, hcp->hcd.data); in hdmi_codec_shutdown()
510 mutex_lock(&hcp->lock); in hdmi_codec_shutdown()
511 hcp->substream = NULL; in hdmi_codec_shutdown()
512 hcp->busy = false; in hdmi_codec_shutdown()
513 mutex_unlock(&hcp->lock); in hdmi_codec_shutdown()
522 struct hdmi_codec_priv *hcp = snd_soc_dai_get_drvdata(dai); in hdmi_codec_fill_codec_params() local
526 idx = hdmi_codec_get_ch_alloc_table_idx(hcp, channels); in hdmi_codec_fill_codec_params()
530 hcp->chmap_idx = HDMI_CODEC_CHMAP_IDX_UNKNOWN; in hdmi_codec_fill_codec_params()
547 hcp->chmap_idx = hdmi_codec_channel_alloc[idx].ca_id; in hdmi_codec_fill_codec_params()
556 struct hdmi_codec_priv *hcp = snd_soc_dai_get_drvdata(dai); in hdmi_codec_hw_params() local
568 if (!hcp->hcd.ops->hw_params) in hdmi_codec_hw_params()
583 memcpy(hp.iec.status, hcp->iec_status, sizeof(hp.iec.status)); in hdmi_codec_hw_params()
593 return hcp->hcd.ops->hw_params(dai->dev->parent, hcp->hcd.data, in hdmi_codec_hw_params()
600 struct hdmi_codec_priv *hcp = snd_soc_dai_get_drvdata(dai); in hdmi_codec_prepare() local
609 if (!hcp->hcd.ops->prepare) in hdmi_codec_prepare()
619 memcpy(hp.iec.status, hcp->iec_status, sizeof(hp.iec.status)); in hdmi_codec_prepare()
629 return hcp->hcd.ops->prepare(dai->dev->parent, hcp->hcd.data, in hdmi_codec_prepare()
702 struct hdmi_codec_priv *hcp = snd_soc_dai_get_drvdata(dai); in hdmi_codec_mute() local
710 if (hcp->hcd.ops->mute_stream && in hdmi_codec_mute()
712 !hcp->hcd.ops->no_capture_mute)) in hdmi_codec_mute()
713 return hcp->hcd.ops->mute_stream(dai->dev->parent, in hdmi_codec_mute()
714 hcp->hcd.data, in hdmi_codec_mute()
792 struct hdmi_codec_priv *hcp = snd_soc_dai_get_drvdata(dai); in hdmi_codec_pcm_new() local
798 &hcp->chmap_info); in hdmi_codec_pcm_new()
803 hcp->chmap_info->private_data = hcp; in hdmi_codec_pcm_new()
804 hcp->chmap_info->kctl->get = hdmi_codec_chmap_ctl_get; in hdmi_codec_pcm_new()
807 hcp->chmap_info->chmap = hdmi_codec_stereo_chmaps; in hdmi_codec_pcm_new()
808 hcp->chmap_idx = HDMI_CODEC_CHMAP_IDX_UNKNOWN; in hdmi_codec_pcm_new()
856 static void hdmi_codec_jack_report(struct hdmi_codec_priv *hcp, in hdmi_codec_jack_report() argument
859 if (hcp->jack && jack_status != hcp->jack_status) { in hdmi_codec_jack_report()
860 snd_soc_jack_report(hcp->jack, jack_status, SND_JACK_LINEOUT); in hdmi_codec_jack_report()
861 hcp->jack_status = jack_status; in hdmi_codec_jack_report()
867 struct hdmi_codec_priv *hcp = dev_get_drvdata(dev); in plugged_cb() local
870 if (!hcp->eld_bypass && hcp->hcd.ops->get_eld) { in plugged_cb()
871 hcp->hcd.ops->get_eld(dev->parent, hcp->hcd.data, in plugged_cb()
872 hcp->eld, sizeof(hcp->eld)); in plugged_cb()
874 hdmi_codec_jack_report(hcp, SND_JACK_LINEOUT); in plugged_cb()
876 hdmi_codec_jack_report(hcp, 0); in plugged_cb()
877 memset(hcp->eld, 0, sizeof(hcp->eld)); in plugged_cb()
880 mutex_lock(&hcp->lock); in plugged_cb()
881 if (hcp->substream) { in plugged_cb()
902 int stream = hcp->substream->stream; in plugged_cb()
905 snd_pcm_stop(hcp->substream, SNDRV_PCM_STATE_SETUP); in plugged_cb()
907 snd_pcm_stop(hcp->substream, SNDRV_PCM_STATE_DISCONNECTED); in plugged_cb()
911 mutex_unlock(&hcp->lock); in plugged_cb()
918 struct hdmi_codec_priv *hcp = snd_soc_component_get_drvdata(component); in hdmi_codec_set_jack() local
921 if (hcp->hcd.ops->hook_plugged_cb) { in hdmi_codec_set_jack()
922 hcp->jack = jack; in hdmi_codec_set_jack()
923 ret = hcp->hcd.ops->hook_plugged_cb(component->dev->parent, in hdmi_codec_set_jack()
924 hcp->hcd.data, in hdmi_codec_set_jack()
928 hcp->jack = NULL; in hdmi_codec_set_jack()
1005 struct hdmi_codec_priv *hcp = snd_soc_component_get_drvdata(component); in hdmi_of_xlate_dai_id() local
1008 if (hcp->hcd.ops->get_dai_id) in hdmi_of_xlate_dai_id()
1009 ret = hcp->hcd.ops->get_dai_id(component, endpoint); in hdmi_of_xlate_dai_id()
1016 struct hdmi_codec_priv *hcp = snd_soc_component_get_drvdata(component); in hdmi_remove() local
1018 if (hcp->hcd.ops->hook_plugged_cb) in hdmi_remove()
1019 hcp->hcd.ops->hook_plugged_cb(component->dev->parent, in hdmi_remove()
1020 hcp->hcd.data, NULL, NULL); in hdmi_remove()
1040 struct hdmi_codec_priv *hcp; in hdmi_codec_probe() local
1057 hcp = devm_kzalloc(dev, sizeof(*hcp), GFP_KERNEL); in hdmi_codec_probe()
1058 if (!hcp) in hdmi_codec_probe()
1061 hcp->hcd = *hcd; in hdmi_codec_probe()
1062 mutex_init(&hcp->lock); in hdmi_codec_probe()
1064 ret = snd_pcm_create_iec958_consumer_default(hcp->iec_status, in hdmi_codec_probe()
1065 sizeof(hcp->iec_status)); in hdmi_codec_probe()
1082 dev_set_drvdata(dev, hcp); in hdmi_codec_probe()