We support normal mode, TDM mode and pm.
Changes since v2: [addressed comments from Andy, Fabio and Rob] * sort include files * use probe_new * reword the binding document * use adc@10 instead of ak5558@10 * remove file name at the beginning of codec source code. * make i2c_probe and i2c_remove parameters naming consistent.
Changes since v1: [addressed comments from Andy and Fabio] * fix GPIO polarity from active high to active low for correct documentation * fix license header by using SPDX identifier * remove debug prints at the beginning of functions. * only support auto clock switching (manual switching was dead code anyway) (in the future we could add a DT property to choose between manual and auto) * Use gpiod API * use GENMASK * introduce power_off/power_on
One open question is the resume sequence which appears to need power_off/power_on. Just power_on alone isn't enough. With just power_on after resume aplay plays a song for 1 seconds and then the sound stops.
Datasheet says, page 55"
(1) The PDN pin should be held to āLā for more than 150 ns after AVDD and TVDD are powered up.
Daniel Baluta (2): ASoC: codecs: Add support for AK5558 ADC driver ASoC: ak5558: Add bindings for AK5558 ADC
Documentation/devicetree/bindings/sound/ak5558.txt | 22 + sound/soc/codecs/Kconfig | 6 + sound/soc/codecs/Makefile | 2 + sound/soc/codecs/ak5558.c | 618 +++++++++++++++++++++ sound/soc/codecs/ak5558.h | 52 ++ 5 files changed, 700 insertions(+) create mode 100644 Documentation/devicetree/bindings/sound/ak5558.txt create mode 100644 sound/soc/codecs/ak5558.c create mode 100644 sound/soc/codecs/ak5558.h