mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-31 04:01:48 -04:00
irqchip/gicv3-its: platform-msi: Refactor its_pmsi_prepare()
By adding ACPI support for platform MSI, the gicv3 driver has to provide code to retrieve the dev id through ACPI instead of device tree bindings; given that its_pmsi_prepare() allows already to get the dev id but it is OF dependent, factor OF related code out into a single function to make its_pmsi_prepare() ready to be used with other firmware interfaces. Signed-off-by: Hanjun Guo <[email protected]> [[email protected]: rewrote commit log] Signed-off-by: Lorenzo Pieralisi <[email protected]> Reviewed-by: Matthias Brugger <[email protected]> Tested-by: Ming Lei <[email protected]> Tested-by: Wei Xu <[email protected]> Tested-by: Sinan Kaya <[email protected]> Cc: Tomasz Nowicki <[email protected]> Cc: Thomas Gleixner <[email protected]> Signed-off-by: Marc Zyngier <[email protected]>
This commit is contained in:
parent
8d3554b84a
commit
9ab460c228
1 changed files with 16 additions and 7 deletions
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue