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