disp: sde: override fal10 veto for milos target

This patch overrides the fal10 veto for the milos target.

Change-Id: I82310b63ff89aa44c03b97e4e7b6e87ac5c4569a
Signed-off-by: Akash Gajjar <quic_agajjar@quicinc.com>
This commit is contained in:
Akash Gajjar 2024-07-23 22:48:10 +05:30
parent 841bca1984
commit 8ce353ea46
5 changed files with 36 additions and 6 deletions

View File

@ -1,6 +1,6 @@
// SPDX-License-Identifier: GPL-2.0-only
/*
* Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
* Copyright (c) 2021-2024 Qualcomm Innovation Center, Inc. All rights reserved.
* Copyright (c) 2016-2021, The Linux Foundation. All rights reserved.
*/
@ -531,8 +531,33 @@ static void _sde_core_uidle_setup_wd(struct sde_kms *kms,
uidle->ops.setup_wd_timer(uidle, &wd);
}
static bool _sde_core_uidle_fal10_override(struct sde_kms *kms,
struct drm_crtc *crtc)
{
bool fal10_override, is_vid_mode = false;
struct drm_encoder *drm_enc;
fal10_override = kms->catalog->uidle_cfg.fal10_override;
if (!fal10_override)
return false;
drm_for_each_encoder(drm_enc, kms->dev) {
if (drm_enc->crtc != crtc)
continue;
if (sde_encoder_check_curr_mode(drm_enc, MSM_DISPLAY_VIDEO_MODE)) {
is_vid_mode = true;
break;
}
}
SDE_EVT32(fal10_override, is_vid_mode);
return fal10_override && is_vid_mode;
}
static void _sde_core_uidle_setup_cfg(struct sde_kms *kms,
enum sde_uidle_state state)
struct drm_crtc *crtc, enum sde_uidle_state state)
{
struct sde_uidle_ctl_cfg cfg;
struct sde_hw_uidle *uidle;
@ -545,6 +570,7 @@ static void _sde_core_uidle_setup_cfg(struct sde_kms *kms,
kms->catalog->uidle_cfg.fal10_exit_cnt;
cfg.fal10_exit_danger =
kms->catalog->uidle_cfg.fal10_exit_danger;
cfg.fal10_override = _sde_core_uidle_fal10_override(kms, crtc);
SDE_DEBUG("fal10_danger:%d fal10_exit_cnt:%d fal10_exit_danger:%d\n",
cfg.fal10_danger, cfg.fal10_exit_cnt, cfg.fal10_exit_danger);
@ -584,7 +610,7 @@ static int _sde_core_perf_enable_uidle(struct sde_kms *kms,
SDE_EVT32(uidle_state);
_sde_core_uidle_setup_wd(kms, enable);
_sde_core_uidle_setup_cfg(kms, uidle_state);
_sde_core_uidle_setup_cfg(kms, crtc, uidle_state);
sde_core_perf_uidle_setup_ctl(crtc, true);
kms->perf.uidle_enabled = enable;

View File

@ -5579,6 +5579,7 @@ static int _sde_hardware_pre_caps(struct sde_mdss_cfg *sde_cfg, uint32_t hw_rev)
sde_cfg->ctl_rev = SDE_CTL_CFG_VERSION_1_0_0;
sde_cfg->true_inline_rot_rev = SDE_INLINE_ROT_VERSION_2_0_1;
sde_cfg->uidle_cfg.uidle_rev = SDE_UIDLE_VERSION_1_0_4;
sde_cfg->uidle_cfg.fal10_override = true;
sde_cfg->sid_rev = SDE_SID_VERSION_2_0_0;
sde_cfg->mdss_hw_block_size = 0x158;
sde_cfg->demura_supported[SSPP_DMA1][0] = BIT(DEMURA_0);

View File

@ -1340,6 +1340,7 @@ struct sde_mdp_cfg {
* @debugfs_ctrl: uidle is enabled/disabled through debugfs
* @perf_cntr_en: performance counters are enabled/disabled
* @dirty: dirty flag for uidle update
* @fal10_override: flag to override fal10 veto
*/
struct sde_uidle_cfg {
SDE_HW_BLK_INFO;
@ -1360,6 +1361,7 @@ struct sde_uidle_cfg {
bool debugfs_ctrl;
bool perf_cntr_en;
bool dirty;
bool fal10_override;
};
/* struct sde_mdp_cfg : MDP TOP-BLK instance info

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-2022, 2024 Qualcomm Innovation Center, Inc. All rights reserved.
* Copyright (c) 2018-2021, The Linux Foundation. All rights reserved.
*
*/
@ -185,7 +185,7 @@ void sde_hw_uidle_setup_ctl(struct sde_hw_uidle *uidle,
FAL10_EXIT_CNT_MSK);
SDE_REG_WRITE(c, UIDLE_CTL, reg_val);
if (!enable)
if (!enable || cfg->fal10_override)
fal10_veto_regval |= (BIT(31) | BIT(0));
SDE_REG_WRITE(c, UIDLE_FAL10_VETO_OVERRIDE, fal10_veto_regval);

View File

@ -1,6 +1,6 @@
/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
* Copyright (c) 2021-2022, 2024 Qualcomm Innovation Center, Inc. All rights reserved.
* Copyright (c) 2018-2021, The Linux Foundation. All rights reserved.
*
*/
@ -37,6 +37,7 @@ struct sde_uidle_ctl_cfg {
u32 fal10_exit_cnt;
u32 fal10_exit_danger;
u32 fal10_danger;
bool fal10_override;
enum sde_uidle_state uidle_state;
};