Prechádzať zdrojové kódy

Merge "disp: msm: sde: send event on trusted vm transition"

qctecmdr 3 rokov pred
rodič
commit
99f4b07f1d

+ 1 - 0
include/uapi/display/drm/sde_drm.h

@@ -814,6 +814,7 @@ struct drm_msm_noise_layer_cfg {
 #define DRM_EVENT_MMRM_CB 0X8000000B
 #define DRM_EVENT_FRAME_DATA 0x8000000C
 #define DRM_EVENT_DIMMING_BL 0X8000000D
+#define DRM_EVENT_VM_RELEASE 0X8000000E
 
 #ifndef DRM_MODE_FLAG_VID_MODE_PANEL
 #define DRM_MODE_FLAG_VID_MODE_PANEL        0x01

+ 14 - 0
msm/sde/sde_crtc.c

@@ -70,6 +70,9 @@ static int sde_crtc_pm_event_handler(struct drm_crtc *crtc, bool en,
 static int _sde_crtc_set_noise_layer(struct sde_crtc *sde_crtc,
 				struct sde_crtc_state *cstate,
 				void __user *usr_ptr);
+static int sde_crtc_vm_release_handler(struct drm_crtc *crtc_drm,
+	bool en, struct sde_irq_callback *irq);
+
 
 static struct sde_crtc_custom_events custom_events[] = {
 	{DRM_EVENT_AD_BACKLIGHT, sde_cp_ad_interrupt},
@@ -81,6 +84,7 @@ static struct sde_crtc_custom_events custom_events[] = {
 	{DRM_EVENT_LTM_WB_PB, sde_cp_ltm_wb_pb_interrupt},
 	{DRM_EVENT_LTM_OFF, sde_cp_ltm_off_event_handler},
 	{DRM_EVENT_MMRM_CB, sde_crtc_mmrm_interrupt_handler},
+	{DRM_EVENT_VM_RELEASE, sde_crtc_vm_release_handler},
 };
 
 /* default input fence timeout, in ms */
@@ -7506,6 +7510,11 @@ static int sde_crtc_mmrm_interrupt_handler(struct drm_crtc *crtc_drm,
 	return 0;
 }
 
+static int sde_crtc_vm_release_handler(struct drm_crtc *crtc_drm,
+	bool en, struct sde_irq_callback *irq)
+{
+	return 0;
+}
 /**
  * sde_crtc_update_cont_splash_settings - update mixer settings
  *	and initial clk during device bootup for cont_splash use case
@@ -7662,3 +7671,8 @@ void sde_crtc_disable_cp_features(struct drm_crtc *crtc)
 {
 	sde_cp_disable_features(crtc);
 }
+
+void _sde_crtc_vm_release_notify(struct drm_crtc *crtc)
+{
+	sde_crtc_event_notify(crtc, DRM_EVENT_VM_RELEASE, sizeof(uint32_t), 1);
+}

+ 5 - 0
msm/sde/sde_crtc.h

@@ -1063,4 +1063,9 @@ void sde_crtc_cancel_delayed_work(struct drm_crtc *crtc);
  */
 struct drm_encoder *sde_crtc_get_src_encoder_of_clone(struct drm_crtc *crtc);
 
+/*
+ * _sde_crtc_vm_release_notify- send event to usermode on vm release
+ */
+void _sde_crtc_vm_release_notify(struct drm_crtc *crtc);
+
 #endif /* _SDE_CRTC_H_ */

+ 2 - 0
msm/sde/sde_kms.c

@@ -1466,6 +1466,8 @@ int sde_kms_vm_primary_post_commit(struct sde_kms *sde_kms,
 	}
 	sde_vm_unlock(sde_kms);
 
+	_sde_crtc_vm_release_notify(crtc);
+
 exit:
 	return rc;
 }