Re: [PATCH] ALSA: hda/hdmi: Preserve the previous PCM device upon re-enablement

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

 



Hi,

On Mon, 3 Apr 2023, Jaroslav Kysela wrote:

> The question is, if ELD contains a serial number of the monitor. If there is
> no unique identification for similar monitors (one model), then we have no way
> to identify the audio devices properly.
[...]
> If I look to drm_edid_to_eld() function in drivers/gpu/drm/drm_edid.c I don't
> see any unique information to be copied for the identical monitors.

right, if you have two identical monitors, and to make things worse, you 
connect them via a DP-MST hub, we have a problem.

ELD certainly does not have the serial info. It does have a PortID
field, but that is an implementation specific field (in the HDA spec)
and at least based on quick check, seem to be zero filled on most systems.
Plus, existing apps (e.g. both Pulseaudio and Pipewire) only consider
Monitor_Name_String in ELD.

EDID does have fields for serial number and date of mfg. Not sure how 
widely implemented the serial number is, but I can see at least 
org.gnome.Mutter.DisplayConfig ([1] as used by e.g. GNOME Display Settings 
panel) do expose it and use it to identify displays (and e.g. remember the 
display layout).

In practise, Takashi's patch will probably cover a large amount of cases.
If you don't have a hub in between, the pin NID will be stable. If you 
have identical monitors, you might have to guess the right monitor on the 
first time, but subsequently the pin NID reuse will pick the same PCM for 
same monitor. With a hub in between, we are at mercy of how the DP-MST
device ids are allocated (if you have monitors of same type).

So indeed next step would be to expose the EDID serial number, and
make that available via ALSA so that apps could link a PCM to a monitor 
name plus serial number. As this is not part of ELD, this is somewhat
larger task (need to extend drm_audio_component.h to pass this info,
need to extend the ALSA user-space interface and get updates to clients).

[1] 
https://gitlab.gnome.org/GNOME/mutter/-/blob/main/data/dbus-interfaces/org.gnome.Mutter.DisplayConfig.xml  
,
https://wiki.gnome.org/Initiatives/Wayland/Gaps/DisplayConfig

Br, Kai



[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