⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 radeon_drv.h

📁 h内核
💻 H
📖 第 1 页 / 共 3 页
字号:
/* 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__/* General customization: */#define DRIVER_AUTHOR		"Gareth Hughes, Keith Whitwell, others."#define DRIVER_NAME		"radeon"#define DRIVER_DESC		"ATI Radeon"#define DRIVER_DATE		"20050125"/* Interface history: * * 1.1 - ?? * 1.2 - Add vertex2 ioctl (keith) *     - Add stencil capability to clear ioctl (gareth, keith) *     - Increase MAX_TEXTURE_LEVELS (brian) * 1.3 - Add cmdbuf ioctl (keith) *     - Add support for new radeon packets (keith) *     - Add getparam ioctl (keith) *     - Add flip-buffers ioctl, deprecate fullscreen foo (keith). * 1.4 - Add scratch registers to get_param ioctl. * 1.5 - Add r200 packets to cmdbuf ioctl *     - Add r200 function to init ioctl *     - Add 'scalar2' instruction to cmdbuf * 1.6 - Add static GART memory manager *       Add irq handler (won't be turned on unless X server knows to) *       Add irq ioctls and irq_active getparam. *       Add wait command for cmdbuf ioctl *       Add GART offset query for getparam * 1.7 - Add support for cube map registers: R200_PP_CUBIC_FACES_[0..5] *       and R200_PP_CUBIC_OFFSET_F1_[0..5]. *       Added packets R200_EMIT_PP_CUBIC_FACES_[0..5] and *       R200_EMIT_PP_CUBIC_OFFSETS_[0..5].  (brian) * 1.8 - Remove need to call cleanup ioctls on last client exit (keith) *       Add 'GET' queries for starting additional clients on different VT's. * 1.9 - Add DRM_IOCTL_RADEON_CP_RESUME ioctl. *       Add texture rectangle support for r100. * 1.10- Add SETPARAM ioctl; first parameter to set is FB_LOCATION, which *       clients use to tell the DRM where they think the framebuffer is  *       located in the card's address space * 1.11- Add packet R200_EMIT_RB3D_BLENDCOLOR to support GL_EXT_blend_color *       and GL_EXT_blend_[func|equation]_separate on r200 * 1.12- Add R300 CP microcode support - this just loads the CP on r300 *       (No 3D support yet - just microcode loading) * 1.13- Add packet R200_EMIT_TCL_POINT_SPRITE_CNTL for ARB_point_parameters *     - Add hyperz support, add hyperz flags to clear ioctl. * 1.14- Add support for color tiling *     - Add R100/R200 surface allocation/free support */#define DRIVER_MAJOR		1#define DRIVER_MINOR		14#define DRIVER_PATCHLEVEL	0#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) )/* * Radeon chip families */enum radeon_family {	CHIP_R100,	CHIP_RS100,	CHIP_RV100,	CHIP_R200,	CHIP_RV200,	CHIP_RS200,	CHIP_R250,	CHIP_RS250,	CHIP_RV250,	CHIP_RV280,	CHIP_R300,	CHIP_RS300,	CHIP_RV350,	CHIP_LAST,};enum radeon_cp_microcode_version {	UCODE_R100,	UCODE_R200,	UCODE_R300,};/* * Chip flags */enum radeon_chip_flags {	CHIP_FAMILY_MASK = 0x0000ffffUL,	CHIP_FLAGS_MASK = 0xffff0000UL,	CHIP_IS_MOBILITY = 0x00010000UL,	CHIP_IS_IGP = 0x00020000UL,	CHIP_SINGLE_CRTC = 0x00040000UL,	CHIP_IS_AGP = 0x00080000UL,	CHIP_HAS_HIERZ = 0x00100000UL, };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 drm_radeon_driver_file_fields {	int64_t radeon_fb_delta;};struct mem_block {	struct mem_block *next;	struct mem_block *prev;	int start;	int size;	DRMFILE filp;		/* 0: free, -1: heap, other: real files */};struct radeon_surface {	int refcount;	u32 lower;	u32 upper;	u32 flags;};struct radeon_virt_surface {	int surface_index;	u32 lower;	u32 upper;	u32 flags;	DRMFILE filp;};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 microcode_version;	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 *gart_textures;	struct mem_block *gart_heap;	struct mem_block *fb_heap;	/* SW interrupt */   	wait_queue_head_t swi_queue;   	atomic_t swi_emitted;	struct radeon_surface surfaces[RADEON_MAX_SURFACES];	struct radeon_virt_surface virt_surfaces[2*RADEON_MAX_SURFACES];	/* starting from here on, data is preserved accross an open */	uint32_t flags;		/* see radeon_chip_flags */} 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 );extern int radeon_driver_preinit(struct drm_device *dev, unsigned long flags);extern int radeon_driver_postcleanup(struct drm_device *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 );extern int radeon_surface_alloc(DRM_IOCTL_ARGS);extern int radeon_surface_free(DRM_IOCTL_ARGS);				/* 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);extern int radeon_driver_vblank_wait(drm_device_t *dev, unsigned int *sequence);extern irqreturn_t radeon_driver_irq_handler( DRM_IRQ_ARGS );extern void radeon_driver_irq_preinstall( drm_device_t *dev );extern void radeon_driver_irq_postinstall( drm_device_t *dev );extern void radeon_driver_irq_uninstall( drm_device_t *dev );extern void radeon_driver_prerelease(drm_device_t *dev, DRMFILE filp);extern void radeon_driver_pretakedown(drm_device_t *dev);extern int radeon_driver_open_helper(drm_device_t *dev, drm_file_t *filp_priv);extern void radeon_driver_free_filp_priv(drm_device_t *dev, drm_file_t *filp_priv);extern int radeon_preinit( struct drm_device *dev, unsigned long flags );extern int radeon_postinit( struct drm_device *dev, unsigned long flags );extern int radeon_postcleanup( struct drm_device *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

⌨️ 快捷键说明

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