At Tue, 17 Jul 2007 10:54:19 +0200, Hans-Christian Egtvedt wrote:
On Tue, 2007-07-17 at 10:48 +0200, Haavard Skinnemoen wrote:
On Tue, 17 Jul 2007 10:37:21 +0200 Hans-Christian Egtvedt hcegtvedt@atmel.com wrote:
- snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, &at73c213_playback_ops);
- retval = snd_pcm_lib_preallocate_pages_for_all(chip->pcm,
SNDRV_DMA_TYPE_DEV,
snd_dma_continuous_data(GFP_KERNEL),
64 * 1024, 64 * 1024);
For SNDRV_DMA_TYPE_DEV, pass the struct device pointer of the device to the third argument. Then the pre-allocator will allocate the memory via dma_alloc_coherent() with the givn device. If it's not appropriate, SNDRV_DMA_TYPE_CONTINUOUS type. Anyway, snd_dma_continuous_data() is only for SNDRV_DMA_TYPE_CONTINUOUS.
Ok, applied. Using &chip->spi->dev.
Not that I think it matters at the moment, but that's not entirely correct. The memory is used for DMA transfers to the SSC controller, not the SPI device, so you should pass the SSC's struct device here.
In other words, I think you should use &chip->ssc->pdev->dev.
Hmm, my fault, applied.
New patch attached.
The patch looks fine, but I suppose it's a post-2.6.23 material, judging from the current situation. Is it OK?
Then I'll queue it soon after the merge window is closed, so that your driver appears in the mm tree.
thanks,
Takashi