Message ID | 20250118-sm8650-v6-13-hmd-deckard-mdss-quad-upstream-33-v5-5-9701a16340da@linaro.org |
---|---|
State | Superseded |
Headers | show |
Series | drm/msm/dpu: Support quad pipe with dual-DSI | expand |
On 1/17/2025 8:00 AM, Jun Nie wrote: > Currently, only one pair of mixers is supported, so a non-zero counter > value is sufficient to identify the correct mixer within that pair. > However, future implementations may involve multiple mixer pairs. With > the current implementation, all mixers within the second pair would be > incorrectly selected as right mixer. To correctly select the mixer > within a pair, test the least significant bit of the counter. If the > least significant bit is not set, select the mixer as left one; > otherwise, select the mixer as right one for all pairs. > > Signed-off-by: Jun Nie <jun.nie@linaro.org> > Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> Reviewed-by: Jessica Zhang <quic_jesszhan@quicinc.com> > --- > drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c | 5 ++--- > 1 file changed, 2 insertions(+), 3 deletions(-) > > diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c > index 7191b1a6d41b3..41c9d3e3e3c7c 100644 > --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c > +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c > @@ -369,11 +369,10 @@ static void _dpu_crtc_setup_blend_cfg(struct dpu_crtc_mixer *mixer, > static void _dpu_crtc_program_lm_output_roi(struct drm_crtc *crtc) > { > struct dpu_crtc_state *crtc_state; > - int lm_idx, lm_horiz_position; > + int lm_idx; > > crtc_state = to_dpu_crtc_state(crtc->state); > > - lm_horiz_position = 0; > for (lm_idx = 0; lm_idx < crtc_state->num_mixers; lm_idx++) { > const struct drm_rect *lm_roi = &crtc_state->lm_bounds[lm_idx]; > struct dpu_hw_mixer *hw_lm = crtc_state->mixers[lm_idx].hw_lm; > @@ -384,7 +383,7 @@ static void _dpu_crtc_program_lm_output_roi(struct drm_crtc *crtc) > > cfg.out_width = drm_rect_width(lm_roi); > cfg.out_height = drm_rect_height(lm_roi); > - cfg.right_mixer = lm_horiz_position++; > + cfg.right_mixer = lm_idx & 0x1; > cfg.flags = 0; > hw_lm->ops.setup_mixer_out(hw_lm, &cfg); > } > > -- > 2.34.1 >
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c index 7191b1a6d41b3..41c9d3e3e3c7c 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c @@ -369,11 +369,10 @@ static void _dpu_crtc_setup_blend_cfg(struct dpu_crtc_mixer *mixer, static void _dpu_crtc_program_lm_output_roi(struct drm_crtc *crtc) { struct dpu_crtc_state *crtc_state; - int lm_idx, lm_horiz_position; + int lm_idx; crtc_state = to_dpu_crtc_state(crtc->state); - lm_horiz_position = 0; for (lm_idx = 0; lm_idx < crtc_state->num_mixers; lm_idx++) { const struct drm_rect *lm_roi = &crtc_state->lm_bounds[lm_idx]; struct dpu_hw_mixer *hw_lm = crtc_state->mixers[lm_idx].hw_lm; @@ -384,7 +383,7 @@ static void _dpu_crtc_program_lm_output_roi(struct drm_crtc *crtc) cfg.out_width = drm_rect_width(lm_roi); cfg.out_height = drm_rect_height(lm_roi); - cfg.right_mixer = lm_horiz_position++; + cfg.right_mixer = lm_idx & 0x1; cfg.flags = 0; hw_lm->ops.setup_mixer_out(hw_lm, &cfg); }