|
@@ -24,15 +24,11 @@ static struct irq_chip its_pmsi_irq_chip = {
|
|
|
.name = "ITS-pMSI",
|
|
|
};
|
|
|
|
|
|
-static int its_pmsi_prepare(struct irq_domain *domain, struct device *dev,
|
|
|
- int nvec, msi_alloc_info_t *info)
|
|
|
+static int of_pmsi_get_dev_id(struct irq_domain *domain, struct device *dev,
|
|
|
+ u32 *dev_id)
|
|
|
{
|
|
|
- struct msi_domain_info *msi_info;
|
|
|
- u32 dev_id;
|
|
|
int ret, index = 0;
|
|
|
|
|
|
- msi_info = msi_get_domain_info(domain->parent);
|
|
|
-
|
|
|
/* Suck the DeviceID out of the msi-parent property */
|
|
|
do {
|
|
|
struct of_phandle_args args;
|
|
@@ -43,11 +39,24 @@ static int its_pmsi_prepare(struct irq_domain *domain, struct device *dev,
|
|
|
if (args.np == irq_domain_get_of_node(domain)) {
|
|
|
if (WARN_ON(args.args_count != 1))
|
|
|
return -EINVAL;
|
|
|
- dev_id = args.args[0];
|
|
|
+ *dev_id = args.args[0];
|
|
|
break;
|
|
|
}
|
|
|
} while (!ret);
|
|
|
|
|
|
+ return ret;
|
|
|
+}
|
|
|
+
|
|
|
+static int its_pmsi_prepare(struct irq_domain *domain, struct device *dev,
|
|
|
+ int nvec, msi_alloc_info_t *info)
|
|
|
+{
|
|
|
+ struct msi_domain_info *msi_info;
|
|
|
+ u32 dev_id;
|
|
|
+ int ret;
|
|
|
+
|
|
|
+ msi_info = msi_get_domain_info(domain->parent);
|
|
|
+
|
|
|
+ ret = of_pmsi_get_dev_id(domain, dev, &dev_id);
|
|
|
if (ret)
|
|
|
return ret;
|
|
|
|