Skip to content

Commit ab2f860

Browse files
Paloma Arellanolumag
authored andcommitted
drm/msm/dp: check if VSC SDP is supported in DP programming
In the DP driver, check if VSC SDP is supported and propagate this value to dp_panel. In dp_display's dp_mode, the out_fmt_is_yuv_420 parameter must also utilize this value since YUV420 is only allowed when VSC SDP is supported. Changes in v2: - Move DP programming when VSC SDP is supported to this patch Signed-off-by: Paloma Arellano <quic_parellan@quicinc.com> Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> Patchwork: https://patchwork.freedesktop.org/patch/579625/ Link: https://lore.kernel.org/r/20240222194025.25329-9-quic_parellan@quicinc.com Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
1 parent 5b30d1c commit ab2f860

3 files changed

Lines changed: 6 additions & 1 deletion

File tree

drivers/gpu/drm/msm/dp/dp_display.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1550,8 +1550,10 @@ void dp_bridge_mode_set(struct drm_bridge *drm_bridge,
15501550
struct msm_dp_bridge *dp_bridge = to_dp_bridge(drm_bridge);
15511551
struct msm_dp *dp = dp_bridge->dp_display;
15521552
struct dp_display_private *dp_display;
1553+
struct dp_panel *dp_panel;
15531554

15541555
dp_display = container_of(dp, struct dp_display_private, dp_display);
1556+
dp_panel = dp_display->panel;
15551557

15561558
memset(&dp_display->dp_mode, 0x0, sizeof(struct dp_display_mode));
15571559

@@ -1572,7 +1574,8 @@ void dp_bridge_mode_set(struct drm_bridge *drm_bridge,
15721574
!!(dp_display->dp_mode.drm_mode.flags & DRM_MODE_FLAG_NHSYNC);
15731575

15741576
dp_display->dp_mode.out_fmt_is_yuv_420 =
1575-
drm_mode_is_420_only(&dp->connector->display_info, adjusted_mode);
1577+
drm_mode_is_420_only(&dp->connector->display_info, adjusted_mode) &&
1578+
dp_panel->vsc_sdp_supported;
15761579

15771580
/* populate wide_bus_support to different layers */
15781581
dp_display->ctrl->wide_bus_en =

drivers/gpu/drm/msm/dp/dp_panel.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ static int dp_panel_read_dpcd(struct dp_panel *dp_panel)
5757
if (rc)
5858
return rc;
5959

60+
dp_panel->vsc_sdp_supported = drm_dp_vsc_sdp_supported(panel->aux, dpcd);
6061
link_info = &dp_panel->link_info;
6162
link_info->revision = dpcd[DP_DPCD_REV];
6263
major = (link_info->revision >> 4) & 0x0f;

drivers/gpu/drm/msm/dp/dp_panel.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ struct dp_panel {
4646
struct dp_display_mode dp_mode;
4747
struct dp_panel_psr psr_cap;
4848
bool video_test;
49+
bool vsc_sdp_supported;
4950

5051
u32 vic;
5152
u32 max_dp_lanes;

0 commit comments

Comments
 (0)