Merge "disp: msm: use iterator APIs to walk the connector list"
This commit is contained in:

committed by
Gerrit - the friendly Code Review server

commit
da7839e18e
@@ -5466,10 +5466,11 @@ static struct dsi_display_ext_bridge *dsi_display_ext_get_bridge(
|
|||||||
{
|
{
|
||||||
struct msm_drm_private *priv;
|
struct msm_drm_private *priv;
|
||||||
struct sde_kms *sde_kms;
|
struct sde_kms *sde_kms;
|
||||||
struct list_head *connector_list;
|
struct drm_connector *conn;
|
||||||
struct drm_connector *conn_iter;
|
struct drm_connector_list_iter conn_iter;
|
||||||
struct sde_connector *sde_conn;
|
struct sde_connector *sde_conn;
|
||||||
struct dsi_display *display;
|
struct dsi_display *display;
|
||||||
|
struct dsi_display_ext_bridge *dsi_bridge = NULL;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if (!bridge || !bridge->encoder) {
|
if (!bridge || !bridge->encoder) {
|
||||||
@@ -5479,20 +5480,23 @@ static struct dsi_display_ext_bridge *dsi_display_ext_get_bridge(
|
|||||||
|
|
||||||
priv = bridge->dev->dev_private;
|
priv = bridge->dev->dev_private;
|
||||||
sde_kms = to_sde_kms(priv->kms);
|
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) {
|
drm_connector_list_iter_begin(sde_kms->dev, &conn_iter);
|
||||||
sde_conn = to_sde_connector(conn_iter);
|
drm_for_each_connector_iter(conn, &conn_iter) {
|
||||||
|
sde_conn = to_sde_connector(conn);
|
||||||
if (sde_conn->encoder == bridge->encoder) {
|
if (sde_conn->encoder == bridge->encoder) {
|
||||||
display = sde_conn->display;
|
display = sde_conn->display;
|
||||||
display_for_each_ctrl(i, display) {
|
display_for_each_ctrl(i, display) {
|
||||||
if (display->ext_bridge[i].bridge == bridge)
|
if (display->ext_bridge[i].bridge == bridge) {
|
||||||
return &display->ext_bridge[i];
|
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(
|
static void dsi_display_drm_ext_adjust_timing(
|
||||||
|
@@ -2037,8 +2037,8 @@ static void sde_encoder_virt_mode_set(struct drm_encoder *drm_enc,
|
|||||||
struct sde_encoder_virt *sde_enc;
|
struct sde_encoder_virt *sde_enc;
|
||||||
struct msm_drm_private *priv;
|
struct msm_drm_private *priv;
|
||||||
struct sde_kms *sde_kms;
|
struct sde_kms *sde_kms;
|
||||||
struct list_head *connector_list;
|
struct drm_connector_list_iter conn_iter;
|
||||||
struct drm_connector *conn = NULL, *conn_iter;
|
struct drm_connector *conn = NULL, *conn_search;
|
||||||
struct sde_rm_hw_iter dsc_iter, pp_iter, qdss_iter;
|
struct sde_rm_hw_iter dsc_iter, pp_iter, qdss_iter;
|
||||||
struct sde_rm_hw_request request_hw;
|
struct sde_rm_hw_request request_hw;
|
||||||
enum sde_intf_mode intf_mode;
|
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;
|
priv = drm_enc->dev->dev_private;
|
||||||
sde_kms = to_sde_kms(priv->kms);
|
sde_kms = to_sde_kms(priv->kms);
|
||||||
connector_list = &sde_kms->dev->mode_config.connector_list;
|
|
||||||
|
|
||||||
SDE_EVT32(DRMID(drm_enc));
|
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;
|
sde_enc->crtc = drm_enc->crtc;
|
||||||
|
|
||||||
list_for_each_entry(conn_iter, connector_list, head)
|
drm_connector_list_iter_begin(sde_kms->dev, &conn_iter);
|
||||||
if (conn_iter->encoder == drm_enc)
|
drm_for_each_connector_iter(conn_search, &conn_iter) {
|
||||||
conn = conn_iter;
|
if (conn_search->encoder == drm_enc) {
|
||||||
|
conn = conn_search;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
drm_connector_list_iter_end(&conn_iter);
|
||||||
|
|
||||||
if (!conn) {
|
if (!conn) {
|
||||||
SDE_ERROR_ENC(sde_enc, "failed to find attached connector\n");
|
SDE_ERROR_ENC(sde_enc, "failed to find attached connector\n");
|
||||||
|
@@ -1886,15 +1886,19 @@ static struct sde_rm_rsvp *_sde_rm_get_rsvp_nxt(
|
|||||||
static struct drm_connector *_sde_rm_get_connector(
|
static struct drm_connector *_sde_rm_get_connector(
|
||||||
struct drm_encoder *enc)
|
struct drm_encoder *enc)
|
||||||
{
|
{
|
||||||
struct drm_connector *conn = NULL;
|
struct drm_connector *conn = NULL, *conn_search;
|
||||||
struct list_head *connector_list =
|
struct drm_connector_list_iter conn_iter;
|
||||||
&enc->dev->mode_config.connector_list;
|
|
||||||
|
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);
|
||||||
|
|
||||||
list_for_each_entry(conn, connector_list, head)
|
|
||||||
if (conn->encoder == enc)
|
|
||||||
return conn;
|
return conn;
|
||||||
|
|
||||||
return NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int sde_rm_update_topology(struct drm_connector_state *conn_state,
|
int sde_rm_update_topology(struct drm_connector_state *conn_state,
|
||||||
|
Reference in New Issue
Block a user