Subversion Repositories Kolibri OS

Rev

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);