drm/tinydrm/mi0283qt: Let the display pipe handle power

It's better to leave power handling and controller init to the
modesetting machinery using the simple pipe .enable and .disable
callbacks. Remove unused mipi_dbi_pipe_enable().

Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
Reviewed-by: David Lechner <david@lechnology.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20180110185940.53841-6-noralf@tronnes.org
This commit is contained in:
Noralf Trønnes
2018-01-10 19:59:38 +01:00
parent 070ab1283a
commit f730eceb42
3 changed files with 15 additions and 66 deletions

View File

@@ -47,8 +47,11 @@
#define ILI9341_MADCTL_MX BIT(6)
#define ILI9341_MADCTL_MY BIT(7)
static int mi0283qt_init(struct mipi_dbi *mipi)
static void mi0283qt_enable(struct drm_simple_display_pipe *pipe,
struct drm_crtc_state *crtc_state)
{
struct tinydrm_device *tdev = pipe_to_tinydrm(pipe);
struct mipi_dbi *mipi = mipi_dbi_from_tinydrm(tdev);
u8 addr_mode;
int ret;
@@ -56,9 +59,9 @@ static int mi0283qt_init(struct mipi_dbi *mipi)
ret = mipi_dbi_poweron_conditional_reset(mipi);
if (ret < 0)
return ret;
return;
if (ret == 1)
return 0;
goto out_enable;
mipi_dbi_command(mipi, MIPI_DCS_SET_DISPLAY_OFF);
@@ -121,19 +124,12 @@ static int mi0283qt_init(struct mipi_dbi *mipi)
mipi_dbi_command(mipi, MIPI_DCS_SET_DISPLAY_ON);
msleep(100);
return 0;
}
static void mi0283qt_fini(void *data)
{
struct mipi_dbi *mipi = data;
DRM_DEBUG_KMS("\n");
regulator_disable(mipi->regulator);
out_enable:
mipi_dbi_enable_flush(mipi);
}
static const struct drm_simple_display_pipe_funcs mi0283qt_pipe_funcs = {
.enable = mipi_dbi_pipe_enable,
.enable = mi0283qt_enable,
.disable = mipi_dbi_pipe_disable,
.update = tinydrm_display_pipe_update,
.prepare_fb = tinydrm_display_pipe_prepare_fb,
@@ -214,17 +210,6 @@ static int mi0283qt_probe(struct spi_device *spi)
if (ret)
return ret;
ret = mi0283qt_init(mipi);
if (ret)
return ret;
/* use devres to fini after drm unregister (drv->remove is before) */
ret = devm_add_action(dev, mi0283qt_fini, mipi);
if (ret) {
mi0283qt_fini(mipi);
return ret;
}
spi_set_drvdata(spi, mipi);
return devm_tinydrm_register(&mipi->tinydrm);
@@ -240,25 +225,13 @@ static void mi0283qt_shutdown(struct spi_device *spi)
static int __maybe_unused mi0283qt_pm_suspend(struct device *dev)
{
struct mipi_dbi *mipi = dev_get_drvdata(dev);
int ret;
ret = drm_mode_config_helper_suspend(mipi->tinydrm.drm);
if (ret)
return ret;
mi0283qt_fini(mipi);
return 0;
return drm_mode_config_helper_suspend(mipi->tinydrm.drm);
}
static int __maybe_unused mi0283qt_pm_resume(struct device *dev)
{
struct mipi_dbi *mipi = dev_get_drvdata(dev);
int ret;
ret = mi0283qt_init(mipi);
if (ret)
return ret;
drm_mode_config_helper_resume(mipi->tinydrm.drm);