
- EnableSequence [
cset "name='AMP1 Speaker Switch' 1"
cset "name='AMP2 Speaker Switch' 1"
cset "name='AMP3 Speaker Switch' 1"
cset "name='AMP4 Speaker Switch' 1"
- ]
If we only need an on/off switch, I wonder if this can be made conditional, i.e. enable/disable a control if it exists. That would scale to various numbers of amplifiers without a need to add a 2-amp, 6 or 8-amp configuration.
I think that is possible, would you lean towards modifying HiFi.conf to only include a single file for cs35l56, or would you lean more towards having each cs35l56-x.conf file include a single base file?
I wasn't referring to partitioning of files, rather the conditional UCM syntax,
Condition { Type ControlExists Control "name='AMP4 Speaker Switch'" }
I get that, but once you have added those you still have the issue HiFi.conf will load the speaker use-case as follows:
False.Include.spkdev.File "/sof-soundwire/${var:SpeakerCodec1}-${var:SpeakerAmps1}.conf"
Meaning the number of amps will be part of the file name requested. So my question was how you wanted to deal with that? Personally I would lean towards just having all the cs35l56-8.conf, cs35l56-6.conf etc. include a cs35l56-base.conf. Its slightly more files, but feels a bit less crufty than having a special case for cs35l56 to not include the number of amps in the filename.
Ah yes, I forgot that part...
I must admit I don't recall either what we were trying to achieve in UCM with the number of amplifiers and speakers both added to the components string: "cfg-spk:%d cfg-amp:%d"
Probably best to go with your solution and see what can be optimized later...