Subversion Repositories Kolibri OS

Rev

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

Rev 5354 Rev 6084
Line 33... Line 33...
33
#include 
33
#include 
34
#include 
34
#include 
35
#include 
35
#include 
36
#include 
36
#include 
37
#include 
37
#include 
38
 
-
 
39
#define DIV_ROUND_CLOSEST_ULL(ll, d)	\
38
#include 
40
({ unsigned long long _tmp = (ll)+(d)/2; do_div(_tmp, d); _tmp; })
-
 
Line 41... Line 39...
41
 
39
 
42
/**
40
/**
43
 * _wait_for - magic (register) wait macro
41
 * _wait_for - magic (register) wait macro
44
 *
42
 *
Line 130... Line 128...
130
	int preferred_bpp;
128
	int preferred_bpp;
131
};
129
};
Line 132... Line 130...
132
 
130
 
133
struct intel_encoder {
131
struct intel_encoder {
134
	struct drm_encoder base;
-
 
135
	/*
-
 
136
	 * The new crtc this encoder will be driven from. Only differs from
-
 
137
	 * base->crtc while a modeset is in progress.
-
 
138
	 */
-
 
Line 139... Line 132...
139
	struct intel_crtc *new_crtc;
132
	struct drm_encoder base;
140
 
133
 
141
	enum intel_output_type type;
-
 
142
	unsigned int cloneable;
134
	enum intel_output_type type;
143
	bool connectors_active;
135
	unsigned int cloneable;
144
	void (*hot_plug)(struct intel_encoder *);
136
	void (*hot_plug)(struct intel_encoder *);
145
	bool (*compute_config)(struct intel_encoder *,
137
	bool (*compute_config)(struct intel_encoder *,
146
			       struct intel_crtc_config *);
138
			       struct intel_crtc_state *);
147
	void (*pre_pll_enable)(struct intel_encoder *);
139
	void (*pre_pll_enable)(struct intel_encoder *);
148
	void (*pre_enable)(struct intel_encoder *);
140
	void (*pre_enable)(struct intel_encoder *);
149
	void (*enable)(struct intel_encoder *);
141
	void (*enable)(struct intel_encoder *);
150
	void (*mode_set)(struct intel_encoder *intel_encoder);
142
	void (*mode_set)(struct intel_encoder *intel_encoder);
-
 
143
	void (*disable)(struct intel_encoder *);
151
	void (*disable)(struct intel_encoder *);
144
	void (*post_disable)(struct intel_encoder *);
152
	void (*post_disable)(struct intel_encoder *);
145
	void (*post_pll_disable)(struct intel_encoder *);
153
	/* Read out the current hw state of this connector, returning true if
146
	/* Read out the current hw state of this connector, returning true if
154
	 * the encoder is active. If the encoder is enabled it also set the pipe
147
	 * the encoder is active. If the encoder is enabled it also set the pipe
155
	 * it is connected to in the pipe parameter. */
148
	 * it is connected to in the pipe parameter. */
156
	bool (*get_hw_state)(struct intel_encoder *, enum pipe *pipe);
149
	bool (*get_hw_state)(struct intel_encoder *, enum pipe *pipe);
157
	/* Reconstructs the equivalent mode flags for the current hardware
150
	/* Reconstructs the equivalent mode flags for the current hardware
158
	 * state. This must be called _after_ display->get_pipe_config has
151
	 * state. This must be called _after_ display->get_pipe_config has
159
	 * pre-filled the pipe config. Note that intel_encoder->base.crtc must
152
	 * pre-filled the pipe config. Note that intel_encoder->base.crtc must
160
	 * be set correctly before calling this function. */
153
	 * be set correctly before calling this function. */
161
	void (*get_config)(struct intel_encoder *,
154
	void (*get_config)(struct intel_encoder *,
162
			   struct intel_crtc_config *pipe_config);
155
			   struct intel_crtc_state *pipe_config);
163
	/*
156
	/*
164
	 * Called during system suspend after all pending requests for the
157
	 * Called during system suspend after all pending requests for the
165
	 * encoder are flushed (for example for DP AUX transactions) and
158
	 * encoder are flushed (for example for DP AUX transactions) and
Line 182... Line 175...
182
		u32 min;
175
		u32 min;
183
		u32 max;
176
		u32 max;
184
		bool enabled;
177
		bool enabled;
185
		bool combination_mode;	/* gen 2/4 only */
178
		bool combination_mode;	/* gen 2/4 only */
186
		bool active_low_pwm;
179
		bool active_low_pwm;
-
 
180
 
-
 
181
		/* PWM chip */
-
 
182
		bool util_pin_active_low;	/* bxt+ */
-
 
183
		u8 controller;		/* bxt+ only */
-
 
184
		struct pwm_device *pwm;
-
 
185
 
187
		struct backlight_device *device;
186
		struct backlight_device *device;
188
	} backlight;
-
 
Line -... Line 187...
-
 
187
 
-
 
188
		/* Connector and platform specific backlight functions */
-
 
189
		int (*setup)(struct intel_connector *connector, enum pipe pipe);
-
 
190
		uint32_t (*get)(struct intel_connector *connector);
-
 
191
		void (*set)(struct intel_connector *connector, uint32_t level);
-
 
192
		void (*disable)(struct intel_connector *connector);
-
 
193
		void (*enable)(struct intel_connector *connector);
-
 
194
		uint32_t (*hz_to_pwm)(struct intel_connector *connector,
189
 
195
				      uint32_t hz);
-
 
196
		void (*power)(struct intel_connector *, bool enable);
190
	void (*backlight_power)(struct intel_connector *, bool enable);
197
	} backlight;
Line 191... Line 198...
191
};
198
};
192
 
199
 
193
struct intel_connector {
200
struct intel_connector {
194
	struct drm_connector base;
201
	struct drm_connector base;
195
	/*
202
	/*
196
	 * The fixed encoder this connector is connected to.
203
	 * The fixed encoder this connector is connected to.
Line 197... Line -...
197
	 */
-
 
198
	struct intel_encoder *encoder;
-
 
199
 
-
 
200
	/*
-
 
201
	 * The new encoder this connector will be driven. Only differs from
-
 
202
	 * encoder while a modeset is in progress.
-
 
203
	 */
204
	 */
204
	struct intel_encoder *new_encoder;
205
	struct intel_encoder *encoder;
205
 
206
 
Line 206... Line 207...
206
	/* Reads out the current hw, returning true if the connector is enabled
207
	/* Reads out the current hw, returning true if the connector is enabled
Line 241... Line 242...
241
	int	vco;
242
	int	vco;
242
	int	m;
243
	int	m;
243
	int	p;
244
	int	p;
244
} intel_clock_t;
245
} intel_clock_t;
Line -... Line 246...
-
 
246
 
-
 
247
struct intel_atomic_state {
-
 
248
	struct drm_atomic_state base;
-
 
249
 
-
 
250
	unsigned int cdclk;
-
 
251
	bool dpll_set;
-
 
252
	struct intel_shared_dpll_config shared_dpll[I915_NUM_PLLS];
-
 
253
};
245
 
254
 
246
struct intel_plane_state {
-
 
247
	struct drm_crtc *crtc;
255
struct intel_plane_state {
248
	struct drm_framebuffer *fb;
256
	struct drm_plane_state base;
249
	struct drm_rect src;
257
	struct drm_rect src;
250
	struct drm_rect dst;
258
	struct drm_rect dst;
251
	struct drm_rect clip;
-
 
252
	struct drm_rect orig_src;
-
 
253
	struct drm_rect orig_dst;
259
	struct drm_rect clip;
-
 
260
	bool visible;
-
 
261
 
-
 
262
	/*
-
 
263
	 * scaler_id
-
 
264
	 *    = -1 : not using a scaler
-
 
265
	 *    >=  0 : using a scalers
-
 
266
	 *
-
 
267
	 * plane requiring a scaler:
-
 
268
	 *   - During check_plane, its bit is set in
-
 
269
	 *     crtc_state->scaler_state.scaler_users by calling helper function
-
 
270
	 *     update_scaler_plane.
-
 
271
	 *   - scaler_id indicates the scaler it got assigned.
-
 
272
	 *
-
 
273
	 * plane doesn't require a scaler:
-
 
274
	 *   - this can happen when scaling is no more required or plane simply
-
 
275
	 *     got disabled.
-
 
276
	 *   - During check_plane, corresponding bit is reset in
-
 
277
	 *     crtc_state->scaler_state.scaler_users by calling helper function
-
 
278
	 *     update_scaler_plane.
-
 
279
	 */
-
 
280
	int scaler_id;
-
 
281
 
254
	bool visible;
282
	struct drm_intel_sprite_colorkey ckey;
Line 255... Line 283...
255
};
283
};
-
 
284
 
256
 
285
struct intel_initial_plane_config {
257
struct intel_plane_config {
286
	struct intel_framebuffer *fb;
258
	bool tiled;
287
	unsigned int tiling;
259
	int size;
288
	int size;
Line -... Line 289...
-
 
289
	u32 base;
-
 
290
};
-
 
291
 
-
 
292
#define SKL_MIN_SRC_W 8
-
 
293
#define SKL_MAX_SRC_W 4096
-
 
294
#define SKL_MIN_SRC_H 8
-
 
295
#define SKL_MAX_SRC_H 4096
-
 
296
#define SKL_MIN_DST_W 8
-
 
297
#define SKL_MAX_DST_W 4096
-
 
298
#define SKL_MIN_DST_H 8
-
 
299
#define SKL_MAX_DST_H 4096
-
 
300
 
-
 
301
struct intel_scaler {
-
 
302
	int in_use;
-
 
303
	uint32_t mode;
-
 
304
};
-
 
305
 
-
 
306
struct intel_crtc_scaler_state {
-
 
307
#define SKL_NUM_SCALERS 2
-
 
308
	struct intel_scaler scalers[SKL_NUM_SCALERS];
-
 
309
 
-
 
310
	/*
-
 
311
	 * scaler_users: keeps track of users requesting scalers on this crtc.
-
 
312
	 *
-
 
313
	 *     If a bit is set, a user is using a scaler.
-
 
314
	 *     Here user can be a plane or crtc as defined below:
-
 
315
	 *       bits 0-30 - plane (bit position is index from drm_plane_index)
-
 
316
	 *       bit 31    - crtc
-
 
317
	 *
-
 
318
	 * Instead of creating a new index to cover planes and crtc, using
-
 
319
	 * existing drm_plane_index for planes which is well less than 31
-
 
320
	 * planes and bit 31 for crtc. This should be fine to cover all
-
 
321
	 * our platforms.
-
 
322
	 *
-
 
323
	 * intel_atomic_setup_scalers will setup available scalers to users
-
 
324
	 * requesting scalers. It will gracefully fail if request exceeds
-
 
325
	 * avilability.
-
 
326
	 */
-
 
327
#define SKL_CRTC_INDEX 31
-
 
328
	unsigned scaler_users;
-
 
329
 
-
 
330
	/* scaler used by crtc for panel fitting purpose */
-
 
331
	int scaler_id;
-
 
332
};
-
 
333
 
260
	u32 base;
334
/* drm_mode->private_flags */
-
 
335
#define I915_MODE_FLAG_INHERITED 1
-
 
336
 
261
};
337
struct intel_crtc_state {
262
 
338
	struct drm_crtc_state base;
263
struct intel_crtc_config {
339
 
264
	/**
340
	/**
265
	 * quirks - bitfield with hw state readout quirks
341
	 * quirks - bitfield with hw state readout quirks
266
	 *
342
	 *
267
	 * For various reasons the hw state readout code might not be able to
343
	 * For various reasons the hw state readout code might not be able to
268
	 * completely faithfully read out the current state. These cases are
344
	 * completely faithfully read out the current state. These cases are
269
	 * tracked with quirk flags so that fastboot and state checker can act
345
	 * tracked with quirk flags so that fastboot and state checker can act
270
	 * accordingly.
-
 
271
	 */
346
	 * accordingly.
Line 272... Line -...
272
#define PIPE_CONFIG_QUIRK_MODE_SYNC_FLAGS (1<<0) /* unreliable sync mode.flags */
-
 
273
#define PIPE_CONFIG_QUIRK_INHERITED_MODE	(1<<1) /* mode inherited from firmware */
-
 
274
	unsigned long quirks;
-
 
275
 
-
 
276
	/* User requested mode, only valid as a starting point to
-
 
277
	 * compute adjusted_mode, except in the case of (S)DVO where
-
 
278
	 * it's also for the output timings of the (S)DVO chip.
-
 
279
	 * adjusted_mode will then correspond to the S(DVO) chip's
-
 
280
	 * preferred input timings. */
347
	 */
Line 281... Line 348...
281
	struct drm_display_mode requested_mode;
348
#define PIPE_CONFIG_QUIRK_MODE_SYNC_FLAGS	(1<<0) /* unreliable sync mode.flags */
282
	/* Actual pipe timings ie. what we program into the pipe timing
349
	unsigned long quirks;
283
	 * registers. adjusted_mode.crtc_clock is the pipe pixel clock. */
350
 
284
	struct drm_display_mode adjusted_mode;
351
	bool update_pipe;
Line 367... Line 434...
367
	int port_clock;
434
	int port_clock;
Line 368... Line 435...
368
 
435
 
369
	/* Used by SDVO (and if we ever fix it, HDMI). */
436
	/* Used by SDVO (and if we ever fix it, HDMI). */
Line -... Line 437...
-
 
437
	unsigned pixel_multiplier;
-
 
438
 
370
	unsigned pixel_multiplier;
439
	uint8_t lane_count;
371
 
440
 
372
	/* Panel fitter controls for gen2-gen4 + VLV */
441
	/* Panel fitter controls for gen2-gen4 + VLV */
373
	struct {
442
	struct {
374
		u32 control;
443
		u32 control;
Line 392... Line 461...
392
 
461
 
Line 393... Line 462...
393
	bool double_wide;
462
	bool double_wide;
394
 
463
 
-
 
464
	bool dp_encoder_is_mst;
-
 
465
	int pbn;
-
 
466
 
-
 
467
	struct intel_crtc_scaler_state scaler_state;
-
 
468
 
-
 
469
	/* w/a for waiting 2 vblanks during crtc enable */
-
 
470
	enum pipe hsw_workaround_pipe;
-
 
471
};
-
 
472
 
-
 
473
struct vlv_wm_state {
-
 
474
	struct vlv_pipe_wm wm[3];
-
 
475
	struct vlv_sr_wm sr[3];
-
 
476
	uint8_t num_active_planes;
-
 
477
	uint8_t num_levels;
395
	bool dp_encoder_is_mst;
478
	uint8_t level;
Line 396... Line 479...
396
	int pbn;
479
	bool cxsr;
397
};
480
};
398
 
481
 
Line 404... Line 487...
404
	bool sprites_enabled;
487
	bool sprites_enabled;
405
	bool sprites_scaled;
488
	bool sprites_scaled;
406
};
489
};
Line 407... Line 490...
407
 
490
 
408
struct intel_mmio_flip {
-
 
409
	u32 seqno;
-
 
410
	struct intel_engine_cs *ring;
491
struct intel_mmio_flip {
-
 
492
	struct work_struct work;
-
 
493
	struct drm_i915_private *i915;
-
 
494
	struct drm_i915_gem_request *req;
411
	struct work_struct work;
495
	struct intel_crtc *crtc;
Line 412... Line 496...
412
};
496
};
413
 
497
 
414
struct skl_pipe_wm {
498
struct skl_pipe_wm {
415
	struct skl_wm_level wm[8];
499
	struct skl_wm_level wm[8];
416
	struct skl_wm_level trans_wm;
500
	struct skl_wm_level trans_wm;
Line -... Line 501...
-
 
501
	uint32_t linetime;
-
 
502
};
-
 
503
 
-
 
504
/*
-
 
505
 * Tracking of operations that need to be performed at the beginning/end of an
-
 
506
 * atomic commit, outside the atomic section where interrupts are disabled.
-
 
507
 * These are generally operations that grab mutexes or might otherwise sleep
-
 
508
 * and thus can't be run with interrupts disabled.
-
 
509
 */
-
 
510
struct intel_crtc_atomic_commit {
-
 
511
	/* Sleepable operations to perform before commit */
-
 
512
	bool wait_for_flips;
-
 
513
	bool disable_fbc;
-
 
514
	bool disable_ips;
-
 
515
	bool disable_cxsr;
-
 
516
	bool pre_disable_primary;
-
 
517
	bool update_wm_pre, update_wm_post;
-
 
518
	unsigned disabled_planes;
-
 
519
 
-
 
520
	/* Sleepable operations to perform after commit */
-
 
521
	unsigned fb_bits;
-
 
522
	bool wait_vblank;
-
 
523
	bool update_fbc;
-
 
524
	bool post_enable_primary;
417
	uint32_t linetime;
525
	unsigned update_sprite_watermarks;
418
};
526
};
419
 
527
 
420
struct intel_crtc {
528
struct intel_crtc {
421
	struct drm_crtc base;
529
	struct drm_crtc base;
Line 427... Line 535...
427
	 * that crtc->enabled is set, i.e. the current mode configuration has
535
	 * that crtc->enabled is set, i.e. the current mode configuration has
428
	 * some outputs connected to this crtc.
536
	 * some outputs connected to this crtc.
429
	 */
537
	 */
430
	bool active;
538
	bool active;
431
	unsigned long enabled_power_domains;
539
	unsigned long enabled_power_domains;
432
	bool primary_enabled; /* is the primary plane (partially) visible? */
-
 
433
	bool lowfreq_avail;
540
	bool lowfreq_avail;
434
	struct intel_overlay *overlay;
541
	struct intel_overlay *overlay;
435
	struct intel_unpin_work *unpin_work;
542
	struct intel_unpin_work *unpin_work;
Line 436... Line 543...
436
 
543
 
Line 437... Line 544...
437
	atomic_t unpin_work_count;
544
	atomic_t unpin_work_count;
438
 
545
 
439
	/* Display surface base address adjustement for pageflips. Note that on
546
	/* Display surface base address adjustement for pageflips. Note that on
440
	 * gen4+ this only adjusts up to a tile, offsets within a tile are
547
	 * gen4+ this only adjusts up to a tile, offsets within a tile are
-
 
548
	 * handled in the hw itself (with the TILEOFF register). */
-
 
549
	unsigned long dspaddr_offset;
Line 441... Line -...
441
	 * handled in the hw itself (with the TILEOFF register). */
-
 
442
	unsigned long dspaddr_offset;
550
	int adjusted_x;
443
 
-
 
444
	struct drm_i915_gem_object *cursor_bo;
551
	int adjusted_y;
445
	uint32_t cursor_addr;
552
 
446
	int16_t cursor_width, cursor_height;
553
	uint32_t cursor_addr;
Line 447... Line -...
447
	uint32_t cursor_cntl;
-
 
448
	uint32_t cursor_size;
554
	uint32_t cursor_cntl;
449
	uint32_t cursor_base;
-
 
450
 
-
 
Line 451... Line 555...
451
	struct intel_plane_config plane_config;
555
	uint32_t cursor_size;
452
	struct intel_crtc_config config;
556
	uint32_t cursor_base;
Line 453... Line 557...
453
	struct intel_crtc_config *new_config;
557
 
Line 464... Line 568...
464
	struct {
568
	struct {
465
		/* watermarks currently being used  */
569
		/* watermarks currently being used  */
466
		struct intel_pipe_wm active;
570
		struct intel_pipe_wm active;
467
		/* SKL wm values currently in use */
571
		/* SKL wm values currently in use */
468
		struct skl_pipe_wm skl_active;
572
		struct skl_pipe_wm skl_active;
-
 
573
		/* allow CxSR on this pipe */
-
 
574
		bool cxsr_allowed;
469
	} wm;
575
	} wm;
Line 470... Line 576...
470
 
576
 
-
 
577
	int scanline_offset;
-
 
578
 
-
 
579
	struct {
-
 
580
		unsigned start_vbl_count;
-
 
581
		ktime_t start_vbl_time;
-
 
582
		int min_vbl, max_vbl;
-
 
583
		int scanline_start;
-
 
584
	} debug;
471
	int scanline_offset;
585
 
-
 
586
	struct intel_crtc_atomic_commit atomic;
-
 
587
 
-
 
588
	/* scalers available on this crtc */
-
 
589
	int num_scalers;
-
 
590
 
472
	struct intel_mmio_flip mmio_flip;
591
	struct vlv_wm_state wm_state;
Line 473... Line 592...
473
};
592
};
474
 
593
 
475
struct intel_plane_wm_parameters {
594
struct intel_plane_wm_parameters {
-
 
595
	uint32_t horiz_pixels;
-
 
596
	uint32_t vert_pixels;
-
 
597
	/*
-
 
598
	 *   For packed pixel formats:
-
 
599
	 *     bytes_per_pixel - holds bytes per pixel
-
 
600
	 *   For planar pixel formats:
-
 
601
	 *     bytes_per_pixel - holds bytes per pixel for uv-plane
476
	uint32_t horiz_pixels;
602
	 *     y_bytes_per_pixel - holds bytes per pixel for y-plane
-
 
603
	 */
477
	uint32_t vert_pixels;
604
	uint8_t bytes_per_pixel;
478
	uint8_t bytes_per_pixel;
605
	uint8_t y_bytes_per_pixel;
-
 
606
	bool enabled;
-
 
607
	bool scaled;
-
 
608
	u64 tiling;
479
	bool enabled;
609
	unsigned int rotation;
Line 480... Line 610...
480
	bool scaled;
610
	uint16_t fifo_size;
481
};
611
};
482
 
612
 
483
struct intel_plane {
613
struct intel_plane {
484
	struct drm_plane base;
-
 
485
	int plane;
614
	struct drm_plane base;
486
	enum pipe pipe;
615
	int plane;
487
	struct drm_i915_gem_object *obj;
-
 
488
	bool can_scale;
-
 
489
	int max_downscale;
-
 
490
	int crtc_x, crtc_y;
616
	enum pipe pipe;
491
	unsigned int crtc_w, crtc_h;
-
 
Line 492... Line 617...
492
	uint32_t src_x, src_y;
617
	bool can_scale;
493
	uint32_t src_w, src_h;
618
	int max_downscale;
494
	unsigned int rotation;
619
	uint32_t frontbuffer_bit;
495
 
620
 
496
	/* Since we need to change the watermarks before/after
621
	/* Since we need to change the watermarks before/after
497
	 * enabling/disabling the planes, we need to store the parameters here
622
	 * enabling/disabling the planes, we need to store the parameters here
Line -... Line 623...
-
 
623
	 * as the other pieces of the struct may not reflect the values we want
-
 
624
	 * for the watermark calculations. Currently only Haswell uses this.
-
 
625
	 */
-
 
626
	struct intel_plane_wm_parameters wm;
-
 
627
 
-
 
628
	/*
498
	 * as the other pieces of the struct may not reflect the values we want
629
	 * NOTE: Do not place new plane state fields here (e.g., when adding
499
	 * for the watermark calculations. Currently only Haswell uses this.
630
	 * new plane properties).  New runtime state should now be placed in
500
	 */
631
	 * the intel_plane_state structure and accessed via drm_plane->state.
501
	struct intel_plane_wm_parameters wm;
-
 
502
 
632
	 */
503
	void (*update_plane)(struct drm_plane *plane,
633
 
504
			     struct drm_crtc *crtc,
634
	void (*update_plane)(struct drm_plane *plane,
505
			     struct drm_framebuffer *fb,
635
			     struct drm_crtc *crtc,
506
			     struct drm_i915_gem_object *obj,
636
			     struct drm_framebuffer *fb,
507
			     int crtc_x, int crtc_y,
637
			     int crtc_x, int crtc_y,
508
			     unsigned int crtc_w, unsigned int crtc_h,
638
			     unsigned int crtc_w, unsigned int crtc_h,
-
 
639
			     uint32_t x, uint32_t y,
509
			     uint32_t x, uint32_t y,
640
			     uint32_t src_w, uint32_t src_h);
510
			     uint32_t src_w, uint32_t src_h);
641
	void (*disable_plane)(struct drm_plane *plane,
511
	void (*disable_plane)(struct drm_plane *plane,
642
			      struct drm_crtc *crtc);
512
			      struct drm_crtc *crtc);
643
	int (*check_plane)(struct drm_plane *plane,
Line 513... Line 644...
513
	int (*update_colorkey)(struct drm_plane *plane,
644
			   struct intel_crtc_state *crtc_state,
514
			       struct drm_intel_sprite_colorkey *key);
645
			   struct intel_plane_state *state);
515
	void (*get_colorkey)(struct drm_plane *plane,
646
	void (*commit_plane)(struct drm_plane *plane,
Line 533... Line 664...
533
	unsigned long display_hpll_disable;
664
	unsigned long display_hpll_disable;
534
	unsigned long cursor_sr;
665
	unsigned long cursor_sr;
535
	unsigned long cursor_hpll_disable;
666
	unsigned long cursor_hpll_disable;
536
};
667
};
Line -... Line 668...
-
 
668
 
537
 
669
#define to_intel_atomic_state(x) container_of(x, struct intel_atomic_state, base)
-
 
670
#define to_intel_crtc(x) container_of(x, struct intel_crtc, base)
538
#define to_intel_crtc(x) container_of(x, struct intel_crtc, base)
671
#define to_intel_crtc_state(x) container_of(x, struct intel_crtc_state, base)
539
#define to_intel_connector(x) container_of(x, struct intel_connector, base)
672
#define to_intel_connector(x) container_of(x, struct intel_connector, base)
540
#define to_intel_encoder(x) container_of(x, struct intel_encoder, base)
673
#define to_intel_encoder(x) container_of(x, struct intel_encoder, base)
541
#define to_intel_framebuffer(x) container_of(x, struct intel_framebuffer, base)
674
#define to_intel_framebuffer(x) container_of(x, struct intel_framebuffer, base)
-
 
675
#define to_intel_plane(x) container_of(x, struct intel_plane, base)
542
#define to_intel_plane(x) container_of(x, struct intel_plane, base)
676
#define to_intel_plane_state(x) container_of(x, struct intel_plane_state, base)
Line 543... Line 677...
543
#define intel_fb_obj(x) (x ? to_intel_framebuffer(x)->obj : NULL)
677
#define intel_fb_obj(x) (x ? to_intel_framebuffer(x)->obj : NULL)
544
 
678
 
545
struct intel_hdmi {
679
struct intel_hdmi {
546
	u32 hdmi_reg;
680
	u32 hdmi_reg;
547
	int ddc_bus;
681
	int ddc_bus;
548
	uint32_t color_range;
682
	bool limited_color_range;
549
	bool color_range_auto;
683
	bool color_range_auto;
550
	bool has_hdmi_sink;
684
	bool has_hdmi_sink;
551
	bool has_audio;
685
	bool has_audio;
552
	enum hdmi_force_audio force_audio;
686
	enum hdmi_force_audio force_audio;
-
 
687
	bool rgb_quant_range_selectable;
553
	bool rgb_quant_range_selectable;
688
	enum hdmi_picture_aspect aspect_ratio;
554
	enum hdmi_picture_aspect aspect_ratio;
689
	struct intel_connector *attached_connector;
555
	void (*write_infoframe)(struct drm_encoder *encoder,
690
	void (*write_infoframe)(struct drm_encoder *encoder,
556
				enum hdmi_infoframe_type type,
691
				enum hdmi_infoframe_type type,
557
				const void *frame, ssize_t len);
692
				const void *frame, ssize_t len);
558
	void (*set_infoframes)(struct drm_encoder *encoder,
693
	void (*set_infoframes)(struct drm_encoder *encoder,
559
			       bool enable,
694
			       bool enable,
560
			       struct drm_display_mode *adjusted_mode);
695
			       const struct drm_display_mode *adjusted_mode);
Line 561... Line 696...
561
	bool (*infoframe_enabled)(struct drm_encoder *encoder);
696
	bool (*infoframe_enabled)(struct drm_encoder *encoder);
562
};
697
};
Line 563... Line 698...
563
 
698
 
-
 
699
struct intel_dp_mst_encoder;
564
struct intel_dp_mst_encoder;
700
#define DP_MAX_DOWNSTREAM_PORTS		0x10
-
 
701
 
565
#define DP_MAX_DOWNSTREAM_PORTS		0x10
702
/*
-
 
703
 * enum link_m_n_set:
-
 
704
 *	When platform provides two set of M_N registers for dp, we can
-
 
705
 *	program them and switch between them incase of DRRS.
-
 
706
 *	But When only one such register is provided, we have to program the
-
 
707
 *	required divider value on that registers itself based on the DRRS state.
-
 
708
 *
566
 
709
 * M1_N1	: Program dp_m_n on M1_N1 registers
567
/**
710
 *			  dp_m2_n2 on M2_N2 registers (If supported)
-
 
711
 *
568
 * HIGH_RR is the highest eDP panel refresh rate read from EDID
712
 * M2_N2	: Program dp_m2_n2 on M1_N1 registers
-
 
713
 *			  M2_N2 registers are not supported
569
 * LOW_RR is the lowest eDP panel refresh rate found from EDID
714
 */
-
 
715
 
-
 
716
enum link_m_n_set {
-
 
717
	/* Sets the m1_n1 and m2_n2 */
-
 
718
	M1_N1 = 0,
570
 * parsing for same resolution.
719
	M2_N2
-
 
720
};
571
 */
721
 
572
enum edp_drrs_refresh_rate_type {
722
struct sink_crc {
Line 573... Line 723...
573
	DRRS_HIGH_RR,
723
	bool started;
574
	DRRS_LOW_RR,
724
	u8 last_crc[6];
575
	DRRS_MAX_RR, /* RR count */
725
	int last_count;
576
};
726
};
-
 
727
 
-
 
728
struct intel_dp {
577
 
729
	uint32_t output_reg;
578
struct intel_dp {
730
	uint32_t aux_ch_ctl_reg;
579
	uint32_t output_reg;
731
	uint32_t DP;
580
	uint32_t aux_ch_ctl_reg;
732
	int link_rate;
581
	uint32_t DP;
-
 
582
	bool has_audio;
-
 
583
	enum hdmi_force_audio force_audio;
733
	uint8_t lane_count;
584
	uint32_t color_range;
734
	bool has_audio;
585
	bool color_range_auto;
735
	enum hdmi_force_audio force_audio;
-
 
736
	bool limited_color_range;
-
 
737
	bool color_range_auto;
-
 
738
	uint8_t dpcd[DP_RECEIVER_CAP_SIZE];
-
 
739
	uint8_t psr_dpcd[EDP_PSR_RECEIVER_CAP_SIZE];
586
	uint8_t link_bw;
740
	uint8_t downstream_ports[DP_MAX_DOWNSTREAM_PORTS];
587
	uint8_t lane_count;
741
	/* sink rates as reported by DP_SUPPORTED_LINK_RATES */
588
	uint8_t dpcd[DP_RECEIVER_CAP_SIZE];
742
	uint8_t num_sink_rates;
589
	uint8_t psr_dpcd[EDP_PSR_RECEIVER_CAP_SIZE];
743
	int sink_rates[DP_MAX_SUPPORTED_RATES];
590
	uint8_t downstream_ports[DP_MAX_DOWNSTREAM_PORTS];
744
	struct sink_crc sink_crc;
Line 606... Line 760...
606
	 * this port. Only relevant on VLV/CHV.
760
	 * this port. Only relevant on VLV/CHV.
607
	 */
761
	 */
608
	enum pipe pps_pipe;
762
	enum pipe pps_pipe;
609
	struct edp_power_seq pps_delays;
763
	struct edp_power_seq pps_delays;
Line 610... Line -...
610
 
-
 
611
	bool use_tps3;
764
 
612
	bool can_mst; /* this port supports mst */
765
	bool can_mst; /* this port supports mst */
613
	bool is_mst;
766
	bool is_mst;
614
	int active_mst_links;
767
	int active_mst_links;
615
	/* connector directly attached - won't be use for modeset in mst world */
768
	/* connector directly attached - won't be use for modeset in mst world */
Line 626... Line 779...
626
	 */
779
	 */
627
	uint32_t (*get_aux_send_ctl)(struct intel_dp *dp,
780
	uint32_t (*get_aux_send_ctl)(struct intel_dp *dp,
628
				     bool has_aux_irq,
781
				     bool has_aux_irq,
629
				     int send_bytes,
782
				     int send_bytes,
630
				     uint32_t aux_clock_divider);
783
				     uint32_t aux_clock_divider);
631
	struct {
-
 
632
		enum drrs_support_type type;
-
 
633
		enum edp_drrs_refresh_rate_type refresh_rate_type;
-
 
634
		struct mutex mutex;
-
 
635
	} drrs_state;
784
	bool train_set_valid;
Line -... Line 785...
-
 
785
 
-
 
786
	/* Displayport compliance testing */
-
 
787
	unsigned long compliance_test_type;
-
 
788
	unsigned long compliance_test_data;
636
 
789
	bool compliance_test_active;
Line 637... Line 790...
637
};
790
};
638
 
791
 
639
struct intel_digital_port {
792
struct intel_digital_port {
640
	struct intel_encoder base;
793
	struct intel_encoder base;
641
	enum port port;
794
	enum port port;
642
	u32 saved_port_bits;
795
	u32 saved_port_bits;
643
	struct intel_dp dp;
796
	struct intel_dp dp;
-
 
797
	struct intel_hdmi hdmi;
644
	struct intel_hdmi hdmi;
798
	enum irqreturn (*hpd_pulse)(struct intel_digital_port *, bool);
Line 645... Line 799...
645
	bool (*hpd_pulse)(struct intel_digital_port *, bool);
799
	bool release_cl2_override;
646
};
800
};
647
 
801
 
648
struct intel_dp_mst_encoder {
802
struct intel_dp_mst_encoder {
649
	struct intel_encoder base;
803
	struct intel_encoder base;
650
	enum pipe pipe;
804
	enum pipe pipe;
Line 651... Line 805...
651
	struct intel_digital_port *primary;
805
	struct intel_digital_port *primary;
652
	void *port; /* store this opaque as its illegal to dereference it */
806
	void *port; /* store this opaque as its illegal to dereference it */
653
};
807
};
654
 
808
 
655
static inline int
809
static inline enum dpio_channel
656
vlv_dport_to_channel(struct intel_digital_port *dport)
810
vlv_dport_to_channel(struct intel_digital_port *dport)
Line 664... Line 818...
664
	default:
818
	default:
665
		BUG();
819
		BUG();
666
	}
820
	}
667
}
821
}
Line 668... Line 822...
668
 
822
 
-
 
823
static inline enum dpio_phy
-
 
824
vlv_dport_to_phy(struct intel_digital_port *dport)
-
 
825
{
-
 
826
	switch (dport->port) {
-
 
827
	case PORT_B:
-
 
828
	case PORT_C:
-
 
829
		return DPIO_PHY0;
-
 
830
	case PORT_D:
-
 
831
		return DPIO_PHY1;
-
 
832
	default:
-
 
833
		BUG();
-
 
834
	}
-
 
835
}
-
 
836
 
669
static inline int
837
static inline enum dpio_channel
670
vlv_pipe_to_channel(enum pipe pipe)
838
vlv_pipe_to_channel(enum pipe pipe)
671
{
839
{
672
	switch (pipe) {
840
	switch (pipe) {
673
	case PIPE_A:
841
	case PIPE_A:
Line 695... Line 863...
695
}
863
}
Line 696... Line 864...
696
 
864
 
697
struct intel_unpin_work {
865
struct intel_unpin_work {
698
	struct work_struct work;
866
	struct work_struct work;
699
	struct drm_crtc *crtc;
867
	struct drm_crtc *crtc;
700
	struct drm_i915_gem_object *old_fb_obj;
868
	struct drm_framebuffer *old_fb;
701
	struct drm_i915_gem_object *pending_flip_obj;
869
	struct drm_i915_gem_object *pending_flip_obj;
702
	struct drm_pending_vblank_event *event;
870
	struct drm_pending_vblank_event *event;
703
	atomic_t pending;
871
	atomic_t pending;
704
#define INTEL_FLIP_INACTIVE	0
872
#define INTEL_FLIP_INACTIVE	0
705
#define INTEL_FLIP_PENDING	1
873
#define INTEL_FLIP_PENDING	1
706
#define INTEL_FLIP_COMPLETE	2
874
#define INTEL_FLIP_COMPLETE	2
707
	u32 flip_count;
875
	u32 flip_count;
708
	u32 gtt_offset;
876
	u32 gtt_offset;
709
	struct intel_engine_cs *flip_queued_ring;
-
 
710
	u32 flip_queued_seqno;
877
	struct drm_i915_gem_request *flip_queued_req;
711
	int flip_queued_vblank;
878
	u32 flip_queued_vblank;
712
	int flip_ready_vblank;
879
	u32 flip_ready_vblank;
713
	bool enable_stall_check;
880
	bool enable_stall_check;
Line 714... Line -...
714
};
-
 
715
 
-
 
716
struct intel_set_config {
-
 
717
	struct drm_encoder **save_connector_encoders;
-
 
718
	struct drm_crtc **save_encoder_crtcs;
-
 
719
	bool *save_crtc_enabled;
-
 
720
 
-
 
721
	bool fb_changed;
-
 
722
	bool mode_changed;
-
 
723
};
881
};
724
 
882
 
725
struct intel_load_detect_pipe {
883
struct intel_load_detect_pipe {
726
	struct drm_framebuffer *release_fb;
884
	struct drm_framebuffer *release_fb;
727
	bool load_detect_temp;
885
	bool load_detect_temp;
Line 790... Line 948...
790
void gen6_enable_pm_irq(struct drm_i915_private *dev_priv, uint32_t mask);
948
void gen6_enable_pm_irq(struct drm_i915_private *dev_priv, uint32_t mask);
791
void gen6_disable_pm_irq(struct drm_i915_private *dev_priv, uint32_t mask);
949
void gen6_disable_pm_irq(struct drm_i915_private *dev_priv, uint32_t mask);
792
void gen6_reset_rps_interrupts(struct drm_device *dev);
950
void gen6_reset_rps_interrupts(struct drm_device *dev);
793
void gen6_enable_rps_interrupts(struct drm_device *dev);
951
void gen6_enable_rps_interrupts(struct drm_device *dev);
794
void gen6_disable_rps_interrupts(struct drm_device *dev);
952
void gen6_disable_rps_interrupts(struct drm_device *dev);
-
 
953
u32 gen6_sanitize_rps_pm_mask(struct drm_i915_private *dev_priv, u32 mask);
795
void intel_runtime_pm_disable_interrupts(struct drm_i915_private *dev_priv);
954
void intel_runtime_pm_disable_interrupts(struct drm_i915_private *dev_priv);
796
void intel_runtime_pm_enable_interrupts(struct drm_i915_private *dev_priv);
955
void intel_runtime_pm_enable_interrupts(struct drm_i915_private *dev_priv);
797
static inline bool intel_irqs_enabled(struct drm_i915_private *dev_priv)
956
static inline bool intel_irqs_enabled(struct drm_i915_private *dev_priv)
798
{
957
{
799
	/*
958
	/*
Line 802... Line 961...
802
	 */
961
	 */
803
	return dev_priv->pm.irqs_enabled;
962
	return dev_priv->pm.irqs_enabled;
804
}
963
}
Line 805... Line 964...
805
 
964
 
806
int intel_get_crtc_scanline(struct intel_crtc *crtc);
965
int intel_get_crtc_scanline(struct intel_crtc *crtc);
-
 
966
void gen8_irq_power_well_post_enable(struct drm_i915_private *dev_priv,
Line 807... Line 967...
807
void gen8_irq_power_well_post_enable(struct drm_i915_private *dev_priv);
967
				     unsigned int pipe_mask);
808
 
968
 
Line 814... Line 974...
814
void intel_prepare_ddi(struct drm_device *dev);
974
void intel_prepare_ddi(struct drm_device *dev);
815
void hsw_fdi_link_train(struct drm_crtc *crtc);
975
void hsw_fdi_link_train(struct drm_crtc *crtc);
816
void intel_ddi_init(struct drm_device *dev, enum port port);
976
void intel_ddi_init(struct drm_device *dev, enum port port);
817
enum port intel_ddi_get_encoder_port(struct intel_encoder *intel_encoder);
977
enum port intel_ddi_get_encoder_port(struct intel_encoder *intel_encoder);
818
bool intel_ddi_get_hw_state(struct intel_encoder *encoder, enum pipe *pipe);
978
bool intel_ddi_get_hw_state(struct intel_encoder *encoder, enum pipe *pipe);
819
int intel_ddi_get_cdclk_freq(struct drm_i915_private *dev_priv);
-
 
820
void intel_ddi_pll_init(struct drm_device *dev);
979
void intel_ddi_pll_init(struct drm_device *dev);
821
void intel_ddi_enable_transcoder_func(struct drm_crtc *crtc);
980
void intel_ddi_enable_transcoder_func(struct drm_crtc *crtc);
822
void intel_ddi_disable_transcoder_func(struct drm_i915_private *dev_priv,
981
void intel_ddi_disable_transcoder_func(struct drm_i915_private *dev_priv,
823
				       enum transcoder cpu_transcoder);
982
				       enum transcoder cpu_transcoder);
824
void intel_ddi_enable_pipe_clock(struct intel_crtc *intel_crtc);
983
void intel_ddi_enable_pipe_clock(struct intel_crtc *intel_crtc);
825
void intel_ddi_disable_pipe_clock(struct intel_crtc *intel_crtc);
984
void intel_ddi_disable_pipe_clock(struct intel_crtc *intel_crtc);
826
bool intel_ddi_pll_select(struct intel_crtc *crtc);
985
bool intel_ddi_pll_select(struct intel_crtc *crtc,
-
 
986
			  struct intel_crtc_state *crtc_state);
827
void intel_ddi_set_pipe_settings(struct drm_crtc *crtc);
987
void intel_ddi_set_pipe_settings(struct drm_crtc *crtc);
828
void intel_ddi_prepare_link_retrain(struct drm_encoder *encoder);
988
void intel_ddi_prepare_link_retrain(struct drm_encoder *encoder);
829
bool intel_ddi_connector_get_hw_state(struct intel_connector *intel_connector);
989
bool intel_ddi_connector_get_hw_state(struct intel_connector *intel_connector);
830
void intel_ddi_fdi_disable(struct drm_crtc *crtc);
990
void intel_ddi_fdi_disable(struct drm_crtc *crtc);
831
void intel_ddi_get_config(struct intel_encoder *encoder,
991
void intel_ddi_get_config(struct intel_encoder *encoder,
832
			  struct intel_crtc_config *pipe_config);
992
			  struct intel_crtc_state *pipe_config);
-
 
993
struct intel_encoder *
-
 
994
intel_ddi_get_crtc_new_encoder(struct intel_crtc_state *crtc_state);
Line 833... Line 995...
833
 
995
 
834
void intel_ddi_init_dp_buf_reg(struct intel_encoder *encoder);
996
void intel_ddi_init_dp_buf_reg(struct intel_encoder *encoder);
835
void intel_ddi_clock_get(struct intel_encoder *encoder,
997
void intel_ddi_clock_get(struct intel_encoder *encoder,
836
			 struct intel_crtc_config *pipe_config);
998
			 struct intel_crtc_state *pipe_config);
-
 
999
void intel_ddi_set_vc_payload_alloc(struct drm_crtc *crtc, bool state);
Line 837... Line 1000...
837
void intel_ddi_set_vc_payload_alloc(struct drm_crtc *crtc, bool state);
1000
uint32_t ddi_signal_levels(struct intel_dp *intel_dp);
838
 
1001
 
839
/* intel_frontbuffer.c */
1002
/* intel_frontbuffer.c */
840
void intel_fb_obj_invalidate(struct drm_i915_gem_object *obj,
1003
void intel_fb_obj_invalidate(struct drm_i915_gem_object *obj,
841
			struct intel_engine_cs *ring);
1004
			     enum fb_op_origin origin);
842
void intel_frontbuffer_flip_prepare(struct drm_device *dev,
1005
void intel_frontbuffer_flip_prepare(struct drm_device *dev,
843
				    unsigned frontbuffer_bits);
1006
				    unsigned frontbuffer_bits);
844
void intel_frontbuffer_flip_complete(struct drm_device *dev,
-
 
845
				     unsigned frontbuffer_bits);
-
 
846
void intel_frontbuffer_flush(struct drm_device *dev,
-
 
847
			     unsigned frontbuffer_bits);
-
 
848
/**
-
 
849
 * intel_frontbuffer_flip - synchronous frontbuffer flip
-
 
850
 * @dev: DRM device
-
 
851
 * @frontbuffer_bits: frontbuffer plane tracking bits
-
 
852
 *
-
 
853
 * This function gets called after scheduling a flip on @obj. This is for
-
 
854
 * synchronous plane updates which will happen on the next vblank and which will
-
 
855
 * not get delayed by pending gpu rendering.
-
 
856
 *
-
 
857
 * Can be called without any locks held.
-
 
858
 */
1007
void intel_frontbuffer_flip_complete(struct drm_device *dev,
859
static inline
1008
				     unsigned frontbuffer_bits);
860
void intel_frontbuffer_flip(struct drm_device *dev,
-
 
861
			    unsigned frontbuffer_bits)
1009
void intel_frontbuffer_flip(struct drm_device *dev,
862
{
-
 
863
	intel_frontbuffer_flush(dev, frontbuffer_bits);
-
 
-
 
1010
			    unsigned frontbuffer_bits);
-
 
1011
unsigned int intel_fb_align_height(struct drm_device *dev,
-
 
1012
				   unsigned int height,
864
}
1013
				   uint32_t pixel_format,
865
 
-
 
-
 
1014
				   uint64_t fb_format_modifier);
-
 
1015
void intel_fb_obj_flush(struct drm_i915_gem_object *obj, bool retire,
-
 
1016
			enum fb_op_origin origin);
Line 866... Line 1017...
866
void intel_fb_obj_flush(struct drm_i915_gem_object *obj, bool retire);
1017
u32 intel_fb_stride_alignment(struct drm_device *dev, uint64_t fb_modifier,
867
 
1018
			      uint32_t pixel_format);
868
 
1019
 
869
/* intel_audio.c */
1020
/* intel_audio.c */
-
 
1021
void intel_init_audio(struct drm_device *dev);
-
 
1022
void intel_audio_codec_enable(struct intel_encoder *encoder);
Line 870... Line 1023...
870
void intel_init_audio(struct drm_device *dev);
1023
void intel_audio_codec_disable(struct intel_encoder *encoder);
871
void intel_audio_codec_enable(struct intel_encoder *encoder);
1024
void i915_audio_component_init(struct drm_i915_private *dev_priv);
872
void intel_audio_codec_disable(struct intel_encoder *encoder);
1025
void i915_audio_component_cleanup(struct drm_i915_private *dev_priv);
873
 
1026
 
-
 
1027
/* intel_display.c */
874
/* intel_display.c */
1028
extern const struct drm_plane_funcs intel_plane_funcs;
875
const char *intel_output_name(int output);
1029
bool intel_has_pending_fb_unpin(struct drm_device *dev);
876
bool intel_has_pending_fb_unpin(struct drm_device *dev);
1030
int intel_pch_rawclk(struct drm_device *dev);
877
int intel_pch_rawclk(struct drm_device *dev);
-
 
878
void intel_mark_busy(struct drm_device *dev);
1031
int intel_hrawclk(struct drm_device *dev);
879
void intel_mark_idle(struct drm_device *dev);
1032
void intel_mark_busy(struct drm_device *dev);
880
void intel_crtc_restore_mode(struct drm_crtc *crtc);
1033
void intel_mark_idle(struct drm_device *dev);
-
 
1034
void intel_crtc_restore_mode(struct drm_crtc *crtc);
881
void intel_crtc_control(struct drm_crtc *crtc, bool enable);
1035
int intel_display_suspend(struct drm_device *dev);
882
void intel_crtc_update_dpms(struct drm_crtc *crtc);
-
 
883
void intel_encoder_destroy(struct drm_encoder *encoder);
-
 
884
void intel_connector_dpms(struct drm_connector *, int mode);
-
 
885
bool intel_connector_get_hw_state(struct intel_connector *connector);
1036
void intel_encoder_destroy(struct drm_encoder *encoder);
886
void intel_modeset_check_state(struct drm_device *dev);
1037
int intel_connector_init(struct intel_connector *);
887
bool ibx_digital_port_connected(struct drm_i915_private *dev_priv,
1038
struct intel_connector *intel_connector_alloc(void);
888
				struct intel_digital_port *port);
1039
bool intel_connector_get_hw_state(struct intel_connector *connector);
889
void intel_connector_attach_encoder(struct intel_connector *connector,
1040
void intel_connector_attach_encoder(struct intel_connector *connector,
Line 902... Line 1053...
902
{
1053
{
903
	drm_wait_one_vblank(dev, pipe);
1054
	drm_wait_one_vblank(dev, pipe);
904
}
1055
}
905
int ironlake_get_lanes_required(int target_clock, int link_bw, int bpp);
1056
int ironlake_get_lanes_required(int target_clock, int link_bw, int bpp);
906
void vlv_wait_port_ready(struct drm_i915_private *dev_priv,
1057
void vlv_wait_port_ready(struct drm_i915_private *dev_priv,
907
			 struct intel_digital_port *dport);
1058
			 struct intel_digital_port *dport,
-
 
1059
			 unsigned int expected_mask);
908
bool intel_get_load_detect_pipe(struct drm_connector *connector,
1060
bool intel_get_load_detect_pipe(struct drm_connector *connector,
909
				       struct drm_display_mode *mode,
1061
				struct drm_display_mode *mode,
910
				struct intel_load_detect_pipe *old,
1062
				struct intel_load_detect_pipe *old,
911
				struct drm_modeset_acquire_ctx *ctx);
1063
				struct drm_modeset_acquire_ctx *ctx);
912
void intel_release_load_detect_pipe(struct drm_connector *connector,
1064
void intel_release_load_detect_pipe(struct drm_connector *connector,
913
				    struct intel_load_detect_pipe *old);
1065
				    struct intel_load_detect_pipe *old,
-
 
1066
				    struct drm_modeset_acquire_ctx *ctx);
914
int intel_pin_and_fence_fb_obj(struct drm_plane *plane,
1067
int intel_pin_and_fence_fb_obj(struct drm_plane *plane,
915
			       struct drm_framebuffer *fb,
1068
			       struct drm_framebuffer *fb,
-
 
1069
			       const struct drm_plane_state *plane_state,
916
			       struct intel_engine_cs *pipelined);
1070
			       struct intel_engine_cs *pipelined,
917
void intel_unpin_fb_obj(struct drm_i915_gem_object *obj);
1071
			       struct drm_i915_gem_request **pipelined_request);
918
struct drm_framebuffer *
1072
struct drm_framebuffer *
919
__intel_framebuffer_create(struct drm_device *dev,
1073
__intel_framebuffer_create(struct drm_device *dev,
920
				  struct drm_mode_fb_cmd2 *mode_cmd,
1074
			   struct drm_mode_fb_cmd2 *mode_cmd,
921
				  struct drm_i915_gem_object *obj);
1075
			   struct drm_i915_gem_object *obj);
922
void intel_prepare_page_flip(struct drm_device *dev, int plane);
1076
void intel_prepare_page_flip(struct drm_device *dev, int plane);
923
void intel_finish_page_flip(struct drm_device *dev, int pipe);
1077
void intel_finish_page_flip(struct drm_device *dev, int pipe);
924
void intel_finish_page_flip_plane(struct drm_device *dev, int plane);
1078
void intel_finish_page_flip_plane(struct drm_device *dev, int plane);
925
void intel_check_page_flip(struct drm_device *dev, int pipe);
1079
void intel_check_page_flip(struct drm_device *dev, int pipe);
-
 
1080
int intel_prepare_plane_fb(struct drm_plane *plane,
-
 
1081
			   const struct drm_plane_state *new_state);
-
 
1082
void intel_cleanup_plane_fb(struct drm_plane *plane,
-
 
1083
			    const struct drm_plane_state *old_state);
-
 
1084
int intel_plane_atomic_get_property(struct drm_plane *plane,
-
 
1085
				    const struct drm_plane_state *state,
-
 
1086
				    struct drm_property *property,
-
 
1087
				    uint64_t *val);
-
 
1088
int intel_plane_atomic_set_property(struct drm_plane *plane,
-
 
1089
				    struct drm_plane_state *state,
-
 
1090
				    struct drm_property *property,
-
 
1091
				    uint64_t val);
-
 
1092
int intel_plane_atomic_calc_changes(struct drm_crtc_state *crtc_state,
-
 
1093
				    struct drm_plane_state *plane_state);
-
 
1094
 
-
 
1095
unsigned int
-
 
1096
intel_tile_height(struct drm_device *dev, uint32_t pixel_format,
-
 
1097
		  uint64_t fb_format_modifier, unsigned int plane);
-
 
1098
 
-
 
1099
static inline bool
-
 
1100
intel_rotation_90_or_270(unsigned int rotation)
-
 
1101
{
-
 
1102
	return rotation & (BIT(DRM_ROTATE_90) | BIT(DRM_ROTATE_270));
-
 
1103
}
-
 
1104
 
-
 
1105
void intel_create_rotation_property(struct drm_device *dev,
-
 
1106
					struct intel_plane *plane);
Line 926... Line 1107...
926
 
1107
 
927
/* shared dpll functions */
1108
/* shared dpll functions */
928
struct intel_shared_dpll *intel_crtc_to_shared_dpll(struct intel_crtc *crtc);
1109
struct intel_shared_dpll *intel_crtc_to_shared_dpll(struct intel_crtc *crtc);
929
void assert_shared_dpll(struct drm_i915_private *dev_priv,
1110
void assert_shared_dpll(struct drm_i915_private *dev_priv,
930
			struct intel_shared_dpll *pll,
1111
			struct intel_shared_dpll *pll,
931
			bool state);
1112
			bool state);
932
#define assert_shared_dpll_enabled(d, p) assert_shared_dpll(d, p, true)
1113
#define assert_shared_dpll_enabled(d, p) assert_shared_dpll(d, p, true)
933
#define assert_shared_dpll_disabled(d, p) assert_shared_dpll(d, p, false)
1114
#define assert_shared_dpll_disabled(d, p) assert_shared_dpll(d, p, false)
934
struct intel_shared_dpll *intel_get_shared_dpll(struct intel_crtc *crtc);
1115
struct intel_shared_dpll *intel_get_shared_dpll(struct intel_crtc *crtc,
Line 935... Line 1116...
935
void intel_put_shared_dpll(struct intel_crtc *crtc);
1116
						struct intel_crtc_state *state);
936
 
1117
 
937
void vlv_force_pll_on(struct drm_device *dev, enum pipe pipe,
1118
void vlv_force_pll_on(struct drm_device *dev, enum pipe pipe,
Line 950... Line 1131...
950
#define assert_fdi_rx_pll_enabled(d, p) assert_fdi_rx_pll(d, p, true)
1131
#define assert_fdi_rx_pll_enabled(d, p) assert_fdi_rx_pll(d, p, true)
951
#define assert_fdi_rx_pll_disabled(d, p) assert_fdi_rx_pll(d, p, false)
1132
#define assert_fdi_rx_pll_disabled(d, p) assert_fdi_rx_pll(d, p, false)
952
void assert_pipe(struct drm_i915_private *dev_priv, enum pipe pipe, bool state);
1133
void assert_pipe(struct drm_i915_private *dev_priv, enum pipe pipe, bool state);
953
#define assert_pipe_enabled(d, p) assert_pipe(d, p, true)
1134
#define assert_pipe_enabled(d, p) assert_pipe(d, p, true)
954
#define assert_pipe_disabled(d, p) assert_pipe(d, p, false)
1135
#define assert_pipe_disabled(d, p) assert_pipe(d, p, false)
955
unsigned long intel_gen4_compute_page_offset(int *x, int *y,
1136
unsigned long intel_gen4_compute_page_offset(struct drm_i915_private *dev_priv,
-
 
1137
					     int *x, int *y,
956
						    unsigned int tiling_mode,
1138
					     unsigned int tiling_mode,
957
						      unsigned int bpp,
1139
					     unsigned int bpp,
958
						      unsigned int pitch);
1140
					     unsigned int pitch);
959
void intel_prepare_reset(struct drm_device *dev);
1141
void intel_prepare_reset(struct drm_device *dev);
960
void intel_finish_reset(struct drm_device *dev);
1142
void intel_finish_reset(struct drm_device *dev);
961
void hsw_enable_pc8(struct drm_i915_private *dev_priv);
1143
void hsw_enable_pc8(struct drm_i915_private *dev_priv);
962
void hsw_disable_pc8(struct drm_i915_private *dev_priv);
1144
void hsw_disable_pc8(struct drm_i915_private *dev_priv);
-
 
1145
void broxton_init_cdclk(struct drm_device *dev);
-
 
1146
void broxton_uninit_cdclk(struct drm_device *dev);
-
 
1147
void broxton_ddi_phy_init(struct drm_device *dev);
-
 
1148
void broxton_ddi_phy_uninit(struct drm_device *dev);
-
 
1149
void bxt_enable_dc9(struct drm_i915_private *dev_priv);
-
 
1150
void bxt_disable_dc9(struct drm_i915_private *dev_priv);
-
 
1151
void skl_init_cdclk(struct drm_i915_private *dev_priv);
-
 
1152
void skl_uninit_cdclk(struct drm_i915_private *dev_priv);
963
void intel_dp_get_m_n(struct intel_crtc *crtc,
1153
void intel_dp_get_m_n(struct intel_crtc *crtc,
964
		      struct intel_crtc_config *pipe_config);
1154
		      struct intel_crtc_state *pipe_config);
965
void intel_dp_set_m_n(struct intel_crtc *crtc);
1155
void intel_dp_set_m_n(struct intel_crtc *crtc, enum link_m_n_set m_n);
966
int intel_dotclock_calculate(int link_freq, const struct intel_link_m_n *m_n);
1156
int intel_dotclock_calculate(int link_freq, const struct intel_link_m_n *m_n);
967
void
1157
void
968
ironlake_check_encoder_dotclock(const struct intel_crtc_config *pipe_config,
1158
ironlake_check_encoder_dotclock(const struct intel_crtc_state *pipe_config,
969
				int dotclock);
1159
				int dotclock);
-
 
1160
bool bxt_find_best_dpll(struct intel_crtc_state *crtc_state, int target_clock,
-
 
1161
			intel_clock_t *best_clock);
-
 
1162
int chv_calc_dpll_params(int refclk, intel_clock_t *pll_clock);
-
 
1163
 
970
bool intel_crtc_active(struct drm_crtc *crtc);
1164
bool intel_crtc_active(struct drm_crtc *crtc);
971
void hsw_enable_ips(struct intel_crtc *crtc);
1165
void hsw_enable_ips(struct intel_crtc *crtc);
972
void hsw_disable_ips(struct intel_crtc *crtc);
1166
void hsw_disable_ips(struct intel_crtc *crtc);
973
enum intel_display_power_domain
1167
enum intel_display_power_domain
974
intel_display_port_power_domain(struct intel_encoder *intel_encoder);
1168
intel_display_port_power_domain(struct intel_encoder *intel_encoder);
-
 
1169
enum intel_display_power_domain
-
 
1170
intel_display_port_aux_power_domain(struct intel_encoder *intel_encoder);
975
void intel_mode_from_pipe_config(struct drm_display_mode *mode,
1171
void intel_mode_from_pipe_config(struct drm_display_mode *mode,
976
				 struct intel_crtc_config *pipe_config);
1172
				 struct intel_crtc_state *pipe_config);
977
int intel_format_to_fourcc(int format);
-
 
978
void intel_crtc_wait_for_pending_flips(struct drm_crtc *crtc);
1173
void intel_crtc_wait_for_pending_flips(struct drm_crtc *crtc);
979
void intel_modeset_preclose(struct drm_device *dev, struct drm_file *file);
1174
void intel_modeset_preclose(struct drm_device *dev, struct drm_file *file);
Line -... Line 1175...
-
 
1175
 
-
 
1176
int skl_update_scaler_crtc(struct intel_crtc_state *crtc_state);
-
 
1177
int skl_max_scale(struct intel_crtc *crtc, struct intel_crtc_state *crtc_state);
-
 
1178
 
-
 
1179
unsigned long intel_plane_obj_offset(struct intel_plane *intel_plane,
-
 
1180
				     struct drm_i915_gem_object *obj,
-
 
1181
				     unsigned int plane);
-
 
1182
 
-
 
1183
u32 skl_plane_ctl_format(uint32_t pixel_format);
-
 
1184
u32 skl_plane_ctl_tiling(uint64_t fb_modifier);
-
 
1185
u32 skl_plane_ctl_rotation(unsigned int rotation);
-
 
1186
 
-
 
1187
/* 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);
-
 
1192
void intel_csr_load_program(struct drm_device *dev);
-
 
1193
void intel_csr_ucode_fini(struct drm_device *dev);
-
 
1194
void assert_csr_loaded(struct drm_i915_private *dev_priv);
980
 
1195
 
981
/* intel_dp.c */
1196
/* intel_dp.c */
982
void intel_dp_init(struct drm_device *dev, int output_reg, enum port port);
1197
void intel_dp_init(struct drm_device *dev, int output_reg, enum port port);
983
bool intel_dp_init_connector(struct intel_digital_port *intel_dig_port,
1198
bool intel_dp_init_connector(struct intel_digital_port *intel_dig_port,
-
 
1199
			     struct intel_connector *intel_connector);
-
 
1200
void intel_dp_set_link_params(struct intel_dp *intel_dp,
984
			     struct intel_connector *intel_connector);
1201
			      const struct intel_crtc_state *pipe_config);
985
void intel_dp_start_link_train(struct intel_dp *intel_dp);
-
 
986
void intel_dp_complete_link_train(struct intel_dp *intel_dp);
1202
void intel_dp_start_link_train(struct intel_dp *intel_dp);
987
void intel_dp_stop_link_train(struct intel_dp *intel_dp);
1203
void intel_dp_stop_link_train(struct intel_dp *intel_dp);
988
void intel_dp_sink_dpms(struct intel_dp *intel_dp, int mode);
1204
void intel_dp_sink_dpms(struct intel_dp *intel_dp, int mode);
989
void intel_dp_encoder_destroy(struct drm_encoder *encoder);
-
 
990
void intel_dp_check_link_status(struct intel_dp *intel_dp);
1205
void intel_dp_encoder_destroy(struct drm_encoder *encoder);
991
int intel_dp_sink_crc(struct intel_dp *intel_dp, u8 *crc);
1206
int intel_dp_sink_crc(struct intel_dp *intel_dp, u8 *crc);
992
bool intel_dp_compute_config(struct intel_encoder *encoder,
1207
bool intel_dp_compute_config(struct intel_encoder *encoder,
993
			     struct intel_crtc_config *pipe_config);
1208
			     struct intel_crtc_state *pipe_config);
994
bool intel_dp_is_edp(struct drm_device *dev, enum port port);
1209
bool intel_dp_is_edp(struct drm_device *dev, enum port port);
995
bool intel_dp_hpd_pulse(struct intel_digital_port *intel_dig_port,
1210
enum irqreturn intel_dp_hpd_pulse(struct intel_digital_port *intel_dig_port,
996
			bool long_hpd);
1211
				  bool long_hpd);
997
void intel_edp_backlight_on(struct intel_dp *intel_dp);
1212
void intel_edp_backlight_on(struct intel_dp *intel_dp);
998
void intel_edp_backlight_off(struct intel_dp *intel_dp);
1213
void intel_edp_backlight_off(struct intel_dp *intel_dp);
999
void intel_edp_panel_vdd_on(struct intel_dp *intel_dp);
1214
void intel_edp_panel_vdd_on(struct intel_dp *intel_dp);
1000
void intel_edp_panel_on(struct intel_dp *intel_dp);
1215
void intel_edp_panel_on(struct intel_dp *intel_dp);
1001
void intel_edp_panel_off(struct intel_dp *intel_dp);
-
 
1002
void intel_dp_set_drrs_state(struct drm_device *dev, int refresh_rate);
1216
void intel_edp_panel_off(struct intel_dp *intel_dp);
1003
void intel_dp_add_properties(struct intel_dp *intel_dp, struct drm_connector *connector);
1217
void intel_dp_add_properties(struct intel_dp *intel_dp, struct drm_connector *connector);
1004
void intel_dp_mst_suspend(struct drm_device *dev);
1218
void intel_dp_mst_suspend(struct drm_device *dev);
1005
void intel_dp_mst_resume(struct drm_device *dev);
1219
void intel_dp_mst_resume(struct drm_device *dev);
-
 
1220
int intel_dp_max_link_rate(struct intel_dp *intel_dp);
1006
int intel_dp_max_link_bw(struct intel_dp *intel_dp);
1221
int intel_dp_rate_select(struct intel_dp *intel_dp, int rate);
1007
void intel_dp_hot_plug(struct intel_encoder *intel_encoder);
1222
void intel_dp_hot_plug(struct intel_encoder *intel_encoder);
1008
void vlv_power_sequencer_reset(struct drm_i915_private *dev_priv);
1223
void vlv_power_sequencer_reset(struct drm_i915_private *dev_priv);
-
 
1224
uint32_t intel_dp_pack_aux(const uint8_t *src, int src_bytes);
-
 
1225
void intel_plane_destroy(struct drm_plane *plane);
-
 
1226
void intel_edp_drrs_enable(struct intel_dp *intel_dp);
-
 
1227
void intel_edp_drrs_disable(struct intel_dp *intel_dp);
-
 
1228
void intel_edp_drrs_invalidate(struct drm_device *dev,
1009
uint32_t intel_dp_pack_aux(const uint8_t *src, int src_bytes);
1229
		unsigned frontbuffer_bits);
-
 
1230
void intel_edp_drrs_flush(struct drm_device *dev, unsigned frontbuffer_bits);
-
 
1231
bool intel_digital_port_connected(struct drm_i915_private *dev_priv,
-
 
1232
					 struct intel_digital_port *port);
Line 1010... Line 1233...
1010
void intel_dp_unpack_aux(uint32_t src, uint8_t *dst, int dst_bytes);
1233
void hsw_dp_set_ddi_pll_sel(struct intel_crtc_state *pipe_config);
1011
 
1234
 
1012
/* intel_dp_mst.c */
1235
/* intel_dp_mst.c */
1013
int intel_dp_mst_encoder_init(struct intel_digital_port *intel_dig_port, int conn_id);
1236
int intel_dp_mst_encoder_init(struct intel_digital_port *intel_dig_port, int conn_id);
Line 1019... Line 1242...
1019
/* intel_dvo.c */
1242
/* intel_dvo.c */
1020
void intel_dvo_init(struct drm_device *dev);
1243
void intel_dvo_init(struct drm_device *dev);
Line 1021... Line 1244...
1021
 
1244
 
1022
 
1245
 
1023
/* legacy fbdev emulation in intel_fbdev.c */
1246
/* legacy fbdev emulation in intel_fbdev.c */
1024
#ifdef CONFIG_DRM_I915_FBDEV
1247
#ifdef CONFIG_DRM_FBDEV_EMULATION
1025
extern int intel_fbdev_init(struct drm_device *dev);
1248
extern int intel_fbdev_init(struct drm_device *dev);
1026
extern void intel_fbdev_initial_config(void *data, async_cookie_t cookie);
1249
extern void intel_fbdev_initial_config(void *data, async_cookie_t cookie);
1027
extern void intel_fbdev_fini(struct drm_device *dev);
1250
extern void intel_fbdev_fini(struct drm_device *dev);
Line 1049... Line 1272...
1049
static inline void intel_fbdev_restore_mode(struct drm_device *dev)
1272
static inline void intel_fbdev_restore_mode(struct drm_device *dev)
1050
{
1273
{
1051
}
1274
}
1052
#endif
1275
#endif
Line -... Line 1276...
-
 
1276
 
-
 
1277
/* intel_fbc.c */
-
 
1278
bool intel_fbc_enabled(struct drm_i915_private *dev_priv);
-
 
1279
void intel_fbc_update(struct drm_i915_private *dev_priv);
-
 
1280
void intel_fbc_init(struct drm_i915_private *dev_priv);
-
 
1281
void intel_fbc_disable(struct drm_i915_private *dev_priv);
-
 
1282
void intel_fbc_disable_crtc(struct intel_crtc *crtc);
-
 
1283
void intel_fbc_invalidate(struct drm_i915_private *dev_priv,
-
 
1284
			  unsigned int frontbuffer_bits,
-
 
1285
			  enum fb_op_origin origin);
-
 
1286
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);
-
 
1289
void intel_fbc_cleanup_cfb(struct drm_i915_private *dev_priv);
1053
 
1290
 
1054
/* intel_hdmi.c */
1291
/* intel_hdmi.c */
1055
void intel_hdmi_init(struct drm_device *dev, int hdmi_reg, enum port port);
1292
void intel_hdmi_init(struct drm_device *dev, int hdmi_reg, enum port port);
1056
void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port,
1293
void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port,
1057
			       struct intel_connector *intel_connector);
1294
			       struct intel_connector *intel_connector);
1058
struct intel_hdmi *enc_to_intel_hdmi(struct drm_encoder *encoder);
1295
struct intel_hdmi *enc_to_intel_hdmi(struct drm_encoder *encoder);
1059
bool intel_hdmi_compute_config(struct intel_encoder *encoder,
1296
bool intel_hdmi_compute_config(struct intel_encoder *encoder,
Line 1060... Line 1297...
1060
			       struct intel_crtc_config *pipe_config);
1297
			       struct intel_crtc_state *pipe_config);
1061
 
1298
 
1062
 
1299
 
Line 1069... Line 1306...
1069
int intel_connector_update_modes(struct drm_connector *connector,
1306
int intel_connector_update_modes(struct drm_connector *connector,
1070
				 struct edid *edid);
1307
				 struct edid *edid);
1071
int intel_ddc_get_modes(struct drm_connector *c, struct i2c_adapter *adapter);
1308
int intel_ddc_get_modes(struct drm_connector *c, struct i2c_adapter *adapter);
1072
void intel_attach_force_audio_property(struct drm_connector *connector);
1309
void intel_attach_force_audio_property(struct drm_connector *connector);
1073
void intel_attach_broadcast_rgb_property(struct drm_connector *connector);
1310
void intel_attach_broadcast_rgb_property(struct drm_connector *connector);
-
 
1311
void intel_attach_aspect_ratio_property(struct drm_connector *connector);
Line 1074... Line 1312...
1074
 
1312
 
1075
 
1313
 
1076
/* intel_overlay.c */
1314
/* intel_overlay.c */
1077
void intel_setup_overlay(struct drm_device *dev);
1315
void intel_setup_overlay(struct drm_device *dev);
1078
void intel_cleanup_overlay(struct drm_device *dev);
1316
void intel_cleanup_overlay(struct drm_device *dev);
1079
int intel_overlay_switch_off(struct intel_overlay *overlay);
1317
int intel_overlay_switch_off(struct intel_overlay *overlay);
1080
int intel_overlay_put_image(struct drm_device *dev, void *data,
1318
int intel_overlay_put_image(struct drm_device *dev, void *data,
1081
				     struct drm_file *file_priv);
1319
			    struct drm_file *file_priv);
-
 
1320
int intel_overlay_attrs(struct drm_device *dev, void *data,
Line 1082... Line 1321...
1082
int intel_overlay_attrs(struct drm_device *dev, void *data,
1321
			struct drm_file *file_priv);
1083
				     struct drm_file *file_priv);
1322
void intel_overlay_reset(struct drm_i915_private *dev_priv);
1084
 
1323
 
1085
 
1324
 
1086
/* intel_panel.c */
1325
/* intel_panel.c */
1087
int intel_panel_init(struct intel_panel *panel,
1326
int intel_panel_init(struct intel_panel *panel,
1088
		     struct drm_display_mode *fixed_mode,
1327
		     struct drm_display_mode *fixed_mode,
1089
		     struct drm_display_mode *downclock_mode);
1328
		     struct drm_display_mode *downclock_mode);
1090
void intel_panel_fini(struct intel_panel *panel);
1329
void intel_panel_fini(struct intel_panel *panel);
1091
void intel_fixed_panel_mode(const struct drm_display_mode *fixed_mode,
1330
void intel_fixed_panel_mode(const struct drm_display_mode *fixed_mode,
1092
			    struct drm_display_mode *adjusted_mode);
1331
			    struct drm_display_mode *adjusted_mode);
1093
void intel_pch_panel_fitting(struct intel_crtc *crtc,
1332
void intel_pch_panel_fitting(struct intel_crtc *crtc,
1094
			     struct intel_crtc_config *pipe_config,
1333
			     struct intel_crtc_state *pipe_config,
1095
			     int fitting_mode);
1334
			     int fitting_mode);
1096
void intel_gmch_panel_fitting(struct intel_crtc *crtc,
1335
void intel_gmch_panel_fitting(struct intel_crtc *crtc,
1097
			      struct intel_crtc_config *pipe_config,
1336
			      struct intel_crtc_state *pipe_config,
1098
			      int fitting_mode);
1337
			      int fitting_mode);
1099
void intel_panel_set_backlight_acpi(struct intel_connector *connector,
1338
void intel_panel_set_backlight_acpi(struct intel_connector *connector,
1100
				    u32 level, u32 max);
1339
				    u32 level, u32 max);
1101
int intel_panel_setup_backlight(struct drm_connector *connector, enum pipe pipe);
-
 
1102
void intel_panel_enable_backlight(struct intel_connector *connector);
1340
int intel_panel_setup_backlight(struct drm_connector *connector, enum pipe pipe);
1103
void intel_panel_disable_backlight(struct intel_connector *connector);
1341
void intel_panel_enable_backlight(struct intel_connector *connector);
1104
void intel_panel_destroy_backlight(struct drm_connector *connector);
1342
void intel_panel_disable_backlight(struct intel_connector *connector);
1105
void intel_panel_init_backlight_funcs(struct drm_device *dev);
1343
void intel_panel_destroy_backlight(struct drm_connector *connector);
1106
enum drm_connector_status intel_panel_detect(struct drm_device *dev);
1344
enum drm_connector_status intel_panel_detect(struct drm_device *dev);
1107
extern struct drm_display_mode *intel_find_panel_downclock(
1345
extern struct drm_display_mode *intel_find_panel_downclock(
1108
				struct drm_device *dev,
1346
				struct drm_device *dev,
Line 1109... Line 1347...
1109
				struct drm_display_mode *fixed_mode,
1347
				struct drm_display_mode *fixed_mode,
1110
				struct drm_connector *connector);
-
 
1111
void intel_backlight_register(struct drm_device *dev);
1348
				struct drm_connector *connector);
1112
void intel_backlight_unregister(struct drm_device *dev);
1349
void intel_backlight_register(struct drm_device *dev);
1113
 
1350
void intel_backlight_unregister(struct drm_device *dev);
1114
 
1351
 
1115
/* intel_psr.c */
1352
 
1116
bool intel_psr_is_enabled(struct drm_device *dev);
1353
/* intel_psr.c */
-
 
1354
void intel_psr_enable(struct intel_dp *intel_dp);
1117
void intel_psr_enable(struct intel_dp *intel_dp);
1355
void intel_psr_disable(struct intel_dp *intel_dp);
-
 
1356
void intel_psr_invalidate(struct drm_device *dev,
-
 
1357
			  unsigned frontbuffer_bits);
Line 1118... Line 1358...
1118
void intel_psr_disable(struct intel_dp *intel_dp);
1358
void intel_psr_flush(struct drm_device *dev,
1119
void intel_psr_invalidate(struct drm_device *dev,
1359
		     unsigned frontbuffer_bits,
1120
			      unsigned frontbuffer_bits);
1360
		     enum fb_op_origin origin);
1121
void intel_psr_flush(struct drm_device *dev,
1361
void intel_psr_init(struct drm_device *dev);
Line 1134... Line 1374...
1134
				      enum intel_display_power_domain domain);
1374
				      enum intel_display_power_domain domain);
1135
void intel_display_power_get(struct drm_i915_private *dev_priv,
1375
void intel_display_power_get(struct drm_i915_private *dev_priv,
1136
			     enum intel_display_power_domain domain);
1376
			     enum intel_display_power_domain domain);
1137
void intel_display_power_put(struct drm_i915_private *dev_priv,
1377
void intel_display_power_put(struct drm_i915_private *dev_priv,
1138
			     enum intel_display_power_domain domain);
1378
			     enum intel_display_power_domain domain);
1139
void intel_aux_display_runtime_get(struct drm_i915_private *dev_priv);
-
 
1140
void intel_aux_display_runtime_put(struct drm_i915_private *dev_priv);
-
 
1141
void intel_runtime_pm_get(struct drm_i915_private *dev_priv);
1379
void intel_runtime_pm_get(struct drm_i915_private *dev_priv);
1142
void intel_runtime_pm_get_noresume(struct drm_i915_private *dev_priv);
1380
void intel_runtime_pm_get_noresume(struct drm_i915_private *dev_priv);
1143
void intel_runtime_pm_put(struct drm_i915_private *dev_priv);
1381
void intel_runtime_pm_put(struct drm_i915_private *dev_priv);
Line 1144... Line 1382...
1144
 
1382
 
Line -... Line 1383...
-
 
1383
void intel_display_set_init_power(struct drm_i915_private *dev, bool enable);
-
 
1384
 
-
 
1385
void chv_phy_powergate_lanes(struct intel_encoder *encoder,
-
 
1386
			     bool override, unsigned int mask);
-
 
1387
bool chv_phy_powergate_ch(struct drm_i915_private *dev_priv, enum dpio_phy phy,
-
 
1388
			  enum dpio_channel ch, bool override);
1145
void intel_display_set_init_power(struct drm_i915_private *dev, bool enable);
1389
 
1146
 
1390
 
1147
/* intel_pm.c */
1391
/* intel_pm.c */
1148
void intel_init_clock_gating(struct drm_device *dev);
1392
void intel_init_clock_gating(struct drm_device *dev);
1149
void intel_suspend_hw(struct drm_device *dev);
1393
void intel_suspend_hw(struct drm_device *dev);
Line 1155... Line 1399...
1155
				    uint32_t sprite_height,
1399
				    uint32_t sprite_height,
1156
				    int pixel_size,
1400
				    int pixel_size,
1157
				    bool enabled, bool scaled);
1401
				    bool enabled, bool scaled);
1158
void intel_init_pm(struct drm_device *dev);
1402
void intel_init_pm(struct drm_device *dev);
1159
void intel_pm_setup(struct drm_device *dev);
1403
void intel_pm_setup(struct drm_device *dev);
1160
bool intel_fbc_enabled(struct drm_device *dev);
-
 
1161
void intel_update_fbc(struct drm_device *dev);
-
 
1162
void intel_gpu_ips_init(struct drm_i915_private *dev_priv);
1404
void intel_gpu_ips_init(struct drm_i915_private *dev_priv);
1163
void intel_gpu_ips_teardown(void);
1405
void intel_gpu_ips_teardown(void);
1164
void intel_init_gt_powersave(struct drm_device *dev);
1406
void intel_init_gt_powersave(struct drm_device *dev);
1165
void intel_cleanup_gt_powersave(struct drm_device *dev);
1407
void intel_cleanup_gt_powersave(struct drm_device *dev);
1166
void intel_enable_gt_powersave(struct drm_device *dev);
1408
void intel_enable_gt_powersave(struct drm_device *dev);
1167
void intel_disable_gt_powersave(struct drm_device *dev);
1409
void intel_disable_gt_powersave(struct drm_device *dev);
1168
void intel_suspend_gt_powersave(struct drm_device *dev);
1410
void intel_suspend_gt_powersave(struct drm_device *dev);
1169
void intel_reset_gt_powersave(struct drm_device *dev);
1411
void intel_reset_gt_powersave(struct drm_device *dev);
1170
void ironlake_teardown_rc6(struct drm_device *dev);
-
 
1171
void gen6_update_ring_freq(struct drm_device *dev);
1412
void gen6_update_ring_freq(struct drm_device *dev);
-
 
1413
void gen6_rps_busy(struct drm_i915_private *dev_priv);
-
 
1414
void gen6_rps_reset_ei(struct drm_i915_private *dev_priv);
1172
void gen6_rps_idle(struct drm_i915_private *dev_priv);
1415
void gen6_rps_idle(struct drm_i915_private *dev_priv);
1173
void gen6_rps_boost(struct drm_i915_private *dev_priv);
1416
void gen6_rps_boost(struct drm_i915_private *dev_priv,
-
 
1417
		    struct intel_rps_client *rps,
-
 
1418
		    unsigned long submitted);
-
 
1419
void intel_queue_rps_boost_for_request(struct drm_device *dev,
-
 
1420
				       struct drm_i915_gem_request *req);
-
 
1421
void vlv_wm_get_hw_state(struct drm_device *dev);
1174
void ilk_wm_get_hw_state(struct drm_device *dev);
1422
void ilk_wm_get_hw_state(struct drm_device *dev);
1175
void skl_wm_get_hw_state(struct drm_device *dev);
1423
void skl_wm_get_hw_state(struct drm_device *dev);
1176
void skl_ddb_get_hw_state(struct drm_i915_private *dev_priv,
1424
void skl_ddb_get_hw_state(struct drm_i915_private *dev_priv,
1177
			  struct skl_ddb_allocation *ddb /* out */);
1425
			  struct skl_ddb_allocation *ddb /* out */);
1178
 
-
 
-
 
1426
uint32_t ilk_pipe_pixel_rate(const struct intel_crtc_state *pipe_config);
Line 1179... Line 1427...
1179
 
1427
 
1180
/* intel_sdvo.c */
1428
/* intel_sdvo.c */
Line 1181... Line 1429...
1181
bool intel_sdvo_init(struct drm_device *dev, uint32_t sdvo_reg, bool is_sdvob);
1429
bool intel_sdvo_init(struct drm_device *dev, uint32_t sdvo_reg, bool is_sdvob);
1182
 
1430
 
1183
 
-
 
1184
/* intel_sprite.c */
-
 
1185
int intel_plane_init(struct drm_device *dev, enum pipe pipe, int plane);
-
 
1186
void intel_flush_primary_plane(struct drm_i915_private *dev_priv,
-
 
1187
			       enum plane plane);
-
 
1188
int intel_plane_set_property(struct drm_plane *plane,
-
 
1189
			     struct drm_property *prop,
-
 
1190
			     uint64_t val);
1431
 
1191
int intel_plane_restore(struct drm_plane *plane);
1432
/* intel_sprite.c */
1192
void intel_plane_disable(struct drm_plane *plane);
-
 
1193
int intel_sprite_set_colorkey(struct drm_device *dev, void *data,
-
 
1194
			      struct drm_file *file_priv);
1433
int intel_plane_init(struct drm_device *dev, enum pipe pipe, int plane);
1195
int intel_sprite_get_colorkey(struct drm_device *dev, void *data,
-
 
1196
			      struct drm_file *file_priv);
1434
int intel_sprite_set_colorkey(struct drm_device *dev, void *data,
Line 1197... Line 1435...
1197
bool intel_pipe_update_start(struct intel_crtc *crtc,
1435
			      struct drm_file *file_priv);
1198
			     uint32_t *start_vbl_count);
1436
void intel_pipe_update_start(struct intel_crtc *crtc);
Line -... Line 1437...
-
 
1437
void intel_pipe_update_end(struct intel_crtc *crtc);
-
 
1438
 
-
 
1439
/* intel_tv.c */
-
 
1440
void intel_tv_init(struct drm_device *dev);
-
 
1441
 
-
 
1442
/* intel_atomic.c */
-
 
1443
int intel_connector_atomic_get_property(struct drm_connector *connector,
-
 
1444
					const struct drm_connector_state *state,
-
 
1445
					struct drm_property *property,
-
 
1446
					uint64_t *val);
-
 
1447
struct drm_crtc_state *intel_crtc_duplicate_state(struct drm_crtc *crtc);
-
 
1448
void intel_crtc_destroy_state(struct drm_crtc *crtc,
-
 
1449
			       struct drm_crtc_state *state);
-
 
1450
struct drm_atomic_state *intel_atomic_state_alloc(struct drm_device *dev);
-
 
1451
void intel_atomic_state_clear(struct drm_atomic_state *);
-
 
1452
struct intel_shared_dpll_config *
-
 
1453
intel_atomic_get_shared_dpll_state(struct drm_atomic_state *s);
-
 
1454
 
-
 
1455
static inline struct intel_crtc_state *
-
 
1456
intel_atomic_get_crtc_state(struct drm_atomic_state *state,
-
 
1457
			    struct intel_crtc *crtc)
-
 
1458
{
-
 
1459
	struct drm_crtc_state *crtc_state;
-
 
1460
	crtc_state = drm_atomic_get_crtc_state(state, &crtc->base);
-
 
1461
	if (IS_ERR(crtc_state))
-
 
1462
		return ERR_CAST(crtc_state);
-
 
1463
 
-
 
1464
	return to_intel_crtc_state(crtc_state);
-
 
1465
}
-
 
1466
int intel_atomic_setup_scalers(struct drm_device *dev,
-
 
1467
	struct intel_crtc *intel_crtc,
-
 
1468
	struct intel_crtc_state *crtc_state);
-
 
1469
 
-
 
1470
/* intel_atomic_plane.c */
-
 
1471
struct intel_plane_state *intel_create_plane_state(struct drm_plane *plane);
1199
void intel_pipe_update_end(struct intel_crtc *crtc, u32 start_vbl_count);
1472
struct drm_plane_state *intel_plane_duplicate_state(struct drm_plane *plane);