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>
This commit is contained in:
parent
20a90b0ebc
commit
e98b3cafe5
1 changed files with 12 additions and 5 deletions
|
@ -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);
|
||||
|
|
Loading…
Reference in a new issue