📄 radeon_drv.h
字号:
/* radeon_drv.h -- Private header for radeon driver -*- linux-c -*- * * Copyright 1999 Precision Insight, Inc., Cedar Park, Texas. * Copyright 2000 VA Linux Systems, Inc., Fremont, California. * All rights reserved. * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation * the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice (including the next * paragraph) shall be included in all copies or substantial portions of the * Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL * PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. * * Authors: * Kevin E. Martin <martin@valinux.com> * Gareth Hughes <gareth@valinux.com> */#ifndef __RADEON_DRV_H__#define __RADEON_DRV_H__#define GET_RING_HEAD(ring) DRM_READ32( (volatile u32 *) (ring)->head )#define SET_RING_HEAD(ring,val) DRM_WRITE32( (volatile u32 *) (ring)->head , (val))typedef struct drm_radeon_freelist { unsigned int age; drm_buf_t *buf; struct drm_radeon_freelist *next; struct drm_radeon_freelist *prev;} drm_radeon_freelist_t;typedef struct drm_radeon_ring_buffer { u32 *start; u32 *end; int size; int size_l2qw; volatile u32 *head; u32 tail; u32 tail_mask; int space; int high_mark;} drm_radeon_ring_buffer_t;typedef struct drm_radeon_depth_clear_t { u32 rb3d_cntl; u32 rb3d_zstencilcntl; u32 se_cntl;} drm_radeon_depth_clear_t;struct mem_block { struct mem_block *next; struct mem_block *prev; int start; int size; int pid; /* 0: free, -1: heap, other: real pids */};typedef struct drm_radeon_private { drm_radeon_ring_buffer_t ring; drm_radeon_sarea_t *sarea_priv; int agp_size; u32 agp_vm_start; unsigned long agp_buffers_offset; int cp_mode; int cp_running; drm_radeon_freelist_t *head; drm_radeon_freelist_t *tail; int last_buf; volatile u32 *scratch; int writeback_works; int usec_timeout; int is_r200; int is_pci; unsigned long phys_pci_gart; dma_addr_t bus_pci_gart; struct { u32 boxes; int freelist_timeouts; int freelist_loops; int requested_bufs; int last_frame_reads; int last_clear_reads; int clears; int texture_uploads; } stats; int do_boxes; int page_flipping; int current_page; u32 color_fmt; unsigned int front_offset; unsigned int front_pitch; unsigned int back_offset; unsigned int back_pitch; u32 depth_fmt; unsigned int depth_offset; unsigned int depth_pitch; u32 front_pitch_offset; u32 back_pitch_offset; u32 depth_pitch_offset; drm_radeon_depth_clear_t depth_clear; drm_map_t *sarea; drm_map_t *fb; drm_map_t *mmio; drm_map_t *cp_ring; drm_map_t *ring_rptr; drm_map_t *buffers; drm_map_t *agp_textures; struct mem_block *agp_heap; struct mem_block *fb_heap; /* SW interrupt */ wait_queue_head_t swi_queue; atomic_t swi_emitted;} drm_radeon_private_t;typedef struct drm_radeon_buf_priv { u32 age;} drm_radeon_buf_priv_t; /* radeon_cp.c */extern int radeon_cp_init( DRM_IOCTL_ARGS );extern int radeon_cp_start( DRM_IOCTL_ARGS );extern int radeon_cp_stop( DRM_IOCTL_ARGS );extern int radeon_cp_reset( DRM_IOCTL_ARGS );extern int radeon_cp_idle( DRM_IOCTL_ARGS );extern int radeon_engine_reset( DRM_IOCTL_ARGS );extern int radeon_fullscreen( DRM_IOCTL_ARGS );extern int radeon_cp_buffers( DRM_IOCTL_ARGS );extern void radeon_freelist_reset( drm_device_t *dev );extern drm_buf_t *radeon_freelist_get( drm_device_t *dev );extern int radeon_wait_ring( drm_radeon_private_t *dev_priv, int n );extern int radeon_do_cp_idle( drm_radeon_private_t *dev_priv );extern int radeon_do_cleanup_cp( drm_device_t *dev );extern int radeon_do_cleanup_pageflip( drm_device_t *dev ); /* radeon_state.c */extern int radeon_cp_clear( DRM_IOCTL_ARGS );extern int radeon_cp_swap( DRM_IOCTL_ARGS );extern int radeon_cp_vertex( DRM_IOCTL_ARGS );extern int radeon_cp_indices( DRM_IOCTL_ARGS );extern int radeon_cp_texture( DRM_IOCTL_ARGS );extern int radeon_cp_stipple( DRM_IOCTL_ARGS );extern int radeon_cp_indirect( DRM_IOCTL_ARGS );extern int radeon_cp_vertex2( DRM_IOCTL_ARGS );extern int radeon_cp_cmdbuf( DRM_IOCTL_ARGS );extern int radeon_cp_getparam( DRM_IOCTL_ARGS );extern int radeon_cp_flip( DRM_IOCTL_ARGS );extern int radeon_mem_alloc( DRM_IOCTL_ARGS );extern int radeon_mem_free( DRM_IOCTL_ARGS );extern int radeon_mem_init_heap( DRM_IOCTL_ARGS );extern void radeon_mem_takedown( struct mem_block **heap );extern void radeon_mem_release( struct mem_block *heap ); /* radeon_irq.c */extern int radeon_irq_emit( DRM_IOCTL_ARGS );extern int radeon_irq_wait( DRM_IOCTL_ARGS );extern int radeon_emit_and_wait_irq(drm_device_t *dev);extern int radeon_wait_irq(drm_device_t *dev, int swi_nr);extern int radeon_emit_irq(drm_device_t *dev);/* Flags for stats.boxes */#define RADEON_BOX_DMA_IDLE 0x1#define RADEON_BOX_RING_FULL 0x2#define RADEON_BOX_FLIP 0x4#define RADEON_BOX_WAIT_IDLE 0x8#define RADEON_BOX_TEXTURE_LOAD 0x10/* Register definitions, register access macros and drmAddMap constants * for Radeon kernel driver. */#define RADEON_AGP_COMMAND 0x0f60#define RADEON_AUX_SCISSOR_CNTL 0x26f0# define RADEON_EXCLUSIVE_SCISSOR_0 (1 << 24)# define RADEON_EXCLUSIVE_SCISSOR_1 (1 << 25)# define RADEON_EXCLUSIVE_SCISSOR_2 (1 << 26)# define RADEON_SCISSOR_0_ENABLE (1 << 28)# define RADEON_SCISSOR_1_ENABLE (1 << 29)# define RADEON_SCISSOR_2_ENABLE (1 << 30)#define RADEON_BUS_CNTL 0x0030# define RADEON_BUS_MASTER_DIS (1 << 6)#define RADEON_CLOCK_CNTL_DATA 0x000c# define RADEON_PLL_WR_EN (1 << 7)#define RADEON_CLOCK_CNTL_INDEX 0x0008#define RADEON_CONFIG_APER_SIZE 0x0108#define RADEON_CRTC_OFFSET 0x0224#define RADEON_CRTC_OFFSET_CNTL 0x0228# define RADEON_CRTC_TILE_EN (1 << 15)# define RADEON_CRTC_OFFSET_FLIP_CNTL (1 << 16)#define RADEON_CRTC2_OFFSET 0x0324#define RADEON_CRTC2_OFFSET_CNTL 0x0328#define RADEON_RB3D_COLORPITCH 0x1c48#define RADEON_DP_GUI_MASTER_CNTL 0x146c# define RADEON_GMC_SRC_PITCH_OFFSET_CNTL (1 << 0)# define RADEON_GMC_DST_PITCH_OFFSET_CNTL (1 << 1)# define RADEON_GMC_BRUSH_SOLID_COLOR (13 << 4)# define RADEON_GMC_BRUSH_NONE (15 << 4)# define RADEON_GMC_DST_16BPP (4 << 8)# define RADEON_GMC_DST_24BPP (5 << 8)# define RADEON_GMC_DST_32BPP (6 << 8)# define RADEON_GMC_DST_DATATYPE_SHIFT 8# define RADEON_GMC_SRC_DATATYPE_COLOR (3 << 12)# define RADEON_DP_SRC_SOURCE_MEMORY (2 << 24)# define RADEON_DP_SRC_SOURCE_HOST_DATA (3 << 24)# define RADEON_GMC_CLR_CMP_CNTL_DIS (1 << 28)# define RADEON_GMC_WR_MSK_DIS (1 << 30)# define RADEON_ROP3_S 0x00cc0000# define RADEON_ROP3_P 0x00f00000#define RADEON_DP_WRITE_MASK 0x16cc#define RADEON_DST_PITCH_OFFSET 0x142c#define RADEON_DST_PITCH_OFFSET_C 0x1c80# define RADEON_DST_TILE_LINEAR (0 << 30)# define RADEON_DST_TILE_MACRO (1 << 30)# define RADEON_DST_TILE_MICRO (2 << 30)# define RADEON_DST_TILE_BOTH (3 << 30)#define RADEON_SCRATCH_REG0 0x15e0#define RADEON_SCRATCH_REG1 0x15e4#define RADEON_SCRATCH_REG2 0x15e8#define RADEON_SCRATCH_REG3 0x15ec#define RADEON_SCRATCH_REG4 0x15f0#define RADEON_SCRATCH_REG5 0x15f4#define RADEON_SCRATCH_UMSK 0x0770#define RADEON_SCRATCH_ADDR 0x0774#define GET_SCRATCH( x ) (dev_priv->writeback_works \ ? DRM_READ32( &dev_priv->scratch[(x)] ) \ : RADEON_READ( RADEON_SCRATCH_REG0 + 4*(x) ) )#define RADEON_GEN_INT_CNTL 0x0040# define RADEON_CRTC_VBLANK_MASK (1 << 0)# define RADEON_GUI_IDLE_INT_ENABLE (1 << 19)# define RADEON_SW_INT_ENABLE (1 << 25)#define RADEON_GEN_INT_STATUS 0x0044# define RADEON_CRTC_VBLANK_STAT (1 << 0)# define RADEON_CRTC_VBLANK_STAT_ACK (1 << 0)# define RADEON_GUI_IDLE_INT_TEST_ACK (1 << 19)# define RADEON_SW_INT_TEST (1 << 25)# define RADEON_SW_INT_TEST_ACK (1 << 25)# define RADEON_SW_INT_FIRE (1 << 26)#define RADEON_HOST_PATH_CNTL 0x0130# define RADEON_HDP_SOFT_RESET (1 << 26)# define RADEON_HDP_WC_TIMEOUT_MASK (7 << 28)# define RADEON_HDP_WC_TIMEOUT_28BCLK (7 << 28)#define RADEON_ISYNC_CNTL 0x1724# define RADEON_ISYNC_ANY2D_IDLE3D (1 << 0)# define RADEON_ISYNC_ANY3D_IDLE2D (1 << 1)# define RADEON_ISYNC_TRIG2D_IDLE3D (1 << 2)# define RADEON_ISYNC_TRIG3D_IDLE2D (1 << 3)# define RADEON_ISYNC_WAIT_IDLEGUI (1 << 4)# define RADEON_ISYNC_CPSCRATCH_IDLEGUI (1 << 5)#define RADEON_RBBM_GUICNTL 0x172c# define RADEON_HOST_DATA_SWAP_NONE (0 << 0)# define RADEON_HOST_DATA_SWAP_16BIT (1 << 0)# define RADEON_HOST_DATA_SWAP_32BIT (2 << 0)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -