Thread (24 messages) 24 messages, 7 authors, 2012-05-29

[alsa-devel] [PATCH 2/4] ASoC: mmp: add audio dma support

From: Russell King - ARM Linux <hidden>
Date: 2012-05-29 08:01:54
Also in: alsa-devel

On Tue, May 29, 2012 at 03:57:18PM +0800, zhangfei gao wrote:
On Tue, May 29, 2012 at 3:33 PM, Russell King - ARM Linux
[off-list ref] wrote:
quoted
On Tue, May 29, 2012 at 10:48:54AM +0530, Vinod Koul wrote:
quoted
On Tue, 2012-05-29 at 13:14 +0800, zhangfei gao wrote:
quoted
When debugging with putting snd_dmaengine_pcm_open to probe or
pcm_new, there is issue.
snd_dmaengine_pcm_open ->
snd_pcm_hw_constraint_integer(substream->runtime,

SNDRV_PCM_HW_PARAM_PERIODS);
The runtime is only exist at runtime.
So if using soc-dmaengine, I am afraid the snd_dmaengine_pcm_open has
to be put in open instead of probe.
I think you got it wrong, the snd_dmaengine_pcm_open needs to be called
from your CPU pcm_open. See other examples how this is used in other
drivers.
But, as I pointed out earlier, there's the issue of using the wrong
struct device to allocate memory for the DMA engine. ?That's something
that my soc-dmaengine.c got _right_, and soc-dmaengine-pcm.c gets _wrong_.
Could you help clarify what's the struct device should be used?
Any example, not find soc-dmaengine.c.
When debug,
rtd->card->snd_card->dev is same as substream->pcm->card->dev, which
we using now.
When your intention is to DMA to/from some memory, that memory _should_
be mapped via the DMA API (or, in the case of dma_alloc_coherent,
allocated) _using_ the device associated with the agent performing the
DMA.

This is so that the DMA API can know whether there's an IOMMU that has
to be programmed for the DMA agent to be able to see the memory, or
whether there's restrictions on the range of RAM which is visible to
the DMA agent.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help