On 10/24/2017 11:01 PM, Bruce Ashfield wrote: > Thanks for the patch, but for which version is this targeted ? > 4.12 ?
Yes, for 4.12 Liwei. > > Bruce > > On 10/24/2017 03:44 AM, Liwei Song wrote: >> From: Wang YanQing <udkni...@gmail.com> >> >> commit 1f7f51a63114bab3a05920f4b1343154e95e2cb6 upstream. >> >> Commit fb087eaaef72 ("ALSA: hda - hdmi eld control created based on pcm") >> forget to filter out invalid pcm numbers, if there is only one invalid pcm >> number, then this issue causes we create eld control for invalid pcm >> silently, >> but when there are more than one invalid pcm numbers, then this issue bring >> probe error looks like below dmesg: >> " >> kernel: [ 1.647283] snd_hda_intel 0000:00:03.0: bound 0000:00:02.0 (ops >> 0xc2967540) >> kernel: [ 1.651192] snd_hda_intel 0000:00:03.0: Too many HDMI devices >> kernel: [ 1.651195] snd_hda_intel 0000:00:03.0: Consider building the >> kernel with CONFIG_SND_DYNAMIC_MINORS=y >> kernel: [ 1.651197] snd_hda_intel 0000:00:03.0: Too many HDMI devices >> kernel: [ 1.651199] snd_hda_intel 0000:00:03.0: Consider building the >> kernel with CONFIG_SND_DYNAMIC_MINORS=y >> kernel: [ 1.651201] snd_hda_intel 0000:00:03.0: Too many HDMI devices >> kernel: [ 1.651203] snd_hda_intel 0000:00:03.0: Consider building the >> kernel with CONFIG_SND_DYNAMIC_MINORS=y >> kernel: [ 1.651676] snd_hda_intel 0000:00:03.0: control 3:0:0:ELD:0 is >> already present >> kernel: [ 1.651787] snd_hda_codec_hdmi: probe of hdaudioC0D0 failed with >> error -16 >> " >> >> This patch add invalid pcm number filter before calling hdmi_create_eld_ctl. >> >> Fixes: fb087eaaef72 ("ALSA: hda - hdmi eld control created based on pcm") >> Signed-off-by: Wang YanQing <udkni...@gmail.com> >> Signed-off-by: Takashi Iwai <ti...@suse.de> >> Signed-off-by: Liwei Song <liwei.s...@windriver.com> >> --- >> sound/pci/hda/hda_codec.c | 4 +++- >> sound/pci/hda/hda_codec.h | 1 + >> sound/pci/hda/patch_hdmi.c | 14 ++++++++------ >> 3 files changed, 12 insertions(+), 7 deletions(-) >> >> diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c >> index 70bb365a08d2..9b044b2c573f 100644 >> --- a/sound/pci/hda/hda_codec.c >> +++ b/sound/pci/hda/hda_codec.c >> @@ -3402,8 +3402,10 @@ int snd_hda_codec_build_pcms(struct hda_codec *codec) >> continue; /* no substreams assigned */ >> dev = get_empty_pcm_device(bus, cpcm->pcm_type); >> - if (dev < 0) >> + if (dev < 0) { >> + cpcm->device = SNDRV_PCM_INVALID_DEVICE; >> continue; /* no fatal error */ >> + } >> cpcm->device = dev; >> err = snd_hda_attach_pcm_stream(bus, codec, cpcm); >> if (err < 0) { >> diff --git a/sound/pci/hda/hda_codec.h b/sound/pci/hda/hda_codec.h >> index 60ce1cfc300f..681c360f29f9 100644 >> --- a/sound/pci/hda/hda_codec.h >> +++ b/sound/pci/hda/hda_codec.h >> @@ -164,6 +164,7 @@ enum { >> HDA_PCM_NTYPES >> }; >> +#define SNDRV_PCM_INVALID_DEVICE (-1) >> /* for PCM creation */ >> struct hda_pcm { >> char *name; >> diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c >> index c87ff8e5d1d5..a2d81a77572b 100644 >> --- a/sound/pci/hda/patch_hdmi.c >> +++ b/sound/pci/hda/patch_hdmi.c >> @@ -2125,7 +2125,7 @@ static int generic_hdmi_build_jack(struct hda_codec >> *codec, int pcm_idx) >> static int generic_hdmi_build_controls(struct hda_codec *codec) >> { >> struct hdmi_spec *spec = codec->spec; >> - int err; >> + int dev, err; >> int pin_idx, pcm_idx; >> @@ -2153,11 +2153,13 @@ static int generic_hdmi_build_controls(struct >> hda_codec *codec) >> return err; >> snd_hda_spdif_ctls_unassign(codec, pcm_idx); >> - /* add control for ELD Bytes */ >> - err = hdmi_create_eld_ctl(codec, pcm_idx, >> - get_pcm_rec(spec, pcm_idx)->device); >> - if (err < 0) >> - return err; >> + dev = get_pcm_rec(spec, pcm_idx)->device; >> + if (dev != SNDRV_PCM_INVALID_DEVICE) { >> + /* add control for ELD Bytes */ >> + err = hdmi_create_eld_ctl(codec, pcm_idx, dev); >> + if (err < 0) >> + return err; >> + } >> } >> for (pin_idx = 0; pin_idx < spec->num_pins; pin_idx++) { >> > > > -- _______________________________________________ linux-yocto mailing list linux-yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/linux-yocto