This patchset adds support for the Everest Semi ES8328 audio codec. It also adds support for using the es8328 on IMX boards.
We write a machine driver rather than using simple-card because the machine driver needs to support regulators for the speaker amps and as well as supporting headphone jacks, in addition to the i.MX audmux routing.
Changes since v6: - Minor clarification of AUDMUX in imx-audio-es8328.txt - Use u32 instead of int in imx-es8328.c for int-mux and ext-mux - Bounds checking on mux-int-port and mux-ext-port in imx-es8328.c - Remove NULL checks before calling of_node_put()
Changes since v5: - Removed empty imx_set_frequency function from imx-es8328.c - Move the clock from imx-audio-es8328 to the es8328 codec itself - Add support for 2x (22.5792 MHz) and 1x (11.2896 MHz) source clocks - Restore registers on resume - Document pins for ES8328, including input pins
Changes since v4: - Simplify clock handling and use assigned-clock-parents - Move the codec regulator from the machine driver to the codec - Specify all four regulators, and require their presence - Fix audio recording, such that it enables the PGA
Changes since v3: - Add OF bindings for everest,es8328 - Add back in patch to add everest as a vendor prefix - Give clocks more generic names - Document required clocks in DT bindings document
Changes since v2: - Change deemph to a bool, and update based on sample rate - Replace value enums with regular enums - Break SPI and I2C drivers into their own modules - Rename everest,es8328 to es8328 as the module wasn't getting detected. Because of this, the patch to vendor-prefixes.txt has been dropped.
Changes since v1: - Rename HP/Speaker to OUT1/OUT2 - Use DAPM widgets for startup/shutdown - Add regulator support to machine driver
Sean Cross (3): devicetree: bindings: Add Everest Semicodunctor ASoC: add es8328 codec driver ASoC: fsl: add imx-es8328 machine driver
Documentation/devicetree/bindings/sound/es8328.txt | 38 ++ .../devicetree/bindings/sound/imx-audio-es8328.txt | 61 ++ .../devicetree/bindings/vendor-prefixes.txt | 1 + sound/soc/codecs/Kconfig | 13 + sound/soc/codecs/Makefile | 6 + sound/soc/codecs/es8328-i2c.c | 60 ++ sound/soc/codecs/es8328-spi.c | 49 ++ sound/soc/codecs/es8328.c | 719 +++++++++++++++++++++ sound/soc/codecs/es8328.h | 314 +++++++++ sound/soc/fsl/Kconfig | 14 + sound/soc/fsl/Makefile | 2 + sound/soc/fsl/imx-es8328.c | 233 +++++++ 12 files changed, 1510 insertions(+) create mode 100644 Documentation/devicetree/bindings/sound/es8328.txt create mode 100644 Documentation/devicetree/bindings/sound/imx-audio-es8328.txt create mode 100644 sound/soc/codecs/es8328-i2c.c create mode 100644 sound/soc/codecs/es8328-spi.c create mode 100644 sound/soc/codecs/es8328.c create mode 100644 sound/soc/codecs/es8328.h create mode 100644 sound/soc/fsl/imx-es8328.c