diff options
Diffstat (limited to 'drivers/gpu/drm/i915/i915_drv.h')
| -rw-r--r-- | drivers/gpu/drm/i915/i915_drv.h | 31 |
1 files changed, 15 insertions, 16 deletions
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index f20ffe17df7..ef1c0b8f8d0 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h | |||
| @@ -31,6 +31,7 @@ | |||
| 31 | #define _I915_DRV_H_ | 31 | #define _I915_DRV_H_ |
| 32 | 32 | ||
| 33 | #include "i915_reg.h" | 33 | #include "i915_reg.h" |
| 34 | #include <linux/io-mapping.h> | ||
| 34 | 35 | ||
| 35 | /* General customization: | 36 | /* General customization: |
| 36 | */ | 37 | */ |
| @@ -87,13 +88,6 @@ struct mem_block { | |||
| 87 | struct drm_file *file_priv; /* NULL: free, -1: heap, other: real files */ | 88 | struct drm_file *file_priv; /* NULL: free, -1: heap, other: real files */ |
| 88 | }; | 89 | }; |
| 89 | 90 | ||
| 90 | typedef struct _drm_i915_vbl_swap { | ||
| 91 | struct list_head head; | ||
| 92 | drm_drawable_t drw_id; | ||
| 93 | unsigned int pipe; | ||
| 94 | unsigned int sequence; | ||
| 95 | } drm_i915_vbl_swap_t; | ||
| 96 | |||
| 97 | struct opregion_header; | 91 | struct opregion_header; |
| 98 | struct opregion_acpi; | 92 | struct opregion_acpi; |
| 99 | struct opregion_swsci; | 93 | struct opregion_swsci; |
| @@ -145,10 +139,6 @@ typedef struct drm_i915_private { | |||
| 145 | unsigned int sr01, adpa, ppcr, dvob, dvoc, lvds; | 139 | unsigned int sr01, adpa, ppcr, dvob, dvoc, lvds; |
| 146 | int vblank_pipe; | 140 | int vblank_pipe; |
| 147 | 141 | ||
| 148 | spinlock_t swaps_lock; | ||
| 149 | drm_i915_vbl_swap_t vbl_swaps; | ||
| 150 | unsigned int swaps_pending; | ||
| 151 | |||
| 152 | struct intel_opregion opregion; | 142 | struct intel_opregion opregion; |
| 153 | 143 | ||
| 154 | /* Register state */ | 144 | /* Register state */ |
| @@ -156,6 +146,7 @@ typedef struct drm_i915_private { | |||
| 156 | u32 saveDSPACNTR; | 146 | u32 saveDSPACNTR; |
| 157 | u32 saveDSPBCNTR; | 147 | u32 saveDSPBCNTR; |
| 158 | u32 saveDSPARB; | 148 | u32 saveDSPARB; |
| 149 | u32 saveRENDERSTANDBY; | ||
| 159 | u32 savePIPEACONF; | 150 | u32 savePIPEACONF; |
| 160 | u32 savePIPEBCONF; | 151 | u32 savePIPEBCONF; |
| 161 | u32 savePIPEASRC; | 152 | u32 savePIPEASRC; |
| @@ -240,12 +231,11 @@ typedef struct drm_i915_private { | |||
| 240 | u8 saveDACDATA[256*3]; /* 256 3-byte colors */ | 231 | u8 saveDACDATA[256*3]; /* 256 3-byte colors */ |
| 241 | u8 saveCR[37]; | 232 | u8 saveCR[37]; |
| 242 | 233 | ||
| 243 | /** Work task for vblank-related ring access */ | ||
| 244 | struct work_struct vblank_work; | ||
| 245 | |||
| 246 | struct { | 234 | struct { |
| 247 | struct drm_mm gtt_space; | 235 | struct drm_mm gtt_space; |
| 248 | 236 | ||
| 237 | struct io_mapping *gtt_mapping; | ||
| 238 | |||
| 249 | /** | 239 | /** |
| 250 | * List of objects currently involved in rendering from the | 240 | * List of objects currently involved in rendering from the |
| 251 | * ringbuffer. | 241 | * ringbuffer. |
| @@ -441,7 +431,6 @@ extern int i915_irq_wait(struct drm_device *dev, void *data, | |||
| 441 | void i915_user_irq_get(struct drm_device *dev); | 431 | void i915_user_irq_get(struct drm_device *dev); |
| 442 | void i915_user_irq_put(struct drm_device *dev); | 432 | void i915_user_irq_put(struct drm_device *dev); |
| 443 | 433 | ||
| 444 | extern void i915_vblank_work_handler(struct work_struct *work); | ||
| 445 | extern irqreturn_t i915_driver_irq_handler(DRM_IRQ_ARGS); | 434 | extern irqreturn_t i915_driver_irq_handler(DRM_IRQ_ARGS); |
| 446 | extern void i915_driver_irq_preinstall(struct drm_device * dev); | 435 | extern void i915_driver_irq_preinstall(struct drm_device * dev); |
| 447 | extern int i915_driver_irq_postinstall(struct drm_device *dev); | 436 | extern int i915_driver_irq_postinstall(struct drm_device *dev); |
| @@ -502,6 +491,8 @@ int i915_gem_set_tiling(struct drm_device *dev, void *data, | |||
| 502 | struct drm_file *file_priv); | 491 | struct drm_file *file_priv); |
| 503 | int i915_gem_get_tiling(struct drm_device *dev, void *data, | 492 | int i915_gem_get_tiling(struct drm_device *dev, void *data, |
| 504 | struct drm_file *file_priv); | 493 | struct drm_file *file_priv); |
| 494 | int i915_gem_get_aperture_ioctl(struct drm_device *dev, void *data, | ||
| 495 | struct drm_file *file_priv); | ||
| 505 | void i915_gem_load(struct drm_device *dev); | 496 | void i915_gem_load(struct drm_device *dev); |
| 506 | int i915_gem_proc_init(struct drm_minor *minor); | 497 | int i915_gem_proc_init(struct drm_minor *minor); |
| 507 | void i915_gem_proc_cleanup(struct drm_minor *minor); | 498 | void i915_gem_proc_cleanup(struct drm_minor *minor); |
| @@ -539,11 +530,18 @@ extern int i915_restore_state(struct drm_device *dev); | |||
| 539 | extern int i915_save_state(struct drm_device *dev); | 530 | extern int i915_save_state(struct drm_device *dev); |
| 540 | extern int i915_restore_state(struct drm_device *dev); | 531 | extern int i915_restore_state(struct drm_device *dev); |
| 541 | 532 | ||
| 533 | #ifdef CONFIG_ACPI | ||
| 542 | /* i915_opregion.c */ | 534 | /* i915_opregion.c */ |
| 543 | extern int intel_opregion_init(struct drm_device *dev); | 535 | extern int intel_opregion_init(struct drm_device *dev); |
| 544 | extern void intel_opregion_free(struct drm_device *dev); | 536 | extern void intel_opregion_free(struct drm_device *dev); |
| 545 | extern void opregion_asle_intr(struct drm_device *dev); | 537 | extern void opregion_asle_intr(struct drm_device *dev); |
| 546 | extern void opregion_enable_asle(struct drm_device *dev); | 538 | extern void opregion_enable_asle(struct drm_device *dev); |
| 539 | #else | ||
| 540 | static inline int intel_opregion_init(struct drm_device *dev) { return 0; } | ||
| 541 | static inline void intel_opregion_free(struct drm_device *dev) { return; } | ||
| 542 | static inline void opregion_asle_intr(struct drm_device *dev) { return; } | ||
| 543 | static inline void opregion_enable_asle(struct drm_device *dev) { return; } | ||
| 544 | #endif | ||
| 547 | 545 | ||
| 548 | /** | 546 | /** |
| 549 | * Lock test for when it's just for synchronization of ring access. | 547 | * Lock test for when it's just for synchronization of ring access. |
| @@ -610,8 +608,9 @@ extern void opregion_enable_asle(struct drm_device *dev); | |||
| 610 | * The area from dword 0x20 to 0x3ff is available for driver usage. | 608 | * The area from dword 0x20 to 0x3ff is available for driver usage. |
| 611 | */ | 609 | */ |
| 612 | #define READ_HWSP(dev_priv, reg) (((volatile u32*)(dev_priv->hw_status_page))[reg]) | 610 | #define READ_HWSP(dev_priv, reg) (((volatile u32*)(dev_priv->hw_status_page))[reg]) |
| 613 | #define READ_BREADCRUMB(dev_priv) READ_HWSP(dev_priv, 5) | 611 | #define READ_BREADCRUMB(dev_priv) READ_HWSP(dev_priv, I915_BREADCRUMB_INDEX) |
| 614 | #define I915_GEM_HWS_INDEX 0x20 | 612 | #define I915_GEM_HWS_INDEX 0x20 |
| 613 | #define I915_BREADCRUMB_INDEX 0x21 | ||
| 615 | 614 | ||
| 616 | extern int i915_wait_ring(struct drm_device * dev, int n, const char *caller); | 615 | extern int i915_wait_ring(struct drm_device * dev, int n, const char *caller); |
| 617 | 616 | ||
