]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/i915/ddi: add wrapper for calling ->get_buf_trans() hook
authorJani Nikula <jani.nikula@intel.com>
Wed, 15 Apr 2026 11:51:03 +0000 (14:51 +0300)
committerJani Nikula <jani.nikula@intel.com>
Fri, 24 Apr 2026 08:18:07 +0000 (11:18 +0300)
Add intel_ddi_buf_trans_get() wrapper for calling the
encoder->get_buf_trans() hooks, allowing for a centralized place to
e.g. check for VBT overrides for the buf translations.

Cc: MichaƂ Grzelak <michal.grzelak@intel.com>
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
Link: https://patch.msgid.link/20260415115104.1721008-1-jani.nikula@intel.com
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
drivers/gpu/drm/i915/display/intel_cx0_phy.c
drivers/gpu/drm/i915/display/intel_ddi.c
drivers/gpu/drm/i915/display/intel_ddi_buf_trans.c
drivers/gpu/drm/i915/display/intel_ddi_buf_trans.h
drivers/gpu/drm/i915/display/intel_dpio_phy.c
drivers/gpu/drm/i915/display/intel_fdi.c
drivers/gpu/drm/i915/display/intel_lt_phy.c
drivers/gpu/drm/i915/display/intel_snps_phy.c

index 7e59409bbf0134e909dcfae8de48133e81c0e38a..d832e44ef62a2e1b72e52ed46759695d615b8579 100644 (file)
@@ -492,7 +492,7 @@ void intel_cx0_phy_set_signal_levels(struct intel_encoder *encoder,
 
        wakeref = intel_cx0_phy_transaction_begin(encoder);
 
-       trans = encoder->get_buf_trans(encoder, crtc_state, &n_entries);
+       trans = intel_ddi_buf_trans_get(encoder, crtc_state, &n_entries);
        if (drm_WARN_ON_ONCE(display->drm, !trans)) {
                intel_cx0_phy_transaction_end(encoder, wakeref);
                return;
index 178074316a2c5d36f8243be19f8c40bb14cb899b..2681940a5cfe35aba4941dc50b44161bf5920216 100644 (file)
@@ -140,7 +140,7 @@ void hsw_prepare_dp_ddi_buffers(struct intel_encoder *encoder,
        enum port port = encoder->port;
        const struct intel_ddi_buf_trans *trans;
 
-       trans = encoder->get_buf_trans(encoder, crtc_state, &n_entries);
+       trans = intel_ddi_buf_trans_get(encoder, crtc_state, &n_entries);
        if (drm_WARN_ON_ONCE(display->drm, !trans))
                return;
 
@@ -172,7 +172,7 @@ static void hsw_prepare_hdmi_ddi_buffers(struct intel_encoder *encoder,
        enum port port = encoder->port;
        const struct intel_ddi_buf_trans *trans;
 
-       trans = encoder->get_buf_trans(encoder, crtc_state, &n_entries);
+       trans = intel_ddi_buf_trans_get(encoder, crtc_state, &n_entries);
        if (drm_WARN_ON_ONCE(display->drm, !trans))
                return;
 
@@ -1106,7 +1106,7 @@ static void skl_ddi_set_iboost(struct intel_encoder *encoder,
                const struct intel_ddi_buf_trans *trans;
                int n_entries;
 
-               trans = encoder->get_buf_trans(encoder, crtc_state, &n_entries);
+               trans = intel_ddi_buf_trans_get(encoder, crtc_state, &n_entries);
                if (drm_WARN_ON_ONCE(display->drm, !trans))
                        return;
 
@@ -1132,7 +1132,7 @@ static u8 intel_ddi_dp_voltage_max(struct intel_dp *intel_dp,
        struct intel_encoder *encoder = &dp_to_dig_port(intel_dp)->base;
        int n_entries;
 
-       encoder->get_buf_trans(encoder, crtc_state, &n_entries);
+       intel_ddi_buf_trans_get(encoder, crtc_state, &n_entries);
 
        if (drm_WARN_ON(display->drm, n_entries < 1))
                n_entries = 1;
@@ -1175,7 +1175,7 @@ static void icl_ddi_combo_vswing_program(struct intel_encoder *encoder,
        int n_entries, ln;
        u32 val;
 
-       trans = encoder->get_buf_trans(encoder, crtc_state, &n_entries);
+       trans = intel_ddi_buf_trans_get(encoder, crtc_state, &n_entries);
        if (drm_WARN_ON_ONCE(display->drm, !trans))
                return;
 
@@ -1293,7 +1293,7 @@ static void icl_mg_phy_set_signal_levels(struct intel_encoder *encoder,
        if (intel_tc_port_in_tbt_alt_mode(enc_to_dig_port(encoder)))
                return;
 
-       trans = encoder->get_buf_trans(encoder, crtc_state, &n_entries);
+       trans = intel_ddi_buf_trans_get(encoder, crtc_state, &n_entries);
        if (drm_WARN_ON_ONCE(display->drm, !trans))
                return;
 
@@ -1394,7 +1394,7 @@ static void tgl_dkl_phy_set_signal_levels(struct intel_encoder *encoder,
        if (intel_tc_port_in_tbt_alt_mode(enc_to_dig_port(encoder)))
                return;
 
-       trans = encoder->get_buf_trans(encoder, crtc_state, &n_entries);
+       trans = intel_ddi_buf_trans_get(encoder, crtc_state, &n_entries);
        if (drm_WARN_ON_ONCE(display->drm, !trans))
                return;
 
@@ -1511,7 +1511,7 @@ int intel_ddi_level(struct intel_encoder *encoder,
        const struct intel_ddi_buf_trans *trans;
        int level, n_entries;
 
-       trans = encoder->get_buf_trans(encoder, crtc_state, &n_entries);
+       trans = intel_ddi_buf_trans_get(encoder, crtc_state, &n_entries);
        if (drm_WARN_ON_ONCE(display->drm, !trans))
                return 0;
 
index 980ab19868b3d2f9b1c7a2e09b4f4a0cccce1466..4cd1e4d76c7afadb0060146c58fe849e8c1d57b5 100644 (file)
@@ -1852,3 +1852,10 @@ void intel_ddi_buf_trans_init(struct intel_encoder *encoder)
                MISSING_CASE(pdev->device);
        }
 }
+
+const struct intel_ddi_buf_trans *intel_ddi_buf_trans_get(struct intel_encoder *encoder,
+                                                         const struct intel_crtc_state *crtc_state,
+                                                         int *n_entries)
+{
+       return encoder->get_buf_trans(encoder, crtc_state, n_entries);
+}
index cec332090a20f1787500269f008a13c428727a4b..9698697f39177f47dd303b678634d6506dc13147 100644 (file)
@@ -77,5 +77,8 @@ struct intel_ddi_buf_trans {
 bool is_hobl_buf_trans(const struct intel_ddi_buf_trans *table);
 
 void intel_ddi_buf_trans_init(struct intel_encoder *encoder);
+const struct intel_ddi_buf_trans *
+intel_ddi_buf_trans_get(struct intel_encoder *encoder,
+                       const struct intel_crtc_state *crtc_state, int *n_entries);
 
 #endif
index 0e16132d09238727427a9e596d00257d24397071..68802b652316abbd55a18603802411e4fa7be8ac 100644 (file)
@@ -301,7 +301,7 @@ void bxt_dpio_phy_set_signal_levels(struct intel_encoder *encoder,
        enum dpio_phy phy;
        int lane, n_entries;
 
-       trans = encoder->get_buf_trans(encoder, crtc_state, &n_entries);
+       trans = intel_ddi_buf_trans_get(encoder, crtc_state, &n_entries);
        if (drm_WARN_ON_ONCE(display->drm, !trans))
                return;
 
index 24ce8a7842c7de234bdd505ee95abfeac74e4695..917f020650af2d4a7cf514527c014678dae5cf6e 100644 (file)
@@ -11,6 +11,7 @@
 #include "intel_atomic.h"
 #include "intel_crtc.h"
 #include "intel_ddi.h"
+#include "intel_ddi_buf_trans.h"
 #include "intel_de.h"
 #include "intel_display_regs.h"
 #include "intel_display_types.h"
@@ -852,7 +853,7 @@ void hsw_fdi_link_train(struct intel_encoder *encoder,
        u32 temp, i, rx_ctl_val;
        int n_entries;
 
-       encoder->get_buf_trans(encoder, crtc_state, &n_entries);
+       intel_ddi_buf_trans_get(encoder, crtc_state, &n_entries);
 
        hsw_prepare_dp_ddi_buffers(encoder, crtc_state);
 
index 657ad5cb0eff92c72061c4e4b847cf278a9ffa68..e2f9e1a2745f8db3fcf977f95bbc0217d426b54b 100644 (file)
@@ -2135,7 +2135,7 @@ void intel_lt_phy_set_signal_levels(struct intel_encoder *encoder,
 
        wakeref = intel_lt_phy_transaction_begin(encoder);
 
-       trans = encoder->get_buf_trans(encoder, crtc_state, &n_entries);
+       trans = intel_ddi_buf_trans_get(encoder, crtc_state, &n_entries);
        if (drm_WARN_ON_ONCE(display->drm, !trans)) {
                intel_lt_phy_transaction_end(encoder, wakeref);
                return;
index 295030742294be3d18cedc1897032764a48b895a..5e5dde8f3e3a28b4160dd56d770b0b18b5e5ee15 100644 (file)
@@ -72,7 +72,7 @@ void intel_snps_phy_set_signal_levels(struct intel_encoder *encoder,
        enum phy phy = intel_encoder_to_phy(encoder);
        int n_entries, ln;
 
-       trans = encoder->get_buf_trans(encoder, crtc_state, &n_entries);
+       trans = intel_ddi_buf_trans_get(encoder, crtc_state, &n_entries);
        if (drm_WARN_ON_ONCE(display->drm, !trans))
                return;