]> www.infradead.org Git - users/jedix/linux-maple.git/commit
ASoC: cs48l32: Add driver for Cirrus Logic CS48L32 audio DSP
authorRichard Fitzgerald <rf@opensource.cirrus.com>
Tue, 15 Apr 2025 11:50:16 +0000 (12:50 +0100)
committerMark Brown <broonie@kernel.org>
Tue, 15 Apr 2025 12:58:43 +0000 (13:58 +0100)
commite2bcbf99d045f6ae3826e39d1ed25978de17cbfe
treee3f30513d6a2a9261bcf329b90569e59a9697de4
parentac03495d7359285a007ec4fdc08d3843bb5d6b7e
ASoC: cs48l32: Add driver for Cirrus Logic CS48L32 audio DSP

Add a codec driver for the Cirrus Logic CS48L32 audio DSP.

The CS48L32 is a low-power audio DSP with microphone inputs for
"Always on Voice" (i.e. voice trigger) and voice command processing.
It has a programmable Halo Core DSP and a variety of power-efficient
fixed-function audio processors, with configurable digital mixing
and routing.

There are two I2S/TDM audio serial ports.

Four analogue inputs are available through IN1. These feed into a
2-channel ADC through an analogue mux. There is an ALSA control for
each IN1 ADC channel to select which analogue input to use.

A dedicated digital mic (DMIC) PDM input is available on IN2.

Two PDM outputs can feed DMIC inputs on another codec or a host DMIC/PDM
input.

An on-board regulator provides a power supply or bias voltage to
attached microphones. Three switchable MICBIAS outputs are fed from this
allowing only the microphone in use to be powered-up. There are DAPM
widgets for these outputs: MICBIAS1A, MICBIAS1B and MICBIAS1C. The machine
driver must create a DAPM route from the required MICBIAS1x widget to the
INn input widgets to make the MICBIAS switch on when the audio input is
powered-up. For example if the microphone feeding CS48L32 pin IN1LN_1 is
powered from MICBIAS1A, the machine driver must create the path:

  (sink) IN1LN_1   <----- (source) MICBIAS1A

Co-developed-by: Stuart Henderson <stuarth@opensource.cirrus.com>
Signed-off-by: Stuart Henderson <stuarth@opensource.cirrus.com>
Co-developed-by: Qi Zhou <qi.zhou@cirrus.com>
Signed-off-by: Qi Zhou <qi.zhou@cirrus.com>
Co-developed-by: Piotr Stankiewicz <piotrs@opensource.cirrus.com>
Signed-off-by: Piotr Stankiewicz <piotrs@opensource.cirrus.com>
Signed-off-by: Richard Fitzgerald <rf@opensource.cirrus.com>
Link: https://patch.msgid.link/20250415115016.505777-3-rf@opensource.cirrus.com
Signed-off-by: Mark Brown <broonie@kernel.org>
include/sound/cs48l32.h [new file with mode: 0644]
include/sound/cs48l32_registers.h [new file with mode: 0644]
sound/soc/codecs/Kconfig
sound/soc/codecs/Makefile
sound/soc/codecs/cs48l32-tables.c [new file with mode: 0644]
sound/soc/codecs/cs48l32.c [new file with mode: 0644]
sound/soc/codecs/cs48l32.h [new file with mode: 0644]