Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 416a07fb authored by Dave Gerlach's avatar Dave Gerlach Committed by Jyri Sarha
Browse files

drm/tilcdc: adopt pinctrl support



Update tilcdc driver to set the state of the pins to:
- "default on resume
- "sleep" on suspend

By optionally putting the pins into sleep state in the suspend callback
we can accomplish two things.
- minimize current leakage from pins and thus save power,
- prevent the IP from driving pins output in an uncontrolled manner,
which may happen if the power domain drops the domain regulator.

Signed-off-by: default avatarDave Gerlach <d-gerlach@ti.com>
Signed-off-by: default avatarDarren Etheridge <detheridge@ti.com>
Signed-off-by: default avatarJyri Sarha <jsarha@ti.com>
Reviewed-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
parent 6f206e9d
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -18,6 +18,8 @@
/* LCDC DRM driver, based on da8xx-fb */

#include <linux/component.h>
#include <linux/pinctrl/consumer.h>
#include <linux/suspend.h>

#include "tilcdc_drv.h"
#include "tilcdc_regs.h"
@@ -585,6 +587,9 @@ static int tilcdc_pm_suspend(struct device *dev)
		if (registers[i].save && (priv->rev >= registers[i].rev))
			priv->saved_register[n++] = tilcdc_read(ddev, registers[i].reg);

	/* Select sleep pin state */
	pinctrl_pm_select_sleep_state(dev);

	return 0;
}

@@ -594,6 +599,9 @@ static int tilcdc_pm_resume(struct device *dev)
	struct tilcdc_drm_private *priv = ddev->dev_private;
	unsigned i, n = 0;

	/* Select default pin state */
	pinctrl_pm_select_default_state(dev);

	/* Restore register state: */
	for (i = 0; i < ARRAY_SIZE(registers); i++)
		if (registers[i].save && (priv->rev >= registers[i].rev))