disp: msm: sde: reset dsc 4hs merge enable

If DSC 4hs merge is enabled and disabled on n+1 commit, possible
due to resolution switch, driver does not currently clear the
previous programming.

This change cleares dsc 4hs merge enable if it is not enabled.

Change-Id: I4024073362257b7efabcff22603bcb28a0bc4c5a
Signed-off-by: Nilaan Gunabalachandran <quic_ngunabal@quicinc.com>
Signed-off-by: Nisarg Bhavsar <quic_bhavsar@quicinc.com>
This commit is contained in:
Nilaan Gunabalachandran
2023-04-12 09:36:57 -04:00
committed by Nisarg Bhavsar
parent 6fc7e0439e
commit 6962242207

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) 2020-2022, The Linux Foundation. All rights reserved.
*/
@@ -130,21 +130,21 @@ static void sde_hw_dsc_4hs_config(struct sde_hw_dsc *hw_dsc,
struct msm_display_dsc_info *dsc, u32 mode, u32 idx)
{
struct sde_hw_blk_reg_map *dsc_c;
u32 data = 0;
if (!dsc->dsc_4hsmerge_en)
return;
u32 data = 0, en = 0;
dsc_c = &hw_dsc->hw;
if (test_bit(SDE_DSC_4HS, &hw_dsc->caps->features)) {
data = dsc->dsc_4hsmerge_alignment << 12;
data |= dsc->dsc_4hsmerge_padding << 8;
data |= ((mode & DSC_MODE_VIDEO) ? 1 : 0);
if (dsc->dsc_4hsmerge_en) {
data = dsc->dsc_4hsmerge_alignment << 12;
data |= dsc->dsc_4hsmerge_padding << 8;
data |= ((mode & DSC_MODE_VIDEO) ? 1 : 0);
en = BIT(0);
}
SDE_REG_WRITE(dsc_c, DSC_4HS_MERGE_CFG + idx, data);
SDE_REG_WRITE(dsc_c, DSC_4HS_MERGE_EN + idx, BIT(0));
} else {
SDE_REG_WRITE(dsc_c, DSC_4HS_MERGE_EN + idx, en);
} else if (dsc->dsc_4hsmerge_en) {
data = SDE_REG_READ(dsc_c, DSC_CFG + idx);
data |= dsc->dsc_4hsmerge_padding << 18;