diff --git a/msm/dsi/dsi_display.c b/msm/dsi/dsi_display.c index 5286d17910..e52e5e4a10 100644 --- a/msm/dsi/dsi_display.c +++ b/msm/dsi/dsi_display.c @@ -5466,10 +5466,11 @@ static struct dsi_display_ext_bridge *dsi_display_ext_get_bridge( { struct msm_drm_private *priv; struct sde_kms *sde_kms; - struct list_head *connector_list; - struct drm_connector *conn_iter; + struct drm_connector *conn; + struct drm_connector_list_iter conn_iter; struct sde_connector *sde_conn; struct dsi_display *display; + struct dsi_display_ext_bridge *dsi_bridge = NULL; int i; if (!bridge || !bridge->encoder) { @@ -5479,20 +5480,23 @@ static struct dsi_display_ext_bridge *dsi_display_ext_get_bridge( priv = bridge->dev->dev_private; sde_kms = to_sde_kms(priv->kms); - connector_list = &sde_kms->dev->mode_config.connector_list; - list_for_each_entry(conn_iter, connector_list, head) { - sde_conn = to_sde_connector(conn_iter); + drm_connector_list_iter_begin(sde_kms->dev, &conn_iter); + drm_for_each_connector_iter(conn, &conn_iter) { + sde_conn = to_sde_connector(conn); if (sde_conn->encoder == bridge->encoder) { display = sde_conn->display; display_for_each_ctrl(i, display) { - if (display->ext_bridge[i].bridge == bridge) - return &display->ext_bridge[i]; + if (display->ext_bridge[i].bridge == bridge) { + dsi_bridge = &display->ext_bridge[i]; + break; + } } } } + drm_connector_list_iter_end(&conn_iter); - return NULL; + return dsi_bridge; } static void dsi_display_drm_ext_adjust_timing( diff --git a/msm/sde/sde_encoder.c b/msm/sde/sde_encoder.c index f41c180ef3..fdf232d084 100644 --- a/msm/sde/sde_encoder.c +++ b/msm/sde/sde_encoder.c @@ -2037,8 +2037,8 @@ static void sde_encoder_virt_mode_set(struct drm_encoder *drm_enc, struct sde_encoder_virt *sde_enc; struct msm_drm_private *priv; struct sde_kms *sde_kms; - struct list_head *connector_list; - struct drm_connector *conn = NULL, *conn_iter; + struct drm_connector_list_iter conn_iter; + struct drm_connector *conn = NULL, *conn_search; struct sde_rm_hw_iter dsc_iter, pp_iter, qdss_iter; struct sde_rm_hw_request request_hw; enum sde_intf_mode intf_mode; @@ -2063,7 +2063,6 @@ static void sde_encoder_virt_mode_set(struct drm_encoder *drm_enc, priv = drm_enc->dev->dev_private; sde_kms = to_sde_kms(priv->kms); - connector_list = &sde_kms->dev->mode_config.connector_list; SDE_EVT32(DRMID(drm_enc)); @@ -2077,9 +2076,14 @@ static void sde_encoder_virt_mode_set(struct drm_encoder *drm_enc, } sde_enc->crtc = drm_enc->crtc; - list_for_each_entry(conn_iter, connector_list, head) - if (conn_iter->encoder == drm_enc) - conn = conn_iter; + drm_connector_list_iter_begin(sde_kms->dev, &conn_iter); + drm_for_each_connector_iter(conn_search, &conn_iter) { + if (conn_search->encoder == drm_enc) { + conn = conn_search; + break; + } + } + drm_connector_list_iter_end(&conn_iter); if (!conn) { SDE_ERROR_ENC(sde_enc, "failed to find attached connector\n"); diff --git a/msm/sde/sde_rm.c b/msm/sde/sde_rm.c index 18e7815bce..982577f4cd 100644 --- a/msm/sde/sde_rm.c +++ b/msm/sde/sde_rm.c @@ -1886,15 +1886,19 @@ static struct sde_rm_rsvp *_sde_rm_get_rsvp_nxt( static struct drm_connector *_sde_rm_get_connector( struct drm_encoder *enc) { - struct drm_connector *conn = NULL; - struct list_head *connector_list = - &enc->dev->mode_config.connector_list; + struct drm_connector *conn = NULL, *conn_search; + struct drm_connector_list_iter conn_iter; - list_for_each_entry(conn, connector_list, head) - if (conn->encoder == enc) - return conn; + drm_connector_list_iter_begin(enc->dev, &conn_iter); + drm_for_each_connector_iter(conn_search, &conn_iter) { + if (conn_search->encoder == enc) { + conn = conn_search; + break; + } + } + drm_connector_list_iter_end(&conn_iter); - return NULL; + return conn; } int sde_rm_update_topology(struct drm_connector_state *conn_state,