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