aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/i915_drv.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/i915/i915_drv.h')
-rw-r--r--drivers/gpu/drm/i915/i915_drv.h31
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
90typedef 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
97struct opregion_header; 91struct opregion_header;
98struct opregion_acpi; 92struct opregion_acpi;
99struct opregion_swsci; 93struct 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,
441void i915_user_irq_get(struct drm_device *dev); 431void i915_user_irq_get(struct drm_device *dev);
442void i915_user_irq_put(struct drm_device *dev); 432void i915_user_irq_put(struct drm_device *dev);
443 433
444extern void i915_vblank_work_handler(struct work_struct *work);
445extern irqreturn_t i915_driver_irq_handler(DRM_IRQ_ARGS); 434extern irqreturn_t i915_driver_irq_handler(DRM_IRQ_ARGS);
446extern void i915_driver_irq_preinstall(struct drm_device * dev); 435extern void i915_driver_irq_preinstall(struct drm_device * dev);
447extern int i915_driver_irq_postinstall(struct drm_device *dev); 436extern 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);
503int i915_gem_get_tiling(struct drm_device *dev, void *data, 492int i915_gem_get_tiling(struct drm_device *dev, void *data,
504 struct drm_file *file_priv); 493 struct drm_file *file_priv);
494int i915_gem_get_aperture_ioctl(struct drm_device *dev, void *data,
495 struct drm_file *file_priv);
505void i915_gem_load(struct drm_device *dev); 496void i915_gem_load(struct drm_device *dev);
506int i915_gem_proc_init(struct drm_minor *minor); 497int i915_gem_proc_init(struct drm_minor *minor);
507void i915_gem_proc_cleanup(struct drm_minor *minor); 498void i915_gem_proc_cleanup(struct drm_minor *minor);
@@ -539,11 +530,18 @@ extern int i915_restore_state(struct drm_device *dev);
539extern int i915_save_state(struct drm_device *dev); 530extern int i915_save_state(struct drm_device *dev);
540extern int i915_restore_state(struct drm_device *dev); 531extern int i915_restore_state(struct drm_device *dev);
541 532
533#ifdef CONFIG_ACPI
542/* i915_opregion.c */ 534/* i915_opregion.c */
543extern int intel_opregion_init(struct drm_device *dev); 535extern int intel_opregion_init(struct drm_device *dev);
544extern void intel_opregion_free(struct drm_device *dev); 536extern void intel_opregion_free(struct drm_device *dev);
545extern void opregion_asle_intr(struct drm_device *dev); 537extern void opregion_asle_intr(struct drm_device *dev);
546extern void opregion_enable_asle(struct drm_device *dev); 538extern void opregion_enable_asle(struct drm_device *dev);
539#else
540static inline int intel_opregion_init(struct drm_device *dev) { return 0; }
541static inline void intel_opregion_free(struct drm_device *dev) { return; }
542static inline void opregion_asle_intr(struct drm_device *dev) { return; }
543static 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
616extern int i915_wait_ring(struct drm_device * dev, int n, const char *caller); 615extern int i915_wait_ring(struct drm_device * dev, int n, const char *caller);
617 616