From a72ccfbad7fd6f604d8edd068119edb57e7984e1 Mon Sep 17 00:00:00 2001 From: Takashi Iwai Date: Wed, 15 Feb 2017 21:45:06 +0100 Subject: [PATCH] ALSA: x86: Don't return an error from chmap ctl at disconnected It's not wise to return an error at info/get callback when disconnected, which happens at any time. The chmap ctl is supposed to fill zero for such a case, instead. Signed-off-by: Takashi Iwai --- sound/x86/intel_hdmi_audio.c | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/sound/x86/intel_hdmi_audio.c b/sound/x86/intel_hdmi_audio.c index 5f2445389716..71f01204a590 100644 --- a/sound/x86/intel_hdmi_audio.c +++ b/sound/x86/intel_hdmi_audio.c @@ -504,11 +504,6 @@ static void had_build_channel_allocation_map(struct snd_intelhad *intelhaddata) static int had_chmap_ctl_info(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_info *uinfo) { - struct snd_pcm_chmap *info = snd_kcontrol_chip(kcontrol); - struct snd_intelhad *intelhaddata = info->private_data; - - if (!intelhaddata->connected) - return -ENODEV; uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER; uinfo->count = HAD_MAX_CHANNEL; uinfo->value.integer.min = 0; @@ -524,13 +519,12 @@ static int had_chmap_ctl_get(struct snd_kcontrol *kcontrol, int i; const struct snd_pcm_chmap_elem *chmap; - if (!intelhaddata->connected) - return -ENODEV; - + memset(ucontrol->value.integer.value, 0, + sizeof(long) * HAD_MAX_CHANNEL); mutex_lock(&intelhaddata->mutex); if (!intelhaddata->chmap->chmap) { mutex_unlock(&intelhaddata->mutex); - return -ENODATA; + return 0; } chmap = intelhaddata->chmap->chmap; -- 2.20.1