Currently the driver returns -ENODEV when the monitor is disconnected. But PA alsa module doesn't like this and it starts playing Juliet, kills itself as if it were a fatal tragedy.
Since we protect the whole read/write at disconnection, just allow the PCM accesses even during disconnection.
Signed-off-by: Takashi Iwai tiwai@suse.de --- sound/x86/intel_hdmi_audio.c | 22 ---------------------- 1 file changed, 22 deletions(-)
diff --git a/sound/x86/intel_hdmi_audio.c b/sound/x86/intel_hdmi_audio.c index 8b6e1c728798..f8fa3197f6ef 100644 --- a/sound/x86/intel_hdmi_audio.c +++ b/sound/x86/intel_hdmi_audio.c @@ -1044,13 +1044,6 @@ static int had_pcm_open(struct snd_pcm_substream *substream)
pm_runtime_get_sync(intelhaddata->dev);
- if (!intelhaddata->connected) { - dev_dbg(intelhaddata->dev, "%s: HDMI cable plugged-out\n", - __func__); - retval = -ENODEV; - goto error; - } - /* set the runtime hw parameter with local snd_pcm_hardware struct */ runtime->hw = had_pcm_hardware;
@@ -1176,14 +1169,6 @@ static int had_pcm_trigger(struct snd_pcm_substream *substream, int cmd) case SNDRV_PCM_TRIGGER_START: case SNDRV_PCM_TRIGGER_PAUSE_RELEASE: case SNDRV_PCM_TRIGGER_RESUME: - /* Disable local INTRs till register prgmng is done */ - if (!intelhaddata->connected) { - dev_dbg(intelhaddata->dev, - "_START: HDMI cable plugged-out\n"); - retval = -ENODEV; - break; - } - /* Enable Audio */ had_ack_irqs(intelhaddata); /* FIXME: do we need this? */ had_enable_audio(intelhaddata, true); @@ -1217,13 +1202,6 @@ static int had_pcm_prepare(struct snd_pcm_substream *substream) intelhaddata = snd_pcm_substream_chip(substream); runtime = substream->runtime;
- if (!intelhaddata->connected) { - dev_dbg(intelhaddata->dev, "%s: HDMI cable plugged-out\n", - __func__); - retval = -ENODEV; - goto prep_end; - } - dev_dbg(intelhaddata->dev, "period_size=%d\n", (int)frames_to_bytes(runtime, runtime->period_size)); dev_dbg(intelhaddata->dev, "periods=%d\n", runtime->periods);