Rev 1268 | Rev 1404 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1268 | Rev 1321 | ||
---|---|---|---|
Line 31... | Line 31... | ||
31 | #define RADEON_MODE_H |
31 | #define RADEON_MODE_H |
Line 32... | Line 32... | ||
32 | 32 | ||
33 | #include |
33 | #include |
34 | #include |
34 | #include |
- | 35 | #include |
|
35 | #include |
36 | #include |
36 | #include |
37 | #include |
37 | #include |
38 | #include |
38 | #include |
39 | #include |
Line 87... | Line 88... | ||
87 | TV_STD_SCART_PAL, |
88 | TV_STD_SCART_PAL, |
88 | TV_STD_SECAM, |
89 | TV_STD_SECAM, |
89 | TV_STD_PAL_CN, |
90 | TV_STD_PAL_CN, |
90 | }; |
91 | }; |
Line -... | Line 92... | ||
- | 92 | ||
- | 93 | /* radeon gpio-based i2c |
|
- | 94 | * 1. "mask" reg and bits |
|
- | 95 | * grabs the gpio pins for software use |
|
- | 96 | * 0=not held 1=held |
|
- | 97 | * 2. "a" reg and bits |
|
- | 98 | * output pin value |
|
- | 99 | * 0=low 1=high |
|
- | 100 | * 3. "en" reg and bits |
|
- | 101 | * sets the pin direction |
|
- | 102 | * 0=input 1=output |
|
- | 103 | * 4. "y" reg and bits |
|
- | 104 | * input pin value |
|
- | 105 | * 0=low 1=high |
|
91 | 106 | */ |
|
92 | struct radeon_i2c_bus_rec { |
107 | struct radeon_i2c_bus_rec { |
- | 108 | bool valid; |
|
- | 109 | /* id used by atom */ |
|
- | 110 | uint8_t i2c_id; |
|
- | 111 | /* can be used with hw i2c engine */ |
|
- | 112 | bool hw_capable; |
|
- | 113 | /* uses multi-media i2c engine */ |
|
- | 114 | bool mm_i2c; |
|
93 | bool valid; |
115 | /* regs and bits */ |
94 | uint32_t mask_clk_reg; |
116 | uint32_t mask_clk_reg; |
95 | uint32_t mask_data_reg; |
117 | uint32_t mask_data_reg; |
96 | uint32_t a_clk_reg; |
118 | uint32_t a_clk_reg; |
97 | uint32_t a_data_reg; |
119 | uint32_t a_data_reg; |
98 | uint32_t put_clk_reg; |
120 | uint32_t en_clk_reg; |
99 | uint32_t put_data_reg; |
121 | uint32_t en_data_reg; |
100 | uint32_t get_clk_reg; |
122 | uint32_t y_clk_reg; |
101 | uint32_t get_data_reg; |
123 | uint32_t y_data_reg; |
102 | uint32_t mask_clk_mask; |
124 | uint32_t mask_clk_mask; |
103 | uint32_t mask_data_mask; |
- | |
104 | uint32_t put_clk_mask; |
- | |
105 | uint32_t put_data_mask; |
- | |
106 | uint32_t get_clk_mask; |
- | |
107 | uint32_t get_data_mask; |
125 | uint32_t mask_data_mask; |
108 | uint32_t a_clk_mask; |
126 | uint32_t a_clk_mask; |
- | 127 | uint32_t a_data_mask; |
|
- | 128 | uint32_t en_clk_mask; |
|
- | 129 | uint32_t en_data_mask; |
|
- | 130 | uint32_t y_clk_mask; |
|
109 | uint32_t a_data_mask; |
131 | uint32_t y_data_mask; |
Line 110... | Line 132... | ||
110 | }; |
132 | }; |
111 | 133 | ||
112 | struct radeon_tmds_pll { |
134 | struct radeon_tmds_pll { |
Line 148... | Line 170... | ||
148 | uint32_t max_frac_feedback_div; |
170 | uint32_t max_frac_feedback_div; |
149 | uint32_t best_vco; |
171 | uint32_t best_vco; |
150 | }; |
172 | }; |
Line 151... | Line 173... | ||
151 | 173 | ||
152 | struct radeon_i2c_chan { |
- | |
153 | struct drm_device *dev; |
174 | struct radeon_i2c_chan { |
- | 175 | struct i2c_adapter adapter; |
|
- | 176 | struct drm_device *dev; |
|
- | 177 | union { |
|
154 | struct i2c_adapter adapter; |
178 | struct i2c_algo_dp_aux_data dp; |
- | 179 | struct i2c_algo_bit_data bit; |
|
155 | struct i2c_algo_bit_data algo; |
180 | } algo; |
156 | struct radeon_i2c_bus_rec rec; |
181 | struct radeon_i2c_bus_rec rec; |
Line 157... | Line 182... | ||
157 | }; |
182 | }; |
158 | 183 | ||
Line 168... | Line 193... | ||
168 | CT_MINI_INTERNAL, |
193 | CT_MINI_INTERNAL, |
169 | CT_IMAC_G5_ISIGHT, |
194 | CT_IMAC_G5_ISIGHT, |
170 | CT_EMAC, |
195 | CT_EMAC, |
171 | }; |
196 | }; |
Line -... | Line 197... | ||
- | 197 | ||
- | 198 | enum radeon_dvo_chip { |
|
- | 199 | DVO_SIL164, |
|
- | 200 | DVO_SIL1178, |
|
- | 201 | }; |
|
172 | 202 | ||
173 | struct radeon_mode_info { |
203 | struct radeon_mode_info { |
174 | struct atom_context *atom_context; |
204 | struct atom_context *atom_context; |
175 | struct card_info *atom_card_info; |
205 | struct card_info *atom_card_info; |
176 | enum radeon_connector_table connector_table; |
206 | enum radeon_connector_table connector_table; |
Line 207... | Line 237... | ||
207 | int crtc_id; |
237 | int crtc_id; |
208 | u16 lut_r[256], lut_g[256], lut_b[256]; |
238 | u16 lut_r[256], lut_g[256], lut_b[256]; |
209 | bool enabled; |
239 | bool enabled; |
210 | bool can_tile; |
240 | bool can_tile; |
211 | uint32_t crtc_offset; |
241 | uint32_t crtc_offset; |
212 | // struct drm_gem_object *cursor_bo; |
242 | struct drm_gem_object *cursor_bo; |
213 | uint64_t cursor_addr; |
243 | uint64_t cursor_addr; |
214 | int cursor_width; |
244 | int cursor_width; |
215 | int cursor_height; |
245 | int cursor_height; |
216 | uint32_t legacy_display_base_addr; |
246 | uint32_t legacy_display_base_addr; |
217 | uint32_t legacy_cursor_offset; |
247 | uint32_t legacy_cursor_offset; |
Line 259... | Line 289... | ||
259 | struct radeon_encoder_int_tmds { |
289 | struct radeon_encoder_int_tmds { |
260 | /* legacy int tmds */ |
290 | /* legacy int tmds */ |
261 | struct radeon_tmds_pll tmds_pll[4]; |
291 | struct radeon_tmds_pll tmds_pll[4]; |
262 | }; |
292 | }; |
Line -... | Line 293... | ||
- | 293 | ||
- | 294 | struct radeon_encoder_ext_tmds { |
|
- | 295 | /* tmds over dvo */ |
|
- | 296 | struct radeon_i2c_chan *i2c_bus; |
|
- | 297 | uint8_t slave_addr; |
|
- | 298 | enum radeon_dvo_chip dvo_chip; |
|
- | 299 | }; |
|
263 | 300 | ||
264 | /* spread spectrum */ |
301 | /* spread spectrum */ |
265 | struct radeon_atom_ss { |
302 | struct radeon_atom_ss { |
266 | uint16_t percentage; |
303 | uint16_t percentage; |
267 | uint8_t type; |
304 | uint8_t type; |
Line 300... | Line 337... | ||
300 | }; |
337 | }; |
Line 301... | Line 338... | ||
301 | 338 | ||
302 | struct radeon_connector_atom_dig { |
339 | struct radeon_connector_atom_dig { |
303 | uint32_t igp_lane_info; |
340 | uint32_t igp_lane_info; |
- | 341 | bool linkb; |
|
- | 342 | /* displayport */ |
|
- | 343 | struct radeon_i2c_chan *dp_i2c_bus; |
|
- | 344 | u8 dpcd[8]; |
|
- | 345 | u8 dp_sink_type; |
|
- | 346 | int dp_clock; |
|
- | 347 | int dp_lane_count; |
|
- | 348 | }; |
|
- | 349 | ||
- | 350 | struct radeon_gpio_rec { |
|
- | 351 | bool valid; |
|
- | 352 | u8 id; |
|
- | 353 | u32 reg; |
|
- | 354 | u32 mask; |
|
- | 355 | }; |
|
- | 356 | ||
- | 357 | enum radeon_hpd_id { |
|
- | 358 | RADEON_HPD_NONE = 0, |
|
- | 359 | RADEON_HPD_1, |
|
- | 360 | RADEON_HPD_2, |
|
- | 361 | RADEON_HPD_3, |
|
- | 362 | RADEON_HPD_4, |
|
- | 363 | RADEON_HPD_5, |
|
- | 364 | RADEON_HPD_6, |
|
- | 365 | }; |
|
- | 366 | ||
- | 367 | struct radeon_hpd { |
|
- | 368 | enum radeon_hpd_id hpd; |
|
- | 369 | u8 plugged_state; |
|
304 | bool linkb; |
370 | struct radeon_gpio_rec gpio; |
Line 305... | Line 371... | ||
305 | }; |
371 | }; |
306 | 372 | ||
307 | struct radeon_connector { |
373 | struct radeon_connector { |
Line 316... | Line 382... | ||
316 | and get modes due to analog/digital/tvencoder */ |
382 | and get modes due to analog/digital/tvencoder */ |
317 | struct edid *edid; |
383 | struct edid *edid; |
318 | void *con_priv; |
384 | void *con_priv; |
319 | bool dac_load_detect; |
385 | bool dac_load_detect; |
320 | uint16_t connector_object_id; |
386 | uint16_t connector_object_id; |
- | 387 | struct radeon_hpd hpd; |
|
321 | }; |
388 | }; |
Line 322... | Line 389... | ||
322 | 389 | ||
323 | struct radeon_framebuffer { |
390 | struct radeon_framebuffer { |
324 | struct drm_framebuffer base; |
391 | struct drm_framebuffer base; |
325 | struct drm_gem_object *obj; |
392 | struct drm_gem_object *obj; |
Line -... | Line 393... | ||
- | 393 | }; |
|
- | 394 | ||
- | 395 | extern void radeon_connector_hotplug(struct drm_connector *connector); |
|
- | 396 | extern bool radeon_dp_needs_link_train(struct radeon_connector *radeon_connector); |
|
- | 397 | extern int radeon_dp_mode_valid_helper(struct radeon_connector *radeon_connector, |
|
- | 398 | struct drm_display_mode *mode); |
|
- | 399 | extern void radeon_dp_set_link_config(struct drm_connector *connector, |
|
- | 400 | struct drm_display_mode *mode); |
|
- | 401 | extern void dp_link_train(struct drm_encoder *encoder, |
|
- | 402 | struct drm_connector *connector); |
|
- | 403 | extern u8 radeon_dp_getsinktype(struct radeon_connector *radeon_connector); |
|
- | 404 | extern bool radeon_dp_getdpcd(struct radeon_connector *radeon_connector); |
|
- | 405 | extern void atombios_dig_transmitter_setup(struct drm_encoder *encoder, |
|
- | 406 | int action, uint8_t lane_num, |
|
- | 407 | uint8_t lane_set); |
|
- | 408 | extern int radeon_dp_i2c_aux_ch(struct i2c_adapter *adapter, int mode, |
|
- | 409 | uint8_t write_byte, uint8_t *read_byte); |
|
- | 410 | ||
- | 411 | extern struct radeon_i2c_chan *radeon_i2c_create_dp(struct drm_device *dev, |
|
326 | }; |
412 | struct radeon_i2c_bus_rec *rec, |
327 | 413 | const char *name); |
|
328 | extern struct radeon_i2c_chan *radeon_i2c_create(struct drm_device *dev, |
414 | extern struct radeon_i2c_chan *radeon_i2c_create(struct drm_device *dev, |
329 | struct radeon_i2c_bus_rec *rec, |
415 | struct radeon_i2c_bus_rec *rec, |
- | 416 | const char *name); |
|
- | 417 | extern void radeon_i2c_destroy(struct radeon_i2c_chan *i2c); |
|
- | 418 | extern void radeon_i2c_sw_get_byte(struct radeon_i2c_chan *i2c_bus, |
|
- | 419 | u8 slave_addr, |
|
- | 420 | u8 addr, |
|
- | 421 | u8 *val); |
|
- | 422 | extern void radeon_i2c_sw_put_byte(struct radeon_i2c_chan *i2c, |
|
- | 423 | u8 slave_addr, |
|
330 | const char *name); |
424 | u8 addr, |
331 | extern void radeon_i2c_destroy(struct radeon_i2c_chan *i2c); |
425 | u8 val); |
Line 332... | Line 426... | ||
332 | extern bool radeon_ddc_probe(struct radeon_connector *radeon_connector); |
426 | extern bool radeon_ddc_probe(struct radeon_connector *radeon_connector); |
Line 341... | Line 435... | ||
341 | uint32_t *frac_fb_div_p, |
435 | uint32_t *frac_fb_div_p, |
342 | uint32_t *ref_div_p, |
436 | uint32_t *ref_div_p, |
343 | uint32_t *post_div_p, |
437 | uint32_t *post_div_p, |
344 | int flags); |
438 | int flags); |
Line -... | Line 439... | ||
- | 439 | ||
- | 440 | extern void radeon_compute_pll_avivo(struct radeon_pll *pll, |
|
- | 441 | uint64_t freq, |
|
- | 442 | uint32_t *dot_clock_p, |
|
- | 443 | uint32_t *fb_div_p, |
|
- | 444 | uint32_t *frac_fb_div_p, |
|
- | 445 | uint32_t *ref_div_p, |
|
- | 446 | uint32_t *post_div_p, |
|
- | 447 | int flags); |
|
- | 448 | ||
- | 449 | extern void radeon_setup_encoder_clones(struct drm_device *dev); |
|
345 | 450 | ||
346 | struct drm_encoder *radeon_encoder_legacy_lvds_add(struct drm_device *dev, int bios_index); |
451 | struct drm_encoder *radeon_encoder_legacy_lvds_add(struct drm_device *dev, int bios_index); |
347 | struct drm_encoder *radeon_encoder_legacy_primary_dac_add(struct drm_device *dev, int bios_index, int with_tv); |
452 | struct drm_encoder *radeon_encoder_legacy_primary_dac_add(struct drm_device *dev, int bios_index, int with_tv); |
348 | struct drm_encoder *radeon_encoder_legacy_tv_dac_add(struct drm_device *dev, int bios_index, int with_tv); |
453 | struct drm_encoder *radeon_encoder_legacy_tv_dac_add(struct drm_device *dev, int bios_index, int with_tv); |
349 | struct drm_encoder *radeon_encoder_legacy_tmds_int_add(struct drm_device *dev, int bios_index); |
454 | struct drm_encoder *radeon_encoder_legacy_tmds_int_add(struct drm_device *dev, int bios_index); |
350 | struct drm_encoder *radeon_encoder_legacy_tmds_ext_add(struct drm_device *dev, int bios_index); |
455 | struct drm_encoder *radeon_encoder_legacy_tmds_ext_add(struct drm_device *dev, int bios_index); |
- | 456 | extern void atombios_external_tmds_setup(struct drm_encoder *encoder, int action); |
|
351 | extern void atombios_external_tmds_setup(struct drm_encoder *encoder, int action); |
457 | extern void atombios_digital_setup(struct drm_encoder *encoder, int action); |
352 | extern int atombios_get_encoder_mode(struct drm_encoder *encoder); |
458 | extern int atombios_get_encoder_mode(struct drm_encoder *encoder); |
Line 353... | Line 459... | ||
353 | extern void radeon_encoder_set_active_device(struct drm_encoder *encoder); |
459 | extern void radeon_encoder_set_active_device(struct drm_encoder *encoder); |
354 | 460 | ||
Line 376... | Line 482... | ||
376 | 482 | ||
377 | extern bool radeon_atom_get_clock_info(struct drm_device *dev); |
483 | extern bool radeon_atom_get_clock_info(struct drm_device *dev); |
378 | extern bool radeon_combios_get_clock_info(struct drm_device *dev); |
484 | extern bool radeon_combios_get_clock_info(struct drm_device *dev); |
379 | extern struct radeon_encoder_atom_dig * |
485 | extern struct radeon_encoder_atom_dig * |
380 | radeon_atombios_get_lvds_info(struct radeon_encoder *encoder); |
486 | radeon_atombios_get_lvds_info(struct radeon_encoder *encoder); |
381 | bool radeon_atombios_get_tmds_info(struct radeon_encoder *encoder, |
487 | extern bool radeon_atombios_get_tmds_info(struct radeon_encoder *encoder, |
382 | struct radeon_encoder_int_tmds *tmds); |
488 | struct radeon_encoder_int_tmds *tmds); |
383 | bool radeon_legacy_get_tmds_info_from_combios(struct radeon_encoder *encoder, |
489 | extern bool radeon_legacy_get_tmds_info_from_combios(struct radeon_encoder *encoder, |
384 | struct radeon_encoder_int_tmds *tmds); |
490 | struct radeon_encoder_int_tmds *tmds); |
385 | bool radeon_legacy_get_tmds_info_from_table(struct radeon_encoder *encoder, |
491 | extern bool radeon_legacy_get_tmds_info_from_table(struct radeon_encoder *encoder, |
- | 492 | struct radeon_encoder_int_tmds *tmds); |
|
- | 493 | extern bool radeon_legacy_get_ext_tmds_info_from_combios(struct radeon_encoder *encoder, |
|
- | 494 | struct radeon_encoder_ext_tmds *tmds); |
|
- | 495 | extern bool radeon_legacy_get_ext_tmds_info_from_table(struct radeon_encoder *encoder, |
|
386 | struct radeon_encoder_int_tmds *tmds); |
496 | struct radeon_encoder_ext_tmds *tmds); |
387 | extern struct radeon_encoder_primary_dac * |
497 | extern struct radeon_encoder_primary_dac * |
388 | radeon_atombios_get_primary_dac_info(struct radeon_encoder *encoder); |
498 | radeon_atombios_get_primary_dac_info(struct radeon_encoder *encoder); |
389 | extern struct radeon_encoder_tv_dac * |
499 | extern struct radeon_encoder_tv_dac * |
390 | radeon_atombios_get_tv_dac_info(struct radeon_encoder *encoder); |
500 | radeon_atombios_get_tv_dac_info(struct radeon_encoder *encoder); |
Line 393... | Line 503... | ||
393 | extern void radeon_combios_get_ext_tmds_info(struct radeon_encoder *encoder); |
503 | extern void radeon_combios_get_ext_tmds_info(struct radeon_encoder *encoder); |
394 | extern struct radeon_encoder_tv_dac * |
504 | extern struct radeon_encoder_tv_dac * |
395 | radeon_combios_get_tv_dac_info(struct radeon_encoder *encoder); |
505 | radeon_combios_get_tv_dac_info(struct radeon_encoder *encoder); |
396 | extern struct radeon_encoder_primary_dac * |
506 | extern struct radeon_encoder_primary_dac * |
397 | radeon_combios_get_primary_dac_info(struct radeon_encoder *encoder); |
507 | radeon_combios_get_primary_dac_info(struct radeon_encoder *encoder); |
- | 508 | extern bool radeon_combios_external_tmds_setup(struct drm_encoder *encoder); |
|
- | 509 | extern void radeon_external_tmds_setup(struct drm_encoder *encoder); |
|
398 | extern void radeon_combios_output_lock(struct drm_encoder *encoder, bool lock); |
510 | extern void radeon_combios_output_lock(struct drm_encoder *encoder, bool lock); |
399 | extern void radeon_combios_initialize_bios_scratch_regs(struct drm_device *dev); |
511 | extern void radeon_combios_initialize_bios_scratch_regs(struct drm_device *dev); |
400 | extern void radeon_atom_output_lock(struct drm_encoder *encoder, bool lock); |
512 | extern void radeon_atom_output_lock(struct drm_encoder *encoder, bool lock); |
401 | extern void radeon_atom_initialize_bios_scratch_regs(struct drm_device *dev); |
513 | extern void radeon_atom_initialize_bios_scratch_regs(struct drm_device *dev); |
402 | extern void radeon_save_bios_scratch_regs(struct radeon_device *rdev); |
514 | extern void radeon_save_bios_scratch_regs(struct radeon_device *rdev); |
Line 424... | Line 536... | ||
424 | bool radeon_get_legacy_connector_info_from_table(struct drm_device *dev); |
536 | bool radeon_get_legacy_connector_info_from_table(struct drm_device *dev); |
425 | void radeon_atombios_init_crtc(struct drm_device *dev, |
537 | void radeon_atombios_init_crtc(struct drm_device *dev, |
426 | struct radeon_crtc *radeon_crtc); |
538 | struct radeon_crtc *radeon_crtc); |
427 | void radeon_legacy_init_crtc(struct drm_device *dev, |
539 | void radeon_legacy_init_crtc(struct drm_device *dev, |
428 | struct radeon_crtc *radeon_crtc); |
540 | struct radeon_crtc *radeon_crtc); |
429 | void radeon_i2c_do_lock(struct radeon_connector *radeon_connector, int lock_state); |
541 | extern void radeon_i2c_do_lock(struct radeon_i2c_chan *i2c, int lock_state); |
Line 430... | Line 542... | ||
430 | 542 | ||
Line 431... | Line 543... | ||
431 | void radeon_get_clock_info(struct drm_device *dev); |
543 | void radeon_get_clock_info(struct drm_device *dev); |
432 | 544 | ||
Line 433... | Line -... | ||
433 | extern bool radeon_get_atom_connector_info_from_object_table(struct drm_device *dev); |
- | |
434 | extern bool radeon_get_atom_connector_info_from_supported_devices_table(struct drm_device *dev); |
- | |
435 | - | ||
436 | void radeon_rmx_mode_fixup(struct drm_encoder *encoder, |
545 | extern bool radeon_get_atom_connector_info_from_object_table(struct drm_device *dev); |
437 | struct drm_display_mode *mode, |
546 | extern bool radeon_get_atom_connector_info_from_supported_devices_table(struct drm_device *dev); |
438 | struct drm_display_mode *adjusted_mode); |
547 | |
439 | void radeon_enc_destroy(struct drm_encoder *encoder); |
548 | void radeon_enc_destroy(struct drm_encoder *encoder); |
440 | void radeon_copy_fb(struct drm_device *dev, struct drm_gem_object *dst_obj); |
549 | void radeon_copy_fb(struct drm_device *dev, struct drm_gem_object *dst_obj); |