drm/amd/display: Detect dynamic backlight support in eDP sink
authorRoy Chan <roy.chan@amd.com>
Fri, 30 Oct 2020 22:00:02 +0000 (18:00 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Mon, 16 Nov 2020 17:19:17 +0000 (12:19 -0500)
[Why]
Check if the eDP sink supports the dynamic backlight control

[How]
Query the dynamic backlight capability in DPCD (eDP case only)

Signed-off-by: Roy Chan <roy.chan@amd.com>
Acked-by: Bindu Ramamurthy <bindu.r@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c
drivers/gpu/drm/amd/display/dc/dc.h

index f2023d2..1dfcaf1 100644 (file)
@@ -3745,6 +3745,7 @@ void detect_edp_sink_caps(struct dc_link *link)
        uint32_t entry;
        uint32_t link_rate_in_khz;
        enum dc_link_rate link_rate = LINK_RATE_UNKNOWN;
+       uint8_t backlight_adj_cap;
 
        retrieve_link_cap(link);
        link->dpcd_caps.edp_supported_link_rates_count = 0;
@@ -3775,6 +3776,12 @@ void detect_edp_sink_caps(struct dc_link *link)
        }
        link->verified_link_cap = link->reported_link_cap;
 
+       core_link_read_dpcd(link, DP_EDP_BACKLIGHT_ADJUSTMENT_CAP,
+                                               &backlight_adj_cap, sizeof(backlight_adj_cap));
+
+       link->dpcd_caps.dynamic_backlight_capable_edp =
+                               (backlight_adj_cap & DP_EDP_DYNAMIC_BACKLIGHT_CAP) ? true:false;
+
        dc_link_set_default_brightness_aux(link);
 }
 
index 4c57cf0..52e8196 100644 (file)
@@ -1091,6 +1091,7 @@ struct dpcd_caps {
        bool panel_mode_edp;
        bool dpcd_display_control_capable;
        bool ext_receiver_cap_field_present;
+       bool dynamic_backlight_capable_edp;
        union dpcd_fec_capability fec_cap;
        struct dpcd_dsc_capabilities dsc_caps;
        struct dc_lttpr_caps lttpr_caps;