Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

drm/msm/dpu: Adjust writeback phys encoder setup for CWB

Adjust QoS remapper, OT limit, and CDP parameters to account for
concurrent writeback

Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Reviewed-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
Signed-off-by: Jessica Zhang <quic_jesszhan@quicinc.com>
Patchwork: https://patchwork.freedesktop.org/patch/637490/
Link: https://lore.kernel.org/r/20250214-concurrent-wb-v6-10-a44c293cf422@quicinc.com
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>

authored by

Jessica Zhang and committed by
Dmitry Baryshkov
3371005e 0f3801d6

+8 -3
+8 -3
drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_wb.c
··· 68 68 ot_params.num = hw_wb->idx - WB_0; 69 69 ot_params.width = phys_enc->cached_mode.hdisplay; 70 70 ot_params.height = phys_enc->cached_mode.vdisplay; 71 - ot_params.is_wfd = true; 71 + ot_params.is_wfd = !dpu_encoder_helper_get_cwb_mask(phys_enc); 72 72 ot_params.frame_rate = drm_mode_vrefresh(&phys_enc->cached_mode); 73 73 ot_params.vbif_idx = hw_wb->caps->vbif_idx; 74 74 ot_params.rd = false; ··· 111 111 qos_params.vbif_idx = hw_wb->caps->vbif_idx; 112 112 qos_params.xin_id = hw_wb->caps->xin_id; 113 113 qos_params.num = hw_wb->idx - WB_0; 114 - qos_params.is_rt = false; 114 + qos_params.is_rt = dpu_encoder_helper_get_cwb_mask(phys_enc); 115 115 116 116 DPU_DEBUG("[qos_remap] wb:%d vbif:%d xin:%d is_rt:%d\n", 117 117 qos_params.num, ··· 174 174 struct dpu_encoder_phys_wb *wb_enc = to_dpu_encoder_phys_wb(phys_enc); 175 175 struct dpu_hw_wb *hw_wb; 176 176 struct dpu_hw_wb_cfg *wb_cfg; 177 + u32 cdp_usage; 177 178 178 179 if (!phys_enc || !phys_enc->dpu_kms || !phys_enc->dpu_kms->catalog) { 179 180 DPU_ERROR("invalid encoder\n"); ··· 183 182 184 183 hw_wb = phys_enc->hw_wb; 185 184 wb_cfg = &wb_enc->wb_cfg; 185 + if (dpu_encoder_helper_get_cwb_mask(phys_enc)) 186 + cdp_usage = DPU_PERF_CDP_USAGE_RT; 187 + else 188 + cdp_usage = DPU_PERF_CDP_USAGE_NRT; 186 189 187 190 wb_cfg->intf_mode = phys_enc->intf_mode; 188 191 wb_cfg->roi.x1 = 0; ··· 204 199 const struct dpu_perf_cfg *perf = phys_enc->dpu_kms->catalog->perf; 205 200 206 201 hw_wb->ops.setup_cdp(hw_wb, format, 207 - perf->cdp_cfg[DPU_PERF_CDP_USAGE_NRT].wr_enable); 202 + perf->cdp_cfg[cdp_usage].wr_enable); 208 203 } 209 204 210 205 if (hw_wb->ops.setup_outaddress)