Re: [PATCH v2 34/57] irqdomain: soc: Switch to irq_domain_create_*()

Christophe Leroy
2025-03-21T08:50:03Z

Le 19/03/2025 à 10:29, Jiri Slaby (SUSE) a écrit :
> irq_domain_add_*() interfaces are going away as being obsolete now.
> Switch to the preferred irq_domain_create_*() ones. Those differ in the
> node parameter: They take more generic struct fwnode_handle instead of
> struct device_node. Therefore, of_fwnode_handle() is added around the
> original parameter.
>
> Note some of the users can likely use dev->fwnode directly instead of
> indirect of_fwnode_handle(dev->of_node). But dev->fwnode is not
> guaranteed to be set for all, so this has to be investigated on case to
> case basis (by people who can actually test with the HW).
>
> Signed-off-by: Jiri Slaby (SUSE) <jirislaby@kernel.org>
> Cc: Andrew Lunn <andrew@lunn.ch>
> Cc: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
> Cc: Gregory Clement <gregory.clement@bootlin.com>
> Cc: Qiang Zhao <qiang.zhao@nxp.com>
> Cc: Christophe Leroy <christophe.leroy@csgroup.eu>
> Cc: Bjorn Andersson <andersson@kernel.org>
> Cc: Konrad Dybcio <konradybcio@kernel.org>
> Cc: Thierry Reding <thierry.reding@gmail.com>
> Cc: Jonathan Hunter <jonathanh@nvidia.com>

Acked-by: Christophe Leroy <christophe.leroy@csgroup.eu> # For soc/fsl

> ---
> drivers/soc/dove/pmu.c | 4 ++--
> drivers/soc/fsl/qe/qe_ic.c | 4 ++--
> drivers/soc/qcom/smp2p.c | 2 +-
> drivers/soc/qcom/smsm.c | 2 +-
> drivers/soc/tegra/pmc.c | 5 +++--
> 5 files changed, 9 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/soc/dove/pmu.c b/drivers/soc/dove/pmu.c
> index 6202dbcd20a8..cfc0efab27d7 100644
> --- a/drivers/soc/dove/pmu.c
> +++ b/drivers/soc/dove/pmu.c
> @@ -274,8 +274,8 @@ static int __init dove_init_pmu_irq(struct pmu_data *pmu, int irq)
> writel(0, pmu->pmc_base + PMC_IRQ_MASK);
> writel(0, pmu->pmc_base + PMC_IRQ_CAUSE);
>
> - domain = irq_domain_add_linear(pmu->of_node, NR_PMU_IRQS,
> - &irq_generic_chip_ops, NULL);
> + domain = irq_domain_create_linear(of_fwnode_handle(pmu->of_node), NR_PMU_IRQS,
> + &irq_generic_chip_ops, NULL);
> if (!domain) {
> pr_err("%s: unable to add irq domain\n", name);
> return -ENOMEM;
> diff --git a/drivers/soc/fsl/qe/qe_ic.c b/drivers/soc/fsl/qe/qe_ic.c
> index bbae3d39c7be..e5831c298ad6 100644
> --- a/drivers/soc/fsl/qe/qe_ic.c
> +++ b/drivers/soc/fsl/qe/qe_ic.c
> @@ -446,8 +446,8 @@ static int qe_ic_init(struct platform_device *pdev)
> high_handler = NULL;
> }
>
> - qe_ic->irqhost = irq_domain_add_linear(node, NR_QE_IC_INTS,
> - &qe_ic_host_ops, qe_ic);
> + qe_ic->irqhost = irq_domain_create_linear(of_fwnode_handle(node), NR_QE_IC_INTS,
> + &qe_ic_host_ops, qe_ic);
> if (qe_ic->irqhost == NULL) {
> dev_err(dev, "failed to add irq domain\n");
> return -ENODEV;
> diff --git a/drivers/soc/qcom/smp2p.c b/drivers/soc/qcom/smp2p.c
> index a3e88ced328a..8c8878bc87f5 100644
> --- a/drivers/soc/qcom/smp2p.c
> +++ b/drivers/soc/qcom/smp2p.c
> @@ -399,7 +399,7 @@ static int qcom_smp2p_inbound_entry(struct qcom_smp2p *smp2p,
> struct smp2p_entry *entry,
> struct device_node *node)
> {
> - entry->domain = irq_domain_add_linear(node, 32, &smp2p_irq_ops, entry);
> + entry->domain = irq_domain_create_linear(of_fwnode_handle(node), 32, &smp2p_irq_ops, entry);
> if (!entry->domain) {
> dev_err(smp2p->dev, "failed to add irq_domain\n");
> return -ENOMEM;
> diff --git a/drivers/soc/qcom/smsm.c b/drivers/soc/qcom/smsm.c
> index e803ea342c97..021e9d1f61dc 100644
> --- a/drivers/soc/qcom/smsm.c
> +++ b/drivers/soc/qcom/smsm.c
> @@ -456,7 +456,7 @@ static int smsm_inbound_entry(struct qcom_smsm *smsm,
> return ret;
> }
>
> - entry->domain = irq_domain_add_linear(node, 32, &smsm_irq_ops, entry);
> + entry->domain = irq_domain_create_linear(of_fwnode_handle(node), 32, &smsm_irq_ops, entry);
> if (!entry->domain) {
> dev_err(smsm->dev, "failed to add irq_domain\n");
> return -ENOMEM;
> diff --git a/drivers/soc/tegra/pmc.c b/drivers/soc/tegra/pmc.c
> index 51b9d852bb6a..e0d67bfe955c 100644
> --- a/drivers/soc/tegra/pmc.c
> +++ b/drivers/soc/tegra/pmc.c
> @@ -2500,8 +2500,9 @@ static int tegra_pmc_irq_init(struct tegra_pmc *pmc)
> pmc->irq.irq_set_type = pmc->soc->irq_set_type;
> pmc->irq.irq_set_wake = pmc->soc->irq_set_wake;
>
> - pmc->domain = irq_domain_add_hierarchy(parent, 0, 96, pmc->dev->of_node,
> - &tegra_pmc_irq_domain_ops, pmc);
> + pmc->domain = irq_domain_create_hierarchy(parent, 0, 96,
> + of_fwnode_handle(pmc->dev->of_node),
> + &tegra_pmc_irq_domain_ops, pmc);
> if (!pmc->domain) {
> dev_err(pmc->dev, "failed to allocate domain\n");
> return -ENOMEM;