Commit fd4e788e authored by Tomi Valkeinen's avatar Tomi Valkeinen

drm/omap: sdi: fix bridge enable/disable

When the SDI output was converted to DRM bridge, the atomic versions of
enable and disable funcs were used. This was not intended, as that would
require implementing other atomic funcs too. This leads to:

WARNING: CPU: 0 PID: 18 at drivers/gpu/drm/drm_bridge.c:708 drm_atomic_helper_commit_modeset_enables+0x134/0x268

and display not working.

Fix this by using the legacy enable/disable funcs.

Fixes: 8bef8a6d ("drm/omap: sdi: Register a drm_bridge")
Reported-by: default avatarAaro Koskinen <aaro.koskinen@iki.fi>
Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
Tested-by: default avatarIvaylo Dimitrov <ivo.g.dimitrov.75@gmail.com>
Tested-by: default avatarAaro Koskinen <aaro.koskinen@iki.fi>
Reviewed-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Cc: stable@vger.kernel.org # v5.7+
Link: https://patchwork.freedesktop.org/patch/msgid/20201127085241.848461-1-tomi.valkeinen@ti.com
parent 7c4bada1
...@@ -195,8 +195,7 @@ static void sdi_bridge_mode_set(struct drm_bridge *bridge, ...@@ -195,8 +195,7 @@ static void sdi_bridge_mode_set(struct drm_bridge *bridge,
sdi->pixelclock = adjusted_mode->clock * 1000; sdi->pixelclock = adjusted_mode->clock * 1000;
} }
static void sdi_bridge_enable(struct drm_bridge *bridge, static void sdi_bridge_enable(struct drm_bridge *bridge)
struct drm_bridge_state *bridge_state)
{ {
struct sdi_device *sdi = drm_bridge_to_sdi(bridge); struct sdi_device *sdi = drm_bridge_to_sdi(bridge);
struct dispc_clock_info dispc_cinfo; struct dispc_clock_info dispc_cinfo;
...@@ -259,8 +258,7 @@ static void sdi_bridge_enable(struct drm_bridge *bridge, ...@@ -259,8 +258,7 @@ static void sdi_bridge_enable(struct drm_bridge *bridge,
regulator_disable(sdi->vdds_sdi_reg); regulator_disable(sdi->vdds_sdi_reg);
} }
static void sdi_bridge_disable(struct drm_bridge *bridge, static void sdi_bridge_disable(struct drm_bridge *bridge)
struct drm_bridge_state *bridge_state)
{ {
struct sdi_device *sdi = drm_bridge_to_sdi(bridge); struct sdi_device *sdi = drm_bridge_to_sdi(bridge);
...@@ -278,8 +276,8 @@ static const struct drm_bridge_funcs sdi_bridge_funcs = { ...@@ -278,8 +276,8 @@ static const struct drm_bridge_funcs sdi_bridge_funcs = {
.mode_valid = sdi_bridge_mode_valid, .mode_valid = sdi_bridge_mode_valid,
.mode_fixup = sdi_bridge_mode_fixup, .mode_fixup = sdi_bridge_mode_fixup,
.mode_set = sdi_bridge_mode_set, .mode_set = sdi_bridge_mode_set,
.atomic_enable = sdi_bridge_enable, .enable = sdi_bridge_enable,
.atomic_disable = sdi_bridge_disable, .disable = sdi_bridge_disable,
}; };
static void sdi_bridge_init(struct sdi_device *sdi) static void sdi_bridge_init(struct sdi_device *sdi)
......
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