[PATCH v2] drm/amd/display: Check & log if receiver supports MST, DSC & FEC.
Aurabindo Pillai
aurabindo.pillai at amd.com
Mon Apr 17 15:23:44 UTC 2023
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 at amd.com>
> Cc: Fangzhi Zuo <Jerry.Zuo at amd.com>
> Signed-off-by: Srinivasan Shanmugam <srinivasan.shanmugam at 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,
More information about the amd-gfx
mailing list