All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v6] soc: ti: smartreflex: Use platform_get_irq_optional() to get the interrupt
@ 2022-01-05 18:03 ` Lad Prabhakar
  0 siblings, 0 replies; 6+ messages in thread
From: Lad Prabhakar @ 2022-01-05 18:03 UTC (permalink / raw)
  To: Nishanth Menon, Santosh Shilimkar
  Cc: Rob Herring, Andy Shevchenko, Prabhakar, Lad Prabhakar, linux-pm,
	linux-kernel, linux-arm-kernel

platform_get_resource(pdev, IORESOURCE_IRQ, ..) relies on static
allocation of IRQ resources in DT core code, this causes an issue
when using hierarchical interrupt domains using "interrupts" property
in the node as this bypasses the hierarchical setup and messes up the
irq chaining.

In preparation for removal of static setup of IRQ resource from DT core
code use platform_get_irq_optional().

While at it return 0 instead of returning ret in the probe success path.

Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
---
v5->v6:
* Dropped printing function name in error message.

v4->v5:
* Fixed missing return while using dev_err_probe().

v3->v4:
* Used dev_err_probe() to print error message
* Returning 0 in probe success path.

v2->v3
* Switch back to platform_get_irq_optional()
* Only print error in case of error, and not when interrupt is missing.

v1->v2
* Updated commit message
* Drop check for IRQ0
* Switched to using platform_get_irq() so that the probe won't
  fail silently as requested by Nishanth.

v1:
* https://www.spinics.net/lists/arm-kernel/msg942549.html
---
 drivers/soc/ti/smartreflex.c | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/drivers/soc/ti/smartreflex.c b/drivers/soc/ti/smartreflex.c
index b5b2fa538d5c..ad2bb72e640c 100644
--- a/drivers/soc/ti/smartreflex.c
+++ b/drivers/soc/ti/smartreflex.c
@@ -819,7 +819,7 @@ static int omap_sr_probe(struct platform_device *pdev)
 {
 	struct omap_sr *sr_info;
 	struct omap_sr_data *pdata = pdev->dev.platform_data;
-	struct resource *mem, *irq;
+	struct resource *mem;
 	struct dentry *nvalue_dir;
 	int i, ret = 0;
 
@@ -844,7 +844,11 @@ static int omap_sr_probe(struct platform_device *pdev)
 	if (IS_ERR(sr_info->base))
 		return PTR_ERR(sr_info->base);
 
-	irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
+	ret = platform_get_irq_optional(pdev, 0);
+	if (ret < 0 && ret != -ENXIO)
+		return dev_err_probe(&pdev->dev, ret, "failed to get IRQ resource\n");
+	if (ret > 0)
+		sr_info->irq = ret;
 
 	sr_info->fck = devm_clk_get(pdev->dev.parent, "fck");
 	if (IS_ERR(sr_info->fck))
@@ -870,9 +874,6 @@ static int omap_sr_probe(struct platform_device *pdev)
 	sr_info->autocomp_active = false;
 	sr_info->ip_type = pdata->ip_type;
 
-	if (irq)
-		sr_info->irq = irq->start;
-
 	sr_set_clk_length(sr_info);
 
 	list_add(&sr_info->node, &sr_list);
@@ -926,7 +927,7 @@ static int omap_sr_probe(struct platform_device *pdev)
 
 	}
 
-	return ret;
+	return 0;
 
 err_debugfs:
 	debugfs_remove_recursive(sr_info->dbg_dir);
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH v6] soc: ti: smartreflex: Use platform_get_irq_optional() to get the interrupt
@ 2022-01-05 18:03 ` Lad Prabhakar
  0 siblings, 0 replies; 6+ messages in thread
From: Lad Prabhakar @ 2022-01-05 18:03 UTC (permalink / raw)
  To: Nishanth Menon, Santosh Shilimkar
  Cc: Rob Herring, Andy Shevchenko, Prabhakar, Lad Prabhakar, linux-pm,
	linux-kernel, linux-arm-kernel

platform_get_resource(pdev, IORESOURCE_IRQ, ..) relies on static
allocation of IRQ resources in DT core code, this causes an issue
when using hierarchical interrupt domains using "interrupts" property
in the node as this bypasses the hierarchical setup and messes up the
irq chaining.

In preparation for removal of static setup of IRQ resource from DT core
code use platform_get_irq_optional().

While at it return 0 instead of returning ret in the probe success path.

Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
---
v5->v6:
* Dropped printing function name in error message.

v4->v5:
* Fixed missing return while using dev_err_probe().

v3->v4:
* Used dev_err_probe() to print error message
* Returning 0 in probe success path.

v2->v3
* Switch back to platform_get_irq_optional()
* Only print error in case of error, and not when interrupt is missing.

v1->v2
* Updated commit message
* Drop check for IRQ0
* Switched to using platform_get_irq() so that the probe won't
  fail silently as requested by Nishanth.

v1:
* https://www.spinics.net/lists/arm-kernel/msg942549.html
---
 drivers/soc/ti/smartreflex.c | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/drivers/soc/ti/smartreflex.c b/drivers/soc/ti/smartreflex.c
index b5b2fa538d5c..ad2bb72e640c 100644
--- a/drivers/soc/ti/smartreflex.c
+++ b/drivers/soc/ti/smartreflex.c
@@ -819,7 +819,7 @@ static int omap_sr_probe(struct platform_device *pdev)
 {
 	struct omap_sr *sr_info;
 	struct omap_sr_data *pdata = pdev->dev.platform_data;
-	struct resource *mem, *irq;
+	struct resource *mem;
 	struct dentry *nvalue_dir;
 	int i, ret = 0;
 
@@ -844,7 +844,11 @@ static int omap_sr_probe(struct platform_device *pdev)
 	if (IS_ERR(sr_info->base))
 		return PTR_ERR(sr_info->base);
 
-	irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
+	ret = platform_get_irq_optional(pdev, 0);
+	if (ret < 0 && ret != -ENXIO)
+		return dev_err_probe(&pdev->dev, ret, "failed to get IRQ resource\n");
+	if (ret > 0)
+		sr_info->irq = ret;
 
 	sr_info->fck = devm_clk_get(pdev->dev.parent, "fck");
 	if (IS_ERR(sr_info->fck))
@@ -870,9 +874,6 @@ static int omap_sr_probe(struct platform_device *pdev)
 	sr_info->autocomp_active = false;
 	sr_info->ip_type = pdata->ip_type;
 
-	if (irq)
-		sr_info->irq = irq->start;
-
 	sr_set_clk_length(sr_info);
 
 	list_add(&sr_info->node, &sr_list);
@@ -926,7 +927,7 @@ static int omap_sr_probe(struct platform_device *pdev)
 
 	}
 
-	return ret;
+	return 0;
 
 err_debugfs:
 	debugfs_remove_recursive(sr_info->dbg_dir);
-- 
2.17.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH v6] soc: ti: smartreflex: Use platform_get_irq_optional() to get the interrupt
  2022-01-05 18:03 ` Lad Prabhakar
@ 2022-01-06 14:23   ` Andy Shevchenko
  -1 siblings, 0 replies; 6+ messages in thread
From: Andy Shevchenko @ 2022-01-06 14:23 UTC (permalink / raw)
  To: Lad Prabhakar
  Cc: Nishanth Menon, Santosh Shilimkar, Rob Herring, Prabhakar,
	Linux PM, Linux Kernel Mailing List, linux-arm Mailing List

On Wed, Jan 5, 2022 at 8:03 PM Lad Prabhakar
<prabhakar.mahadev-lad.rj@bp.renesas.com> wrote:
>
> platform_get_resource(pdev, IORESOURCE_IRQ, ..) relies on static
> allocation of IRQ resources in DT core code, this causes an issue
> when using hierarchical interrupt domains using "interrupts" property
> in the node as this bypasses the hierarchical setup and messes up the
> irq chaining.
>
> In preparation for removal of static setup of IRQ resource from DT core
> code use platform_get_irq_optional().
>
> While at it return 0 instead of returning ret in the probe success path.

LGTM, thanks, FWIW,
Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>

> Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
> ---
> v5->v6:
> * Dropped printing function name in error message.
>
> v4->v5:
> * Fixed missing return while using dev_err_probe().
>
> v3->v4:
> * Used dev_err_probe() to print error message
> * Returning 0 in probe success path.
>
> v2->v3
> * Switch back to platform_get_irq_optional()
> * Only print error in case of error, and not when interrupt is missing.
>
> v1->v2
> * Updated commit message
> * Drop check for IRQ0
> * Switched to using platform_get_irq() so that the probe won't
>   fail silently as requested by Nishanth.
>
> v1:
> * https://www.spinics.net/lists/arm-kernel/msg942549.html
> ---
>  drivers/soc/ti/smartreflex.c | 13 +++++++------
>  1 file changed, 7 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/soc/ti/smartreflex.c b/drivers/soc/ti/smartreflex.c
> index b5b2fa538d5c..ad2bb72e640c 100644
> --- a/drivers/soc/ti/smartreflex.c
> +++ b/drivers/soc/ti/smartreflex.c
> @@ -819,7 +819,7 @@ static int omap_sr_probe(struct platform_device *pdev)
>  {
>         struct omap_sr *sr_info;
>         struct omap_sr_data *pdata = pdev->dev.platform_data;
> -       struct resource *mem, *irq;
> +       struct resource *mem;
>         struct dentry *nvalue_dir;
>         int i, ret = 0;
>
> @@ -844,7 +844,11 @@ static int omap_sr_probe(struct platform_device *pdev)
>         if (IS_ERR(sr_info->base))
>                 return PTR_ERR(sr_info->base);
>
> -       irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
> +       ret = platform_get_irq_optional(pdev, 0);
> +       if (ret < 0 && ret != -ENXIO)
> +               return dev_err_probe(&pdev->dev, ret, "failed to get IRQ resource\n");
> +       if (ret > 0)
> +               sr_info->irq = ret;
>
>         sr_info->fck = devm_clk_get(pdev->dev.parent, "fck");
>         if (IS_ERR(sr_info->fck))
> @@ -870,9 +874,6 @@ static int omap_sr_probe(struct platform_device *pdev)
>         sr_info->autocomp_active = false;
>         sr_info->ip_type = pdata->ip_type;
>
> -       if (irq)
> -               sr_info->irq = irq->start;
> -
>         sr_set_clk_length(sr_info);
>
>         list_add(&sr_info->node, &sr_list);
> @@ -926,7 +927,7 @@ static int omap_sr_probe(struct platform_device *pdev)
>
>         }
>
> -       return ret;
> +       return 0;
>
>  err_debugfs:
>         debugfs_remove_recursive(sr_info->dbg_dir);
> --
> 2.17.1
>


-- 
With Best Regards,
Andy Shevchenko

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v6] soc: ti: smartreflex: Use platform_get_irq_optional() to get the interrupt
@ 2022-01-06 14:23   ` Andy Shevchenko
  0 siblings, 0 replies; 6+ messages in thread
From: Andy Shevchenko @ 2022-01-06 14:23 UTC (permalink / raw)
  To: Lad Prabhakar
  Cc: Nishanth Menon, Santosh Shilimkar, Rob Herring, Prabhakar,
	Linux PM, Linux Kernel Mailing List, linux-arm Mailing List

On Wed, Jan 5, 2022 at 8:03 PM Lad Prabhakar
<prabhakar.mahadev-lad.rj@bp.renesas.com> wrote:
>
> platform_get_resource(pdev, IORESOURCE_IRQ, ..) relies on static
> allocation of IRQ resources in DT core code, this causes an issue
> when using hierarchical interrupt domains using "interrupts" property
> in the node as this bypasses the hierarchical setup and messes up the
> irq chaining.
>
> In preparation for removal of static setup of IRQ resource from DT core
> code use platform_get_irq_optional().
>
> While at it return 0 instead of returning ret in the probe success path.

LGTM, thanks, FWIW,
Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>

> Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
> ---
> v5->v6:
> * Dropped printing function name in error message.
>
> v4->v5:
> * Fixed missing return while using dev_err_probe().
>
> v3->v4:
> * Used dev_err_probe() to print error message
> * Returning 0 in probe success path.
>
> v2->v3
> * Switch back to platform_get_irq_optional()
> * Only print error in case of error, and not when interrupt is missing.
>
> v1->v2
> * Updated commit message
> * Drop check for IRQ0
> * Switched to using platform_get_irq() so that the probe won't
>   fail silently as requested by Nishanth.
>
> v1:
> * https://www.spinics.net/lists/arm-kernel/msg942549.html
> ---
>  drivers/soc/ti/smartreflex.c | 13 +++++++------
>  1 file changed, 7 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/soc/ti/smartreflex.c b/drivers/soc/ti/smartreflex.c
> index b5b2fa538d5c..ad2bb72e640c 100644
> --- a/drivers/soc/ti/smartreflex.c
> +++ b/drivers/soc/ti/smartreflex.c
> @@ -819,7 +819,7 @@ static int omap_sr_probe(struct platform_device *pdev)
>  {
>         struct omap_sr *sr_info;
>         struct omap_sr_data *pdata = pdev->dev.platform_data;
> -       struct resource *mem, *irq;
> +       struct resource *mem;
>         struct dentry *nvalue_dir;
>         int i, ret = 0;
>
> @@ -844,7 +844,11 @@ static int omap_sr_probe(struct platform_device *pdev)
>         if (IS_ERR(sr_info->base))
>                 return PTR_ERR(sr_info->base);
>
> -       irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
> +       ret = platform_get_irq_optional(pdev, 0);
> +       if (ret < 0 && ret != -ENXIO)
> +               return dev_err_probe(&pdev->dev, ret, "failed to get IRQ resource\n");
> +       if (ret > 0)
> +               sr_info->irq = ret;
>
>         sr_info->fck = devm_clk_get(pdev->dev.parent, "fck");
>         if (IS_ERR(sr_info->fck))
> @@ -870,9 +874,6 @@ static int omap_sr_probe(struct platform_device *pdev)
>         sr_info->autocomp_active = false;
>         sr_info->ip_type = pdata->ip_type;
>
> -       if (irq)
> -               sr_info->irq = irq->start;
> -
>         sr_set_clk_length(sr_info);
>
>         list_add(&sr_info->node, &sr_list);
> @@ -926,7 +927,7 @@ static int omap_sr_probe(struct platform_device *pdev)
>
>         }
>
> -       return ret;
> +       return 0;
>
>  err_debugfs:
>         debugfs_remove_recursive(sr_info->dbg_dir);
> --
> 2.17.1
>


-- 
With Best Regards,
Andy Shevchenko

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v6] soc: ti: smartreflex: Use platform_get_irq_optional() to get the interrupt
  2022-01-05 18:03 ` Lad Prabhakar
@ 2022-02-02 19:49   ` Nishanth Menon
  -1 siblings, 0 replies; 6+ messages in thread
From: Nishanth Menon @ 2022-02-02 19:49 UTC (permalink / raw)
  To: Santosh Shilimkar, Lad Prabhakar
  Cc: Nishanth Menon, linux-pm, Rob Herring, Andy Shevchenko,
	Prabhakar, linux-arm-kernel, linux-kernel

Hi Lad Prabhakar,

On Wed, 5 Jan 2022 18:03:22 +0000, Lad Prabhakar wrote:
> platform_get_resource(pdev, IORESOURCE_IRQ, ..) relies on static
> allocation of IRQ resources in DT core code, this causes an issue
> when using hierarchical interrupt domains using "interrupts" property
> in the node as this bypasses the hierarchical setup and messes up the
> irq chaining.
> 
> In preparation for removal of static setup of IRQ resource from DT core
> code use platform_get_irq_optional().
> 
> [...]

I have applied the following to branch ti-drivers-soc-next on [1].
Thank you!

[1/1] soc: ti: smartreflex: Use platform_get_irq_optional() to get the interrupt
      commit: 001d7c83704bc98c28cc6444d2e7518d12ed029f

All being well this means that it will be integrated into the linux-next
tree (usually sometime in the next 24 hours) and sent up the chain during
the next merge window (or sooner if it is a relevant bug fix), however if
problems are discovered then the patch may be dropped or reverted.

You may get further e-mails resulting from automated or manual testing
and review of the tree, please engage with people reporting problems and
send followup patches addressing any issues that are reported if needed.

If any updates are required or you are submitting further changes they
should be sent as incremental updates against current git, existing
patches will not be replaced.

Please add any relevant lists and maintainers to the CCs when replying
to this mail.

[1] git://git.kernel.org/pub/scm/linux/kernel/git/ti/linux.git
-- 
Regards,
Nishanth Menon
Key (0xDDB5849D1736249D) / Fingerprint: F8A2 8693 54EB 8232 17A3  1A34 DDB5 849D 1736 249D


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v6] soc: ti: smartreflex: Use platform_get_irq_optional() to get the interrupt
@ 2022-02-02 19:49   ` Nishanth Menon
  0 siblings, 0 replies; 6+ messages in thread
From: Nishanth Menon @ 2022-02-02 19:49 UTC (permalink / raw)
  To: Santosh Shilimkar, Lad Prabhakar
  Cc: Nishanth Menon, linux-pm, Rob Herring, Andy Shevchenko,
	Prabhakar, linux-arm-kernel, linux-kernel

Hi Lad Prabhakar,

On Wed, 5 Jan 2022 18:03:22 +0000, Lad Prabhakar wrote:
> platform_get_resource(pdev, IORESOURCE_IRQ, ..) relies on static
> allocation of IRQ resources in DT core code, this causes an issue
> when using hierarchical interrupt domains using "interrupts" property
> in the node as this bypasses the hierarchical setup and messes up the
> irq chaining.
> 
> In preparation for removal of static setup of IRQ resource from DT core
> code use platform_get_irq_optional().
> 
> [...]

I have applied the following to branch ti-drivers-soc-next on [1].
Thank you!

[1/1] soc: ti: smartreflex: Use platform_get_irq_optional() to get the interrupt
      commit: 001d7c83704bc98c28cc6444d2e7518d12ed029f

All being well this means that it will be integrated into the linux-next
tree (usually sometime in the next 24 hours) and sent up the chain during
the next merge window (or sooner if it is a relevant bug fix), however if
problems are discovered then the patch may be dropped or reverted.

You may get further e-mails resulting from automated or manual testing
and review of the tree, please engage with people reporting problems and
send followup patches addressing any issues that are reported if needed.

If any updates are required or you are submitting further changes they
should be sent as incremental updates against current git, existing
patches will not be replaced.

Please add any relevant lists and maintainers to the CCs when replying
to this mail.

[1] git://git.kernel.org/pub/scm/linux/kernel/git/ti/linux.git
-- 
Regards,
Nishanth Menon
Key (0xDDB5849D1736249D) / Fingerprint: F8A2 8693 54EB 8232 17A3  1A34 DDB5 849D 1736 249D


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2022-02-02 19:51 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-01-05 18:03 [PATCH v6] soc: ti: smartreflex: Use platform_get_irq_optional() to get the interrupt Lad Prabhakar
2022-01-05 18:03 ` Lad Prabhakar
2022-01-06 14:23 ` Andy Shevchenko
2022-01-06 14:23   ` Andy Shevchenko
2022-02-02 19:49 ` Nishanth Menon
2022-02-02 19:49   ` Nishanth Menon

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.