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>
Этот коммит содержится в:
@@ -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));
|
||||
|
Ссылка в новой задаче
Block a user