OSDN Git Service

drm/panel: panel-dsi-cm: set column & page at setup
authorTomi Valkeinen <tomi.valkeinen@ti.com>
Tue, 15 Dec 2020 10:46:33 +0000 (12:46 +0200)
committerTomi Valkeinen <tomi.valkeinen@ti.com>
Tue, 15 Dec 2020 14:17:30 +0000 (16:17 +0200)
Set the column & page address once during setup, instead of relying the
DSI host driver to set those.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Reviewed-by: Sam Ravnborg <sam@ravnborg.org>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20201215104657.802264-61-tomi.valkeinen@ti.com
drivers/gpu/drm/panel/panel-dsi-cm.c

index c2e7021..067745f 100644 (file)
@@ -170,6 +170,22 @@ static int dsicm_get_id(struct panel_drv_data *ddata, u8 *id1, u8 *id2, u8 *id3)
        return 0;
 }
 
+static int dsicm_set_update_window(struct panel_drv_data *ddata)
+{
+       struct mipi_dsi_device *dsi = ddata->dsi;
+       int r;
+
+       r = mipi_dsi_dcs_set_column_address(dsi, 0, ddata->mode.hdisplay - 1);
+       if (r < 0)
+               return r;
+
+       r = mipi_dsi_dcs_set_page_address(dsi, 0, ddata->mode.vdisplay - 1);
+       if (r < 0)
+               return r;
+
+       return 0;
+}
+
 static int dsicm_bl_update_status(struct backlight_device *dev)
 {
        struct panel_drv_data *ddata = dev_get_drvdata(&dev->dev);
@@ -307,6 +323,10 @@ static int dsicm_power_on(struct panel_drv_data *ddata)
        if (r)
                goto err;
 
+       r = dsicm_set_update_window(ddata);
+       if (r)
+               goto err;
+
        r = mipi_dsi_dcs_set_display_on(ddata->dsi);
        if (r)
                goto err;