diff options
Diffstat (limited to 'drivers/gpu/drm/radeon/radeon_drv.h')
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_drv.h | 51 |
1 files changed, 48 insertions, 3 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_drv.h b/drivers/gpu/drm/radeon/radeon_drv.h index 350962e0f346..448eba89d1e6 100644 --- a/drivers/gpu/drm/radeon/radeon_drv.h +++ b/drivers/gpu/drm/radeon/radeon_drv.h | |||
@@ -106,9 +106,11 @@ | |||
106 | * 1.29- R500 3D cmd buffer support | 106 | * 1.29- R500 3D cmd buffer support |
107 | * 1.30- Add support for occlusion queries | 107 | * 1.30- Add support for occlusion queries |
108 | * 1.31- Add support for num Z pipes from GET_PARAM | 108 | * 1.31- Add support for num Z pipes from GET_PARAM |
109 | * 1.32- fixes for rv740 setup | ||
110 | * 1.33- Add r6xx/r7xx const buffer support | ||
109 | */ | 111 | */ |
110 | #define DRIVER_MAJOR 1 | 112 | #define DRIVER_MAJOR 1 |
111 | #define DRIVER_MINOR 31 | 113 | #define DRIVER_MINOR 33 |
112 | #define DRIVER_PATCHLEVEL 0 | 114 | #define DRIVER_PATCHLEVEL 0 |
113 | 115 | ||
114 | enum radeon_cp_microcode_version { | 116 | enum radeon_cp_microcode_version { |
@@ -267,6 +269,8 @@ typedef struct drm_radeon_private { | |||
267 | 269 | ||
268 | u32 scratch_ages[5]; | 270 | u32 scratch_ages[5]; |
269 | 271 | ||
272 | int have_z_offset; | ||
273 | |||
270 | /* starting from here on, data is preserved accross an open */ | 274 | /* starting from here on, data is preserved accross an open */ |
271 | uint32_t flags; /* see radeon_chip_flags */ | 275 | uint32_t flags; /* see radeon_chip_flags */ |
272 | resource_size_t fb_aper_offset; | 276 | resource_size_t fb_aper_offset; |
@@ -294,6 +298,9 @@ typedef struct drm_radeon_private { | |||
294 | int r700_sc_prim_fifo_size; | 298 | int r700_sc_prim_fifo_size; |
295 | int r700_sc_hiz_tile_fifo_size; | 299 | int r700_sc_hiz_tile_fifo_size; |
296 | int r700_sc_earlyz_tile_fifo_fize; | 300 | int r700_sc_earlyz_tile_fifo_fize; |
301 | int r600_group_size; | ||
302 | int r600_npipes; | ||
303 | int r600_nbanks; | ||
297 | 304 | ||
298 | struct mutex cs_mutex; | 305 | struct mutex cs_mutex; |
299 | u32 cs_id_scnt; | 306 | u32 cs_id_scnt; |
@@ -309,9 +316,11 @@ typedef struct drm_radeon_buf_priv { | |||
309 | u32 age; | 316 | u32 age; |
310 | } drm_radeon_buf_priv_t; | 317 | } drm_radeon_buf_priv_t; |
311 | 318 | ||
319 | struct drm_buffer; | ||
320 | |||
312 | typedef struct drm_radeon_kcmd_buffer { | 321 | typedef struct drm_radeon_kcmd_buffer { |
313 | int bufsz; | 322 | int bufsz; |
314 | char *buf; | 323 | struct drm_buffer *buffer; |
315 | int nbox; | 324 | int nbox; |
316 | struct drm_clip_rect __user *boxes; | 325 | struct drm_clip_rect __user *boxes; |
317 | } drm_radeon_kcmd_buffer_t; | 326 | } drm_radeon_kcmd_buffer_t; |
@@ -454,6 +463,15 @@ extern void r600_blit_swap(struct drm_device *dev, | |||
454 | int sx, int sy, int dx, int dy, | 463 | int sx, int sy, int dx, int dy, |
455 | int w, int h, int src_pitch, int dst_pitch, int cpp); | 464 | int w, int h, int src_pitch, int dst_pitch, int cpp); |
456 | 465 | ||
466 | /* atpx handler */ | ||
467 | #if defined(CONFIG_VGA_SWITCHEROO) | ||
468 | void radeon_register_atpx_handler(void); | ||
469 | void radeon_unregister_atpx_handler(void); | ||
470 | #else | ||
471 | static inline void radeon_register_atpx_handler(void) {} | ||
472 | static inline void radeon_unregister_atpx_handler(void) {} | ||
473 | #endif | ||
474 | |||
457 | /* Flags for stats.boxes | 475 | /* Flags for stats.boxes |
458 | */ | 476 | */ |
459 | #define RADEON_BOX_DMA_IDLE 0x1 | 477 | #define RADEON_BOX_DMA_IDLE 0x1 |
@@ -1104,7 +1122,6 @@ extern u32 radeon_get_scratch(drm_radeon_private_t *dev_priv, int index); | |||
1104 | # define R600_IT_WAIT_REG_MEM 0x00003C00 | 1122 | # define R600_IT_WAIT_REG_MEM 0x00003C00 |
1105 | # define R600_IT_MEM_WRITE 0x00003D00 | 1123 | # define R600_IT_MEM_WRITE 0x00003D00 |
1106 | # define R600_IT_INDIRECT_BUFFER 0x00003200 | 1124 | # define R600_IT_INDIRECT_BUFFER 0x00003200 |
1107 | # define R600_IT_CP_INTERRUPT 0x00004000 | ||
1108 | # define R600_IT_SURFACE_SYNC 0x00004300 | 1125 | # define R600_IT_SURFACE_SYNC 0x00004300 |
1109 | # define R600_CB0_DEST_BASE_ENA (1 << 6) | 1126 | # define R600_CB0_DEST_BASE_ENA (1 << 6) |
1110 | # define R600_TC_ACTION_ENA (1 << 23) | 1127 | # define R600_TC_ACTION_ENA (1 << 23) |
@@ -2122,4 +2139,32 @@ extern void radeon_commit_ring(drm_radeon_private_t *dev_priv); | |||
2122 | write &= mask; \ | 2139 | write &= mask; \ |
2123 | } while (0) | 2140 | } while (0) |
2124 | 2141 | ||
2142 | /** | ||
2143 | * Copy given number of dwords from drm buffer to the ring buffer. | ||
2144 | */ | ||
2145 | #define OUT_RING_DRM_BUFFER(buf, sz) do { \ | ||
2146 | int _size = (sz) * 4; \ | ||
2147 | struct drm_buffer *_buf = (buf); \ | ||
2148 | int _part_size; \ | ||
2149 | while (_size > 0) { \ | ||
2150 | _part_size = _size; \ | ||
2151 | \ | ||
2152 | if (write + _part_size/4 > mask) \ | ||
2153 | _part_size = ((mask + 1) - write)*4; \ | ||
2154 | \ | ||
2155 | if (drm_buffer_index(_buf) + _part_size > PAGE_SIZE) \ | ||
2156 | _part_size = PAGE_SIZE - drm_buffer_index(_buf);\ | ||
2157 | \ | ||
2158 | \ | ||
2159 | \ | ||
2160 | memcpy(ring + write, &_buf->data[drm_buffer_page(_buf)] \ | ||
2161 | [drm_buffer_index(_buf)], _part_size); \ | ||
2162 | \ | ||
2163 | _size -= _part_size; \ | ||
2164 | write = (write + _part_size/4) & mask; \ | ||
2165 | drm_buffer_advance(_buf, _part_size); \ | ||
2166 | } \ | ||
2167 | } while (0) | ||
2168 | |||
2169 | |||
2125 | #endif /* __RADEON_DRV_H__ */ | 2170 | #endif /* __RADEON_DRV_H__ */ |