aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/radeon/radeon_drv.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/radeon/radeon_drv.h')
-rw-r--r--drivers/gpu/drm/radeon/radeon_drv.h51
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
114enum radeon_cp_microcode_version { 116enum 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
319struct drm_buffer;
320
312typedef struct drm_radeon_kcmd_buffer { 321typedef 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)
468void radeon_register_atpx_handler(void);
469void radeon_unregister_atpx_handler(void);
470#else
471static inline void radeon_register_atpx_handler(void) {}
472static 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__ */