summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/panel/panel-dsi-cm.c
diff options
context:
space:
mode:
authorTomi Valkeinen <tomi.valkeinen@ti.com>2020-12-15 12:46:33 +0200
committerTomi Valkeinen <tomi.valkeinen@ti.com>2020-12-15 16:17:30 +0200
commitc50c2d2d8d0c0e49098802a9e76487bf2ec8b822 (patch)
tree2d06f2409faac6245fa94c3ca2b61ab139ee214b /drivers/gpu/drm/panel/panel-dsi-cm.c
parent443dae0958661e073aada6ee9db1aa4780ad4c2c (diff)
drm/panel: panel-dsi-cm: set column & page at setup
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
Diffstat (limited to 'drivers/gpu/drm/panel/panel-dsi-cm.c')
-rw-r--r--drivers/gpu/drm/panel/panel-dsi-cm.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/drivers/gpu/drm/panel/panel-dsi-cm.c b/drivers/gpu/drm/panel/panel-dsi-cm.c
index c2e702172df2..067745fb682f 100644
--- a/drivers/gpu/drm/panel/panel-dsi-cm.c
+++ b/drivers/gpu/drm/panel/panel-dsi-cm.c
@@ -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;