aboutsummaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorMichal Simek <michal.simek@xilinx.com>2013-09-30 08:50:48 +0200
committerJon Medhurst <tixy@linaro.org>2015-04-02 13:57:05 +0100
commit0a154139cd5ad04a18e4efc1cd0656641869a518 (patch)
tree635b04b11b85c27331782f613f8872ad1fae7954 /drivers
parent5b7ada0a50d161429c8daadf2faee594512d9fd3 (diff)
dma: pl330: Support per channel irq allocation
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> Tested-by: Lars-Peter Clausen <lars@metafoo.de> Signed-off-by: Vinod Koul <vinod.koul@intel.com> (cherry picked from commit e98b3cafe5f048be40ff6acb18dfa7c9a0e9423e) Signed-off-by: Jon Medhurst <tixy@linaro.org>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/dma/pl330.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/drivers/dma/pl330.c b/drivers/dma/pl330.c
index 98a79a7bca52..8058d35aebda 100644
--- a/drivers/dma/pl330.c
+++ b/drivers/dma/pl330.c
@@ -2926,11 +2926,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);