]> Git Repo - linux.git/commitdiff
bus: ti-sysc: Drop legacy idle quirk handling
authorTony Lindgren <[email protected]>
Thu, 11 Apr 2024 04:44:30 +0000 (07:44 +0300)
committerTony Lindgren <[email protected]>
Thu, 25 Apr 2024 04:29:41 +0000 (07:29 +0300)
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 <[email protected]>
Signed-off-by: Tony Lindgren <[email protected]>
drivers/bus/ti-sysc.c
include/linux/platform_data/ti-sysc.h

index 467702da0e82906e21f3b5d99081a6500834b5c9..8767e04d6c89738b21f1fbf091bd8f77f1c431ae 100644 (file)
@@ -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 @@ out_unlock:
        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;
index eb556f988d5768b72ec5c20770ac3c61c6817152..d8f15770a522b5eb8a8c1c2e834fe792f94dba39 100644 (file)
@@ -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)
This page took 0.054377 seconds and 4 git commands to generate.