Dne 04. 05. 21 v 17:47 Hans de Goede napsal(a):
Hi Jaroslav,
On 5/4/21 10:53 AM, Jaroslav Kysela wrote:
Dne 03. 05. 21 v 22:52 Hans de Goede napsal(a):
Hi All,
This series seems to have fallen through the cracks, so here is a resend of it.
Regards,
Thank you, Hans. The problem with this implementation is that it's really card specific. Also, ASoC codec drivers have usually ID names based on registers so the mapping for the user is problematic anyway (the functionality is different from the name or not related to the name). I'm actually evaluating another solution which is more flexible:
- add control remap plugin to allow the control ID remapping in the
alsa-lib's control API, so we can mangle those identifiers there (already implemented)
- add local and global alsa-lib configurations per UCM card specified in the
UCM configuration files; the configurations may be for both control and PCM devices (restrict or set specific parameters)
Ok, thank you for working on this.
I will notify you when I finish my tests.
Yes, please let me know when you've something ready to test, then I'll take a look at adding the necessary bits for the bycr-rt5640 and cht-bsw-rt567 UCM profiles, as some control renaming is necessary to make sure that the hw-volume control on these devices also correctly controls the hw mute controls (which in turn are necessary for both full muting and for mute LED control).
It seems that things started to work. I pushed everything to the repos (alsa-lib/alsa-utils/alsa-ucm-conf) and picked bits from your configs. If you can give a look and a test, it would be nice. The changes for the specific codecs are quite straight like:
https://github.com/alsa-project/alsa-ucm-conf/commit/2072ab794b69cdf4f070db5...
The global alsa-lib's configuration does the redirects to the hw specific configs (if found) per card. UCM can store this "per card" configuration to /var/lib/alsa/card<NUMBER>.conf.d tree, which allows us to define the hw specific configuration. Both control and PCM devices can be (re)configured.
UCM was extended to allow inline the alsa-lib's configuration which can be private to UCM or saved to a global config file (/var/lib/alsa tree for example).
By default, I made the private alsa-lib's configuration for all UCM applications, so the users cannot break UCM with their configuration changes.
Jaroslav