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:

committed by
Nisarg Bhavsar

parent
6fc7e0439e
commit
6962242207
@@ -1,6 +1,6 @@
|
|||||||
// SPDX-License-Identifier: GPL-2.0-only
|
// 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.
|
* 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 msm_display_dsc_info *dsc, u32 mode, u32 idx)
|
||||||
{
|
{
|
||||||
struct sde_hw_blk_reg_map *dsc_c;
|
struct sde_hw_blk_reg_map *dsc_c;
|
||||||
u32 data = 0;
|
u32 data = 0, en = 0;
|
||||||
|
|
||||||
if (!dsc->dsc_4hsmerge_en)
|
|
||||||
return;
|
|
||||||
|
|
||||||
dsc_c = &hw_dsc->hw;
|
dsc_c = &hw_dsc->hw;
|
||||||
|
|
||||||
if (test_bit(SDE_DSC_4HS, &hw_dsc->caps->features)) {
|
if (test_bit(SDE_DSC_4HS, &hw_dsc->caps->features)) {
|
||||||
data = dsc->dsc_4hsmerge_alignment << 12;
|
if (dsc->dsc_4hsmerge_en) {
|
||||||
data |= dsc->dsc_4hsmerge_padding << 8;
|
data = dsc->dsc_4hsmerge_alignment << 12;
|
||||||
data |= ((mode & DSC_MODE_VIDEO) ? 1 : 0);
|
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_CFG + idx, data);
|
||||||
SDE_REG_WRITE(dsc_c, DSC_4HS_MERGE_EN + idx, BIT(0));
|
SDE_REG_WRITE(dsc_c, DSC_4HS_MERGE_EN + idx, en);
|
||||||
} else {
|
} else if (dsc->dsc_4hsmerge_en) {
|
||||||
data = SDE_REG_READ(dsc_c, DSC_CFG + idx);
|
data = SDE_REG_READ(dsc_c, DSC_CFG + idx);
|
||||||
|
|
||||||
data |= dsc->dsc_4hsmerge_padding << 18;
|
data |= dsc->dsc_4hsmerge_padding << 18;
|
||||||
|
Reference in New Issue
Block a user