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:

کامیت شده توسط
orion brody

والد
4b150347fc
کامیت
16cc165833
@@ -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");
|
||||
}
|
||||
|
مرجع در شماره جدید
Block a user