Răsfoiți Sursa

Merge "disp: msm: sde: reset sw state on vm transition" into display-kernel.lnx.5.4

Linux Build Service Account 4 ani în urmă
părinte
comite
3f6007cead
3 a modificat fișierele cu 12 adăugiri și 2 ștergeri
  1. 2 2
      msm/sde/sde_crtc.c
  2. 7 0
      msm/sde/sde_crtc.h
  3. 3 0
      msm/sde/sde_kms.c

+ 2 - 2
msm/sde/sde_crtc.c

@@ -3974,7 +3974,7 @@ static void sde_crtc_clear_cached_mixer_cfg(struct drm_crtc *crtc)
 	SDE_EVT32(DRMID(crtc));
 }
 
-static void sde_crtc_reset_sw_state_for_ipc(struct drm_crtc *crtc)
+void sde_crtc_reset_sw_state(struct drm_crtc *crtc)
 {
 	struct sde_crtc_state *cstate = to_sde_crtc_state(crtc->state);
 	struct drm_plane *plane;
@@ -4077,7 +4077,7 @@ static void sde_crtc_handle_power_event(u32 event_type, void *arg)
 		sde_cp_crtc_pre_ipc(crtc);
 		break;
 	case SDE_POWER_EVENT_POST_DISABLE:
-		sde_crtc_reset_sw_state_for_ipc(crtc);
+		sde_crtc_reset_sw_state(crtc);
 		sde_cp_crtc_suspend(crtc);
 		event.type = DRM_EVENT_SDE_POWER;
 		event.length = sizeof(power_on);

+ 7 - 0
msm/sde/sde_crtc.h

@@ -917,4 +917,11 @@ void sde_crtc_static_cache_read_kickoff(struct drm_crtc *crtc);
 int sde_crtc_get_num_datapath(struct drm_crtc *crtc,
 		struct drm_connector *connector);
 
+/**
+ * sde_crtc_reset_sw_state - reset dirty proerties on crtc and
+ *				planes attached to the crtc
+ * @crtc: Pointer to DRM crtc object
+ */
+void sde_crtc_reset_sw_state(struct drm_crtc *crtc);
+
 #endif /* _SDE_CRTC_H_ */

+ 3 - 0
msm/sde/sde_kms.c

@@ -1367,6 +1367,9 @@ int sde_kms_vm_pre_release(struct sde_kms *sde_kms,
 	/* disable vblank events */
 	drm_crtc_vblank_off(crtc);
 
+	/* reset sw state */
+	sde_crtc_reset_sw_state(crtc);
+
 	return rc;
 }