From: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
To: Paloma Arellano <quic_parellan@quicinc.com>,
freedreno@lists.freedesktop.org
Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org,
robdclark@gmail.com, seanpaul@chromium.org, swboyd@chromium.org,
quic_abhinavk@quicinc.com, quic_jesszhan@quicinc.com,
quic_khsieh@quicinc.com, marijn.suijten@somainline.org,
neil.armstrong@linaro.org
Subject: Re: [PATCH 05/17] drm/msm/dp: add an API to indicate if sink supports VSC SDP
Date: Thu, 25 Jan 2024 23:23:36 +0200 [thread overview]
Message-ID: <e1a13e45-e87c-4c7b-a5cb-f46d51e66058@linaro.org> (raw)
In-Reply-To: <20240125193834.7065-6-quic_parellan@quicinc.com>
On 25/01/2024 21:38, Paloma Arellano wrote:
> YUV420 format is supported only in the VSC SDP packet and not through
> MSA. Hence add an API which indicates the sink support which can be used
> by the rest of the DP programming.
This API ideally should go to drm/display/drm_dp_helper.c
>
> Signed-off-by: Paloma Arellano <quic_parellan@quicinc.com>
> ---
> drivers/gpu/drm/msm/dp/dp_display.c | 3 ++-
> drivers/gpu/drm/msm/dp/dp_panel.c | 35 +++++++++++++++++++++++++----
> drivers/gpu/drm/msm/dp/dp_panel.h | 1 +
> 3 files changed, 34 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/dp_display.c
> index ddac55f45a722..f6b3b6ca242f8 100644
> --- a/drivers/gpu/drm/msm/dp/dp_display.c
> +++ b/drivers/gpu/drm/msm/dp/dp_display.c
> @@ -1617,7 +1617,8 @@ void dp_bridge_mode_set(struct drm_bridge *drm_bridge,
> !!(dp_display->dp_mode.drm_mode.flags & DRM_MODE_FLAG_NHSYNC);
>
> dp_display->dp_mode.out_fmt_is_yuv_420 =
> - drm_mode_is_420_only(&dp->connector->display_info, adjusted_mode);
> + drm_mode_is_420_only(&dp->connector->display_info, adjusted_mode) &&
> + dp_panel_vsc_sdp_supported(dp_display->panel);
>
> /* populate wide_bus_support to different layers */
> dp_display->ctrl->wide_bus_en =
> diff --git a/drivers/gpu/drm/msm/dp/dp_panel.c b/drivers/gpu/drm/msm/dp/dp_panel.c
> index 127f6af995cd1..af7820b6d35ec 100644
> --- a/drivers/gpu/drm/msm/dp/dp_panel.c
> +++ b/drivers/gpu/drm/msm/dp/dp_panel.c
> @@ -17,6 +17,9 @@ struct dp_panel_private {
> struct dp_link *link;
> struct dp_catalog *catalog;
> bool panel_on;
> + bool vsc_supported;
> + u8 major;
> + u8 minor;
> };
>
> static void dp_panel_read_psr_cap(struct dp_panel_private *panel)
> @@ -43,9 +46,10 @@ static void dp_panel_read_psr_cap(struct dp_panel_private *panel)
> static int dp_panel_read_dpcd(struct dp_panel *dp_panel)
> {
> int rc;
> + ssize_t rlen;
> struct dp_panel_private *panel;
> struct dp_link_info *link_info;
> - u8 *dpcd, major, minor;
> + u8 *dpcd, rx_feature;
>
> panel = container_of(dp_panel, struct dp_panel_private, dp_panel);
> dpcd = dp_panel->dpcd;
> @@ -53,10 +57,19 @@ static int dp_panel_read_dpcd(struct dp_panel *dp_panel)
> if (rc)
> return rc;
>
> + rlen = drm_dp_dpcd_read(panel->aux, DP_DPRX_FEATURE_ENUMERATION_LIST, &rx_feature, 1);
> + if (rlen != 1) {
> + panel->vsc_supported = false;
> + pr_debug("failed to read DP_DPRX_FEATURE_ENUMERATION_LIST\n");
> + } else {
> + panel->vsc_supported = !!(rx_feature & DP_VSC_SDP_EXT_FOR_COLORIMETRY_SUPPORTED);
> + pr_debug("vsc=%d\n", panel->vsc_supported);
> + }
> +
> link_info = &dp_panel->link_info;
> link_info->revision = dpcd[DP_DPCD_REV];
> - major = (link_info->revision >> 4) & 0x0f;
> - minor = link_info->revision & 0x0f;
> + panel->major = (link_info->revision >> 4) & 0x0f;
> + panel->minor = link_info->revision & 0x0f;
>
> link_info->rate = drm_dp_max_link_rate(dpcd);
> link_info->num_lanes = drm_dp_max_lane_count(dpcd);
> @@ -69,7 +82,7 @@ static int dp_panel_read_dpcd(struct dp_panel *dp_panel)
> if (link_info->rate > dp_panel->max_dp_link_rate)
> link_info->rate = dp_panel->max_dp_link_rate;
>
> - drm_dbg_dp(panel->drm_dev, "version: %d.%d\n", major, minor);
> + drm_dbg_dp(panel->drm_dev, "version: %d.%d\n", panel->major, panel->minor);
> drm_dbg_dp(panel->drm_dev, "link_rate=%d\n", link_info->rate);
> drm_dbg_dp(panel->drm_dev, "lane_count=%d\n", link_info->num_lanes);
>
> @@ -280,6 +293,20 @@ void dp_panel_tpg_config(struct dp_panel *dp_panel, bool enable)
> dp_catalog_panel_tpg_enable(catalog, &panel->dp_panel.dp_mode.drm_mode);
> }
>
> +bool dp_panel_vsc_sdp_supported(struct dp_panel *dp_panel)
> +{
> + struct dp_panel_private *panel;
> +
> + if (!dp_panel) {
> + pr_err("invalid input\n");
> + return false;
> + }
> +
> + panel = container_of(dp_panel, struct dp_panel_private, dp_panel);
> +
> + return panel->major >= 1 && panel->minor >= 3 && panel->vsc_supported;
> +}
> +
> void dp_panel_dump_regs(struct dp_panel *dp_panel)
> {
> struct dp_catalog *catalog;
> diff --git a/drivers/gpu/drm/msm/dp/dp_panel.h b/drivers/gpu/drm/msm/dp/dp_panel.h
> index 6ec68be9f2366..590eca5ce304b 100644
> --- a/drivers/gpu/drm/msm/dp/dp_panel.h
> +++ b/drivers/gpu/drm/msm/dp/dp_panel.h
> @@ -66,6 +66,7 @@ int dp_panel_get_modes(struct dp_panel *dp_panel,
> struct drm_connector *connector);
> void dp_panel_handle_sink_request(struct dp_panel *dp_panel);
> void dp_panel_tpg_config(struct dp_panel *dp_panel, bool enable);
> +bool dp_panel_vsc_sdp_supported(struct dp_panel *dp_panel);
>
> /**
> * is_link_rate_valid() - validates the link rate
--
With best wishes
Dmitry
next prev parent reply other threads:[~2024-01-25 21:23 UTC|newest]
Thread overview: 95+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-01-25 19:38 [PATCH 00/17] Add support for CDM over DP Paloma Arellano
2024-01-25 19:38 ` [PATCH 01/17] drm/msm/dpu: allow dpu_encoder_helper_phys_setup_cdm to work for DP Paloma Arellano
2024-01-25 21:14 ` Dmitry Baryshkov
2024-01-27 0:39 ` Paloma Arellano
2024-01-29 3:06 ` Abhinav Kumar
2024-01-29 3:23 ` Dmitry Baryshkov
2024-01-29 4:00 ` Abhinav Kumar
2024-01-29 4:12 ` Dmitry Baryshkov
2024-01-29 4:33 ` Abhinav Kumar
2024-01-29 5:12 ` Dmitry Baryshkov
2024-01-29 23:06 ` Paloma Arellano
2024-01-25 19:38 ` [PATCH 02/17] drm/msm/dpu: move dpu_encoder_helper_phys_setup_cdm to dpu_encoder Paloma Arellano
2024-01-25 21:16 ` Dmitry Baryshkov
2024-01-27 0:43 ` Paloma Arellano
2024-01-27 2:26 ` Dmitry Baryshkov
2024-01-25 19:38 ` [PATCH 03/17] drm/msm/dp: rename wide_bus_en to wide_bus_supported Paloma Arellano
2024-01-25 21:17 ` Dmitry Baryshkov
2024-01-25 19:38 ` [PATCH 04/17] drm/msm/dp: store mode YUV420 information to be used by rest of DP Paloma Arellano
2024-01-25 21:20 ` Dmitry Baryshkov
2024-01-27 0:48 ` Paloma Arellano
2024-01-27 2:29 ` Dmitry Baryshkov
2024-01-25 19:38 ` [PATCH 05/17] drm/msm/dp: add an API to indicate if sink supports VSC SDP Paloma Arellano
2024-01-25 21:23 ` Dmitry Baryshkov [this message]
2024-01-27 0:58 ` Paloma Arellano
2024-01-27 2:40 ` Dmitry Baryshkov
2024-01-27 3:57 ` Abhinav Kumar
2024-01-27 5:31 ` Dmitry Baryshkov
2024-01-29 23:20 ` Paloma Arellano
2024-01-25 19:38 ` [PATCH 06/17] drm/msm/dpu: move widebus logic to its own API Paloma Arellano
2024-01-25 21:25 ` Dmitry Baryshkov
2024-01-25 19:38 ` [PATCH 07/17] drm/msm/dpu: disallow widebus en in INTF_CONFIG2 when DP is YUV420 Paloma Arellano
2024-01-25 21:26 ` Dmitry Baryshkov
2024-01-27 5:42 ` Dmitry Baryshkov
2024-01-28 5:16 ` Paloma Arellano
2024-01-28 5:33 ` Dmitry Baryshkov
2024-01-29 23:51 ` Abhinav Kumar
2024-01-30 0:03 ` Dmitry Baryshkov
2024-01-30 1:07 ` Abhinav Kumar
2024-01-30 1:43 ` Dmitry Baryshkov
2024-01-30 4:10 ` Abhinav Kumar
2024-01-30 5:28 ` Dmitry Baryshkov
2024-01-30 6:03 ` Abhinav Kumar
2024-01-25 19:38 ` [PATCH 08/17] drm/msm/dp: change YUV420 related programming for DP Paloma Arellano
2024-01-25 21:29 ` Dmitry Baryshkov
2024-01-28 5:18 ` Paloma Arellano
2024-01-25 19:38 ` [PATCH 09/17] drm/msm/dp: move parity calculation to dp_catalog Paloma Arellano
2024-01-25 21:32 ` Dmitry Baryshkov
2024-01-28 5:18 ` Paloma Arellano
2024-01-25 19:38 ` [PATCH 10/17] drm/msm/dp: modify dp_catalog_hw_revision to show major and minor val Paloma Arellano
2024-01-25 22:07 ` Dmitry Baryshkov
2024-01-28 5:30 ` Paloma Arellano
2024-01-28 5:35 ` Dmitry Baryshkov
2024-01-27 23:43 ` kernel test robot
2024-01-28 14:02 ` kernel test robot
2024-01-25 19:38 ` [PATCH 11/17] drm/msm/dp: add VSC SDP support for YUV420 over DP Paloma Arellano
2024-01-25 21:48 ` Dmitry Baryshkov
2024-01-28 5:34 ` Paloma Arellano
2024-01-28 5:39 ` Dmitry Baryshkov
2024-02-01 1:56 ` Abhinav Kumar
2024-02-01 4:36 ` Dmitry Baryshkov
2024-02-02 6:25 ` Abhinav Kumar
2024-01-25 19:38 ` [PATCH 12/17] drm/msm/dpu: add support of new peripheral flush mechanism Paloma Arellano
2024-01-25 21:49 ` Dmitry Baryshkov
2024-01-28 5:40 ` Paloma Arellano
2024-01-28 5:42 ` Dmitry Baryshkov
2024-02-08 23:09 ` Paloma Arellano
2024-01-25 19:38 ` [PATCH 13/17] drm/msm/dp: enable SDP and SDE periph flush update Paloma Arellano
2024-01-25 21:50 ` Dmitry Baryshkov
2024-01-28 5:42 ` Paloma Arellano
2024-01-25 19:38 ` [PATCH 14/17] drm/msm/dpu: modify encoder programming for CDM over DP Paloma Arellano
2024-01-25 21:57 ` Dmitry Baryshkov
2024-01-28 5:48 ` Paloma Arellano
2024-01-28 5:55 ` Dmitry Baryshkov
2024-01-29 2:58 ` Abhinav Kumar
2024-01-29 3:42 ` Dmitry Baryshkov
2024-01-29 5:03 ` Abhinav Kumar
2024-01-29 6:12 ` Dmitry Baryshkov
2024-01-29 7:08 ` Abhinav Kumar
2024-01-29 23:44 ` Dmitry Baryshkov
2024-02-01 1:30 ` Abhinav Kumar
2024-02-01 3:17 ` Dmitry Baryshkov
2024-02-01 19:01 ` Abhinav Kumar
2024-01-25 19:38 ` [PATCH 15/17] drm/msm/dpu: allow certain formats for CDM for DP Paloma Arellano
2024-01-25 21:58 ` Dmitry Baryshkov
2024-02-08 23:19 ` Paloma Arellano
2024-01-25 19:38 ` [PATCH 16/17] drm/msm/dpu: reserve CDM blocks for DP if mode is YUV420 Paloma Arellano
2024-01-25 22:01 ` Dmitry Baryshkov
2024-01-28 5:48 ` Paloma Arellano
2024-01-25 19:38 ` [PATCH 17/17] drm/msm/dp: allow YUV420 mode for DP connector when VSC SDP supported Paloma Arellano
2024-01-25 22:05 ` Dmitry Baryshkov
2024-01-29 3:17 ` Abhinav Kumar
2024-01-29 3:52 ` Dmitry Baryshkov
2024-01-29 4:30 ` Abhinav Kumar
2024-01-29 5:05 ` Dmitry Baryshkov
2024-01-29 5:36 ` Abhinav Kumar
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=e1a13e45-e87c-4c7b-a5cb-f46d51e66058@linaro.org \
--to=dmitry.baryshkov@linaro.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=freedreno@lists.freedesktop.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=marijn.suijten@somainline.org \
--cc=neil.armstrong@linaro.org \
--cc=quic_abhinavk@quicinc.com \
--cc=quic_jesszhan@quicinc.com \
--cc=quic_khsieh@quicinc.com \
--cc=quic_parellan@quicinc.com \
--cc=robdclark@gmail.com \
--cc=seanpaul@chromium.org \
--cc=swboyd@chromium.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).