hc
2023-12-11 d2ccde1c8e90d38cee87a1b0309ad2827f3fd30d
kernel/drivers/gpu/drm/amd/display/dc/dce/dce_clock_source.h
....@@ -55,7 +55,66 @@
5555 CS_SF(PHYPLLA_PIXCLK_RESYNC_CNTL, PHYPLLA_DCCG_DEEP_COLOR_CNTL, mask_sh),\
5656 CS_SF(PHYPLLA_PIXCLK_RESYNC_CNTL, PHYPLLA_PIXCLK_DOUBLE_RATE_ENABLE, mask_sh)
5757
58
-#if defined(CONFIG_DRM_AMD_DC_DCN1_0)
58
+#define CS_COMMON_REG_LIST_DCN2_0(index, pllid) \
59
+ SRI(PIXCLK_RESYNC_CNTL, PHYPLL, pllid),\
60
+ SRII(PHASE, DP_DTO, 0),\
61
+ SRII(PHASE, DP_DTO, 1),\
62
+ SRII(PHASE, DP_DTO, 2),\
63
+ SRII(PHASE, DP_DTO, 3),\
64
+ SRII(PHASE, DP_DTO, 4),\
65
+ SRII(PHASE, DP_DTO, 5),\
66
+ SRII(MODULO, DP_DTO, 0),\
67
+ SRII(MODULO, DP_DTO, 1),\
68
+ SRII(MODULO, DP_DTO, 2),\
69
+ SRII(MODULO, DP_DTO, 3),\
70
+ SRII(MODULO, DP_DTO, 4),\
71
+ SRII(MODULO, DP_DTO, 5),\
72
+ SRII(PIXEL_RATE_CNTL, OTG, 0),\
73
+ SRII(PIXEL_RATE_CNTL, OTG, 1),\
74
+ SRII(PIXEL_RATE_CNTL, OTG, 2),\
75
+ SRII(PIXEL_RATE_CNTL, OTG, 3),\
76
+ SRII(PIXEL_RATE_CNTL, OTG, 4),\
77
+ SRII(PIXEL_RATE_CNTL, OTG, 5)
78
+
79
+#define CS_COMMON_REG_LIST_DCN2_1(index, pllid) \
80
+ SRI(PIXCLK_RESYNC_CNTL, PHYPLL, pllid),\
81
+ SRII(PHASE, DP_DTO, 0),\
82
+ SRII(PHASE, DP_DTO, 1),\
83
+ SRII(PHASE, DP_DTO, 2),\
84
+ SRII(PHASE, DP_DTO, 3),\
85
+ SRII(MODULO, DP_DTO, 0),\
86
+ SRII(MODULO, DP_DTO, 1),\
87
+ SRII(MODULO, DP_DTO, 2),\
88
+ SRII(MODULO, DP_DTO, 3),\
89
+ SRII(PIXEL_RATE_CNTL, OTG, 0),\
90
+ SRII(PIXEL_RATE_CNTL, OTG, 1),\
91
+ SRII(PIXEL_RATE_CNTL, OTG, 2),\
92
+ SRII(PIXEL_RATE_CNTL, OTG, 3)
93
+
94
+#if defined(CONFIG_DRM_AMD_DC_DCN3_0)
95
+#define CS_COMMON_REG_LIST_DCN3_0(index, pllid) \
96
+ SRI(PIXCLK_RESYNC_CNTL, PHYPLL, pllid),\
97
+ SRII(PHASE, DP_DTO, 0),\
98
+ SRII(PHASE, DP_DTO, 1),\
99
+ SRII(PHASE, DP_DTO, 2),\
100
+ SRII(PHASE, DP_DTO, 3),\
101
+ SRII(MODULO, DP_DTO, 0),\
102
+ SRII(MODULO, DP_DTO, 1),\
103
+ SRII(MODULO, DP_DTO, 2),\
104
+ SRII(MODULO, DP_DTO, 3),\
105
+ SRII(PIXEL_RATE_CNTL, OTG, 0),\
106
+ SRII(PIXEL_RATE_CNTL, OTG, 1),\
107
+ SRII(PIXEL_RATE_CNTL, OTG, 2),\
108
+ SRII(PIXEL_RATE_CNTL, OTG, 3)
109
+#endif
110
+
111
+#define CS_COMMON_MASK_SH_LIST_DCN2_0(mask_sh)\
112
+ CS_SF(DP_DTO0_PHASE, DP_DTO0_PHASE, mask_sh),\
113
+ CS_SF(DP_DTO0_MODULO, DP_DTO0_MODULO, mask_sh),\
114
+ CS_SF(PHYPLLA_PIXCLK_RESYNC_CNTL, PHYPLLA_DCCG_DEEP_COLOR_CNTL, mask_sh),\
115
+ CS_SF(OTG0_PIXEL_RATE_CNTL, DP_DTO0_ENABLE, mask_sh)
116
+
117
+#if defined(CONFIG_DRM_AMD_DC_DCN)
59118
60119 #define CS_COMMON_REG_LIST_DCN1_0(index, pllid) \
61120 SRI(PIXCLK_RESYNC_CNTL, PHYPLL, pllid),\
....@@ -125,6 +184,8 @@
125184 uint32_t hdmi_ss_params_cnt;
126185 struct spread_spectrum_data *dvi_ss_params;
127186 uint32_t dvi_ss_params_cnt;
187
+ struct spread_spectrum_data *lvds_ss_params;
188
+ uint32_t lvds_ss_params_cnt;
128189
129190 uint32_t ext_clk_khz;
130191 uint32_t ref_freq_khz;
....@@ -142,4 +203,47 @@
142203 const struct dce110_clk_src_shift *cs_shift,
143204 const struct dce110_clk_src_mask *cs_mask);
144205
206
+bool dce112_clk_src_construct(
207
+ struct dce110_clk_src *clk_src,
208
+ struct dc_context *ctx,
209
+ struct dc_bios *bios,
210
+ enum clock_source_id id,
211
+ const struct dce110_clk_src_regs *regs,
212
+ const struct dce110_clk_src_shift *cs_shift,
213
+ const struct dce110_clk_src_mask *cs_mask);
214
+
215
+bool dcn20_clk_src_construct(
216
+ struct dce110_clk_src *clk_src,
217
+ struct dc_context *ctx,
218
+ struct dc_bios *bios,
219
+ enum clock_source_id id,
220
+ const struct dce110_clk_src_regs *regs,
221
+ const struct dce110_clk_src_shift *cs_shift,
222
+ const struct dce110_clk_src_mask *cs_mask);
223
+
224
+#if defined(CONFIG_DRM_AMD_DC_DCN3_0)
225
+bool dcn3_clk_src_construct(
226
+ struct dce110_clk_src *clk_src,
227
+ struct dc_context *ctx,
228
+ struct dc_bios *bios,
229
+ enum clock_source_id id,
230
+ const struct dce110_clk_src_regs *regs,
231
+ const struct dce110_clk_src_shift *cs_shift,
232
+ const struct dce110_clk_src_mask *cs_mask);
233
+#endif
234
+
235
+/* this table is use to find *1.001 and /1.001 pixel rates from non-precise pixel rate */
236
+struct pixel_rate_range_table_entry {
237
+ unsigned int range_min_khz;
238
+ unsigned int range_max_khz;
239
+ unsigned int target_pixel_rate_khz;
240
+ unsigned short mult_factor;
241
+ unsigned short div_factor;
242
+};
243
+
244
+#if defined(CONFIG_DRM_AMD_DC_DCN3_0)
245
+extern const struct pixel_rate_range_table_entry video_optimized_pixel_rates[];
246
+const struct pixel_rate_range_table_entry *look_up_in_video_optimized_rate_tlb(
247
+ unsigned int pixel_rate_khz);
248
+#endif
145249 #endif