[alsa-devel] [PATCH] ASoC: mmp-pcm: config pcm slave via generic dmaengine

Lars-Peter Clausen lars at metafoo.de
Wed Dec 18 10:16:36 CET 2013


On 12/18/2013 06:55 AM, Qiao Zhou wrote:
> On 12/17/2013 10:42 PM, Lars-Peter Clausen wrote:
>> On 12/17/2013 01:49 PM, Mark Brown wrote:
>>> On Tue, Dec 17, 2013 at 04:22:24PM +0800, Qiao Zhou wrote:
>>>> use snd_dmaengine_pcm_prepare_slave_config to set slave config,
>>>> and remove the max_burst_size = 4 hard code.
>>>>
>>>> select SND_SOC_GENERIC_DMAENGINE_PCM for mmp-pcm.
>>>
>>> Applied, thanks.  Can you also convert to use snd_dmaengine_pcm_register()
>>> and remove this file completely?
>>>
>>
>> The problem here is that the driver uses sram for its audio memory and the
>> platform has a custom function for looking up the sram pool. What we really
>> need is a generic version of that which we can use in memalloc.c in the core.
>>
>> - Lars
>>
> I'll check the general memalloc implementation. Thanks.
> 

It's a bit dirty but if nobody has any strong objections we could add the
following temporary hack until there is a generic method for looking up
genpools. This would allow us to cut down mmp-pcm.c quite a bit by switching
it over to the generic dmaengine PCM driver.


--- a/sound/core/memalloc.c
+++ b/sound/core/memalloc.c
@@ -178,6 +178,15 @@ static void snd_malloc_dev_iram(struct snd_dma_buffer
*dmab, size_t size)
 	if (dev->of_node)
 		pool = of_get_named_gen_pool(dev->of_node, "iram", 0);

+#ifdef CONFIG_CPU_MMP2
+	/*
+	 * Temporary hack until we have a generic gen_pool lookup
+	 * infrastructure.
+	 */
+	if (!pool)
+		pool = sram_get_gpool("asram");
+#endif
+
 	if (!pool)
 		return;



More information about the Alsa-devel mailing list