All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2] drm/amd/display: Check & log if receiver supports MST, DSC & FEC.
@ 2023-04-15 18:27 Srinivasan Shanmugam
  2023-04-17 15:23 ` Aurabindo Pillai
  0 siblings, 1 reply; 2+ messages in thread
From: Srinivasan Shanmugam @ 2023-04-15 18:27 UTC (permalink / raw)
  To: Fangzhi Zuo, Aurabindo Pillai; +Cc: Srinivasan Shanmugam, amd-gfx

After reading from receiver via DPCD, check & log if it supports MST,
DSC & FEC

Cc: Aurabindo Pillai <aurabindo.pillai@amd.com>
Cc: Fangzhi Zuo <Jerry.Zuo@amd.com>
Signed-off-by: Srinivasan Shanmugam <srinivasan.shanmugam@amd.com>
---

v2:

 - Added %s: to print the function name.

 .../amd/display/dc/link/protocols/link_dp_capability.c   | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/drivers/gpu/drm/amd/display/dc/link/protocols/link_dp_capability.c b/drivers/gpu/drm/amd/display/dc/link/protocols/link_dp_capability.c
index ba98013fecd0..f93fc35a1a50 100644
--- a/drivers/gpu/drm/amd/display/dc/link/protocols/link_dp_capability.c
+++ b/drivers/gpu/drm/amd/display/dc/link/protocols/link_dp_capability.c
@@ -1554,6 +1554,8 @@ static bool retrieve_link_cap(struct dc_link *link)
 	int i;
 	struct dp_sink_hw_fw_revision dp_hw_fw_revision;
 	const uint32_t post_oui_delay = 30; // 30ms
+	bool is_fec_supported = false;
+	bool is_dsc_supported = false;
 
 	memset(dpcd_data, '\0', sizeof(dpcd_data));
 	memset(&down_strm_port_count,
@@ -1696,6 +1698,7 @@ static bool retrieve_link_cap(struct dc_link *link)
 
 	/* TODO - decouple raw mst capability from policy decision */
 	link->dpcd_caps.is_mst_capable = read_is_mst_supported(link);
+	DC_LOG_DC("%s: MST_Support: %s\n", __func__, str_yes_no(link->dpcd_caps.is_mst_capable));
 
 	get_active_converter_info(ds_port.byte, link);
 
@@ -1803,6 +1806,12 @@ static bool retrieve_link_cap(struct dc_link *link)
 				DP_DSC_SUPPORT,
 				link->dpcd_caps.dsc_caps.dsc_basic_caps.raw,
 				sizeof(link->dpcd_caps.dsc_caps.dsc_basic_caps.raw));
+		if (status == DC_OK) {
+			is_fec_supported = link->dpcd_caps.fec_cap.raw & 0x1;
+			is_dsc_supported = link->dpcd_caps.dsc_caps.dsc_basic_caps.raw[0] & 0x1;
+			DC_LOG_DC("%s: FEC_Sink_Support: %s\n", __func__, str_yes_no(is_fec_supported));
+			DC_LOG_DC("%s: DSC_Sink_Support: %s\n", __func__, str_yes_no(is_dsc_supported));
+		}
 		if (link->dpcd_caps.dongle_type != DISPLAY_DONGLE_NONE) {
 			status = core_link_read_dpcd(
 					link,
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH v2] drm/amd/display: Check & log if receiver supports MST,  DSC & FEC.
  2023-04-15 18:27 [PATCH v2] drm/amd/display: Check & log if receiver supports MST, DSC & FEC Srinivasan Shanmugam
@ 2023-04-17 15:23 ` Aurabindo Pillai
  0 siblings, 0 replies; 2+ messages in thread
From: Aurabindo Pillai @ 2023-04-17 15:23 UTC (permalink / raw)
  To: Srinivasan Shanmugam, Fangzhi Zuo; +Cc: amd-gfx



On 4/15/23 14:27, Srinivasan Shanmugam wrote:
> After reading from receiver via DPCD, check & log if it supports MST,
> DSC & FEC
> 
> Cc: Aurabindo Pillai <aurabindo.pillai@amd.com>
> Cc: Fangzhi Zuo <Jerry.Zuo@amd.com>
> Signed-off-by: Srinivasan Shanmugam <srinivasan.shanmugam@amd.com>
> ---
> 
> v2:
> 
>   - Added %s: to print the function name.
> 
>   .../amd/display/dc/link/protocols/link_dp_capability.c   | 9 +++++++++
>   1 file changed, 9 insertions(+)
> 
> diff --git a/drivers/gpu/drm/amd/display/dc/link/protocols/link_dp_capability.c b/drivers/gpu/drm/amd/display/dc/link/protocols/link_dp_capability.c
> index ba98013fecd0..f93fc35a1a50 100644
> --- a/drivers/gpu/drm/amd/display/dc/link/protocols/link_dp_capability.c
> +++ b/drivers/gpu/drm/amd/display/dc/link/protocols/link_dp_capability.c
> @@ -1554,6 +1554,8 @@ static bool retrieve_link_cap(struct dc_link *link)
>   	int i;
>   	struct dp_sink_hw_fw_revision dp_hw_fw_revision;
>   	const uint32_t post_oui_delay = 30; // 30ms
> +	bool is_fec_supported = false;
> +	bool is_dsc_supported = false;
>   
>   	memset(dpcd_data, '\0', sizeof(dpcd_data));
>   	memset(&down_strm_port_count,
> @@ -1696,6 +1698,7 @@ static bool retrieve_link_cap(struct dc_link *link)
>   
>   	/* TODO - decouple raw mst capability from policy decision */
>   	link->dpcd_caps.is_mst_capable = read_is_mst_supported(link);
> +	DC_LOG_DC("%s: MST_Support: %s\n", __func__, str_yes_no(link->dpcd_caps.is_mst_capable));
>   
>   	get_active_converter_info(ds_port.byte, link);
>   
> @@ -1803,6 +1806,12 @@ static bool retrieve_link_cap(struct dc_link *link)
>   				DP_DSC_SUPPORT,
>   				link->dpcd_caps.dsc_caps.dsc_basic_caps.raw,
>   				sizeof(link->dpcd_caps.dsc_caps.dsc_basic_caps.raw));
> +		if (status == DC_OK) {
> +			is_fec_supported = link->dpcd_caps.fec_cap.raw & 0x1;
> +			is_dsc_supported = link->dpcd_caps.dsc_caps.dsc_basic_caps.raw[0] & 0x1;

Can we use the defined struct instead of the bitwise logic here, like 
fec_cap.bits.FEC_CAPABLE? Makes it more readable.

For DSC, it would be useful to print both basic DSC and passthrough 
capability.

> +			DC_LOG_DC("%s: FEC_Sink_Support: %s\n", __func__, str_yes_no(is_fec_supported));
> +			DC_LOG_DC("%s: DSC_Sink_Support: %s\n", __func__, str_yes_no(is_dsc_supported));
> +		}
>   		if (link->dpcd_caps.dongle_type != DISPLAY_DONGLE_NONE) {
>   			status = core_link_read_dpcd(
>   					link,

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2023-04-17 15:23 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-04-15 18:27 [PATCH v2] drm/amd/display: Check & log if receiver supports MST, DSC & FEC Srinivasan Shanmugam
2023-04-17 15:23 ` Aurabindo Pillai

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.