radeon_drv.h

来自「优龙2410linux2.6.8内核源代码」· C头文件 代码 · 共 912 行 · 第 1/3 页

H
912
字号
/* 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(dev_priv)		DRM_READ32(  (dev_priv)->ring_rptr, 0 )#define SET_RING_HEAD(dev_priv,val)	DRM_WRITE32( (dev_priv)->ring_rptr, 0, (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;	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;	DRMFILE filp;		/* 0: free, -1: heap, other: real files */};typedef struct drm_radeon_private {	drm_radeon_ring_buffer_t ring;	drm_radeon_sarea_t *sarea_priv;	u32 fb_location;	int gart_size;	u32 gart_vm_start;	unsigned long gart_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;		unsigned long fb_offset;	unsigned long mmio_offset;	unsigned long ring_offset;	unsigned long ring_rptr_offset;	unsigned long buffers_offset;	unsigned long gart_textures_offset;	drm_local_map_t *sarea;	drm_local_map_t *mmio;	drm_local_map_t *cp_ring;	drm_local_map_t *ring_rptr;	drm_local_map_t *buffers;	drm_local_map_t *gart_textures;	struct mem_block *gart_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_cp_resume( 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_setparam( 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( DRMFILE filp, 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);extern void radeon_do_release(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_COLOROFFSET		0x1c40#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 RADEON_SCRATCHOFF( x )		(RADEON_SCRATCH_REG_OFFSET + 4*(x))#define GET_SCRATCH( x )	(dev_priv->writeback_works			\				? DRM_READ32( dev_priv->ring_rptr, RADEON_SCRATCHOFF(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)

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?