mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-04 00:15:49 -04:00
drm/msm/dpu: filter out too wide modes if no 3dmux is present
On chipsets such as QCS615, there is no 3dmux present. In such a case, a layer exceeding the max_mixer_width cannot be split, hence cannot be supported. Filter out the modes which exceed the max_mixer_width when there is no 3dmux present. Also, add a check in the dpu_crtc_atomic_check() to return failure for such modes. Signed-off-by: Abhinav Kumar <quic_abhinavk@quicinc.com> Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> Tested-by: Xiangxu Yin <quic_xiangxuy@quicinc.com> # QCS615 Patchwork: https://patchwork.freedesktop.org/patch/627974/ Link: https://lore.kernel.org/r/20241209-no_3dmux-v3-1-48aaa555b0d3@quicinc.com Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
This commit is contained in:
committed by
Dmitry Baryshkov
parent
dc7b16a4f0
commit
dbc7bb1a93
@@ -732,6 +732,13 @@ static int _dpu_crtc_check_and_setup_lm_bounds(struct drm_crtc *crtc,
|
||||
struct dpu_kms *dpu_kms = _dpu_crtc_get_kms(crtc);
|
||||
int i;
|
||||
|
||||
/* if we cannot merge 2 LMs (no 3d mux) better to fail earlier
|
||||
* before even checking the width after the split
|
||||
*/
|
||||
if (!dpu_kms->catalog->caps->has_3d_merge &&
|
||||
adj_mode->hdisplay > dpu_kms->catalog->caps->max_mixer_width)
|
||||
return -E2BIG;
|
||||
|
||||
for (i = 0; i < cstate->num_mixers; i++) {
|
||||
struct drm_rect *r = &cstate->lm_bounds[i];
|
||||
r->x1 = crtc_split_width * i;
|
||||
@@ -1251,6 +1258,12 @@ static enum drm_mode_status dpu_crtc_mode_valid(struct drm_crtc *crtc,
|
||||
{
|
||||
struct dpu_kms *dpu_kms = _dpu_crtc_get_kms(crtc);
|
||||
|
||||
/* if there is no 3d_mux block we cannot merge LMs so we cannot
|
||||
* split the large layer into 2 LMs, filter out such modes
|
||||
*/
|
||||
if (!dpu_kms->catalog->caps->has_3d_merge &&
|
||||
mode->hdisplay > dpu_kms->catalog->caps->max_mixer_width)
|
||||
return MODE_BAD_HVALUE;
|
||||
/*
|
||||
* max crtc width is equal to the max mixer width * 2 and max height is 4K
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user