diff options
author | Marc Zyngier <marc.zyngier@arm.com> | 2015-09-18 14:07:40 +0100 |
---|---|---|
committer | Marc Zyngier <marc.zyngier@arm.com> | 2015-10-16 13:07:15 +0100 |
commit | deac7fc1c87f24099d7e15d8b662446497f57465 (patch) | |
tree | 18b2f98a7157bdf2a572492f6a748e0fec511969 /drivers | |
parent | c8d175883e0db09ce94b8b47bb2432b787149a6b (diff) |
irqchip/gic-v3-its: Parse new version of msi-parent property
Now that 126b16e2ad98 ("Docs: dt: add generic MSI bindings")
has made it into the tree, the time has come to get rid of the
old hack, and to parse msi-parent in its full glory.
Acked-by: Rob Herring <robh@kernel.org>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/irqchip/irq-gic-v3-its-platform-msi.c | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/drivers/irqchip/irq-gic-v3-its-platform-msi.c b/drivers/irqchip/irq-gic-v3-its-platform-msi.c index 960a8166a6c0..470b4aa7d62c 100644 --- a/drivers/irqchip/irq-gic-v3-its-platform-msi.c +++ b/drivers/irqchip/irq-gic-v3-its-platform-msi.c @@ -29,13 +29,25 @@ static int its_pmsi_prepare(struct irq_domain *domain, struct device *dev, { struct msi_domain_info *msi_info; u32 dev_id; - int ret; + int ret, index = 0; msi_info = msi_get_domain_info(domain->parent); /* Suck the DeviceID out of the msi-parent property */ - ret = of_property_read_u32_index(dev->of_node, "msi-parent", - 1, &dev_id); + do { + struct of_phandle_args args; + + ret = of_parse_phandle_with_args(dev->of_node, + "msi-parent", "#msi-cells", + index, &args); + if (args.np == irq_domain_get_of_node(domain)) { + if (WARN_ON(args.args_count != 1)) + return -EINVAL; + dev_id = args.args[0]; + break; + } + } while (!ret); + if (ret) return ret; |