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 <[email protected]>
Cc: Fangzhi Zuo <[email protected]>
Signed-off-by: Srinivasan Shanmugam <[email protected]>
---

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,

Reply via email to