[PATCH v5 3/3] drm/amd/display: Add support for 'link bpc' property
From: Nicolas Frattaroli
Date: Thu Mar 19 2026 - 08:30:49 EST
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 <nicolas.frattaroli@xxxxxxxxxxxxx>
---
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 65b256a7b6c4..467821cab009 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
@@ -7186,6 +7186,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,
@@ -8983,8 +8991,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;
@@ -11427,6 +11437,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