ASoC: Fix burstsize and DSP_B format problems in imx-ssi.
authorJavier Martin <javier.martin@vista-silicon.com>
Tue, 1 Mar 2011 14:02:06 +0000 (15:02 +0100)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Tue, 1 Mar 2011 23:30:14 +0000 (23:30 +0000)
When choosing IMX_DMA flag, burtsizes are set to its default
value (0) which leads to driver malfunction. Change them to 4.

DSP_B interface needs additional flag to match DSP_B formats
as described in several codecs as wm8741 and aic3205.

Signed-off-by: Javier Martin <javier.martin@vista-silicon.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
sound/soc/imx/imx-ssi.c

index 30894ea..bc92ec6 100644 (file)
@@ -108,7 +108,7 @@ static int imx_ssi_set_dai_fmt(struct snd_soc_dai *cpu_dai, unsigned int fmt)
                break;
        case SND_SOC_DAIFMT_DSP_B:
                /* data on rising edge of bclk, frame high with data */
-               strcr |= SSI_STCR_TFSL;
+               strcr |= SSI_STCR_TFSL | SSI_STCR_TXBIT0;
                break;
        case SND_SOC_DAIFMT_DSP_A:
                /* data on rising edge of bclk, frame high 1clk before data */
@@ -656,6 +656,9 @@ static int imx_ssi_probe(struct platform_device *pdev)
        ssi->dma_params_rx.dma_addr = res->start + SSI_SRX0;
        ssi->dma_params_tx.dma_addr = res->start + SSI_STX0;
 
+       ssi->dma_params_tx.burstsize = 4;
+       ssi->dma_params_rx.burstsize = 4;
+
        res = platform_get_resource_byname(pdev, IORESOURCE_DMA, "tx0");
        if (res)
                ssi->dma_params_tx.dma = res->start;