drm/i915/ddi: add wrapper for calling ->get_buf_trans() hook

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>
This commit is contained in:
Jani Nikula 2026-04-15 14:51:03 +03:00
parent 4fe8f83264
commit 07095bb7ea
8 changed files with 24 additions and 13 deletions

View 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;

View 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;

View 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);
}

View 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

View 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;

View 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);

View 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;

View 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;