diff options
author | Dave Airlie <airlied@redhat.com> | 2010-08-03 19:51:27 -0400 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2010-08-03 19:51:27 -0400 |
commit | fa0a6024da61d96a12fab18991b9897292b43253 (patch) | |
tree | 35ba7b067863f649dc37c4b67a3ed740c0d9736d /drivers/gpu/drm/i915/i915_drv.h | |
parent | 4c70b2eae371ebe83019ac47de6088b78124ab36 (diff) | |
parent | 7b824ec2e5d7d086264ecae51e30e3c5e00cdecc (diff) |
Merge remote branch 'intel/drm-intel-next' of /ssd/git/drm-next into drm-core-next
* 'intel/drm-intel-next' of /ssd/git/drm-next: (230 commits)
drm/i915: Clear the Ironlake dithering flags when the pipe doesn't want it.
drm/agp/i915: trim stolen space to 32M
drm/i915: Unset cursor if out-of-bounds upon mode change (v4)
drm/i915: Unreference object not handle on creation
drm/i915: Attempt to uncouple object after catastrophic failure in unbind
drm/i915: Repeat unbinding during free if interrupted (v6)
drm/i915: Refactor i915_gem_retire_requests()
drm/i915: Warn if we run out of FIFO space for a mode
drm/i915: Round up the watermark entries (v3)
drm/i915: Typo in (unused) register mask for overlay.
drm/i915: Check overlay stride errata for i830 and i845
drm/i915: Validate the mode for eDP by using fixed panel size
drm/i915: Always use the fixed panel timing for eDP
drm/i915: Enable panel fitting for eDP
drm/i915: Add fixed panel mode parsed from EDID for eDP without fixed mode in VBT
drm/i915/sdvo: Set sync polarity based on actual mode
drm/i915/hdmi: Set sync polarity based on actual mode
drm/i915/pch: Set transcoder sync polarity for DP based on actual mode
drm/i915: Initialize LVDS and eDP outputs before anything else
drm/i915/dp: Correctly report eDP in the core connector type
...
Diffstat (limited to 'drivers/gpu/drm/i915/i915_drv.h')
-rw-r--r-- | drivers/gpu/drm/i915/i915_drv.h | 34 |
1 files changed, 27 insertions, 7 deletions
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index d147ab2f5bfc..906663b9929e 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h | |||
@@ -176,7 +176,8 @@ struct drm_i915_display_funcs { | |||
176 | int (*get_display_clock_speed)(struct drm_device *dev); | 176 | int (*get_display_clock_speed)(struct drm_device *dev); |
177 | int (*get_fifo_size)(struct drm_device *dev, int plane); | 177 | int (*get_fifo_size)(struct drm_device *dev, int plane); |
178 | void (*update_wm)(struct drm_device *dev, int planea_clock, | 178 | void (*update_wm)(struct drm_device *dev, int planea_clock, |
179 | int planeb_clock, int sr_hdisplay, int pixel_size); | 179 | int planeb_clock, int sr_hdisplay, int sr_htotal, |
180 | int pixel_size); | ||
180 | /* clock updates for mode set */ | 181 | /* clock updates for mode set */ |
181 | /* cursor updates */ | 182 | /* cursor updates */ |
182 | /* render clock increase/decrease */ | 183 | /* render clock increase/decrease */ |
@@ -200,6 +201,8 @@ struct intel_device_info { | |||
200 | u8 need_gfx_hws : 1; | 201 | u8 need_gfx_hws : 1; |
201 | u8 is_g4x : 1; | 202 | u8 is_g4x : 1; |
202 | u8 is_pineview : 1; | 203 | u8 is_pineview : 1; |
204 | u8 is_broadwater : 1; | ||
205 | u8 is_crestline : 1; | ||
203 | u8 is_ironlake : 1; | 206 | u8 is_ironlake : 1; |
204 | u8 is_gen6 : 1; | 207 | u8 is_gen6 : 1; |
205 | u8 has_fbc : 1; | 208 | u8 has_fbc : 1; |
@@ -215,6 +218,7 @@ enum no_fbc_reason { | |||
215 | FBC_MODE_TOO_LARGE, /* mode too large for compression */ | 218 | FBC_MODE_TOO_LARGE, /* mode too large for compression */ |
216 | FBC_BAD_PLANE, /* fbc not supported on plane */ | 219 | FBC_BAD_PLANE, /* fbc not supported on plane */ |
217 | FBC_NOT_TILED, /* buffer not tiled */ | 220 | FBC_NOT_TILED, /* buffer not tiled */ |
221 | FBC_MULTIPLE_PIPES, /* more than one pipe active */ | ||
218 | }; | 222 | }; |
219 | 223 | ||
220 | enum intel_pch { | 224 | enum intel_pch { |
@@ -222,6 +226,8 @@ enum intel_pch { | |||
222 | PCH_CPT, /* Cougarpoint PCH */ | 226 | PCH_CPT, /* Cougarpoint PCH */ |
223 | }; | 227 | }; |
224 | 228 | ||
229 | #define QUIRK_PIPEA_FORCE (1<<0) | ||
230 | |||
225 | struct intel_fbdev; | 231 | struct intel_fbdev; |
226 | 232 | ||
227 | typedef struct drm_i915_private { | 233 | typedef struct drm_i915_private { |
@@ -285,6 +291,8 @@ typedef struct drm_i915_private { | |||
285 | struct timer_list hangcheck_timer; | 291 | struct timer_list hangcheck_timer; |
286 | int hangcheck_count; | 292 | int hangcheck_count; |
287 | uint32_t last_acthd; | 293 | uint32_t last_acthd; |
294 | uint32_t last_instdone; | ||
295 | uint32_t last_instdone1; | ||
288 | 296 | ||
289 | struct drm_mm vram; | 297 | struct drm_mm vram; |
290 | 298 | ||
@@ -337,6 +345,8 @@ typedef struct drm_i915_private { | |||
337 | /* PCH chipset type */ | 345 | /* PCH chipset type */ |
338 | enum intel_pch pch_type; | 346 | enum intel_pch pch_type; |
339 | 347 | ||
348 | unsigned long quirks; | ||
349 | |||
340 | /* Register state */ | 350 | /* Register state */ |
341 | bool modeset_on_lid; | 351 | bool modeset_on_lid; |
342 | u8 saveLBB; | 352 | u8 saveLBB; |
@@ -542,6 +552,14 @@ typedef struct drm_i915_private { | |||
542 | struct list_head fence_list; | 552 | struct list_head fence_list; |
543 | 553 | ||
544 | /** | 554 | /** |
555 | * List of objects currently pending being freed. | ||
556 | * | ||
557 | * These objects are no longer in use, but due to a signal | ||
558 | * we were prevented from freeing them at the appointed time. | ||
559 | */ | ||
560 | struct list_head deferred_free_list; | ||
561 | |||
562 | /** | ||
545 | * We leave the user IRQ off as much as possible, | 563 | * We leave the user IRQ off as much as possible, |
546 | * but this means that requests will finish and never | 564 | * but this means that requests will finish and never |
547 | * be retired once the system goes idle. Set a timer to | 565 | * be retired once the system goes idle. Set a timer to |
@@ -672,7 +690,7 @@ struct drm_i915_gem_object { | |||
672 | * | 690 | * |
673 | * Size: 4 bits for 16 fences + sign (for FENCE_REG_NONE) | 691 | * Size: 4 bits for 16 fences + sign (for FENCE_REG_NONE) |
674 | */ | 692 | */ |
675 | int fence_reg : 5; | 693 | signed int fence_reg : 5; |
676 | 694 | ||
677 | /** | 695 | /** |
678 | * Used for checking the object doesn't appear more than once | 696 | * Used for checking the object doesn't appear more than once |
@@ -708,7 +726,7 @@ struct drm_i915_gem_object { | |||
708 | * | 726 | * |
709 | * In the worst case this is 1 + 1 + 1 + 2*2 = 7. That would fit into 3 | 727 | * In the worst case this is 1 + 1 + 1 + 2*2 = 7. That would fit into 3 |
710 | * bits with absolutely no headroom. So use 4 bits. */ | 728 | * bits with absolutely no headroom. So use 4 bits. */ |
711 | int pin_count : 4; | 729 | unsigned int pin_count : 4; |
712 | #define DRM_I915_GEM_OBJECT_MAX_PIN_COUNT 0xf | 730 | #define DRM_I915_GEM_OBJECT_MAX_PIN_COUNT 0xf |
713 | 731 | ||
714 | /** AGP memory structure for our GTT binding. */ | 732 | /** AGP memory structure for our GTT binding. */ |
@@ -738,7 +756,7 @@ struct drm_i915_gem_object { | |||
738 | uint32_t stride; | 756 | uint32_t stride; |
739 | 757 | ||
740 | /** Record of address bit 17 of each page at last unbind. */ | 758 | /** Record of address bit 17 of each page at last unbind. */ |
741 | long *bit_17; | 759 | unsigned long *bit_17; |
742 | 760 | ||
743 | /** AGP mapping type (AGP_USER_MEMORY or AGP_USER_CACHED_MEMORY */ | 761 | /** AGP mapping type (AGP_USER_MEMORY or AGP_USER_CACHED_MEMORY */ |
744 | uint32_t agp_type; | 762 | uint32_t agp_type; |
@@ -950,8 +968,7 @@ uint32_t i915_get_gem_seqno(struct drm_device *dev, | |||
950 | bool i915_seqno_passed(uint32_t seq1, uint32_t seq2); | 968 | bool i915_seqno_passed(uint32_t seq1, uint32_t seq2); |
951 | int i915_gem_object_get_fence_reg(struct drm_gem_object *obj); | 969 | int i915_gem_object_get_fence_reg(struct drm_gem_object *obj); |
952 | int i915_gem_object_put_fence_reg(struct drm_gem_object *obj); | 970 | int i915_gem_object_put_fence_reg(struct drm_gem_object *obj); |
953 | void i915_gem_retire_requests(struct drm_device *dev, | 971 | void i915_gem_retire_requests(struct drm_device *dev); |
954 | struct intel_ring_buffer *ring); | ||
955 | void i915_gem_retire_work_handler(struct work_struct *work); | 972 | void i915_gem_retire_work_handler(struct work_struct *work); |
956 | void i915_gem_clflush_object(struct drm_gem_object *obj); | 973 | void i915_gem_clflush_object(struct drm_gem_object *obj); |
957 | int i915_gem_object_set_domain(struct drm_gem_object *obj, | 974 | int i915_gem_object_set_domain(struct drm_gem_object *obj, |
@@ -981,7 +998,7 @@ void i915_gem_free_all_phys_object(struct drm_device *dev); | |||
981 | int i915_gem_object_get_pages(struct drm_gem_object *obj, gfp_t gfpmask); | 998 | int i915_gem_object_get_pages(struct drm_gem_object *obj, gfp_t gfpmask); |
982 | void i915_gem_object_put_pages(struct drm_gem_object *obj); | 999 | void i915_gem_object_put_pages(struct drm_gem_object *obj); |
983 | void i915_gem_release(struct drm_device * dev, struct drm_file *file_priv); | 1000 | void i915_gem_release(struct drm_device * dev, struct drm_file *file_priv); |
984 | void i915_gem_object_flush_write_domain(struct drm_gem_object *obj); | 1001 | int i915_gem_object_flush_write_domain(struct drm_gem_object *obj); |
985 | 1002 | ||
986 | void i915_gem_shrinker_init(void); | 1003 | void i915_gem_shrinker_init(void); |
987 | void i915_gem_shrinker_exit(void); | 1004 | void i915_gem_shrinker_exit(void); |
@@ -1041,6 +1058,7 @@ extern void intel_modeset_cleanup(struct drm_device *dev); | |||
1041 | extern int intel_modeset_vga_set_state(struct drm_device *dev, bool state); | 1058 | extern int intel_modeset_vga_set_state(struct drm_device *dev, bool state); |
1042 | extern void i8xx_disable_fbc(struct drm_device *dev); | 1059 | extern void i8xx_disable_fbc(struct drm_device *dev); |
1043 | extern void g4x_disable_fbc(struct drm_device *dev); | 1060 | extern void g4x_disable_fbc(struct drm_device *dev); |
1061 | extern void ironlake_disable_fbc(struct drm_device *dev); | ||
1044 | extern void intel_disable_fbc(struct drm_device *dev); | 1062 | extern void intel_disable_fbc(struct drm_device *dev); |
1045 | extern void intel_enable_fbc(struct drm_crtc *crtc, unsigned long interval); | 1063 | extern void intel_enable_fbc(struct drm_crtc *crtc, unsigned long interval); |
1046 | extern bool intel_fbc_enabled(struct drm_device *dev); | 1064 | extern bool intel_fbc_enabled(struct drm_device *dev); |
@@ -1130,6 +1148,8 @@ extern int intel_trans_dp_port_sel (struct drm_crtc *crtc); | |||
1130 | #define IS_I945GM(dev) (INTEL_INFO(dev)->is_i945gm) | 1148 | #define IS_I945GM(dev) (INTEL_INFO(dev)->is_i945gm) |
1131 | #define IS_I965G(dev) (INTEL_INFO(dev)->is_i965g) | 1149 | #define IS_I965G(dev) (INTEL_INFO(dev)->is_i965g) |
1132 | #define IS_I965GM(dev) (INTEL_INFO(dev)->is_i965gm) | 1150 | #define IS_I965GM(dev) (INTEL_INFO(dev)->is_i965gm) |
1151 | #define IS_BROADWATER(dev) (INTEL_INFO(dev)->is_broadwater) | ||
1152 | #define IS_CRESTLINE(dev) (INTEL_INFO(dev)->is_crestline) | ||
1133 | #define IS_GM45(dev) ((dev)->pci_device == 0x2A42) | 1153 | #define IS_GM45(dev) ((dev)->pci_device == 0x2A42) |
1134 | #define IS_G4X(dev) (INTEL_INFO(dev)->is_g4x) | 1154 | #define IS_G4X(dev) (INTEL_INFO(dev)->is_g4x) |
1135 | #define IS_PINEVIEW_G(dev) ((dev)->pci_device == 0xa001) | 1155 | #define IS_PINEVIEW_G(dev) ((dev)->pci_device == 0xa001) |