[pulseaudio-discuss] [alsa-devel] Per board ucm files on x86?

Takashi Iwai tiwai at suse.de
Mon Dec 11 13:40:47 UTC 2017


On Mon, 11 Dec 2017 13:30:35 +0100,
Hans de Goede wrote:
> 
> Hi All,
> 
> This weekend I've created a modified ucm config based on:
> 
> https://github.com/plbossart/UCM/tree/master/chtrt5645
> 
> For a board which has a single speaker connected to the
> left channel (standard mono speaker setup) and a stereo
> headphone jack with working jack detection.
> 
> I've been unable to come up with a ucm file which allows
> selecting between a "Stereo Speaker + Headphone" vs
> "Mono Speaker + Headphone" output profile.
> 
> https://github.com/plbossart/UCM/tree/master/byt-rt5640
> has "Mono Speaker", "Stereo Speaker" and "Headphone"
> profiles but does not auto-switch between Headphone
> and speaker based on jack detection, I've been unable to
> allow selecting either stereo or mono speaker while
> keeping auto-switching to/from the headphones.
> 
> But thinking more about this I don't think that having
> "Stereo Speaker + Headphone" and "Mono Speaker + Headphone"
> profiles is the answer. Profiles make sense on machines with
> a bunch of outputs where we don't no what the user is going
> to plug in, but in this case the stereo vs mono speaker
> distinction is a clear property of the device, which we
> should IMHO autodetect based on the device-model.
> 
> So I think we need a way to have different ucm files per board,
> so instead of loading /usr/share/ucm/chtrt5645/*.conf on my
> device, alsa should try to load /usr/share/ucm/chtrt5645-<boardname>/*.conf
> 
> Specifically I'm thinking about using udev + hwdb (dmi string)
> matching to set an ALSA_UCM_NAME udev property.
> 
> If the consensus is that this is a good idea I can take a shot
> at writing patches for this (in my spare time mostly), the
> downside of this approach is it would cause a dependency on
> libudev for the alsa ucm code.

You don't need to patch, I guess.  The recent code should set a string
generated from DMI as the longname of the card, and alsa-lib UCM
parser prefers the longname to the driver name field.  That is,
/usr/share/ucm/$LONGNAME/$LONGNAME.conf would be read at first, then
/usr/share/ucm/$DRIVER/$DRIVER.conf is used as fallback.


Takashi


More information about the pulseaudio-discuss mailing list