Skip to content

Commit

Permalink
bus: ti-sysc: Move legacy platform data idling into separate functions
Browse files Browse the repository at this point in the history
Let's move the legacy idle and enable into separate functions to simplify
PM runtime functions a bit.

Signed-off-by: Tony Lindgren <tony@atomide.com>
  • Loading branch information
Tony Lindgren committed Apr 1, 2019
1 parent b7182b4 commit ff43728
Showing 1 changed file with 50 additions and 28 deletions.
78 changes: 50 additions & 28 deletions drivers/bus/ti-sysc.c
Original file line number Diff line number Diff line change
Expand Up @@ -622,9 +622,50 @@ static void sysc_show_registers(struct sysc *ddata)
buf);
}

static int __maybe_unused sysc_runtime_suspend(struct device *dev)
static int __maybe_unused sysc_runtime_suspend_legacy(struct device *dev,
struct sysc *ddata)
{
struct ti_sysc_platform_data *pdata;
int error;

pdata = dev_get_platdata(ddata->dev);
if (!pdata)
return 0;

if (!pdata->idle_module)
return -ENODEV;

error = pdata->idle_module(dev, &ddata->cookie);
if (error)
dev_err(dev, "%s: could not idle: %i\n",
__func__, error);

return 0;
}

static int __maybe_unused sysc_runtime_resume_legacy(struct device *dev,
struct sysc *ddata)
{
struct ti_sysc_platform_data *pdata;
int error;

pdata = dev_get_platdata(ddata->dev);
if (!pdata)
return 0;

if (!pdata->enable_module)
return -ENODEV;

error = pdata->enable_module(dev, &ddata->cookie);
if (error)
dev_err(dev, "%s: could not enable: %i\n",
__func__, error);

return 0;
}

static int __maybe_unused sysc_runtime_suspend(struct device *dev)
{
struct sysc *ddata;
int error = 0, i;

Expand All @@ -634,19 +675,11 @@ static int __maybe_unused sysc_runtime_suspend(struct device *dev)
return 0;

if (ddata->legacy_mode) {
pdata = dev_get_platdata(ddata->dev);
if (!pdata)
return 0;

if (!pdata->idle_module)
return -ENODEV;

error = pdata->idle_module(dev, &ddata->cookie);
if (error)
dev_err(dev, "%s: could not idle: %i\n",
__func__, error);
error = sysc_runtime_suspend_legacy(dev, ddata);
if (!error)
ddata->enabled = false;

goto idled;
return error;
}

for (i = 0; i < ddata->nr_clocks; i++) {
Expand All @@ -659,15 +692,13 @@ static int __maybe_unused sysc_runtime_suspend(struct device *dev)
clk_disable(ddata->clocks[i]);
}

idled:
ddata->enabled = false;

return error;
}

static int __maybe_unused sysc_runtime_resume(struct device *dev)
{
struct ti_sysc_platform_data *pdata;
struct sysc *ddata;
int error = 0, i;

Expand All @@ -677,19 +708,11 @@ static int __maybe_unused sysc_runtime_resume(struct device *dev)
return 0;

if (ddata->legacy_mode) {
pdata = dev_get_platdata(ddata->dev);
if (!pdata)
return 0;
error = sysc_runtime_resume_legacy(dev, ddata);
if (!error)
ddata->enabled = true;

if (!pdata->enable_module)
return -ENODEV;

error = pdata->enable_module(dev, &ddata->cookie);
if (error)
dev_err(dev, "%s: could not enable: %i\n",
__func__, error);

goto awake;
return error;
}

for (i = 0; i < ddata->nr_clocks; i++) {
Expand All @@ -704,7 +727,6 @@ static int __maybe_unused sysc_runtime_resume(struct device *dev)
return error;
}

awake:
ddata->enabled = true;

return error;
Expand Down

0 comments on commit ff43728

Please sign in to comment.