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 <chenlei@codeaurora.org>
This commit is contained in:
Lei Chen
2020-08-05 16:19:46 +08:00
committed by Gerrit - the friendly Code Review server
parent 9804031438
commit f11da41a6e
4 changed files with 16 additions and 3 deletions

View File

@@ -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(

View File

@@ -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;

View File

@@ -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);

View File

@@ -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;