disp: msm: obtain bridge from bridge chain

Commit 05193dc38197 ("drm/bridge: Make the bridge chain
a double-linked list") creates a bridge chain linked
list. This change updates the relevant changes to msm
driver to use the list to find the bridge associated to
the encoder.

Change-Id: I59eb2910be96f4fff7bdbeb040d6ad204c41d747
Signed-off-by: Samantha Tran <samtran@codeaurora.org>
Signed-off-by: Nilaan Gunabalachandran <ngunabal@codeaurora.org>
This commit is contained in:
Samantha Tran
2020-07-30 16:52:19 -07:00
کامیت شده توسط orion brody
والد 4b150347fc
کامیت 16cc165833
6فایلهای تغییر یافته به همراه40 افزوده شده و 26 حذف شده

مشاهده پرونده

@@ -156,6 +156,7 @@ msm_disable_outputs(struct drm_device *dev, struct drm_atomic_state *old_state)
old_conn_state, i) {
const struct drm_encoder_helper_funcs *funcs;
struct drm_encoder *encoder;
struct drm_bridge *bridge;
/*
* Shut down everything that's in the changeset and currently
@@ -191,7 +192,8 @@ msm_disable_outputs(struct drm_device *dev, struct drm_atomic_state *old_state)
* Each encoder has at most one connector (since we always steal
* it away), so we won't call disable hooks twice.
*/
drm_bridge_disable(encoder->bridge);
bridge = drm_bridge_chain_get_first_bridge(encoder);
drm_bridge_chain_disable(bridge);
/* Right function depends upon target state. */
if (connector->state->crtc && funcs->prepare)
@@ -201,7 +203,7 @@ msm_disable_outputs(struct drm_device *dev, struct drm_atomic_state *old_state)
else
funcs->dpms(encoder, DRM_MODE_DPMS_OFF);
drm_bridge_post_disable(encoder->bridge);
drm_bridge_chain_post_disable(bridge);
}
for_each_old_crtc_in_state(old_state, crtc, old_crtc_state, i) {
@@ -264,6 +266,7 @@ msm_crtc_set_mode(struct drm_device *dev, struct drm_atomic_state *old_state)
struct drm_crtc_state *new_crtc_state;
struct drm_encoder *encoder;
struct drm_display_mode *mode, *adjusted_mode;
struct drm_bridge *bridge;
if (!connector->state->best_encoder)
continue;
@@ -294,7 +297,8 @@ msm_crtc_set_mode(struct drm_device *dev, struct drm_atomic_state *old_state)
if (funcs->mode_set)
funcs->mode_set(encoder, mode, adjusted_mode);
drm_bridge_mode_set(encoder->bridge, mode, adjusted_mode);
bridge = drm_bridge_chain_get_first_bridge(encoder);
drm_bridge_chain_mode_set(bridge, mode, adjusted_mode);
SDE_ATRACE_END("msm_set_mode");
}
}
@@ -388,6 +392,7 @@ static void msm_atomic_helper_commit_modeset_enables(struct drm_device *dev,
const struct drm_encoder_helper_funcs *funcs;
struct drm_encoder *encoder;
struct drm_connector_state *old_conn_state;
struct drm_bridge *bridge;
if (!new_conn_state->best_encoder)
continue;
@@ -412,7 +417,8 @@ static void msm_atomic_helper_commit_modeset_enables(struct drm_device *dev,
* Each encoder has at most one connector (since we always steal
* it away), so we won't call enable hooks twice.
*/
drm_bridge_pre_enable(encoder->bridge);
bridge = drm_bridge_chain_get_first_bridge(encoder);
drm_bridge_chain_pre_enable(bridge);
++bridge_enable_count;
if (funcs->enable)
@@ -436,6 +442,7 @@ static void msm_atomic_helper_commit_modeset_enables(struct drm_device *dev,
new_conn_state, i) {
struct drm_encoder *encoder;
struct drm_connector_state *old_conn_state;
struct drm_bridge *bridge;
if (!new_conn_state->best_encoder)
continue;
@@ -455,7 +462,8 @@ static void msm_atomic_helper_commit_modeset_enables(struct drm_device *dev,
DRM_DEBUG_ATOMIC("bridge enable enabling [ENCODER:%d:%s]\n",
encoder->base.id, encoder->name);
drm_bridge_enable(encoder->bridge);
bridge = drm_bridge_chain_get_first_bridge(encoder);
drm_bridge_chain_enable(bridge);
}
SDE_ATRACE_END("msm_enable");
}