Subversion Repositories Kolibri OS

Rev

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

Rev 3243 Rev 3480
Line 116... Line 116...
116
#define INTEL_MODE_DP_FORCE_6BPC (0x10)
116
#define INTEL_MODE_DP_FORCE_6BPC (0x10)
117
/* This flag must be set by the encoder's mode_fixup if it changes the crtc
117
/* This flag must be set by the encoder's mode_fixup if it changes the crtc
118
 * timings in the mode to prevent the crtc fixup from overwriting them.
118
 * timings in the mode to prevent the crtc fixup from overwriting them.
119
 * Currently only lvds needs that. */
119
 * Currently only lvds needs that. */
120
#define INTEL_MODE_CRTC_TIMINGS_SET (0x20)
120
#define INTEL_MODE_CRTC_TIMINGS_SET (0x20)
-
 
121
/*
-
 
122
 * Set when limited 16-235 (as opposed to full 0-255) RGB color range is
-
 
123
 * to be used.
-
 
124
 */
-
 
125
#define INTEL_MODE_LIMITED_COLOR_RANGE (0x40)
Line 121... Line 126...
121
 
126
 
122
static inline void
127
static inline void
123
intel_mode_set_pixel_multiplier(struct drm_display_mode *mode,
128
intel_mode_set_pixel_multiplier(struct drm_display_mode *mode,
124
				int multiplier)
129
				int multiplier)
Line 160... Line 165...
160
	 * simple flag is enough to compute the possible_clones mask.
165
	 * simple flag is enough to compute the possible_clones mask.
161
	 */
166
	 */
162
	bool cloneable;
167
	bool cloneable;
163
	bool connectors_active;
168
	bool connectors_active;
164
	void (*hot_plug)(struct intel_encoder *);
169
	void (*hot_plug)(struct intel_encoder *);
-
 
170
	void (*pre_pll_enable)(struct intel_encoder *);
165
	void (*pre_enable)(struct intel_encoder *);
171
	void (*pre_enable)(struct intel_encoder *);
166
	void (*enable)(struct intel_encoder *);
172
	void (*enable)(struct intel_encoder *);
167
	void (*disable)(struct intel_encoder *);
173
	void (*disable)(struct intel_encoder *);
168
	void (*post_disable)(struct intel_encoder *);
174
	void (*post_disable)(struct intel_encoder *);
169
	/* Read out the current hw state of this connector, returning true if
175
	/* Read out the current hw state of this connector, returning true if
Line 212... Line 218...
212
	 * Whether the crtc and the connected output pipeline is active. Implies
218
	 * Whether the crtc and the connected output pipeline is active. Implies
213
	 * that crtc->enabled is set, i.e. the current mode configuration has
219
	 * that crtc->enabled is set, i.e. the current mode configuration has
214
	 * some outputs connected to this crtc.
220
	 * some outputs connected to this crtc.
215
	 */
221
	 */
216
	bool active;
222
	bool active;
-
 
223
	bool eld_vld;
217
	bool primary_disabled; /* is the crtc obscured by a plane? */
224
	bool primary_disabled; /* is the crtc obscured by a plane? */
218
	bool lowfreq_avail;
225
	bool lowfreq_avail;
219
	struct intel_overlay *overlay;
226
	struct intel_overlay *overlay;
220
	struct intel_unpin_work *unpin_work;
227
	struct intel_unpin_work *unpin_work;
221
	int fdi_lanes;
228
	int fdi_lanes;
Line 235... Line 242...
235
	unsigned int bpp;
242
	unsigned int bpp;
Line 236... Line 243...
236
 
243
 
237
	/* We can share PLLs across outputs if the timings match */
244
	/* We can share PLLs across outputs if the timings match */
238
	struct intel_pch_pll *pch_pll;
245
	struct intel_pch_pll *pch_pll;
-
 
246
	uint32_t ddi_pll_sel;
-
 
247
 
-
 
248
	/* reset counter value when the last flip was submitted */
239
	uint32_t ddi_pll_sel;
249
	unsigned int reset_counter;
Line 240... Line 250...
240
};
250
};
241
 
251
 
242
struct intel_plane {
252
struct intel_plane {
Line 290... Line 300...
290
#define DIP_TYPE_AVI    0x82
300
#define DIP_TYPE_AVI    0x82
291
#define DIP_VERSION_AVI 0x2
301
#define DIP_VERSION_AVI 0x2
292
#define DIP_LEN_AVI     13
302
#define DIP_LEN_AVI     13
293
#define DIP_AVI_PR_1    0
303
#define DIP_AVI_PR_1    0
294
#define DIP_AVI_PR_2    1
304
#define DIP_AVI_PR_2    1
-
 
305
#define DIP_AVI_RGB_QUANT_RANGE_DEFAULT	(0 << 2)
-
 
306
#define DIP_AVI_RGB_QUANT_RANGE_LIMITED	(1 << 2)
-
 
307
#define DIP_AVI_RGB_QUANT_RANGE_FULL	(2 << 2)
Line 295... Line 308...
295
 
308
 
296
#define DIP_TYPE_SPD	0x83
309
#define DIP_TYPE_SPD	0x83
297
#define DIP_VERSION_SPD	0x1
310
#define DIP_VERSION_SPD	0x1
298
#define DIP_LEN_SPD	25
311
#define DIP_LEN_SPD	25
Line 344... Line 357...
344
 
357
 
345
struct intel_hdmi {
358
struct intel_hdmi {
346
	u32 sdvox_reg;
359
	u32 sdvox_reg;
347
	int ddc_bus;
360
	int ddc_bus;
-
 
361
	uint32_t color_range;
348
	uint32_t color_range;
362
	bool color_range_auto;
349
	bool has_hdmi_sink;
363
	bool has_hdmi_sink;
350
	bool has_audio;
364
	bool has_audio;
-
 
365
	enum hdmi_force_audio force_audio;
351
	enum hdmi_force_audio force_audio;
366
	bool rgb_quant_range_selectable;
352
	void (*write_infoframe)(struct drm_encoder *encoder,
367
	void (*write_infoframe)(struct drm_encoder *encoder,
353
				struct dip_infoframe *frame);
368
				struct dip_infoframe *frame);
354
	void (*set_infoframes)(struct drm_encoder *encoder,
369
	void (*set_infoframes)(struct drm_encoder *encoder,
355
			       struct drm_display_mode *adjusted_mode);
370
			       struct drm_display_mode *adjusted_mode);
Line 363... Line 378...
363
	uint32_t DP;
378
	uint32_t DP;
364
	uint8_t  link_configuration[DP_LINK_CONFIGURATION_SIZE];
379
	uint8_t  link_configuration[DP_LINK_CONFIGURATION_SIZE];
365
	bool has_audio;
380
	bool has_audio;
366
	enum hdmi_force_audio force_audio;
381
	enum hdmi_force_audio force_audio;
367
	uint32_t color_range;
382
	uint32_t color_range;
-
 
383
	bool color_range_auto;
368
	uint8_t link_bw;
384
	uint8_t link_bw;
369
	uint8_t lane_count;
385
	uint8_t lane_count;
370
	uint8_t dpcd[DP_RECEIVER_CAP_SIZE];
386
	uint8_t dpcd[DP_RECEIVER_CAP_SIZE];
371
	uint8_t downstream_ports[DP_MAX_DOWNSTREAM_PORTS];
387
	uint8_t downstream_ports[DP_MAX_DOWNSTREAM_PORTS];
372
	struct i2c_adapter adapter;
388
	struct i2c_adapter adapter;
Line 384... Line 400...
384
};
400
};
Line 385... Line 401...
385
 
401
 
386
struct intel_digital_port {
402
struct intel_digital_port {
387
	struct intel_encoder base;
403
	struct intel_encoder base;
-
 
404
	enum port port;
388
	enum port port;
405
	u32 port_reversal;
389
	struct intel_dp dp;
406
	struct intel_dp dp;
390
	struct intel_hdmi hdmi;
407
	struct intel_hdmi hdmi;
Line 391... Line 408...
391
};
408
};
Line 446... Line 463...
446
extern bool intel_sdvo_init(struct drm_device *dev, uint32_t sdvo_reg,
463
extern bool intel_sdvo_init(struct drm_device *dev, uint32_t sdvo_reg,
447
			    bool is_sdvob);
464
			    bool is_sdvob);
448
extern void intel_dvo_init(struct drm_device *dev);
465
extern void intel_dvo_init(struct drm_device *dev);
449
extern void intel_tv_init(struct drm_device *dev);
466
extern void intel_tv_init(struct drm_device *dev);
450
extern void intel_mark_busy(struct drm_device *dev);
467
extern void intel_mark_busy(struct drm_device *dev);
451
extern void intel_mark_idle(struct drm_device *dev);
-
 
452
extern void intel_mark_fb_busy(struct drm_i915_gem_object *obj);
468
extern void intel_mark_fb_busy(struct drm_i915_gem_object *obj);
453
extern void intel_mark_fb_idle(struct drm_i915_gem_object *obj);
469
extern void intel_mark_idle(struct drm_device *dev);
454
extern bool intel_lvds_init(struct drm_device *dev);
470
extern bool intel_lvds_init(struct drm_device *dev);
-
 
471
extern bool intel_is_dual_link_lvds(struct drm_device *dev);
455
extern void intel_dp_init(struct drm_device *dev, int output_reg,
472
extern void intel_dp_init(struct drm_device *dev, int output_reg,
456
			  enum port port);
473
			  enum port port);
457
extern void intel_dp_init_connector(struct intel_digital_port *intel_dig_port,
474
extern void intel_dp_init_connector(struct intel_digital_port *intel_dig_port,
458
				    struct intel_connector *intel_connector);
475
				    struct intel_connector *intel_connector);
459
void
476
void
Line 509... Line 526...
509
 
526
 
510
	bool fb_changed;
527
	bool fb_changed;
511
	bool mode_changed;
528
	bool mode_changed;
Line 512... Line 529...
512
};
529
};
513
 
530
 
514
extern bool intel_set_mode(struct drm_crtc *crtc, struct drm_display_mode *mode,
531
extern int intel_set_mode(struct drm_crtc *crtc, struct drm_display_mode *mode,
-
 
532
			   int x, int y, struct drm_framebuffer *old_fb);
515
			   int x, int y, struct drm_framebuffer *old_fb);
533
extern void intel_modeset_disable(struct drm_device *dev);
516
extern void intel_modeset_disable(struct drm_device *dev);
534
extern void intel_crtc_restore_mode(struct drm_crtc *crtc);
517
extern void intel_crtc_load_lut(struct drm_crtc *crtc);
-
 
518
extern void intel_crtc_update_dpms(struct drm_crtc *crtc);
535
extern void intel_crtc_load_lut(struct drm_crtc *crtc);
519
extern void intel_encoder_noop(struct drm_encoder *encoder);
536
extern void intel_crtc_update_dpms(struct drm_crtc *crtc);
520
extern void intel_encoder_destroy(struct drm_encoder *encoder);
537
extern void intel_encoder_destroy(struct drm_encoder *encoder);
521
extern void intel_encoder_dpms(struct intel_encoder *encoder, int mode);
538
extern void intel_encoder_dpms(struct intel_encoder *encoder, int mode);
522
extern bool intel_encoder_check_is_cloned(struct intel_encoder *encoder);
539
extern bool intel_encoder_check_is_cloned(struct intel_encoder *encoder);
Line 553... Line 570...
553
hdmi_to_dig_port(struct intel_hdmi *intel_hdmi)
570
hdmi_to_dig_port(struct intel_hdmi *intel_hdmi)
554
{
571
{
555
	return container_of(intel_hdmi, struct intel_digital_port, hdmi);
572
	return container_of(intel_hdmi, struct intel_digital_port, hdmi);
556
}
573
}
Line -... Line 574...
-
 
574
 
-
 
575
bool ibx_digital_port_connected(struct drm_i915_private *dev_priv,
-
 
576
				struct intel_digital_port *port);
557
 
577
 
558
extern void intel_connector_attach_encoder(struct intel_connector *connector,
578
extern void intel_connector_attach_encoder(struct intel_connector *connector,
559
					   struct intel_encoder *encoder);
579
					   struct intel_encoder *encoder);
Line 560... Line 580...
560
extern struct drm_encoder *intel_best_encoder(struct drm_connector *connector);
580
extern struct drm_encoder *intel_best_encoder(struct drm_connector *connector);
Line 596... Line 616...
596
extern int intel_framebuffer_init(struct drm_device *dev,
616
extern int intel_framebuffer_init(struct drm_device *dev,
597
				  struct intel_framebuffer *ifb,
617
				  struct intel_framebuffer *ifb,
598
				  struct drm_mode_fb_cmd2 *mode_cmd,
618
				  struct drm_mode_fb_cmd2 *mode_cmd,
599
				  struct drm_i915_gem_object *obj);
619
				  struct drm_i915_gem_object *obj);
600
extern int intel_fbdev_init(struct drm_device *dev);
620
extern int intel_fbdev_init(struct drm_device *dev);
-
 
621
extern void intel_fbdev_initial_config(struct drm_device *dev);
601
extern void intel_fbdev_fini(struct drm_device *dev);
622
extern void intel_fbdev_fini(struct drm_device *dev);
602
extern void intel_fbdev_set_suspend(struct drm_device *dev, int state);
623
extern void intel_fbdev_set_suspend(struct drm_device *dev, int state);
603
extern void intel_prepare_page_flip(struct drm_device *dev, int plane);
624
extern void intel_prepare_page_flip(struct drm_device *dev, int plane);
604
extern void intel_finish_page_flip(struct drm_device *dev, int pipe);
625
extern void intel_finish_page_flip(struct drm_device *dev, int pipe);
605
extern void intel_finish_page_flip_plane(struct drm_device *dev, int plane);
626
extern void intel_finish_page_flip_plane(struct drm_device *dev, int plane);
Line 634... Line 655...
634
					   uint32_t sprite_width,
655
					   uint32_t sprite_width,
635
					   int pixel_size);
656
					   int pixel_size);
636
extern void intel_update_linetime_watermarks(struct drm_device *dev, int pipe,
657
extern void intel_update_linetime_watermarks(struct drm_device *dev, int pipe,
637
			 struct drm_display_mode *mode);
658
			 struct drm_display_mode *mode);
Line 638... Line 659...
638
 
659
 
-
 
660
extern unsigned long intel_gen4_compute_page_offset(int *x, int *y,
639
extern unsigned long intel_gen4_compute_offset_xtiled(int *x, int *y,
661
						    unsigned int tiling_mode,
640
						      unsigned int bpp,
662
						      unsigned int bpp,
Line 641... Line 663...
641
						      unsigned int pitch);
663
						      unsigned int pitch);
642
 
664
 
Line 655... Line 677...
655
extern void intel_update_fbc(struct drm_device *dev);
677
extern void intel_update_fbc(struct drm_device *dev);
656
/* IPS */
678
/* IPS */
657
extern void intel_gpu_ips_init(struct drm_i915_private *dev_priv);
679
extern void intel_gpu_ips_init(struct drm_i915_private *dev_priv);
658
extern void intel_gpu_ips_teardown(void);
680
extern void intel_gpu_ips_teardown(void);
Line 659... Line 681...
659
 
681
 
-
 
682
extern void intel_init_power_well(struct drm_device *dev);
660
extern void intel_init_power_wells(struct drm_device *dev);
683
extern void intel_set_power_well(struct drm_device *dev, bool enable);
661
extern void intel_enable_gt_powersave(struct drm_device *dev);
684
extern void intel_enable_gt_powersave(struct drm_device *dev);
662
extern void intel_disable_gt_powersave(struct drm_device *dev);
685
extern void intel_disable_gt_powersave(struct drm_device *dev);
663
extern void gen6_gt_check_fifodbg(struct drm_i915_private *dev_priv);
686
extern void gen6_gt_check_fifodbg(struct drm_i915_private *dev_priv);