]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/bridge: analogix_dp: Pass struct drm_atomic_state* for analogix_dp_bridge_mode_set()
authorDamon Ding <damon.ding@rock-chips.com>
Mon, 13 Apr 2026 13:25:44 +0000 (21:25 +0800)
committerLuca Ceresoli <luca.ceresoli@bootlin.com>
Mon, 13 Apr 2026 15:16:21 +0000 (17:16 +0200)
To avoid using &analogix_dp_device.connector for compatibility
with the bridge connector framework, get &drm_connector from
&drm_atomic_state instead.

Signed-off-by: Damon Ding <damon.ding@rock-chips.com>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Reviewed-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
Link: https://patch.msgid.link/20260413132551.1049307-2-damon.ding@rock-chips.com
Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
drivers/gpu/drm/bridge/analogix/analogix_dp_core.c

index 840c1963e60e9a364f30a8046af291fd73773fad..84b994cce900d5e7a446b14ac36000241b2fea4e 100644 (file)
@@ -1095,14 +1095,21 @@ out_dp_init:
 }
 
 static void analogix_dp_bridge_mode_set(struct drm_bridge *bridge,
+                                       struct drm_atomic_state *state,
                                        const struct drm_display_mode *mode)
 {
        struct analogix_dp_device *dp = to_dp(bridge);
-       struct drm_display_info *display_info = &dp->connector.display_info;
        struct video_info *video = &dp->video_info;
        struct device_node *dp_node = dp->dev->of_node;
+       struct drm_connector *connector;
+       struct drm_display_info *display_info;
        int vic;
 
+       connector = drm_atomic_get_new_connector_for_encoder(state, bridge->encoder);
+       if (!connector)
+               return;
+       display_info = &connector->display_info;
+
        /* Input video interlaces & hsync pol & vsync pol */
        video->interlaced = !!(mode->flags & DRM_MODE_FLAG_INTERLACE);
        video->v_sync_polarity = !!(mode->flags & DRM_MODE_FLAG_NVSYNC);
@@ -1186,7 +1193,7 @@ static void analogix_dp_bridge_atomic_enable(struct drm_bridge *bridge,
        new_crtc_state = drm_atomic_get_new_crtc_state(old_state, crtc);
        if (!new_crtc_state)
                return;
-       analogix_dp_bridge_mode_set(bridge, &new_crtc_state->adjusted_mode);
+       analogix_dp_bridge_mode_set(bridge, old_state, &new_crtc_state->adjusted_mode);
 
        old_crtc_state = drm_atomic_get_old_crtc_state(old_state, crtc);
        /* Not a full enable, just disable PSR and continue */