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>
Esse commit está contido em:

commit de
Gerrit - the friendly Code Review server

pai
4927d28629
commit
eb45d6c173
@@ -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);
|
||||
|
@@ -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,
|
||||
|
@@ -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);
|
||||
}
|
||||
|
||||
|
@@ -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);
|
||||
};
|
||||
|
||||
/**
|
||||
|
Referência em uma nova issue
Block a user