Hi Tomasz,
Thanks for your reply.
On 01/17/2018 12:21 PM, Tomasz Figa wrote:
Hi Jeffy,
Thanks for the patch. Please see my comments inline.
On Tue, Jan 16, 2018 at 10:25 PM, Jeffy Chen <jeffy.c...@rock-chips.com> wrote:
Please add patch description.
ok, will do.
Suggested-by: Robin Murphy <robin.mur...@arm.com>
Signed-off-by: Jeffy Chen <jeffy.c...@rock-chips.com>
---
[snip]
- for (i = 0; i < iommu->num_irq; i++) {
- iommu->irq[i] = platform_get_irq(pdev, i);
- if (iommu->irq[i] < 0) {
- dev_err(dev, "Failed to get IRQ, %d\n", iommu->irq[i]);
+ num_irq = of_irq_count(dev->of_node);
+ for (i = 0; i < num_irq; i++) {
+ irq = platform_get_irq(pdev, i);
This lacks consistency. of_irq_count() is used for counting, but
platform_get_irq() is used for getting. Either platform_ or of_ API
should be used for both and I'd lean for platform_, since it's more
general.
hmmm, right, i was thinking of removing num_irq, and do something like:
while (nr++) {
err = platform_get_irq(dev, nr);
if (err == -EPROBE_DEFER)
break;
if (err < 0)
return err;
....
}
but forgot to do that..
+ if (irq < 0) {
+ dev_err(dev, "Failed to get IRQ, %d\n", irq);
return -ENXIO;
}
+ err = devm_request_irq(iommu->dev, irq, rk_iommu_irq,
+ IRQF_SHARED, dev_name(dev), iommu);
+ if (err)
+ return err;
}
Looks like there is some more initialization below. Is the driver okay
with the IRQ being potentially fired right here? (Shared IRQ handlers
might be run at request_irq() time for testing.)
right, forget about that. maybe we can check iommu->domain not NULL in
rk_iommu_irq()
iommu->reset_disabled = device_property_read_bool(dev,
^^
Best regards,
Tomasz
_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu