aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/char/drm/radeon_drv.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/char/drm/radeon_drv.h')
-rw-r--r--drivers/char/drm/radeon_drv.h149
1 files changed, 71 insertions, 78 deletions
diff --git a/drivers/char/drm/radeon_drv.h b/drivers/char/drm/radeon_drv.h
index 9c10141845e7..e36076981d1a 100644
--- a/drivers/char/drm/radeon_drv.h
+++ b/drivers/char/drm/radeon_drv.h
@@ -68,7 +68,7 @@
68 * 1.9 - Add DRM_IOCTL_RADEON_CP_RESUME ioctl. 68 * 1.9 - Add DRM_IOCTL_RADEON_CP_RESUME ioctl.
69 * Add texture rectangle support for r100. 69 * Add texture rectangle support for r100.
70 * 1.10- Add SETPARAM ioctl; first parameter to set is FB_LOCATION, which 70 * 1.10- Add SETPARAM ioctl; first parameter to set is FB_LOCATION, which
71 * clients use to tell the DRM where they think the framebuffer is 71 * clients use to tell the DRM where they think the framebuffer is
72 * located in the card's address space 72 * located in the card's address space
73 * 1.11- Add packet R200_EMIT_RB3D_BLENDCOLOR to support GL_EXT_blend_color 73 * 1.11- Add packet R200_EMIT_RB3D_BLENDCOLOR to support GL_EXT_blend_color
74 * and GL_EXT_blend_[func|equation]_separate on r200 74 * and GL_EXT_blend_[func|equation]_separate on r200
@@ -134,15 +134,15 @@ enum radeon_chip_flags {
134 CHIP_IS_IGP = 0x00020000UL, 134 CHIP_IS_IGP = 0x00020000UL,
135 CHIP_SINGLE_CRTC = 0x00040000UL, 135 CHIP_SINGLE_CRTC = 0x00040000UL,
136 CHIP_IS_AGP = 0x00080000UL, 136 CHIP_IS_AGP = 0x00080000UL,
137 CHIP_HAS_HIERZ = 0x00100000UL, 137 CHIP_HAS_HIERZ = 0x00100000UL,
138 CHIP_IS_PCIE = 0x00200000UL, 138 CHIP_IS_PCIE = 0x00200000UL,
139}; 139};
140 140
141typedef struct drm_radeon_freelist { 141typedef struct drm_radeon_freelist {
142 unsigned int age; 142 unsigned int age;
143 drm_buf_t *buf; 143 drm_buf_t *buf;
144 struct drm_radeon_freelist *next; 144 struct drm_radeon_freelist *next;
145 struct drm_radeon_freelist *prev; 145 struct drm_radeon_freelist *prev;
146} drm_radeon_freelist_t; 146} drm_radeon_freelist_t;
147 147
148typedef struct drm_radeon_ring_buffer { 148typedef struct drm_radeon_ring_buffer {
@@ -204,8 +204,8 @@ typedef struct drm_radeon_private {
204 int cp_mode; 204 int cp_mode;
205 int cp_running; 205 int cp_running;
206 206
207 drm_radeon_freelist_t *head; 207 drm_radeon_freelist_t *head;
208 drm_radeon_freelist_t *tail; 208 drm_radeon_freelist_t *tail;
209 int last_buf; 209 int last_buf;
210 volatile u32 *scratch; 210 volatile u32 *scratch;
211 int writeback_works; 211 int writeback_works;
@@ -246,7 +246,7 @@ typedef struct drm_radeon_private {
246 u32 depth_pitch_offset; 246 u32 depth_pitch_offset;
247 247
248 drm_radeon_depth_clear_t depth_clear; 248 drm_radeon_depth_clear_t depth_clear;
249 249
250 unsigned long fb_offset; 250 unsigned long fb_offset;
251 unsigned long mmio_offset; 251 unsigned long mmio_offset;
252 unsigned long ring_offset; 252 unsigned long ring_offset;
@@ -264,14 +264,14 @@ typedef struct drm_radeon_private {
264 struct mem_block *fb_heap; 264 struct mem_block *fb_heap;
265 265
266 /* SW interrupt */ 266 /* SW interrupt */
267 wait_queue_head_t swi_queue; 267 wait_queue_head_t swi_queue;
268 atomic_t swi_emitted; 268 atomic_t swi_emitted;
269 269
270 struct radeon_surface surfaces[RADEON_MAX_SURFACES]; 270 struct radeon_surface surfaces[RADEON_MAX_SURFACES];
271 struct radeon_virt_surface virt_surfaces[2*RADEON_MAX_SURFACES]; 271 struct radeon_virt_surface virt_surfaces[2 * RADEON_MAX_SURFACES];
272 272
273 unsigned long pcigart_offset; 273 unsigned long pcigart_offset;
274 drm_ati_pcigart_info gart_info; 274 drm_ati_pcigart_info gart_info;
275 275
276 /* starting from here on, data is preserved accross an open */ 276 /* starting from here on, data is preserved accross an open */
277 uint32_t flags; /* see radeon_chip_flags */ 277 uint32_t flags; /* see radeon_chip_flags */
@@ -282,62 +282,64 @@ typedef struct drm_radeon_buf_priv {
282} drm_radeon_buf_priv_t; 282} drm_radeon_buf_priv_t;
283 283
284 /* radeon_cp.c */ 284 /* radeon_cp.c */
285extern int radeon_cp_init( DRM_IOCTL_ARGS ); 285extern int radeon_cp_init(DRM_IOCTL_ARGS);
286extern int radeon_cp_start( DRM_IOCTL_ARGS ); 286extern int radeon_cp_start(DRM_IOCTL_ARGS);
287extern int radeon_cp_stop( DRM_IOCTL_ARGS ); 287extern int radeon_cp_stop(DRM_IOCTL_ARGS);
288extern int radeon_cp_reset( DRM_IOCTL_ARGS ); 288extern int radeon_cp_reset(DRM_IOCTL_ARGS);
289extern int radeon_cp_idle( DRM_IOCTL_ARGS ); 289extern int radeon_cp_idle(DRM_IOCTL_ARGS);
290extern int radeon_cp_resume( DRM_IOCTL_ARGS ); 290extern int radeon_cp_resume(DRM_IOCTL_ARGS);
291extern int radeon_engine_reset( DRM_IOCTL_ARGS ); 291extern int radeon_engine_reset(DRM_IOCTL_ARGS);
292extern int radeon_fullscreen( DRM_IOCTL_ARGS ); 292extern int radeon_fullscreen(DRM_IOCTL_ARGS);
293extern int radeon_cp_buffers( DRM_IOCTL_ARGS ); 293extern int radeon_cp_buffers(DRM_IOCTL_ARGS);
294 294
295extern void radeon_freelist_reset( drm_device_t *dev ); 295extern void radeon_freelist_reset(drm_device_t * dev);
296extern drm_buf_t *radeon_freelist_get( drm_device_t *dev ); 296extern drm_buf_t *radeon_freelist_get(drm_device_t * dev);
297 297
298extern int radeon_wait_ring( drm_radeon_private_t *dev_priv, int n ); 298extern int radeon_wait_ring(drm_radeon_private_t * dev_priv, int n);
299 299
300extern int radeon_do_cp_idle( drm_radeon_private_t *dev_priv ); 300extern int radeon_do_cp_idle(drm_radeon_private_t * dev_priv);
301 301
302extern int radeon_driver_preinit(struct drm_device *dev, unsigned long flags); 302extern int radeon_driver_preinit(struct drm_device *dev, unsigned long flags);
303extern int radeon_presetup(struct drm_device *dev); 303extern int radeon_presetup(struct drm_device *dev);
304extern int radeon_driver_postcleanup(struct drm_device *dev); 304extern int radeon_driver_postcleanup(struct drm_device *dev);
305 305
306extern int radeon_mem_alloc( DRM_IOCTL_ARGS ); 306extern int radeon_mem_alloc(DRM_IOCTL_ARGS);
307extern int radeon_mem_free( DRM_IOCTL_ARGS ); 307extern int radeon_mem_free(DRM_IOCTL_ARGS);
308extern int radeon_mem_init_heap( DRM_IOCTL_ARGS ); 308extern int radeon_mem_init_heap(DRM_IOCTL_ARGS);
309extern void radeon_mem_takedown( struct mem_block **heap ); 309extern void radeon_mem_takedown(struct mem_block **heap);
310extern void radeon_mem_release( DRMFILE filp, struct mem_block *heap ); 310extern void radeon_mem_release(DRMFILE filp, struct mem_block *heap);
311 311
312 /* radeon_irq.c */ 312 /* radeon_irq.c */
313extern int radeon_irq_emit( DRM_IOCTL_ARGS ); 313extern int radeon_irq_emit(DRM_IOCTL_ARGS);
314extern int radeon_irq_wait( DRM_IOCTL_ARGS ); 314extern int radeon_irq_wait(DRM_IOCTL_ARGS);
315 315
316extern void radeon_do_release(drm_device_t *dev); 316extern void radeon_do_release(drm_device_t * dev);
317extern int radeon_driver_vblank_wait(drm_device_t *dev, unsigned int *sequence); 317extern int radeon_driver_vblank_wait(drm_device_t * dev,
318extern irqreturn_t radeon_driver_irq_handler( DRM_IRQ_ARGS ); 318 unsigned int *sequence);
319extern void radeon_driver_irq_preinstall( drm_device_t *dev ); 319extern irqreturn_t radeon_driver_irq_handler(DRM_IRQ_ARGS);
320extern void radeon_driver_irq_postinstall( drm_device_t *dev ); 320extern void radeon_driver_irq_preinstall(drm_device_t * dev);
321extern void radeon_driver_irq_uninstall( drm_device_t *dev ); 321extern void radeon_driver_irq_postinstall(drm_device_t * dev);
322extern void radeon_driver_prerelease(drm_device_t *dev, DRMFILE filp); 322extern void radeon_driver_irq_uninstall(drm_device_t * dev);
323extern void radeon_driver_pretakedown(drm_device_t *dev); 323extern void radeon_driver_prerelease(drm_device_t * dev, DRMFILE filp);
324extern int radeon_driver_open_helper(drm_device_t *dev, drm_file_t *filp_priv); 324extern void radeon_driver_pretakedown(drm_device_t * dev);
325extern void radeon_driver_free_filp_priv(drm_device_t *dev, drm_file_t *filp_priv); 325extern int radeon_driver_open_helper(drm_device_t * dev,
326 326 drm_file_t * filp_priv);
327extern int radeon_preinit( struct drm_device *dev, unsigned long flags ); 327extern void radeon_driver_free_filp_priv(drm_device_t * dev,
328extern int radeon_postinit( struct drm_device *dev, unsigned long flags ); 328 drm_file_t * filp_priv);
329extern int radeon_postcleanup( struct drm_device *dev ); 329
330extern int radeon_preinit(struct drm_device *dev, unsigned long flags);
331extern int radeon_postinit(struct drm_device *dev, unsigned long flags);
332extern int radeon_postcleanup(struct drm_device *dev);
330 333
331extern long radeon_compat_ioctl(struct file *filp, unsigned int cmd, 334extern long radeon_compat_ioctl(struct file *filp, unsigned int cmd,
332 unsigned long arg); 335 unsigned long arg);
333 336
334
335/* r300_cmdbuf.c */ 337/* r300_cmdbuf.c */
336extern void r300_init_reg_flags(void); 338extern void r300_init_reg_flags(void);
337 339
338extern int r300_do_cp_cmdbuf(drm_device_t* dev, DRMFILE filp, 340extern int r300_do_cp_cmdbuf(drm_device_t * dev, DRMFILE filp,
339 drm_file_t* filp_priv, 341 drm_file_t * filp_priv,
340 drm_radeon_cmd_buffer_t* cmdbuf); 342 drm_radeon_cmd_buffer_t * cmdbuf);
341 343
342/* Flags for stats.boxes 344/* Flags for stats.boxes
343 */ 345 */
@@ -347,8 +349,6 @@ extern int r300_do_cp_cmdbuf(drm_device_t* dev, DRMFILE filp,
347#define RADEON_BOX_WAIT_IDLE 0x8 349#define RADEON_BOX_WAIT_IDLE 0x8
348#define RADEON_BOX_TEXTURE_LOAD 0x10 350#define RADEON_BOX_TEXTURE_LOAD 0x10
349 351
350
351
352/* Register definitions, register access macros and drmAddMap constants 352/* Register definitions, register access macros and drmAddMap constants
353 * for Radeon kernel driver. 353 * for Radeon kernel driver.
354 */ 354 */
@@ -442,7 +442,6 @@ extern int r300_do_cp_cmdbuf(drm_device_t* dev, DRMFILE filp,
442 ? DRM_READ32( dev_priv->ring_rptr, RADEON_SCRATCHOFF(x) ) \ 442 ? DRM_READ32( dev_priv->ring_rptr, RADEON_SCRATCHOFF(x) ) \
443 : RADEON_READ( RADEON_SCRATCH_REG0 + 4*(x) ) ) 443 : RADEON_READ( RADEON_SCRATCH_REG0 + 4*(x) ) )
444 444
445
446#define RADEON_GEN_INT_CNTL 0x0040 445#define RADEON_GEN_INT_CNTL 0x0040
447# define RADEON_CRTC_VBLANK_MASK (1 << 0) 446# define RADEON_CRTC_VBLANK_MASK (1 << 0)
448# define RADEON_GUI_IDLE_INT_ENABLE (1 << 19) 447# define RADEON_GUI_IDLE_INT_ENABLE (1 << 19)
@@ -650,7 +649,6 @@ extern int r300_do_cp_cmdbuf(drm_device_t* dev, DRMFILE filp,
650# define RADEON_DEPTH_FORMAT_16BIT_INT_Z (0 << 0) 649# define RADEON_DEPTH_FORMAT_16BIT_INT_Z (0 << 0)
651# define RADEON_DEPTH_FORMAT_24BIT_INT_Z (2 << 0) 650# define RADEON_DEPTH_FORMAT_24BIT_INT_Z (2 << 0)
652 651
653
654/* CP registers */ 652/* CP registers */
655#define RADEON_CP_ME_RAM_ADDR 0x07d4 653#define RADEON_CP_ME_RAM_ADDR 0x07d4
656#define RADEON_CP_ME_RAM_RADDR 0x07d8 654#define RADEON_CP_ME_RAM_RADDR 0x07d8
@@ -698,7 +696,7 @@ extern int r300_do_cp_cmdbuf(drm_device_t* dev, DRMFILE filp,
698# define RADEON_CP_NEXT_CHAR 0x00001900 696# define RADEON_CP_NEXT_CHAR 0x00001900
699# define RADEON_CP_PLY_NEXTSCAN 0x00001D00 697# define RADEON_CP_PLY_NEXTSCAN 0x00001D00
700# define RADEON_CP_SET_SCISSORS 0x00001E00 698# define RADEON_CP_SET_SCISSORS 0x00001E00
701 /* GEN_INDX_PRIM is unsupported starting with R300 */ 699 /* GEN_INDX_PRIM is unsupported starting with R300 */
702# define RADEON_3D_RNDR_GEN_INDX_PRIM 0x00002300 700# define RADEON_3D_RNDR_GEN_INDX_PRIM 0x00002300
703# define RADEON_WAIT_FOR_IDLE 0x00002600 701# define RADEON_WAIT_FOR_IDLE 0x00002600
704# define RADEON_3D_DRAW_VBUF 0x00002800 702# define RADEON_3D_DRAW_VBUF 0x00002800
@@ -782,19 +780,19 @@ extern int r300_do_cp_cmdbuf(drm_device_t* dev, DRMFILE filp,
782#define R200_PP_TXCBLEND_5 0x2f50 780#define R200_PP_TXCBLEND_5 0x2f50
783#define R200_PP_TXCBLEND_6 0x2f60 781#define R200_PP_TXCBLEND_6 0x2f60
784#define R200_PP_TXCBLEND_7 0x2f70 782#define R200_PP_TXCBLEND_7 0x2f70
785#define R200_SE_TCL_LIGHT_MODEL_CTL_0 0x2268 783#define R200_SE_TCL_LIGHT_MODEL_CTL_0 0x2268
786#define R200_PP_TFACTOR_0 0x2ee0 784#define R200_PP_TFACTOR_0 0x2ee0
787#define R200_SE_VTX_FMT_0 0x2088 785#define R200_SE_VTX_FMT_0 0x2088
788#define R200_SE_VAP_CNTL 0x2080 786#define R200_SE_VAP_CNTL 0x2080
789#define R200_SE_TCL_MATRIX_SEL_0 0x2230 787#define R200_SE_TCL_MATRIX_SEL_0 0x2230
790#define R200_SE_TCL_TEX_PROC_CTL_2 0x22a8 788#define R200_SE_TCL_TEX_PROC_CTL_2 0x22a8
791#define R200_SE_TCL_UCP_VERT_BLEND_CTL 0x22c0 789#define R200_SE_TCL_UCP_VERT_BLEND_CTL 0x22c0
792#define R200_PP_TXFILTER_5 0x2ca0 790#define R200_PP_TXFILTER_5 0x2ca0
793#define R200_PP_TXFILTER_4 0x2c80 791#define R200_PP_TXFILTER_4 0x2c80
794#define R200_PP_TXFILTER_3 0x2c60 792#define R200_PP_TXFILTER_3 0x2c60
795#define R200_PP_TXFILTER_2 0x2c40 793#define R200_PP_TXFILTER_2 0x2c40
796#define R200_PP_TXFILTER_1 0x2c20 794#define R200_PP_TXFILTER_1 0x2c20
797#define R200_PP_TXFILTER_0 0x2c00 795#define R200_PP_TXFILTER_0 0x2c00
798#define R200_PP_TXOFFSET_5 0x2d78 796#define R200_PP_TXOFFSET_5 0x2d78
799#define R200_PP_TXOFFSET_4 0x2d60 797#define R200_PP_TXOFFSET_4 0x2d60
800#define R200_PP_TXOFFSET_3 0x2d48 798#define R200_PP_TXOFFSET_3 0x2d48
@@ -848,13 +846,13 @@ extern int r300_do_cp_cmdbuf(drm_device_t* dev, DRMFILE filp,
848#define R200_RE_SCISSOR_TL_0 0x1cd8 846#define R200_RE_SCISSOR_TL_0 0x1cd8
849#define R200_RE_SCISSOR_TL_1 0x1ce0 847#define R200_RE_SCISSOR_TL_1 0x1ce0
850#define R200_RE_SCISSOR_TL_2 0x1ce8 848#define R200_RE_SCISSOR_TL_2 0x1ce8
851#define R200_RB3D_DEPTHXY_OFFSET 0x1d60 849#define R200_RB3D_DEPTHXY_OFFSET 0x1d60
852#define R200_RE_AUX_SCISSOR_CNTL 0x26f0 850#define R200_RE_AUX_SCISSOR_CNTL 0x26f0
853#define R200_SE_VTX_STATE_CNTL 0x2180 851#define R200_SE_VTX_STATE_CNTL 0x2180
854#define R200_RE_POINTSIZE 0x2648 852#define R200_RE_POINTSIZE 0x2648
855#define R200_SE_TCL_INPUT_VTX_VECTOR_ADDR_0 0x2254 853#define R200_SE_TCL_INPUT_VTX_VECTOR_ADDR_0 0x2254
856 854
857#define RADEON_PP_TEX_SIZE_0 0x1d04 /* NPOT */ 855#define RADEON_PP_TEX_SIZE_0 0x1d04 /* NPOT */
858#define RADEON_PP_TEX_SIZE_1 0x1d0c 856#define RADEON_PP_TEX_SIZE_1 0x1d0c
859#define RADEON_PP_TEX_SIZE_2 0x1d14 857#define RADEON_PP_TEX_SIZE_2 0x1d14
860 858
@@ -875,7 +873,7 @@ extern int r300_do_cp_cmdbuf(drm_device_t* dev, DRMFILE filp,
875#define SE_VTX_FMT_0__VTX_COLOR_0_FMT__SHIFT 0x0000000b 873#define SE_VTX_FMT_0__VTX_COLOR_0_FMT__SHIFT 0x0000000b
876#define R200_3D_DRAW_IMMD_2 0xC0003500 874#define R200_3D_DRAW_IMMD_2 0xC0003500
877#define R200_SE_VTX_FMT_1 0x208c 875#define R200_SE_VTX_FMT_1 0x208c
878#define R200_RE_CNTL 0x1c50 876#define R200_RE_CNTL 0x1c50
879 877
880#define R200_RB3D_BLENDCOLOR 0x3218 878#define R200_RB3D_BLENDCOLOR 0x3218
881 879
@@ -884,7 +882,7 @@ extern int r300_do_cp_cmdbuf(drm_device_t* dev, DRMFILE filp,
884#define R200_PP_TRI_PERF 0x2cf8 882#define R200_PP_TRI_PERF 0x2cf8
885 883
886#define R200_PP_AFS_0 0x2f80 884#define R200_PP_AFS_0 0x2f80
887#define R200_PP_AFS_1 0x2f00 /* same as txcblend_0 */ 885#define R200_PP_AFS_1 0x2f00 /* same as txcblend_0 */
888 886
889/* Constants */ 887/* Constants */
890#define RADEON_MAX_USEC_TIMEOUT 100000 /* 100 ms */ 888#define RADEON_MAX_USEC_TIMEOUT 100000 /* 100 ms */
@@ -932,7 +930,6 @@ do { \
932#define CP_PACKET3( pkt, n ) \ 930#define CP_PACKET3( pkt, n ) \
933 (RADEON_CP_PACKET3 | (pkt) | ((n) << 16)) 931 (RADEON_CP_PACKET3 | (pkt) | ((n) << 16))
934 932
935
936/* ================================================================ 933/* ================================================================
937 * Engine control helper macros 934 * Engine control helper macros
938 */ 935 */
@@ -981,12 +978,11 @@ do { \
981 OUT_RING( RADEON_RB3D_ZC_FLUSH_ALL ); \ 978 OUT_RING( RADEON_RB3D_ZC_FLUSH_ALL ); \
982} while (0) 979} while (0)
983 980
984
985/* ================================================================ 981/* ================================================================
986 * Misc helper macros 982 * Misc helper macros
987 */ 983 */
988 984
989/* Perfbox functionality only. 985/* Perfbox functionality only.
990 */ 986 */
991#define RING_SPACE_TEST_WITH_RETURN( dev_priv ) \ 987#define RING_SPACE_TEST_WITH_RETURN( dev_priv ) \
992do { \ 988do { \
@@ -1023,7 +1019,6 @@ do { \
1023 OUT_RING( age ); \ 1019 OUT_RING( age ); \
1024} while (0) 1020} while (0)
1025 1021
1026
1027/* ================================================================ 1022/* ================================================================
1028 * Ring control 1023 * Ring control
1029 */ 1024 */
@@ -1084,7 +1079,6 @@ do { \
1084 OUT_RING( val ); \ 1079 OUT_RING( val ); \
1085} while (0) 1080} while (0)
1086 1081
1087
1088#define OUT_RING_TABLE( tab, sz ) do { \ 1082#define OUT_RING_TABLE( tab, sz ) do { \
1089 int _size = (sz); \ 1083 int _size = (sz); \
1090 int *_tab = (int *)(tab); \ 1084 int *_tab = (int *)(tab); \
@@ -1109,5 +1103,4 @@ do { \
1109 write &= mask; \ 1103 write &= mask; \
1110} while (0) 1104} while (0)
1111 1105
1112 1106#endif /* __RADEON_DRV_H__ */
1113#endif /* __RADEON_DRV_H__ */