Re: [RFC PATCH] ASoC: codec: hdac_hdmi: no checking monitor in hw_params

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 5/6/19 10:41 AM, Takashi Iwai wrote:
On Mon, 06 May 2019 17:37:32 +0200,
Pierre-Louis Bossart wrote:

On 5/6/19 1:59 AM, libin.yang@xxxxxxxxx wrote:
From: Libin Yang <libin.yang@xxxxxxxxx>

This patch move the check of monitor from hw_params to trigger callback.

The original code will check the monitor presence in hw_params. If the
monitor doesn't exist, hw_params will return -ENODEV. Mostly this is OK.

However, pulseaudio will check the pcm devices when kernel is booting up.
It will try to open, set hw_params, prepare such pcm devices. We can't
guarantee that the monitor will be connected when kernel is booting up.
Especially, hdac_hdmi will export 3 pcms at most. It's hard to say users
will connect 3 monitors to the HDMI/DP ports. This will cause pulseaudio
fail in parsing the pcm devices because the driver will return -ENODEV in
hw_params.

This patch tries to move the check of monitor presence into trigger
callback. This can "trick" the pulseaudio the pcm is ready.

This bug is found when we try to enable HDMI detection in
gnome-sound-setting for ASoC hdac_hdmi. After we enable the hdmi in UCM,
pulseaudio will try to parse the hdmi pcm devices. It will cause failure if
there are no monitors connected.

Out of curiosity, how is this handled in the legacy driver? I haven't
done this for a long time but I remember very clearly being able to
play on the HDMI:3,7, etc devices without any monitors
connected. You'd get of course no sound but there was no error
reported to userspace. The hardware is perfectly capable of pushing
samples into the display controller using the HDAudio/iDisp link.

As mentioned in the thread, PA just picks up the stream that is
connected via a monitor by checking / notified by the corresponding
Jack control.  On hdac_hdmi driver, the jack control has different
base name that is irrelevant with the output pins, so PA doesn't know
how to interpret it, hence it's ignored.

Yes, but do we have any error checks in the hw_params or trigger cases with the legacy driver?
_______________________________________________
Alsa-devel mailing list
Alsa-devel@xxxxxxxxxxxxxxxx
https://mailman.alsa-project.org/mailman/listinfo/alsa-devel



[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Pulse Audio]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux