Message ID | 20131202101256.GA29373@lee--X1 |
---|---|
State | New |
Headers | show |
On Mon, Dec 02, 2013 at 10:12:56AM +0000, Lee Jones wrote: > It's actually my fault. I had two patches round the wrong way in the > series. The imediately subsequent patch in the set fixes this issue: OK, so what do we do about this? Is there going to be a revision of that patch adding the note about not using the autoconfiguration stuff and what (if any) are the dependencies on the arch/arm changes?
On Mon, 02 Dec 2013, Mark Brown wrote: > On Mon, Dec 02, 2013 at 10:12:56AM +0000, Lee Jones wrote: > > > It's actually my fault. I had two patches round the wrong way in the > > series. The imediately subsequent patch in the set fixes this issue: > > OK, so what do we do about this? Is there going to be a revision of > that patch adding the note about not using the autoconfiguration stuff > and what (if any) are the dependencies on the arch/arm changes? I can shoot out a revision no problem. I'm not aware of any dependencies on the ARM changes. I haven't tested the arch/arm and sound/soc adaptions orthogonally, but I _think_ the right decisions should be made depending on the information passed from platform/dt code.
On Mon, Dec 02, 2013 at 02:03:24PM +0000, Lee Jones wrote: > I'm not aware of any dependencies on the ARM changes. I haven't tested > the arch/arm and sound/soc adaptions orthogonally, but I _think_ the > right decisions should be made depending on the information passed > from platform/dt code. OK, that sounds great thanks.
diff --git a/sound/soc/ux500/ux500_pcm.c b/sound/soc/ux500/ux500_pcm.c index ce554de..acfec98 100644 --- a/sound/soc/ux500/ux500_pcm.c +++ b/sound/soc/ux500/ux500_pcm.c @@ -139,15 +139,33 @@ static const struct snd_dmaengine_pcm_config ux500_dmaengine_pcm_config = { .prepare_slave_config = ux500_pcm_prepare_slave_config, }; +static const struct snd_dmaengine_pcm_config ux500_dmaengine_of_pcm_config = { + .pcm_hardware = &ux500_pcm_hw, + .prealloc_buffer_size = 128 * 1024, + .prepare_slave_config = snd_dmaengine_pcm_prepare_slave_config, +}; + int ux500_pcm_register_platform(struct platform_device *pdev) { + const struct snd_dmaengine_pcm_config *pcm_config; + struct device_node *np = pdev->dev.of_node; + unsigned int pcm_flags; int ret; - ret = snd_dmaengine_pcm_register(&pdev->dev, - &ux500_dmaengine_pcm_config, - SND_DMAENGINE_PCM_FLAG_NO_RESIDUE | - SND_DMAENGINE_PCM_FLAG_COMPAT | - SND_DMAENGINE_PCM_FLAG_NO_DT); + if (np) { + pcm_config = &ux500_dmaengine_of_pcm_config; + + pcm_flags = SND_DMAENGINE_PCM_FLAG_NO_RESIDUE | + SND_DMAENGINE_PCM_FLAG_COMPAT; + } else { + pcm_config = &ux500_dmaengine_pcm_config; + + pcm_flags = SND_DMAENGINE_PCM_FLAG_NO_RESIDUE | + SND_DMAENGINE_PCM_FLAG_NO_DT | + SND_DMAENGINE_PCM_FLAG_COMPAT; + } + + ret = snd_dmaengine_pcm_register(&pdev->dev, pcm_config, pcm_flags); if (ret < 0) { dev_err(&pdev->dev, "%s: ERROR: Failed to register platform '%s' (%d)!\n",