[alsa-devel] [PATCH v2] ASoC: hdmi-codec: ELD control corresponds to the PCM stream
Takashi Iwai
tiwai at suse.de
Thu Jul 6 09:36:23 CEST 2017
On Thu, 06 Jul 2017 02:39:29 +0200,
Kuninori Morimoto wrote:
>
> From: Kuninori Morimoto <kuninori.morimoto.gx at renesas.com>
>
> Current hdmi-codec driver is using hdmi_controls for "ELD" control.
> But, hdmi-codec driver might be used from many HDMIs. Thus, we need
> to correspond device number, otherwise we will receive below error.
>
> xxx: control x:x:x:ELD:x is already present
>
> This patch registers ELD control in .pcm_new by using
> .device = rtd->pcm->device to corresponding to PCM stream.
>
> Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx at renesas.com>
> [Takashi: use snd_ctl_new1()/snd_ctl_add()]
> Signed-off-by: Takashi Iwai <tiwai at suse.de>
> ---
> v1 -> v2
>
> - change title
> - ASoC: hdmi-codec: hdmi_codec_priv includes snd_kcontrol_new
> + ASoC: hdmi-codec: ELD control corresponds to the PCM stream
> - hdmi_eld_ctl is now local variable
> - Author should be Takashi ?
Strictly speaking, you must not create a signed-off-by tag of other
person, it's illegal. In a case like this, you could simply ask the
original author to resubmit with a proper patch, and add your own
reported-by / tested-by tags (or you resubmit again with your
sign-off on top of it).
But the change is trivial, so feel free to keep my sign-off as is.
thanks,
Takashi
> sound/soc/codecs/hdmi-codec.c | 31 ++++++++++++++++---------------
> 1 file changed, 16 insertions(+), 15 deletions(-)
>
> diff --git a/sound/soc/codecs/hdmi-codec.c b/sound/soc/codecs/hdmi-codec.c
> index 22ed0dc..7686a80 100644
> --- a/sound/soc/codecs/hdmi-codec.c
> +++ b/sound/soc/codecs/hdmi-codec.c
> @@ -399,18 +399,6 @@ static int hdmi_codec_chmap_ctl_get(struct snd_kcontrol *kcontrol,
> return 0;
> }
>
> -
> -static const struct snd_kcontrol_new hdmi_controls[] = {
> - {
> - .access = SNDRV_CTL_ELEM_ACCESS_READ |
> - SNDRV_CTL_ELEM_ACCESS_VOLATILE,
> - .iface = SNDRV_CTL_ELEM_IFACE_PCM,
> - .name = "ELD",
> - .info = hdmi_eld_ctl_info,
> - .get = hdmi_eld_ctl_get,
> - },
> -};
> -
> static int hdmi_codec_new_stream(struct snd_pcm_substream *substream,
> struct snd_soc_dai *dai)
> {
> @@ -668,6 +656,16 @@ static int hdmi_codec_pcm_new(struct snd_soc_pcm_runtime *rtd,
> {
> struct snd_soc_dai_driver *drv = dai->driver;
> struct hdmi_codec_priv *hcp = snd_soc_dai_get_drvdata(dai);
> + struct snd_kcontrol *kctl;
> + struct snd_kcontrol_new hdmi_eld_ctl = {
> + .access = SNDRV_CTL_ELEM_ACCESS_READ |
> + SNDRV_CTL_ELEM_ACCESS_VOLATILE,
> + .iface = SNDRV_CTL_ELEM_IFACE_PCM,
> + .name = "ELD",
> + .info = hdmi_eld_ctl_info,
> + .get = hdmi_eld_ctl_get,
> + .device = rtd->pcm->device,
> + };
> int ret;
>
> dev_dbg(dai->dev, "%s()\n", __func__);
> @@ -686,7 +684,12 @@ static int hdmi_codec_pcm_new(struct snd_soc_pcm_runtime *rtd,
> hcp->chmap_info->chmap = hdmi_codec_stereo_chmaps;
> hcp->chmap_idx = HDMI_CODEC_CHMAP_IDX_UNKNOWN;
>
> - return 0;
> + /* add ELD ctl with the device number corresponding to the PCM stream */
> + kctl = snd_ctl_new1(&hdmi_eld_ctl, dai->component);
> + if (!kctl)
> + return -ENOMEM;
> +
> + return snd_ctl_add(rtd->card->snd_card, kctl);
> }
>
> static struct snd_soc_dai_driver hdmi_i2s_dai = {
> @@ -732,8 +735,6 @@ static int hdmi_of_xlate_dai_id(struct snd_soc_component *component,
>
> static struct snd_soc_codec_driver hdmi_codec = {
> .component_driver = {
> - .controls = hdmi_controls,
> - .num_controls = ARRAY_SIZE(hdmi_controls),
> .dapm_widgets = hdmi_widgets,
> .num_dapm_widgets = ARRAY_SIZE(hdmi_widgets),
> .dapm_routes = hdmi_routes,
> --
> 1.9.1
>
More information about the Alsa-devel
mailing list