Commit c40a253b authored by Ville Syrjälä's avatar Ville Syrjälä

drm/i915: Introduce encoder->get_buf_trans()

Convert the get_buf_trans() functions into an encoder vfunc.
Allows us to get rid of bunch of platform if-ladders.

v2: Handle adl-p
Reviewed-by: default avatarJani Nikula <jani.nikula@intel.com>
Signed-off-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20210608073603.2408-10-ville.syrjala@linux.intel.com
parent d2c496f7
...@@ -38,6 +38,7 @@ ...@@ -38,6 +38,7 @@
#include "intel_crt.h" #include "intel_crt.h"
#include "intel_crtc.h" #include "intel_crtc.h"
#include "intel_ddi.h" #include "intel_ddi.h"
#include "intel_ddi_buf_trans.h"
#include "intel_de.h" #include "intel_de.h"
#include "intel_display_types.h" #include "intel_display_types.h"
#include "intel_fdi.h" #include "intel_fdi.h"
...@@ -1081,6 +1082,8 @@ void intel_crt_init(struct drm_i915_private *dev_priv) ...@@ -1081,6 +1082,8 @@ void intel_crt_init(struct drm_i915_private *dev_priv)
crt->base.enable_clock = hsw_ddi_enable_clock; crt->base.enable_clock = hsw_ddi_enable_clock;
crt->base.disable_clock = hsw_ddi_disable_clock; crt->base.disable_clock = hsw_ddi_disable_clock;
crt->base.is_clock_enabled = hsw_ddi_is_clock_enabled; crt->base.is_clock_enabled = hsw_ddi_is_clock_enabled;
intel_ddi_buf_trans_init(&crt->base);
} else { } else {
if (HAS_PCH_SPLIT(dev_priv)) { if (HAS_PCH_SPLIT(dev_priv)) {
crt->base.compute_config = pch_crt_compute_config; crt->base.compute_config = pch_crt_compute_config;
......
...@@ -104,8 +104,7 @@ void hsw_prepare_dp_ddi_buffers(struct intel_encoder *encoder, ...@@ -104,8 +104,7 @@ void hsw_prepare_dp_ddi_buffers(struct intel_encoder *encoder,
enum port port = encoder->port; enum port port = encoder->port;
const struct intel_ddi_buf_trans *ddi_translations; const struct intel_ddi_buf_trans *ddi_translations;
ddi_translations = hsw_get_buf_trans(encoder, crtc_state, &n_entries); ddi_translations = encoder->get_buf_trans(encoder, crtc_state, &n_entries);
if (drm_WARN_ON_ONCE(&dev_priv->drm, !ddi_translations)) if (drm_WARN_ON_ONCE(&dev_priv->drm, !ddi_translations))
return; return;
...@@ -137,8 +136,7 @@ static void hsw_prepare_hdmi_ddi_buffers(struct intel_encoder *encoder, ...@@ -137,8 +136,7 @@ static void hsw_prepare_hdmi_ddi_buffers(struct intel_encoder *encoder,
enum port port = encoder->port; enum port port = encoder->port;
const struct intel_ddi_buf_trans *ddi_translations; const struct intel_ddi_buf_trans *ddi_translations;
ddi_translations = hsw_get_buf_trans(encoder, crtc_state, &n_entries); ddi_translations = encoder->get_buf_trans(encoder, crtc_state, &n_entries);
if (drm_WARN_ON_ONCE(&dev_priv->drm, !ddi_translations)) if (drm_WARN_ON_ONCE(&dev_priv->drm, !ddi_translations))
return; return;
if (drm_WARN_ON_ONCE(&dev_priv->drm, level >= n_entries)) if (drm_WARN_ON_ONCE(&dev_priv->drm, level >= n_entries))
...@@ -947,8 +945,7 @@ static void skl_ddi_set_iboost(struct intel_encoder *encoder, ...@@ -947,8 +945,7 @@ static void skl_ddi_set_iboost(struct intel_encoder *encoder,
const struct intel_ddi_buf_trans *ddi_translations; const struct intel_ddi_buf_trans *ddi_translations;
int n_entries; int n_entries;
ddi_translations = hsw_get_buf_trans(encoder, crtc_state, &n_entries); ddi_translations = encoder->get_buf_trans(encoder, crtc_state, &n_entries);
if (drm_WARN_ON_ONCE(&dev_priv->drm, !ddi_translations)) if (drm_WARN_ON_ONCE(&dev_priv->drm, !ddi_translations))
return; return;
if (drm_WARN_ON_ONCE(&dev_priv->drm, level >= n_entries)) if (drm_WARN_ON_ONCE(&dev_priv->drm, level >= n_entries))
...@@ -978,7 +975,7 @@ static void bxt_ddi_vswing_sequence(struct intel_encoder *encoder, ...@@ -978,7 +975,7 @@ static void bxt_ddi_vswing_sequence(struct intel_encoder *encoder,
enum port port = encoder->port; enum port port = encoder->port;
int n_entries; int n_entries;
ddi_translations = bxt_get_buf_trans(encoder, crtc_state, &n_entries); ddi_translations = encoder->get_buf_trans(encoder, crtc_state, &n_entries);
if (drm_WARN_ON_ONCE(&dev_priv->drm, !ddi_translations)) if (drm_WARN_ON_ONCE(&dev_priv->drm, !ddi_translations))
return; return;
if (drm_WARN_ON_ONCE(&dev_priv->drm, level >= n_entries)) if (drm_WARN_ON_ONCE(&dev_priv->drm, level >= n_entries))
...@@ -996,33 +993,9 @@ static u8 intel_ddi_dp_voltage_max(struct intel_dp *intel_dp, ...@@ -996,33 +993,9 @@ static u8 intel_ddi_dp_voltage_max(struct intel_dp *intel_dp,
{ {
struct intel_encoder *encoder = &dp_to_dig_port(intel_dp)->base; struct intel_encoder *encoder = &dp_to_dig_port(intel_dp)->base;
struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
enum port port = encoder->port;
enum phy phy = intel_port_to_phy(dev_priv, port);
int n_entries; int n_entries;
if (DISPLAY_VER(dev_priv) >= 12) { encoder->get_buf_trans(encoder, crtc_state, &n_entries);
if (intel_phy_is_combo(dev_priv, phy))
tgl_get_combo_buf_trans(encoder, crtc_state, &n_entries);
else if (IS_ALDERLAKE_P(dev_priv))
adlp_get_dkl_buf_trans(encoder, crtc_state, &n_entries);
else
tgl_get_dkl_buf_trans(encoder, crtc_state, &n_entries);
} else if (DISPLAY_VER(dev_priv) == 11) {
if (IS_PLATFORM(dev_priv, INTEL_JASPERLAKE))
jsl_get_combo_buf_trans(encoder, crtc_state, &n_entries);
else if (IS_PLATFORM(dev_priv, INTEL_ELKHARTLAKE))
ehl_get_combo_buf_trans(encoder, crtc_state, &n_entries);
else if (intel_phy_is_combo(dev_priv, phy))
icl_get_combo_buf_trans(encoder, crtc_state, &n_entries);
else
icl_get_mg_buf_trans(encoder, crtc_state, &n_entries);
} else if (IS_CANNONLAKE(dev_priv)) {
cnl_get_buf_trans(encoder, crtc_state, &n_entries);
} else if (IS_GEMINILAKE(dev_priv) || IS_BROXTON(dev_priv)) {
bxt_get_buf_trans(encoder, crtc_state, &n_entries);
} else {
hsw_get_buf_trans(encoder, crtc_state, &n_entries);
}
if (drm_WARN_ON(&dev_priv->drm, n_entries < 1)) if (drm_WARN_ON(&dev_priv->drm, n_entries < 1))
n_entries = 1; n_entries = 1;
...@@ -1054,8 +1027,7 @@ static void cnl_ddi_vswing_program(struct intel_encoder *encoder, ...@@ -1054,8 +1027,7 @@ static void cnl_ddi_vswing_program(struct intel_encoder *encoder,
int n_entries, ln; int n_entries, ln;
u32 val; u32 val;
ddi_translations = cnl_get_buf_trans(encoder, crtc_state, &n_entries); ddi_translations = encoder->get_buf_trans(encoder, crtc_state, &n_entries);
if (drm_WARN_ON_ONCE(&dev_priv->drm, !ddi_translations)) if (drm_WARN_ON_ONCE(&dev_priv->drm, !ddi_translations))
return; return;
if (drm_WARN_ON_ONCE(&dev_priv->drm, level >= n_entries)) if (drm_WARN_ON_ONCE(&dev_priv->drm, level >= n_entries))
...@@ -1175,15 +1147,7 @@ static void icl_ddi_combo_vswing_program(struct intel_encoder *encoder, ...@@ -1175,15 +1147,7 @@ static void icl_ddi_combo_vswing_program(struct intel_encoder *encoder,
int n_entries, ln; int n_entries, ln;
u32 val; u32 val;
if (DISPLAY_VER(dev_priv) >= 12) ddi_translations = encoder->get_buf_trans(encoder, crtc_state, &n_entries);
ddi_translations = tgl_get_combo_buf_trans(encoder, crtc_state, &n_entries);
else if (IS_PLATFORM(dev_priv, INTEL_JASPERLAKE))
ddi_translations = jsl_get_combo_buf_trans(encoder, crtc_state, &n_entries);
else if (IS_PLATFORM(dev_priv, INTEL_ELKHARTLAKE))
ddi_translations = ehl_get_combo_buf_trans(encoder, crtc_state, &n_entries);
else
ddi_translations = icl_get_combo_buf_trans(encoder, crtc_state, &n_entries);
if (drm_WARN_ON_ONCE(&dev_priv->drm, !ddi_translations)) if (drm_WARN_ON_ONCE(&dev_priv->drm, !ddi_translations))
return; return;
if (drm_WARN_ON_ONCE(&dev_priv->drm, level >= n_entries)) if (drm_WARN_ON_ONCE(&dev_priv->drm, level >= n_entries))
...@@ -1310,8 +1274,7 @@ static void icl_mg_phy_ddi_vswing_sequence(struct intel_encoder *encoder, ...@@ -1310,8 +1274,7 @@ static void icl_mg_phy_ddi_vswing_sequence(struct intel_encoder *encoder,
if (enc_to_dig_port(encoder)->tc_mode == TC_PORT_TBT_ALT) if (enc_to_dig_port(encoder)->tc_mode == TC_PORT_TBT_ALT)
return; return;
ddi_translations = icl_get_mg_buf_trans(encoder, crtc_state, &n_entries); ddi_translations = encoder->get_buf_trans(encoder, crtc_state, &n_entries);
if (drm_WARN_ON_ONCE(&dev_priv->drm, !ddi_translations)) if (drm_WARN_ON_ONCE(&dev_priv->drm, !ddi_translations))
return; return;
if (drm_WARN_ON_ONCE(&dev_priv->drm, level >= n_entries)) if (drm_WARN_ON_ONCE(&dev_priv->drm, level >= n_entries))
...@@ -1448,11 +1411,7 @@ tgl_dkl_phy_ddi_vswing_sequence(struct intel_encoder *encoder, ...@@ -1448,11 +1411,7 @@ tgl_dkl_phy_ddi_vswing_sequence(struct intel_encoder *encoder,
if (enc_to_dig_port(encoder)->tc_mode == TC_PORT_TBT_ALT) if (enc_to_dig_port(encoder)->tc_mode == TC_PORT_TBT_ALT)
return; return;
if (IS_ALDERLAKE_P(dev_priv)) ddi_translations = encoder->get_buf_trans(encoder, crtc_state, &n_entries);
ddi_translations = adlp_get_dkl_buf_trans(encoder, crtc_state, &n_entries);
else
ddi_translations = tgl_get_dkl_buf_trans(encoder, crtc_state, &n_entries);
if (drm_WARN_ON_ONCE(&dev_priv->drm, !ddi_translations)) if (drm_WARN_ON_ONCE(&dev_priv->drm, !ddi_translations))
return; return;
if (drm_WARN_ON_ONCE(&dev_priv->drm, level >= n_entries)) if (drm_WARN_ON_ONCE(&dev_priv->drm, level >= n_entries))
...@@ -4693,6 +4652,8 @@ void intel_ddi_init(struct drm_i915_private *dev_priv, enum port port) ...@@ -4693,6 +4652,8 @@ void intel_ddi_init(struct drm_i915_private *dev_priv, enum port port)
encoder->get_config = hsw_ddi_get_config; encoder->get_config = hsw_ddi_get_config;
} }
intel_ddi_buf_trans_init(encoder);
if (DISPLAY_VER(dev_priv) >= 13) if (DISPLAY_VER(dev_priv) >= 13)
encoder->hpd_pin = xelpd_hpd_pin(dev_priv, port); encoder->hpd_pin = xelpd_hpd_pin(dev_priv, port);
else if (IS_DG1(dev_priv)) else if (IS_DG1(dev_priv))
......
...@@ -1246,7 +1246,7 @@ hsw_get_buf_trans_hdmi(struct intel_encoder *encoder, ...@@ -1246,7 +1246,7 @@ hsw_get_buf_trans_hdmi(struct intel_encoder *encoder,
return NULL; return NULL;
} }
const struct intel_ddi_buf_trans * static const struct intel_ddi_buf_trans *
hsw_get_buf_trans(struct intel_encoder *encoder, hsw_get_buf_trans(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state, const struct intel_crtc_state *crtc_state,
int *n_entries) int *n_entries)
...@@ -1286,7 +1286,7 @@ bxt_get_buf_trans_hdmi(struct intel_encoder *encoder, int *n_entries) ...@@ -1286,7 +1286,7 @@ bxt_get_buf_trans_hdmi(struct intel_encoder *encoder, int *n_entries)
return intel_get_buf_trans(&bxt_ddi_translations_hdmi, n_entries); return intel_get_buf_trans(&bxt_ddi_translations_hdmi, n_entries);
} }
const struct intel_ddi_buf_trans * static const struct intel_ddi_buf_trans *
bxt_get_buf_trans(struct intel_encoder *encoder, bxt_get_buf_trans(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state, const struct intel_crtc_state *crtc_state,
int *n_entries) int *n_entries)
...@@ -1368,7 +1368,7 @@ cnl_get_buf_trans_edp(struct intel_encoder *encoder, int *n_entries) ...@@ -1368,7 +1368,7 @@ cnl_get_buf_trans_edp(struct intel_encoder *encoder, int *n_entries)
} }
} }
const struct intel_ddi_buf_trans * static const struct intel_ddi_buf_trans *
cnl_get_buf_trans(struct intel_encoder *encoder, cnl_get_buf_trans(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state, const struct intel_crtc_state *crtc_state,
int *n_entries) int *n_entries)
...@@ -1422,7 +1422,7 @@ icl_get_combo_buf_trans_edp(struct intel_encoder *encoder, ...@@ -1422,7 +1422,7 @@ icl_get_combo_buf_trans_edp(struct intel_encoder *encoder,
return icl_get_combo_buf_trans_dp(encoder, crtc_state, n_entries); return icl_get_combo_buf_trans_dp(encoder, crtc_state, n_entries);
} }
const struct intel_ddi_buf_trans * static const struct intel_ddi_buf_trans *
icl_get_combo_buf_trans(struct intel_encoder *encoder, icl_get_combo_buf_trans(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state, const struct intel_crtc_state *crtc_state,
int *n_entries) int *n_entries)
...@@ -1458,7 +1458,7 @@ icl_get_mg_buf_trans_dp(struct intel_encoder *encoder, ...@@ -1458,7 +1458,7 @@ icl_get_mg_buf_trans_dp(struct intel_encoder *encoder,
} }
} }
const struct intel_ddi_buf_trans * static const struct intel_ddi_buf_trans *
icl_get_mg_buf_trans(struct intel_encoder *encoder, icl_get_mg_buf_trans(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state, const struct intel_crtc_state *crtc_state,
int *n_entries) int *n_entries)
...@@ -1502,7 +1502,7 @@ ehl_get_combo_buf_trans_edp(struct intel_encoder *encoder, ...@@ -1502,7 +1502,7 @@ ehl_get_combo_buf_trans_edp(struct intel_encoder *encoder,
return ehl_get_combo_buf_trans_dp(encoder, crtc_state, n_entries); return ehl_get_combo_buf_trans_dp(encoder, crtc_state, n_entries);
} }
const struct intel_ddi_buf_trans * static const struct intel_ddi_buf_trans *
ehl_get_combo_buf_trans(struct intel_encoder *encoder, ehl_get_combo_buf_trans(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state, const struct intel_crtc_state *crtc_state,
int *n_entries) int *n_entries)
...@@ -1553,7 +1553,7 @@ jsl_get_combo_buf_trans_edp(struct intel_encoder *encoder, ...@@ -1553,7 +1553,7 @@ jsl_get_combo_buf_trans_edp(struct intel_encoder *encoder,
return jsl_get_combo_buf_trans_dp(encoder, crtc_state, n_entries); return jsl_get_combo_buf_trans_dp(encoder, crtc_state, n_entries);
} }
const struct intel_ddi_buf_trans * static const struct intel_ddi_buf_trans *
jsl_get_combo_buf_trans(struct intel_encoder *encoder, jsl_get_combo_buf_trans(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state, const struct intel_crtc_state *crtc_state,
int *n_entries) int *n_entries)
...@@ -1626,7 +1626,7 @@ tgl_get_combo_buf_trans_edp(struct intel_encoder *encoder, ...@@ -1626,7 +1626,7 @@ tgl_get_combo_buf_trans_edp(struct intel_encoder *encoder,
return tgl_get_combo_buf_trans_dp(encoder, crtc_state, n_entries); return tgl_get_combo_buf_trans_dp(encoder, crtc_state, n_entries);
} }
const struct intel_ddi_buf_trans * static const struct intel_ddi_buf_trans *
tgl_get_combo_buf_trans(struct intel_encoder *encoder, tgl_get_combo_buf_trans(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state, const struct intel_crtc_state *crtc_state,
int *n_entries) int *n_entries)
...@@ -1662,7 +1662,7 @@ tgl_get_dkl_buf_trans_dp(struct intel_encoder *encoder, ...@@ -1662,7 +1662,7 @@ tgl_get_dkl_buf_trans_dp(struct intel_encoder *encoder,
} }
} }
const struct intel_ddi_buf_trans * static const struct intel_ddi_buf_trans *
tgl_get_dkl_buf_trans(struct intel_encoder *encoder, tgl_get_dkl_buf_trans(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state, const struct intel_crtc_state *crtc_state,
int *n_entries) int *n_entries)
...@@ -1687,7 +1687,7 @@ adlp_get_dkl_buf_trans_dp(struct intel_encoder *encoder, ...@@ -1687,7 +1687,7 @@ adlp_get_dkl_buf_trans_dp(struct intel_encoder *encoder,
} }
} }
const struct intel_ddi_buf_trans * static const struct intel_ddi_buf_trans *
adlp_get_dkl_buf_trans(struct intel_encoder *encoder, adlp_get_dkl_buf_trans(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state, const struct intel_crtc_state *crtc_state,
int *n_entries) int *n_entries)
...@@ -1703,28 +1703,10 @@ int intel_ddi_hdmi_num_entries(struct intel_encoder *encoder, ...@@ -1703,28 +1703,10 @@ int intel_ddi_hdmi_num_entries(struct intel_encoder *encoder,
int *default_entry) int *default_entry)
{ {
struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
enum phy phy = intel_port_to_phy(dev_priv, encoder->port); const struct intel_ddi_buf_trans *ddi_translations;
const struct intel_ddi_buf_trans *ddi_translations = NULL;
int n_entries; int n_entries;
if (DISPLAY_VER(dev_priv) >= 12) { ddi_translations = encoder->get_buf_trans(encoder, crtc_state, &n_entries);
if (intel_phy_is_combo(dev_priv, phy))
ddi_translations = tgl_get_combo_buf_trans_hdmi(encoder, crtc_state, &n_entries);
else
ddi_translations = tgl_get_dkl_buf_trans_hdmi(encoder, crtc_state, &n_entries);
} else if (DISPLAY_VER(dev_priv) == 11) {
if (intel_phy_is_combo(dev_priv, phy))
ddi_translations = icl_get_combo_buf_trans_hdmi(encoder, crtc_state, &n_entries);
else
ddi_translations = icl_get_mg_buf_trans_hdmi(encoder, crtc_state, &n_entries);
} else if (IS_CANNONLAKE(dev_priv)) {
ddi_translations = cnl_get_buf_trans_hdmi(encoder, &n_entries);
} else if (IS_GEMINILAKE(dev_priv) || IS_BROXTON(dev_priv)) {
ddi_translations = bxt_get_buf_trans_hdmi(encoder, &n_entries);
} else if (DISPLAY_VER(dev_priv) == 9 ||
IS_BROADWELL(dev_priv) || IS_HASWELL(dev_priv)) {
ddi_translations = hsw_get_buf_trans_hdmi(encoder, &n_entries);
}
if (drm_WARN_ON(&dev_priv->drm, !ddi_translations)) { if (drm_WARN_ON(&dev_priv->drm, !ddi_translations)) {
*default_entry = 0; *default_entry = 0;
...@@ -1735,3 +1717,36 @@ int intel_ddi_hdmi_num_entries(struct intel_encoder *encoder, ...@@ -1735,3 +1717,36 @@ int intel_ddi_hdmi_num_entries(struct intel_encoder *encoder,
return n_entries; return n_entries;
} }
void intel_ddi_buf_trans_init(struct intel_encoder *encoder)
{
struct drm_i915_private *i915 = to_i915(encoder->base.dev);
enum phy phy = intel_port_to_phy(i915, encoder->port);
if (IS_ALDERLAKE_P(i915)) {
if (intel_phy_is_combo(i915, phy))
encoder->get_buf_trans = tgl_get_combo_buf_trans;
else
encoder->get_buf_trans = adlp_get_dkl_buf_trans;
} else if (DISPLAY_VER(i915) >= 12) {
if (intel_phy_is_combo(i915, phy))
encoder->get_buf_trans = tgl_get_combo_buf_trans;
else
encoder->get_buf_trans = tgl_get_dkl_buf_trans;
} else if (DISPLAY_VER(i915) == 11) {
if (IS_PLATFORM(i915, INTEL_JASPERLAKE))
encoder->get_buf_trans = jsl_get_combo_buf_trans;
else if (IS_PLATFORM(i915, INTEL_ELKHARTLAKE))
encoder->get_buf_trans = ehl_get_combo_buf_trans;
else if (intel_phy_is_combo(i915, phy))
encoder->get_buf_trans = icl_get_combo_buf_trans;
else
encoder->get_buf_trans = icl_get_mg_buf_trans;
} else if (IS_CANNONLAKE(i915)) {
encoder->get_buf_trans = cnl_get_buf_trans;
} else if (IS_GEMINILAKE(i915) || IS_BROXTON(i915)) {
encoder->get_buf_trans = bxt_get_buf_trans;
} else {
encoder->get_buf_trans = hsw_get_buf_trans;
}
}
...@@ -65,48 +65,6 @@ int intel_ddi_hdmi_num_entries(struct intel_encoder *encoder, ...@@ -65,48 +65,6 @@ int intel_ddi_hdmi_num_entries(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state, const struct intel_crtc_state *crtc_state,
int *default_entry); int *default_entry);
const struct intel_ddi_buf_trans * void intel_ddi_buf_trans_init(struct intel_encoder *encoder);
hsw_get_buf_trans(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state,
int *n_entries);
const struct intel_ddi_buf_trans *
bxt_get_buf_trans(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state,
int *n_entries);
const struct intel_ddi_buf_trans *
adlp_get_dkl_buf_trans(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state,
int *n_entries);
const struct intel_ddi_buf_trans *
tgl_get_combo_buf_trans(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state,
int *n_entries);
const struct intel_ddi_buf_trans *
tgl_get_dkl_buf_trans(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state,
int *n_entries);
const struct intel_ddi_buf_trans *
jsl_get_combo_buf_trans(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state,
int *n_entries);
const struct intel_ddi_buf_trans *
ehl_get_combo_buf_trans(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state,
int *n_entries);
const struct intel_ddi_buf_trans *
icl_get_combo_buf_trans(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state,
int *n_entries);
const struct intel_ddi_buf_trans *
icl_get_mg_buf_trans(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state,
int *n_entries);
const struct intel_ddi_buf_trans *
cnl_get_buf_trans(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state,
int *n_entries);
#endif #endif
...@@ -48,6 +48,7 @@ ...@@ -48,6 +48,7 @@
struct drm_printer; struct drm_printer;
struct __intel_global_objs_state; struct __intel_global_objs_state;
struct intel_ddi_buf_trans;
/* /*
* Display related stuff * Display related stuff
...@@ -263,6 +264,9 @@ struct intel_encoder { ...@@ -263,6 +264,9 @@ struct intel_encoder {
* Returns whether the port clock is enabled or not. * Returns whether the port clock is enabled or not.
*/ */
bool (*is_clock_enabled)(struct intel_encoder *encoder); bool (*is_clock_enabled)(struct intel_encoder *encoder);
const struct intel_ddi_buf_trans *(*get_buf_trans)(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state,
int *n_entries);
enum hpd_pin hpd_pin; enum hpd_pin hpd_pin;
enum intel_display_power_domain power_domain; enum intel_display_power_domain power_domain;
/* for communication with audio component; protected by av_mutex */ /* for communication with audio component; protected by av_mutex */
......
...@@ -4,7 +4,6 @@ ...@@ -4,7 +4,6 @@
*/ */
#include "intel_atomic.h" #include "intel_atomic.h"
#include "intel_ddi.h" #include "intel_ddi.h"
#include "intel_ddi_buf_trans.h"
#include "intel_de.h" #include "intel_de.h"
#include "intel_display_types.h" #include "intel_display_types.h"
#include "intel_fdi.h" #include "intel_fdi.h"
...@@ -569,7 +568,7 @@ void hsw_fdi_link_train(struct intel_encoder *encoder, ...@@ -569,7 +568,7 @@ void hsw_fdi_link_train(struct intel_encoder *encoder,
u32 temp, i, rx_ctl_val; u32 temp, i, rx_ctl_val;
int n_entries; int n_entries;
hsw_get_buf_trans(encoder, crtc_state, &n_entries); encoder->get_buf_trans(encoder, crtc_state, &n_entries);
hsw_prepare_dp_ddi_buffers(encoder, crtc_state); hsw_prepare_dp_ddi_buffers(encoder, crtc_state);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment