Skip to content

Commit bd915ae

Browse files
xdarklightsuperna9999
authored andcommitted
drm/meson: Don't remove bridges which are created by other drivers
Stop calling drm_bridge_remove() for bridges allocated/managed by other drivers in the remove paths of meson_encoder_{cvbs,dsi,hdmi}. drm_bridge_remove() unregisters the bridge so it cannot be used anymore. Doing so for bridges we don't own can lead to the video pipeline not being able to come up after -EPROBE_DEFER of the VPU because we're unregistering a bridge that's managed by another driver. The other driver doesn't know that we have unregistered it's bridge and on subsequent .probe() we're not able to find those bridges anymore (since nobody re-creates them). This fixes probe errors on Meson8b boards with the CVBS outputs enabled. Fixes: 0984772 ("drm/meson: remove drm bridges at aggregate driver unbind time") Fixes: 42dcf15 ("drm/meson: add DSI encoder") Cc: <[email protected]> Reported-by: Steve Morvai <[email protected]> Signed-off-by: Martin Blumenstingl <[email protected]> Reviewed-by: Neil Armstrong <[email protected]> Tested-by: Steve Morvai <[email protected]> Link: https://lore.kernel.org/r/[email protected] Reviewed-by: Neil Armstrong <[email protected]> Signed-off-by: Neil Armstrong <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
1 parent 6532379 commit bd915ae

File tree

3 files changed

+0
-3
lines changed

3 files changed

+0
-3
lines changed

drivers/gpu/drm/meson/meson_encoder_cvbs.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -294,6 +294,5 @@ void meson_encoder_cvbs_remove(struct meson_drm *priv)
294294
if (priv->encoders[MESON_ENC_CVBS]) {
295295
meson_encoder_cvbs = priv->encoders[MESON_ENC_CVBS];
296296
drm_bridge_remove(&meson_encoder_cvbs->bridge);
297-
drm_bridge_remove(meson_encoder_cvbs->next_bridge);
298297
}
299298
}

drivers/gpu/drm/meson/meson_encoder_dsi.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,5 @@ void meson_encoder_dsi_remove(struct meson_drm *priv)
168168
if (priv->encoders[MESON_ENC_DSI]) {
169169
meson_encoder_dsi = priv->encoders[MESON_ENC_DSI];
170170
drm_bridge_remove(&meson_encoder_dsi->bridge);
171-
drm_bridge_remove(meson_encoder_dsi->next_bridge);
172171
}
173172
}

drivers/gpu/drm/meson/meson_encoder_hdmi.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -474,6 +474,5 @@ void meson_encoder_hdmi_remove(struct meson_drm *priv)
474474
if (priv->encoders[MESON_ENC_HDMI]) {
475475
meson_encoder_hdmi = priv->encoders[MESON_ENC_HDMI];
476476
drm_bridge_remove(&meson_encoder_hdmi->bridge);
477-
drm_bridge_remove(meson_encoder_hdmi->next_bridge);
478477
}
479478
}

0 commit comments

Comments
 (0)