diff mbox series

[alsa-ucm-conf,2/2] sof-soundwire: Add support for cs42l43/cs35l56 bridge configuration

Message ID 20240624122041.952863-2-ckeepax@opensource.cirrus.com (mailing list archive)
State Superseded
Headers show
Series [alsa-ucm-conf,1/2] sof-soundwire: Add missing match for cs42l43 speakers | expand

Commit Message

Charles Keepax June 24, 2024, 12:20 p.m. UTC
The cs42l43 has both a SPI master and an I2S interface, in some
configurations 2 cs35l56 amplifiers are connected to these to provide
bass speakers whilst the cs42l43's internal speaker drivers are used for
the tweeters. Add UCM configuration for this type of system.

Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
---
 ucm2/sof-soundwire/cs35l56-bridge.conf | 61 ++++++++++++++++++++++++++
 ucm2/sof-soundwire/sof-soundwire.conf  |  2 +-
 2 files changed, 62 insertions(+), 1 deletion(-)
 create mode 100644 ucm2/sof-soundwire/cs35l56-bridge.conf

Comments

Jaroslav Kysela June 24, 2024, 12:41 p.m. UTC | #1
On 24. 06. 24 14:20, Charles Keepax wrote:
> The cs42l43 has both a SPI master and an I2S interface, in some
> configurations 2 cs35l56 amplifiers are connected to these to provide
> bass speakers whilst the cs42l43's internal speaker drivers are used for
> the tweeters. Add UCM configuration for this type of system.
> 
> Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
> ---
>   ucm2/sof-soundwire/cs35l56-bridge.conf | 61 ++++++++++++++++++++++++++
>   ucm2/sof-soundwire/sof-soundwire.conf  |  2 +-
>   2 files changed, 62 insertions(+), 1 deletion(-)
>   create mode 100644 ucm2/sof-soundwire/cs35l56-bridge.conf
> 
> diff --git a/ucm2/sof-soundwire/cs35l56-bridge.conf b/ucm2/sof-soundwire/cs35l56-bridge.conf
> new file mode 100644
> index 0000000..6fafc80
> --- /dev/null
> +++ b/ucm2/sof-soundwire/cs35l56-bridge.conf
> @@ -0,0 +1,61 @@
> +# Use case Configuration for sof-soundwire card
> +
> +LibraryConfig.remap.Config {
> +	ctl.default.map {
> +		"name='cs42l43 Bridge Switch'" {
> +			"name='AMPL Speaker Switch'".vindex.0 0
> +			"name='AMPR Speaker Switch'".vindex.1 0

The logical/abstract names should not contains any chip or specific hardware 
identification. Just use "Speaker Switch" and "Speaker Volume" to not confuse 
users.

For my information - "AMPL/R Speaker Volume" is digital or analog volume control?

				Thanks,
					Jaroslav
Charles Keepax June 24, 2024, 1:28 p.m. UTC | #2
On Mon, Jun 24, 2024 at 02:41:45PM +0200, Jaroslav Kysela wrote:
> On 24. 06. 24 14:20, Charles Keepax wrote:
> > The cs42l43 has both a SPI master and an I2S interface, in some
> > configurations 2 cs35l56 amplifiers are connected to these to provide
> > bass speakers whilst the cs42l43's internal speaker drivers are used for
> > the tweeters. Add UCM configuration for this type of system.
> > 
> > Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
> > ---
> >   ucm2/sof-soundwire/cs35l56-bridge.conf | 61 ++++++++++++++++++++++++++
> >   ucm2/sof-soundwire/sof-soundwire.conf  |  2 +-
> >   2 files changed, 62 insertions(+), 1 deletion(-)
> >   create mode 100644 ucm2/sof-soundwire/cs35l56-bridge.conf
> > 
> > diff --git a/ucm2/sof-soundwire/cs35l56-bridge.conf b/ucm2/sof-soundwire/cs35l56-bridge.conf
> > new file mode 100644
> > index 0000000..6fafc80
> > --- /dev/null
> > +++ b/ucm2/sof-soundwire/cs35l56-bridge.conf
> > @@ -0,0 +1,61 @@
> > +# Use case Configuration for sof-soundwire card
> > +
> > +LibraryConfig.remap.Config {
> > +	ctl.default.map {
> > +		"name='cs42l43 Bridge Switch'" {
> > +			"name='AMPL Speaker Switch'".vindex.0 0
> > +			"name='AMPR Speaker Switch'".vindex.1 0
> 
> The logical/abstract names should not contains any chip or specific hardware
> identification. Just use "Speaker Switch" and "Speaker Volume" to not
> confuse users.
> 

Can do.

> For my information - "AMPL/R Speaker Volume" is digital or analog volume control?
> 

It's a digital volume, although I guess technically its
controlled by firmware in this case, so in the future it could
be updated to actually control the analog volume, but I am not
aware of any plans to do so.

Thanks,
Charles
diff mbox series

Patch

diff --git a/ucm2/sof-soundwire/cs35l56-bridge.conf b/ucm2/sof-soundwire/cs35l56-bridge.conf
new file mode 100644
index 0000000..6fafc80
--- /dev/null
+++ b/ucm2/sof-soundwire/cs35l56-bridge.conf
@@ -0,0 +1,61 @@ 
+# Use case Configuration for sof-soundwire card
+
+LibraryConfig.remap.Config {
+	ctl.default.map {
+		"name='cs42l43 Bridge Switch'" {
+			"name='AMPL Speaker Switch'".vindex.0 0
+			"name='AMPR Speaker Switch'".vindex.1 0
+		}
+		"name='cs42l43 Bridge Volume'" {
+			"name='AMPL Speaker Volume'".vindex.0 0
+			"name='AMPR Speaker Volume'".vindex.1 0
+		}
+	}
+}
+
+SectionDevice."Speaker" {
+	Comment "Speaker"
+
+	ConflictingDevice [
+		"Headphones"
+	]
+
+	EnableSequence [
+		cset "name='cs42l43 Speaker L Input 1' 'ASPRX1'"
+		cset "name='cs42l43 Speaker R Input 1' 'ASPRX2'"
+		cset "name='cs42l43 ASPTX1 Input' 'DP5RX1'"
+		cset "name='cs42l43 ASPTX2 Input' 'DP5RX2'"
+
+		cset "name='AMPL ASP1 TX1 Source' 'DSP1TX1'"
+		cset "name='AMPL ASP1 TX2 Source' 'None'"
+		cset "name='AMPL ASP1 TX3 Source' 'None'"
+		cset "name='AMPL ASP1 TX4 Source' 'None'"
+
+		cset "name='AMPR ASP1 TX1 Source' 'None'"
+		cset "name='AMPR ASP1 TX2 Source' 'DSP1TX1'"
+		cset "name='AMPR ASP1 TX3 Source' 'None'"
+		cset "name='AMPR ASP1 TX4 Source' 'None'"
+
+		cset "name='cs42l43 Speaker Digital Switch' 1"
+		cset "name='cs42l43 Speaker Digital Volume' 128"
+	]
+
+	DisableSequence [
+		cset "name='cs42l43 Speaker Digital Switch' 0"
+
+		cset "name='AMPL ASP1 TX2 Source' 'None'"
+		cset "name='AMPR ASP1 TX1 Source' 'None'"
+
+		cset "name='cs42l43 ASPTX1 Input' 'None'"
+		cset "name='cs42l43 ASPTX2 Input' 'None'"
+		cset "name='cs42l43 Speaker L Input 1' 'None'"
+		cset "name='cs42l43 Speaker R Input 1' 'None'"
+	]
+
+	Value {
+		PlaybackPriority 100
+		PlaybackPCM "hw:${CardId},0"
+		PlaybackMixer "default:${CardId}"
+		PlaybackMixerElem "cs42l43 Bridge"
+	}
+}
diff --git a/ucm2/sof-soundwire/sof-soundwire.conf b/ucm2/sof-soundwire/sof-soundwire.conf
index 2f61d11..2ede1cd 100644
--- a/ucm2/sof-soundwire/sof-soundwire.conf
+++ b/ucm2/sof-soundwire/sof-soundwire.conf
@@ -21,7 +21,7 @@  Define {
 
 DefineRegex {
 	SpeakerCodec {
-		Regex " spk:([a-z0-9]+((-sdca)|(-spk))?)"
+		Regex " spk:([a-z0-9]+((-sdca)|(-spk)|(-bridge))?)"
 		String "${CardComponents}"
 	}
 	SpeakerChannels {