From 66fee6290fea12d9fcb28777376881f10fdbc16a Mon Sep 17 00:00:00 2001 From: Wyon Bi Date: Tue, 2 Aug 2022 01:13:27 +0000 Subject: [PATCH] drm/bridge: analogix_dp: Support max_link_rate limit Signed-off-by: Wyon Bi Change-Id: I704987e5a20402b451d0d8a0a0d7e0ae1649be25 --- .../drm/bridge/analogix/analogix_dp_core.c | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c index 4d6a8b2194a9..4f6129b1d255 100644 --- a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c +++ b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c @@ -1927,6 +1927,7 @@ static int analogix_dp_dt_parse_pdata(struct analogix_dp_device *dp) struct video_info *video_info = &dp->video_info; struct property *prop; int ret, len, num_lanes; + u32 max_link_rate; switch (dp->plat_data->dev_type) { case RK3288_DP: @@ -1955,6 +1956,25 @@ static int analogix_dp_dt_parse_pdata(struct analogix_dp_device *dp) break; } + if (!of_property_read_u32(dp_node, "max-link-rate", &max_link_rate)) { + switch (max_link_rate) { + case 1620: + case 2700: + case 5400: + break; + default: + dev_err(dp->dev, "invalid max-link-rate value: %d\n", + max_link_rate); + return -EINVAL; + } + + max_link_rate *= 100; + + if (max_link_rate < drm_dp_bw_code_to_link_rate(video_info->max_link_rate)) + video_info->max_link_rate = + drm_dp_link_rate_to_bw_code(max_link_rate); + } + video_info->video_bist_enable = of_property_read_bool(dp_node, "analogix,video-bist-enable");