add cs4271 and cs42727 support for fsl-asoc-card

Signed-off-by: Felipe F. Tonello <[email protected]>
---
 .../devicetree/bindings/sound/imx-audio-cs427x.txt | 47 ++++++++++++++++++++++
 sound/soc/fsl/Kconfig                              |  4 +-
 sound/soc/fsl/fsl-asoc-card.c                      |  7 ++++
 3 files changed, 56 insertions(+), 2 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/sound/imx-audio-cs427x.txt

diff --git a/Documentation/devicetree/bindings/sound/imx-audio-cs427x.txt 
b/Documentation/devicetree/bindings/sound/imx-audio-cs427x.txt
new file mode 100644
index 000000000000..295f60b19418
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/imx-audio-cs427x.txt
@@ -0,0 +1,47 @@
+Freescale i.MX audio complex with CS4271 or CS4272 codec
+
+Required properties:
+
+  - compatible         : "fsl,imx-audio-cs427x"
+
+  - model              : The user-visible name of this sound complex
+
+  - ssi-controller     : The phandle of the i.MX SSI controller
+
+  - audio-codec        : The phandle of the CS4271 audio codec
+
+  - audio-routing      : A list of the connections between audio components.
+                         Each entry is a pair of strings, the first being the
+                         connection's sink, the second being the connection's
+                         source. Valid names could be power supplies, CS427x
+                         pins, and the jacks on the board:
+
+                         Board connectors:
+                          * Mic Jack
+                          * Headphone Jack
+
+  - mux-int-port       : The internal port of the i.MX audio muxer (AUDMUX)
+
+  - mux-ext-port       : The external port of the i.MX audio muxer
+
+Note: The AUDMUX port numbering should start at 1, which is consistent with
+hardware manual.
+
+Example:
+
+sound {
+       compatible = "fsl,imx6-rex-cs427x",
+               "fsl,imx-audio-cs427x";
+       model = "audio-cs427x";
+       ssi-controller = <&ssi1>;
+       audio-codec = <&cs4271>;
+       audio-routing =
+               "Mic Jack", "AINA",
+               "Mic Jack", "AINB",
+               "Headphone Jack", "AOUTA+",
+               "Headphone Jack", "AOUTA-",
+               "Headphone Jack", "AOUTB+",
+               "Headphone Jack", "AOUTB-";
+       mux-int-port = <1>;
+       mux-ext-port = <3>;
+};
diff --git a/sound/soc/fsl/Kconfig b/sound/soc/fsl/Kconfig
index 14dfdee05fd5..35aabf9dc503 100644
--- a/sound/soc/fsl/Kconfig
+++ b/sound/soc/fsl/Kconfig
@@ -292,8 +292,8 @@ config SND_SOC_FSL_ASOC_CARD
        select SND_SOC_FSL_SSI
        help
         ALSA SoC Audio support with ASRC feature for Freescale SoCs that have
-        ESAI/SAI/SSI and connect with external CODECs such as WM8962, CS42888
-        and SGTL5000.
+        ESAI/SAI/SSI and connect with external CODECs such as WM8962, CS42888,
+        CS4271, CS4272 and SGTL5000.
         Say Y if you want to add support for Freescale Generic ASoC Sound Card.
 
 endif # SND_IMX_SOC
diff --git a/sound/soc/fsl/fsl-asoc-card.c b/sound/soc/fsl/fsl-asoc-card.c
index 562b3bd22d9a..56b6b07d1922 100644
--- a/sound/soc/fsl/fsl-asoc-card.c
+++ b/sound/soc/fsl/fsl-asoc-card.c
@@ -28,6 +28,8 @@
 #include "../codecs/wm8962.h"
 #include "../codecs/wm8960.h"
 
+#define CS427x_SYSCLK_MCLK 0
+
 #define RX 0
 #define TX 1
 
@@ -528,6 +530,10 @@ static int fsl_asoc_card_probe(struct platform_device 
*pdev)
                priv->cpu_priv.sysclk_dir[RX] = SND_SOC_CLOCK_OUT;
                priv->cpu_priv.slot_width = 32;
                priv->dai_fmt |= SND_SOC_DAIFMT_CBS_CFS;
+       } else if (of_device_is_compatible(np, "fsl,imx-audio-cs427x")) {
+               codec_dai_name = "cs4271-hifi";
+               priv->codec_priv.mclk_id = CS427x_SYSCLK_MCLK;
+               priv->dai_fmt |= SND_SOC_DAIFMT_CBM_CFM;
        } else if (of_device_is_compatible(np, "fsl,imx-audio-sgtl5000")) {
                codec_dai_name = "sgtl5000";
                priv->codec_priv.mclk_id = SGTL5000_SYSCLK;
@@ -681,6 +687,7 @@ fail:
 static const struct of_device_id fsl_asoc_card_dt_ids[] = {
        { .compatible = "fsl,imx-audio-ac97", },
        { .compatible = "fsl,imx-audio-cs42888", },
+       { .compatible = "fsl,imx-audio-cs427x", },
        { .compatible = "fsl,imx-audio-sgtl5000", },
        { .compatible = "fsl,imx-audio-wm8962", },
        { .compatible = "fsl,imx-audio-wm8960", },
-- 
2.7.0

Reply via email to