On Mon, Jul 04, 2011 at 09:18:35PM +0900, Kukjin Kim wrote:

> +static void audio_buffdone(void *data)
> +{
> +     struct snd_pcm_substream *substream = data;
> +     struct runtime_data *prtd;
> +     struct dma_chan *chan;
> +
> +     prtd = substream->runtime->private_data;
> +
> +     chan = prtd->params->chan;
> +     prtd->params->desc =
> +             chan->device->device_prep_dma_cyclic(
> +             chan, prtd->dma_pos, prtd->dma_period, prtd->dma_period,
> +             substream->stream == SNDRV_PCM_STREAM_PLAYBACK ?
> +             DMA_TO_DEVICE : DMA_FROM_DEVICE);
> +     if (!prtd->params->desc)
> +             dev_err(&chan->dev->device, "cannot prepare cyclic dma\n");
> +
> +     prtd->params->desc->callback = audio_buffdone;
> +     prtd->params->desc->callback_param = substream;
> +     dmaengine_submit(prtd->params->desc);
> +
> +     prtd->dma_pos += prtd->dma_period;
> +     if (prtd->dma_pos >= prtd->dma_end)
> +             prtd->dma_pos = prtd->dma_start;
> +
> +     if (substream)
> +             snd_pcm_period_elapsed(substream);
> +}

Two questions here:

- It looks like a lot of this code can be shared between all the drivers
  using the dmaengine API.  Is there any reason not to factor it out?
- Should this not be adding a new driver for dmaengine based Samsung
  CPUs?  The ifdefs are very big.
--
To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to