ASoC: cs4234: Add support for Cirrus Logic CS4234 codec
authorLucas Tanure <tanureal@opensource.cirrus.com>
Mon, 28 Sep 2020 11:18:21 +0000 (12:18 +0100)
committerMark Brown <broonie@kernel.org>
Mon, 28 Sep 2020 16:59:06 +0000 (17:59 +0100)
commitd4edae9c508c845d92bd59c60c4089c3addad6a8
tree8fea15db469b295fd14474640e70d7f380fee3e7
parent5ebba5e7d71c965763f722e68cc60b8a4aa9cb31
ASoC: cs4234: Add support for Cirrus Logic CS4234 codec

The CS4234 is a highly versatile CODEC that combines 4 channels of
high performance analog to digital conversion, 4 channels of high
performance digital to analog conversion for audio, and 1 channel of
digital to analog conversion to provide a nondelayed audio reference
signal to an external Class H tracking power supply.

DAC5 is only supported as a 5th audio channel. Tracking Power Supply
mode is not currently supported by the driver.

In DSP_A mode the slots for DAC1-4 and optionally DAC5 can be set.
The codec always claims 4 slots for DAC1-4 and these must be in the
same nibble of the mask. The codec has a fixed mapping for ADC slots.

In I2S/LJ modes the codec has a fixed mapping for DAC1-4 and ADC1-4.
DAC5 is not available in these modes.

The MCLK source must be preset to a valid frequency before probe()
because it must be running all the time the codec is out of reset.

The VA_SEL bit will be set automatically to 3.3v or 5v during probe()
based on the reported voltage of the regulator supplying VA.

Signed-off-by: Lucas Tanure <tanureal@opensource.cirrus.com>
Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Signed-off-by: Richard Fitzgerald <rf@opensource.cirrus.com>
Link: https://lore.kernel.org/r/20200928111821.26967-2-rf@opensource.cirrus.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/codecs/Kconfig
sound/soc/codecs/Makefile
sound/soc/codecs/cs4234.c [new file with mode: 0644]
sound/soc/codecs/cs4234.h [new file with mode: 0644]