]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
ASoC: fsl_sai: Add imx6sx platform support
authorNicolin Chen <Guangyu.Chen@freescale.com>
Tue, 1 Apr 2014 11:34:09 +0000 (19:34 +0800)
committerMark Brown <broonie@linaro.org>
Mon, 14 Apr 2014 16:26:05 +0000 (17:26 +0100)
The next coming i.MX6 Solo X SoC also contains SAI module while we use
imp_pcm_init() for i.MX platform.

So this patch adds one compatible route for imx6sx and updates the DT
doc accordingly.

Signed-off-by: Nicolin Chen <Guangyu.Chen@freescale.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
Documentation/devicetree/bindings/sound/fsl-sai.txt
sound/soc/fsl/fsl_sai.c
sound/soc/fsl/fsl_sai.h

index 98611a6761c0ad0a5f8dc9e354442918238cb762..35c09fe5847a7c51adf48bb726f03d721f3b3b37 100644 (file)
@@ -7,7 +7,7 @@ codec/DSP interfaces.
 
 
 Required properties:
-- compatible: Compatible list, contains "fsl,vf610-sai".
+- compatible: Compatible list, contains "fsl,vf610-sai" or "fsl,imx6sx-sai".
 - reg: Offset and length of the register set for the device.
 - clocks: Must contain an entry for each entry in clock-names.
 - clock-names : Must include the "sai" entry.
index 21de5bd1c9c5b22906ece158306ae5968ae79fb1..dde084273c6422ace0a607b6567f28141a7dbf8d 100644 (file)
@@ -22,6 +22,7 @@
 #include <sound/pcm_params.h>
 
 #include "fsl_sai.h"
+#include "imx-pcm.h"
 
 #define FSL_SAI_FLAGS (FSL_SAI_CSR_SEIE |\
                       FSL_SAI_CSR_FEIE)
@@ -592,6 +593,9 @@ static int fsl_sai_probe(struct platform_device *pdev)
 
        sai->pdev = pdev;
 
+       if (of_device_is_compatible(pdev->dev.of_node, "fsl,imx6sx-sai"))
+               sai->sai_on_imx = true;
+
        sai->big_endian_regs = of_property_read_bool(np, "big-endian-regs");
        if (sai->big_endian_regs)
                fsl_sai_regmap_config.val_format_endian = REGMAP_ENDIAN_BIG;
@@ -634,12 +638,16 @@ static int fsl_sai_probe(struct platform_device *pdev)
        if (ret)
                return ret;
 
-       return devm_snd_dmaengine_pcm_register(&pdev->dev, NULL,
-                       SND_DMAENGINE_PCM_FLAG_NO_RESIDUE);
+       if (sai->sai_on_imx)
+               return imx_pcm_dma_init(pdev);
+       else
+               return devm_snd_dmaengine_pcm_register(&pdev->dev, NULL,
+                               SND_DMAENGINE_PCM_FLAG_NO_RESIDUE);
 }
 
 static const struct of_device_id fsl_sai_ids[] = {
        { .compatible = "fsl,vf610-sai", },
+       { .compatible = "fsl,imx6sx-sai", },
        { /* sentinel */ }
 };
 
index be26d46ee7376a0155ce74456728e893985598d6..677670d62fcdac033c0f1dd548b17f15a132b30c 100644 (file)
@@ -130,6 +130,7 @@ struct fsl_sai {
        bool big_endian_regs;
        bool big_endian_data;
        bool is_dsp_mode;
+       bool sai_on_imx;
 
        struct snd_dmaengine_dai_dma_data dma_params_rx;
        struct snd_dmaengine_dai_dma_data dma_params_tx;