Эх сурвалжийг харах

disp: msm: sde: update QoS values on FPS switch

This change updates plane's dirty flag with QoS
value to ensure QoS gets reprogrammed with new FPS
settings. This is required as QoS values will change
with FPS.

Change-Id: I377b99da2a640d375bd48477f149197b332e7f7b
Signed-off-by: Samantha Tran <[email protected]>
Samantha Tran 5 жил өмнө
parent
commit
5217dfd7ea

+ 17 - 0
msm/sde/sde_crtc.c

@@ -5330,6 +5330,23 @@ exit:
 	return ret;
 	return ret;
 }
 }
 
 
+void sde_crtc_set_qos_dirty(struct drm_crtc *crtc)
+{
+	struct drm_plane *plane;
+	struct drm_plane_state *state;
+	struct sde_plane_state *pstate;
+
+	drm_atomic_crtc_for_each_plane(plane, crtc) {
+		state = plane->state;
+		if (!state)
+			continue;
+
+		pstate = to_sde_plane_state(state);
+
+		pstate->dirty |= SDE_PLANE_DIRTY_QOS;
+	}
+}
+
 /**
 /**
  * sde_crtc_atomic_get_property - retrieve a crtc drm property
  * sde_crtc_atomic_get_property - retrieve a crtc drm property
  * @crtc: Pointer to drm crtc structure
  * @crtc: Pointer to drm crtc structure

+ 7 - 0
msm/sde/sde_crtc.h

@@ -819,6 +819,13 @@ void sde_crtc_timeline_status(struct drm_crtc *crtc);
 void sde_crtc_update_cont_splash_settings(
 void sde_crtc_update_cont_splash_settings(
 		struct drm_crtc *crtc);
 		struct drm_crtc *crtc);
 
 
+/**
+ * sde_crtc_set_qos_dirty - update plane dirty flag to include
+ *	QoS reprogramming which is required during fps switch
+ * @crtc: Pointer to drm crtc structure
+ */
+void sde_crtc_set_qos_dirty(struct drm_crtc *crtc);
+
 /**
 /**
  * sde_crtc_misr_setup - to configure and enable/disable MISR
  * sde_crtc_misr_setup - to configure and enable/disable MISR
  * @crtc: Pointer to drm crtc structure
  * @crtc: Pointer to drm crtc structure

+ 2 - 0
msm/sde/sde_encoder.c

@@ -2122,6 +2122,8 @@ static void sde_encoder_virt_mode_set(struct drm_encoder *drm_enc,
 	}
 	}
 	drm_connector_list_iter_end(&conn_iter);
 	drm_connector_list_iter_end(&conn_iter);
 
 
+	sde_crtc_set_qos_dirty(sde_enc->crtc);
+
 	if (!conn) {
 	if (!conn) {
 		SDE_ERROR_ENC(sde_enc, "failed to find attached connector\n");
 		SDE_ERROR_ENC(sde_enc, "failed to find attached connector\n");
 		return;
 		return;