Commit ff43728c authored by Tony Lindgren's avatar Tony Lindgren
Browse files

bus: ti-sysc: Move legacy platform data idling into separate functions



Let's move the legacy idle and enable into separate functions to simplify
PM runtime functions a bit.

Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
parent b7182b42
Loading
Loading
Loading
Loading
+50 −28
Original line number Diff line number Diff line
@@ -622,18 +622,12 @@ 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;
	struct sysc *ddata;
	int error = 0, i;

	ddata = dev_get_drvdata(dev);

	if (!ddata->enabled)
		return 0;
	int error;

	if (ddata->legacy_mode) {
	pdata = dev_get_platdata(ddata->dev);
	if (!pdata)
		return 0;
@@ -646,7 +640,46 @@ static int __maybe_unused sysc_runtime_suspend(struct device *dev)
		dev_err(dev, "%s: could not idle: %i\n",
			__func__, error);

		goto idled;
	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;

	ddata = dev_get_drvdata(dev);

	if (!ddata->enabled)
		return 0;

	if (ddata->legacy_mode) {
		error = sysc_runtime_suspend_legacy(dev, ddata);
		if (!error)
			ddata->enabled = false;

		return error;
	}

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

idled:
	ddata->enabled = false;

	return error;
@@ -667,7 +699,6 @@ idled:

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

@@ -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;

		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);
		error = sysc_runtime_resume_legacy(dev, ddata);
		if (!error)
			ddata->enabled = true;

		goto awake;
		return error;
	}

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

awake:
	ddata->enabled = true;

	return error;