Subversion Repositories Kolibri OS

Rev

Rev 6935 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 6935 Rev 6937
Line 122... Line 122...
122
};
122
};
Line 123... Line 123...
123
 
123
 
124
struct intel_fbdev {
124
struct intel_fbdev {
125
	struct drm_fb_helper helper;
125
	struct drm_fb_helper helper;
126
	struct intel_framebuffer *fb;
-
 
127
	struct list_head fbdev_list;
-
 
128
	struct drm_display_mode *our_mode;
126
	struct intel_framebuffer *fb;
129
	int preferred_bpp;
127
	int preferred_bpp;
Line 130... Line 128...
130
};
128
};
131
 
129
 
Line 249... Line 247...
249
	struct drm_atomic_state base;
247
	struct drm_atomic_state base;
Line 250... Line 248...
250
 
248
 
251
	unsigned int cdclk;
249
	unsigned int cdclk;
252
	bool dpll_set;
250
	bool dpll_set;
-
 
251
	struct intel_shared_dpll_config shared_dpll[I915_NUM_PLLS];
253
	struct intel_shared_dpll_config shared_dpll[I915_NUM_PLLS];
252
	struct intel_wm_config wm_config;
Line 254... Line 253...
254
};
253
};
255
 
254
 
256
struct intel_plane_state {
255
struct intel_plane_state {
Line 279... Line 278...
279
	 *     update_scaler_plane.
278
	 *     update_scaler_plane.
280
	 */
279
	 */
281
	int scaler_id;
280
	int scaler_id;
Line 282... Line 281...
282
 
281
 
-
 
282
	struct drm_intel_sprite_colorkey ckey;
-
 
283
 
-
 
284
	/* async flip related structures */
283
	struct drm_intel_sprite_colorkey ckey;
285
	struct drm_i915_gem_request *wait_req;
Line 284... Line 286...
284
};
286
};
285
 
287
 
286
struct intel_initial_plane_config {
288
struct intel_initial_plane_config {
Line 333... Line 335...
333
};
335
};
Line 334... Line 336...
334
 
336
 
335
/* drm_mode->private_flags */
337
/* drm_mode->private_flags */
Line -... Line 338...
-
 
338
#define I915_MODE_FLAG_INHERITED 1
-
 
339
 
-
 
340
struct intel_pipe_wm {
-
 
341
	struct intel_wm_level wm[5];
-
 
342
	uint32_t linetime;
-
 
343
	bool fbc_wm_enabled;
-
 
344
	bool pipe_enabled;
-
 
345
	bool sprites_enabled;
-
 
346
	bool sprites_scaled;
-
 
347
};
-
 
348
 
-
 
349
struct skl_pipe_wm {
-
 
350
	struct skl_wm_level wm[8];
-
 
351
	struct skl_wm_level trans_wm;
-
 
352
	uint32_t linetime;
336
#define I915_MODE_FLAG_INHERITED 1
353
};
337
 
354
 
Line 338... Line 355...
338
struct intel_crtc_state {
355
struct intel_crtc_state {
339
	struct drm_crtc_state base;
356
	struct drm_crtc_state base;
Line 347... Line 364...
347
	 * accordingly.
364
	 * accordingly.
348
	 */
365
	 */
349
#define PIPE_CONFIG_QUIRK_MODE_SYNC_FLAGS	(1<<0) /* unreliable sync mode.flags */
366
#define PIPE_CONFIG_QUIRK_MODE_SYNC_FLAGS	(1<<0) /* unreliable sync mode.flags */
350
	unsigned long quirks;
367
	unsigned long quirks;
Line -... Line 368...
-
 
368
 
351
 
369
	bool update_pipe; /* can a fast modeset be performed? */
-
 
370
	bool disable_cxsr;
Line 352... Line 371...
352
	bool update_pipe;
371
	bool update_wm_pre, update_wm_post; /* watermarks are updated */
353
 
372
 
354
	/* Pipe source size (ie. panel fitter input size)
373
	/* Pipe source size (ie. panel fitter input size)
355
	 * All planes will be positioned inside this space,
374
	 * All planes will be positioned inside this space,
Line 375... Line 394...
375
 
394
 
376
	/* DP has a bunch of special case unfortunately, so mark the pipe
395
	/* DP has a bunch of special case unfortunately, so mark the pipe
377
	 * accordingly. */
396
	 * accordingly. */
Line -... Line 397...
-
 
397
	bool has_dp_encoder;
-
 
398
 
-
 
399
	/* DSI has special cases */
378
	bool has_dp_encoder;
400
	bool has_dsi_encoder;
379
 
401
 
Line 380... Line 402...
380
	/* Whether we should send NULL infoframes. Required for audio. */
402
	/* Whether we should send NULL infoframes. Required for audio. */
381
	bool has_hdmi_sink;
403
	bool has_hdmi_sink;
Line 467... Line 489...
467
 
489
 
Line 468... Line 490...
468
	struct intel_crtc_scaler_state scaler_state;
490
	struct intel_crtc_scaler_state scaler_state;
469
 
491
 
-
 
492
	/* w/a for waiting 2 vblanks during crtc enable */
-
 
493
	enum pipe hsw_workaround_pipe;
-
 
494
 
-
 
495
	/* IVB sprite scaling w/a (WaCxSRDisabledForSpriteScaling:ivb) */
-
 
496
	bool disable_lp_wm;
-
 
497
 
-
 
498
	struct {
-
 
499
		/*
-
 
500
		 * optimal watermarks, programmed post-vblank when this state
-
 
501
		 * is committed
-
 
502
		 */
-
 
503
		union {
-
 
504
			struct intel_pipe_wm ilk;
-
 
505
			struct skl_pipe_wm skl;
470
	/* w/a for waiting 2 vblanks during crtc enable */
506
		} optimal;
Line 471... Line 507...
471
	enum pipe hsw_workaround_pipe;
507
	} wm;
472
};
508
};
473
 
509
 
Line 478... Line 514...
478
	uint8_t num_levels;
514
	uint8_t num_levels;
479
	uint8_t level;
515
	uint8_t level;
480
	bool cxsr;
516
	bool cxsr;
481
};
517
};
Line 482... Line -...
482
 
-
 
483
struct intel_pipe_wm {
-
 
484
	struct intel_wm_level wm[5];
-
 
485
	uint32_t linetime;
-
 
486
	bool fbc_wm_enabled;
-
 
487
	bool pipe_enabled;
-
 
488
	bool sprites_enabled;
-
 
489
	bool sprites_scaled;
-
 
490
};
-
 
491
 
518
 
492
struct intel_mmio_flip {
519
struct intel_mmio_flip {
493
	struct work_struct work;
520
	struct work_struct work;
494
	struct drm_i915_private *i915;
521
	struct drm_i915_private *i915;
495
	struct drm_i915_gem_request *req;
522
	struct drm_i915_gem_request *req;
496
	struct intel_crtc *crtc;
-
 
497
};
-
 
498
 
-
 
499
struct skl_pipe_wm {
-
 
500
	struct skl_wm_level wm[8];
-
 
501
	struct skl_wm_level trans_wm;
523
	struct intel_crtc *crtc;
502
	uint32_t linetime;
524
	unsigned int rotation;
Line 503... Line 525...
503
};
525
};
504
 
526
 
505
/*
527
/*
506
 * Tracking of operations that need to be performed at the beginning/end of an
528
 * Tracking of operations that need to be performed at the beginning/end of an
507
 * atomic commit, outside the atomic section where interrupts are disabled.
529
 * atomic commit, outside the atomic section where interrupts are disabled.
508
 * These are generally operations that grab mutexes or might otherwise sleep
530
 * These are generally operations that grab mutexes or might otherwise sleep
509
 * and thus can't be run with interrupts disabled.
531
 * and thus can't be run with interrupts disabled.
510
 */
532
 */
511
struct intel_crtc_atomic_commit {
-
 
512
	/* Sleepable operations to perform before commit */
533
struct intel_crtc_atomic_commit {
513
	bool wait_for_flips;
534
	/* Sleepable operations to perform before commit */
514
	bool disable_fbc;
-
 
515
	bool disable_ips;
535
	bool disable_fbc;
516
	bool disable_cxsr;
-
 
517
	bool pre_disable_primary;
-
 
Line 518... Line 536...
518
	bool update_wm_pre, update_wm_post;
536
	bool disable_ips;
519
	unsigned disabled_planes;
537
	bool pre_disable_primary;
520
 
538
 
521
	/* Sleepable operations to perform after commit */
539
	/* Sleepable operations to perform after commit */
Line 566... Line 584...
566
	bool pch_fifo_underrun_disabled;
584
	bool pch_fifo_underrun_disabled;
Line 567... Line 585...
567
 
585
 
568
	/* per-pipe watermark state */
586
	/* per-pipe watermark state */
569
	struct {
587
	struct {
-
 
588
		/* watermarks currently being used  */
570
		/* watermarks currently being used  */
589
		union {
571
		struct intel_pipe_wm active;
590
			struct intel_pipe_wm ilk;
572
		/* SKL wm values currently in use */
591
			struct skl_pipe_wm skl;
573
		struct skl_pipe_wm skl_active;
592
		} active;
574
		/* allow CxSR on this pipe */
593
		/* allow CxSR on this pipe */
575
		bool cxsr_allowed;
594
		bool cxsr_allowed;
Line 576... Line 595...
576
	} wm;
595
	} wm;
Line 676... Line 695...
676
#define to_intel_plane(x) container_of(x, struct intel_plane, base)
695
#define to_intel_plane(x) container_of(x, struct intel_plane, base)
677
#define to_intel_plane_state(x) container_of(x, struct intel_plane_state, base)
696
#define to_intel_plane_state(x) container_of(x, struct intel_plane_state, base)
678
#define intel_fb_obj(x) (x ? to_intel_framebuffer(x)->obj : NULL)
697
#define intel_fb_obj(x) (x ? to_intel_framebuffer(x)->obj : NULL)
Line 679... Line 698...
679
 
698
 
680
struct intel_hdmi {
699
struct intel_hdmi {
681
	u32 hdmi_reg;
700
	i915_reg_t hdmi_reg;
682
	int ddc_bus;
701
	int ddc_bus;
683
	bool limited_color_range;
702
	bool limited_color_range;
684
	bool color_range_auto;
703
	bool color_range_auto;
685
	bool has_hdmi_sink;
704
	bool has_hdmi_sink;
Line 692... Line 711...
692
				enum hdmi_infoframe_type type,
711
				enum hdmi_infoframe_type type,
693
				const void *frame, ssize_t len);
712
				const void *frame, ssize_t len);
694
	void (*set_infoframes)(struct drm_encoder *encoder,
713
	void (*set_infoframes)(struct drm_encoder *encoder,
695
			       bool enable,
714
			       bool enable,
696
			       const struct drm_display_mode *adjusted_mode);
715
			       const struct drm_display_mode *adjusted_mode);
697
	bool (*infoframe_enabled)(struct drm_encoder *encoder);
716
	bool (*infoframe_enabled)(struct drm_encoder *encoder,
-
 
717
				  const struct intel_crtc_state *pipe_config);
698
};
718
};
Line 699... Line 719...
699
 
719
 
700
struct intel_dp_mst_encoder;
720
struct intel_dp_mst_encoder;
Line 718... Line 738...
718
	/* Sets the m1_n1 and m2_n2 */
738
	/* Sets the m1_n1 and m2_n2 */
719
	M1_N1 = 0,
739
	M1_N1 = 0,
720
	M2_N2
740
	M2_N2
721
};
741
};
Line 722... Line -...
722
 
-
 
723
struct sink_crc {
-
 
724
	bool started;
-
 
725
	u8 last_crc[6];
-
 
726
	int last_count;
-
 
727
};
-
 
728
 
742
 
729
struct intel_dp {
743
struct intel_dp {
730
	uint32_t output_reg;
744
	i915_reg_t output_reg;
-
 
745
	i915_reg_t aux_ch_ctl_reg;
731
	uint32_t aux_ch_ctl_reg;
746
	i915_reg_t aux_ch_data_reg[5];
732
	uint32_t DP;
747
	uint32_t DP;
733
	int link_rate;
748
	int link_rate;
734
	uint8_t lane_count;
749
	uint8_t lane_count;
735
	bool has_audio;
750
	bool has_audio;
Line 740... Line 755...
740
	uint8_t psr_dpcd[EDP_PSR_RECEIVER_CAP_SIZE];
755
	uint8_t psr_dpcd[EDP_PSR_RECEIVER_CAP_SIZE];
741
	uint8_t downstream_ports[DP_MAX_DOWNSTREAM_PORTS];
756
	uint8_t downstream_ports[DP_MAX_DOWNSTREAM_PORTS];
742
	/* sink rates as reported by DP_SUPPORTED_LINK_RATES */
757
	/* sink rates as reported by DP_SUPPORTED_LINK_RATES */
743
	uint8_t num_sink_rates;
758
	uint8_t num_sink_rates;
744
	int sink_rates[DP_MAX_SUPPORTED_RATES];
759
	int sink_rates[DP_MAX_SUPPORTED_RATES];
745
	struct sink_crc sink_crc;
-
 
746
	struct drm_dp_aux aux;
760
	struct drm_dp_aux aux;
747
	uint8_t train_set[4];
761
	uint8_t train_set[4];
748
	int panel_power_up_delay;
762
	int panel_power_up_delay;
749
	int panel_power_down_delay;
763
	int panel_power_down_delay;
750
	int panel_power_cycle_delay;
764
	int panel_power_cycle_delay;
Line 754... Line 768...
754
	bool want_panel_vdd;
768
	bool want_panel_vdd;
755
	unsigned long last_power_cycle;
769
	unsigned long last_power_cycle;
756
	unsigned long last_power_on;
770
	unsigned long last_power_on;
757
	unsigned long last_backlight_off;
771
	unsigned long last_backlight_off;
Line -... Line 772...
-
 
772
 
-
 
773
	struct notifier_block edp_notifier;
758
 
774
 
759
	/*
775
	/*
760
	 * Pipe whose power sequencer is currently locked into
776
	 * Pipe whose power sequencer is currently locked into
761
	 * this port. Only relevant on VLV/CHV.
777
	 * this port. Only relevant on VLV/CHV.
762
	 */
778
	 */
Line 781... Line 797...
781
	uint32_t (*get_aux_send_ctl)(struct intel_dp *dp,
797
	uint32_t (*get_aux_send_ctl)(struct intel_dp *dp,
782
				     bool has_aux_irq,
798
				     bool has_aux_irq,
783
				     int send_bytes,
799
				     int send_bytes,
784
				     uint32_t aux_clock_divider);
800
				     uint32_t aux_clock_divider);
Line -... Line 801...
-
 
801
 
-
 
802
	/* This is called before a link training is starterd */
-
 
803
	void (*prepare_link_retrain)(struct intel_dp *intel_dp);
-
 
804
 
-
 
805
	bool train_set_valid;
785
 
806
 
786
	/* Displayport compliance testing */
807
	/* Displayport compliance testing */
787
	unsigned long compliance_test_type;
808
	unsigned long compliance_test_type;
788
	unsigned long compliance_test_data;
809
	unsigned long compliance_test_data;
789
	bool compliance_test_active;
810
	bool compliance_test_active;
Line 795... Line 816...
795
	u32 saved_port_bits;
816
	u32 saved_port_bits;
796
	struct intel_dp dp;
817
	struct intel_dp dp;
797
	struct intel_hdmi hdmi;
818
	struct intel_hdmi hdmi;
798
	enum irqreturn (*hpd_pulse)(struct intel_digital_port *, bool);
819
	enum irqreturn (*hpd_pulse)(struct intel_digital_port *, bool);
799
	bool release_cl2_override;
820
	bool release_cl2_override;
-
 
821
	/* for communication with audio component; protected by av_mutex */
-
 
822
	const struct drm_connector *audio_connector;
800
};
823
};
Line 801... Line 824...
801
 
824
 
802
struct intel_dp_mst_encoder {
825
struct intel_dp_mst_encoder {
803
	struct intel_encoder base;
826
	struct intel_encoder base;
Line 938... Line 961...
938
					   bool enable);
961
					   bool enable);
939
void intel_cpu_fifo_underrun_irq_handler(struct drm_i915_private *dev_priv,
962
void intel_cpu_fifo_underrun_irq_handler(struct drm_i915_private *dev_priv,
940
					 enum pipe pipe);
963
					 enum pipe pipe);
941
void intel_pch_fifo_underrun_irq_handler(struct drm_i915_private *dev_priv,
964
void intel_pch_fifo_underrun_irq_handler(struct drm_i915_private *dev_priv,
942
					 enum transcoder pch_transcoder);
965
					 enum transcoder pch_transcoder);
-
 
966
void intel_check_cpu_fifo_underruns(struct drm_i915_private *dev_priv);
943
void i9xx_check_fifo_underruns(struct drm_i915_private *dev_priv);
967
void intel_check_pch_fifo_underruns(struct drm_i915_private *dev_priv);
Line 944... Line 968...
944
 
968
 
945
/* i915_irq.c */
969
/* i915_irq.c */
946
void gen5_enable_gt_irq(struct drm_i915_private *dev_priv, uint32_t mask);
970
void gen5_enable_gt_irq(struct drm_i915_private *dev_priv, uint32_t mask);
947
void gen5_disable_gt_irq(struct drm_i915_private *dev_priv, uint32_t mask);
971
void gen5_disable_gt_irq(struct drm_i915_private *dev_priv, uint32_t mask);
Line 969... Line 993...
969
/* intel_crt.c */
993
/* intel_crt.c */
970
void intel_crt_init(struct drm_device *dev);
994
void intel_crt_init(struct drm_device *dev);
Line 971... Line 995...
971
 
995
 
-
 
996
 
-
 
997
/* intel_ddi.c */
972
 
998
void intel_ddi_clk_select(struct intel_encoder *encoder,
973
/* intel_ddi.c */
999
			  const struct intel_crtc_state *pipe_config);
974
void intel_prepare_ddi(struct drm_device *dev);
1000
void intel_prepare_ddi(struct drm_device *dev);
975
void hsw_fdi_link_train(struct drm_crtc *crtc);
1001
void hsw_fdi_link_train(struct drm_crtc *crtc);
976
void intel_ddi_init(struct drm_device *dev, enum port port);
1002
void intel_ddi_init(struct drm_device *dev, enum port port);
Line 983... Line 1009...
983
void intel_ddi_enable_pipe_clock(struct intel_crtc *intel_crtc);
1009
void intel_ddi_enable_pipe_clock(struct intel_crtc *intel_crtc);
984
void intel_ddi_disable_pipe_clock(struct intel_crtc *intel_crtc);
1010
void intel_ddi_disable_pipe_clock(struct intel_crtc *intel_crtc);
985
bool intel_ddi_pll_select(struct intel_crtc *crtc,
1011
bool intel_ddi_pll_select(struct intel_crtc *crtc,
986
			  struct intel_crtc_state *crtc_state);
1012
			  struct intel_crtc_state *crtc_state);
987
void intel_ddi_set_pipe_settings(struct drm_crtc *crtc);
1013
void intel_ddi_set_pipe_settings(struct drm_crtc *crtc);
988
void intel_ddi_prepare_link_retrain(struct drm_encoder *encoder);
1014
void intel_ddi_prepare_link_retrain(struct intel_dp *intel_dp);
989
bool intel_ddi_connector_get_hw_state(struct intel_connector *intel_connector);
1015
bool intel_ddi_connector_get_hw_state(struct intel_connector *intel_connector);
990
void intel_ddi_fdi_disable(struct drm_crtc *crtc);
1016
void intel_ddi_fdi_disable(struct drm_crtc *crtc);
991
void intel_ddi_get_config(struct intel_encoder *encoder,
1017
void intel_ddi_get_config(struct intel_encoder *encoder,
992
			  struct intel_crtc_state *pipe_config);
1018
			  struct intel_crtc_state *pipe_config);
993
struct intel_encoder *
1019
struct intel_encoder *
Line 1051... Line 1077...
1051
static inline void
1077
static inline void
1052
intel_wait_for_vblank(struct drm_device *dev, int pipe)
1078
intel_wait_for_vblank(struct drm_device *dev, int pipe)
1053
{
1079
{
1054
	drm_wait_one_vblank(dev, pipe);
1080
	drm_wait_one_vblank(dev, pipe);
1055
}
1081
}
-
 
1082
static inline void
-
 
1083
intel_wait_for_vblank_if_active(struct drm_device *dev, int pipe)
-
 
1084
{
-
 
1085
	const struct intel_crtc *crtc =
-
 
1086
		to_intel_crtc(intel_get_crtc_for_pipe(dev, pipe));
-
 
1087
 
-
 
1088
	if (crtc->active)
-
 
1089
		intel_wait_for_vblank(dev, pipe);
-
 
1090
}
1056
int ironlake_get_lanes_required(int target_clock, int link_bw, int bpp);
1091
int ironlake_get_lanes_required(int target_clock, int link_bw, int bpp);
1057
void vlv_wait_port_ready(struct drm_i915_private *dev_priv,
1092
void vlv_wait_port_ready(struct drm_i915_private *dev_priv,
1058
			 struct intel_digital_port *dport,
1093
			 struct intel_digital_port *dport,
1059
			 unsigned int expected_mask);
1094
			 unsigned int expected_mask);
1060
bool intel_get_load_detect_pipe(struct drm_connector *connector,
1095
bool intel_get_load_detect_pipe(struct drm_connector *connector,
Line 1064... Line 1099...
1064
void intel_release_load_detect_pipe(struct drm_connector *connector,
1099
void intel_release_load_detect_pipe(struct drm_connector *connector,
1065
				    struct intel_load_detect_pipe *old,
1100
				    struct intel_load_detect_pipe *old,
1066
				    struct drm_modeset_acquire_ctx *ctx);
1101
				    struct drm_modeset_acquire_ctx *ctx);
1067
int intel_pin_and_fence_fb_obj(struct drm_plane *plane,
1102
int intel_pin_and_fence_fb_obj(struct drm_plane *plane,
1068
			       struct drm_framebuffer *fb,
1103
			       struct drm_framebuffer *fb,
1069
			       const struct drm_plane_state *plane_state,
1104
			       const struct drm_plane_state *plane_state);
1070
			       struct intel_engine_cs *pipelined,
-
 
1071
			       struct drm_i915_gem_request **pipelined_request);
-
 
1072
struct drm_framebuffer *
1105
struct drm_framebuffer *
1073
__intel_framebuffer_create(struct drm_device *dev,
1106
__intel_framebuffer_create(struct drm_device *dev,
1074
			   struct drm_mode_fb_cmd2 *mode_cmd,
1107
			   struct drm_mode_fb_cmd2 *mode_cmd,
1075
			   struct drm_i915_gem_object *obj);
1108
			   struct drm_i915_gem_object *obj);
1076
void intel_prepare_page_flip(struct drm_device *dev, int plane);
1109
void intel_prepare_page_flip(struct drm_device *dev, int plane);
Line 1147... Line 1180...
1147
void broxton_ddi_phy_init(struct drm_device *dev);
1180
void broxton_ddi_phy_init(struct drm_device *dev);
1148
void broxton_ddi_phy_uninit(struct drm_device *dev);
1181
void broxton_ddi_phy_uninit(struct drm_device *dev);
1149
void bxt_enable_dc9(struct drm_i915_private *dev_priv);
1182
void bxt_enable_dc9(struct drm_i915_private *dev_priv);
1150
void bxt_disable_dc9(struct drm_i915_private *dev_priv);
1183
void bxt_disable_dc9(struct drm_i915_private *dev_priv);
1151
void skl_init_cdclk(struct drm_i915_private *dev_priv);
1184
void skl_init_cdclk(struct drm_i915_private *dev_priv);
-
 
1185
int skl_sanitize_cdclk(struct drm_i915_private *dev_priv);
1152
void skl_uninit_cdclk(struct drm_i915_private *dev_priv);
1186
void skl_uninit_cdclk(struct drm_i915_private *dev_priv);
-
 
1187
void skl_enable_dc6(struct drm_i915_private *dev_priv);
-
 
1188
void skl_disable_dc6(struct drm_i915_private *dev_priv);
1153
void intel_dp_get_m_n(struct intel_crtc *crtc,
1189
void intel_dp_get_m_n(struct intel_crtc *crtc,
1154
		      struct intel_crtc_state *pipe_config);
1190
		      struct intel_crtc_state *pipe_config);
1155
void intel_dp_set_m_n(struct intel_crtc *crtc, enum link_m_n_set m_n);
1191
void intel_dp_set_m_n(struct intel_crtc *crtc, enum link_m_n_set m_n);
1156
int intel_dotclock_calculate(int link_freq, const struct intel_link_m_n *m_n);
1192
int intel_dotclock_calculate(int link_freq, const struct intel_link_m_n *m_n);
1157
void
1193
void
Line 1168... Line 1204...
1168
intel_display_port_power_domain(struct intel_encoder *intel_encoder);
1204
intel_display_port_power_domain(struct intel_encoder *intel_encoder);
1169
enum intel_display_power_domain
1205
enum intel_display_power_domain
1170
intel_display_port_aux_power_domain(struct intel_encoder *intel_encoder);
1206
intel_display_port_aux_power_domain(struct intel_encoder *intel_encoder);
1171
void intel_mode_from_pipe_config(struct drm_display_mode *mode,
1207
void intel_mode_from_pipe_config(struct drm_display_mode *mode,
1172
				 struct intel_crtc_state *pipe_config);
1208
				 struct intel_crtc_state *pipe_config);
1173
void intel_crtc_wait_for_pending_flips(struct drm_crtc *crtc);
-
 
1174
void intel_modeset_preclose(struct drm_device *dev, struct drm_file *file);
1209
void intel_modeset_preclose(struct drm_device *dev, struct drm_file *file);
Line 1175... Line 1210...
1175
 
1210
 
1176
int skl_update_scaler_crtc(struct intel_crtc_state *crtc_state);
1211
int skl_update_scaler_crtc(struct intel_crtc_state *crtc_state);
Line 1183... Line 1218...
1183
u32 skl_plane_ctl_format(uint32_t pixel_format);
1218
u32 skl_plane_ctl_format(uint32_t pixel_format);
1184
u32 skl_plane_ctl_tiling(uint64_t fb_modifier);
1219
u32 skl_plane_ctl_tiling(uint64_t fb_modifier);
1185
u32 skl_plane_ctl_rotation(unsigned int rotation);
1220
u32 skl_plane_ctl_rotation(unsigned int rotation);
Line 1186... Line 1221...
1186
 
1221
 
1187
/* intel_csr.c */
1222
/* intel_csr.c */
1188
void intel_csr_ucode_init(struct drm_device *dev);
-
 
1189
enum csr_state intel_csr_load_status_get(struct drm_i915_private *dev_priv);
-
 
1190
void intel_csr_load_status_set(struct drm_i915_private *dev_priv,
-
 
1191
					enum csr_state state);
1223
void intel_csr_ucode_init(struct drm_i915_private *);
1192
void intel_csr_load_program(struct drm_device *dev);
1224
void intel_csr_load_program(struct drm_i915_private *);
1193
void intel_csr_ucode_fini(struct drm_device *dev);
-
 
Line 1194... Line 1225...
1194
void assert_csr_loaded(struct drm_i915_private *dev_priv);
1225
void intel_csr_ucode_fini(struct drm_i915_private *);
1195
 
1226
 
1196
/* intel_dp.c */
1227
/* intel_dp.c */
1197
bool intel_dp_init(struct drm_device *dev, int output_reg, enum port port);
1228
void intel_dp_init(struct drm_device *dev, i915_reg_t output_reg, enum port port);
1198
bool intel_dp_init_connector(struct intel_digital_port *intel_dig_port,
1229
bool intel_dp_init_connector(struct intel_digital_port *intel_dig_port,
1199
			     struct intel_connector *intel_connector);
1230
			     struct intel_connector *intel_connector);
1200
void intel_dp_set_link_params(struct intel_dp *intel_dp,
1231
void intel_dp_set_link_params(struct intel_dp *intel_dp,
Line 1228... Line 1259...
1228
void intel_edp_drrs_enable(struct intel_dp *intel_dp);
1259
void intel_edp_drrs_enable(struct intel_dp *intel_dp);
1229
void intel_edp_drrs_disable(struct intel_dp *intel_dp);
1260
void intel_edp_drrs_disable(struct intel_dp *intel_dp);
1230
void intel_edp_drrs_invalidate(struct drm_device *dev,
1261
void intel_edp_drrs_invalidate(struct drm_device *dev,
1231
		unsigned frontbuffer_bits);
1262
		unsigned frontbuffer_bits);
1232
void intel_edp_drrs_flush(struct drm_device *dev, unsigned frontbuffer_bits);
1263
void intel_edp_drrs_flush(struct drm_device *dev, unsigned frontbuffer_bits);
-
 
1264
bool intel_digital_port_connected(struct drm_i915_private *dev_priv,
-
 
1265
					 struct intel_digital_port *port);
1233
void hsw_dp_set_ddi_pll_sel(struct intel_crtc_state *pipe_config);
1266
void hsw_dp_set_ddi_pll_sel(struct intel_crtc_state *pipe_config);
Line -... Line 1267...
-
 
1267
 
-
 
1268
void
-
 
1269
intel_dp_program_link_training_pattern(struct intel_dp *intel_dp,
-
 
1270
				       uint8_t dp_train_pat);
-
 
1271
void
-
 
1272
intel_dp_set_signal_levels(struct intel_dp *intel_dp);
-
 
1273
void intel_dp_set_idle_link_train(struct intel_dp *intel_dp);
-
 
1274
uint8_t
-
 
1275
intel_dp_voltage_max(struct intel_dp *intel_dp);
-
 
1276
uint8_t
-
 
1277
intel_dp_pre_emphasis_max(struct intel_dp *intel_dp, uint8_t voltage_swing);
-
 
1278
void intel_dp_compute_rate(struct intel_dp *intel_dp, int port_clock,
-
 
1279
			   uint8_t *link_bw, uint8_t *rate_select);
-
 
1280
bool intel_dp_source_supports_hbr2(struct intel_dp *intel_dp);
-
 
1281
bool
-
 
1282
intel_dp_get_link_status(struct intel_dp *intel_dp, uint8_t link_status[DP_LINK_STATUS_SIZE]);
1234
 
1283
 
1235
/* intel_dp_mst.c */
1284
/* intel_dp_mst.c */
1236
int intel_dp_mst_encoder_init(struct intel_digital_port *intel_dig_port, int conn_id);
1285
int intel_dp_mst_encoder_init(struct intel_digital_port *intel_dig_port, int conn_id);
1237
void intel_dp_mst_encoder_cleanup(struct intel_digital_port *intel_dig_port);
1286
void intel_dp_mst_encoder_cleanup(struct intel_digital_port *intel_dig_port);
1238
/* intel_dsi.c */
1287
/* intel_dsi.c */
Line 1244... Line 1293...
1244
 
1293
 
1245
 
1294
 
1246
/* legacy fbdev emulation in intel_fbdev.c */
1295
/* legacy fbdev emulation in intel_fbdev.c */
1247
#ifdef CONFIG_DRM_FBDEV_EMULATION
1296
#ifdef CONFIG_DRM_FBDEV_EMULATION
1248
extern int intel_fbdev_init(struct drm_device *dev);
1297
extern int intel_fbdev_init(struct drm_device *dev);
1249
extern void intel_fbdev_initial_config(void *data, async_cookie_t cookie);
1298
extern void intel_fbdev_initial_config_async(struct drm_device *dev);
1250
extern void intel_fbdev_fini(struct drm_device *dev);
1299
extern void intel_fbdev_fini(struct drm_device *dev);
1251
extern void intel_fbdev_set_suspend(struct drm_device *dev, int state, bool synchronous);
1300
extern void intel_fbdev_set_suspend(struct drm_device *dev, int state, bool synchronous);
1252
extern void intel_fbdev_output_poll_changed(struct drm_device *dev);
1301
extern void intel_fbdev_output_poll_changed(struct drm_device *dev);
1253
extern void intel_fbdev_restore_mode(struct drm_device *dev);
1302
extern void intel_fbdev_restore_mode(struct drm_device *dev);
1254
#else
1303
#else
1255
static inline int intel_fbdev_init(struct drm_device *dev)
1304
static inline int intel_fbdev_init(struct drm_device *dev)
1256
{
1305
{
Line 1257... Line 1306...
1257
	return 0;
1306
	return 0;
1258
}
1307
}
1259
 
1308
 
Line 1260... Line 1309...
1260
static inline void intel_fbdev_initial_config(void *data, async_cookie_t cookie)
1309
static inline void intel_fbdev_initial_config_async(struct drm_device *dev)
1261
{
1310
{
Line 1273... Line 1322...
1273
{
1322
{
1274
}
1323
}
1275
#endif
1324
#endif
Line 1276... Line 1325...
1276
 
1325
 
1277
/* intel_fbc.c */
1326
/* intel_fbc.c */
-
 
1327
bool intel_fbc_is_active(struct drm_i915_private *dev_priv);
1278
bool intel_fbc_enabled(struct drm_i915_private *dev_priv);
1328
void intel_fbc_deactivate(struct intel_crtc *crtc);
1279
void intel_fbc_update(struct drm_i915_private *dev_priv);
1329
void intel_fbc_update(struct intel_crtc *crtc);
-
 
1330
void intel_fbc_init(struct drm_i915_private *dev_priv);
1280
void intel_fbc_init(struct drm_i915_private *dev_priv);
1331
void intel_fbc_enable(struct intel_crtc *crtc);
1281
void intel_fbc_disable(struct drm_i915_private *dev_priv);
1332
void intel_fbc_disable(struct drm_i915_private *dev_priv);
1282
void intel_fbc_disable_crtc(struct intel_crtc *crtc);
1333
void intel_fbc_disable_crtc(struct intel_crtc *crtc);
1283
void intel_fbc_invalidate(struct drm_i915_private *dev_priv,
1334
void intel_fbc_invalidate(struct drm_i915_private *dev_priv,
1284
			  unsigned int frontbuffer_bits,
1335
			  unsigned int frontbuffer_bits,
1285
			  enum fb_op_origin origin);
1336
			  enum fb_op_origin origin);
1286
void intel_fbc_flush(struct drm_i915_private *dev_priv,
1337
void intel_fbc_flush(struct drm_i915_private *dev_priv,
1287
		     unsigned int frontbuffer_bits, enum fb_op_origin origin);
-
 
1288
const char *intel_no_fbc_reason_str(enum no_fbc_reason reason);
1338
		     unsigned int frontbuffer_bits, enum fb_op_origin origin);
Line 1289... Line 1339...
1289
void intel_fbc_cleanup_cfb(struct drm_i915_private *dev_priv);
1339
void intel_fbc_cleanup_cfb(struct drm_i915_private *dev_priv);
1290
 
1340
 
1291
/* intel_hdmi.c */
1341
/* intel_hdmi.c */
1292
void intel_hdmi_init(struct drm_device *dev, int hdmi_reg, enum port port);
1342
void intel_hdmi_init(struct drm_device *dev, i915_reg_t hdmi_reg, enum port port);
1293
void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port,
1343
void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port,
1294
			       struct intel_connector *intel_connector);
1344
			       struct intel_connector *intel_connector);
1295
struct intel_hdmi *enc_to_intel_hdmi(struct drm_encoder *encoder);
1345
struct intel_hdmi *enc_to_intel_hdmi(struct drm_encoder *encoder);
Line 1363... Line 1413...
1363
				   unsigned frontbuffer_bits);
1413
				   unsigned frontbuffer_bits);
Line 1364... Line 1414...
1364
 
1414
 
1365
/* intel_runtime_pm.c */
1415
/* intel_runtime_pm.c */
1366
int intel_power_domains_init(struct drm_i915_private *);
1416
int intel_power_domains_init(struct drm_i915_private *);
-
 
1417
void intel_power_domains_fini(struct drm_i915_private *);
1367
void intel_power_domains_fini(struct drm_i915_private *);
1418
void intel_power_domains_init_hw(struct drm_i915_private *dev_priv, bool resume);
-
 
1419
void intel_power_domains_suspend(struct drm_i915_private *dev_priv);
-
 
1420
void skl_pw1_misc_io_init(struct drm_i915_private *dev_priv);
1368
void intel_power_domains_init_hw(struct drm_i915_private *dev_priv);
1421
void skl_pw1_misc_io_fini(struct drm_i915_private *dev_priv);
-
 
1422
void intel_runtime_pm_enable(struct drm_i915_private *dev_priv);
-
 
1423
const char *
Line 1369... Line 1424...
1369
void intel_runtime_pm_enable(struct drm_i915_private *dev_priv);
1424
intel_display_power_domain_str(enum intel_display_power_domain domain);
1370
 
1425
 
1371
bool intel_display_power_is_enabled(struct drm_i915_private *dev_priv,
1426
bool intel_display_power_is_enabled(struct drm_i915_private *dev_priv,
1372
				    enum intel_display_power_domain domain);
1427
				    enum intel_display_power_domain domain);
1373
bool __intel_display_power_is_enabled(struct drm_i915_private *dev_priv,
1428
bool __intel_display_power_is_enabled(struct drm_i915_private *dev_priv,
1374
				      enum intel_display_power_domain domain);
1429
				      enum intel_display_power_domain domain);
-
 
1430
void intel_display_power_get(struct drm_i915_private *dev_priv,
-
 
1431
			     enum intel_display_power_domain domain);
1375
void intel_display_power_get(struct drm_i915_private *dev_priv,
1432
bool intel_display_power_get_if_enabled(struct drm_i915_private *dev_priv,
1376
			     enum intel_display_power_domain domain);
1433
					enum intel_display_power_domain domain);
-
 
1434
void intel_display_power_put(struct drm_i915_private *dev_priv,
-
 
1435
			     enum intel_display_power_domain domain);
-
 
1436
 
-
 
1437
static inline void
-
 
1438
assert_rpm_device_not_suspended(struct drm_i915_private *dev_priv)
-
 
1439
{
-
 
1440
	WARN_ONCE(dev_priv->pm.suspended,
-
 
1441
		  "Device suspended during HW access\n");
-
 
1442
}
-
 
1443
 
-
 
1444
static inline void
-
 
1445
assert_rpm_wakelock_held(struct drm_i915_private *dev_priv)
-
 
1446
{
-
 
1447
	assert_rpm_device_not_suspended(dev_priv);
-
 
1448
	/* FIXME: Needs to be converted back to WARN_ONCE, but currently causes
-
 
1449
	 * too much noise. */
-
 
1450
	if (!atomic_read(&dev_priv->pm.wakeref_count))
-
 
1451
		DRM_DEBUG_DRIVER("RPM wakelock ref not held during HW access");
-
 
1452
}
-
 
1453
 
-
 
1454
static inline int
-
 
1455
assert_rpm_atomic_begin(struct drm_i915_private *dev_priv)
-
 
1456
{
-
 
1457
	int seq = atomic_read(&dev_priv->pm.atomic_seq);
-
 
1458
 
-
 
1459
	assert_rpm_wakelock_held(dev_priv);
-
 
1460
 
-
 
1461
	return seq;
-
 
1462
}
-
 
1463
 
-
 
1464
static inline void
-
 
1465
assert_rpm_atomic_end(struct drm_i915_private *dev_priv, int begin_seq)
-
 
1466
{
-
 
1467
	WARN_ONCE(atomic_read(&dev_priv->pm.atomic_seq) != begin_seq,
-
 
1468
		  "HW access outside of RPM atomic section\n");
-
 
1469
}
-
 
1470
 
-
 
1471
/**
-
 
1472
 * disable_rpm_wakeref_asserts - disable the RPM assert checks
-
 
1473
 * @dev_priv: i915 device instance
-
 
1474
 *
-
 
1475
 * This function disable asserts that check if we hold an RPM wakelock
-
 
1476
 * reference, while keeping the device-not-suspended checks still enabled.
-
 
1477
 * It's meant to be used only in special circumstances where our rule about
-
 
1478
 * the wakelock refcount wrt. the device power state doesn't hold. According
-
 
1479
 * to this rule at any point where we access the HW or want to keep the HW in
-
 
1480
 * an active state we must hold an RPM wakelock reference acquired via one of
-
 
1481
 * the intel_runtime_pm_get() helpers. Currently there are a few special spots
-
 
1482
 * where this rule doesn't hold: the IRQ and suspend/resume handlers, the
-
 
1483
 * forcewake release timer, and the GPU RPS and hangcheck works. All other
-
 
1484
 * users should avoid using this function.
-
 
1485
 *
-
 
1486
 * Any calls to this function must have a symmetric call to
-
 
1487
 * enable_rpm_wakeref_asserts().
-
 
1488
 */
-
 
1489
static inline void
-
 
1490
disable_rpm_wakeref_asserts(struct drm_i915_private *dev_priv)
-
 
1491
{
-
 
1492
	atomic_inc(&dev_priv->pm.wakeref_count);
-
 
1493
}
-
 
1494
 
-
 
1495
/**
-
 
1496
 * enable_rpm_wakeref_asserts - re-enable the RPM assert checks
-
 
1497
 * @dev_priv: i915 device instance
-
 
1498
 *
-
 
1499
 * This function re-enables the RPM assert checks after disabling them with
-
 
1500
 * disable_rpm_wakeref_asserts. It's meant to be used only in special
-
 
1501
 * circumstances otherwise its use should be avoided.
-
 
1502
 *
-
 
1503
 * Any calls to this function must have a symmetric call to
-
 
1504
 * disable_rpm_wakeref_asserts().
-
 
1505
 */
-
 
1506
static inline void
-
 
1507
enable_rpm_wakeref_asserts(struct drm_i915_private *dev_priv)
-
 
1508
{
-
 
1509
	atomic_dec(&dev_priv->pm.wakeref_count);
-
 
1510
}
-
 
1511
 
-
 
1512
/* TODO: convert users of these to rely instead on proper RPM refcounting */
-
 
1513
#define DISABLE_RPM_WAKEREF_ASSERTS(dev_priv)	\
-
 
1514
	disable_rpm_wakeref_asserts(dev_priv)
-
 
1515
 
-
 
1516
#define ENABLE_RPM_WAKEREF_ASSERTS(dev_priv)	\
1377
void intel_display_power_put(struct drm_i915_private *dev_priv,
1517
	enable_rpm_wakeref_asserts(dev_priv)
-
 
1518
 
1378
			     enum intel_display_power_domain domain);
1519
void intel_runtime_pm_get(struct drm_i915_private *dev_priv);
1379
void intel_runtime_pm_get(struct drm_i915_private *dev_priv);
1520
bool intel_runtime_pm_get_if_in_use(struct drm_i915_private *dev_priv);
Line 1380... Line 1521...
1380
void intel_runtime_pm_get_noresume(struct drm_i915_private *dev_priv);
1521
void intel_runtime_pm_get_noresume(struct drm_i915_private *dev_priv);
Line 1391... Line 1532...
1391
/* intel_pm.c */
1532
/* intel_pm.c */
1392
void intel_init_clock_gating(struct drm_device *dev);
1533
void intel_init_clock_gating(struct drm_device *dev);
1393
void intel_suspend_hw(struct drm_device *dev);
1534
void intel_suspend_hw(struct drm_device *dev);
1394
int ilk_wm_max_level(const struct drm_device *dev);
1535
int ilk_wm_max_level(const struct drm_device *dev);
1395
void intel_update_watermarks(struct drm_crtc *crtc);
1536
void intel_update_watermarks(struct drm_crtc *crtc);
1396
void intel_update_sprite_watermarks(struct drm_plane *plane,
-
 
1397
				    struct drm_crtc *crtc,
-
 
1398
				    uint32_t sprite_width,
-
 
1399
				    uint32_t sprite_height,
-
 
1400
				    int pixel_size,
-
 
1401
				    bool enabled, bool scaled);
-
 
1402
void intel_init_pm(struct drm_device *dev);
1537
void intel_init_pm(struct drm_device *dev);
1403
void intel_pm_setup(struct drm_device *dev);
1538
void intel_pm_setup(struct drm_device *dev);
1404
void intel_gpu_ips_init(struct drm_i915_private *dev_priv);
1539
void intel_gpu_ips_init(struct drm_i915_private *dev_priv);
1405
void intel_gpu_ips_teardown(void);
1540
void intel_gpu_ips_teardown(void);
1406
void intel_init_gt_powersave(struct drm_device *dev);
1541
void intel_init_gt_powersave(struct drm_device *dev);
Line 1424... Line 1559...
1424
void skl_ddb_get_hw_state(struct drm_i915_private *dev_priv,
1559
void skl_ddb_get_hw_state(struct drm_i915_private *dev_priv,
1425
			  struct skl_ddb_allocation *ddb /* out */);
1560
			  struct skl_ddb_allocation *ddb /* out */);
1426
uint32_t ilk_pipe_pixel_rate(const struct intel_crtc_state *pipe_config);
1561
uint32_t ilk_pipe_pixel_rate(const struct intel_crtc_state *pipe_config);
Line 1427... Line 1562...
1427
 
1562
 
1428
/* intel_sdvo.c */
1563
/* intel_sdvo.c */
-
 
1564
bool intel_sdvo_init(struct drm_device *dev,
Line 1429... Line 1565...
1429
bool intel_sdvo_init(struct drm_device *dev, uint32_t sdvo_reg, bool is_sdvob);
1565
		     i915_reg_t reg, enum port port);
1430
 
1566
 
1431
 
1567
 
Line 1472... Line 1608...
1472
struct drm_plane_state *intel_plane_duplicate_state(struct drm_plane *plane);
1608
struct drm_plane_state *intel_plane_duplicate_state(struct drm_plane *plane);
1473
void intel_plane_destroy_state(struct drm_plane *plane,
1609
void intel_plane_destroy_state(struct drm_plane *plane,
1474
			       struct drm_plane_state *state);
1610
			       struct drm_plane_state *state);
1475
extern const struct drm_plane_helper_funcs intel_plane_helper_funcs;
1611
extern const struct drm_plane_helper_funcs intel_plane_helper_funcs;
Line -... Line 1612...
-
 
1612
 
-
 
1613
int drm_core_init(void);
-
 
1614
void set_fake_framebuffer();
-
 
1615
int kolibri_framebuffer_init(void *param);
-
 
1616
void shmem_file_delete(struct file *filep);
-
 
1617
void intel_fbdev_initial_config(void *data, async_cookie_t cookie);
-
 
1618
int drm_get_pci_dev(struct pci_dev *pdev, const struct pci_device_id *ent,
-
 
1619
            struct drm_driver *driver);
1476
 
1620