Commit 9b22ceb3 authored by Shenwei Wang's avatar Shenwei Wang Committed by Uwe Kleine-König
Browse files

pwm: imx-tpm: Enable pinctrl setting for sleep state



Apply the pinctrl setting of sleep state when system enters
suspend state.
Restore to the default pinctrl setting when system resumes.

Signed-off-by: default avatarShenwei Wang <shenwei.wang@nxp.com>
Link: https://lore.kernel.org/r/20240702164514.11007-1-shenwei.wang@nxp.com


Signed-off-by: default avatarUwe Kleine-König <ukleinek@kernel.org>
parent f3a616e2
Loading
Loading
Loading
Loading
+14 −2
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@
#include <linux/io.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/pinctrl/consumer.h>
#include <linux/platform_device.h>
#include <linux/pwm.h>
#include <linux/slab.h>
@@ -380,6 +381,7 @@ static int pwm_imx_tpm_probe(struct platform_device *pdev)
static int pwm_imx_tpm_suspend(struct device *dev)
{
	struct imx_tpm_pwm_chip *tpm = dev_get_drvdata(dev);
	int ret;

	if (tpm->enable_count > 0)
		return -EBUSY;
@@ -393,7 +395,11 @@ static int pwm_imx_tpm_suspend(struct device *dev)

	clk_disable_unprepare(tpm->clk);

	return 0;
	ret = pinctrl_pm_select_sleep_state(dev);
	if (ret)
		clk_prepare_enable(tpm->clk);

	return ret;
}

static int pwm_imx_tpm_resume(struct device *dev)
@@ -401,9 +407,15 @@ static int pwm_imx_tpm_resume(struct device *dev)
	struct imx_tpm_pwm_chip *tpm = dev_get_drvdata(dev);
	int ret = 0;

	ret = clk_prepare_enable(tpm->clk);
	ret = pinctrl_pm_select_default_state(dev);
	if (ret)
		return ret;

	ret = clk_prepare_enable(tpm->clk);
	if (ret) {
		dev_err(dev, "failed to prepare or enable clock: %d\n", ret);
		pinctrl_pm_select_sleep_state(dev);
	}

	return ret;
}