Now that we have a concise helper to create an MSI parent domain, switch the mvebu family of interrupt controllers over to that. Signed-off-by: Marc Zyngier <maz@xxxxxxxxxx> --- drivers/irqchip/irq-mvebu-gicp.c | 14 +++++++------- drivers/irqchip/irq-mvebu-odmi.c | 14 ++++++-------- drivers/irqchip/irq-mvebu-sei.c | 16 +++++++--------- 3 files changed, 20 insertions(+), 24 deletions(-) diff --git a/drivers/irqchip/irq-mvebu-gicp.c b/drivers/irqchip/irq-mvebu-gicp.c index 0b2a857b49018..c7c83f8923fcd 100644 --- a/drivers/irqchip/irq-mvebu-gicp.c +++ b/drivers/irqchip/irq-mvebu-gicp.c @@ -230,16 +230,16 @@ static int mvebu_gicp_probe(struct platform_device *pdev) return -ENODEV; } - inner_domain = irq_domain_create_hierarchy(parent_domain, 0, - gicp->spi_cnt, - of_node_to_fwnode(node), - &gicp_domain_ops, gicp); + inner_domain = msi_create_parent_irq_domain(&(struct irq_domain_info){ + .fwnode = of_node_to_fwnode(node), + .ops = &gicp_domain_ops, + .size = gicp->spi_cnt, + .host_data = gicp, + .parent = parent_domain, + }, &gicp_msi_parent_ops); if (!inner_domain) return -ENOMEM; - irq_domain_update_bus_token(inner_domain, DOMAIN_BUS_GENERIC_MSI); - inner_domain->flags |= IRQ_DOMAIN_FLAG_MSI_PARENT; - inner_domain->msi_parent_ops = &gicp_msi_parent_ops; return 0; } diff --git a/drivers/irqchip/irq-mvebu-odmi.c b/drivers/irqchip/irq-mvebu-odmi.c index 306a7754e44f8..e6049f647a017 100644 --- a/drivers/irqchip/irq-mvebu-odmi.c +++ b/drivers/irqchip/irq-mvebu-odmi.c @@ -205,19 +205,17 @@ static int __init mvebu_odmi_init(struct device_node *node, parent_domain = irq_find_host(parent); - inner_domain = irq_domain_create_hierarchy(parent_domain, 0, - odmis_count * NODMIS_PER_FRAME, - of_node_to_fwnode(node), - &odmi_domain_ops, NULL); + inner_domain = msi_create_parent_irq_domain(&(struct irq_domain_info){ + .fwnode = of_node_to_fwnode(node), + .ops = &odmi_domain_ops, + .size = odmis_count * NODMIS_PER_FRAME, + .parent = parent_domain, + }, &odmi_msi_parent_ops); if (!inner_domain) { ret = -ENOMEM; goto err_unmap; } - irq_domain_update_bus_token(inner_domain, DOMAIN_BUS_GENERIC_MSI); - inner_domain->flags |= IRQ_DOMAIN_FLAG_MSI_PARENT; - inner_domain->msi_parent_ops = &odmi_msi_parent_ops; - return 0; err_unmap: diff --git a/drivers/irqchip/irq-mvebu-sei.c b/drivers/irqchip/irq-mvebu-sei.c index a962ef4977169..cacf88530e444 100644 --- a/drivers/irqchip/irq-mvebu-sei.c +++ b/drivers/irqchip/irq-mvebu-sei.c @@ -430,21 +430,19 @@ static int mvebu_sei_probe(struct platform_device *pdev) irq_domain_update_bus_token(sei->ap_domain, DOMAIN_BUS_WIRED); /* Create the 'MSI' domain */ - sei->cp_domain = irq_domain_create_hierarchy(sei->sei_domain, 0, - sei->caps->cp_range.size, - of_node_to_fwnode(node), - &mvebu_sei_cp_domain_ops, - sei); + sei->cp_domain = msi_create_parent_irq_domain(&(struct irq_domain_info){ + .fwnode = of_node_to_fwnode(node), + .ops = &mvebu_sei_cp_domain_ops, + .size = sei->caps->cp_range.size, + .host_data = sei, + .parent = sei->sei_domain, + }, &sei_msi_parent_ops); if (!sei->cp_domain) { pr_err("Failed to create CPs IRQ domain\n"); ret = -ENOMEM; goto remove_ap_domain; } - irq_domain_update_bus_token(sei->cp_domain, DOMAIN_BUS_GENERIC_MSI); - sei->cp_domain->flags |= IRQ_DOMAIN_FLAG_MSI_PARENT; - sei->cp_domain->msi_parent_ops = &sei_msi_parent_ops; - mvebu_sei_reset(sei); irq_set_chained_handler_and_data(parent_irq, mvebu_sei_handle_cascade_irq, sei); -- 2.39.2