disp: msm: sde: use the correct get_status op for all INTFs
A new status register was added in DPU 5.x to INTFs to allow for confirmation when the timing engine is disabled. This functionality was controlled via an overloaded feature flag which is used to enable INTF tear-check ops (also added in DPU 5.x). External displays support INTF_STATUS but have no use for any tear-check functions. Separate these features so they can be enabled individually on the interfaces which support them. Change-Id: Ib8548619cb58bf19b7c02211ead7f33f52ffeae4 Signed-off-by: Steve Cohen <cohens@codeaurora.org>
Esse commit está contido em:
@@ -2238,6 +2238,10 @@ static int sde_intf_parse_dt(struct device_node *np,
|
|||||||
set_bit(SDE_INTF_TE, &intf->features);
|
set_bit(SDE_INTF_TE, &intf->features);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (SDE_HW_MAJOR(sde_cfg->hwversion) >=
|
||||||
|
SDE_HW_MAJOR(SDE_HW_VER_500))
|
||||||
|
set_bit(SDE_INTF_STATUS, &intf->features);
|
||||||
|
|
||||||
if (SDE_HW_MAJOR(sde_cfg->hwversion) >=
|
if (SDE_HW_MAJOR(sde_cfg->hwversion) >=
|
||||||
SDE_HW_MAJOR(SDE_HW_VER_700))
|
SDE_HW_MAJOR(SDE_HW_VER_700))
|
||||||
set_bit(SDE_INTF_TE_ALIGN_VSYNC, &intf->features);
|
set_bit(SDE_INTF_TE_ALIGN_VSYNC, &intf->features);
|
||||||
|
@@ -468,12 +468,14 @@ enum {
|
|||||||
* pixel data arrives to this INTF
|
* pixel data arrives to this INTF
|
||||||
* @SDE_INTF_TE INTF block has TE configuration support
|
* @SDE_INTF_TE INTF block has TE configuration support
|
||||||
* @SDE_INTF_TE_ALIGN_VSYNC INTF block has POMS Align vsync support
|
* @SDE_INTF_TE_ALIGN_VSYNC INTF block has POMS Align vsync support
|
||||||
|
* @SDE_INTF_STATUS INTF block has INTF_STATUS register
|
||||||
* @SDE_INTF_MAX
|
* @SDE_INTF_MAX
|
||||||
*/
|
*/
|
||||||
enum {
|
enum {
|
||||||
SDE_INTF_INPUT_CTRL = 0x1,
|
SDE_INTF_INPUT_CTRL = 0x1,
|
||||||
SDE_INTF_TE,
|
SDE_INTF_TE,
|
||||||
SDE_INTF_TE_ALIGN_VSYNC,
|
SDE_INTF_TE_ALIGN_VSYNC,
|
||||||
|
SDE_INTF_STATUS,
|
||||||
SDE_INTF_MAX
|
SDE_INTF_MAX
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -785,7 +785,6 @@ static void _setup_intf_ops(struct sde_hw_intf_ops *ops,
|
|||||||
{
|
{
|
||||||
ops->setup_timing_gen = sde_hw_intf_setup_timing_engine;
|
ops->setup_timing_gen = sde_hw_intf_setup_timing_engine;
|
||||||
ops->setup_prg_fetch = sde_hw_intf_setup_prg_fetch;
|
ops->setup_prg_fetch = sde_hw_intf_setup_prg_fetch;
|
||||||
ops->get_status = sde_hw_intf_get_status;
|
|
||||||
ops->enable_timing = sde_hw_intf_enable_timing_engine;
|
ops->enable_timing = sde_hw_intf_enable_timing_engine;
|
||||||
ops->setup_misr = sde_hw_intf_setup_misr;
|
ops->setup_misr = sde_hw_intf_setup_misr;
|
||||||
ops->collect_misr = sde_hw_intf_collect_misr;
|
ops->collect_misr = sde_hw_intf_collect_misr;
|
||||||
@@ -798,6 +797,11 @@ static void _setup_intf_ops(struct sde_hw_intf_ops *ops,
|
|||||||
ops->enable_compressed_input = sde_hw_intf_enable_compressed_input;
|
ops->enable_compressed_input = sde_hw_intf_enable_compressed_input;
|
||||||
ops->enable_wide_bus = sde_hw_intf_enable_wide_bus;
|
ops->enable_wide_bus = sde_hw_intf_enable_wide_bus;
|
||||||
|
|
||||||
|
if (cap & BIT(SDE_INTF_STATUS))
|
||||||
|
ops->get_status = sde_hw_intf_v1_get_status;
|
||||||
|
else
|
||||||
|
ops->get_status = sde_hw_intf_get_status;
|
||||||
|
|
||||||
if (cap & BIT(SDE_INTF_INPUT_CTRL))
|
if (cap & BIT(SDE_INTF_INPUT_CTRL))
|
||||||
ops->bind_pingpong_blk = sde_hw_intf_bind_pingpong_blk;
|
ops->bind_pingpong_blk = sde_hw_intf_bind_pingpong_blk;
|
||||||
|
|
||||||
@@ -811,7 +815,6 @@ static void _setup_intf_ops(struct sde_hw_intf_ops *ops,
|
|||||||
ops->get_autorefresh = sde_hw_intf_get_autorefresh_config;
|
ops->get_autorefresh = sde_hw_intf_get_autorefresh_config;
|
||||||
ops->poll_timeout_wr_ptr = sde_hw_intf_poll_timeout_wr_ptr;
|
ops->poll_timeout_wr_ptr = sde_hw_intf_poll_timeout_wr_ptr;
|
||||||
ops->vsync_sel = sde_hw_intf_vsync_sel;
|
ops->vsync_sel = sde_hw_intf_vsync_sel;
|
||||||
ops->get_status = sde_hw_intf_v1_get_status;
|
|
||||||
ops->check_and_reset_tearcheck =
|
ops->check_and_reset_tearcheck =
|
||||||
sde_hw_intf_v1_check_and_reset_tearcheck;
|
sde_hw_intf_v1_check_and_reset_tearcheck;
|
||||||
}
|
}
|
||||||
|
Referência em uma nova issue
Block a user