disp: msm: sde: add support for dynamic encoder IRQs

This change adds support for dynamically enabling and disabling
additional physical encoder IRQs.

Change-Id: I500fa69d1b8b8df39fd608391c906257efdea63b
Signed-off-by: Nilaan Gunabalachandran <quic_ngunabal@quicinc.com>
This commit is contained in:
Nilaan Gunabalachandran
2022-11-21 12:29:29 -05:00
parent b86343b75b
commit cd93fed7d1
8 changed files with 239 additions and 54 deletions

View File

@@ -1,6 +1,6 @@
/* SPDX-License-Identifier: GPL-2.0-only */
/*
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
* Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
* Copyright (c) 2015-2021, The Linux Foundation. All rights reserved.
*/
@@ -65,6 +65,14 @@ enum sde_enc_enable_state {
SDE_ENC_ERR_NEEDS_HW_RESET
};
enum sde_enc_irqs {
SDE_ENC_CMD_TE_ASSERT,
SDE_ENC_CMD_TE_DEASSERT,
SDE_ENC_CMD_TEAR_DETECT,
SDE_ENC_IRQ_MAX
};
struct sde_encoder_phys;
/**
@@ -182,6 +190,7 @@ struct sde_encoder_phys_ops {
u32 *misr_value);
void (*hw_reset)(struct sde_encoder_phys *phys_enc);
void (*irq_control)(struct sde_encoder_phys *phys, bool enable);
void (*dynamic_irq_control)(struct sde_encoder_phys *phys, bool enable);
void (*update_split_role)(struct sde_encoder_phys *phys_enc,
enum sde_enc_split_role role);
void (*control_te)(struct sde_encoder_phys *phys_enc, bool enable);
@@ -218,6 +227,9 @@ struct sde_encoder_phys_ops {
* autorefresh has triggered a double buffer flip
* @INTR_IDX_WRPTR: Writepointer start interrupt for cmd mode panel
* @INTR_IDX_WB_LINEPTR: Programmable lineptr interrupt for WB
* @INTF_IDX_TEAR_DETECT: Tear detect interrupt
* @INTR_IDX_TE_ASSERT: TE Assert interrupt
* @INTR_IDX_TE_DEASSERT: TE Deassert interrupt
*/
enum sde_intr_idx {
INTR_IDX_VSYNC,
@@ -237,6 +249,9 @@ enum sde_intr_idx {
INTR_IDX_PP_CWB2_OVFL,
INTR_IDX_WRPTR,
INTR_IDX_WB_LINEPTR,
INTF_IDX_TEAR_DETECT,
INTR_IDX_TE_ASSERT,
INTR_IDX_TE_DEASSERT,
INTR_IDX_MAX,
};