[alsa-devel] [PATCH 2/2] ASoC: add pxa-squ dma support
Mark Brown
broonie at opensource.wolfsonmicro.com
Tue May 22 11:24:20 CEST 2012
On Mon, May 21, 2012 at 05:33:42PM -0700, Qiao Zhou wrote:
> Is there any suggestion/comment for this patch? Thanks!
Don't top post.
> +config SND_PXA_SOC_SQU
> + tristate
> + select GENERIC_ALLOCATOR
> +
The main reason I've left this is that I'm trying to decide what to say
about the fact that it's not using dmaengine - why is it not doing so?
There's also a few smaller issues below:
> + for (i = 0; i < 2; i++) {
> + dint = SDISR(i);
> + if (dint) {
> + substream = squ_data->stream[i];
> + prtd = substream->runtime->private_data;
> + if (SDISR(i) & 0x1)
> + snd_pcm_period_elapsed(substream);
> + else
> + pr_debug("%s: SQU error on channel %d\n",
> + prtd->params->name, i);
Should be dev_err().
> + SDISR(i) = 0;
> + }
> + }
> +
> + return IRQ_HANDLED;
This interrupt handler unconditionally returns IRQ_HANDLED even if there
were no interrupts reported. It should probably only do this if one of
the tests in the loop returned true.
> + /* return if this is a bufferless transfer e.g.
> + * codec <--> BT codec or GSM modem -- lg FIXME */
> + if (!dma)
> + return 0;
Remove this, systems should use the framework features for this (and I
don't think you're Liam...).
> + prtd = kzalloc(sizeof(struct pxa_runtime_data), GFP_KERNEL);
> + if (prtd == NULL) {
> + ret = -ENOMEM;
> + goto out;
> + }
devm_kzalloc().
> +struct snd_soc_platform_driver pxa_squ_soc_platform = {
> + .ops = &pxa_squ_pcm_ops,
> + .pcm_new = pxa_squ_pcm_new,
> + .pcm_free = pxa_squ_pcm_free,
> +};
> +EXPORT_SYMBOL_GPL(pxa_squ_soc_platform);
This should never need to be exported.
> + squ_data = kzalloc(sizeof(struct pxa_squ_priv), GFP_KERNEL);
> + if (!squ_data)
> + return -ENOMEM;
devm_kzalloc().
> + squ_data->irq = pdata->irq;
Shouldn't the interrupt be supplied via a resource?
> + ret =
> + request_irq(squ_data->irq, pxa_squ_dma_irq, IRQF_DISABLED,
> + "pxa-squ", pdev);
> + if (ret) {
> + pr_err("Wow! Can't register IRQ for SQU\n");
dev_err() and print the error code.
> +static int __init pxa_squ_pcm_modinit(void)
> +{
> + return platform_driver_register(&pxa_squ_driver);
> +}
> +
> +module_init(pxa_squ_pcm_modinit);
module_platform_driver().
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
Url : http://mailman.alsa-project.org/pipermail/alsa-devel/attachments/20120522/7ed52566/attachment-0001.sig
More information about the Alsa-devel
mailing list