irqchip/gic-v3-its: Add IORT hook for platform MSI support
authorMarc Zyngier <marc.zyngier@arm.com>
Wed, 29 Mar 2017 14:13:07 +0000 (15:13 +0100)
committerMarc Zyngier <marc.zyngier@arm.com>
Fri, 7 Apr 2017 09:52:21 +0000 (10:52 +0100)
Getting hold of the DevID requires us to call iort_pmsi_get_dev_id().
Since iort_pmsi_get_dev_id() may or may not be implemented, we
provide a weak function that acts as a stub.

The weak function will be removed when the ACPI counterpart is
merged.

Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
drivers/irqchip/irq-gic-v3-its-platform-msi.c

index e4ba9f4cbd1ab607ee53b1c96d69ff97b11155f0..9e9dda33eb17460bd661c2a992a06594752bffb5 100644 (file)
@@ -48,6 +48,11 @@ static int of_pmsi_get_dev_id(struct irq_domain *domain, struct device *dev,
        return ret;
 }
 
+int __weak iort_pmsi_get_dev_id(struct device *dev, u32 *dev_id)
+{
+       return -1;
+}
+
 static int its_pmsi_prepare(struct irq_domain *domain, struct device *dev,
                            int nvec, msi_alloc_info_t *info)
 {
@@ -57,7 +62,10 @@ static int its_pmsi_prepare(struct irq_domain *domain, struct device *dev,
 
        msi_info = msi_get_domain_info(domain->parent);
 
-       ret = of_pmsi_get_dev_id(domain, dev, &dev_id);
+       if (dev->of_node)
+               ret = of_pmsi_get_dev_id(domain, dev, &dev_id);
+       else
+               ret = iort_pmsi_get_dev_id(dev, &dev_id);
        if (ret)
                return ret;