Merge tag 'drm-misc-next-2021-05-17' of git://anongit.freedesktop.org/drm/drm-misc...
[linux-2.6-microblaze.git] / drivers / gpu / drm / i915 / display / intel_ddi_buf_trans.h
1 /* SPDX-License-Identifier: MIT */
2 /*
3  * Copyright © 2020 Intel Corporation
4  */
5
6 #ifndef _INTEL_DDI_BUF_TRANS_H_
7 #define _INTEL_DDI_BUF_TRANS_H_
8
9 #include <linux/types.h>
10
11 struct drm_i915_private;
12 struct intel_encoder;
13 struct intel_crtc_state;
14
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 */
19 };
20
21 struct bxt_ddi_buf_trans {
22         u8 margin;      /* swing value */
23         u8 scale;       /* scale value */
24         u8 enable;      /* scale enable */
25         u8 deemphasis;
26 };
27
28 struct cnl_ddi_buf_trans {
29         u8 dw2_swing_sel;
30         u8 dw7_n_scalar;
31         u8 dw4_cursor_coeff;
32         u8 dw4_post_cursor_2;
33         u8 dw4_post_cursor_1;
34 };
35
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;
40 };
41
42 struct tgl_dkl_phy_ddi_buf_trans {
43         u32 dkl_vswing_control;
44         u32 dkl_preshoot_control;
45         u32 dkl_de_emphasis_control;
46 };
47
48 bool is_hobl_buf_trans(const struct cnl_ddi_buf_trans *table);
49
50 int intel_ddi_hdmi_num_entries(struct intel_encoder *encoder,
51                                const struct intel_crtc_state *crtc_state,
52                                int *default_entry);
53
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,
58                             int *n_entries);
59 const struct ddi_buf_trans *
60 intel_ddi_get_buf_trans_hdmi(struct intel_encoder *encoder,
61                              int *n_entries);
62 const struct ddi_buf_trans *
63 intel_ddi_get_buf_trans_dp(struct intel_encoder *encoder, int *n_entries);
64
65 const struct bxt_ddi_buf_trans *
66 bxt_get_buf_trans(struct intel_encoder *encoder,
67                   const struct intel_crtc_state *crtc_state,
68                   int *n_entries);
69
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,
73                         int *n_entries);
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,
77                       int *n_entries);
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,
81                         int *n_entries);
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,
85                         int *n_entries);
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,
89                         int *n_entries);
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,
93                      int *n_entries);
94
95 const struct cnl_ddi_buf_trans *
96 cnl_get_buf_trans(struct intel_encoder *encoder,
97                   const struct intel_crtc_state *crtc_state,
98                   int *n_entries);
99
100 #endif