diff options
author | Tony Lindgren <tony@atomide.com> | 2019-03-21 19:00:21 +0100 |
---|---|---|
committer | Tony Lindgren <tony@atomide.com> | 2019-04-03 18:32:35 +0200 |
commit | 93de83a21e76eda25517562a9e62f7b6a6f38126 (patch) | |
tree | aeece0a9296a96d193ec741a7e4a378bbdd64fa4 /drivers/bus | |
parent | bus: ti-sysc: Allocate mdata as needed and do platform data based init later (diff) | |
download | linux-93de83a21e76eda25517562a9e62f7b6a6f38126.tar.xz linux-93de83a21e76eda25517562a9e62f7b6a6f38126.zip |
bus: ti-sysc: Manage clocks for the interconnect target module in all cases
We are currently not managing interconnect target module clocks in the
for legacy platform data based case. This causes a problem for using the
platform data based functions when dropping the platform data for the
interconnect target module configuration.
To avoid a situation where we need to populate the main and optional
clocks also for the platform data based functions, let's just manage the
clocks directly in ti-sysc driver. This means that until the interconnect
target module confugration platform data is dropped our use count for
clk_enable() will be 2 instead of 1.
Signed-off-by: Tony Lindgren <tony@atomide.com>
Diffstat (limited to 'drivers/bus')
-rw-r--r-- | drivers/bus/ti-sysc.c | 24 |
1 files changed, 11 insertions, 13 deletions
diff --git a/drivers/bus/ti-sysc.c b/drivers/bus/ti-sysc.c index 5c4d8394d753..d4aae997b781 100644 --- a/drivers/bus/ti-sysc.c +++ b/drivers/bus/ti-sysc.c @@ -783,10 +783,8 @@ static int __maybe_unused sysc_runtime_suspend(struct device *dev) if (ddata->legacy_mode) { error = sysc_runtime_suspend_legacy(dev, ddata); - if (!error) - ddata->enabled = false; - - return error; + if (error) + return error; } sysc_disable_main_clocks(ddata); @@ -809,14 +807,6 @@ static int __maybe_unused sysc_runtime_resume(struct device *dev) if (ddata->enabled) return 0; - if (ddata->legacy_mode) { - error = sysc_runtime_resume_legacy(dev, ddata); - if (!error) - ddata->enabled = true; - - return error; - } - if (sysc_opt_clks_needed(ddata)) { error = sysc_enable_opt_clocks(ddata); if (error) @@ -825,13 +815,21 @@ static int __maybe_unused sysc_runtime_resume(struct device *dev) error = sysc_enable_main_clocks(ddata); if (error) - goto err_main_clocks; + goto err_opt_clocks; + + if (ddata->legacy_mode) { + error = sysc_runtime_resume_legacy(dev, ddata); + if (error) + goto err_main_clocks; + } ddata->enabled = true; return 0; err_main_clocks: + sysc_disable_main_clocks(ddata); +err_opt_clocks: if (sysc_opt_clks_needed(ddata)) sysc_disable_opt_clocks(ddata); |