mirror of
https://gitlab.freedesktop.org/mesa/drm.git
synced 2026-05-08 10:28:04 +02:00
merge checkpoint
This commit is contained in:
parent
a01b578b3b
commit
94b1d73a62
76 changed files with 1093 additions and 856 deletions
|
|
@ -119,6 +119,9 @@ typedef struct drm_file drm_file_t;
|
|||
#define DRM_IOREMAP(map) \
|
||||
(map)->handle = DRM(ioremap)( (map)->offset, (map)->size )
|
||||
|
||||
#define DRM_IOREMAP_NOCACHE(map) \
|
||||
(map)->handle = DRM(ioremap_nocache)((map)->offset, (map)->size)
|
||||
|
||||
#define DRM_IOREMAPFREE(map) \
|
||||
do { \
|
||||
if ( (map)->handle && (map)->size ) \
|
||||
|
|
@ -512,6 +515,7 @@ extern unsigned long DRM(alloc_pages)(int order, int area);
|
|||
extern void DRM(free_pages)(unsigned long address, int order,
|
||||
int area);
|
||||
extern void *DRM(ioremap)(unsigned long offset, unsigned long size);
|
||||
extern void *DRM(ioremap_nocache)(unsigned long offset, unsigned long size);
|
||||
extern void DRM(ioremapfree)(void *pt, unsigned long size);
|
||||
|
||||
#if __REALLY_HAVE_AGP
|
||||
|
|
|
|||
|
|
@ -64,6 +64,7 @@ int DRM(add_magic)(drm_device_t *dev, drm_file_t *priv, drm_magic_t magic)
|
|||
hash = DRM(hash_magic)(magic);
|
||||
entry = (drm_magic_entry_t*) DRM(alloc)(sizeof(*entry), DRM_MEM_MAGIC);
|
||||
if (!entry) DRM_OS_RETURN(ENOMEM);
|
||||
memset(entry, 0, sizeof(*entry));
|
||||
entry->magic = magic;
|
||||
entry->priv = priv;
|
||||
entry->next = NULL;
|
||||
|
|
|
|||
|
|
@ -600,6 +600,24 @@ int DRM(control)( DRM_OS_IOCTL )
|
|||
}
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
int DRM(control)( DRM_OS_IOCTL )
|
||||
{
|
||||
DRM_OS_DEVICE;
|
||||
drm_control_t ctl;
|
||||
|
||||
DRM_OS_KRNFROMUSR( ctl, (drm_control_t *) data, sizeof(ctl) );
|
||||
|
||||
switch ( ctl.func ) {
|
||||
case DRM_INST_HANDLER:
|
||||
case DRM_UNINST_HANDLER:
|
||||
return 0;
|
||||
default:
|
||||
DRM_OS_RETURN(EINVAL);
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* __HAVE_DMA_IRQ */
|
||||
|
||||
#endif /* __HAVE_DMA */
|
||||
|
|
|
|||
|
|
@ -198,10 +198,8 @@ static drm_ioctl_desc_t DRM(ioctls)[] = {
|
|||
|
||||
/* The DRM_IOCTL_DMA ioctl should be defined by the driver.
|
||||
*/
|
||||
#if __HAVE_DMA_IRQ
|
||||
[DRM_IOCTL_NR(DRM_IOCTL_CONTROL)] = { DRM(control), 1, 1 },
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if __REALLY_HAVE_AGP
|
||||
[DRM_IOCTL_NR(DRM_IOCTL_AGP_ACQUIRE)] = { DRM(agp_acquire), 1, 1 },
|
||||
|
|
|
|||
|
|
@ -290,6 +290,30 @@ void *DRM(ioremap)(unsigned long offset, unsigned long size)
|
|||
return pt;
|
||||
}
|
||||
|
||||
void *DRM(ioremap_nocache)(unsigned long offset, unsigned long size)
|
||||
{
|
||||
void *pt;
|
||||
|
||||
if (!size) {
|
||||
DRM_MEM_ERROR(DRM_MEM_MAPPINGS,
|
||||
"Mapping 0 bytes at 0x%08lx\n", offset);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* FIXME FOR BSD */
|
||||
if (!(pt = ioremap_nocache(offset, size))) {
|
||||
DRM_OS_SPINLOCK(&DRM(mem_lock));
|
||||
++DRM(mem_stats)[DRM_MEM_MAPPINGS].fail_count;
|
||||
DRM_OS_SPINUNLOCK(&DRM(mem_lock));
|
||||
return NULL;
|
||||
}
|
||||
DRM_OS_SPINLOCK(&DRM(mem_lock));
|
||||
++DRM(mem_stats)[DRM_MEM_MAPPINGS].succeed_count;
|
||||
DRM(mem_stats)[DRM_MEM_MAPPINGS].bytes_allocated += size;
|
||||
DRM_OS_SPINUNLOCK(&DRM(mem_lock));
|
||||
return pt;
|
||||
}
|
||||
|
||||
void DRM(ioremapfree)(void *pt, unsigned long size)
|
||||
{
|
||||
int alloc_count;
|
||||
|
|
|
|||
|
|
@ -97,6 +97,8 @@ int DRM(sg_alloc)( struct inode *inode, struct file *filp,
|
|||
return -ENOMEM;
|
||||
}
|
||||
|
||||
memset(entry->pagelist, 0, pages * sizeof(*entry->pagelist));
|
||||
|
||||
entry->busaddr = DRM(alloc)( pages * sizeof(*entry->busaddr),
|
||||
DRM_MEM_PAGES );
|
||||
if ( !entry->busaddr ) {
|
||||
|
|
|
|||
87
bsd/drm.h
87
bsd/drm.h
|
|
@ -93,14 +93,6 @@ typedef struct drm_tex_region {
|
|||
unsigned int age;
|
||||
} drm_tex_region_t;
|
||||
|
||||
/* Seperate include files for the driver specific structures */
|
||||
#include "mga_drm.h"
|
||||
#include "i810_drm.h"
|
||||
#include "i830_drm.h"
|
||||
#include "r128_drm.h"
|
||||
#include "radeon_drm.h"
|
||||
#include "sis_drm.h"
|
||||
|
||||
typedef struct drm_version {
|
||||
int version_major; /* Major version */
|
||||
int version_minor; /* Minor version */
|
||||
|
|
@ -421,81 +413,8 @@ typedef struct drm_scatter_gather {
|
|||
#define DRM_IOCTL_SG_ALLOC DRM_IOW( 0x38, drm_scatter_gather_t)
|
||||
#define DRM_IOCTL_SG_FREE DRM_IOW( 0x39, drm_scatter_gather_t)
|
||||
|
||||
/* MGA specific ioctls */
|
||||
#define DRM_IOCTL_MGA_INIT DRM_IOW( 0x40, drm_mga_init_t)
|
||||
#define DRM_IOCTL_MGA_FLUSH DRM_IOW( 0x41, drm_lock_t)
|
||||
#define DRM_IOCTL_MGA_RESET DRM_IO( 0x42)
|
||||
#define DRM_IOCTL_MGA_SWAP DRM_IO( 0x43)
|
||||
#define DRM_IOCTL_MGA_CLEAR DRM_IOW( 0x44, drm_mga_clear_t)
|
||||
#define DRM_IOCTL_MGA_VERTEX DRM_IOW( 0x45, drm_mga_vertex_t)
|
||||
#define DRM_IOCTL_MGA_INDICES DRM_IOW( 0x46, drm_mga_indices_t)
|
||||
#define DRM_IOCTL_MGA_ILOAD DRM_IOW( 0x47, drm_mga_iload_t)
|
||||
#define DRM_IOCTL_MGA_BLIT DRM_IOW( 0x48, drm_mga_blit_t)
|
||||
|
||||
/* i810 specific ioctls */
|
||||
#define DRM_IOCTL_I810_INIT DRM_IOW( 0x40, drm_i810_init_t)
|
||||
#define DRM_IOCTL_I810_VERTEX DRM_IOW( 0x41, drm_i810_vertex_t)
|
||||
#define DRM_IOCTL_I810_CLEAR DRM_IOW( 0x42, drm_i810_clear_t)
|
||||
#define DRM_IOCTL_I810_FLUSH DRM_IO( 0x43)
|
||||
#define DRM_IOCTL_I810_GETAGE DRM_IO( 0x44)
|
||||
#define DRM_IOCTL_I810_GETBUF DRM_IOWR(0x45, drm_i810_dma_t)
|
||||
#define DRM_IOCTL_I810_SWAP DRM_IO( 0x46)
|
||||
#define DRM_IOCTL_I810_COPY DRM_IOW( 0x47, drm_i810_copy_t)
|
||||
#define DRM_IOCTL_I810_DOCOPY DRM_IO( 0x48)
|
||||
|
||||
/* Rage 128 specific ioctls */
|
||||
#define DRM_IOCTL_R128_INIT DRM_IOW( 0x40, drm_r128_init_t)
|
||||
#define DRM_IOCTL_R128_CCE_START DRM_IO( 0x41)
|
||||
#define DRM_IOCTL_R128_CCE_STOP DRM_IOW( 0x42, drm_r128_cce_stop_t)
|
||||
#define DRM_IOCTL_R128_CCE_RESET DRM_IO( 0x43)
|
||||
#define DRM_IOCTL_R128_CCE_IDLE DRM_IO( 0x44)
|
||||
#define DRM_IOCTL_R128_RESET DRM_IO( 0x46)
|
||||
#define DRM_IOCTL_R128_SWAP DRM_IO( 0x47)
|
||||
#define DRM_IOCTL_R128_CLEAR DRM_IOW( 0x48, drm_r128_clear_t)
|
||||
#define DRM_IOCTL_R128_VERTEX DRM_IOW( 0x49, drm_r128_vertex_t)
|
||||
#define DRM_IOCTL_R128_INDICES DRM_IOW( 0x4a, drm_r128_indices_t)
|
||||
#define DRM_IOCTL_R128_BLIT DRM_IOW( 0x4b, drm_r128_blit_t)
|
||||
#define DRM_IOCTL_R128_DEPTH DRM_IOW( 0x4c, drm_r128_depth_t)
|
||||
#define DRM_IOCTL_R128_STIPPLE DRM_IOW( 0x4d, drm_r128_stipple_t)
|
||||
#define DRM_IOCTL_R128_INDIRECT DRM_IOWR(0x4f, drm_r128_indirect_t)
|
||||
#define DRM_IOCTL_R128_FULLSCREEN DRM_IOW( 0x50, drm_r128_fullscreen_t)
|
||||
|
||||
/* Radeon specific ioctls */
|
||||
#define DRM_IOCTL_RADEON_CP_INIT DRM_IOW( 0x40, drm_radeon_init_t)
|
||||
#define DRM_IOCTL_RADEON_CP_START DRM_IO( 0x41)
|
||||
#define DRM_IOCTL_RADEON_CP_STOP DRM_IOW( 0x42, drm_radeon_cp_stop_t)
|
||||
#define DRM_IOCTL_RADEON_CP_RESET DRM_IO( 0x43)
|
||||
#define DRM_IOCTL_RADEON_CP_IDLE DRM_IO( 0x44)
|
||||
#define DRM_IOCTL_RADEON_RESET DRM_IO( 0x45)
|
||||
#define DRM_IOCTL_RADEON_FULLSCREEN DRM_IOW( 0x46, drm_radeon_fullscreen_t)
|
||||
#define DRM_IOCTL_RADEON_SWAP DRM_IO( 0x47)
|
||||
#define DRM_IOCTL_RADEON_CLEAR DRM_IOW( 0x48, drm_radeon_clear_t)
|
||||
#define DRM_IOCTL_RADEON_VERTEX DRM_IOW( 0x49, drm_radeon_vertex_t)
|
||||
#define DRM_IOCTL_RADEON_INDICES DRM_IOW( 0x4a, drm_radeon_indices_t)
|
||||
#define DRM_IOCTL_RADEON_STIPPLE DRM_IOW( 0x4c, drm_radeon_stipple_t)
|
||||
#define DRM_IOCTL_RADEON_INDIRECT DRM_IOWR(0x4d, drm_radeon_indirect_t)
|
||||
#define DRM_IOCTL_RADEON_TEXTURE DRM_IOWR(0x4e, drm_radeon_texture_t)
|
||||
|
||||
/* SiS specific ioctls */
|
||||
|
||||
#define SIS_IOCTL_FB_ALLOC DRM_IOWR(0x44, drm_sis_mem_t)
|
||||
#define SIS_IOCTL_FB_FREE DRM_IOW( 0x45, drm_sis_mem_t)
|
||||
#define SIS_IOCTL_AGP_INIT DRM_IOWR(0x53, drm_sis_agp_t)
|
||||
#define SIS_IOCTL_AGP_ALLOC DRM_IOWR(0x54, drm_sis_mem_t)
|
||||
#define SIS_IOCTL_AGP_FREE DRM_IOW( 0x55, drm_sis_mem_t)
|
||||
#define SIS_IOCTL_FLIP DRM_IOW( 0x48, drm_sis_flip_t)
|
||||
#define SIS_IOCTL_FLIP_INIT DRM_IO( 0x49)
|
||||
#define SIS_IOCTL_FLIP_FINAL DRM_IO( 0x50)
|
||||
|
||||
/* I830 specific ioctls */
|
||||
#define DRM_IOCTL_I830_INIT DRM_IOW( 0x40, drm_i830_init_t)
|
||||
#define DRM_IOCTL_I830_VERTEX DRM_IOW( 0x41, drm_i830_vertex_t)
|
||||
#define DRM_IOCTL_I830_CLEAR DRM_IOW( 0x42, drm_i830_clear_t)
|
||||
#define DRM_IOCTL_I830_FLUSH DRM_IO ( 0x43)
|
||||
#define DRM_IOCTL_I830_GETAGE DRM_IO ( 0x44)
|
||||
#define DRM_IOCTL_I830_GETBUF DRM_IOWR(0x45, drm_i830_dma_t)
|
||||
#define DRM_IOCTL_I830_SWAP DRM_IO ( 0x46)
|
||||
#define DRM_IOCTL_I830_COPY DRM_IOW( 0x47, drm_i830_copy_t)
|
||||
#define DRM_IOCTL_I830_DOCOPY DRM_IO ( 0x48)
|
||||
/* Device specfic ioctls should only be in their respective headers
|
||||
* The device specific ioctl range is 0x40 to 0x79. */
|
||||
#define DRM_COMMAND_BASE 0x40
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -119,6 +119,9 @@ typedef struct drm_file drm_file_t;
|
|||
#define DRM_IOREMAP(map) \
|
||||
(map)->handle = DRM(ioremap)( (map)->offset, (map)->size )
|
||||
|
||||
#define DRM_IOREMAP_NOCACHE(map) \
|
||||
(map)->handle = DRM(ioremap_nocache)((map)->offset, (map)->size)
|
||||
|
||||
#define DRM_IOREMAPFREE(map) \
|
||||
do { \
|
||||
if ( (map)->handle && (map)->size ) \
|
||||
|
|
@ -512,6 +515,7 @@ extern unsigned long DRM(alloc_pages)(int order, int area);
|
|||
extern void DRM(free_pages)(unsigned long address, int order,
|
||||
int area);
|
||||
extern void *DRM(ioremap)(unsigned long offset, unsigned long size);
|
||||
extern void *DRM(ioremap_nocache)(unsigned long offset, unsigned long size);
|
||||
extern void DRM(ioremapfree)(void *pt, unsigned long size);
|
||||
|
||||
#if __REALLY_HAVE_AGP
|
||||
|
|
|
|||
|
|
@ -64,6 +64,7 @@ int DRM(add_magic)(drm_device_t *dev, drm_file_t *priv, drm_magic_t magic)
|
|||
hash = DRM(hash_magic)(magic);
|
||||
entry = (drm_magic_entry_t*) DRM(alloc)(sizeof(*entry), DRM_MEM_MAGIC);
|
||||
if (!entry) DRM_OS_RETURN(ENOMEM);
|
||||
memset(entry, 0, sizeof(*entry));
|
||||
entry->magic = magic;
|
||||
entry->priv = priv;
|
||||
entry->next = NULL;
|
||||
|
|
|
|||
|
|
@ -600,6 +600,24 @@ int DRM(control)( DRM_OS_IOCTL )
|
|||
}
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
int DRM(control)( DRM_OS_IOCTL )
|
||||
{
|
||||
DRM_OS_DEVICE;
|
||||
drm_control_t ctl;
|
||||
|
||||
DRM_OS_KRNFROMUSR( ctl, (drm_control_t *) data, sizeof(ctl) );
|
||||
|
||||
switch ( ctl.func ) {
|
||||
case DRM_INST_HANDLER:
|
||||
case DRM_UNINST_HANDLER:
|
||||
return 0;
|
||||
default:
|
||||
DRM_OS_RETURN(EINVAL);
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* __HAVE_DMA_IRQ */
|
||||
|
||||
#endif /* __HAVE_DMA */
|
||||
|
|
|
|||
|
|
@ -198,10 +198,8 @@ static drm_ioctl_desc_t DRM(ioctls)[] = {
|
|||
|
||||
/* The DRM_IOCTL_DMA ioctl should be defined by the driver.
|
||||
*/
|
||||
#if __HAVE_DMA_IRQ
|
||||
[DRM_IOCTL_NR(DRM_IOCTL_CONTROL)] = { DRM(control), 1, 1 },
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if __REALLY_HAVE_AGP
|
||||
[DRM_IOCTL_NR(DRM_IOCTL_AGP_ACQUIRE)] = { DRM(agp_acquire), 1, 1 },
|
||||
|
|
|
|||
|
|
@ -152,6 +152,7 @@
|
|||
#define LINUX_DRM_IOCTL_RADEON_STIPPLE 0x644c
|
||||
#define LINUX_DRM_IOCTL_RADEON_INDIRECT 0x644d
|
||||
#define LINUX_DRM_IOCTL_RADEON_TEXTURE 0x644e
|
||||
#define LINUX_DRM_IOCTL_RADEON_VERTEX2 0x644f
|
||||
|
||||
/* card specific ioctls may increase the DRM_MAX */
|
||||
#define LINUX_IOCTL_DRM_MIN LINUX_DRM_IOCTL_VERSION
|
||||
|
|
|
|||
|
|
@ -44,6 +44,8 @@ int DRM(waitlist_create)(drm_waitlist_t *bl, int count)
|
|||
|
||||
if(!bl->bufs) DRM_OS_RETURN(ENOMEM);
|
||||
|
||||
memset(bl->bufs, 0, sizeof(*bl->bufs));
|
||||
|
||||
bl->count = count;
|
||||
bl->rp = bl->bufs;
|
||||
bl->wp = bl->bufs;
|
||||
|
|
|
|||
|
|
@ -290,6 +290,30 @@ void *DRM(ioremap)(unsigned long offset, unsigned long size)
|
|||
return pt;
|
||||
}
|
||||
|
||||
void *DRM(ioremap_nocache)(unsigned long offset, unsigned long size)
|
||||
{
|
||||
void *pt;
|
||||
|
||||
if (!size) {
|
||||
DRM_MEM_ERROR(DRM_MEM_MAPPINGS,
|
||||
"Mapping 0 bytes at 0x%08lx\n", offset);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* FIXME FOR BSD */
|
||||
if (!(pt = ioremap_nocache(offset, size))) {
|
||||
DRM_OS_SPINLOCK(&DRM(mem_lock));
|
||||
++DRM(mem_stats)[DRM_MEM_MAPPINGS].fail_count;
|
||||
DRM_OS_SPINUNLOCK(&DRM(mem_lock));
|
||||
return NULL;
|
||||
}
|
||||
DRM_OS_SPINLOCK(&DRM(mem_lock));
|
||||
++DRM(mem_stats)[DRM_MEM_MAPPINGS].succeed_count;
|
||||
DRM(mem_stats)[DRM_MEM_MAPPINGS].bytes_allocated += size;
|
||||
DRM_OS_SPINUNLOCK(&DRM(mem_lock));
|
||||
return pt;
|
||||
}
|
||||
|
||||
void DRM(ioremapfree)(void *pt, unsigned long size)
|
||||
{
|
||||
int alloc_count;
|
||||
|
|
|
|||
|
|
@ -97,6 +97,8 @@ int DRM(sg_alloc)( struct inode *inode, struct file *filp,
|
|||
return -ENOMEM;
|
||||
}
|
||||
|
||||
memset(entry->pagelist, 0, pages * sizeof(*entry->pagelist));
|
||||
|
||||
entry->busaddr = DRM(alloc)( pages * sizeof(*entry->busaddr),
|
||||
DRM_MEM_PAGES );
|
||||
if ( !entry->busaddr ) {
|
||||
|
|
|
|||
|
|
@ -33,6 +33,8 @@
|
|||
|
||||
#include "gamma.h"
|
||||
#include "drmP.h"
|
||||
#include "drm.h"
|
||||
#include "gamma_drm.h"
|
||||
#include "gamma_drv.h"
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -35,6 +35,8 @@
|
|||
#include <opt_drm_linux.h>
|
||||
#include "gamma.h"
|
||||
#include "drmP.h"
|
||||
#include "drm.h"
|
||||
#include "gamma_drm.h"
|
||||
#include "gamma_drv.h"
|
||||
|
||||
#define DRIVER_AUTHOR "VA Linux Systems Inc."
|
||||
|
|
|
|||
|
|
@ -33,6 +33,8 @@
|
|||
|
||||
#include "i810.h"
|
||||
#include "drmP.h"
|
||||
#include "drm.h"
|
||||
#include "i810_drm.h"
|
||||
#include "i810_drv.h"
|
||||
|
||||
#define I810_BUF_FREE 2
|
||||
|
|
@ -125,7 +127,7 @@ static int i810_freelist_put(drm_device_t *dev, drm_buf_t *buf)
|
|||
return 0;
|
||||
}
|
||||
|
||||
|
||||
#if 0
|
||||
int i810_mmap_buffers(struct file *filp, struct vm_area_struct *vma)
|
||||
{
|
||||
DRM_OS_DEVICE;
|
||||
|
|
@ -150,6 +152,7 @@ int i810_mmap_buffers(struct file *filp, struct vm_area_struct *vma)
|
|||
vma->vm_page_prot)) DRM_OS_RETURN(EAGAIN);
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
static int i810_map_buffer(drm_buf_t *buf, struct file *filp)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -38,6 +38,8 @@
|
|||
|
||||
#include "i810.h"
|
||||
#include "drmP.h"
|
||||
#include "drm.h"
|
||||
#include "i810_drm.h"
|
||||
#include "i810_drv.h"
|
||||
|
||||
#define DRIVER_AUTHOR "VA Linux Systems Inc."
|
||||
|
|
|
|||
|
|
@ -166,14 +166,34 @@ typedef struct _drm_i810_sarea {
|
|||
|
||||
} drm_i810_sarea_t;
|
||||
|
||||
/* WARNING: If you change any of these defines, make sure to change the
|
||||
* defines in the Xserver file (xf86drmMga.h)
|
||||
*/
|
||||
|
||||
/* i810 specific ioctls
|
||||
* The device specific ioctl range is 0x40 to 0x79.
|
||||
*/
|
||||
#define DRM_IOCTL_I810_INIT DRM_IOW( 0x40, drm_i810_init_t)
|
||||
#define DRM_IOCTL_I810_VERTEX DRM_IOW( 0x41, drm_i810_vertex_t)
|
||||
#define DRM_IOCTL_I810_CLEAR DRM_IOW( 0x42, drm_i810_clear_t)
|
||||
#define DRM_IOCTL_I810_FLUSH DRM_IO( 0x43)
|
||||
#define DRM_IOCTL_I810_GETAGE DRM_IO( 0x44)
|
||||
#define DRM_IOCTL_I810_GETBUF DRM_IOWR(0x45, drm_i810_dma_t)
|
||||
#define DRM_IOCTL_I810_SWAP DRM_IO( 0x46)
|
||||
#define DRM_IOCTL_I810_COPY DRM_IOW( 0x47, drm_i810_copy_t)
|
||||
#define DRM_IOCTL_I810_DOCOPY DRM_IO( 0x48)
|
||||
#define DRM_IOCTL_I810_OV0INFO DRM_IOR( 0x49, drm_i810_overlay_t)
|
||||
#define DRM_IOCTL_I810_FSTATUS DRM_IO ( 0x4a)
|
||||
#define DRM_IOCTL_I810_OV0FLIP DRM_IO ( 0x4b)
|
||||
#define DRM_IOCTL_I810_MC DRM_IOW( 0x4c, drm_i810_mc_t)
|
||||
#define DRM_IOCTL_I810_RSTATUS DRM_IO ( 0x4d )
|
||||
|
||||
typedef struct _drm_i810_clear {
|
||||
int clear_color;
|
||||
int clear_depth;
|
||||
int flags;
|
||||
} drm_i810_clear_t;
|
||||
|
||||
|
||||
|
||||
/* These may be placeholders if we have more cliprects than
|
||||
* I810_NR_SAREA_CLIPRECTS. In that case, the client sets discard to
|
||||
* false, indicating that the buffer will be dispatched again with a
|
||||
|
|
|
|||
|
|
@ -34,6 +34,8 @@
|
|||
#define __NO_VERSION__
|
||||
#include "i830.h"
|
||||
#include "drmP.h"
|
||||
#include "drm.h"
|
||||
#include "i830_drm.h"
|
||||
#include "i830_drv.h"
|
||||
#include <linux/interrupt.h> /* For task queue support */
|
||||
|
||||
|
|
@ -91,7 +93,7 @@ do { \
|
|||
*(volatile unsigned int *)(virt + outring) = n; \
|
||||
outring += 4; \
|
||||
outring &= ringmask; \
|
||||
} while (0);
|
||||
} while (0)
|
||||
|
||||
static inline void i830_print_status_page(drm_device_t *dev)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -34,6 +34,8 @@
|
|||
#include <linux/config.h>
|
||||
#include "i830.h"
|
||||
#include "drmP.h"
|
||||
#include "drm.h"
|
||||
#include "i830_drm.h"
|
||||
#include "i830_drv.h"
|
||||
|
||||
#define DRIVER_AUTHOR "VA Linux Systems Inc."
|
||||
|
|
|
|||
|
|
@ -201,6 +201,19 @@ typedef struct _drm_i830_sarea {
|
|||
int vertex_prim;
|
||||
} drm_i830_sarea_t;
|
||||
|
||||
/* I830 specific ioctls
|
||||
* The device specific ioctl range is 0x40 to 0x79.
|
||||
*/
|
||||
#define DRM_IOCTL_I830_INIT DRM_IOW( 0x40, drm_i830_init_t)
|
||||
#define DRM_IOCTL_I830_VERTEX DRM_IOW( 0x41, drm_i830_vertex_t)
|
||||
#define DRM_IOCTL_I830_CLEAR DRM_IOW( 0x42, drm_i830_clear_t)
|
||||
#define DRM_IOCTL_I830_FLUSH DRM_IO ( 0x43)
|
||||
#define DRM_IOCTL_I830_GETAGE DRM_IO ( 0x44)
|
||||
#define DRM_IOCTL_I830_GETBUF DRM_IOWR(0x45, drm_i830_dma_t)
|
||||
#define DRM_IOCTL_I830_SWAP DRM_IO ( 0x46)
|
||||
#define DRM_IOCTL_I830_COPY DRM_IOW( 0x47, drm_i830_copy_t)
|
||||
#define DRM_IOCTL_I830_DOCOPY DRM_IO ( 0x48)
|
||||
|
||||
typedef struct _drm_i830_clear {
|
||||
int clear_color;
|
||||
int clear_depth;
|
||||
|
|
|
|||
|
|
@ -36,6 +36,8 @@
|
|||
#define __NO_VERSION__
|
||||
#include "mga.h"
|
||||
#include "drmP.h"
|
||||
#include "drm.h"
|
||||
#include "mga_drm.h"
|
||||
#include "mga_drv.h"
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -37,6 +37,8 @@
|
|||
|
||||
#include "mga.h"
|
||||
#include "drmP.h"
|
||||
#include "drm.h"
|
||||
#include "mga_drm.h"
|
||||
#include "mga_drv.h"
|
||||
|
||||
#define DRIVER_AUTHOR "Gareth Hughes, VA Linux Systems Inc."
|
||||
|
|
|
|||
|
|
@ -35,6 +35,8 @@
|
|||
#define __NO_VERSION__
|
||||
#include "mga.h"
|
||||
#include "drmP.h"
|
||||
#include "drm.h"
|
||||
#include "mga_drm.h"
|
||||
#include "mga_drv.h"
|
||||
#include "drm.h"
|
||||
|
||||
|
|
@ -163,6 +165,9 @@ static __inline__ void mga_g400_emit_tex0( drm_mga_private_t *dev_priv )
|
|||
drm_mga_texture_regs_t *tex = &sarea_priv->tex_state[0];
|
||||
DMA_LOCALS;
|
||||
|
||||
/* printk("mga_g400_emit_tex0 %x %x %x\n", tex->texorg, */
|
||||
/* tex->texctl, tex->texctl2); */
|
||||
|
||||
BEGIN_DMA( 6 );
|
||||
|
||||
DMA_BLOCK( MGA_TEXCTL2, tex->texctl2 | MGA_G400_TC2_MAGIC,
|
||||
|
|
@ -204,6 +209,9 @@ static __inline__ void mga_g400_emit_tex1( drm_mga_private_t *dev_priv )
|
|||
drm_mga_texture_regs_t *tex = &sarea_priv->tex_state[1];
|
||||
DMA_LOCALS;
|
||||
|
||||
/* printk("mga_g400_emit_tex1 %x %x %x\n", tex->texorg, */
|
||||
/* tex->texctl, tex->texctl2); */
|
||||
|
||||
BEGIN_DMA( 5 );
|
||||
|
||||
DMA_BLOCK( MGA_TEXCTL2, (tex->texctl2 |
|
||||
|
|
@ -272,6 +280,8 @@ static __inline__ void mga_g400_emit_pipe( drm_mga_private_t *dev_priv )
|
|||
unsigned int pipe = sarea_priv->warp_pipe;
|
||||
DMA_LOCALS;
|
||||
|
||||
/* printk("mga_g400_emit_pipe %x\n", pipe); */
|
||||
|
||||
BEGIN_DMA( 10 );
|
||||
|
||||
DMA_BLOCK( MGA_WIADDR2, MGA_WMODE_SUSPEND,
|
||||
|
|
|
|||
|
|
@ -30,6 +30,8 @@
|
|||
#define __NO_VERSION__
|
||||
#include "mga.h"
|
||||
#include "drmP.h"
|
||||
#include "drm.h"
|
||||
#include "mga_drm.h"
|
||||
#include "mga_drv.h"
|
||||
#include "mga_ucode.h"
|
||||
|
||||
|
|
|
|||
|
|
@ -38,6 +38,7 @@
|
|||
/* WARNING: If you change any of these defines, make sure to change the
|
||||
* defines in the Xserver file (mga_sarea.h)
|
||||
*/
|
||||
|
||||
#ifndef __MGA_SAREA_DEFINES__
|
||||
#define __MGA_SAREA_DEFINES__
|
||||
|
||||
|
|
@ -225,6 +226,20 @@ typedef struct _drm_mga_sarea {
|
|||
/* WARNING: If you change any of these defines, make sure to change the
|
||||
* defines in the Xserver file (xf86drmMga.h)
|
||||
*/
|
||||
|
||||
/* MGA specific ioctls
|
||||
* The device specific ioctl range is 0x40 to 0x79.
|
||||
*/
|
||||
#define DRM_IOCTL_MGA_INIT DRM_IOW( 0x40, drm_mga_init_t)
|
||||
#define DRM_IOCTL_MGA_FLUSH DRM_IOW( 0x41, drm_lock_t)
|
||||
#define DRM_IOCTL_MGA_RESET DRM_IO( 0x42)
|
||||
#define DRM_IOCTL_MGA_SWAP DRM_IO( 0x43)
|
||||
#define DRM_IOCTL_MGA_CLEAR DRM_IOW( 0x44, drm_mga_clear_t)
|
||||
#define DRM_IOCTL_MGA_VERTEX DRM_IOW( 0x45, drm_mga_vertex_t)
|
||||
#define DRM_IOCTL_MGA_INDICES DRM_IOW( 0x46, drm_mga_indices_t)
|
||||
#define DRM_IOCTL_MGA_ILOAD DRM_IOW( 0x47, drm_mga_iload_t)
|
||||
#define DRM_IOCTL_MGA_BLIT DRM_IOW( 0x48, drm_mga_blit_t)
|
||||
|
||||
typedef struct _drm_mga_warp_index {
|
||||
int installed;
|
||||
unsigned long phys_addr;
|
||||
|
|
|
|||
|
|
@ -31,6 +31,8 @@
|
|||
#define __NO_VERSION__
|
||||
#include "r128.h"
|
||||
#include "drmP.h"
|
||||
#include "drm.h"
|
||||
#include "r128_drm.h"
|
||||
#include "r128_drv.h"
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -37,6 +37,8 @@
|
|||
|
||||
#include "r128.h"
|
||||
#include "drmP.h"
|
||||
#include "drm.h"
|
||||
#include "r128_drm.h"
|
||||
#include "r128_drv.h"
|
||||
#if __REALLY_HAVE_SG
|
||||
#include "ati_pcigart.h"
|
||||
|
|
|
|||
|
|
@ -30,6 +30,8 @@
|
|||
|
||||
#include "r128.h"
|
||||
#include "drmP.h"
|
||||
#include "drm.h"
|
||||
#include "r128_drm.h"
|
||||
#include "r128_drv.h"
|
||||
#include "drm.h"
|
||||
|
||||
|
|
|
|||
|
|
@ -170,6 +170,27 @@ typedef struct drm_r128_sarea {
|
|||
/* WARNING: If you change any of these defines, make sure to change the
|
||||
* defines in the Xserver file (xf86drmR128.h)
|
||||
*/
|
||||
|
||||
/* Rage 128 specific ioctls
|
||||
* The device specific ioctl range is 0x40 to 0x79.
|
||||
*/
|
||||
#define DRM_IOCTL_R128_INIT DRM_IOW( 0x40, drm_r128_init_t)
|
||||
#define DRM_IOCTL_R128_CCE_START DRM_IO( 0x41)
|
||||
#define DRM_IOCTL_R128_CCE_STOP DRM_IOW( 0x42, drm_r128_cce_stop_t)
|
||||
#define DRM_IOCTL_R128_CCE_RESET DRM_IO( 0x43)
|
||||
#define DRM_IOCTL_R128_CCE_IDLE DRM_IO( 0x44)
|
||||
#define DRM_IOCTL_R128_RESET DRM_IO( 0x46)
|
||||
#define DRM_IOCTL_R128_SWAP DRM_IO( 0x47)
|
||||
#define DRM_IOCTL_R128_CLEAR DRM_IOW( 0x48, drm_r128_clear_t)
|
||||
#define DRM_IOCTL_R128_VERTEX DRM_IOW( 0x49, drm_r128_vertex_t)
|
||||
#define DRM_IOCTL_R128_INDICES DRM_IOW( 0x4a, drm_r128_indices_t)
|
||||
#define DRM_IOCTL_R128_BLIT DRM_IOW( 0x4b, drm_r128_blit_t)
|
||||
#define DRM_IOCTL_R128_DEPTH DRM_IOW( 0x4c, drm_r128_depth_t)
|
||||
#define DRM_IOCTL_R128_STIPPLE DRM_IOW( 0x4d, drm_r128_stipple_t)
|
||||
#define DRM_IOCTL_R128_INDIRECT DRM_IOWR(0x4f, drm_r128_indirect_t)
|
||||
#define DRM_IOCTL_R128_FULLSCREEN DRM_IOW( 0x50, drm_r128_fullscreen_t)
|
||||
#define DRM_IOCTL_R128_CLEAR2 DRM_IOW( 0x51, drm_r128_clear2_t)
|
||||
|
||||
typedef struct drm_r128_init {
|
||||
enum {
|
||||
R128_INIT_CCE = 0x01,
|
||||
|
|
|
|||
|
|
@ -30,6 +30,8 @@
|
|||
|
||||
#include "radeon.h"
|
||||
#include "drmP.h"
|
||||
#include "drm.h"
|
||||
#include "radeon_drm.h"
|
||||
#include "radeon_drv.h"
|
||||
|
||||
#include <vm/vm.h>
|
||||
|
|
@ -624,7 +626,7 @@ static void radeon_cp_init_ring_buffer( drm_device_t *dev,
|
|||
|
||||
RADEON_WRITE( RADEON_CP_RB_RPTR_ADDR,
|
||||
entry->busaddr[page_ofs]);
|
||||
DRM_DEBUG( "ring rptr: offset=0x%08x handle=0x%08lx\n",
|
||||
DRM_DEBUG( "ring rptr: offset=0x%08x handle=0x%08x\n",
|
||||
entry->busaddr[page_ofs],
|
||||
entry->handle + tmp_ofs );
|
||||
}
|
||||
|
|
@ -746,17 +748,17 @@ static int radeon_do_init_cp( drm_device_t *dev, drm_radeon_init_t *init )
|
|||
* and screwing with the clear operation.
|
||||
*/
|
||||
dev_priv->depth_clear.rb3d_cntl = (RADEON_PLANE_MASK_ENABLE |
|
||||
RADEON_Z_ENABLE |
|
||||
(dev_priv->color_fmt << 10) |
|
||||
RADEON_ZBLOCK16);
|
||||
|
||||
dev_priv->depth_clear.rb3d_zstencilcntl = (dev_priv->depth_fmt |
|
||||
RADEON_Z_TEST_ALWAYS |
|
||||
RADEON_STENCIL_TEST_ALWAYS |
|
||||
RADEON_STENCIL_S_FAIL_KEEP |
|
||||
RADEON_STENCIL_ZPASS_KEEP |
|
||||
RADEON_STENCIL_ZFAIL_KEEP |
|
||||
RADEON_Z_WRITE_ENABLE);
|
||||
dev_priv->depth_clear.rb3d_zstencilcntl =
|
||||
(dev_priv->depth_fmt |
|
||||
RADEON_Z_TEST_ALWAYS |
|
||||
RADEON_STENCIL_TEST_ALWAYS |
|
||||
RADEON_STENCIL_S_FAIL_REPLACE |
|
||||
RADEON_STENCIL_ZPASS_REPLACE |
|
||||
RADEON_STENCIL_ZFAIL_REPLACE |
|
||||
RADEON_Z_WRITE_ENABLE);
|
||||
|
||||
dev_priv->depth_clear.se_cntl = (RADEON_FFACE_CULL_CW |
|
||||
RADEON_BFACE_SOLID |
|
||||
|
|
|
|||
|
|
@ -36,6 +36,8 @@
|
|||
|
||||
#include "radeon.h"
|
||||
#include "drmP.h"
|
||||
#include "drm.h"
|
||||
#include "radeon_drm.h"
|
||||
#include "radeon_drv.h"
|
||||
#if __REALLY_HAVE_SG
|
||||
#include "ati_pcigart.h"
|
||||
|
|
@ -48,8 +50,16 @@
|
|||
#define DRIVER_DATE "20010405"
|
||||
|
||||
#define DRIVER_MAJOR 1
|
||||
#define DRIVER_MINOR 1
|
||||
#define DRIVER_PATCHLEVEL 1
|
||||
#define DRIVER_MINOR 2
|
||||
#define DRIVER_PATCHLEVEL 0
|
||||
|
||||
/* Interface history:
|
||||
*
|
||||
* 1.1 - ??
|
||||
* 1.2 - Add vertex2 ioctl (keith)
|
||||
* - Add stencil capability to clear ioctl (gareth, keith)
|
||||
* - Increase MAX_TEXTURE_LEVELS (brian)
|
||||
*/
|
||||
|
||||
/* List acquired from http://www.yourvote.com/pci/pcihdr.h and xc/xc/programs/Xserver/hw/xfree86/common/xf86PciInfo.h
|
||||
* Please report to anholt@teleport.com inaccuracies or if a chip you have works that is marked unsupported here.
|
||||
|
|
@ -78,7 +88,8 @@ drm_chipinfo_t DRM(devicelist)[] = {
|
|||
[DRM_IOCTL_NR(DRM_IOCTL_RADEON_INDICES)] = { radeon_cp_indices, 1, 0 }, \
|
||||
[DRM_IOCTL_NR(DRM_IOCTL_RADEON_TEXTURE)] = { radeon_cp_texture, 1, 0 }, \
|
||||
[DRM_IOCTL_NR(DRM_IOCTL_RADEON_STIPPLE)] = { radeon_cp_stipple, 1, 0 }, \
|
||||
[DRM_IOCTL_NR(DRM_IOCTL_RADEON_INDIRECT)] = { radeon_cp_indirect, 1, 1 },
|
||||
[DRM_IOCTL_NR(DRM_IOCTL_RADEON_INDIRECT)] = { radeon_cp_indirect, 1, 1 }, \
|
||||
[DRM_IOCTL_NR(DRM_IOCTL_RADEON_VERTEX2)] = { radeon_cp_vertex2, 1, 0 },
|
||||
|
||||
|
||||
#if 0
|
||||
|
|
|
|||
|
|
@ -163,6 +163,7 @@ extern int radeon_cp_indices( DRM_OS_IOCTL );
|
|||
extern int radeon_cp_texture( DRM_OS_IOCTL );
|
||||
extern int radeon_cp_stipple( DRM_OS_IOCTL );
|
||||
extern int radeon_cp_indirect( DRM_OS_IOCTL );
|
||||
extern int radeon_cp_vertex2( DRM_OS_IOCTL );
|
||||
|
||||
/* Register definitions, register access macros and drmAddMap constants
|
||||
* for Radeon kernel driver.
|
||||
|
|
@ -292,9 +293,9 @@ extern int radeon_cp_indirect( DRM_OS_IOCTL );
|
|||
# define RADEON_Z_TEST_MASK (7 << 4)
|
||||
# define RADEON_Z_TEST_ALWAYS (7 << 4)
|
||||
# define RADEON_STENCIL_TEST_ALWAYS (7 << 12)
|
||||
# define RADEON_STENCIL_S_FAIL_KEEP (0 << 16)
|
||||
# define RADEON_STENCIL_ZPASS_KEEP (0 << 20)
|
||||
# define RADEON_STENCIL_ZFAIL_KEEP (0 << 20)
|
||||
# define RADEON_STENCIL_S_FAIL_REPLACE (2 << 16)
|
||||
# define RADEON_STENCIL_ZPASS_REPLACE (2 << 20)
|
||||
# define RADEON_STENCIL_ZFAIL_REPLACE (2 << 24)
|
||||
# define RADEON_Z_WRITE_ENABLE (1 << 30)
|
||||
#define RADEON_RBBM_SOFT_RESET 0x00f0
|
||||
# define RADEON_SOFT_RESET_CP (1 << 0)
|
||||
|
|
@ -343,6 +344,7 @@ extern int radeon_cp_indirect( DRM_OS_IOCTL );
|
|||
#define RADEON_SE_CNTL_STATUS 0x2140
|
||||
#define RADEON_SE_LINE_WIDTH 0x1db8
|
||||
#define RADEON_SE_VPORT_XSCALE 0x1d98
|
||||
#define RADEON_SE_ZBIAS_FACTOR 0x1db0
|
||||
#define RADEON_SURFACE_ACCESS_FLAGS 0x0bf8
|
||||
#define RADEON_SURFACE_ACCESS_CLR 0x0bfc
|
||||
#define RADEON_SURFACE_CNTL 0x0b00
|
||||
|
|
@ -468,6 +470,7 @@ extern int radeon_cp_indirect( DRM_OS_IOCTL );
|
|||
#define RADEON_PRIM_TYPE_RECT_LIST (8 << 0)
|
||||
#define RADEON_PRIM_TYPE_3VRT_POINT_LIST (9 << 0)
|
||||
#define RADEON_PRIM_TYPE_3VRT_LINE_LIST (10 << 0)
|
||||
#define RADEON_PRIM_TYPE_MASK 0xf
|
||||
#define RADEON_PRIM_WALK_IND (1 << 4)
|
||||
#define RADEON_PRIM_WALK_LIST (2 << 4)
|
||||
#define RADEON_PRIM_WALK_RING (3 << 4)
|
||||
|
|
@ -720,6 +723,11 @@ do { \
|
|||
write &= mask; \
|
||||
} while (0)
|
||||
|
||||
#define OUT_RING_REG( reg, val ) do { \
|
||||
OUT_RING( CP_PACKET0( reg, 0 ) ); \
|
||||
OUT_RING( val ); \
|
||||
} while (0)
|
||||
|
||||
#define RADEON_PERFORMANCE_BOXES 0
|
||||
|
||||
#endif /* __RADEON_DRV_H__ */
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -26,6 +26,7 @@
|
|||
* Authors:
|
||||
* Kevin E. Martin <martin@valinux.com>
|
||||
* Gareth Hughes <gareth@valinux.com>
|
||||
* Keith Whitwell <keith_whitwell@yahoo.com>
|
||||
*/
|
||||
|
||||
#ifndef __RADEON_DRM_H__
|
||||
|
|
@ -56,11 +57,14 @@
|
|||
#define RADEON_UPLOAD_TEX2IMAGES 0x00004000
|
||||
#define RADEON_UPLOAD_CLIPRECTS 0x00008000 /* handled client-side */
|
||||
#define RADEON_REQUIRE_QUIESCENCE 0x00010000
|
||||
#define RADEON_UPLOAD_ALL 0x0001ffff
|
||||
#define RADEON_UPLOAD_ZBIAS 0x00020000 /* version 1.2 and newer */
|
||||
#define RADEON_UPLOAD_ALL 0x0002ffff
|
||||
#define RADEON_UPLOAD_CONTEXT_ALL 0x000201ff
|
||||
|
||||
#define RADEON_FRONT 0x1
|
||||
#define RADEON_BACK 0x2
|
||||
#define RADEON_DEPTH 0x4
|
||||
#define RADEON_STENCIL 0x8
|
||||
|
||||
/* Primitive types
|
||||
*/
|
||||
|
|
@ -82,8 +86,6 @@
|
|||
|
||||
#define RADEON_SCRATCH_REG_OFFSET 32
|
||||
|
||||
/* Keep these small for testing
|
||||
*/
|
||||
#define RADEON_NR_SAREA_CLIPRECTS 12
|
||||
|
||||
/* There are 2 heaps (local/AGP). Each region within a heap is a
|
||||
|
|
@ -95,7 +97,7 @@
|
|||
#define RADEON_NR_TEX_REGIONS 64
|
||||
#define RADEON_LOG_TEX_GRANULARITY 16
|
||||
|
||||
#define RADEON_MAX_TEXTURE_LEVELS 11
|
||||
#define RADEON_MAX_TEXTURE_LEVELS 12
|
||||
#define RADEON_MAX_TEXTURE_UNITS 3
|
||||
|
||||
#endif /* __RADEON_SAREA_DEFINES__ */
|
||||
|
|
@ -155,28 +157,18 @@ typedef struct {
|
|||
/* Setup state */
|
||||
unsigned int se_cntl_status; /* 0x2140 */
|
||||
|
||||
#ifdef TCL_ENABLE
|
||||
/* TCL state */
|
||||
radeon_color_regs_t se_tcl_material_emmissive; /* 0x2210 */
|
||||
radeon_color_regs_t se_tcl_material_ambient;
|
||||
radeon_color_regs_t se_tcl_material_diffuse;
|
||||
radeon_color_regs_t se_tcl_material_specular;
|
||||
unsigned int se_tcl_shininess;
|
||||
unsigned int se_tcl_output_vtx_fmt;
|
||||
unsigned int se_tcl_output_vtx_sel;
|
||||
unsigned int se_tcl_matrix_select_0;
|
||||
unsigned int se_tcl_matrix_select_1;
|
||||
unsigned int se_tcl_ucp_vert_blend_ctl;
|
||||
unsigned int se_tcl_texture_proc_ctl;
|
||||
unsigned int se_tcl_light_model_ctl;
|
||||
unsigned int se_tcl_per_light_ctl[4];
|
||||
#endif
|
||||
|
||||
/* Misc state */
|
||||
unsigned int re_top_left; /* 0x26c0 */
|
||||
unsigned int re_misc;
|
||||
} drm_radeon_context_regs_t;
|
||||
|
||||
typedef struct {
|
||||
/* Zbias state */
|
||||
unsigned int se_zbias_factor; /* 0x1dac */
|
||||
unsigned int se_zbias_constant;
|
||||
} drm_radeon_context2_regs_t;
|
||||
|
||||
|
||||
/* Setup registers for each texture unit
|
||||
*/
|
||||
typedef struct {
|
||||
|
|
@ -186,15 +178,28 @@ typedef struct {
|
|||
unsigned int pp_txcblend;
|
||||
unsigned int pp_txablend;
|
||||
unsigned int pp_tfactor;
|
||||
|
||||
unsigned int pp_border_color;
|
||||
|
||||
#ifdef CUBIC_ENABLE
|
||||
unsigned int pp_cubic_faces;
|
||||
unsigned int pp_cubic_offset[5];
|
||||
#endif
|
||||
} drm_radeon_texture_regs_t;
|
||||
|
||||
/* Space is crucial; there is some redunancy here:
|
||||
*/
|
||||
typedef struct {
|
||||
unsigned int start;
|
||||
unsigned int finish;
|
||||
unsigned int prim:8;
|
||||
unsigned int stateidx:8;
|
||||
unsigned int numverts:16; /* overloaded as offset/64 for elt prims */
|
||||
unsigned int vc_format; /* vertex format */
|
||||
} drm_radeon_prim_t;
|
||||
|
||||
typedef struct {
|
||||
drm_radeon_context_regs_t context;
|
||||
drm_radeon_texture_regs_t tex[RADEON_MAX_TEXTURE_UNITS];
|
||||
drm_radeon_context2_regs_t context2;
|
||||
unsigned int dirty;
|
||||
} drm_radeon_state_t;
|
||||
|
||||
|
||||
typedef struct {
|
||||
unsigned char next, prev;
|
||||
unsigned char in_use;
|
||||
|
|
@ -202,8 +207,9 @@ typedef struct {
|
|||
} drm_radeon_tex_region_t;
|
||||
|
||||
typedef struct {
|
||||
/* The channel for communication of state information to the kernel
|
||||
* on firing a vertex buffer.
|
||||
/* The channel for communication of state information to the
|
||||
* kernel on firing a vertex buffer with either of the
|
||||
* obsoleted vertex/index ioctls.
|
||||
*/
|
||||
drm_radeon_context_regs_t context_state;
|
||||
drm_radeon_texture_regs_t tex_state[RADEON_MAX_TEXTURE_UNITS];
|
||||
|
|
@ -230,7 +236,29 @@ typedef struct {
|
|||
|
||||
/* WARNING: If you change any of these defines, make sure to change the
|
||||
* defines in the Xserver file (xf86drmRadeon.h)
|
||||
*
|
||||
* KW: actually it's illegal to change any of this (backwards compatibility).
|
||||
*/
|
||||
|
||||
/* Radeon specific ioctls
|
||||
* The device specific ioctl range is 0x40 to 0x79.
|
||||
*/
|
||||
#define DRM_IOCTL_RADEON_CP_INIT DRM_IOW( 0x40, drm_radeon_init_t)
|
||||
#define DRM_IOCTL_RADEON_CP_START DRM_IO( 0x41)
|
||||
#define DRM_IOCTL_RADEON_CP_STOP DRM_IOW( 0x42, drm_radeon_cp_stop_t)
|
||||
#define DRM_IOCTL_RADEON_CP_RESET DRM_IO( 0x43)
|
||||
#define DRM_IOCTL_RADEON_CP_IDLE DRM_IO( 0x44)
|
||||
#define DRM_IOCTL_RADEON_RESET DRM_IO( 0x45)
|
||||
#define DRM_IOCTL_RADEON_FULLSCREEN DRM_IOW( 0x46, drm_radeon_fullscreen_t)
|
||||
#define DRM_IOCTL_RADEON_SWAP DRM_IO( 0x47)
|
||||
#define DRM_IOCTL_RADEON_CLEAR DRM_IOW( 0x48, drm_radeon_clear_t)
|
||||
#define DRM_IOCTL_RADEON_VERTEX DRM_IOW( 0x49, drm_radeon_vertex_t)
|
||||
#define DRM_IOCTL_RADEON_INDICES DRM_IOW( 0x4a, drm_radeon_indices_t)
|
||||
#define DRM_IOCTL_RADEON_STIPPLE DRM_IOW( 0x4c, drm_radeon_stipple_t)
|
||||
#define DRM_IOCTL_RADEON_INDIRECT DRM_IOWR(0x4d, drm_radeon_indirect_t)
|
||||
#define DRM_IOCTL_RADEON_TEXTURE DRM_IOWR(0x4e, drm_radeon_texture_t)
|
||||
#define DRM_IOCTL_RADEON_VERTEX2 DRM_IOW( 0x4f, drm_radeon_vertex_t)
|
||||
|
||||
typedef struct drm_radeon_init {
|
||||
enum {
|
||||
RADEON_INIT_CP = 0x01,
|
||||
|
|
@ -285,7 +313,7 @@ typedef struct drm_radeon_clear {
|
|||
unsigned int clear_color;
|
||||
unsigned int clear_depth;
|
||||
unsigned int color_mask;
|
||||
unsigned int depth_mask;
|
||||
unsigned int depth_mask; /* misnamed field: should be stencil */
|
||||
drm_radeon_clear_rect_t *depth_boxes;
|
||||
} drm_radeon_clear_t;
|
||||
|
||||
|
|
@ -296,6 +324,15 @@ typedef struct drm_radeon_vertex {
|
|||
int discard; /* Client finished with buffer? */
|
||||
} drm_radeon_vertex_t;
|
||||
|
||||
typedef struct drm_radeon_vertex2 {
|
||||
int idx; /* Index of vertex buffer */
|
||||
int discard; /* Client finished with buffer? */
|
||||
int nr_states;
|
||||
drm_radeon_state_t *state;
|
||||
int nr_prims;
|
||||
drm_radeon_prim_t *prim;
|
||||
} drm_radeon_vertex2_t;
|
||||
|
||||
typedef struct drm_radeon_indices {
|
||||
int prim;
|
||||
int idx;
|
||||
|
|
|
|||
|
|
@ -2,6 +2,16 @@
|
|||
#ifndef _sis_drm_public_h_
|
||||
#define _sis_drm_public_h_
|
||||
|
||||
/* SiS specific ioctls */
|
||||
#define SIS_IOCTL_FB_ALLOC DRM_IOWR(0x44, drm_sis_mem_t)
|
||||
#define SIS_IOCTL_FB_FREE DRM_IOW( 0x45, drm_sis_mem_t)
|
||||
#define SIS_IOCTL_AGP_INIT DRM_IOWR(0x53, drm_sis_agp_t)
|
||||
#define SIS_IOCTL_AGP_ALLOC DRM_IOWR(0x54, drm_sis_mem_t)
|
||||
#define SIS_IOCTL_AGP_FREE DRM_IOW( 0x55, drm_sis_mem_t)
|
||||
#define SIS_IOCTL_FLIP DRM_IOW( 0x48, drm_sis_flip_t)
|
||||
#define SIS_IOCTL_FLIP_INIT DRM_IO( 0x49)
|
||||
#define SIS_IOCTL_FLIP_FINAL DRM_IO( 0x50)
|
||||
|
||||
typedef struct {
|
||||
int context;
|
||||
unsigned int offset;
|
||||
|
|
|
|||
|
|
@ -434,7 +434,7 @@ static void drmCopyVersion(drmVersionPtr d, const drm_version_t *s)
|
|||
d->desc = drmStrdup(s->desc);
|
||||
}
|
||||
|
||||
/* drmVersion obtains the version information via an ioctl. Similar
|
||||
/* drmGet Version obtains the driver version information via an ioctl. Similar
|
||||
* information is available via /proc/dri. */
|
||||
|
||||
drmVersionPtr drmGetVersion(int fd)
|
||||
|
|
@ -483,6 +483,26 @@ drmVersionPtr drmGetVersion(int fd)
|
|||
return retval;
|
||||
}
|
||||
|
||||
/* drmGetLibVersion set version information for the drm user space library.
|
||||
* this version number is driver indepedent */
|
||||
|
||||
drmVersionPtr drmGetLibVersion(int fd)
|
||||
{
|
||||
drm_version_t *version = drmMalloc(sizeof(*version));
|
||||
|
||||
/* Version history:
|
||||
* revision 1.0.x = original DRM interface with no drmGetLibVersion
|
||||
* entry point and many drm<Device> extensions
|
||||
* revision 1.1.x = added drmCommand entry points for device extensions
|
||||
* added drmGetLibVersion to identify libdrm.a version
|
||||
*/
|
||||
version->version_major = 1;
|
||||
version->version_minor = 1;
|
||||
version->version_patchlevel = 0;
|
||||
|
||||
return (drmVersionPtr)version;
|
||||
}
|
||||
|
||||
void drmFreeBusid(const char *busid)
|
||||
{
|
||||
drmFree((void *)busid);
|
||||
|
|
@ -1343,6 +1363,58 @@ int drmGetStats(int fd, drmStatsT *stats)
|
|||
return 0;
|
||||
}
|
||||
|
||||
int drmCommandNone(int fd, unsigned long drmCommandIndex)
|
||||
{
|
||||
void *data = NULL; /* dummy */
|
||||
unsigned long request;
|
||||
|
||||
request = DRM_IO( DRM_COMMAND_BASE + drmCommandIndex);
|
||||
|
||||
if (ioctl(fd, request, data)) {
|
||||
return -errno;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int drmCommandRead(int fd, unsigned long drmCommandIndex,
|
||||
void *data, unsigned long size )
|
||||
{
|
||||
unsigned long request;
|
||||
|
||||
request = DRM_IOR( DRM_COMMAND_BASE + drmCommandIndex, size);
|
||||
|
||||
if (ioctl(fd, request, data)) {
|
||||
return -errno;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int drmCommandWrite(int fd, unsigned long drmCommandIndex,
|
||||
void *data, unsigned long size )
|
||||
{
|
||||
unsigned long request;
|
||||
|
||||
request = DRM_IOW( DRM_COMMAND_BASE + drmCommandIndex, size);
|
||||
|
||||
if (ioctl(fd, request, data)) {
|
||||
return -errno;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int drmCommandWriteRead(int fd, unsigned long drmCommandIndex,
|
||||
void *data, unsigned long size )
|
||||
{
|
||||
unsigned long request;
|
||||
|
||||
request = DRM_IOWR( DRM_COMMAND_BASE + drmCommandIndex, size);
|
||||
|
||||
if (ioctl(fd, request, data)) {
|
||||
return -errno;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
#if defined(XFree86Server) || defined(DRM_USE_MALLOC)
|
||||
static void drmSIGIOHandler(int interrupt, void *closure)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -33,6 +33,8 @@
|
|||
#define __NO_VERSION__
|
||||
#include "i810.h"
|
||||
#include "drmP.h"
|
||||
#include "drm.h"
|
||||
#include "i810_drm.h"
|
||||
#include "i810_drv.h"
|
||||
#include <linux/interrupt.h> /* For task queue support */
|
||||
|
||||
|
|
|
|||
|
|
@ -168,14 +168,34 @@ typedef struct _drm_i810_sarea {
|
|||
|
||||
} drm_i810_sarea_t;
|
||||
|
||||
/* WARNING: If you change any of these defines, make sure to change the
|
||||
* defines in the Xserver file (xf86drmMga.h)
|
||||
*/
|
||||
|
||||
/* i810 specific ioctls
|
||||
* The device specific ioctl range is 0x40 to 0x79.
|
||||
*/
|
||||
#define DRM_IOCTL_I810_INIT DRM_IOW( 0x40, drm_i810_init_t)
|
||||
#define DRM_IOCTL_I810_VERTEX DRM_IOW( 0x41, drm_i810_vertex_t)
|
||||
#define DRM_IOCTL_I810_CLEAR DRM_IOW( 0x42, drm_i810_clear_t)
|
||||
#define DRM_IOCTL_I810_FLUSH DRM_IO( 0x43)
|
||||
#define DRM_IOCTL_I810_GETAGE DRM_IO( 0x44)
|
||||
#define DRM_IOCTL_I810_GETBUF DRM_IOWR(0x45, drm_i810_dma_t)
|
||||
#define DRM_IOCTL_I810_SWAP DRM_IO( 0x46)
|
||||
#define DRM_IOCTL_I810_COPY DRM_IOW( 0x47, drm_i810_copy_t)
|
||||
#define DRM_IOCTL_I810_DOCOPY DRM_IO( 0x48)
|
||||
#define DRM_IOCTL_I810_OV0INFO DRM_IOR( 0x49, drm_i810_overlay_t)
|
||||
#define DRM_IOCTL_I810_FSTATUS DRM_IO ( 0x4a)
|
||||
#define DRM_IOCTL_I810_OV0FLIP DRM_IO ( 0x4b)
|
||||
#define DRM_IOCTL_I810_MC DRM_IOW( 0x4c, drm_i810_mc_t)
|
||||
#define DRM_IOCTL_I810_RSTATUS DRM_IO ( 0x4d )
|
||||
|
||||
typedef struct _drm_i810_clear {
|
||||
int clear_color;
|
||||
int clear_depth;
|
||||
int flags;
|
||||
} drm_i810_clear_t;
|
||||
|
||||
|
||||
|
||||
/* These may be placeholders if we have more cliprects than
|
||||
* I810_NR_SAREA_CLIPRECTS. In that case, the client sets discard to
|
||||
* false, indicating that the buffer will be dispatched again with a
|
||||
|
|
|
|||
|
|
@ -33,6 +33,8 @@
|
|||
#include <linux/config.h>
|
||||
#include "i810.h"
|
||||
#include "drmP.h"
|
||||
#include "drm.h"
|
||||
#include "i810_drm.h"
|
||||
#include "i810_drv.h"
|
||||
|
||||
#define DRIVER_AUTHOR "VA Linux Systems Inc."
|
||||
|
|
|
|||
|
|
@ -34,8 +34,11 @@
|
|||
#define __NO_VERSION__
|
||||
#include "i830.h"
|
||||
#include "drmP.h"
|
||||
#include "drm.h"
|
||||
#include "i830_drm.h"
|
||||
#include "i830_drv.h"
|
||||
#include <linux/interrupt.h> /* For task queue support */
|
||||
#include <linux/delay.h>
|
||||
|
||||
/* in case we don't have a 2.3.99-pre6 kernel or later: */
|
||||
#ifndef VM_DONTCOPY
|
||||
|
|
@ -56,7 +59,6 @@
|
|||
do { \
|
||||
int _head; \
|
||||
int _tail; \
|
||||
int _i; \
|
||||
do { \
|
||||
_head = I830_READ(LP_RING + RING_HEAD) & HEAD_ADDR; \
|
||||
_tail = I830_READ(LP_RING + RING_TAIL) & TAIL_ADDR; \
|
||||
|
|
@ -367,9 +369,7 @@ static int i830_wait_ring(drm_device_t *dev, int n)
|
|||
unsigned int last_head = I830_READ(LP_RING + RING_HEAD) & HEAD_ADDR;
|
||||
|
||||
end = jiffies + (HZ*3);
|
||||
while (ring->space < n) {
|
||||
int i;
|
||||
|
||||
while (ring->space < n) {
|
||||
ring->head = I830_READ(LP_RING + RING_HEAD) & HEAD_ADDR;
|
||||
ring->space = ring->head - (ring->tail+8);
|
||||
if (ring->space < 0) ring->space += ring->Size;
|
||||
|
|
@ -385,7 +385,6 @@ static int i830_wait_ring(drm_device_t *dev, int n)
|
|||
DRM_ERROR("lockup\n");
|
||||
goto out_wait_ring;
|
||||
}
|
||||
|
||||
udelay(1);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -201,6 +201,19 @@ typedef struct _drm_i830_sarea {
|
|||
int vertex_prim;
|
||||
} drm_i830_sarea_t;
|
||||
|
||||
/* I830 specific ioctls
|
||||
* The device specific ioctl range is 0x40 to 0x79.
|
||||
*/
|
||||
#define DRM_IOCTL_I830_INIT DRM_IOW( 0x40, drm_i830_init_t)
|
||||
#define DRM_IOCTL_I830_VERTEX DRM_IOW( 0x41, drm_i830_vertex_t)
|
||||
#define DRM_IOCTL_I830_CLEAR DRM_IOW( 0x42, drm_i830_clear_t)
|
||||
#define DRM_IOCTL_I830_FLUSH DRM_IO ( 0x43)
|
||||
#define DRM_IOCTL_I830_GETAGE DRM_IO ( 0x44)
|
||||
#define DRM_IOCTL_I830_GETBUF DRM_IOWR(0x45, drm_i830_dma_t)
|
||||
#define DRM_IOCTL_I830_SWAP DRM_IO ( 0x46)
|
||||
#define DRM_IOCTL_I830_COPY DRM_IOW( 0x47, drm_i830_copy_t)
|
||||
#define DRM_IOCTL_I830_DOCOPY DRM_IO ( 0x48)
|
||||
|
||||
typedef struct _drm_i830_clear {
|
||||
int clear_color;
|
||||
int clear_depth;
|
||||
|
|
|
|||
|
|
@ -34,6 +34,8 @@
|
|||
#include <linux/config.h>
|
||||
#include "i830.h"
|
||||
#include "drmP.h"
|
||||
#include "drm.h"
|
||||
#include "i830_drm.h"
|
||||
#include "i830_drv.h"
|
||||
|
||||
#define DRIVER_AUTHOR "VA Linux Systems Inc."
|
||||
|
|
|
|||
|
|
@ -32,6 +32,8 @@
|
|||
#include <linux/config.h>
|
||||
#include "mga.h"
|
||||
#include "drmP.h"
|
||||
#include "drm.h"
|
||||
#include "mga_drm.h"
|
||||
#include "mga_drv.h"
|
||||
|
||||
#define DRIVER_AUTHOR "Gareth Hughes, VA Linux Systems Inc."
|
||||
|
|
|
|||
|
|
@ -32,6 +32,8 @@
|
|||
#include <linux/config.h>
|
||||
#include "r128.h"
|
||||
#include "drmP.h"
|
||||
#include "drm.h"
|
||||
#include "r128_drm.h"
|
||||
#include "r128_drv.h"
|
||||
#include "ati_pcigart.h"
|
||||
|
||||
|
|
|
|||
|
|
@ -30,6 +30,8 @@
|
|||
#include <linux/config.h>
|
||||
#include "radeon.h"
|
||||
#include "drmP.h"
|
||||
#include "drm.h"
|
||||
#include "radeon_drm.h"
|
||||
#include "radeon_drv.h"
|
||||
#include "ati_pcigart.h"
|
||||
|
||||
|
|
@ -37,11 +39,11 @@
|
|||
|
||||
#define DRIVER_NAME "radeon"
|
||||
#define DRIVER_DESC "ATI Radeon"
|
||||
#define DRIVER_DATE "20020521"
|
||||
#define DRIVER_DATE "20020611"
|
||||
|
||||
#define DRIVER_MAJOR 1
|
||||
#define DRIVER_MINOR 3
|
||||
#define DRIVER_PATCHLEVEL 0
|
||||
#define DRIVER_PATCHLEVEL 1
|
||||
|
||||
/* Interface history:
|
||||
*
|
||||
|
|
|
|||
102
linux/drm.h
102
linux/drm.h
|
|
@ -99,15 +99,6 @@ typedef struct drm_tex_region {
|
|||
unsigned int age;
|
||||
} drm_tex_region_t;
|
||||
|
||||
/* Seperate include files for the i810/mga/r128 specific structures */
|
||||
#include "mga_drm.h"
|
||||
#include "i810_drm.h"
|
||||
#include "r128_drm.h"
|
||||
#include "radeon_drm.h"
|
||||
#include "sis_drm.h"
|
||||
#include "i830_drm.h"
|
||||
#include "gamma_drm.h"
|
||||
|
||||
typedef struct drm_version {
|
||||
int version_major; /* Major version */
|
||||
int version_minor; /* Minor version */
|
||||
|
|
@ -428,95 +419,8 @@ typedef struct drm_scatter_gather {
|
|||
#define DRM_IOCTL_SG_ALLOC DRM_IOW( 0x38, drm_scatter_gather_t)
|
||||
#define DRM_IOCTL_SG_FREE DRM_IOW( 0x39, drm_scatter_gather_t)
|
||||
|
||||
/* MGA specific ioctls */
|
||||
#define DRM_IOCTL_MGA_INIT DRM_IOW( 0x40, drm_mga_init_t)
|
||||
#define DRM_IOCTL_MGA_FLUSH DRM_IOW( 0x41, drm_lock_t)
|
||||
#define DRM_IOCTL_MGA_RESET DRM_IO( 0x42)
|
||||
#define DRM_IOCTL_MGA_SWAP DRM_IO( 0x43)
|
||||
#define DRM_IOCTL_MGA_CLEAR DRM_IOW( 0x44, drm_mga_clear_t)
|
||||
#define DRM_IOCTL_MGA_VERTEX DRM_IOW( 0x45, drm_mga_vertex_t)
|
||||
#define DRM_IOCTL_MGA_INDICES DRM_IOW( 0x46, drm_mga_indices_t)
|
||||
#define DRM_IOCTL_MGA_ILOAD DRM_IOW( 0x47, drm_mga_iload_t)
|
||||
#define DRM_IOCTL_MGA_BLIT DRM_IOW( 0x48, drm_mga_blit_t)
|
||||
|
||||
/* i810 specific ioctls */
|
||||
#define DRM_IOCTL_I810_INIT DRM_IOW( 0x40, drm_i810_init_t)
|
||||
#define DRM_IOCTL_I810_VERTEX DRM_IOW( 0x41, drm_i810_vertex_t)
|
||||
#define DRM_IOCTL_I810_CLEAR DRM_IOW( 0x42, drm_i810_clear_t)
|
||||
#define DRM_IOCTL_I810_FLUSH DRM_IO( 0x43)
|
||||
#define DRM_IOCTL_I810_GETAGE DRM_IO( 0x44)
|
||||
#define DRM_IOCTL_I810_GETBUF DRM_IOWR(0x45, drm_i810_dma_t)
|
||||
#define DRM_IOCTL_I810_SWAP DRM_IO( 0x46)
|
||||
#define DRM_IOCTL_I810_COPY DRM_IOW( 0x47, drm_i810_copy_t)
|
||||
#define DRM_IOCTL_I810_DOCOPY DRM_IO( 0x48)
|
||||
#define DRM_IOCTL_I810_OV0INFO DRM_IOR( 0x49, drm_i810_overlay_t)
|
||||
#define DRM_IOCTL_I810_FSTATUS DRM_IO ( 0x4a)
|
||||
#define DRM_IOCTL_I810_OV0FLIP DRM_IO ( 0x4b)
|
||||
#define DRM_IOCTL_I810_MC DRM_IOW( 0x4c, drm_i810_mc_t)
|
||||
#define DRM_IOCTL_I810_RSTATUS DRM_IO ( 0x4d )
|
||||
|
||||
|
||||
/* Rage 128 specific ioctls */
|
||||
#define DRM_IOCTL_R128_INIT DRM_IOW( 0x40, drm_r128_init_t)
|
||||
#define DRM_IOCTL_R128_CCE_START DRM_IO( 0x41)
|
||||
#define DRM_IOCTL_R128_CCE_STOP DRM_IOW( 0x42, drm_r128_cce_stop_t)
|
||||
#define DRM_IOCTL_R128_CCE_RESET DRM_IO( 0x43)
|
||||
#define DRM_IOCTL_R128_CCE_IDLE DRM_IO( 0x44)
|
||||
#define DRM_IOCTL_R128_RESET DRM_IO( 0x46)
|
||||
#define DRM_IOCTL_R128_SWAP DRM_IO( 0x47)
|
||||
#define DRM_IOCTL_R128_CLEAR DRM_IOW( 0x48, drm_r128_clear_t)
|
||||
#define DRM_IOCTL_R128_VERTEX DRM_IOW( 0x49, drm_r128_vertex_t)
|
||||
#define DRM_IOCTL_R128_INDICES DRM_IOW( 0x4a, drm_r128_indices_t)
|
||||
#define DRM_IOCTL_R128_BLIT DRM_IOW( 0x4b, drm_r128_blit_t)
|
||||
#define DRM_IOCTL_R128_DEPTH DRM_IOW( 0x4c, drm_r128_depth_t)
|
||||
#define DRM_IOCTL_R128_STIPPLE DRM_IOW( 0x4d, drm_r128_stipple_t)
|
||||
#define DRM_IOCTL_R128_INDIRECT DRM_IOWR(0x4f, drm_r128_indirect_t)
|
||||
#define DRM_IOCTL_R128_FULLSCREEN DRM_IOW( 0x50, drm_r128_fullscreen_t)
|
||||
#define DRM_IOCTL_R128_CLEAR2 DRM_IOW( 0x51, drm_r128_clear2_t)
|
||||
|
||||
/* Radeon specific ioctls */
|
||||
#define DRM_IOCTL_RADEON_CP_INIT DRM_IOW( 0x40, drm_radeon_init_t)
|
||||
#define DRM_IOCTL_RADEON_CP_START DRM_IO( 0x41)
|
||||
#define DRM_IOCTL_RADEON_CP_STOP DRM_IOW( 0x42, drm_radeon_cp_stop_t)
|
||||
#define DRM_IOCTL_RADEON_CP_RESET DRM_IO( 0x43)
|
||||
#define DRM_IOCTL_RADEON_CP_IDLE DRM_IO( 0x44)
|
||||
#define DRM_IOCTL_RADEON_RESET DRM_IO( 0x45)
|
||||
#define DRM_IOCTL_RADEON_FULLSCREEN DRM_IOW( 0x46, drm_radeon_fullscreen_t)
|
||||
#define DRM_IOCTL_RADEON_SWAP DRM_IO( 0x47)
|
||||
#define DRM_IOCTL_RADEON_CLEAR DRM_IOW( 0x48, drm_radeon_clear_t)
|
||||
#define DRM_IOCTL_RADEON_VERTEX DRM_IOW( 0x49, drm_radeon_vertex_t)
|
||||
#define DRM_IOCTL_RADEON_INDICES DRM_IOW( 0x4a, drm_radeon_indices_t)
|
||||
#define DRM_IOCTL_RADEON_STIPPLE DRM_IOW( 0x4c, drm_radeon_stipple_t)
|
||||
#define DRM_IOCTL_RADEON_INDIRECT DRM_IOWR(0x4d, drm_radeon_indirect_t)
|
||||
#define DRM_IOCTL_RADEON_TEXTURE DRM_IOWR(0x4e, drm_radeon_texture_t)
|
||||
#define DRM_IOCTL_RADEON_VERTEX2 DRM_IOW( 0x4f, drm_radeon_vertex_t)
|
||||
#define DRM_IOCTL_RADEON_CMDBUF DRM_IOW( 0x50, drm_radeon_cmd_buffer_t)
|
||||
#define DRM_IOCTL_RADEON_GETPARAM DRM_IOWR(0x51, drm_radeon_getparam_t)
|
||||
#define DRM_IOCTL_RADEON_FLIP DRM_IO( 0x52)
|
||||
|
||||
/* Gamma specific ioctls */
|
||||
#define DRM_IOCTL_GAMMA_INIT DRM_IOW( 0x40, drm_gamma_init_t)
|
||||
#define DRM_IOCTL_GAMMA_COPY DRM_IOW( 0x41, drm_gamma_copy_t)
|
||||
|
||||
/* SiS specific ioctls */
|
||||
#define SIS_IOCTL_FB_ALLOC DRM_IOWR(0x44, drm_sis_mem_t)
|
||||
#define SIS_IOCTL_FB_FREE DRM_IOW( 0x45, drm_sis_mem_t)
|
||||
#define SIS_IOCTL_AGP_INIT DRM_IOWR(0x53, drm_sis_agp_t)
|
||||
#define SIS_IOCTL_AGP_ALLOC DRM_IOWR(0x54, drm_sis_mem_t)
|
||||
#define SIS_IOCTL_AGP_FREE DRM_IOW( 0x55, drm_sis_mem_t)
|
||||
#define SIS_IOCTL_FLIP DRM_IOW( 0x48, drm_sis_flip_t)
|
||||
#define SIS_IOCTL_FLIP_INIT DRM_IO( 0x49)
|
||||
#define SIS_IOCTL_FLIP_FINAL DRM_IO( 0x50)
|
||||
|
||||
/* I830 specific ioctls */
|
||||
#define DRM_IOCTL_I830_INIT DRM_IOW( 0x40, drm_i830_init_t)
|
||||
#define DRM_IOCTL_I830_VERTEX DRM_IOW( 0x41, drm_i830_vertex_t)
|
||||
#define DRM_IOCTL_I830_CLEAR DRM_IOW( 0x42, drm_i830_clear_t)
|
||||
#define DRM_IOCTL_I830_FLUSH DRM_IO ( 0x43)
|
||||
#define DRM_IOCTL_I830_GETAGE DRM_IO ( 0x44)
|
||||
#define DRM_IOCTL_I830_GETBUF DRM_IOWR(0x45, drm_i830_dma_t)
|
||||
#define DRM_IOCTL_I830_SWAP DRM_IO ( 0x46)
|
||||
#define DRM_IOCTL_I830_COPY DRM_IOW( 0x47, drm_i830_copy_t)
|
||||
#define DRM_IOCTL_I830_DOCOPY DRM_IO ( 0x48)
|
||||
/* Device specfic ioctls should only be in their respective headers
|
||||
* The device specific ioctl range is 0x40 to 0x79. */
|
||||
#define DRM_COMMAND_BASE 0x40
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -32,6 +32,8 @@
|
|||
#define __NO_VERSION__
|
||||
#include "gamma.h"
|
||||
#include "drmP.h"
|
||||
#include "drm.h"
|
||||
#include "gamma_drm.h"
|
||||
#include "gamma_drv.h"
|
||||
|
||||
#include <linux/interrupt.h> /* For task queue support */
|
||||
|
|
|
|||
|
|
@ -48,6 +48,16 @@ typedef struct _drm_gamma_sarea {
|
|||
int vertex_prim;
|
||||
} drm_gamma_sarea_t;
|
||||
|
||||
/* WARNING: If you change any of these defines, make sure to change the
|
||||
* defines in the Xserver file (xf86drmGamma.h)
|
||||
*/
|
||||
|
||||
/* Gamma specific ioctls
|
||||
* The device specific ioctl range is 0x40 to 0x79.
|
||||
*/
|
||||
#define DRM_IOCTL_GAMMA_INIT DRM_IOW( 0x40, drm_gamma_init_t)
|
||||
#define DRM_IOCTL_GAMMA_COPY DRM_IOW( 0x41, drm_gamma_copy_t)
|
||||
|
||||
typedef struct drm_gamma_copy {
|
||||
unsigned int DMAOutputAddress;
|
||||
unsigned int DMAOutputCount;
|
||||
|
|
|
|||
|
|
@ -32,6 +32,8 @@
|
|||
#include <linux/config.h>
|
||||
#include "gamma.h"
|
||||
#include "drmP.h"
|
||||
#include "drm.h"
|
||||
#include "gamma_drm.h"
|
||||
#include "gamma_drv.h"
|
||||
|
||||
#define DRIVER_AUTHOR "VA Linux Systems Inc."
|
||||
|
|
|
|||
|
|
@ -33,6 +33,8 @@
|
|||
#define __NO_VERSION__
|
||||
#include "i810.h"
|
||||
#include "drmP.h"
|
||||
#include "drm.h"
|
||||
#include "i810_drm.h"
|
||||
#include "i810_drv.h"
|
||||
#include <linux/interrupt.h> /* For task queue support */
|
||||
|
||||
|
|
|
|||
|
|
@ -168,14 +168,34 @@ typedef struct _drm_i810_sarea {
|
|||
|
||||
} drm_i810_sarea_t;
|
||||
|
||||
/* WARNING: If you change any of these defines, make sure to change the
|
||||
* defines in the Xserver file (xf86drmMga.h)
|
||||
*/
|
||||
|
||||
/* i810 specific ioctls
|
||||
* The device specific ioctl range is 0x40 to 0x79.
|
||||
*/
|
||||
#define DRM_IOCTL_I810_INIT DRM_IOW( 0x40, drm_i810_init_t)
|
||||
#define DRM_IOCTL_I810_VERTEX DRM_IOW( 0x41, drm_i810_vertex_t)
|
||||
#define DRM_IOCTL_I810_CLEAR DRM_IOW( 0x42, drm_i810_clear_t)
|
||||
#define DRM_IOCTL_I810_FLUSH DRM_IO( 0x43)
|
||||
#define DRM_IOCTL_I810_GETAGE DRM_IO( 0x44)
|
||||
#define DRM_IOCTL_I810_GETBUF DRM_IOWR(0x45, drm_i810_dma_t)
|
||||
#define DRM_IOCTL_I810_SWAP DRM_IO( 0x46)
|
||||
#define DRM_IOCTL_I810_COPY DRM_IOW( 0x47, drm_i810_copy_t)
|
||||
#define DRM_IOCTL_I810_DOCOPY DRM_IO( 0x48)
|
||||
#define DRM_IOCTL_I810_OV0INFO DRM_IOR( 0x49, drm_i810_overlay_t)
|
||||
#define DRM_IOCTL_I810_FSTATUS DRM_IO ( 0x4a)
|
||||
#define DRM_IOCTL_I810_OV0FLIP DRM_IO ( 0x4b)
|
||||
#define DRM_IOCTL_I810_MC DRM_IOW( 0x4c, drm_i810_mc_t)
|
||||
#define DRM_IOCTL_I810_RSTATUS DRM_IO ( 0x4d )
|
||||
|
||||
typedef struct _drm_i810_clear {
|
||||
int clear_color;
|
||||
int clear_depth;
|
||||
int flags;
|
||||
} drm_i810_clear_t;
|
||||
|
||||
|
||||
|
||||
/* These may be placeholders if we have more cliprects than
|
||||
* I810_NR_SAREA_CLIPRECTS. In that case, the client sets discard to
|
||||
* false, indicating that the buffer will be dispatched again with a
|
||||
|
|
|
|||
|
|
@ -33,6 +33,8 @@
|
|||
#include <linux/config.h>
|
||||
#include "i810.h"
|
||||
#include "drmP.h"
|
||||
#include "drm.h"
|
||||
#include "i810_drm.h"
|
||||
#include "i810_drv.h"
|
||||
|
||||
#define DRIVER_AUTHOR "VA Linux Systems Inc."
|
||||
|
|
|
|||
|
|
@ -34,8 +34,11 @@
|
|||
#define __NO_VERSION__
|
||||
#include "i830.h"
|
||||
#include "drmP.h"
|
||||
#include "drm.h"
|
||||
#include "i830_drm.h"
|
||||
#include "i830_drv.h"
|
||||
#include <linux/interrupt.h> /* For task queue support */
|
||||
#include <linux/delay.h>
|
||||
|
||||
/* in case we don't have a 2.3.99-pre6 kernel or later: */
|
||||
#ifndef VM_DONTCOPY
|
||||
|
|
@ -56,7 +59,6 @@
|
|||
do { \
|
||||
int _head; \
|
||||
int _tail; \
|
||||
int _i; \
|
||||
do { \
|
||||
_head = I830_READ(LP_RING + RING_HEAD) & HEAD_ADDR; \
|
||||
_tail = I830_READ(LP_RING + RING_TAIL) & TAIL_ADDR; \
|
||||
|
|
@ -367,9 +369,7 @@ static int i830_wait_ring(drm_device_t *dev, int n)
|
|||
unsigned int last_head = I830_READ(LP_RING + RING_HEAD) & HEAD_ADDR;
|
||||
|
||||
end = jiffies + (HZ*3);
|
||||
while (ring->space < n) {
|
||||
int i;
|
||||
|
||||
while (ring->space < n) {
|
||||
ring->head = I830_READ(LP_RING + RING_HEAD) & HEAD_ADDR;
|
||||
ring->space = ring->head - (ring->tail+8);
|
||||
if (ring->space < 0) ring->space += ring->Size;
|
||||
|
|
@ -385,7 +385,6 @@ static int i830_wait_ring(drm_device_t *dev, int n)
|
|||
DRM_ERROR("lockup\n");
|
||||
goto out_wait_ring;
|
||||
}
|
||||
|
||||
udelay(1);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -201,6 +201,19 @@ typedef struct _drm_i830_sarea {
|
|||
int vertex_prim;
|
||||
} drm_i830_sarea_t;
|
||||
|
||||
/* I830 specific ioctls
|
||||
* The device specific ioctl range is 0x40 to 0x79.
|
||||
*/
|
||||
#define DRM_IOCTL_I830_INIT DRM_IOW( 0x40, drm_i830_init_t)
|
||||
#define DRM_IOCTL_I830_VERTEX DRM_IOW( 0x41, drm_i830_vertex_t)
|
||||
#define DRM_IOCTL_I830_CLEAR DRM_IOW( 0x42, drm_i830_clear_t)
|
||||
#define DRM_IOCTL_I830_FLUSH DRM_IO ( 0x43)
|
||||
#define DRM_IOCTL_I830_GETAGE DRM_IO ( 0x44)
|
||||
#define DRM_IOCTL_I830_GETBUF DRM_IOWR(0x45, drm_i830_dma_t)
|
||||
#define DRM_IOCTL_I830_SWAP DRM_IO ( 0x46)
|
||||
#define DRM_IOCTL_I830_COPY DRM_IOW( 0x47, drm_i830_copy_t)
|
||||
#define DRM_IOCTL_I830_DOCOPY DRM_IO ( 0x48)
|
||||
|
||||
typedef struct _drm_i830_clear {
|
||||
int clear_color;
|
||||
int clear_depth;
|
||||
|
|
|
|||
|
|
@ -34,6 +34,8 @@
|
|||
#include <linux/config.h>
|
||||
#include "i830.h"
|
||||
#include "drmP.h"
|
||||
#include "drm.h"
|
||||
#include "i830_drm.h"
|
||||
#include "i830_drv.h"
|
||||
|
||||
#define DRIVER_AUTHOR "VA Linux Systems Inc."
|
||||
|
|
|
|||
|
|
@ -36,6 +36,8 @@
|
|||
#define __NO_VERSION__
|
||||
#include "mga.h"
|
||||
#include "drmP.h"
|
||||
#include "drm.h"
|
||||
#include "mga_drm.h"
|
||||
#include "mga_drv.h"
|
||||
|
||||
#include <linux/interrupt.h> /* For task queue support */
|
||||
|
|
|
|||
|
|
@ -38,6 +38,7 @@
|
|||
/* WARNING: If you change any of these defines, make sure to change the
|
||||
* defines in the Xserver file (mga_sarea.h)
|
||||
*/
|
||||
|
||||
#ifndef __MGA_SAREA_DEFINES__
|
||||
#define __MGA_SAREA_DEFINES__
|
||||
|
||||
|
|
@ -225,6 +226,20 @@ typedef struct _drm_mga_sarea {
|
|||
/* WARNING: If you change any of these defines, make sure to change the
|
||||
* defines in the Xserver file (xf86drmMga.h)
|
||||
*/
|
||||
|
||||
/* MGA specific ioctls
|
||||
* The device specific ioctl range is 0x40 to 0x79.
|
||||
*/
|
||||
#define DRM_IOCTL_MGA_INIT DRM_IOW( 0x40, drm_mga_init_t)
|
||||
#define DRM_IOCTL_MGA_FLUSH DRM_IOW( 0x41, drm_lock_t)
|
||||
#define DRM_IOCTL_MGA_RESET DRM_IO( 0x42)
|
||||
#define DRM_IOCTL_MGA_SWAP DRM_IO( 0x43)
|
||||
#define DRM_IOCTL_MGA_CLEAR DRM_IOW( 0x44, drm_mga_clear_t)
|
||||
#define DRM_IOCTL_MGA_VERTEX DRM_IOW( 0x45, drm_mga_vertex_t)
|
||||
#define DRM_IOCTL_MGA_INDICES DRM_IOW( 0x46, drm_mga_indices_t)
|
||||
#define DRM_IOCTL_MGA_ILOAD DRM_IOW( 0x47, drm_mga_iload_t)
|
||||
#define DRM_IOCTL_MGA_BLIT DRM_IOW( 0x48, drm_mga_blit_t)
|
||||
|
||||
typedef struct _drm_mga_warp_index {
|
||||
int installed;
|
||||
unsigned long phys_addr;
|
||||
|
|
|
|||
|
|
@ -32,6 +32,8 @@
|
|||
#include <linux/config.h>
|
||||
#include "mga.h"
|
||||
#include "drmP.h"
|
||||
#include "drm.h"
|
||||
#include "mga_drm.h"
|
||||
#include "mga_drv.h"
|
||||
|
||||
#define DRIVER_AUTHOR "Gareth Hughes, VA Linux Systems Inc."
|
||||
|
|
|
|||
|
|
@ -35,6 +35,8 @@
|
|||
#define __NO_VERSION__
|
||||
#include "mga.h"
|
||||
#include "drmP.h"
|
||||
#include "drm.h"
|
||||
#include "mga_drm.h"
|
||||
#include "mga_drv.h"
|
||||
#include "drm.h"
|
||||
|
||||
|
|
|
|||
|
|
@ -30,6 +30,8 @@
|
|||
#define __NO_VERSION__
|
||||
#include "mga.h"
|
||||
#include "drmP.h"
|
||||
#include "drm.h"
|
||||
#include "mga_drm.h"
|
||||
#include "mga_drv.h"
|
||||
#include "mga_ucode.h"
|
||||
|
||||
|
|
|
|||
|
|
@ -31,6 +31,8 @@
|
|||
#define __NO_VERSION__
|
||||
#include "r128.h"
|
||||
#include "drmP.h"
|
||||
#include "drm.h"
|
||||
#include "r128_drm.h"
|
||||
#include "r128_drv.h"
|
||||
|
||||
#include <linux/interrupt.h> /* For task queue support */
|
||||
|
|
|
|||
|
|
@ -170,6 +170,27 @@ typedef struct drm_r128_sarea {
|
|||
/* WARNING: If you change any of these defines, make sure to change the
|
||||
* defines in the Xserver file (xf86drmR128.h)
|
||||
*/
|
||||
|
||||
/* Rage 128 specific ioctls
|
||||
* The device specific ioctl range is 0x40 to 0x79.
|
||||
*/
|
||||
#define DRM_IOCTL_R128_INIT DRM_IOW( 0x40, drm_r128_init_t)
|
||||
#define DRM_IOCTL_R128_CCE_START DRM_IO( 0x41)
|
||||
#define DRM_IOCTL_R128_CCE_STOP DRM_IOW( 0x42, drm_r128_cce_stop_t)
|
||||
#define DRM_IOCTL_R128_CCE_RESET DRM_IO( 0x43)
|
||||
#define DRM_IOCTL_R128_CCE_IDLE DRM_IO( 0x44)
|
||||
#define DRM_IOCTL_R128_RESET DRM_IO( 0x46)
|
||||
#define DRM_IOCTL_R128_SWAP DRM_IO( 0x47)
|
||||
#define DRM_IOCTL_R128_CLEAR DRM_IOW( 0x48, drm_r128_clear_t)
|
||||
#define DRM_IOCTL_R128_VERTEX DRM_IOW( 0x49, drm_r128_vertex_t)
|
||||
#define DRM_IOCTL_R128_INDICES DRM_IOW( 0x4a, drm_r128_indices_t)
|
||||
#define DRM_IOCTL_R128_BLIT DRM_IOW( 0x4b, drm_r128_blit_t)
|
||||
#define DRM_IOCTL_R128_DEPTH DRM_IOW( 0x4c, drm_r128_depth_t)
|
||||
#define DRM_IOCTL_R128_STIPPLE DRM_IOW( 0x4d, drm_r128_stipple_t)
|
||||
#define DRM_IOCTL_R128_INDIRECT DRM_IOWR(0x4f, drm_r128_indirect_t)
|
||||
#define DRM_IOCTL_R128_FULLSCREEN DRM_IOW( 0x50, drm_r128_fullscreen_t)
|
||||
#define DRM_IOCTL_R128_CLEAR2 DRM_IOW( 0x51, drm_r128_clear2_t)
|
||||
|
||||
typedef struct drm_r128_init {
|
||||
enum {
|
||||
R128_INIT_CCE = 0x01,
|
||||
|
|
|
|||
|
|
@ -32,6 +32,8 @@
|
|||
#include <linux/config.h>
|
||||
#include "r128.h"
|
||||
#include "drmP.h"
|
||||
#include "drm.h"
|
||||
#include "r128_drm.h"
|
||||
#include "r128_drv.h"
|
||||
#include "ati_pcigart.h"
|
||||
|
||||
|
|
|
|||
|
|
@ -34,8 +34,8 @@
|
|||
#ifndef __R128_DRV_H__
|
||||
#define __R128_DRV_H__
|
||||
|
||||
#define GET_RING_HEAD( ring ) le32_to_cpu( *(ring)->head )
|
||||
#define SET_RING_HEAD( ring, val ) *(ring)->head = cpu_to_le32( val )
|
||||
#define GET_RING_HEAD(ring) readl( (volatile u32 *) (ring)->head )
|
||||
#define SET_RING_HEAD(ring,val) writel( (val), (volatile u32 *) (ring)->head )
|
||||
|
||||
typedef struct drm_r128_freelist {
|
||||
unsigned int age;
|
||||
|
|
@ -384,44 +384,11 @@ extern int r128_cce_indirect( struct inode *inode, struct file *filp,
|
|||
#define R128_BASE(reg) ((unsigned long)(dev_priv->mmio->handle))
|
||||
#define R128_ADDR(reg) (R128_BASE( reg ) + reg)
|
||||
|
||||
#define R128_DEREF(reg) *(volatile u32 *)R128_ADDR( reg )
|
||||
#ifdef __alpha__
|
||||
#define R128_READ(reg) (_R128_READ((u32 *)R128_ADDR(reg)))
|
||||
static inline u32 _R128_READ(u32 *addr)
|
||||
{
|
||||
mb();
|
||||
return *(volatile u32 *)addr;
|
||||
}
|
||||
#define R128_WRITE(reg,val) \
|
||||
do { \
|
||||
wmb(); \
|
||||
R128_DEREF(reg) = val; \
|
||||
} while (0)
|
||||
#else
|
||||
#define R128_READ(reg) le32_to_cpu( R128_DEREF( reg ) )
|
||||
#define R128_WRITE(reg,val) \
|
||||
do { \
|
||||
R128_DEREF( reg ) = cpu_to_le32( val ); \
|
||||
} while (0)
|
||||
#endif
|
||||
#define R128_READ(reg) readl( (volatile u32 *) R128_ADDR(reg) )
|
||||
#define R128_WRITE(reg,val) writel( (val), (volatile u32 *) R128_ADDR(reg) )
|
||||
|
||||
#define R128_DEREF8(reg) *(volatile u8 *)R128_ADDR( reg )
|
||||
#ifdef __alpha__
|
||||
#define R128_READ8(reg) _R128_READ8((u8 *)R128_ADDR(reg))
|
||||
static inline u8 _R128_READ8(u8 *addr)
|
||||
{
|
||||
mb();
|
||||
return *(volatile u8 *)addr;
|
||||
}
|
||||
#define R128_WRITE8(reg,val) \
|
||||
do { \
|
||||
wmb(); \
|
||||
R128_DEREF8(reg) = val; \
|
||||
} while (0)
|
||||
#else
|
||||
#define R128_READ8(reg) R128_DEREF8( reg )
|
||||
#define R128_WRITE8(reg,val) do { R128_DEREF8( reg ) = val; } while (0)
|
||||
#endif
|
||||
#define R128_READ8(reg) readb( (volatile u8 *) R128_ADDR(reg) )
|
||||
#define R128_WRITE8(reg,val) writeb( (val), (volatile u8 *) R128_ADDR(reg) )
|
||||
|
||||
#define R128_WRITE_PLL(addr,val) \
|
||||
do { \
|
||||
|
|
@ -493,7 +460,11 @@ do { \
|
|||
* Ring control
|
||||
*/
|
||||
|
||||
#if defined(__powerpc__)
|
||||
#define r128_flush_write_combine() (void) GET_RING_HEAD( &dev_priv->ring )
|
||||
#else
|
||||
#define r128_flush_write_combine() mb()
|
||||
#endif
|
||||
|
||||
|
||||
#define R128_VERBOSE 0
|
||||
|
|
|
|||
|
|
@ -30,6 +30,8 @@
|
|||
#define __NO_VERSION__
|
||||
#include "r128.h"
|
||||
#include "drmP.h"
|
||||
#include "drm.h"
|
||||
#include "r128_drm.h"
|
||||
#include "r128_drv.h"
|
||||
#include "drm.h"
|
||||
#include <linux/delay.h>
|
||||
|
|
|
|||
|
|
@ -31,6 +31,8 @@
|
|||
#define __NO_VERSION__
|
||||
#include "radeon.h"
|
||||
#include "drmP.h"
|
||||
#include "drm.h"
|
||||
#include "radeon_drm.h"
|
||||
#include "radeon_drv.h"
|
||||
|
||||
#include <linux/interrupt.h> /* For task queue support */
|
||||
|
|
@ -38,7 +40,7 @@
|
|||
|
||||
#define RADEON_FIFO_DEBUG 0
|
||||
|
||||
#if defined(__alpha__)
|
||||
#if defined(__alpha__) || defined(__powerpc__)
|
||||
# define PCIGART_ENABLED
|
||||
#else
|
||||
# undef PCIGART_ENABLED
|
||||
|
|
@ -631,7 +633,11 @@ static void radeon_cp_init_ring_buffer( drm_device_t *dev,
|
|||
}
|
||||
|
||||
/* Set ring buffer size */
|
||||
#ifdef __BIG_ENDIAN
|
||||
RADEON_WRITE( RADEON_CP_RB_CNTL, dev_priv->ring.size_l2qw | RADEON_BUF_SWAP_32BIT );
|
||||
#else
|
||||
RADEON_WRITE( RADEON_CP_RB_CNTL, dev_priv->ring.size_l2qw );
|
||||
#endif
|
||||
|
||||
radeon_do_wait_for_idle( dev_priv );
|
||||
|
||||
|
|
|
|||
|
|
@ -301,6 +301,29 @@ typedef struct {
|
|||
*
|
||||
* KW: actually it's illegal to change any of this (backwards compatibility).
|
||||
*/
|
||||
|
||||
/* Radeon specific ioctls
|
||||
* The device specific ioctl range is 0x40 to 0x79.
|
||||
*/
|
||||
#define DRM_IOCTL_RADEON_CP_INIT DRM_IOW( 0x40, drm_radeon_init_t)
|
||||
#define DRM_IOCTL_RADEON_CP_START DRM_IO( 0x41)
|
||||
#define DRM_IOCTL_RADEON_CP_STOP DRM_IOW( 0x42, drm_radeon_cp_stop_t)
|
||||
#define DRM_IOCTL_RADEON_CP_RESET DRM_IO( 0x43)
|
||||
#define DRM_IOCTL_RADEON_CP_IDLE DRM_IO( 0x44)
|
||||
#define DRM_IOCTL_RADEON_RESET DRM_IO( 0x45)
|
||||
#define DRM_IOCTL_RADEON_FULLSCREEN DRM_IOW( 0x46, drm_radeon_fullscreen_t)
|
||||
#define DRM_IOCTL_RADEON_SWAP DRM_IO( 0x47)
|
||||
#define DRM_IOCTL_RADEON_CLEAR DRM_IOW( 0x48, drm_radeon_clear_t)
|
||||
#define DRM_IOCTL_RADEON_VERTEX DRM_IOW( 0x49, drm_radeon_vertex_t)
|
||||
#define DRM_IOCTL_RADEON_INDICES DRM_IOW( 0x4a, drm_radeon_indices_t)
|
||||
#define DRM_IOCTL_RADEON_STIPPLE DRM_IOW( 0x4c, drm_radeon_stipple_t)
|
||||
#define DRM_IOCTL_RADEON_INDIRECT DRM_IOWR(0x4d, drm_radeon_indirect_t)
|
||||
#define DRM_IOCTL_RADEON_TEXTURE DRM_IOWR(0x4e, drm_radeon_texture_t)
|
||||
#define DRM_IOCTL_RADEON_VERTEX2 DRM_IOW( 0x4f, drm_radeon_vertex_t)
|
||||
#define DRM_IOCTL_RADEON_CMDBUF DRM_IOW( 0x50, drm_radeon_cmd_buffer_t)
|
||||
#define DRM_IOCTL_RADEON_GETPARAM DRM_IOWR(0x51, drm_radeon_getparam_t)
|
||||
#define DRM_IOCTL_RADEON_FLIP DRM_IO( 0x52)
|
||||
|
||||
typedef struct drm_radeon_init {
|
||||
enum {
|
||||
RADEON_INIT_CP = 0x01,
|
||||
|
|
|
|||
|
|
@ -30,6 +30,8 @@
|
|||
#include <linux/config.h>
|
||||
#include "radeon.h"
|
||||
#include "drmP.h"
|
||||
#include "drm.h"
|
||||
#include "radeon_drm.h"
|
||||
#include "radeon_drv.h"
|
||||
#include "ati_pcigart.h"
|
||||
|
||||
|
|
@ -37,11 +39,11 @@
|
|||
|
||||
#define DRIVER_NAME "radeon"
|
||||
#define DRIVER_DESC "ATI Radeon"
|
||||
#define DRIVER_DATE "20020521"
|
||||
#define DRIVER_DATE "20020611"
|
||||
|
||||
#define DRIVER_MAJOR 1
|
||||
#define DRIVER_MINOR 3
|
||||
#define DRIVER_PATCHLEVEL 0
|
||||
#define DRIVER_PATCHLEVEL 1
|
||||
|
||||
/* Interface history:
|
||||
*
|
||||
|
|
|
|||
|
|
@ -31,6 +31,9 @@
|
|||
#ifndef __RADEON_DRV_H__
|
||||
#define __RADEON_DRV_H__
|
||||
|
||||
#define GET_RING_HEAD(ring) readl( (volatile u32 *) (ring)->head )
|
||||
#define SET_RING_HEAD(ring,val) writel( (val), (volatile u32 *) (ring)->head )
|
||||
|
||||
typedef struct drm_radeon_freelist {
|
||||
unsigned int age;
|
||||
drm_buf_t *buf;
|
||||
|
|
@ -141,7 +144,7 @@ extern int radeon_wait_ring( drm_radeon_private_t *dev_priv, int n );
|
|||
static inline void
|
||||
radeon_update_ring_snapshot( drm_radeon_ring_buffer_t *ring )
|
||||
{
|
||||
ring->space = (*(volatile int *)ring->head - ring->tail) * sizeof(u32);
|
||||
ring->space = (GET_RING_HEAD(ring) - ring->tail) * sizeof(u32);
|
||||
if ( ring->space <= 0 )
|
||||
ring->space += ring->size;
|
||||
}
|
||||
|
|
@ -249,6 +252,12 @@ extern int radeon_cp_flip( struct inode *inode, struct file *filp,
|
|||
# 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)
|
||||
# define RADEON_HOST_DATA_SWAP_HDW (3 << 0)
|
||||
|
||||
#define RADEON_MC_AGP_LOCATION 0x014c
|
||||
#define RADEON_MC_FB_LOCATION 0x0148
|
||||
#define RADEON_MCLK_CNTL 0x0012
|
||||
|
|
@ -424,6 +433,7 @@ extern int radeon_cp_flip( struct inode *inode, struct file *filp,
|
|||
|
||||
#define RADEON_CP_RB_BASE 0x0700
|
||||
#define RADEON_CP_RB_CNTL 0x0704
|
||||
# define RADEON_BUF_SWAP_32BIT (2 << 16)
|
||||
#define RADEON_CP_RB_RPTR_ADDR 0x070c
|
||||
#define RADEON_CP_RB_RPTR 0x0710
|
||||
#define RADEON_CP_RB_WPTR 0x0714
|
||||
|
|
@ -533,41 +543,11 @@ extern int radeon_cp_flip( struct inode *inode, struct file *filp,
|
|||
#define RADEON_BASE(reg) ((unsigned long)(dev_priv->mmio->handle))
|
||||
#define RADEON_ADDR(reg) (RADEON_BASE( reg ) + reg)
|
||||
|
||||
#define RADEON_DEREF(reg) *(volatile u32 *)RADEON_ADDR( reg )
|
||||
#ifdef __alpha__
|
||||
#define RADEON_READ(reg) (_RADEON_READ((u32 *)RADEON_ADDR( reg )))
|
||||
static inline u32 _RADEON_READ(u32 *addr)
|
||||
{
|
||||
mb();
|
||||
return *(volatile u32 *)addr;
|
||||
}
|
||||
#define RADEON_WRITE(reg,val) \
|
||||
do { \
|
||||
wmb(); \
|
||||
RADEON_DEREF(reg) = val; \
|
||||
} while (0)
|
||||
#else
|
||||
#define RADEON_READ(reg) RADEON_DEREF( reg )
|
||||
#define RADEON_WRITE(reg, val) do { RADEON_DEREF( reg ) = val; } while (0)
|
||||
#endif
|
||||
#define RADEON_READ(reg) readl( (volatile u32 *) RADEON_ADDR(reg) )
|
||||
#define RADEON_WRITE(reg,val) writel( (val), (volatile u32 *) RADEON_ADDR(reg) )
|
||||
|
||||
#define RADEON_DEREF8(reg) *(volatile u8 *)RADEON_ADDR( reg )
|
||||
#ifdef __alpha__
|
||||
#define RADEON_READ8(reg) _RADEON_READ8((u8 *)RADEON_ADDR( reg ))
|
||||
static inline u8 _RADEON_READ8(u8 *addr)
|
||||
{
|
||||
mb();
|
||||
return *(volatile u8 *)addr;
|
||||
}
|
||||
#define RADEON_WRITE8(reg,val) \
|
||||
do { \
|
||||
wmb(); \
|
||||
RADEON_DEREF8( reg ) = val; \
|
||||
} while (0)
|
||||
#else
|
||||
#define RADEON_READ8(reg) RADEON_DEREF8( reg )
|
||||
#define RADEON_WRITE8(reg, val) do { RADEON_DEREF8( reg ) = val; } while (0)
|
||||
#endif
|
||||
#define RADEON_READ8(reg) readb( (volatile u8 *) RADEON_ADDR(reg) )
|
||||
#define RADEON_WRITE8(reg,val) writeb( (val), (volatile u8 *) RADEON_ADDR(reg) )
|
||||
|
||||
#define RADEON_WRITE_PLL( addr, val ) \
|
||||
do { \
|
||||
|
|
@ -664,6 +644,15 @@ do { \
|
|||
goto __ring_space_done; \
|
||||
udelay( 1 ); \
|
||||
} \
|
||||
DRM_ERROR( "ring space check from memory failed, reading register...\n" ); \
|
||||
/* If ring space check fails from RAM, try reading the \
|
||||
register directly */ \
|
||||
ring->space = 4 * ( RADEON_READ( RADEON_CP_RB_RPTR ) - ring->tail ); \
|
||||
if ( ring->space <= 0 ) \
|
||||
ring->space += ring->size; \
|
||||
if ( ring->space >= ring->high_mark ) \
|
||||
goto __ring_space_done; \
|
||||
\
|
||||
DRM_ERROR( "ring space check failed!\n" ); \
|
||||
return -EBUSY; \
|
||||
} \
|
||||
|
|
@ -701,7 +690,11 @@ do { \
|
|||
* Ring control
|
||||
*/
|
||||
|
||||
#if defined(__powerpc__)
|
||||
#define radeon_flush_write_combine() (void) GET_RING_HEAD( &dev_priv->ring )
|
||||
#else
|
||||
#define radeon_flush_write_combine() mb()
|
||||
#endif
|
||||
|
||||
|
||||
#define RADEON_VERBOSE 0
|
||||
|
|
|
|||
|
|
@ -30,8 +30,9 @@
|
|||
#define __NO_VERSION__
|
||||
#include "radeon.h"
|
||||
#include "drmP.h"
|
||||
#include "radeon_drv.h"
|
||||
#include "drm.h"
|
||||
#include "radeon_drm.h"
|
||||
#include "radeon_drv.h"
|
||||
#include <linux/delay.h>
|
||||
|
||||
|
||||
|
|
@ -669,7 +670,6 @@ static void radeon_cp_dispatch_vertex( drm_device_t *dev,
|
|||
int i = 0;
|
||||
RING_LOCALS;
|
||||
|
||||
|
||||
DRM_DEBUG("%s: hwprim 0x%x vfmt 0x%x %d..%d %d verts\n",
|
||||
__FUNCTION__,
|
||||
prim->prim,
|
||||
|
|
@ -684,7 +684,6 @@ static void radeon_cp_dispatch_vertex( drm_device_t *dev,
|
|||
return;
|
||||
}
|
||||
|
||||
|
||||
do {
|
||||
/* Emit the next cliprect */
|
||||
if ( i < nbox ) {
|
||||
|
|
@ -906,6 +905,16 @@ static int radeon_cp_dispatch_texture( drm_device_t *dev,
|
|||
|
||||
ADVANCE_RING();
|
||||
|
||||
#ifdef __BIG_ENDIAN
|
||||
/* The Mesa texture functions provide the data in little endian as the
|
||||
* chip wants it, but we need to compensate for the fact that the CP
|
||||
* ring gets byte-swapped
|
||||
*/
|
||||
BEGIN_RING( 2 );
|
||||
OUT_RING_REG( RADEON_RBBM_GUICNTL, RADEON_HOST_DATA_SWAP_32BIT );
|
||||
ADVANCE_RING();
|
||||
#endif
|
||||
|
||||
/* Make a copy of the parameters in case we have to update them
|
||||
* for a multi-pass texture blit.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -2,6 +2,16 @@
|
|||
#ifndef _sis_drm_public_h_
|
||||
#define _sis_drm_public_h_
|
||||
|
||||
/* SiS specific ioctls */
|
||||
#define SIS_IOCTL_FB_ALLOC DRM_IOWR(0x44, drm_sis_mem_t)
|
||||
#define SIS_IOCTL_FB_FREE DRM_IOW( 0x45, drm_sis_mem_t)
|
||||
#define SIS_IOCTL_AGP_INIT DRM_IOWR(0x53, drm_sis_agp_t)
|
||||
#define SIS_IOCTL_AGP_ALLOC DRM_IOWR(0x54, drm_sis_mem_t)
|
||||
#define SIS_IOCTL_AGP_FREE DRM_IOW( 0x55, drm_sis_mem_t)
|
||||
#define SIS_IOCTL_FLIP DRM_IOW( 0x48, drm_sis_flip_t)
|
||||
#define SIS_IOCTL_FLIP_INIT DRM_IO( 0x49)
|
||||
#define SIS_IOCTL_FLIP_FINAL DRM_IO( 0x50)
|
||||
|
||||
typedef struct {
|
||||
int context;
|
||||
unsigned int offset;
|
||||
|
|
|
|||
|
|
@ -99,15 +99,6 @@ typedef struct drm_tex_region {
|
|||
unsigned int age;
|
||||
} drm_tex_region_t;
|
||||
|
||||
/* Seperate include files for the i810/mga/r128 specific structures */
|
||||
#include "mga_drm.h"
|
||||
#include "i810_drm.h"
|
||||
#include "r128_drm.h"
|
||||
#include "radeon_drm.h"
|
||||
#include "sis_drm.h"
|
||||
#include "i830_drm.h"
|
||||
#include "gamma_drm.h"
|
||||
|
||||
typedef struct drm_version {
|
||||
int version_major; /* Major version */
|
||||
int version_minor; /* Minor version */
|
||||
|
|
@ -428,95 +419,8 @@ typedef struct drm_scatter_gather {
|
|||
#define DRM_IOCTL_SG_ALLOC DRM_IOW( 0x38, drm_scatter_gather_t)
|
||||
#define DRM_IOCTL_SG_FREE DRM_IOW( 0x39, drm_scatter_gather_t)
|
||||
|
||||
/* MGA specific ioctls */
|
||||
#define DRM_IOCTL_MGA_INIT DRM_IOW( 0x40, drm_mga_init_t)
|
||||
#define DRM_IOCTL_MGA_FLUSH DRM_IOW( 0x41, drm_lock_t)
|
||||
#define DRM_IOCTL_MGA_RESET DRM_IO( 0x42)
|
||||
#define DRM_IOCTL_MGA_SWAP DRM_IO( 0x43)
|
||||
#define DRM_IOCTL_MGA_CLEAR DRM_IOW( 0x44, drm_mga_clear_t)
|
||||
#define DRM_IOCTL_MGA_VERTEX DRM_IOW( 0x45, drm_mga_vertex_t)
|
||||
#define DRM_IOCTL_MGA_INDICES DRM_IOW( 0x46, drm_mga_indices_t)
|
||||
#define DRM_IOCTL_MGA_ILOAD DRM_IOW( 0x47, drm_mga_iload_t)
|
||||
#define DRM_IOCTL_MGA_BLIT DRM_IOW( 0x48, drm_mga_blit_t)
|
||||
|
||||
/* i810 specific ioctls */
|
||||
#define DRM_IOCTL_I810_INIT DRM_IOW( 0x40, drm_i810_init_t)
|
||||
#define DRM_IOCTL_I810_VERTEX DRM_IOW( 0x41, drm_i810_vertex_t)
|
||||
#define DRM_IOCTL_I810_CLEAR DRM_IOW( 0x42, drm_i810_clear_t)
|
||||
#define DRM_IOCTL_I810_FLUSH DRM_IO( 0x43)
|
||||
#define DRM_IOCTL_I810_GETAGE DRM_IO( 0x44)
|
||||
#define DRM_IOCTL_I810_GETBUF DRM_IOWR(0x45, drm_i810_dma_t)
|
||||
#define DRM_IOCTL_I810_SWAP DRM_IO( 0x46)
|
||||
#define DRM_IOCTL_I810_COPY DRM_IOW( 0x47, drm_i810_copy_t)
|
||||
#define DRM_IOCTL_I810_DOCOPY DRM_IO( 0x48)
|
||||
#define DRM_IOCTL_I810_OV0INFO DRM_IOR( 0x49, drm_i810_overlay_t)
|
||||
#define DRM_IOCTL_I810_FSTATUS DRM_IO ( 0x4a)
|
||||
#define DRM_IOCTL_I810_OV0FLIP DRM_IO ( 0x4b)
|
||||
#define DRM_IOCTL_I810_MC DRM_IOW( 0x4c, drm_i810_mc_t)
|
||||
#define DRM_IOCTL_I810_RSTATUS DRM_IO ( 0x4d )
|
||||
|
||||
|
||||
/* Rage 128 specific ioctls */
|
||||
#define DRM_IOCTL_R128_INIT DRM_IOW( 0x40, drm_r128_init_t)
|
||||
#define DRM_IOCTL_R128_CCE_START DRM_IO( 0x41)
|
||||
#define DRM_IOCTL_R128_CCE_STOP DRM_IOW( 0x42, drm_r128_cce_stop_t)
|
||||
#define DRM_IOCTL_R128_CCE_RESET DRM_IO( 0x43)
|
||||
#define DRM_IOCTL_R128_CCE_IDLE DRM_IO( 0x44)
|
||||
#define DRM_IOCTL_R128_RESET DRM_IO( 0x46)
|
||||
#define DRM_IOCTL_R128_SWAP DRM_IO( 0x47)
|
||||
#define DRM_IOCTL_R128_CLEAR DRM_IOW( 0x48, drm_r128_clear_t)
|
||||
#define DRM_IOCTL_R128_VERTEX DRM_IOW( 0x49, drm_r128_vertex_t)
|
||||
#define DRM_IOCTL_R128_INDICES DRM_IOW( 0x4a, drm_r128_indices_t)
|
||||
#define DRM_IOCTL_R128_BLIT DRM_IOW( 0x4b, drm_r128_blit_t)
|
||||
#define DRM_IOCTL_R128_DEPTH DRM_IOW( 0x4c, drm_r128_depth_t)
|
||||
#define DRM_IOCTL_R128_STIPPLE DRM_IOW( 0x4d, drm_r128_stipple_t)
|
||||
#define DRM_IOCTL_R128_INDIRECT DRM_IOWR(0x4f, drm_r128_indirect_t)
|
||||
#define DRM_IOCTL_R128_FULLSCREEN DRM_IOW( 0x50, drm_r128_fullscreen_t)
|
||||
#define DRM_IOCTL_R128_CLEAR2 DRM_IOW( 0x51, drm_r128_clear2_t)
|
||||
|
||||
/* Radeon specific ioctls */
|
||||
#define DRM_IOCTL_RADEON_CP_INIT DRM_IOW( 0x40, drm_radeon_init_t)
|
||||
#define DRM_IOCTL_RADEON_CP_START DRM_IO( 0x41)
|
||||
#define DRM_IOCTL_RADEON_CP_STOP DRM_IOW( 0x42, drm_radeon_cp_stop_t)
|
||||
#define DRM_IOCTL_RADEON_CP_RESET DRM_IO( 0x43)
|
||||
#define DRM_IOCTL_RADEON_CP_IDLE DRM_IO( 0x44)
|
||||
#define DRM_IOCTL_RADEON_RESET DRM_IO( 0x45)
|
||||
#define DRM_IOCTL_RADEON_FULLSCREEN DRM_IOW( 0x46, drm_radeon_fullscreen_t)
|
||||
#define DRM_IOCTL_RADEON_SWAP DRM_IO( 0x47)
|
||||
#define DRM_IOCTL_RADEON_CLEAR DRM_IOW( 0x48, drm_radeon_clear_t)
|
||||
#define DRM_IOCTL_RADEON_VERTEX DRM_IOW( 0x49, drm_radeon_vertex_t)
|
||||
#define DRM_IOCTL_RADEON_INDICES DRM_IOW( 0x4a, drm_radeon_indices_t)
|
||||
#define DRM_IOCTL_RADEON_STIPPLE DRM_IOW( 0x4c, drm_radeon_stipple_t)
|
||||
#define DRM_IOCTL_RADEON_INDIRECT DRM_IOWR(0x4d, drm_radeon_indirect_t)
|
||||
#define DRM_IOCTL_RADEON_TEXTURE DRM_IOWR(0x4e, drm_radeon_texture_t)
|
||||
#define DRM_IOCTL_RADEON_VERTEX2 DRM_IOW( 0x4f, drm_radeon_vertex_t)
|
||||
#define DRM_IOCTL_RADEON_CMDBUF DRM_IOW( 0x50, drm_radeon_cmd_buffer_t)
|
||||
#define DRM_IOCTL_RADEON_GETPARAM DRM_IOWR(0x51, drm_radeon_getparam_t)
|
||||
#define DRM_IOCTL_RADEON_FLIP DRM_IO( 0x52)
|
||||
|
||||
/* Gamma specific ioctls */
|
||||
#define DRM_IOCTL_GAMMA_INIT DRM_IOW( 0x40, drm_gamma_init_t)
|
||||
#define DRM_IOCTL_GAMMA_COPY DRM_IOW( 0x41, drm_gamma_copy_t)
|
||||
|
||||
/* SiS specific ioctls */
|
||||
#define SIS_IOCTL_FB_ALLOC DRM_IOWR(0x44, drm_sis_mem_t)
|
||||
#define SIS_IOCTL_FB_FREE DRM_IOW( 0x45, drm_sis_mem_t)
|
||||
#define SIS_IOCTL_AGP_INIT DRM_IOWR(0x53, drm_sis_agp_t)
|
||||
#define SIS_IOCTL_AGP_ALLOC DRM_IOWR(0x54, drm_sis_mem_t)
|
||||
#define SIS_IOCTL_AGP_FREE DRM_IOW( 0x55, drm_sis_mem_t)
|
||||
#define SIS_IOCTL_FLIP DRM_IOW( 0x48, drm_sis_flip_t)
|
||||
#define SIS_IOCTL_FLIP_INIT DRM_IO( 0x49)
|
||||
#define SIS_IOCTL_FLIP_FINAL DRM_IO( 0x50)
|
||||
|
||||
/* I830 specific ioctls */
|
||||
#define DRM_IOCTL_I830_INIT DRM_IOW( 0x40, drm_i830_init_t)
|
||||
#define DRM_IOCTL_I830_VERTEX DRM_IOW( 0x41, drm_i830_vertex_t)
|
||||
#define DRM_IOCTL_I830_CLEAR DRM_IOW( 0x42, drm_i830_clear_t)
|
||||
#define DRM_IOCTL_I830_FLUSH DRM_IO ( 0x43)
|
||||
#define DRM_IOCTL_I830_GETAGE DRM_IO ( 0x44)
|
||||
#define DRM_IOCTL_I830_GETBUF DRM_IOWR(0x45, drm_i830_dma_t)
|
||||
#define DRM_IOCTL_I830_SWAP DRM_IO ( 0x46)
|
||||
#define DRM_IOCTL_I830_COPY DRM_IOW( 0x47, drm_i830_copy_t)
|
||||
#define DRM_IOCTL_I830_DOCOPY DRM_IO ( 0x48)
|
||||
/* Device specfic ioctls should only be in their respective headers
|
||||
* The device specific ioctl range is 0x40 to 0x79. */
|
||||
#define DRM_COMMAND_BASE 0x40
|
||||
|
||||
#endif
|
||||
|
|
|
|||
102
shared/drm.h
102
shared/drm.h
|
|
@ -99,15 +99,6 @@ typedef struct drm_tex_region {
|
|||
unsigned int age;
|
||||
} drm_tex_region_t;
|
||||
|
||||
/* Seperate include files for the i810/mga/r128 specific structures */
|
||||
#include "mga_drm.h"
|
||||
#include "i810_drm.h"
|
||||
#include "r128_drm.h"
|
||||
#include "radeon_drm.h"
|
||||
#include "sis_drm.h"
|
||||
#include "i830_drm.h"
|
||||
#include "gamma_drm.h"
|
||||
|
||||
typedef struct drm_version {
|
||||
int version_major; /* Major version */
|
||||
int version_minor; /* Minor version */
|
||||
|
|
@ -428,95 +419,8 @@ typedef struct drm_scatter_gather {
|
|||
#define DRM_IOCTL_SG_ALLOC DRM_IOW( 0x38, drm_scatter_gather_t)
|
||||
#define DRM_IOCTL_SG_FREE DRM_IOW( 0x39, drm_scatter_gather_t)
|
||||
|
||||
/* MGA specific ioctls */
|
||||
#define DRM_IOCTL_MGA_INIT DRM_IOW( 0x40, drm_mga_init_t)
|
||||
#define DRM_IOCTL_MGA_FLUSH DRM_IOW( 0x41, drm_lock_t)
|
||||
#define DRM_IOCTL_MGA_RESET DRM_IO( 0x42)
|
||||
#define DRM_IOCTL_MGA_SWAP DRM_IO( 0x43)
|
||||
#define DRM_IOCTL_MGA_CLEAR DRM_IOW( 0x44, drm_mga_clear_t)
|
||||
#define DRM_IOCTL_MGA_VERTEX DRM_IOW( 0x45, drm_mga_vertex_t)
|
||||
#define DRM_IOCTL_MGA_INDICES DRM_IOW( 0x46, drm_mga_indices_t)
|
||||
#define DRM_IOCTL_MGA_ILOAD DRM_IOW( 0x47, drm_mga_iload_t)
|
||||
#define DRM_IOCTL_MGA_BLIT DRM_IOW( 0x48, drm_mga_blit_t)
|
||||
|
||||
/* i810 specific ioctls */
|
||||
#define DRM_IOCTL_I810_INIT DRM_IOW( 0x40, drm_i810_init_t)
|
||||
#define DRM_IOCTL_I810_VERTEX DRM_IOW( 0x41, drm_i810_vertex_t)
|
||||
#define DRM_IOCTL_I810_CLEAR DRM_IOW( 0x42, drm_i810_clear_t)
|
||||
#define DRM_IOCTL_I810_FLUSH DRM_IO( 0x43)
|
||||
#define DRM_IOCTL_I810_GETAGE DRM_IO( 0x44)
|
||||
#define DRM_IOCTL_I810_GETBUF DRM_IOWR(0x45, drm_i810_dma_t)
|
||||
#define DRM_IOCTL_I810_SWAP DRM_IO( 0x46)
|
||||
#define DRM_IOCTL_I810_COPY DRM_IOW( 0x47, drm_i810_copy_t)
|
||||
#define DRM_IOCTL_I810_DOCOPY DRM_IO( 0x48)
|
||||
#define DRM_IOCTL_I810_OV0INFO DRM_IOR( 0x49, drm_i810_overlay_t)
|
||||
#define DRM_IOCTL_I810_FSTATUS DRM_IO ( 0x4a)
|
||||
#define DRM_IOCTL_I810_OV0FLIP DRM_IO ( 0x4b)
|
||||
#define DRM_IOCTL_I810_MC DRM_IOW( 0x4c, drm_i810_mc_t)
|
||||
#define DRM_IOCTL_I810_RSTATUS DRM_IO ( 0x4d )
|
||||
|
||||
|
||||
/* Rage 128 specific ioctls */
|
||||
#define DRM_IOCTL_R128_INIT DRM_IOW( 0x40, drm_r128_init_t)
|
||||
#define DRM_IOCTL_R128_CCE_START DRM_IO( 0x41)
|
||||
#define DRM_IOCTL_R128_CCE_STOP DRM_IOW( 0x42, drm_r128_cce_stop_t)
|
||||
#define DRM_IOCTL_R128_CCE_RESET DRM_IO( 0x43)
|
||||
#define DRM_IOCTL_R128_CCE_IDLE DRM_IO( 0x44)
|
||||
#define DRM_IOCTL_R128_RESET DRM_IO( 0x46)
|
||||
#define DRM_IOCTL_R128_SWAP DRM_IO( 0x47)
|
||||
#define DRM_IOCTL_R128_CLEAR DRM_IOW( 0x48, drm_r128_clear_t)
|
||||
#define DRM_IOCTL_R128_VERTEX DRM_IOW( 0x49, drm_r128_vertex_t)
|
||||
#define DRM_IOCTL_R128_INDICES DRM_IOW( 0x4a, drm_r128_indices_t)
|
||||
#define DRM_IOCTL_R128_BLIT DRM_IOW( 0x4b, drm_r128_blit_t)
|
||||
#define DRM_IOCTL_R128_DEPTH DRM_IOW( 0x4c, drm_r128_depth_t)
|
||||
#define DRM_IOCTL_R128_STIPPLE DRM_IOW( 0x4d, drm_r128_stipple_t)
|
||||
#define DRM_IOCTL_R128_INDIRECT DRM_IOWR(0x4f, drm_r128_indirect_t)
|
||||
#define DRM_IOCTL_R128_FULLSCREEN DRM_IOW( 0x50, drm_r128_fullscreen_t)
|
||||
#define DRM_IOCTL_R128_CLEAR2 DRM_IOW( 0x51, drm_r128_clear2_t)
|
||||
|
||||
/* Radeon specific ioctls */
|
||||
#define DRM_IOCTL_RADEON_CP_INIT DRM_IOW( 0x40, drm_radeon_init_t)
|
||||
#define DRM_IOCTL_RADEON_CP_START DRM_IO( 0x41)
|
||||
#define DRM_IOCTL_RADEON_CP_STOP DRM_IOW( 0x42, drm_radeon_cp_stop_t)
|
||||
#define DRM_IOCTL_RADEON_CP_RESET DRM_IO( 0x43)
|
||||
#define DRM_IOCTL_RADEON_CP_IDLE DRM_IO( 0x44)
|
||||
#define DRM_IOCTL_RADEON_RESET DRM_IO( 0x45)
|
||||
#define DRM_IOCTL_RADEON_FULLSCREEN DRM_IOW( 0x46, drm_radeon_fullscreen_t)
|
||||
#define DRM_IOCTL_RADEON_SWAP DRM_IO( 0x47)
|
||||
#define DRM_IOCTL_RADEON_CLEAR DRM_IOW( 0x48, drm_radeon_clear_t)
|
||||
#define DRM_IOCTL_RADEON_VERTEX DRM_IOW( 0x49, drm_radeon_vertex_t)
|
||||
#define DRM_IOCTL_RADEON_INDICES DRM_IOW( 0x4a, drm_radeon_indices_t)
|
||||
#define DRM_IOCTL_RADEON_STIPPLE DRM_IOW( 0x4c, drm_radeon_stipple_t)
|
||||
#define DRM_IOCTL_RADEON_INDIRECT DRM_IOWR(0x4d, drm_radeon_indirect_t)
|
||||
#define DRM_IOCTL_RADEON_TEXTURE DRM_IOWR(0x4e, drm_radeon_texture_t)
|
||||
#define DRM_IOCTL_RADEON_VERTEX2 DRM_IOW( 0x4f, drm_radeon_vertex_t)
|
||||
#define DRM_IOCTL_RADEON_CMDBUF DRM_IOW( 0x50, drm_radeon_cmd_buffer_t)
|
||||
#define DRM_IOCTL_RADEON_GETPARAM DRM_IOWR(0x51, drm_radeon_getparam_t)
|
||||
#define DRM_IOCTL_RADEON_FLIP DRM_IO( 0x52)
|
||||
|
||||
/* Gamma specific ioctls */
|
||||
#define DRM_IOCTL_GAMMA_INIT DRM_IOW( 0x40, drm_gamma_init_t)
|
||||
#define DRM_IOCTL_GAMMA_COPY DRM_IOW( 0x41, drm_gamma_copy_t)
|
||||
|
||||
/* SiS specific ioctls */
|
||||
#define SIS_IOCTL_FB_ALLOC DRM_IOWR(0x44, drm_sis_mem_t)
|
||||
#define SIS_IOCTL_FB_FREE DRM_IOW( 0x45, drm_sis_mem_t)
|
||||
#define SIS_IOCTL_AGP_INIT DRM_IOWR(0x53, drm_sis_agp_t)
|
||||
#define SIS_IOCTL_AGP_ALLOC DRM_IOWR(0x54, drm_sis_mem_t)
|
||||
#define SIS_IOCTL_AGP_FREE DRM_IOW( 0x55, drm_sis_mem_t)
|
||||
#define SIS_IOCTL_FLIP DRM_IOW( 0x48, drm_sis_flip_t)
|
||||
#define SIS_IOCTL_FLIP_INIT DRM_IO( 0x49)
|
||||
#define SIS_IOCTL_FLIP_FINAL DRM_IO( 0x50)
|
||||
|
||||
/* I830 specific ioctls */
|
||||
#define DRM_IOCTL_I830_INIT DRM_IOW( 0x40, drm_i830_init_t)
|
||||
#define DRM_IOCTL_I830_VERTEX DRM_IOW( 0x41, drm_i830_vertex_t)
|
||||
#define DRM_IOCTL_I830_CLEAR DRM_IOW( 0x42, drm_i830_clear_t)
|
||||
#define DRM_IOCTL_I830_FLUSH DRM_IO ( 0x43)
|
||||
#define DRM_IOCTL_I830_GETAGE DRM_IO ( 0x44)
|
||||
#define DRM_IOCTL_I830_GETBUF DRM_IOWR(0x45, drm_i830_dma_t)
|
||||
#define DRM_IOCTL_I830_SWAP DRM_IO ( 0x46)
|
||||
#define DRM_IOCTL_I830_COPY DRM_IOW( 0x47, drm_i830_copy_t)
|
||||
#define DRM_IOCTL_I830_DOCOPY DRM_IO ( 0x48)
|
||||
/* Device specfic ioctls should only be in their respective headers
|
||||
* The device specific ioctl range is 0x40 to 0x79. */
|
||||
#define DRM_COMMAND_BASE 0x40
|
||||
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue