Messages in this thread Patch in this message | | | From | Michal Simek <> | Subject | [PATCH] dma: pl330: Support per channel irq allocation | Date | Mon, 30 Sep 2013 08:50:48 +0200 |
| |
Some pl330 have per channel irq and it is necessary to allocate all of them. Loop over irq assigned for this device to support these pl330 IPs.
For example this IP is available on Xilinx Zynq platform.
Signed-off-by: Michal Simek <michal.simek@xilinx.com> --- Hi Vinod,
this is the patch I told you about it. I have tested it just on Zynq(8 dma channels) but it shouldn't break any other pl330 clones. One more change has to be done to support all 8 dma channels which is to extend AMBA_NR_IRQS which is still 2. But I will send separate patch for it directly to Russell.
Thanks, Michal
--- drivers/dma/pl330.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-)
diff --git a/drivers/dma/pl330.c b/drivers/dma/pl330.c index 58623dc..96de393 100644 --- a/drivers/dma/pl330.c +++ b/drivers/dma/pl330.c @@ -2922,11 +2922,18 @@ pl330_probe(struct amba_device *adev, const struct amba_id *id)
amba_set_drvdata(adev, pdmac);
- irq = adev->irq[0]; - ret = devm_request_irq(&adev->dev, irq, pl330_irq_handler, 0, - dev_name(&adev->dev), pi); - if (ret) - return ret; + for (i = 0; i <= AMBA_NR_IRQS; i++) { + irq = adev->irq[i]; + if (irq) { + ret = devm_request_irq(&adev->dev, irq, + pl330_irq_handler, 0, + dev_name(&adev->dev), pi); + if (ret) + return ret; + } else { + break; + } + }
pi->pcfg.periph_id = adev->periphid; ret = pl330_add(pi); -- 1.8.2.3 [unhandled content-type:application/pgp-signature] | |