summaryrefslogtreecommitdiff
path: root/drivers/irqchip/irq-gic-v3-its-platform-msi.c
diff options
context:
space:
mode:
authorMarc Zyngier <marc.zyngier@arm.com>2015-09-18 14:07:40 +0100
committerMarc Zyngier <marc.zyngier@arm.com>2015-10-16 13:07:15 +0100
commitdeac7fc1c87f24099d7e15d8b662446497f57465 (patch)
tree18b2f98a7157bdf2a572492f6a748e0fec511969 /drivers/irqchip/irq-gic-v3-its-platform-msi.c
parentc8d175883e0db09ce94b8b47bb2432b787149a6b (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/irqchip/irq-gic-v3-its-platform-msi.c')
-rw-r--r--drivers/irqchip/irq-gic-v3-its-platform-msi.c18
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;