Răsfoiți Sursa

disp: msm: sde: add a property to control display input touch event

Display input touch event is replaced with IOCTL in performance HAL
to early wake up DSI clock.
Add a property to enable/disable display input touch event for backward
compatibility.

Change-Id: Ib6b9123d726e79a2927b05d1ef77c343f01d0c5e
Signed-off-by: Lei Chen <[email protected]>
Lei Chen 4 ani în urmă
părinte
comite
f11da41a6e
4 a modificat fișierele cu 16 adăugiri și 3 ștergeri
  1. 8 3
      msm/sde/sde_encoder.c
  2. 1 0
      msm/sde/sde_encoder.h
  3. 5 0
      msm/sde/sde_hw_catalog.c
  4. 2 0
      msm/sde/sde_hw_catalog.h

+ 8 - 3
msm/sde/sde_encoder.c

@@ -2403,7 +2403,8 @@ static void _sde_encoder_input_handler_register(
 	struct sde_encoder_virt *sde_enc = to_sde_encoder_virt(drm_enc);
 	int rc;
 
-	if (!sde_encoder_check_curr_mode(drm_enc, MSM_DISPLAY_CMD_MODE))
+	if (!sde_encoder_check_curr_mode(drm_enc, MSM_DISPLAY_CMD_MODE) ||
+		!sde_enc->input_event_enabled)
 		return;
 
 	if (sde_enc->input_handler && !sde_enc->input_handler->private) {
@@ -2424,7 +2425,8 @@ static void _sde_encoder_input_handler_unregister(
 {
 	struct sde_encoder_virt *sde_enc = to_sde_encoder_virt(drm_enc);
 
-	if (!sde_encoder_check_curr_mode(drm_enc, MSM_DISPLAY_CMD_MODE))
+	if (!sde_encoder_check_curr_mode(drm_enc, MSM_DISPLAY_CMD_MODE) ||
+		!sde_enc->input_event_enabled)
 		return;
 
 	if (sde_enc->input_handler && sde_enc->input_handler->private) {
@@ -4677,6 +4679,8 @@ static int sde_encoder_setup_display(struct sde_encoder_virt *sde_enc,
 	    (disp_info->capabilities & MSM_DISPLAY_CAP_VID_MODE))
 		sde_enc->idle_pc_enabled = sde_kms->catalog->has_idle_pc;
 
+	sde_enc->input_event_enabled = sde_kms->catalog->wakeup_with_touch;
+
 	mutex_lock(&sde_enc->enc_lock);
 	for (i = 0; i < disp_info->num_of_h_tiles && !ret; i++) {
 		/*
@@ -4843,7 +4847,8 @@ struct drm_encoder *sde_encoder_init_with_ops(
 		sde_enc->rsc_client = NULL;
 	}
 
-	if (disp_info->capabilities & MSM_DISPLAY_CAP_CMD_MODE) {
+	if (disp_info->capabilities & MSM_DISPLAY_CAP_CMD_MODE &&
+		sde_enc->input_event_enabled) {
 		ret = _sde_encoder_input_handler(sde_enc);
 		if (ret)
 			SDE_ERROR(

+ 1 - 0
msm/sde/sde_encoder.h

@@ -232,6 +232,7 @@ struct sde_encoder_virt {
 	u32 misr_frame_count;
 
 	bool idle_pc_enabled;
+	bool input_event_enabled;
 	struct mutex rc_lock;
 	enum sde_enc_rc_states rc_state;
 	struct kthread_delayed_work delayed_off_work;

+ 5 - 0
msm/sde/sde_hw_catalog.c

@@ -194,6 +194,7 @@ enum sde_prop {
 	DIM_LAYER,
 	SMART_DMA_REV,
 	IDLE_PC,
+	WAKEUP_WITH_TOUCH,
 	DEST_SCALER,
 	SMART_PANEL_ALIGN_MODE,
 	MACROTILE_MODE,
@@ -560,6 +561,8 @@ static struct sde_prop_type sde_prop[] = {
 	{DIM_LAYER, "qcom,sde-has-dim-layer", false, PROP_TYPE_BOOL},
 	{SMART_DMA_REV, "qcom,sde-smart-dma-rev", false, PROP_TYPE_STRING},
 	{IDLE_PC, "qcom,sde-has-idle-pc", false, PROP_TYPE_BOOL},
+	{WAKEUP_WITH_TOUCH, "qcom,sde-wakeup-with-touch", false,
+			PROP_TYPE_BOOL},
 	{DEST_SCALER, "qcom,sde-has-dest-scaler", false, PROP_TYPE_BOOL},
 	{SMART_PANEL_ALIGN_MODE, "qcom,sde-smart-panel-align-mode",
 			false, PROP_TYPE_U32},
@@ -3741,6 +3744,8 @@ static void _sde_top_parse_dt_helper(struct sde_mdss_cfg *cfg,
 	cfg->has_src_split = PROP_VALUE_ACCESS(props->values, SRC_SPLIT, 0);
 	cfg->has_dim_layer = PROP_VALUE_ACCESS(props->values, DIM_LAYER, 0);
 	cfg->has_idle_pc = PROP_VALUE_ACCESS(props->values, IDLE_PC, 0);
+	cfg->wakeup_with_touch = PROP_VALUE_ACCESS(props->values,
+			WAKEUP_WITH_TOUCH, 0);
 	cfg->pipe_order_type = PROP_VALUE_ACCESS(props->values,
 			PIPE_ORDER_VERSION, 0);
 	cfg->has_base_layer = PROP_VALUE_ACCESS(props->values, BASE_LAYER, 0);

+ 2 - 0
msm/sde/sde_hw_catalog.h

@@ -1396,6 +1396,7 @@ struct sde_perf_cfg {
  * @ubwc_version       UBWC feature version (0x0 for not supported)
  * @ubwc_bw_calc_version indicate how UBWC BW has to be calculated
  * @has_idle_pc        indicate if idle power collapse feature is supported
+ * @wakeup_with_touch  indicate early wake up display with input touch event
  * @has_hdr            HDR feature support
  * @has_hdr_plus       HDR10+ feature support
  * @dma_formats        Supported formats for dma pipe
@@ -1474,6 +1475,7 @@ struct sde_mdss_cfg {
 	u32 ubwc_version;
 	u32 ubwc_bw_calc_version;
 	bool has_idle_pc;
+	bool wakeup_with_touch;
 	u32 vbif_qos_nlvl;
 	u32 ts_prefill_rev;
 	u32 true_inline_rot_rev;