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:

committed by
Gerrit - the friendly Code Review server

orang tua
4927d28629
melakukan
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 &&
|
if (phys_enc->hw_dnsc_blur && phys_enc->hw_dnsc_blur->ops.bind_pingpong_blk &&
|
||||||
phys_enc->hw_pp) {
|
phys_enc->hw_pp) {
|
||||||
phys_enc->hw_dnsc_blur->ops.bind_pingpong_blk(phys_enc->hw_dnsc_blur,
|
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)
|
if (ctl->ops.update_dnsc_blur_bitmask)
|
||||||
ctl->ops.update_dnsc_blur_bitmask(ctl, phys_enc->hw_dnsc_blur->idx, true);
|
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);
|
hw_dnsc_blur->ops.setup_dither(hw_dnsc_blur, cfg);
|
||||||
|
|
||||||
if (hw_dnsc_blur->ops.bind_pingpong_blk)
|
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,
|
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,
|
cfg->flags, cfg->flags_h, cfg->flags_v, cfg->src_width,
|
||||||
|
@@ -1,5 +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, The Linux Foundation. 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,
|
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;
|
struct sde_hw_blk_reg_map *hw = &hw_dnsc_blur->hw;
|
||||||
int mux_cfg;
|
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))
|
if (enable && (pp < PINGPONG_0 || pp >= PINGPONG_MAX))
|
||||||
return;
|
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);
|
SDE_REG_WRITE(hw, DNSC_BLUR_MUX, mux_cfg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1,5 +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, The Linux Foundation. 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
|
* @hw_dnsc_blur: Pointer to dnsc_blur context
|
||||||
* @enable: Boolean to indicate enable/disable of the binding
|
* @enable: Boolean to indicate enable/disable of the binding
|
||||||
* @pp: Pingpong block idx for 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,
|
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);
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Reference in New Issue
Block a user