OSDN Git Service

drm/dp: add DP 2.0 UHBR link rate and bw code conversions
authorJani Nikula <jani.nikula@intel.com>
Thu, 9 Sep 2021 12:51:53 +0000 (15:51 +0300)
committerJani Nikula <jani.nikula@intel.com>
Mon, 20 Sep 2021 15:43:58 +0000 (18:43 +0300)
The bw code equals link_rate / 0.27 Gbps only for 8b/10b link
rates. Handle DP 2.0 UHBR rates as special cases, though this is not
pretty.

Cc: dri-devel@lists.freedesktop.org
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Acked-by: Maxime Ripard <mripard@kernel.org>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/cab4edda8834d6b4db610fabb5e1f1f18ae33c2c.1631191763.git.jani.nikula@intel.com
drivers/gpu/drm/drm_dp_helper.c

index 6d0f2c4..9b2a296 100644 (file)
@@ -207,15 +207,33 @@ EXPORT_SYMBOL(drm_dp_lttpr_link_train_channel_eq_delay);
 
 u8 drm_dp_link_rate_to_bw_code(int link_rate)
 {
-       /* Spec says link_bw = link_rate / 0.27Gbps */
-       return link_rate / 27000;
+       switch (link_rate) {
+       case 1000000:
+               return DP_LINK_BW_10;
+       case 1350000:
+               return DP_LINK_BW_13_5;
+       case 2000000:
+               return DP_LINK_BW_20;
+       default:
+               /* Spec says link_bw = link_rate / 0.27Gbps */
+               return link_rate / 27000;
+       }
 }
 EXPORT_SYMBOL(drm_dp_link_rate_to_bw_code);
 
 int drm_dp_bw_code_to_link_rate(u8 link_bw)
 {
-       /* Spec says link_rate = link_bw * 0.27Gbps */
-       return link_bw * 27000;
+       switch (link_bw) {
+       case DP_LINK_BW_10:
+               return 1000000;
+       case DP_LINK_BW_13_5:
+               return 1350000;
+       case DP_LINK_BW_20:
+               return 2000000;
+       default:
+               /* Spec says link_rate = link_bw * 0.27Gbps */
+               return link_bw * 27000;
+       }
 }
 EXPORT_SYMBOL(drm_dp_bw_code_to_link_rate);