| From 28d55c41acfa1effc928a985312e321fca5ec861 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Fri, 15 Apr 2022 18:25:13 +0200 |
| Subject: drm/panel/raspberrypi-touchscreen: Initialise the bridge in prepare |
| |
| From: Dave Stevenson <dave.stevenson@raspberrypi.com> |
| |
| [ Upstream commit 5f18c0782b99e26121efa93d20b76c19e17aa1dd ] |
| |
| The panel has a prepare call which is before video starts, and an |
| enable call which is after. |
| The Toshiba bridge should be configured before video, so move |
| the relevant power and initialisation calls to prepare. |
| |
| Fixes: 2f733d6194bd ("drm/panel: Add support for the Raspberry Pi 7" Touchscreen.") |
| Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com> |
| Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com> |
| Signed-off-by: Maxime Ripard <maxime@cerno.tech> |
| Link: https://patchwork.freedesktop.org/patch/msgid/20220415162513.42190-3-stefan.wahren@i2se.com |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/gpu/drm/panel/panel-raspberrypi-touchscreen.c | 11 +++++++++-- |
| 1 file changed, 9 insertions(+), 2 deletions(-) |
| |
| diff --git a/drivers/gpu/drm/panel/panel-raspberrypi-touchscreen.c b/drivers/gpu/drm/panel/panel-raspberrypi-touchscreen.c |
| index 6906f522521d..a621dd28ff70 100644 |
| --- a/drivers/gpu/drm/panel/panel-raspberrypi-touchscreen.c |
| +++ b/drivers/gpu/drm/panel/panel-raspberrypi-touchscreen.c |
| @@ -268,7 +268,7 @@ static int rpi_touchscreen_noop(struct drm_panel *panel) |
| return 0; |
| } |
| |
| -static int rpi_touchscreen_enable(struct drm_panel *panel) |
| +static int rpi_touchscreen_prepare(struct drm_panel *panel) |
| { |
| struct rpi_touchscreen *ts = panel_to_ts(panel); |
| int i; |
| @@ -298,6 +298,13 @@ static int rpi_touchscreen_enable(struct drm_panel *panel) |
| rpi_touchscreen_write(ts, DSI_STARTDSI, 0x01); |
| msleep(100); |
| |
| + return 0; |
| +} |
| + |
| +static int rpi_touchscreen_enable(struct drm_panel *panel) |
| +{ |
| + struct rpi_touchscreen *ts = panel_to_ts(panel); |
| + |
| /* Turn on the backlight. */ |
| rpi_touchscreen_i2c_write(ts, REG_PWM, 255); |
| |
| @@ -352,7 +359,7 @@ static int rpi_touchscreen_get_modes(struct drm_panel *panel) |
| static const struct drm_panel_funcs rpi_touchscreen_funcs = { |
| .disable = rpi_touchscreen_disable, |
| .unprepare = rpi_touchscreen_noop, |
| - .prepare = rpi_touchscreen_noop, |
| + .prepare = rpi_touchscreen_prepare, |
| .enable = rpi_touchscreen_enable, |
| .get_modes = rpi_touchscreen_get_modes, |
| }; |
| -- |
| 2.35.1 |
| |