ASoC: OMAP: Fix setup of XCCR and RCCR registers in McBSP DAI
authorJarkko Nikula <jhnikula@gmail.com>
Sun, 23 Aug 2009 09:24:26 +0000 (12:24 +0300)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Tue, 25 Aug 2009 09:20:48 +0000 (10:20 +0100)
Commit ca6e2ce08679c094878d7f39a0349a7db1d13675 is setting up few XCCR and
RCCR bits for I2S and DPS_A formats. Part of the bits are already set
for all formats and I believe that XDISABLE and RDISABLE bits are
format independent.

As XCCR and RCCR are found only from OMAP2430 and OMAP34xx, I move setup
of XDISABLE and RDISABLE to where those cpu's are tested and remove format
dependent part for simplicity.

Signed-off-by: Jarkko Nikula <jhnikula@gmail.com>
Acked-by: Eero Nurkkala <ext-eero.nurkkala@nokia.com>
Cc: Peter Ujfalusi <peter.ujfalusi@nokia.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
sound/soc/omap/omap-mcbsp.c

index f5387d9..89e8bce 100644 (file)
@@ -379,8 +379,8 @@ static int omap_mcbsp_dai_set_dai_fmt(struct snd_soc_dai *cpu_dai,
                regs->xcr2      |= XFIG;
        }
        if (cpu_is_omap2430() || cpu_is_omap34xx()) {
-               regs->xccr = DXENDLY(1) | XDMAEN;
-               regs->rccr = RFULL_CYCLE | RDMAEN;
+               regs->xccr = DXENDLY(1) | XDMAEN | XDISABLE;
+               regs->rccr = RFULL_CYCLE | RDMAEN | RDISABLE;
        }
 
        switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
@@ -388,15 +388,11 @@ static int omap_mcbsp_dai_set_dai_fmt(struct snd_soc_dai *cpu_dai,
                /* 1-bit data delay */
                regs->rcr2      |= RDATDLY(1);
                regs->xcr2      |= XDATDLY(1);
-               regs->rccr      |= RFULL_CYCLE | RDMAEN | RDISABLE;
-               regs->xccr      |= (DXENDLY(1) | XDMAEN | XDISABLE);
                break;
        case SND_SOC_DAIFMT_DSP_A:
                /* 1-bit data delay */
                regs->rcr2      |= RDATDLY(1);
                regs->xcr2      |= XDATDLY(1);
-               regs->rccr      |= RFULL_CYCLE | RDMAEN | RDISABLE;
-               regs->xccr      |= (DXENDLY(1) | XDMAEN | XDISABLE);
                /* Invert FS polarity configuration */
                temp_fmt ^= SND_SOC_DAIFMT_NB_IF;
                break;