diff --git a/msm/dsi/dsi_display.c b/msm/dsi/dsi_display.c index e9162e2354..91675c835e 100644 --- a/msm/dsi/dsi_display.c +++ b/msm/dsi/dsi_display.c @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-only /* - * Copyright (c) 2016-2019, The Linux Foundation. All rights reserved. + * Copyright (c) 2016-2020, The Linux Foundation. All rights reserved. */ #include @@ -5463,10 +5463,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) { @@ -5476,20 +5477,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 f10540db02..136717e63c 100644 --- a/msm/sde/sde_encoder.c +++ b/msm/sde/sde_encoder.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014-2019, The Linux Foundation. All rights reserved. + * Copyright (c) 2014-2020, The Linux Foundation. All rights reserved. * Copyright (C) 2013 Red Hat * Author: Rob Clark * @@ -2768,8 +2768,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; @@ -2794,7 +2794,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)); @@ -2808,9 +2807,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 c08f723b9b..29653a6509 100644 --- a/msm/sde/sde_rm.c +++ b/msm/sde/sde_rm.c @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-only /* - * Copyright (c) 2016-2019, The Linux Foundation. All rights reserved. + * Copyright (c) 2016-2020, The Linux Foundation. All rights reserved. */ #define pr_fmt(fmt) "[drm:%s] " fmt, __func__ @@ -1862,15 +1862,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,