disp: msm: sde: fix dnsc_blur mux setting for cwb

Fix the dnsc_blur block pingpong mux setting for concurrent
writeback case.

Change-Id: I1a79602f05471ce2bc143258ffe87e46772f3d06
Signed-off-by: Veera Sundaram Sankaran <quic_veeras@quicinc.com>
This commit is contained in:
Veera Sundaram Sankaran
2022-01-18 16:35:25 -08:00
committed by Gerrit - the friendly Code Review server
parent 4927d28629
commit eb45d6c173
4 changed files with 12 additions and 5 deletions

View File

@@ -3239,7 +3239,7 @@ void sde_encoder_helper_phys_disable(struct sde_encoder_phys *phys_enc,
if (phys_enc->hw_dnsc_blur && phys_enc->hw_dnsc_blur->ops.bind_pingpong_blk &&
phys_enc->hw_pp) {
phys_enc->hw_dnsc_blur->ops.bind_pingpong_blk(phys_enc->hw_dnsc_blur,
false, phys_enc->hw_pp->idx);
false, phys_enc->hw_pp->idx, phys_enc->in_clone_mode);
if (ctl->ops.update_dnsc_blur_bitmask)
ctl->ops.update_dnsc_blur_bitmask(ctl, phys_enc->hw_dnsc_blur->idx, true);

View File

@@ -1344,7 +1344,8 @@ static void _sde_encoder_phys_wb_setup_dnsc_blur(struct sde_encoder_phys *phys_e
hw_dnsc_blur->ops.setup_dither(hw_dnsc_blur, cfg);
if (hw_dnsc_blur->ops.bind_pingpong_blk)
hw_dnsc_blur->ops.bind_pingpong_blk(hw_dnsc_blur, enable, hw_pp->idx);
hw_dnsc_blur->ops.bind_pingpong_blk(hw_dnsc_blur, enable, hw_pp->idx,
phys_enc->in_clone_mode);
SDE_EVT32(DRMID(phys_enc->parent), WBID(wb_enc), sde_conn_state->dnsc_blur_count,
cfg->flags, cfg->flags_h, cfg->flags_v, cfg->src_width,

View File

@@ -1,5 +1,6 @@
// SPDX-License-Identifier: GPL-2.0-only
/*
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
* Copyright (c) 2021, The Linux Foundation. All rights reserved.
*/
@@ -207,7 +208,7 @@ static void _sde_hw_dnsc_blur_dither_setup(struct sde_hw_dnsc_blur *hw_dnsc_blur
}
static void _sde_hw_dnsc_blur_bind_pingpong_blk(struct sde_hw_dnsc_blur *hw_dnsc_blur,
bool enable, const enum sde_pingpong pp)
bool enable, const enum sde_pingpong pp, bool cwb)
{
struct sde_hw_blk_reg_map *hw = &hw_dnsc_blur->hw;
int mux_cfg;
@@ -215,7 +216,10 @@ static void _sde_hw_dnsc_blur_bind_pingpong_blk(struct sde_hw_dnsc_blur *hw_dnsc
if (enable && (pp < PINGPONG_0 || pp >= PINGPONG_MAX))
return;
mux_cfg = enable ? (pp - PINGPONG_0) & 0x7 : 0xF;
if (enable)
mux_cfg = cwb ? 0xD : (pp - PINGPONG_0) & 0x7;
else
mux_cfg = 0xF;
SDE_REG_WRITE(hw, DNSC_BLUR_MUX, mux_cfg);
}

View File

@@ -1,5 +1,6 @@
/* SPDX-License-Identifier: GPL-2.0-only */
/*
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
* Copyright (c) 2021, The Linux Foundation. All rights reserved.
*/
@@ -42,9 +43,10 @@ struct sde_hw_dnsc_blur_ops {
* @hw_dnsc_blur: Pointer to dnsc_blur context
* @enable: Boolean to indicate enable/disable of the binding
* @pp: Pingpong block idx for binding
* @cwb: Flag to indicate concurrent writeback
*/
void (*bind_pingpong_blk)(struct sde_hw_dnsc_blur *hw_dnsc_blur,
bool enable, const enum sde_pingpong pp);
bool enable, const enum sde_pingpong pp, bool cwb);
};
/**