disp: msm: sde: prepare encoders during enable commit

Prepare commit hook is getting skipped for encoders during
power-on. This is required for clearing the pending flush
mask but the encoder->crtc link is not established at
this point for an enable commit.

Instead of looking at the old CRTC state and matching an
attached encoder, use the encoder_mask in the new CRTC state
to determine which encoders to prepare.

Change-Id: I0754020abd328504899d9591180dedc1723aae49
Signed-off-by: Steve Cohen <cohens@codeaurora.org>
Этот коммит содержится в:
Steve Cohen
2020-11-09 14:20:43 -05:00
родитель 45644f811d
Коммит bd79e929f8

Просмотреть файл

@@ -1091,7 +1091,7 @@ static void sde_kms_prepare_commit(struct msm_kms *kms,
struct drm_device *dev;
struct drm_encoder *encoder;
struct drm_crtc *crtc;
struct drm_crtc_state *crtc_state;
struct drm_crtc_state *cstate;
struct sde_vm_ops *vm_ops;
int i, rc;
@@ -1117,12 +1117,8 @@ static void sde_kms_prepare_commit(struct msm_kms *kms,
sde_kms->first_kickoff = false;
}
for_each_old_crtc_in_state(state, crtc, crtc_state, i) {
list_for_each_entry(encoder, &dev->mode_config.encoder_list,
head) {
if (encoder->crtc != crtc)
continue;
for_each_new_crtc_in_state(state, crtc, cstate, i) {
drm_for_each_encoder_mask(encoder, dev, cstate->encoder_mask) {
if (sde_encoder_prepare_commit(encoder) == -ETIMEDOUT) {
SDE_ERROR("crtc:%d, initiating hw reset\n",
DRMID(crtc));