The 'link bpc' DRM property exposes the connector's current display link bits per component value. This allows userspace to discover whether a link has degraded from a higher bit depth to a lower one.
Add support for it in amdgpu. Signed-off-by: Nicolas Frattaroli <[email protected]> --- drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c index dfe95c9b8746..cca4dd93bb6d 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c @@ -7184,6 +7184,14 @@ static void apply_dsc_policy_for_stream(struct amdgpu_dm_connector *aconnector, } #endif +static void amdgpu_dm_update_link_bpc(struct drm_connector_state *conn_state, + enum dc_color_depth depth) +{ + /* 6 bpc is an experimental internal format only, use 8 as minimum */ + conn_state->link_bpc = clamp(convert_dc_color_depth_into_bpc(depth), 8, + conn_state->max_bpc); +} + static struct dc_stream_state * create_stream_for_sink(struct drm_connector *connector, const struct drm_display_mode *drm_mode, @@ -8981,8 +8989,10 @@ void amdgpu_dm_connector_init_helper(struct amdgpu_display_manager *dm, adev->mode_info.underscan_vborder_property, 0); - if (!aconnector->mst_root) + if (!aconnector->mst_root) { drm_connector_attach_max_bpc_property(&aconnector->base, 8, 16); + drm_connector_attach_link_bpc_property(&aconnector->base, 16); + } aconnector->base.state->max_bpc = 16; aconnector->base.state->max_requested_bpc = aconnector->base.state->max_bpc; @@ -11425,6 +11435,9 @@ static int dm_update_crtc_state(struct amdgpu_display_manager *dm, goto fail; } + amdgpu_dm_update_link_bpc(drm_new_conn_state, + new_stream->timing.display_color_depth); + /* * TODO: Check VSDB bits to decide whether this should * be enabled or not. -- 2.53.0
