drm/dp: add helper for extracting adjust 128b/132b TX FFE preset
authorJani Nikula <jani.nikula@intel.com>
Thu, 9 Sep 2021 12:51:56 +0000 (15:51 +0300)
committerJani Nikula <jani.nikula@intel.com>
Mon, 20 Sep 2021 15:45:35 +0000 (18:45 +0300)
The DP 2.0 128b/132b channel coding uses TX FFE presets instead of
vswing and pre-emphasis.

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/4ba129c51aeb01a5f210de7026abe704a554a178.1631191763.git.jani.nikula@intel.com
drivers/gpu/drm/drm_dp_helper.c
include/drm/drm_dp_helper.h

index 2e74b02ed96bed17b7275e46cdf887010b050963..4d0d1e8e51fa77e530821ec7a90114093a9b4e7c 100644 (file)
@@ -130,6 +130,20 @@ u8 drm_dp_get_adjust_request_pre_emphasis(const u8 link_status[DP_LINK_STATUS_SI
 }
 EXPORT_SYMBOL(drm_dp_get_adjust_request_pre_emphasis);
 
+/* DP 2.0 128b/132b */
+u8 drm_dp_get_adjust_tx_ffe_preset(const u8 link_status[DP_LINK_STATUS_SIZE],
+                                  int lane)
+{
+       int i = DP_ADJUST_REQUEST_LANE0_1 + (lane >> 1);
+       int s = ((lane & 1) ?
+                DP_ADJUST_TX_FFE_PRESET_LANE1_SHIFT :
+                DP_ADJUST_TX_FFE_PRESET_LANE0_SHIFT);
+       u8 l = dp_link_status(link_status, i);
+
+       return (l >> s) & 0xf;
+}
+EXPORT_SYMBOL(drm_dp_get_adjust_tx_ffe_preset);
+
 u8 drm_dp_get_adjust_request_post_cursor(const u8 link_status[DP_LINK_STATUS_SIZE],
                                         unsigned int lane)
 {
index f3a61341011dbff7bb5b71ee1d5a1a5c6aba7299..3ee0b3ffb8a5142d22219fd33c1af055f4393465 100644 (file)
@@ -1494,6 +1494,8 @@ u8 drm_dp_get_adjust_request_voltage(const u8 link_status[DP_LINK_STATUS_SIZE],
                                     int lane);
 u8 drm_dp_get_adjust_request_pre_emphasis(const u8 link_status[DP_LINK_STATUS_SIZE],
                                          int lane);
+u8 drm_dp_get_adjust_tx_ffe_preset(const u8 link_status[DP_LINK_STATUS_SIZE],
+                                  int lane);
 u8 drm_dp_get_adjust_request_post_cursor(const u8 link_status[DP_LINK_STATUS_SIZE],
                                         unsigned int lane);