[PATCH 5/5] cht-bsw-rt5672: Fix HiFi-stereo-dmic2 conf not loading / working

Hans de Goede hdegoede at redhat.com
Mon Apr 6 12:07:42 CEST 2020


Hi,

On 4/6/20 12:02 PM, Hans de Goede wrote:
> Hi,
> 
> On 4/6/20 11:34 AM, Jaroslav Kysela wrote:
>> Dne 05. 04. 20 v 20:34 Hans de Goede napsal(a):
>>> Fix HiFi-stereo-dmic2 conf not loading because of references to
>>> non existing devices in the ConflictingDevices sections.
>>>
>>> Stop playing Rename + Remove tricks with the output (Speaker2) and
>>> input (DMIC1) devices which we do not want to be part of this config,
>>> this does not work now that we only allow devices which are actually
>>> part of our config in the ConflictingDevices sections.
>>
>> The Remove and Rename operations should also manage (remove and rename) devices in ConflictingDevices/SupportedDevices sections. What's the exact error you hit?
>>
>> If I simulate this via ucm-validator I get this device structure:
>>
>>   Verb: "HiFi"
>>      File: HiFi-stereo-dmic2.conf
>>      Device: "Headphones"
>>        ConflictingDevices.0 = Speaker
>>        Value.PlaybackPriority = 300
>>        Value.PlaybackPCM = 'hw:${CardId}'
>>        Value.JackControl = 'Headphone Jack'
>>      Device: "Headset"
>>        ConflictingDevices.0 = Mic
>>        Value.CapturePriority = 300
>>        Value.CapturePCM = 'hw:${CardId}'
>>        Value.JackControl = 'Headset Mic Jack'
>>      Device: "Speaker"
>>        ConflictingDevices.0 = Headphones
>>        Value.PlaybackPriority = 200
>>        Value.PlaybackPCM = 'hw:${CardId}'
>>      Device: "Mic"
>>        ConflictingDevices.0 = Headset
>>        Value.CapturePriority = 200
>>        Value.CapturePCM = 'hw:${CardId}'
>>
>> It appears like an issue in alsa-lib.
> 
> Ok so I found the following weird:
> 
> RemoveDevice."Speaker2" "Speaker2"
> 
> At a hunch I removed the extra "Speaker2", now I get:
> 
> [hans at localhost ~]$ alsaucm -c cht-bsw-rt5672 set _verb HiFi set _enadev Speaker
> ALSA lib parser.c:1138:(verb_dev_list_add) error: unable to find device 'Mic1'
> ...
> 
> Notice the error changed from being about Speaker2 to Mic1, so this looks good,
> but then I did the same with the:
> 
> RemoveDevice."Mic1" "Mic1"
> 
> Line, dropping the extra "Mic1" I get:
> 
> [hans at localhost ~]$ alsaucm -c cht-bsw-rt5672 set _verb HiFi set _enadev Speaker
> ALSA lib parser.c:1183:(verb_device_management) error: cannot remove device 'Mic'
> ...
> 
> Which is weird...
> 
> Even weirder I was thinking that the Rename + Remove lines should be after the last
> include, so that they also get applied to the Conflicting devices of e.g . the
> Headphones Section Device, but if I move the Rename + Remove lines for the Mic
> to the end of the HiFi-stereo-dmic2.conf file I get:
> 
> [hans at localhost ~]$ alsaucm -c cht-bsw-rt5672 set _verb HiFi set _enadev Speaker
> ALSA lib conf.c:1928:(_snd_config_load_with_include) _toplevel_:23:0:Unexpected end of file
> ALSA lib utils.c:285:(uc_mgr_config_load) could not load configuration file /usr/share/alsa/ucm2/cht-bsw-rt5672/HiFi-stereo-dmic2.conf
> ALSA lib parser.c:1349:(parse_verb_file) error: failed to open verb file /usr/share/alsa/ucm2/cht-bsw-rt5672/HiFi-stereo-dmic2.conf : 0
> ALSA lib main.c:962:(snd_use_case_mgr_open) error: failed to import cht-bsw-rt5672 use case configuration -22
> alsaucm: error failed to open sound card cht-bsw-rt5672: Invalid argument

Last mail, sorry about the spam.

Ok, this is caused by me removing the extra "Mic1" at the end of the RemoveDevice line.

Things still do not work with the in my mind more logical order of
having these at the end though.

Regards,

Hans



More information about the Alsa-devel mailing list