Re: [PATCH] dma: pl330: Support per channel irq allocation

From: Lars-Peter Clausen
Date: Sun Oct 13 2013 - 12:32:35 EST


On 10/13/2013 05:31 PM, Vinod Koul wrote:
On Mon, Sep 30, 2013 at 08:50:48AM +0200, Michal Simek wrote:
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@xxxxxxxxxx>
---
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, this patch looks fine, Lars can you try testing this if you have this HW
please?

~Vinod

Michal and I are using the same hardware, I have his patch in my tree and it is working fine.

Tested-by: Lars-Peter Clausen <lars@xxxxxxxxxx>


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





--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/