mirror of
https://github.com/torvalds/linux.git
synced 2024-11-23 04:31:50 +00:00
ALSA: x86: Don't bail out from PCM ops when disconnected
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>
This commit is contained in:
parent
2d42c033ae
commit
b1ef30e5ed
@ -1054,13 +1054,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;
|
||||
|
||||
@ -1186,14 +1179,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);
|
||||
@ -1227,13 +1212,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);
|
||||
|
Loading…
Reference in New Issue
Block a user