Skip to content

Commit 73cfbfa

Browse files
simontrimmerbroonie
authored andcommitted
ALSA: hda/cs35l56: Add driver for Cirrus Logic CS35L56 amplifier
Add a driver for the Cirrus Logic CS35L56 amplifier. This uses the same component binding API as the CS35L41 driver. This is not a standalone HDA device; it provides control of the CS35L56 for systems that use a combination of an HDA codec and CS35L56 amplifiers with audio routed through the HDA codec. The CS35L56 combines a high-performance mono audio amplifier, Class-H tracking inductive boost converter, Halo Core(TM) DSP and a DC-DC boost converter supporting Class-H tracking. Control interfaces are I2C or SPI through the standard Linux I2C or SPI bus framework. Most chip functionality is controlled by on-board ROM firmware that is always running. Firmware patches can be applied by the driver in the form of a .wmfw file (firmware patch) and/or a .bin file (system tuning). Signed-off-by: Simon Trimmer <simont@opensource.cirrus.com> Signed-off-by: Richard Fitzgerald <rf@opensource.cirrus.com> Reviewed-by: Takashi Iwai <tiwai@suse.de> Link: https://lore.kernel.org/r/20230721132120.5523-12-rf@opensource.cirrus.com Signed-off-by: Mark Brown <broonie@kernel.org>
1 parent 64e0532 commit 73cfbfa

6 files changed

Lines changed: 1217 additions & 0 deletions

File tree

sound/pci/hda/Kconfig

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,37 @@ config SND_HDA_SCODEC_CS35L41_SPI
130130
comment "Set to Y if you want auto-loading the side codec driver"
131131
depends on SND_HDA=y && SND_HDA_SCODEC_CS35L41_SPI=m
132132

133+
config SND_HDA_SCODEC_CS35L56
134+
tristate
135+
136+
config SND_HDA_SCODEC_CS35L56_I2C
137+
tristate "Build CS35L56 HD-audio side codec support for I2C Bus"
138+
depends on I2C
139+
depends on ACPI || COMPILE_TEST
140+
depends on SND_SOC
141+
select CS_DSP
142+
select SND_HDA_GENERIC
143+
select SND_SOC_CS35L56_SHARED
144+
select SND_HDA_SCODEC_CS35L56
145+
select SND_HDA_CS_DSP_CONTROLS
146+
help
147+
Say Y or M here to include CS35L56 amplifier support with
148+
I2C control.
149+
150+
config SND_HDA_SCODEC_CS35L56_SPI
151+
tristate "Build CS35L56 HD-audio side codec support for SPI Bus"
152+
depends on SPI_MASTER
153+
depends on ACPI || COMPILE_TEST
154+
depends on SND_SOC
155+
select CS_DSP
156+
select SND_HDA_GENERIC
157+
select SND_SOC_CS35L56_SHARED
158+
select SND_HDA_SCODEC_CS35L56
159+
select SND_HDA_CS_DSP_CONTROLS
160+
help
161+
Say Y or M here to include CS35L56 amplifier support with
162+
SPI control.
163+
133164
config SND_HDA_CODEC_REALTEK
134165
tristate "Build Realtek HD-audio codec support"
135166
select SND_HDA_GENERIC

sound/pci/hda/Makefile

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,9 @@ snd-hda-codec-hdmi-objs := patch_hdmi.o hda_eld.o
3131
snd-hda-scodec-cs35l41-objs := cs35l41_hda.o
3232
snd-hda-scodec-cs35l41-i2c-objs := cs35l41_hda_i2c.o
3333
snd-hda-scodec-cs35l41-spi-objs := cs35l41_hda_spi.o
34+
snd-hda-scodec-cs35l56-objs := cs35l56_hda.o
35+
snd-hda-scodec-cs35l56-i2c-objs := cs35l56_hda_i2c.o
36+
snd-hda-scodec-cs35l56-spi-objs := cs35l56_hda_spi.o
3437
snd-hda-cs-dsp-ctls-objs := hda_cs_dsp_ctl.o
3538

3639
# common driver
@@ -55,6 +58,9 @@ obj-$(CONFIG_SND_HDA_CODEC_HDMI) += snd-hda-codec-hdmi.o
5558
obj-$(CONFIG_SND_HDA_SCODEC_CS35L41) += snd-hda-scodec-cs35l41.o
5659
obj-$(CONFIG_SND_HDA_SCODEC_CS35L41_I2C) += snd-hda-scodec-cs35l41-i2c.o
5760
obj-$(CONFIG_SND_HDA_SCODEC_CS35L41_SPI) += snd-hda-scodec-cs35l41-spi.o
61+
obj-$(CONFIG_SND_HDA_SCODEC_CS35L56) += snd-hda-scodec-cs35l56.o
62+
obj-$(CONFIG_SND_HDA_SCODEC_CS35L56_I2C) += snd-hda-scodec-cs35l56-i2c.o
63+
obj-$(CONFIG_SND_HDA_SCODEC_CS35L56_SPI) += snd-hda-scodec-cs35l56-spi.o
5864
obj-$(CONFIG_SND_HDA_CS_DSP_CONTROLS) += snd-hda-cs-dsp-ctls.o
5965

6066
# this must be the last entry after codec drivers;

0 commit comments

Comments
 (0)