diff options
Diffstat (limited to 'drivers/gpu/drm/i915/i915_drv.h')
-rw-r--r-- | drivers/gpu/drm/i915/i915_drv.h | 48 |
1 files changed, 40 insertions, 8 deletions
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index 6960849522f8..7f797ef1ab39 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h | |||
@@ -128,6 +128,7 @@ struct drm_i915_master_private { | |||
128 | 128 | ||
129 | struct drm_i915_fence_reg { | 129 | struct drm_i915_fence_reg { |
130 | struct drm_gem_object *obj; | 130 | struct drm_gem_object *obj; |
131 | struct list_head lru_list; | ||
131 | }; | 132 | }; |
132 | 133 | ||
133 | struct sdvo_device_mapping { | 134 | struct sdvo_device_mapping { |
@@ -135,6 +136,7 @@ struct sdvo_device_mapping { | |||
135 | u8 slave_addr; | 136 | u8 slave_addr; |
136 | u8 dvo_wiring; | 137 | u8 dvo_wiring; |
137 | u8 initialized; | 138 | u8 initialized; |
139 | u8 ddc_pin; | ||
138 | }; | 140 | }; |
139 | 141 | ||
140 | struct drm_i915_error_state { | 142 | struct drm_i915_error_state { |
@@ -175,7 +177,7 @@ struct drm_i915_error_state { | |||
175 | 177 | ||
176 | struct drm_i915_display_funcs { | 178 | struct drm_i915_display_funcs { |
177 | void (*dpms)(struct drm_crtc *crtc, int mode); | 179 | void (*dpms)(struct drm_crtc *crtc, int mode); |
178 | bool (*fbc_enabled)(struct drm_crtc *crtc); | 180 | bool (*fbc_enabled)(struct drm_device *dev); |
179 | void (*enable_fbc)(struct drm_crtc *crtc, unsigned long interval); | 181 | void (*enable_fbc)(struct drm_crtc *crtc, unsigned long interval); |
180 | void (*disable_fbc)(struct drm_device *dev); | 182 | void (*disable_fbc)(struct drm_device *dev); |
181 | int (*get_display_clock_speed)(struct drm_device *dev); | 183 | int (*get_display_clock_speed)(struct drm_device *dev); |
@@ -195,6 +197,7 @@ struct intel_overlay; | |||
195 | struct intel_device_info { | 197 | struct intel_device_info { |
196 | u8 is_mobile : 1; | 198 | u8 is_mobile : 1; |
197 | u8 is_i8xx : 1; | 199 | u8 is_i8xx : 1; |
200 | u8 is_i85x : 1; | ||
198 | u8 is_i915g : 1; | 201 | u8 is_i915g : 1; |
199 | u8 is_i9xx : 1; | 202 | u8 is_i9xx : 1; |
200 | u8 is_i945gm : 1; | 203 | u8 is_i945gm : 1; |
@@ -221,6 +224,13 @@ enum no_fbc_reason { | |||
221 | FBC_NOT_TILED, /* buffer not tiled */ | 224 | FBC_NOT_TILED, /* buffer not tiled */ |
222 | }; | 225 | }; |
223 | 226 | ||
227 | enum intel_pch { | ||
228 | PCH_IBX, /* Ibexpeak PCH */ | ||
229 | PCH_CPT, /* Cougarpoint PCH */ | ||
230 | }; | ||
231 | |||
232 | struct intel_fbdev; | ||
233 | |||
224 | typedef struct drm_i915_private { | 234 | typedef struct drm_i915_private { |
225 | struct drm_device *dev; | 235 | struct drm_device *dev; |
226 | 236 | ||
@@ -235,11 +245,14 @@ typedef struct drm_i915_private { | |||
235 | 245 | ||
236 | drm_dma_handle_t *status_page_dmah; | 246 | drm_dma_handle_t *status_page_dmah; |
237 | void *hw_status_page; | 247 | void *hw_status_page; |
248 | void *seqno_page; | ||
238 | dma_addr_t dma_status_page; | 249 | dma_addr_t dma_status_page; |
239 | uint32_t counter; | 250 | uint32_t counter; |
240 | unsigned int status_gfx_addr; | 251 | unsigned int status_gfx_addr; |
252 | unsigned int seqno_gfx_addr; | ||
241 | drm_local_map_t hws_map; | 253 | drm_local_map_t hws_map; |
242 | struct drm_gem_object *hws_obj; | 254 | struct drm_gem_object *hws_obj; |
255 | struct drm_gem_object *seqno_obj; | ||
243 | struct drm_gem_object *pwrctx; | 256 | struct drm_gem_object *pwrctx; |
244 | 257 | ||
245 | struct resource mch_res; | 258 | struct resource mch_res; |
@@ -331,6 +344,9 @@ typedef struct drm_i915_private { | |||
331 | /* Display functions */ | 344 | /* Display functions */ |
332 | struct drm_i915_display_funcs display; | 345 | struct drm_i915_display_funcs display; |
333 | 346 | ||
347 | /* PCH chipset type */ | ||
348 | enum intel_pch pch_type; | ||
349 | |||
334 | /* Register state */ | 350 | /* Register state */ |
335 | bool modeset_on_lid; | 351 | bool modeset_on_lid; |
336 | u8 saveLBB; | 352 | u8 saveLBB; |
@@ -630,11 +646,17 @@ typedef struct drm_i915_private { | |||
630 | u8 max_delay; | 646 | u8 max_delay; |
631 | 647 | ||
632 | enum no_fbc_reason no_fbc_reason; | 648 | enum no_fbc_reason no_fbc_reason; |
649 | |||
650 | struct drm_mm_node *compressed_fb; | ||
651 | struct drm_mm_node *compressed_llb; | ||
652 | |||
653 | /* list of fbdev register on this device */ | ||
654 | struct intel_fbdev *fbdev; | ||
633 | } drm_i915_private_t; | 655 | } drm_i915_private_t; |
634 | 656 | ||
635 | /** driver private structure attached to each drm_gem_object */ | 657 | /** driver private structure attached to each drm_gem_object */ |
636 | struct drm_i915_gem_object { | 658 | struct drm_i915_gem_object { |
637 | struct drm_gem_object *obj; | 659 | struct drm_gem_object base; |
638 | 660 | ||
639 | /** Current space allocated to this object in the GTT, if any. */ | 661 | /** Current space allocated to this object in the GTT, if any. */ |
640 | struct drm_mm_node *gtt_space; | 662 | struct drm_mm_node *gtt_space; |
@@ -644,9 +666,6 @@ struct drm_i915_gem_object { | |||
644 | /** This object's place on GPU write list */ | 666 | /** This object's place on GPU write list */ |
645 | struct list_head gpu_write_list; | 667 | struct list_head gpu_write_list; |
646 | 668 | ||
647 | /** This object's place on the fenced object LRU */ | ||
648 | struct list_head fence_list; | ||
649 | |||
650 | /** | 669 | /** |
651 | * This is set if the object is on the active or flushing lists | 670 | * This is set if the object is on the active or flushing lists |
652 | * (has pending rendering), and is not set if it's on inactive (ready | 671 | * (has pending rendering), and is not set if it's on inactive (ready |
@@ -733,7 +752,7 @@ struct drm_i915_gem_object { | |||
733 | atomic_t pending_flip; | 752 | atomic_t pending_flip; |
734 | }; | 753 | }; |
735 | 754 | ||
736 | #define to_intel_bo(x) ((struct drm_i915_gem_object *) (x)->driver_private) | 755 | #define to_intel_bo(x) container_of(x, struct drm_i915_gem_object, base) |
737 | 756 | ||
738 | /** | 757 | /** |
739 | * Request queue structure. | 758 | * Request queue structure. |
@@ -895,6 +914,8 @@ int i915_gem_get_aperture_ioctl(struct drm_device *dev, void *data, | |||
895 | struct drm_file *file_priv); | 914 | struct drm_file *file_priv); |
896 | void i915_gem_load(struct drm_device *dev); | 915 | void i915_gem_load(struct drm_device *dev); |
897 | int i915_gem_init_object(struct drm_gem_object *obj); | 916 | int i915_gem_init_object(struct drm_gem_object *obj); |
917 | struct drm_gem_object * i915_gem_alloc_object(struct drm_device *dev, | ||
918 | size_t size); | ||
898 | void i915_gem_free_object(struct drm_gem_object *obj); | 919 | void i915_gem_free_object(struct drm_gem_object *obj); |
899 | int i915_gem_object_pin(struct drm_gem_object *obj, uint32_t alignment); | 920 | int i915_gem_object_pin(struct drm_gem_object *obj, uint32_t alignment); |
900 | void i915_gem_object_unpin(struct drm_gem_object *obj); | 921 | void i915_gem_object_unpin(struct drm_gem_object *obj); |
@@ -991,6 +1012,12 @@ extern void intel_modeset_cleanup(struct drm_device *dev); | |||
991 | extern int intel_modeset_vga_set_state(struct drm_device *dev, bool state); | 1012 | extern int intel_modeset_vga_set_state(struct drm_device *dev, bool state); |
992 | extern void i8xx_disable_fbc(struct drm_device *dev); | 1013 | extern void i8xx_disable_fbc(struct drm_device *dev); |
993 | extern void g4x_disable_fbc(struct drm_device *dev); | 1014 | extern void g4x_disable_fbc(struct drm_device *dev); |
1015 | extern void intel_disable_fbc(struct drm_device *dev); | ||
1016 | extern void intel_enable_fbc(struct drm_crtc *crtc, unsigned long interval); | ||
1017 | extern bool intel_fbc_enabled(struct drm_device *dev); | ||
1018 | |||
1019 | extern void intel_detect_pch (struct drm_device *dev); | ||
1020 | extern int intel_trans_dp_port_sel (struct drm_crtc *crtc); | ||
994 | 1021 | ||
995 | /** | 1022 | /** |
996 | * Lock test for when it's just for synchronization of ring access. | 1023 | * Lock test for when it's just for synchronization of ring access. |
@@ -1070,7 +1097,7 @@ extern int i915_wait_ring(struct drm_device * dev, int n, const char *caller); | |||
1070 | 1097 | ||
1071 | #define IS_I830(dev) ((dev)->pci_device == 0x3577) | 1098 | #define IS_I830(dev) ((dev)->pci_device == 0x3577) |
1072 | #define IS_845G(dev) ((dev)->pci_device == 0x2562) | 1099 | #define IS_845G(dev) ((dev)->pci_device == 0x2562) |
1073 | #define IS_I85X(dev) ((dev)->pci_device == 0x3582) | 1100 | #define IS_I85X(dev) (INTEL_INFO(dev)->is_i85x) |
1074 | #define IS_I865G(dev) ((dev)->pci_device == 0x2572) | 1101 | #define IS_I865G(dev) ((dev)->pci_device == 0x2572) |
1075 | #define IS_GEN2(dev) (INTEL_INFO(dev)->is_i8xx) | 1102 | #define IS_GEN2(dev) (INTEL_INFO(dev)->is_i8xx) |
1076 | #define IS_I915G(dev) (INTEL_INFO(dev)->is_i915g) | 1103 | #define IS_I915G(dev) (INTEL_INFO(dev)->is_i915g) |
@@ -1123,7 +1150,8 @@ extern int i915_wait_ring(struct drm_device * dev, int n, const char *caller); | |||
1123 | #define SUPPORTS_INTEGRATED_DP(dev) (IS_G4X(dev) || IS_IRONLAKE(dev)) | 1150 | #define SUPPORTS_INTEGRATED_DP(dev) (IS_G4X(dev) || IS_IRONLAKE(dev)) |
1124 | #define SUPPORTS_EDP(dev) (IS_IRONLAKE_M(dev)) | 1151 | #define SUPPORTS_EDP(dev) (IS_IRONLAKE_M(dev)) |
1125 | #define SUPPORTS_TV(dev) (IS_I9XX(dev) && IS_MOBILE(dev) && \ | 1152 | #define SUPPORTS_TV(dev) (IS_I9XX(dev) && IS_MOBILE(dev) && \ |
1126 | !IS_IRONLAKE(dev) && !IS_PINEVIEW(dev)) | 1153 | !IS_IRONLAKE(dev) && !IS_PINEVIEW(dev) && \ |
1154 | !IS_GEN6(dev)) | ||
1127 | #define I915_HAS_HOTPLUG(dev) (INTEL_INFO(dev)->has_hotplug) | 1155 | #define I915_HAS_HOTPLUG(dev) (INTEL_INFO(dev)->has_hotplug) |
1128 | /* dsparb controlled by hw only */ | 1156 | /* dsparb controlled by hw only */ |
1129 | #define DSPARB_HWCONTROL(dev) (IS_G4X(dev) || IS_IRONLAKE(dev)) | 1157 | #define DSPARB_HWCONTROL(dev) (IS_G4X(dev) || IS_IRONLAKE(dev)) |
@@ -1135,6 +1163,10 @@ extern int i915_wait_ring(struct drm_device * dev, int n, const char *caller); | |||
1135 | 1163 | ||
1136 | #define HAS_PCH_SPLIT(dev) (IS_IRONLAKE(dev) || \ | 1164 | #define HAS_PCH_SPLIT(dev) (IS_IRONLAKE(dev) || \ |
1137 | IS_GEN6(dev)) | 1165 | IS_GEN6(dev)) |
1166 | #define HAS_PIPE_CONTROL(dev) (IS_IRONLAKE(dev) || IS_GEN6(dev)) | ||
1167 | |||
1168 | #define INTEL_PCH_TYPE(dev) (((struct drm_i915_private *)(dev)->dev_private)->pch_type) | ||
1169 | #define HAS_PCH_CPT(dev) (INTEL_PCH_TYPE(dev) == PCH_CPT) | ||
1138 | 1170 | ||
1139 | #define PRIMARY_RINGBUFFER_SIZE (128*1024) | 1171 | #define PRIMARY_RINGBUFFER_SIZE (128*1024) |
1140 | 1172 | ||