diff options
Diffstat (limited to 'drivers/char/drm/i915_drv.h')
-rw-r--r-- | drivers/char/drm/i915_drv.h | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/drivers/char/drm/i915_drv.h b/drivers/char/drm/i915_drv.h index fdc2bf192714..93cdcfe6aa84 100644 --- a/drivers/char/drm/i915_drv.h +++ b/drivers/char/drm/i915_drv.h | |||
@@ -46,9 +46,11 @@ | |||
46 | * 1.3: Add vblank support | 46 | * 1.3: Add vblank support |
47 | * 1.4: Fix cmdbuffer path, add heap destroy | 47 | * 1.4: Fix cmdbuffer path, add heap destroy |
48 | * 1.5: Add vblank pipe configuration | 48 | * 1.5: Add vblank pipe configuration |
49 | * 1.6: - New ioctl for scheduling buffer swaps on vertical blank | ||
50 | * - Support vertical blank on secondary display pipe | ||
49 | */ | 51 | */ |
50 | #define DRIVER_MAJOR 1 | 52 | #define DRIVER_MAJOR 1 |
51 | #define DRIVER_MINOR 5 | 53 | #define DRIVER_MINOR 6 |
52 | #define DRIVER_PATCHLEVEL 0 | 54 | #define DRIVER_PATCHLEVEL 0 |
53 | 55 | ||
54 | typedef struct _drm_i915_ring_buffer { | 56 | typedef struct _drm_i915_ring_buffer { |
@@ -71,6 +73,13 @@ struct mem_block { | |||
71 | DRMFILE filp; /* 0: free, -1: heap, other: real files */ | 73 | DRMFILE filp; /* 0: free, -1: heap, other: real files */ |
72 | }; | 74 | }; |
73 | 75 | ||
76 | typedef struct _drm_i915_vbl_swap { | ||
77 | struct list_head head; | ||
78 | drm_drawable_t drw_id; | ||
79 | unsigned int pipe; | ||
80 | unsigned int sequence; | ||
81 | } drm_i915_vbl_swap_t; | ||
82 | |||
74 | typedef struct drm_i915_private { | 83 | typedef struct drm_i915_private { |
75 | drm_local_map_t *sarea; | 84 | drm_local_map_t *sarea; |
76 | drm_local_map_t *mmio_map; | 85 | drm_local_map_t *mmio_map; |
@@ -83,6 +92,7 @@ typedef struct drm_i915_private { | |||
83 | dma_addr_t dma_status_page; | 92 | dma_addr_t dma_status_page; |
84 | unsigned long counter; | 93 | unsigned long counter; |
85 | 94 | ||
95 | unsigned int cpp; | ||
86 | int back_offset; | 96 | int back_offset; |
87 | int front_offset; | 97 | int front_offset; |
88 | int current_page; | 98 | int current_page; |
@@ -98,6 +108,10 @@ typedef struct drm_i915_private { | |||
98 | struct mem_block *agp_heap; | 108 | struct mem_block *agp_heap; |
99 | unsigned int sr01, adpa, ppcr, dvob, dvoc, lvds; | 109 | unsigned int sr01, adpa, ppcr, dvob, dvoc, lvds; |
100 | int vblank_pipe; | 110 | int vblank_pipe; |
111 | |||
112 | spinlock_t swaps_lock; | ||
113 | drm_i915_vbl_swap_t vbl_swaps; | ||
114 | unsigned int swaps_pending; | ||
101 | } drm_i915_private_t; | 115 | } drm_i915_private_t; |
102 | 116 | ||
103 | extern drm_ioctl_desc_t i915_ioctls[]; | 117 | extern drm_ioctl_desc_t i915_ioctls[]; |
@@ -117,12 +131,14 @@ extern int i915_irq_emit(DRM_IOCTL_ARGS); | |||
117 | extern int i915_irq_wait(DRM_IOCTL_ARGS); | 131 | extern int i915_irq_wait(DRM_IOCTL_ARGS); |
118 | 132 | ||
119 | extern int i915_driver_vblank_wait(drm_device_t *dev, unsigned int *sequence); | 133 | extern int i915_driver_vblank_wait(drm_device_t *dev, unsigned int *sequence); |
134 | extern int i915_driver_vblank_wait2(drm_device_t *dev, unsigned int *sequence); | ||
120 | extern irqreturn_t i915_driver_irq_handler(DRM_IRQ_ARGS); | 135 | extern irqreturn_t i915_driver_irq_handler(DRM_IRQ_ARGS); |
121 | extern void i915_driver_irq_preinstall(drm_device_t * dev); | 136 | extern void i915_driver_irq_preinstall(drm_device_t * dev); |
122 | extern void i915_driver_irq_postinstall(drm_device_t * dev); | 137 | extern void i915_driver_irq_postinstall(drm_device_t * dev); |
123 | extern void i915_driver_irq_uninstall(drm_device_t * dev); | 138 | extern void i915_driver_irq_uninstall(drm_device_t * dev); |
124 | extern int i915_vblank_pipe_set(DRM_IOCTL_ARGS); | 139 | extern int i915_vblank_pipe_set(DRM_IOCTL_ARGS); |
125 | extern int i915_vblank_pipe_get(DRM_IOCTL_ARGS); | 140 | extern int i915_vblank_pipe_get(DRM_IOCTL_ARGS); |
141 | extern int i915_vblank_swap(DRM_IOCTL_ARGS); | ||
126 | 142 | ||
127 | /* i915_mem.c */ | 143 | /* i915_mem.c */ |
128 | extern int i915_mem_alloc(DRM_IOCTL_ARGS); | 144 | extern int i915_mem_alloc(DRM_IOCTL_ARGS); |
@@ -256,6 +272,10 @@ extern int i915_wait_ring(drm_device_t * dev, int n, const char *caller); | |||
256 | 272 | ||
257 | #define GFX_OP_DRAWRECT_INFO_I965 ((0x7900<<16)|0x2) | 273 | #define GFX_OP_DRAWRECT_INFO_I965 ((0x7900<<16)|0x2) |
258 | 274 | ||
275 | #define XY_SRC_COPY_BLT_CMD ((2<<29)|(0x53<<22)|6) | ||
276 | #define XY_SRC_COPY_BLT_WRITE_ALPHA (1<<21) | ||
277 | #define XY_SRC_COPY_BLT_WRITE_RGB (1<<20) | ||
278 | |||
259 | #define MI_BATCH_BUFFER ((0x30<<23)|1) | 279 | #define MI_BATCH_BUFFER ((0x30<<23)|1) |
260 | #define MI_BATCH_BUFFER_START (0x31<<23) | 280 | #define MI_BATCH_BUFFER_START (0x31<<23) |
261 | #define MI_BATCH_BUFFER_END (0xA<<23) | 281 | #define MI_BATCH_BUFFER_END (0xA<<23) |