]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
ASoC: atmel-pcm-dma: move prepare for dma to dai prepare
authorBo Shen <voice.shen@atmel.com>
Wed, 3 Jul 2013 08:37:58 +0000 (16:37 +0800)
committerMark Brown <broonie@linaro.org>
Mon, 15 Jul 2013 10:07:56 +0000 (11:07 +0100)
as prepare callback for dma is acctually access ssc register
which better done in dai driver, so move it to dai prepare
callback function

Signed-off-by: Bo Shen <voice.shen@atmel.com>
Reviewed-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Mark Brown <broonie@linaro.org>
sound/soc/atmel/atmel-pcm-dma.c
sound/soc/atmel/atmel_ssc_dai.c

index 1d38fd0bc4e26bd49772d7e030efb7e283e5687f..5a57803cb180aad376fc7ac9f82c9e764698eef4 100644 (file)
@@ -175,19 +175,6 @@ err:
        return ret;
 }
 
-static int atmel_pcm_dma_prepare(struct snd_pcm_substream *substream)
-{
-       struct snd_soc_pcm_runtime *rtd = substream->private_data;
-       struct atmel_pcm_dma_params *prtd;
-
-       prtd = snd_soc_dai_get_dma_data(rtd->cpu_dai, substream);
-
-       ssc_writex(prtd->ssc->regs, SSC_IER, prtd->mask->ssc_error);
-       ssc_writex(prtd->ssc->regs, SSC_CR, prtd->mask->ssc_enable);
-
-       return 0;
-}
-
 static int atmel_pcm_open(struct snd_pcm_substream *substream)
 {
        snd_soc_set_runtime_hwparams(substream, &atmel_pcm_dma_hardware);
@@ -200,7 +187,6 @@ static struct snd_pcm_ops atmel_pcm_ops = {
        .close          = snd_dmaengine_pcm_close_release_chan,
        .ioctl          = snd_pcm_lib_ioctl,
        .hw_params      = atmel_pcm_hw_params,
-       .prepare        = atmel_pcm_dma_prepare,
        .trigger        = snd_dmaengine_pcm_trigger,
        .pointer        = snd_dmaengine_pcm_pointer_no_residue,
        .mmap           = atmel_pcm_mmap,
index 1ab47639f11c99d82378df950673fe5a3cfe32f9..0ecf356027f6c1fcc91693e4c7063152fe3ac706 100644 (file)
@@ -649,6 +649,7 @@ static int atmel_ssc_prepare(struct snd_pcm_substream *substream,
        dma_params = ssc_p->dma_params[dir];
 
        ssc_writel(ssc_p->ssc->regs, CR, dma_params->mask->ssc_enable);
+       ssc_writel(ssc_p->ssc->regs, IER, dma_params->mask->ssc_error);
 
        pr_debug("%s enabled SSC_SR=0x%08x\n",
                        dir ? "receive" : "transmit",