Commit 66a4e0ef authored by Guido Günther's avatar Guido Günther Committed by Sam Ravnborg

drm/panel: jh057n00900: Move panel DSI init to enable()

If the panel is wrapped in a panel_bridge it gets prepar()ed before the
upstream DSI bridge which can cause hangs (e.g. with imx-nwl since clocks
are not enabled yet). To avoid this move the panel's first DSI access to
enable() so the upstream bridge can prepare the DSI host controller in
it's pre_enable().

This is also in line with other panel drivers.
Signed-off-by: default avatarGuido Günther <agx@sigxcpu.org>
Reviewed-by: default avatarSam Ravnborg <sam@ravnborg.org>
Signed-off-by: default avatarSam Ravnborg <sam@ravnborg.org>
Link: https://patchwork.freedesktop.org/patch/msgid/12c3495b234952aafe11980a9e06cfd246134660.1564146727.git.agx@sigxcpu.org
parent 4a6e4ae2
...@@ -143,6 +143,14 @@ static int jh057n_init_sequence(struct jh057n *ctx) ...@@ -143,6 +143,14 @@ static int jh057n_init_sequence(struct jh057n *ctx)
static int jh057n_enable(struct drm_panel *panel) static int jh057n_enable(struct drm_panel *panel)
{ {
struct jh057n *ctx = panel_to_jh057n(panel); struct jh057n *ctx = panel_to_jh057n(panel);
int ret;
ret = jh057n_init_sequence(ctx);
if (ret < 0) {
DRM_DEV_ERROR(ctx->dev, "Panel init sequence failed: %d\n",
ret);
return ret;
}
return backlight_enable(ctx->backlight); return backlight_enable(ctx->backlight);
} }
...@@ -197,13 +205,6 @@ static int jh057n_prepare(struct drm_panel *panel) ...@@ -197,13 +205,6 @@ static int jh057n_prepare(struct drm_panel *panel)
gpiod_set_value_cansleep(ctx->reset_gpio, 0); gpiod_set_value_cansleep(ctx->reset_gpio, 0);
msleep(20); msleep(20);
ret = jh057n_init_sequence(ctx);
if (ret < 0) {
DRM_DEV_ERROR(ctx->dev, "Panel init sequence failed: %d\n",
ret);
return ret;
}
ctx->prepared = true; ctx->prepared = true;
return 0; return 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment