1 /* SPDX-License-Identifier: MIT */
3 * Copyright © 2020 Intel Corporation
6 #ifndef _INTEL_DDI_BUF_TRANS_H_
7 #define _INTEL_DDI_BUF_TRANS_H_
9 #include <linux/types.h>
11 struct drm_i915_private;
13 struct intel_crtc_state;
15 struct ddi_buf_trans {
16 u32 trans1; /* balance leg enable, de-emph level */
17 u32 trans2; /* vref sel, vswing */
18 u8 i_boost; /* SKL: I_boost; valid: 0x0, 0x1, 0x3, 0x7 */
21 struct bxt_ddi_buf_trans {
22 u8 margin; /* swing value */
23 u8 scale; /* scale value */
24 u8 enable; /* scale enable */
28 struct cnl_ddi_buf_trans {
36 struct icl_mg_phy_ddi_buf_trans {
37 u32 cri_txdeemph_override_11_6;
38 u32 cri_txdeemph_override_5_0;
39 u32 cri_txdeemph_override_17_12;
42 struct tgl_dkl_phy_ddi_buf_trans {
43 u32 dkl_vswing_control;
44 u32 dkl_preshoot_control;
45 u32 dkl_de_emphasis_control;
48 bool is_hobl_buf_trans(const struct cnl_ddi_buf_trans *table);
50 int intel_ddi_hdmi_num_entries(struct intel_encoder *encoder,
51 const struct intel_crtc_state *crtc_state,
54 const struct ddi_buf_trans *
55 intel_ddi_get_buf_trans_edp(struct intel_encoder *encoder, int *n_entries);
56 const struct ddi_buf_trans *
57 intel_ddi_get_buf_trans_fdi(struct drm_i915_private *dev_priv,
59 const struct ddi_buf_trans *
60 intel_ddi_get_buf_trans_hdmi(struct intel_encoder *encoder,
62 const struct ddi_buf_trans *
63 intel_ddi_get_buf_trans_dp(struct intel_encoder *encoder, int *n_entries);
65 const struct bxt_ddi_buf_trans *
66 bxt_get_buf_trans(struct intel_encoder *encoder,
67 const struct intel_crtc_state *crtc_state,
70 const struct cnl_ddi_buf_trans *
71 tgl_get_combo_buf_trans(struct intel_encoder *encoder,
72 const struct intel_crtc_state *crtc_state,
74 const struct tgl_dkl_phy_ddi_buf_trans *
75 tgl_get_dkl_buf_trans(struct intel_encoder *encoder,
76 const struct intel_crtc_state *crtc_state,
78 const struct cnl_ddi_buf_trans *
79 jsl_get_combo_buf_trans(struct intel_encoder *encoder,
80 const struct intel_crtc_state *crtc_state,
82 const struct cnl_ddi_buf_trans *
83 ehl_get_combo_buf_trans(struct intel_encoder *encoder,
84 const struct intel_crtc_state *crtc_state,
86 const struct cnl_ddi_buf_trans *
87 icl_get_combo_buf_trans(struct intel_encoder *encoder,
88 const struct intel_crtc_state *crtc_state,
90 const struct icl_mg_phy_ddi_buf_trans *
91 icl_get_mg_buf_trans(struct intel_encoder *encoder,
92 const struct intel_crtc_state *crtc_state,
95 const struct cnl_ddi_buf_trans *
96 cnl_get_buf_trans(struct intel_encoder *encoder,
97 const struct intel_crtc_state *crtc_state,