Rev 5271 | Rev 6661 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 5271 | Rev 6104 | ||
---|---|---|---|
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 83... | Line 84... | ||
83 | RADEON_HPD_5, |
84 | RADEON_HPD_5, |
84 | RADEON_HPD_6, |
85 | RADEON_HPD_6, |
85 | RADEON_HPD_NONE = 0xff, |
86 | RADEON_HPD_NONE = 0xff, |
86 | }; |
87 | }; |
Line -... | Line 88... | ||
- | 88 | ||
- | 89 | enum radeon_output_csc { |
|
- | 90 | RADEON_OUTPUT_CSC_BYPASS = 0, |
|
- | 91 | RADEON_OUTPUT_CSC_TVRGB = 1, |
|
- | 92 | RADEON_OUTPUT_CSC_YCBCR601 = 2, |
|
- | 93 | RADEON_OUTPUT_CSC_YCBCR709 = 3, |
|
- | 94 | }; |
|
87 | 95 | ||
Line 88... | Line 96... | ||
88 | #define RADEON_MAX_I2C_BUS 16 |
96 | #define RADEON_MAX_I2C_BUS 16 |
89 | 97 | ||
90 | /* radeon gpio-based i2c |
98 | /* radeon gpio-based i2c |
Line 227... | Line 235... | ||
227 | struct radeon_afmt { |
235 | struct radeon_afmt { |
228 | bool enabled; |
236 | bool enabled; |
229 | int offset; |
237 | int offset; |
230 | bool last_buffer_filled_status; |
238 | bool last_buffer_filled_status; |
231 | int id; |
239 | int id; |
232 | struct r600_audio_pin *pin; |
- | |
233 | }; |
240 | }; |
Line 234... | Line 241... | ||
234 | 241 | ||
235 | struct radeon_mode_info { |
242 | struct radeon_mode_info { |
236 | struct atom_context *atom_context; |
243 | struct atom_context *atom_context; |
Line 253... | Line 260... | ||
253 | struct drm_property *underscan_vborder_property; |
260 | struct drm_property *underscan_vborder_property; |
254 | /* audio */ |
261 | /* audio */ |
255 | struct drm_property *audio_property; |
262 | struct drm_property *audio_property; |
256 | /* FMT dithering */ |
263 | /* FMT dithering */ |
257 | struct drm_property *dither_property; |
264 | struct drm_property *dither_property; |
- | 265 | /* Output CSC */ |
|
- | 266 | struct drm_property *output_csc_property; |
|
258 | /* hardcoded DFP edid from BIOS */ |
267 | /* hardcoded DFP edid from BIOS */ |
259 | struct edid *bios_hardcoded_edid; |
268 | struct edid *bios_hardcoded_edid; |
260 | int bios_hardcoded_edid_size; |
269 | int bios_hardcoded_edid_size; |
Line 261... | Line 270... | ||
261 | 270 | ||
262 | /* pointer to fbdev info structure */ |
271 | /* pointer to fbdev info structure */ |
263 | struct radeon_fbdev *rfbdev; |
272 | struct radeon_fbdev *rfbdev; |
264 | /* firmware flags */ |
273 | /* firmware flags */ |
265 | u16 firmware_flags; |
274 | u16 firmware_flags; |
266 | /* pointer to backlight encoder */ |
275 | /* pointer to backlight encoder */ |
- | 276 | struct radeon_encoder *bl_encoder; |
|
- | 277 | ||
- | 278 | /* bitmask for active encoder frontends */ |
|
267 | struct radeon_encoder *bl_encoder; |
279 | uint32_t active_encoders; |
Line 268... | Line 280... | ||
268 | }; |
280 | }; |
Line 269... | Line 281... | ||
269 | 281 | ||
Line 328... | Line 340... | ||
328 | int cursor_width; |
340 | int cursor_width; |
329 | int cursor_height; |
341 | int cursor_height; |
330 | int max_cursor_width; |
342 | int max_cursor_width; |
331 | int max_cursor_height; |
343 | int max_cursor_height; |
332 | uint32_t legacy_display_base_addr; |
344 | uint32_t legacy_display_base_addr; |
333 | uint32_t legacy_cursor_offset; |
- | |
334 | enum radeon_rmx_type rmx_type; |
345 | enum radeon_rmx_type rmx_type; |
335 | u8 h_border; |
346 | u8 h_border; |
336 | u8 v_border; |
347 | u8 v_border; |
337 | fixed20_12 vsc; |
348 | fixed20_12 vsc; |
338 | fixed20_12 hsc; |
349 | fixed20_12 hsc; |
Line 354... | Line 365... | ||
354 | struct drm_connector *connector; |
365 | struct drm_connector *connector; |
355 | /* for dpm */ |
366 | /* for dpm */ |
356 | u32 line_time; |
367 | u32 line_time; |
357 | u32 wm_low; |
368 | u32 wm_low; |
358 | u32 wm_high; |
369 | u32 wm_high; |
- | 370 | u32 lb_vblank_lead_lines; |
|
359 | struct drm_display_mode hw_mode; |
371 | struct drm_display_mode hw_mode; |
- | 372 | enum radeon_output_csc output_csc; |
|
360 | }; |
373 | }; |
Line 361... | Line 374... | ||
361 | 374 | ||
362 | struct radeon_encoder_primary_dac { |
375 | struct radeon_encoder_primary_dac { |
363 | /* legacy primary dac */ |
376 | /* legacy primary dac */ |
Line 424... | Line 437... | ||
424 | struct backlight_device *bl_dev; |
437 | struct backlight_device *bl_dev; |
425 | int dpms_mode; |
438 | int dpms_mode; |
426 | uint8_t backlight_level; |
439 | uint8_t backlight_level; |
427 | int panel_mode; |
440 | int panel_mode; |
428 | struct radeon_afmt *afmt; |
441 | struct radeon_afmt *afmt; |
- | 442 | struct r600_audio_pin *pin; |
|
- | 443 | int active_mst_links; |
|
429 | }; |
444 | }; |
Line 430... | Line 445... | ||
430 | 445 | ||
431 | struct radeon_encoder_atom_dac { |
446 | struct radeon_encoder_atom_dac { |
432 | enum radeon_tv_std tv_std; |
447 | enum radeon_tv_std tv_std; |
Line -... | Line 448... | ||
- | 448 | }; |
|
- | 449 | ||
- | 450 | struct radeon_encoder_mst { |
|
- | 451 | int crtc; |
|
- | 452 | struct radeon_encoder *primary; |
|
- | 453 | struct radeon_connector *connector; |
|
- | 454 | struct drm_dp_mst_port *port; |
|
- | 455 | int pbn; |
|
- | 456 | int fe; |
|
- | 457 | bool fe_from_be; |
|
- | 458 | bool enc_active; |
|
433 | }; |
459 | }; |
434 | 460 | ||
435 | struct radeon_encoder { |
461 | struct radeon_encoder { |
436 | struct drm_encoder base; |
462 | struct drm_encoder base; |
437 | uint32_t encoder_enum; |
463 | uint32_t encoder_enum; |
Line 447... | Line 473... | ||
447 | struct drm_display_mode native_mode; |
473 | struct drm_display_mode native_mode; |
448 | void *enc_priv; |
474 | void *enc_priv; |
449 | int audio_polling_active; |
475 | int audio_polling_active; |
450 | bool is_ext_encoder; |
476 | bool is_ext_encoder; |
451 | u16 caps; |
477 | u16 caps; |
- | 478 | struct radeon_audio_funcs *audio; |
|
- | 479 | enum radeon_output_csc output_csc; |
|
- | 480 | bool can_mst; |
|
- | 481 | uint32_t offset; |
|
- | 482 | bool is_mst_encoder; |
|
- | 483 | /* front end for this mst encoder */ |
|
452 | }; |
484 | }; |
Line 453... | Line 485... | ||
453 | 485 | ||
454 | struct radeon_connector_atom_dig { |
486 | struct radeon_connector_atom_dig { |
455 | uint32_t igp_lane_info; |
487 | uint32_t igp_lane_info; |
456 | /* displayport */ |
488 | /* displayport */ |
457 | u8 dpcd[DP_RECEIVER_CAP_SIZE]; |
489 | u8 dpcd[DP_RECEIVER_CAP_SIZE]; |
458 | u8 dp_sink_type; |
490 | u8 dp_sink_type; |
459 | int dp_clock; |
491 | int dp_clock; |
460 | int dp_lane_count; |
492 | int dp_lane_count; |
- | 493 | bool edp_on; |
|
461 | bool edp_on; |
494 | bool is_mst; |
Line 462... | Line 495... | ||
462 | }; |
495 | }; |
463 | 496 | ||
464 | struct radeon_gpio_rec { |
497 | struct radeon_gpio_rec { |
Line 500... | Line 533... | ||
500 | enum radeon_connector_dither { |
533 | enum radeon_connector_dither { |
501 | RADEON_FMT_DITHER_DISABLE = 0, |
534 | RADEON_FMT_DITHER_DISABLE = 0, |
502 | RADEON_FMT_DITHER_ENABLE = 1, |
535 | RADEON_FMT_DITHER_ENABLE = 1, |
503 | }; |
536 | }; |
Line -... | Line 537... | ||
- | 537 | ||
- | 538 | struct stream_attribs { |
|
- | 539 | uint16_t fe; |
|
- | 540 | uint16_t slots; |
|
- | 541 | }; |
|
504 | 542 | ||
505 | struct radeon_connector { |
543 | struct radeon_connector { |
506 | struct drm_connector base; |
544 | struct drm_connector base; |
507 | uint32_t connector_id; |
545 | uint32_t connector_id; |
508 | uint32_t devices; |
546 | uint32_t devices; |
Line 514... | Line 552... | ||
514 | and get modes due to analog/digital/tvencoder */ |
552 | and get modes due to analog/digital/tvencoder */ |
515 | struct edid *edid; |
553 | struct edid *edid; |
516 | void *con_priv; |
554 | void *con_priv; |
517 | bool dac_load_detect; |
555 | bool dac_load_detect; |
518 | bool detected_by_load; /* if the connection status was determined by load */ |
556 | bool detected_by_load; /* if the connection status was determined by load */ |
- | 557 | bool detected_hpd_without_ddc; /* if an HPD signal was detected on DVI, but ddc probing failed */ |
|
519 | uint16_t connector_object_id; |
558 | uint16_t connector_object_id; |
520 | struct radeon_hpd hpd; |
559 | struct radeon_hpd hpd; |
521 | struct radeon_router router; |
560 | struct radeon_router router; |
522 | struct radeon_i2c_chan *router_bus; |
561 | struct radeon_i2c_chan *router_bus; |
523 | enum radeon_connector_audio audio; |
562 | enum radeon_connector_audio audio; |
524 | enum radeon_connector_dither dither; |
563 | enum radeon_connector_dither dither; |
525 | int pixelclock_for_modeset; |
564 | int pixelclock_for_modeset; |
- | 565 | bool is_mst_connector; |
|
- | 566 | struct radeon_connector *mst_port; |
|
- | 567 | struct drm_dp_mst_port *port; |
|
- | 568 | struct drm_dp_mst_topology_mgr mst_mgr; |
|
- | 569 | ||
- | 570 | struct radeon_encoder *mst_encoder; |
|
- | 571 | struct stream_attribs cur_stream_attribs[6]; |
|
- | 572 | int enabled_attribs; |
|
526 | }; |
573 | }; |
Line 527... | Line 574... | ||
527 | 574 | ||
528 | struct radeon_framebuffer { |
575 | struct radeon_framebuffer { |
529 | struct drm_framebuffer base; |
576 | struct drm_framebuffer base; |
Line 639... | Line 686... | ||
639 | u32 mask_low; |
686 | u32 mask_low; |
640 | u32 phase_delay; |
687 | u32 phase_delay; |
641 | struct atom_voltage_table_entry entries[MAX_VOLTAGE_ENTRIES]; |
688 | struct atom_voltage_table_entry entries[MAX_VOLTAGE_ENTRIES]; |
642 | }; |
689 | }; |
Line -... | Line 690... | ||
- | 690 | ||
- | 691 | /* Driver internal use only flags of radeon_get_crtc_scanoutpos() */ |
|
- | 692 | #define USE_REAL_VBLANKSTART (1 << 30) |
|
Line 643... | Line 693... | ||
643 | 693 | #define GET_DISTANCE_TO_VBLANKSTART (1 << 31) |
|
644 | 694 | ||
645 | extern void |
695 | extern void |
646 | radeon_add_atom_connector(struct drm_device *dev, |
696 | radeon_add_atom_connector(struct drm_device *dev, |
Line 705... | Line 755... | ||
705 | extern bool radeon_dp_needs_link_train(struct radeon_connector *radeon_connector); |
755 | extern bool radeon_dp_needs_link_train(struct radeon_connector *radeon_connector); |
706 | extern u8 radeon_dp_getsinktype(struct radeon_connector *radeon_connector); |
756 | extern u8 radeon_dp_getsinktype(struct radeon_connector *radeon_connector); |
707 | extern bool radeon_dp_getdpcd(struct radeon_connector *radeon_connector); |
757 | extern bool radeon_dp_getdpcd(struct radeon_connector *radeon_connector); |
708 | extern int radeon_dp_get_panel_mode(struct drm_encoder *encoder, |
758 | extern int radeon_dp_get_panel_mode(struct drm_encoder *encoder, |
709 | struct drm_connector *connector); |
759 | struct drm_connector *connector); |
- | 760 | int radeon_dp_get_max_link_rate(struct drm_connector *connector, |
|
- | 761 | const u8 *dpcd); |
|
710 | extern void radeon_dp_set_rx_power_state(struct drm_connector *connector, |
762 | extern void radeon_dp_set_rx_power_state(struct drm_connector *connector, |
711 | u8 power_state); |
763 | u8 power_state); |
712 | extern void radeon_dp_aux_init(struct radeon_connector *radeon_connector); |
764 | extern void radeon_dp_aux_init(struct radeon_connector *radeon_connector); |
- | 765 | extern ssize_t |
|
- | 766 | radeon_dp_aux_transfer_native(struct drm_dp_aux *aux, struct drm_dp_aux_msg *msg); |
|
- | 767 | ||
713 | extern void atombios_dig_encoder_setup(struct drm_encoder *encoder, int action, int panel_mode); |
768 | extern void atombios_dig_encoder_setup(struct drm_encoder *encoder, int action, int panel_mode); |
- | 769 | extern void atombios_dig_encoder_setup2(struct drm_encoder *encoder, int action, int panel_mode, int enc_override); |
|
714 | extern void radeon_atom_encoder_init(struct radeon_device *rdev); |
770 | extern void radeon_atom_encoder_init(struct radeon_device *rdev); |
715 | extern void radeon_atom_disp_eng_pll_init(struct radeon_device *rdev); |
771 | extern void radeon_atom_disp_eng_pll_init(struct radeon_device *rdev); |
716 | extern void atombios_dig_transmitter_setup(struct drm_encoder *encoder, |
772 | extern void atombios_dig_transmitter_setup(struct drm_encoder *encoder, |
717 | int action, uint8_t lane_num, |
773 | int action, uint8_t lane_num, |
718 | uint8_t lane_set); |
774 | uint8_t lane_set); |
- | 775 | extern void atombios_dig_transmitter_setup2(struct drm_encoder *encoder, |
|
- | 776 | int action, uint8_t lane_num, |
|
- | 777 | uint8_t lane_set, int fe); |
|
- | 778 | extern void atombios_set_mst_encoder_crtc_source(struct drm_encoder *encoder, |
|
- | 779 | int fe); |
|
719 | extern void radeon_atom_ext_encoder_setup_ddc(struct drm_encoder *encoder); |
780 | extern void radeon_atom_ext_encoder_setup_ddc(struct drm_encoder *encoder); |
720 | extern struct drm_encoder *radeon_get_external_encoder(struct drm_encoder *encoder); |
781 | extern struct drm_encoder *radeon_get_external_encoder(struct drm_encoder *encoder); |
721 | void radeon_atom_copy_swap(u8 *dst, u8 *src, u8 num_bytes, bool to_le); |
782 | void radeon_atom_copy_swap(u8 *dst, u8 *src, u8 num_bytes, bool to_le); |
Line 722... | Line 783... | ||
722 | 783 | ||
Line 743... | Line 804... | ||
743 | u8 val); |
804 | u8 val); |
744 | extern void radeon_router_select_ddc_port(struct radeon_connector *radeon_connector); |
805 | extern void radeon_router_select_ddc_port(struct radeon_connector *radeon_connector); |
745 | extern void radeon_router_select_cd_port(struct radeon_connector *radeon_connector); |
806 | extern void radeon_router_select_cd_port(struct radeon_connector *radeon_connector); |
746 | extern bool radeon_ddc_probe(struct radeon_connector *radeon_connector, bool use_aux); |
807 | extern bool radeon_ddc_probe(struct radeon_connector *radeon_connector, bool use_aux); |
Line 747... | Line -... | ||
747 | - | ||
748 | extern struct drm_encoder *radeon_best_encoder(struct drm_connector *connector); |
- | |
749 | 808 | ||
750 | extern bool radeon_atombios_get_ppll_ss_info(struct radeon_device *rdev, |
809 | extern bool radeon_atombios_get_ppll_ss_info(struct radeon_device *rdev, |
751 | struct radeon_atom_ss *ss, |
810 | struct radeon_atom_ss *ss, |
752 | int id); |
811 | int id); |
753 | extern bool radeon_atombios_get_asic_ss_info(struct radeon_device *rdev, |
812 | extern bool radeon_atombios_get_asic_ss_info(struct radeon_device *rdev, |
Line 818... | Line 877... | ||
818 | int32_t hot_y); |
877 | int32_t hot_y); |
819 | extern int radeon_crtc_cursor_move(struct drm_crtc *crtc, |
878 | extern int radeon_crtc_cursor_move(struct drm_crtc *crtc, |
820 | int x, int y); |
879 | int x, int y); |
821 | extern void radeon_cursor_reset(struct drm_crtc *crtc); |
880 | extern void radeon_cursor_reset(struct drm_crtc *crtc); |
Line 822... | Line 881... | ||
822 | 881 | ||
823 | extern int radeon_get_crtc_scanoutpos(struct drm_device *dev, int crtc, |
882 | extern int radeon_get_crtc_scanoutpos(struct drm_device *dev, unsigned int pipe, |
824 | unsigned int flags, |
883 | unsigned int flags, int *vpos, int *hpos, |
825 | int *vpos, int *hpos, void *stime, |
884 | ktime_t *stime, ktime_t *etime, |
Line 826... | Line 885... | ||
826 | void *etime); |
885 | const struct drm_display_mode *mode); |
827 | 886 | ||
828 | extern bool radeon_combios_check_hardcoded_edid(struct radeon_device *rdev); |
887 | extern bool radeon_combios_check_hardcoded_edid(struct radeon_device *rdev); |
829 | extern struct edid * |
888 | extern struct edid * |
Line 923... | Line 982... | ||
923 | 982 | ||
924 | /* fbdev layer */ |
983 | /* fbdev layer */ |
925 | int radeon_fbdev_init(struct radeon_device *rdev); |
984 | int radeon_fbdev_init(struct radeon_device *rdev); |
926 | void radeon_fbdev_fini(struct radeon_device *rdev); |
985 | void radeon_fbdev_fini(struct radeon_device *rdev); |
927 | void radeon_fbdev_set_suspend(struct radeon_device *rdev, int state); |
- | |
928 | int radeon_fbdev_total_size(struct radeon_device *rdev); |
986 | void radeon_fbdev_set_suspend(struct radeon_device *rdev, int state); |
- | 987 | bool radeon_fbdev_robj_is_fb(struct radeon_device *rdev, struct radeon_bo *robj); |
|
Line 929... | Line 988... | ||
929 | bool radeon_fbdev_robj_is_fb(struct radeon_device *rdev, struct radeon_bo *robj); |
988 | void radeon_fbdev_restore_mode(struct radeon_device *rdev); |
Line 930... | Line 989... | ||
930 | 989 | ||
- | 990 | void radeon_fb_output_poll_changed(struct radeon_device *rdev); |
|
- | 991 | ||
- | 992 | void radeon_crtc_handle_vblank(struct radeon_device *rdev, int crtc_id); |
|
- | 993 | ||
931 | void radeon_fb_output_poll_changed(struct radeon_device *rdev); |
994 | void radeon_fb_add_connector(struct radeon_device *rdev, struct drm_connector *connector); |
Line 932... | Line 995... | ||
932 | 995 | void radeon_fb_remove_connector(struct radeon_device *rdev, struct drm_connector *connector); |
|
- | 996 | ||
- | 997 | void radeon_crtc_handle_flip(struct radeon_device *rdev, int crtc_id); |
|
- | 998 | ||
- | 999 | int radeon_align_pitch(struct radeon_device *rdev, int width, int bpp, bool tiled); |
|
- | 1000 | ||
- | 1001 | /* mst */ |
|
- | 1002 | int radeon_dp_mst_init(struct radeon_connector *radeon_connector); |
|
- | 1003 | int radeon_dp_mst_probe(struct radeon_connector *radeon_connector); |
|
- | 1004 | int radeon_dp_mst_check_status(struct radeon_connector *radeon_connector); |
|
- | 1005 | int radeon_mst_debugfs_init(struct radeon_device *rdev); |
|
- | 1006 | void radeon_dp_mst_prepare_pll(struct drm_crtc *crtc, struct drm_display_mode *mode); |
|
- | 1007 | ||
933 | void radeon_crtc_handle_vblank(struct radeon_device *rdev, int crtc_id); |
1008 | void radeon_setup_mst_connector(struct drm_device *dev); |