public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/5] Update ti-sysc description and drop legacy quirk handling
@ 2024-04-10  6:40 Tony Lindgren
  2024-04-10  6:40 ` [PATCH v2 1/5] bus: ti-sysc: Move check for no-reset-on-init Tony Lindgren
                   ` (4 more replies)
  0 siblings, 5 replies; 9+ messages in thread
From: Tony Lindgren @ 2024-04-10  6:40 UTC (permalink / raw)
  To: linux-omap; +Cc: Dhruva Gole, Greg Kroah-Hartman, linux-kernel

Hi all,

Here are v2 changes for the ti-sysc interconnect target driver.

Regards,

Tony

Changes since v1:

- Update copyright years and format as suggested by Dhruva, limit
  the copyright years to last changes done to the legacy arch code

- Add Reviewed-by from Dhruva

Tony Lindgren (5):
  bus: ti-sysc: Move check for no-reset-on-init
  bus: ti-sysc: Add a description and copyrights
  bus: ti-sysc: Drop legacy quirk handling for uarts
  bus: ti-sysc: Drop legacy quirk handling for smartreflex
  bus: ti-sysc: Drop legacy idle quirk handling

 drivers/bus/ti-sysc.c                 | 165 ++++++--------------------
 include/linux/platform_data/ti-sysc.h |   1 -
 2 files changed, 34 insertions(+), 132 deletions(-)

-- 
2.44.0

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

* [PATCH v2 1/5] bus: ti-sysc: Move check for no-reset-on-init
  2024-04-10  6:40 [PATCH v2 0/5] Update ti-sysc description and drop legacy quirk handling Tony Lindgren
@ 2024-04-10  6:40 ` Tony Lindgren
  2024-04-10 18:03   ` Dhruva Gole
  2024-04-10  6:40 ` [PATCH v2 2/5] bus: ti-sysc: Add a description and copyrights Tony Lindgren
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 9+ messages in thread
From: Tony Lindgren @ 2024-04-10  6:40 UTC (permalink / raw)
  To: linux-omap; +Cc: Dhruva Gole, Greg Kroah-Hartman, linux-kernel

We are wrongly checking SYSC_QUIRK_NO_RESET_ON_INIT flag in sysc_reset(),
it can be called also after init from sysc_reinit_module(). Let's fix the
issue by moving the check to the init code.

Fixes: 6a52bc2b81fa ("bus: ti-sysc: Add quirk handling for reset on re-init")
Signed-off-by: Tony Lindgren <tony@atomide.com>
---
 drivers/bus/ti-sysc.c | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/drivers/bus/ti-sysc.c b/drivers/bus/ti-sysc.c
--- a/drivers/bus/ti-sysc.c
+++ b/drivers/bus/ti-sysc.c
@@ -2145,8 +2145,7 @@ static int sysc_reset(struct sysc *ddata)
 	sysc_offset = ddata->offsets[SYSC_SYSCONFIG];
 
 	if (ddata->legacy_mode ||
-	    ddata->cap->regbits->srst_shift < 0 ||
-	    ddata->cfg.quirks & SYSC_QUIRK_NO_RESET_ON_INIT)
+	    ddata->cap->regbits->srst_shift < 0)
 		return 0;
 
 	sysc_mask = BIT(ddata->cap->regbits->srst_shift);
@@ -2240,12 +2239,14 @@ static int sysc_init_module(struct sysc *ddata)
 			goto err_main_clocks;
 	}
 
-	error = sysc_reset(ddata);
-	if (error)
-		dev_err(ddata->dev, "Reset failed with %d\n", error);
+	if (!(ddata->cfg.quirks & SYSC_QUIRK_NO_RESET_ON_INIT)) {
+		error = sysc_reset(ddata);
+		if (error)
+			dev_err(ddata->dev, "Reset failed with %d\n", error);
 
-	if (error && !ddata->legacy_mode)
-		sysc_disable_module(ddata->dev);
+		if (error && !ddata->legacy_mode)
+			sysc_disable_module(ddata->dev);
+	}
 
 err_main_clocks:
 	if (error)
-- 
2.44.0

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

* [PATCH v2 2/5] bus: ti-sysc: Add a description and copyrights
  2024-04-10  6:40 [PATCH v2 0/5] Update ti-sysc description and drop legacy quirk handling Tony Lindgren
  2024-04-10  6:40 ` [PATCH v2 1/5] bus: ti-sysc: Move check for no-reset-on-init Tony Lindgren
@ 2024-04-10  6:40 ` Tony Lindgren
  2024-04-10  6:40 ` [PATCH v2 3/5] bus: ti-sysc: Drop legacy quirk handling for uarts Tony Lindgren
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 9+ messages in thread
From: Tony Lindgren @ 2024-04-10  6:40 UTC (permalink / raw)
  To: linux-omap; +Cc: Dhruva Gole, Greg Kroah-Hartman, linux-kernel

The ti-sysc driver is missing coprights and description, let's add
those.

Signed-off-by: Tony Lindgren <tony@atomide.com>
---
 drivers/bus/ti-sysc.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/drivers/bus/ti-sysc.c b/drivers/bus/ti-sysc.c
--- a/drivers/bus/ti-sysc.c
+++ b/drivers/bus/ti-sysc.c
@@ -1,6 +1,17 @@
 // SPDX-License-Identifier: GPL-2.0
 /*
  * ti-sysc.c - Texas Instruments sysc interconnect target driver
+ *
+ * TI SoCs have an interconnect target wrapper IP for many devices. The wrapper
+ * IP manages clock gating, resets, and PM capabilities for the connected devices.
+ *
+ * Copyright (C) 2017-2024 Texas Instruments Incorporated - https://www.ti.com/
+ *
+ * Many features are based on the earlier omap_hwmod arch code with thanks to all
+ * the people who developed and debugged the code over the years:
+ *
+ * Copyright (C) 2009-2011 Nokia Corporation
+ * Copyright (C) 2011-2021 Texas Instruments Incorporated - https://www.ti.com/
  */
 
 #include <linux/io.h>
-- 
2.44.0

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

* [PATCH v2 3/5] bus: ti-sysc: Drop legacy quirk handling for uarts
  2024-04-10  6:40 [PATCH v2 0/5] Update ti-sysc description and drop legacy quirk handling Tony Lindgren
  2024-04-10  6:40 ` [PATCH v2 1/5] bus: ti-sysc: Move check for no-reset-on-init Tony Lindgren
  2024-04-10  6:40 ` [PATCH v2 2/5] bus: ti-sysc: Add a description and copyrights Tony Lindgren
@ 2024-04-10  6:40 ` Tony Lindgren
  2024-04-10 18:11   ` Dhruva Gole
  2024-04-10  6:40 ` [PATCH v2 4/5] bus: ti-sysc: Drop legacy quirk handling for smartreflex Tony Lindgren
  2024-04-10  6:40 ` [PATCH v2 5/5] bus: ti-sysc: Drop legacy idle quirk handling Tony Lindgren
  4 siblings, 1 reply; 9+ messages in thread
From: Tony Lindgren @ 2024-04-10  6:40 UTC (permalink / raw)
  To: linux-omap; +Cc: Dhruva Gole, Greg Kroah-Hartman, linux-kernel

With the 8250_omap and omap-serial drivers no longer relying on the use
of pm_runtime_irq_safe(), we can finally drop the related legacy quirk
handling for uarts.

Signed-off-by: Tony Lindgren <tony@atomide.com>
---
 drivers/bus/ti-sysc.c | 24 +++++++++++-------------
 1 file changed, 11 insertions(+), 13 deletions(-)

diff --git a/drivers/bus/ti-sysc.c b/drivers/bus/ti-sysc.c
--- a/drivers/bus/ti-sysc.c
+++ b/drivers/bus/ti-sysc.c
@@ -1540,19 +1540,6 @@ struct sysc_revision_quirk {
 	}
 
 static const struct sysc_revision_quirk sysc_revision_quirks[] = {
-	/* These drivers need to be fixed to not use pm_runtime_irq_safe() */
-	SYSC_QUIRK("uart", 0, 0x50, 0x54, 0x58, 0x00000046, 0xffffffff,
-		   SYSC_QUIRK_SWSUP_SIDLE_ACT | SYSC_QUIRK_LEGACY_IDLE),
-	SYSC_QUIRK("uart", 0, 0x50, 0x54, 0x58, 0x00000052, 0xffffffff,
-		   SYSC_QUIRK_SWSUP_SIDLE_ACT | SYSC_QUIRK_LEGACY_IDLE),
-	/* Uarts on omap4 and later */
-	SYSC_QUIRK("uart", 0, 0x50, 0x54, 0x58, 0x50411e03, 0xffff00ff,
-		   SYSC_QUIRK_SWSUP_SIDLE_ACT | SYSC_QUIRK_LEGACY_IDLE),
-	SYSC_QUIRK("uart", 0, 0x50, 0x54, 0x58, 0x47422e03, 0xffffffff,
-		   SYSC_QUIRK_SWSUP_SIDLE_ACT | SYSC_QUIRK_LEGACY_IDLE),
-	SYSC_QUIRK("uart", 0, 0x50, 0x54, 0x58, 0x47424e03, 0xffffffff,
-		   SYSC_QUIRK_SWSUP_SIDLE_ACT | SYSC_QUIRK_LEGACY_IDLE),
-
 	/* Quirks that need to be set based on the module address */
 	SYSC_QUIRK("mcpdm", 0x40132000, 0, 0x10, -ENODEV, 0x50000800, 0xffffffff,
 		   SYSC_QUIRK_EXT_OPT_CLOCK | SYSC_QUIRK_NO_RESET_ON_INIT |
@@ -1610,6 +1597,17 @@ static const struct sysc_revision_quirk sysc_revision_quirks[] = {
 		   SYSC_QUIRK_SWSUP_SIDLE | SYSC_QUIRK_SWSUP_MSTANDBY),
 	SYSC_QUIRK("sata", 0, 0xfc, 0x1100, -ENODEV, 0x5e412000, 0xffffffff,
 		   SYSC_QUIRK_SWSUP_SIDLE | SYSC_QUIRK_SWSUP_MSTANDBY),
+	SYSC_QUIRK("uart", 0, 0x50, 0x54, 0x58, 0x00000046, 0xffffffff,
+		   SYSC_QUIRK_SWSUP_SIDLE_ACT),
+	SYSC_QUIRK("uart", 0, 0x50, 0x54, 0x58, 0x00000052, 0xffffffff,
+		   SYSC_QUIRK_SWSUP_SIDLE_ACT),
+	/* Uarts on omap4 and later */
+	SYSC_QUIRK("uart", 0, 0x50, 0x54, 0x58, 0x50411e03, 0xffff00ff,
+		   SYSC_QUIRK_SWSUP_SIDLE_ACT),
+	SYSC_QUIRK("uart", 0, 0x50, 0x54, 0x58, 0x47422e03, 0xffffffff,
+		   SYSC_QUIRK_SWSUP_SIDLE_ACT),
+	SYSC_QUIRK("uart", 0, 0x50, 0x54, 0x58, 0x47424e03, 0xffffffff,
+		   SYSC_QUIRK_SWSUP_SIDLE_ACT),
 	SYSC_QUIRK("usb_host_hs", 0, 0, 0x10, 0x14, 0x50700100, 0xffffffff,
 		   SYSC_QUIRK_SWSUP_SIDLE | SYSC_QUIRK_SWSUP_MSTANDBY),
 	SYSC_QUIRK("usb_host_hs", 0, 0, 0x10, -ENODEV, 0x50700101, 0xffffffff,
-- 
2.44.0

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

* [PATCH v2 4/5] bus: ti-sysc: Drop legacy quirk handling for smartreflex
  2024-04-10  6:40 [PATCH v2 0/5] Update ti-sysc description and drop legacy quirk handling Tony Lindgren
                   ` (2 preceding siblings ...)
  2024-04-10  6:40 ` [PATCH v2 3/5] bus: ti-sysc: Drop legacy quirk handling for uarts Tony Lindgren
@ 2024-04-10  6:40 ` Tony Lindgren
  2024-04-10  6:40 ` [PATCH v2 5/5] bus: ti-sysc: Drop legacy idle quirk handling Tony Lindgren
  4 siblings, 0 replies; 9+ messages in thread
From: Tony Lindgren @ 2024-04-10  6:40 UTC (permalink / raw)
  To: linux-omap; +Cc: Dhruva Gole, Greg Kroah-Hartman, linux-kernel

With the smartreflex driver no longer relying on the use of
pm_runtime_irq_safe(), we can finally drop the related legacy quirk
handling.

Reviewed-by: Dhruva Gole <d-gole@ti.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
---
 drivers/bus/ti-sysc.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/drivers/bus/ti-sysc.c b/drivers/bus/ti-sysc.c
--- a/drivers/bus/ti-sysc.c
+++ b/drivers/bus/ti-sysc.c
@@ -2869,8 +2869,7 @@ static const struct sysc_capabilities sysc_34xx_sr = {
 	.type = TI_SYSC_OMAP34XX_SR,
 	.sysc_mask = SYSC_OMAP2_CLOCKACTIVITY,
 	.regbits = &sysc_regbits_omap34xx_sr,
-	.mod_quirks = SYSC_QUIRK_USE_CLOCKACT | SYSC_QUIRK_UNCACHED |
-		      SYSC_QUIRK_LEGACY_IDLE,
+	.mod_quirks = SYSC_QUIRK_USE_CLOCKACT | SYSC_QUIRK_UNCACHED,
 };
 
 /*
@@ -2891,13 +2890,12 @@ static const struct sysc_capabilities sysc_36xx_sr = {
 	.type = TI_SYSC_OMAP36XX_SR,
 	.sysc_mask = SYSC_OMAP3_SR_ENAWAKEUP,
 	.regbits = &sysc_regbits_omap36xx_sr,
-	.mod_quirks = SYSC_QUIRK_UNCACHED | SYSC_QUIRK_LEGACY_IDLE,
+	.mod_quirks = SYSC_QUIRK_UNCACHED,
 };
 
 static const struct sysc_capabilities sysc_omap4_sr = {
 	.type = TI_SYSC_OMAP4_SR,
 	.regbits = &sysc_regbits_omap36xx_sr,
-	.mod_quirks = SYSC_QUIRK_LEGACY_IDLE,
 };
 
 /*
-- 
2.44.0

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

* [PATCH v2 5/5] bus: ti-sysc: Drop legacy idle quirk handling
  2024-04-10  6:40 [PATCH v2 0/5] Update ti-sysc description and drop legacy quirk handling Tony Lindgren
                   ` (3 preceding siblings ...)
  2024-04-10  6:40 ` [PATCH v2 4/5] bus: ti-sysc: Drop legacy quirk handling for smartreflex Tony Lindgren
@ 2024-04-10  6:40 ` Tony Lindgren
  4 siblings, 0 replies; 9+ messages in thread
From: Tony Lindgren @ 2024-04-10  6:40 UTC (permalink / raw)
  To: linux-omap; +Cc: Dhruva Gole, Greg Kroah-Hartman, linux-kernel

There are no more users that need the legacy idle quirk so let's drop
the legacy idle quirk handling. This simplifies the PM code to just
sysc_pm_ops with unified handling for all the interconnect targets.

Reviewed-by: Dhruva Gole <d-gole@ti.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
---
 drivers/bus/ti-sysc.c                 | 109 +-------------------------
 include/linux/platform_data/ti-sysc.h |   1 -
 2 files changed, 2 insertions(+), 108 deletions(-)

diff --git a/drivers/bus/ti-sysc.c b/drivers/bus/ti-sysc.c
--- a/drivers/bus/ti-sysc.c
+++ b/drivers/bus/ti-sysc.c
@@ -1469,8 +1469,7 @@ static int __maybe_unused sysc_noirq_suspend(struct device *dev)
 
 	ddata = dev_get_drvdata(dev);
 
-	if (ddata->cfg.quirks &
-	    (SYSC_QUIRK_LEGACY_IDLE | SYSC_QUIRK_NO_IDLE))
+	if (ddata->cfg.quirks & SYSC_QUIRK_NO_IDLE)
 		return 0;
 
 	if (!ddata->enabled)
@@ -1488,8 +1487,7 @@ static int __maybe_unused sysc_noirq_resume(struct device *dev)
 
 	ddata = dev_get_drvdata(dev);
 
-	if (ddata->cfg.quirks &
-	    (SYSC_QUIRK_LEGACY_IDLE | SYSC_QUIRK_NO_IDLE))
+	if (ddata->cfg.quirks & SYSC_QUIRK_NO_IDLE)
 		return 0;
 
 	if (ddata->cfg.quirks & SYSC_QUIRK_REINIT_ON_RESUME) {
@@ -2457,89 +2455,6 @@ static int __maybe_unused sysc_child_runtime_resume(struct device *dev)
 	return pm_generic_runtime_resume(dev);
 }
 
-#ifdef CONFIG_PM_SLEEP
-static int sysc_child_suspend_noirq(struct device *dev)
-{
-	struct sysc *ddata;
-	int error;
-
-	ddata = sysc_child_to_parent(dev);
-
-	dev_dbg(ddata->dev, "%s %s\n", __func__,
-		ddata->name ? ddata->name : "");
-
-	error = pm_generic_suspend_noirq(dev);
-	if (error) {
-		dev_err(dev, "%s error at %i: %i\n",
-			__func__, __LINE__, error);
-
-		return error;
-	}
-
-	if (!pm_runtime_status_suspended(dev)) {
-		error = pm_generic_runtime_suspend(dev);
-		if (error) {
-			dev_dbg(dev, "%s busy at %i: %i\n",
-				__func__, __LINE__, error);
-
-			return 0;
-		}
-
-		error = sysc_runtime_suspend(ddata->dev);
-		if (error) {
-			dev_err(dev, "%s error at %i: %i\n",
-				__func__, __LINE__, error);
-
-			return error;
-		}
-
-		ddata->child_needs_resume = true;
-	}
-
-	return 0;
-}
-
-static int sysc_child_resume_noirq(struct device *dev)
-{
-	struct sysc *ddata;
-	int error;
-
-	ddata = sysc_child_to_parent(dev);
-
-	dev_dbg(ddata->dev, "%s %s\n", __func__,
-		ddata->name ? ddata->name : "");
-
-	if (ddata->child_needs_resume) {
-		ddata->child_needs_resume = false;
-
-		error = sysc_runtime_resume(ddata->dev);
-		if (error)
-			dev_err(ddata->dev,
-				"%s runtime resume error: %i\n",
-				__func__, error);
-
-		error = pm_generic_runtime_resume(dev);
-		if (error)
-			dev_err(ddata->dev,
-				"%s generic runtime resume: %i\n",
-				__func__, error);
-	}
-
-	return pm_generic_resume_noirq(dev);
-}
-#endif
-
-static struct dev_pm_domain sysc_child_pm_domain = {
-	.ops = {
-		SET_RUNTIME_PM_OPS(sysc_child_runtime_suspend,
-				   sysc_child_runtime_resume,
-				   NULL)
-		USE_PLATFORM_PM_SLEEP_OPS
-		SET_NOIRQ_SYSTEM_SLEEP_PM_OPS(sysc_child_suspend_noirq,
-					      sysc_child_resume_noirq)
-	}
-};
-
 /* Caller needs to take list_lock if ever used outside of cpu_pm */
 static void sysc_reinit_modules(struct sysc_soc_info *soc)
 {
@@ -2610,25 +2525,6 @@ static void sysc_add_restored(struct sysc *ddata)
 	mutex_unlock(&sysc_soc->list_lock);
 }
 
-/**
- * sysc_legacy_idle_quirk - handle children in omap_device compatible way
- * @ddata: device driver data
- * @child: child device driver
- *
- * Allow idle for child devices as done with _od_runtime_suspend().
- * Otherwise many child devices will not idle because of the permanent
- * parent usecount set in pm_runtime_irq_safe().
- *
- * Note that the long term solution is to just modify the child device
- * drivers to not set pm_runtime_irq_safe() and then this can be just
- * dropped.
- */
-static void sysc_legacy_idle_quirk(struct sysc *ddata, struct device *child)
-{
-	if (ddata->cfg.quirks & SYSC_QUIRK_LEGACY_IDLE)
-		dev_pm_domain_set(child, &sysc_child_pm_domain);
-}
-
 static int sysc_notifier_call(struct notifier_block *nb,
 			      unsigned long event, void *device)
 {
@@ -2645,7 +2541,6 @@ static int sysc_notifier_call(struct notifier_block *nb,
 		error = sysc_child_add_clocks(ddata, dev);
 		if (error)
 			return error;
-		sysc_legacy_idle_quirk(ddata, dev);
 		break;
 	default:
 		break;
diff --git a/include/linux/platform_data/ti-sysc.h b/include/linux/platform_data/ti-sysc.h
--- a/include/linux/platform_data/ti-sysc.h
+++ b/include/linux/platform_data/ti-sysc.h
@@ -71,7 +71,6 @@ struct sysc_regbits {
 #define SYSC_QUIRK_SWSUP_SIDLE_ACT	BIT(12)
 #define SYSC_QUIRK_SWSUP_SIDLE		BIT(11)
 #define SYSC_QUIRK_EXT_OPT_CLOCK	BIT(10)
-#define SYSC_QUIRK_LEGACY_IDLE		BIT(9)
 #define SYSC_QUIRK_RESET_STATUS		BIT(8)
 #define SYSC_QUIRK_NO_IDLE		BIT(7)
 #define SYSC_QUIRK_NO_IDLE_ON_INIT	BIT(6)
-- 
2.44.0

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

* Re: [PATCH v2 1/5] bus: ti-sysc: Move check for no-reset-on-init
  2024-04-10  6:40 ` [PATCH v2 1/5] bus: ti-sysc: Move check for no-reset-on-init Tony Lindgren
@ 2024-04-10 18:03   ` Dhruva Gole
  2024-04-11  4:30     ` Tony Lindgren
  0 siblings, 1 reply; 9+ messages in thread
From: Dhruva Gole @ 2024-04-10 18:03 UTC (permalink / raw)
  To: Tony Lindgren; +Cc: linux-omap, Greg Kroah-Hartman, linux-kernel

On Apr 10, 2024 at 09:40:05 +0300, Tony Lindgren wrote:
> We are wrongly checking SYSC_QUIRK_NO_RESET_ON_INIT flag in sysc_reset(),
> it can be called also after init from sysc_reinit_module(). Let's fix the
> issue by moving the check to the init code.

I am not able to understand exactly the potential bug here, what was the
issue exactly?
What I am able to infer is this is more of an improvement than fixing a
bug? Maybe I am missing some context, can you help me understand the
potential bug here?

> 
> Fixes: 6a52bc2b81fa ("bus: ti-sysc: Add quirk handling for reset on re-init")

Fixes tag, you might want to CC stable@vger.kernel.org?

> Signed-off-by: Tony Lindgren <tony@atomide.com>
> ---
>  drivers/bus/ti-sysc.c | 15 ++++++++-------
>  1 file changed, 8 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/bus/ti-sysc.c b/drivers/bus/ti-sysc.c
> --- a/drivers/bus/ti-sysc.c
> +++ b/drivers/bus/ti-sysc.c
> @@ -2145,8 +2145,7 @@ static int sysc_reset(struct sysc *ddata)
>  	sysc_offset = ddata->offsets[SYSC_SYSCONFIG];
>  
>  	if (ddata->legacy_mode ||
> -	    ddata->cap->regbits->srst_shift < 0 ||
> -	    ddata->cfg.quirks & SYSC_QUIRK_NO_RESET_ON_INIT)
> +	    ddata->cap->regbits->srst_shift < 0)
>  		return 0;
>  
>  	sysc_mask = BIT(ddata->cap->regbits->srst_shift);
> @@ -2240,12 +2239,14 @@ static int sysc_init_module(struct sysc *ddata)
>  			goto err_main_clocks;
>  	}
>  
> -	error = sysc_reset(ddata);
> -	if (error)
> -		dev_err(ddata->dev, "Reset failed with %d\n", error);
> +	if (!(ddata->cfg.quirks & SYSC_QUIRK_NO_RESET_ON_INIT)) {
> +		error = sysc_reset(ddata);
> +		if (error)
> +			dev_err(ddata->dev, "Reset failed with %d\n", error);
>  
> -	if (error && !ddata->legacy_mode)
> -		sysc_disable_module(ddata->dev);
> +		if (error && !ddata->legacy_mode)
> +			sysc_disable_module(ddata->dev);
> +	}
>  

-- 
Best regards,
Dhruva

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

* Re: [PATCH v2 3/5] bus: ti-sysc: Drop legacy quirk handling for uarts
  2024-04-10  6:40 ` [PATCH v2 3/5] bus: ti-sysc: Drop legacy quirk handling for uarts Tony Lindgren
@ 2024-04-10 18:11   ` Dhruva Gole
  0 siblings, 0 replies; 9+ messages in thread
From: Dhruva Gole @ 2024-04-10 18:11 UTC (permalink / raw)
  To: Tony Lindgren; +Cc: linux-omap, Greg Kroah-Hartman, linux-kernel

On Apr 10, 2024 at 09:40:07 +0300, Tony Lindgren wrote:
> With the 8250_omap and omap-serial drivers no longer relying on the use
> of pm_runtime_irq_safe(), we can finally drop the related legacy quirk
> handling for uarts.
> 
> Signed-off-by: Tony Lindgren <tony@atomide.com>
> ---

LGTM!
Reviewed-by: Dhruva Gole <d-gole@ti.com>


-- 
Best regards,
Dhruva

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

* Re: [PATCH v2 1/5] bus: ti-sysc: Move check for no-reset-on-init
  2024-04-10 18:03   ` Dhruva Gole
@ 2024-04-11  4:30     ` Tony Lindgren
  0 siblings, 0 replies; 9+ messages in thread
From: Tony Lindgren @ 2024-04-11  4:30 UTC (permalink / raw)
  To: Dhruva Gole; +Cc: linux-omap, Greg Kroah-Hartman, linux-kernel

* Dhruva Gole <d-gole@ti.com> [240410 18:03]:
> On Apr 10, 2024 at 09:40:05 +0300, Tony Lindgren wrote:
> > We are wrongly checking SYSC_QUIRK_NO_RESET_ON_INIT flag in sysc_reset(),
> > it can be called also after init from sysc_reinit_module(). Let's fix the
> > issue by moving the check to the init code.
> 
> I am not able to understand exactly the potential bug here, what was the
> issue exactly?

With this flag, reset should be skipped on init, for example for an SDRAM
controller during booting or to preserve a boot logo etc. However, if a
reset is requested later on after init, we must ignore this flag.

> What I am able to infer is this is more of an improvement than fixing a
> bug? Maybe I am missing some context, can you help me understand the
> potential bug here?

We are now also calling sysc_reset() during runtime, so in theory some
device would not reset during usage as requested. I don't think we have
such cases in reality though. So yeah this is more cleanup rather than a
fix AFAIK.

> > Fixes: 6a52bc2b81fa ("bus: ti-sysc: Add quirk handling for reset on re-init")
> 
> Fixes tag, you might want to CC stable@vger.kernel.org?

Let's just leave out the fixes tag as there are no known bugs caused
by this.

Regards,

Tony

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

end of thread, other threads:[~2024-04-11  4:30 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-04-10  6:40 [PATCH v2 0/5] Update ti-sysc description and drop legacy quirk handling Tony Lindgren
2024-04-10  6:40 ` [PATCH v2 1/5] bus: ti-sysc: Move check for no-reset-on-init Tony Lindgren
2024-04-10 18:03   ` Dhruva Gole
2024-04-11  4:30     ` Tony Lindgren
2024-04-10  6:40 ` [PATCH v2 2/5] bus: ti-sysc: Add a description and copyrights Tony Lindgren
2024-04-10  6:40 ` [PATCH v2 3/5] bus: ti-sysc: Drop legacy quirk handling for uarts Tony Lindgren
2024-04-10 18:11   ` Dhruva Gole
2024-04-10  6:40 ` [PATCH v2 4/5] bus: ti-sysc: Drop legacy quirk handling for smartreflex Tony Lindgren
2024-04-10  6:40 ` [PATCH v2 5/5] bus: ti-sysc: Drop legacy idle quirk handling Tony Lindgren

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox