Commit 5e051f29 authored by Linus Torvalds's avatar Linus Torvalds Committed by Linus Torvalds

Merge with dri CVS tree:

 - update some incorrect version checks
 - update radeon driver from 1.4.0 to 1.5.0
 - use C99 named initializers
parent 93a3177f
...@@ -165,7 +165,7 @@ ...@@ -165,7 +165,7 @@
#define pte_unmap(pte) #define pte_unmap(pte)
#endif #endif
#if LINUX_VERSION_CODE < 0x020500 #if LINUX_VERSION_CODE < 0x020413 /* KERNEL_VERSION(2,4,19) */
static inline struct page * vmalloc_to_page(void * vmalloc_addr) static inline struct page * vmalloc_to_page(void * vmalloc_addr)
{ {
unsigned long addr = (unsigned long) vmalloc_addr; unsigned long addr = (unsigned long) vmalloc_addr;
......
...@@ -268,11 +268,11 @@ drm_agp_head_t *DRM(agp_init)(void) ...@@ -268,11 +268,11 @@ drm_agp_head_t *DRM(agp_init)(void)
case INTEL_I810: head->chipset = "Intel i810"; break; case INTEL_I810: head->chipset = "Intel i810"; break;
case INTEL_I815: head->chipset = "Intel i815"; break; case INTEL_I815: head->chipset = "Intel i815"; break;
#if LINUX_VERSION_CODE >= 0x020415 #if LINUX_VERSION_CODE >= 0x02040f /* KERNEL_VERSION(2,4,15) */
case INTEL_I820: head->chipset = "Intel i820"; break; case INTEL_I820: head->chipset = "Intel i820"; break;
#endif #endif
case INTEL_I840: head->chipset = "Intel i840"; break; case INTEL_I840: head->chipset = "Intel i840"; break;
#if LINUX_VERSION_CODE >= 0x020415 #if LINUX_VERSION_CODE >= 0x02040f /* KERNEL_VERSION(2,4,15) */
case INTEL_I845: head->chipset = "Intel i845"; break; case INTEL_I845: head->chipset = "Intel i845"; break;
#endif #endif
case INTEL_I850: head->chipset = "Intel i850"; break; case INTEL_I850: head->chipset = "Intel i850"; break;
......
...@@ -115,15 +115,15 @@ ...@@ -115,15 +115,15 @@
#ifndef DRIVER_FOPS #ifndef DRIVER_FOPS
#define DRIVER_FOPS \ #define DRIVER_FOPS \
static struct file_operations DRM(fops) = { \ static struct file_operations DRM(fops) = { \
owner: THIS_MODULE, \ .owner = THIS_MODULE, \
open: DRM(open), \ .open = DRM(open), \
flush: DRM(flush), \ .flush = DRM(flush), \
release: DRM(release), \ .release = DRM(release), \
ioctl: DRM(ioctl), \ .ioctl = DRM(ioctl), \
mmap: DRM(mmap), \ .mmap = DRM(mmap), \
read: DRM(read), \ .read = DRM(read), \
fasync: DRM(fasync), \ .fasync = DRM(fasync), \
poll: DRM(poll), \ .poll = DRM(poll), \
} }
#endif #endif
......
...@@ -66,8 +66,8 @@ static int DRM(stub_open)(struct inode *inode, struct file *filp) ...@@ -66,8 +66,8 @@ static int DRM(stub_open)(struct inode *inode, struct file *filp)
} }
static struct file_operations DRM(stub_fops) = { static struct file_operations DRM(stub_fops) = {
owner: THIS_MODULE, .owner = THIS_MODULE,
open: DRM(stub_open) .open = DRM(stub_open)
}; };
static int DRM(stub_getminor)(const char *name, struct file_operations *fops, static int DRM(stub_getminor)(const char *name, struct file_operations *fops,
......
...@@ -33,27 +33,27 @@ ...@@ -33,27 +33,27 @@
#include "drmP.h" #include "drmP.h"
struct vm_operations_struct DRM(vm_ops) = { struct vm_operations_struct DRM(vm_ops) = {
nopage: DRM(vm_nopage), .nopage = DRM(vm_nopage),
open: DRM(vm_open), .open = DRM(vm_open),
close: DRM(vm_close), .close = DRM(vm_close),
}; };
struct vm_operations_struct DRM(vm_shm_ops) = { struct vm_operations_struct DRM(vm_shm_ops) = {
nopage: DRM(vm_shm_nopage), .nopage = DRM(vm_shm_nopage),
open: DRM(vm_open), .open = DRM(vm_open),
close: DRM(vm_shm_close), .close = DRM(vm_shm_close),
}; };
struct vm_operations_struct DRM(vm_dma_ops) = { struct vm_operations_struct DRM(vm_dma_ops) = {
nopage: DRM(vm_dma_nopage), .nopage = DRM(vm_dma_nopage),
open: DRM(vm_open), .open = DRM(vm_open),
close: DRM(vm_close), .close = DRM(vm_close),
}; };
struct vm_operations_struct DRM(vm_sg_ops) = { struct vm_operations_struct DRM(vm_sg_ops) = {
nopage: DRM(vm_sg_nopage), .nopage = DRM(vm_sg_nopage),
open: DRM(vm_open), .open = DRM(vm_open),
close: DRM(vm_close), .close = DRM(vm_close),
}; };
struct page *DRM(vm_nopage)(struct vm_area_struct *vma, struct page *DRM(vm_nopage)(struct vm_area_struct *vma,
...@@ -343,7 +343,7 @@ int DRM(mmap_dma)(struct file *filp, struct vm_area_struct *vma) ...@@ -343,7 +343,7 @@ int DRM(mmap_dma)(struct file *filp, struct vm_area_struct *vma)
vma->vm_ops = &DRM(vm_dma_ops); vma->vm_ops = &DRM(vm_dma_ops);
#if LINUX_VERSION_CODE <= 0x020414 #if LINUX_VERSION_CODE <= 0x02040e /* KERNEL_VERSION(2,4,14) */
vma->vm_flags |= VM_LOCKED | VM_SHM; /* Don't swap */ vma->vm_flags |= VM_LOCKED | VM_SHM; /* Don't swap */
#else #else
vma->vm_flags |= VM_RESERVED; /* Don't swap */ vma->vm_flags |= VM_RESERVED; /* Don't swap */
...@@ -473,7 +473,7 @@ int DRM(mmap)(struct file *filp, struct vm_area_struct *vma) ...@@ -473,7 +473,7 @@ int DRM(mmap)(struct file *filp, struct vm_area_struct *vma)
vma->vm_private_data = (void *)map; vma->vm_private_data = (void *)map;
/* Don't let this area swap. Change when /* Don't let this area swap. Change when
DRM_KERNEL advisory is supported. */ DRM_KERNEL advisory is supported. */
#if LINUX_VERSION_CODE <= 0x020414 #if LINUX_VERSION_CODE <= 0x02040e /* KERNEL_VERSION(2,4,14) */
vma->vm_flags |= VM_LOCKED; vma->vm_flags |= VM_LOCKED;
#else #else
vma->vm_flags |= VM_RESERVED; vma->vm_flags |= VM_RESERVED;
...@@ -482,7 +482,7 @@ int DRM(mmap)(struct file *filp, struct vm_area_struct *vma) ...@@ -482,7 +482,7 @@ int DRM(mmap)(struct file *filp, struct vm_area_struct *vma)
case _DRM_SCATTER_GATHER: case _DRM_SCATTER_GATHER:
vma->vm_ops = &DRM(vm_sg_ops); vma->vm_ops = &DRM(vm_sg_ops);
vma->vm_private_data = (void *)map; vma->vm_private_data = (void *)map;
#if LINUX_VERSION_CODE <= 0x020414 #if LINUX_VERSION_CODE <= 0x02040e /* KERNEL_VERSION(2,4,14) */
vma->vm_flags |= VM_LOCKED; vma->vm_flags |= VM_LOCKED;
#else #else
vma->vm_flags |= VM_RESERVED; vma->vm_flags |= VM_RESERVED;
...@@ -491,7 +491,7 @@ int DRM(mmap)(struct file *filp, struct vm_area_struct *vma) ...@@ -491,7 +491,7 @@ int DRM(mmap)(struct file *filp, struct vm_area_struct *vma)
default: default:
return -EINVAL; /* This should never happen. */ return -EINVAL; /* This should never happen. */
} }
#if LINUX_VERSION_CODE <= 0x020414 #if LINUX_VERSION_CODE <= 0x02040e /* KERNEL_VERSION(2,4,14) */
vma->vm_flags |= VM_LOCKED | VM_SHM; /* Don't swap */ vma->vm_flags |= VM_LOCKED | VM_SHM; /* Don't swap */
#else #else
vma->vm_flags |= VM_RESERVED; /* Don't swap */ vma->vm_flags |= VM_RESERVED; /* Don't swap */
......
...@@ -131,14 +131,14 @@ static int i810_freelist_put(drm_device_t *dev, drm_buf_t *buf) ...@@ -131,14 +131,14 @@ static int i810_freelist_put(drm_device_t *dev, drm_buf_t *buf)
} }
static struct file_operations i810_buffer_fops = { static struct file_operations i810_buffer_fops = {
open: DRM(open), .open = DRM(open),
flush: DRM(flush), .flush = DRM(flush),
release: DRM(release), .release = DRM(release),
ioctl: DRM(ioctl), .ioctl = DRM(ioctl),
mmap: i810_mmap_buffers, .mmap = i810_mmap_buffers,
read: DRM(read), .read = DRM(read),
fasync: DRM(fasync), .fasync = DRM(fasync),
poll: DRM(poll), .poll = DRM(poll),
}; };
int i810_mmap_buffers(struct file *filp, struct vm_area_struct *vma) int i810_mmap_buffers(struct file *filp, struct vm_area_struct *vma)
...@@ -272,12 +272,16 @@ static unsigned long i810_alloc_page(drm_device_t *dev) ...@@ -272,12 +272,16 @@ static unsigned long i810_alloc_page(drm_device_t *dev)
if(address == 0UL) if(address == 0UL)
return 0; return 0;
#if LINUX_VERSION_CODE < 0x020500 #if LINUX_VERSION_CODE < 0x020409
atomic_inc(&virt_to_page(address)->count); atomic_inc(&virt_to_page(address)->count);
set_bit(PG_locked, &virt_to_page(address)->flags); set_bit(PG_locked, &virt_to_page(address)->flags);
#else #else
get_page(virt_to_page(address)); get_page(virt_to_page(address));
#if LINUX_VERSION_CODE < 0x020500
LockPage(virt_to_page(address));
#else
SetPageLocked(virt_to_page(address)); SetPageLocked(virt_to_page(address));
#endif
#endif #endif
return address; return address;
} }
...@@ -285,7 +289,7 @@ static unsigned long i810_alloc_page(drm_device_t *dev) ...@@ -285,7 +289,7 @@ static unsigned long i810_alloc_page(drm_device_t *dev)
static void i810_free_page(drm_device_t *dev, unsigned long page) static void i810_free_page(drm_device_t *dev, unsigned long page)
{ {
if (page) { if (page) {
#if LINUX_VERSION_CODE < 0x020500 #if LINUX_VERSION_CODE < 0x020409
atomic_dec(&virt_to_page(page)->count); atomic_dec(&virt_to_page(page)->count);
clear_bit(PG_locked, &virt_to_page(page)->flags); clear_bit(PG_locked, &virt_to_page(page)->flags);
wake_up(&virt_to_page(page)->wait); wake_up(&virt_to_page(page)->wait);
...@@ -339,8 +343,6 @@ static int i810_wait_ring(drm_device_t *dev, int n) ...@@ -339,8 +343,6 @@ static int i810_wait_ring(drm_device_t *dev, int n)
end = jiffies + (HZ*3); end = jiffies + (HZ*3);
while (ring->space < n) { while (ring->space < n) {
int i;
ring->head = I810_READ(LP_RING + RING_HEAD) & HEAD_ADDR; ring->head = I810_READ(LP_RING + RING_HEAD) & HEAD_ADDR;
ring->space = ring->head - (ring->tail+8); ring->space = ring->head - (ring->tail+8);
if (ring->space < 0) ring->space += ring->Size; if (ring->space < 0) ring->space += ring->Size;
......
...@@ -153,14 +153,14 @@ static int i830_freelist_put(drm_device_t *dev, drm_buf_t *buf) ...@@ -153,14 +153,14 @@ static int i830_freelist_put(drm_device_t *dev, drm_buf_t *buf)
} }
static struct file_operations i830_buffer_fops = { static struct file_operations i830_buffer_fops = {
open: DRM(open), .open = DRM(open),
flush: DRM(flush), .flush = DRM(flush),
release: DRM(release), .release = DRM(release),
ioctl: DRM(ioctl), .ioctl = DRM(ioctl),
mmap: i830_mmap_buffers, .mmap = i830_mmap_buffers,
read: DRM(read), .read = DRM(read),
fasync: DRM(fasync), .fasync = DRM(fasync),
poll: DRM(poll), .poll = DRM(poll),
}; };
int i830_mmap_buffers(struct file *filp, struct vm_area_struct *vma) int i830_mmap_buffers(struct file *filp, struct vm_area_struct *vma)
...@@ -303,12 +303,16 @@ static unsigned long i830_alloc_page(drm_device_t *dev) ...@@ -303,12 +303,16 @@ static unsigned long i830_alloc_page(drm_device_t *dev)
if(address == 0UL) if(address == 0UL)
return 0; return 0;
#if LINUX_VERSION_CODE < 0x020500 #if LINUX_VERSION_CODE < 0x020409
atomic_inc(&virt_to_page(address)->count); atomic_inc(&virt_to_page(address)->count);
set_bit(PG_locked, &virt_to_page(address)->flags); set_bit(PG_locked, &virt_to_page(address)->flags);
#else #else
get_page(virt_to_page(address)); get_page(virt_to_page(address));
#if LINUX_VERSION_CODE < 0x020500
LockPage(virt_to_page(address));
#else
SetPageLocked(virt_to_page(address)); SetPageLocked(virt_to_page(address));
#endif
#endif #endif
return address; return address;
} }
...@@ -316,7 +320,7 @@ static unsigned long i830_alloc_page(drm_device_t *dev) ...@@ -316,7 +320,7 @@ static unsigned long i830_alloc_page(drm_device_t *dev)
static void i830_free_page(drm_device_t *dev, unsigned long page) static void i830_free_page(drm_device_t *dev, unsigned long page)
{ {
if (page) { if (page) {
#if LINUX_VERSION_CODE < 0x020500 #if LINUX_VERSION_CODE < 0x020409
atomic_dec(&virt_to_page(page)->count); atomic_dec(&virt_to_page(page)->count);
clear_bit(PG_locked, &virt_to_page(page)->flags); clear_bit(PG_locked, &virt_to_page(page)->flags);
wake_up(&virt_to_page(page)->wait); wake_up(&virt_to_page(page)->wait);
......
...@@ -38,7 +38,7 @@ typedef struct drm_mga_primary_buffer { ...@@ -38,7 +38,7 @@ typedef struct drm_mga_primary_buffer {
u32 tail; u32 tail;
int space; int space;
int wrapped; volatile long wrapped;
volatile u32 *status; volatile u32 *status;
......
...@@ -51,7 +51,7 @@ ...@@ -51,7 +51,7 @@
#define DRIVER_DATE "20020611" #define DRIVER_DATE "20020611"
#define DRIVER_MAJOR 1 #define DRIVER_MAJOR 1
#define DRIVER_MINOR 4 #define DRIVER_MINOR 5
#define DRIVER_PATCHLEVEL 0 #define DRIVER_PATCHLEVEL 0
/* Interface history: /* Interface history:
...@@ -64,9 +64,10 @@ ...@@ -64,9 +64,10 @@
* - Add support for new radeon packets (keith) * - Add support for new radeon packets (keith)
* - Add getparam ioctl (keith) * - Add getparam ioctl (keith)
* - Add flip-buffers ioctl, deprecate fullscreen foo (keith). * - Add flip-buffers ioctl, deprecate fullscreen foo (keith).
* 1.4 - Add r200 packets to cmdbuf ioctl * 1.4 - Add scratch registers to get_param ioctl.
* 1.5 - Add r200 packets to cmdbuf ioctl
* - Add r200 function to init ioctl * - Add r200 function to init ioctl
* - Add 'scalar2' hack to cmdbuf ioctl (must die) * - Add 'scalar2' instruction to cmdbuf
*/ */
#define DRIVER_IOCTLS \ #define DRIVER_IOCTLS \
[DRM_IOCTL_NR(DRM_IOCTL_DMA)] = { radeon_cp_buffers, 1, 0 }, \ [DRM_IOCTL_NR(DRM_IOCTL_DMA)] = { radeon_cp_buffers, 1, 0 }, \
......
...@@ -925,6 +925,24 @@ static void radeon_cp_init_ring_buffer( drm_device_t *dev, ...@@ -925,6 +925,24 @@ static void radeon_cp_init_ring_buffer( drm_device_t *dev,
RADEON_WRITE( RADEON_SCRATCH_UMSK, 0x7 ); RADEON_WRITE( RADEON_SCRATCH_UMSK, 0x7 );
/* Writeback doesn't seem to work everywhere, test it first */
DRM_WRITE32( &dev_priv->scratch[1], 0 );
RADEON_WRITE( RADEON_SCRATCH_REG1, 0xdeadbeef );
for ( tmp = 0 ; tmp < dev_priv->usec_timeout ; tmp++ ) {
if ( DRM_READ32( &dev_priv->scratch[1] ) == 0xdeadbeef )
break;
DRM_UDELAY( 1 );
}
if ( tmp < dev_priv->usec_timeout ) {
dev_priv->writeback_works = 1;
DRM_DEBUG( "writeback test succeeded, tmp=%d\n", tmp );
} else {
dev_priv->writeback_works = 0;
DRM_DEBUG( "writeback test failed\n" );
}
dev_priv->sarea_priv->last_frame = dev_priv->scratch[0] = 0; dev_priv->sarea_priv->last_frame = dev_priv->scratch[0] = 0;
RADEON_WRITE( RADEON_LAST_FRAME_REG, RADEON_WRITE( RADEON_LAST_FRAME_REG,
dev_priv->sarea_priv->last_frame ); dev_priv->sarea_priv->last_frame );
...@@ -1000,7 +1018,7 @@ static int radeon_do_init_cp( drm_device_t *dev, drm_radeon_init_t *init ) ...@@ -1000,7 +1018,7 @@ static int radeon_do_init_cp( drm_device_t *dev, drm_radeon_init_t *init )
} }
dev_priv->is_r200 = (init->func == RADEON_INIT_R200_CP); dev_priv->is_r200 = (init->func == RADEON_INIT_R200_CP);
dev_priv->do_boxes = 1; dev_priv->do_boxes = 0;
dev_priv->cp_mode = init->cp_mode; dev_priv->cp_mode = init->cp_mode;
/* We don't support anything other than bus-mastering ring mode, /* We don't support anything other than bus-mastering ring mode,
...@@ -1456,8 +1474,8 @@ drm_buf_t *radeon_freelist_get( drm_device_t *dev ) ...@@ -1456,8 +1474,8 @@ drm_buf_t *radeon_freelist_get( drm_device_t *dev )
start = dev_priv->last_buf; start = dev_priv->last_buf;
for ( t = 0 ; t < dev_priv->usec_timeout ; t++ ) { for ( t = 0 ; t < dev_priv->usec_timeout ; t++ ) {
u32 done_age = DRM_READ32(&dev_priv->scratch[1]); u32 done_age = GET_SCRATCH( 1 );
DRM_DEBUG("done_age = %d\n",done_age);
for ( i = start ; i < dma->buf_count ; i++ ) { for ( i = start ; i < dma->buf_count ; i++ ) {
buf = dma->buflist[i]; buf = dma->buflist[i];
buf_priv = buf->dev_private; buf_priv = buf->dev_private;
......
...@@ -76,6 +76,7 @@ typedef struct drm_radeon_private { ...@@ -76,6 +76,7 @@ typedef struct drm_radeon_private {
drm_radeon_freelist_t *tail; drm_radeon_freelist_t *tail;
int last_buf; int last_buf;
volatile u32 *scratch; volatile u32 *scratch;
int writeback_works;
int usec_timeout; int usec_timeout;
...@@ -233,6 +234,10 @@ extern int radeon_cp_flip( DRM_IOCTL_ARGS ); ...@@ -233,6 +234,10 @@ extern int radeon_cp_flip( DRM_IOCTL_ARGS );
#define RADEON_SCRATCH_UMSK 0x0770 #define RADEON_SCRATCH_UMSK 0x0770
#define RADEON_SCRATCH_ADDR 0x0774 #define RADEON_SCRATCH_ADDR 0x0774
#define GET_SCRATCH( x ) (dev_priv->writeback_works \
? DRM_READ32( &dev_priv->scratch[(x)] ) \
: RADEON_READ( RADEON_SCRATCH_REG0 + 4*(x) ) )
#define RADEON_HOST_PATH_CNTL 0x0130 #define RADEON_HOST_PATH_CNTL 0x0130
# define RADEON_HDP_SOFT_RESET (1 << 26) # define RADEON_HDP_SOFT_RESET (1 << 26)
# define RADEON_HDP_WC_TIMEOUT_MASK (7 << 28) # define RADEON_HDP_WC_TIMEOUT_MASK (7 << 28)
......
...@@ -50,8 +50,7 @@ static __inline__ void radeon_emit_clip_rect( drm_radeon_private_t *dev_priv, ...@@ -50,8 +50,7 @@ static __inline__ void radeon_emit_clip_rect( drm_radeon_private_t *dev_priv,
OUT_RING( CP_PACKET0( RADEON_RE_TOP_LEFT, 0 ) ); OUT_RING( CP_PACKET0( RADEON_RE_TOP_LEFT, 0 ) );
OUT_RING( (box->y1 << 16) | box->x1 ); OUT_RING( (box->y1 << 16) | box->x1 );
OUT_RING( CP_PACKET0( RADEON_RE_WIDTH_HEIGHT, 0 ) ); OUT_RING( CP_PACKET0( RADEON_RE_WIDTH_HEIGHT, 0 ) );
/* OUT_RING( ((box->y2 - 1) << 16) | (box->x2 - 1) );*/ OUT_RING( ((box->y2 - 1) << 16) | (box->x2 - 1) );
OUT_RING( (box->y2 << 16) | box->x2 );
ADVANCE_RING(); ADVANCE_RING();
} }
...@@ -412,7 +411,6 @@ static void radeon_cp_dispatch_clear( drm_device_t *dev, ...@@ -412,7 +411,6 @@ static void radeon_cp_dispatch_clear( drm_device_t *dev,
RING_LOCALS; RING_LOCALS;
DRM_DEBUG( "flags = 0x%x\n", flags ); DRM_DEBUG( "flags = 0x%x\n", flags );
dev_priv->stats.clears++; dev_priv->stats.clears++;
if ( dev_priv->page_flipping && dev_priv->current_page == 1 ) { if ( dev_priv->page_flipping && dev_priv->current_page == 1 ) {
...@@ -810,9 +808,6 @@ static void radeon_cp_dispatch_flip( drm_device_t *dev ) ...@@ -810,9 +808,6 @@ static void radeon_cp_dispatch_flip( drm_device_t *dev )
BEGIN_RING( 4 ); BEGIN_RING( 4 );
RADEON_WAIT_UNTIL_3D_IDLE(); RADEON_WAIT_UNTIL_3D_IDLE();
/*
RADEON_WAIT_UNTIL_PAGE_FLIPPED();
*/
OUT_RING( CP_PACKET0( RADEON_CRTC_OFFSET, 0 ) ); OUT_RING( CP_PACKET0( RADEON_CRTC_OFFSET, 0 ) );
if ( dev_priv->current_page == 0 ) { if ( dev_priv->current_page == 0 ) {
...@@ -1941,6 +1936,19 @@ static int radeon_emit_packet3_cliprect( drm_device_t *dev, ...@@ -1941,6 +1936,19 @@ static int radeon_emit_packet3_cliprect( drm_device_t *dev,
if ( i < cmdbuf->nbox ) { if ( i < cmdbuf->nbox ) {
if (DRM_COPY_FROM_USER_UNCHECKED( &box, &boxes[i], sizeof(box) )) if (DRM_COPY_FROM_USER_UNCHECKED( &box, &boxes[i], sizeof(box) ))
return DRM_ERR(EFAULT); return DRM_ERR(EFAULT);
/* FIXME The second and subsequent times round this loop, send a
* WAIT_UNTIL_3D_IDLE before calling emit_clip_rect(). This
* fixes a lockup on fast machines when sending several
* cliprects with a cmdbuf, as when waving a 2D window over
* a 3D window. Something in the commands from user space
* seems to hang the card when they're sent several times
* in a row. That would be the correct place to fix it but
* this works around it until I can figure that out - Tim Smith */
if ( i ) {
BEGIN_RING( 2 );
RADEON_WAIT_UNTIL_3D_IDLE();
ADVANCE_RING();
}
radeon_emit_clip_rect( dev_priv, &box ); radeon_emit_clip_rect( dev_priv, &box );
} }
...@@ -1949,7 +1957,6 @@ static int radeon_emit_packet3_cliprect( drm_device_t *dev, ...@@ -1949,7 +1957,6 @@ static int radeon_emit_packet3_cliprect( drm_device_t *dev,
ADVANCE_RING(); ADVANCE_RING();
} while ( ++i < cmdbuf->nbox ); } while ( ++i < cmdbuf->nbox );
if (cmdbuf->nbox == 1) if (cmdbuf->nbox == 1)
cmdbuf->nbox = 0; cmdbuf->nbox = 0;
...@@ -2112,14 +2119,14 @@ int radeon_cp_getparam( DRM_IOCTL_ARGS ) ...@@ -2112,14 +2119,14 @@ int radeon_cp_getparam( DRM_IOCTL_ARGS )
break; break;
case RADEON_PARAM_LAST_FRAME: case RADEON_PARAM_LAST_FRAME:
dev_priv->stats.last_frame_reads++; dev_priv->stats.last_frame_reads++;
value = DRM_READ32(&dev_priv->scratch[0]); value = GET_SCRATCH( 0 );
break; break;
case RADEON_PARAM_LAST_DISPATCH: case RADEON_PARAM_LAST_DISPATCH:
value = DRM_READ32(&dev_priv->scratch[1]); value = GET_SCRATCH( 1 );
break; break;
case RADEON_PARAM_LAST_CLEAR: case RADEON_PARAM_LAST_CLEAR:
dev_priv->stats.last_clear_reads++; dev_priv->stats.last_clear_reads++;
value = DRM_READ32(&dev_priv->scratch[2]); value = GET_SCRATCH( 2 );
break; break;
default: default:
return DRM_ERR(EINVAL); return DRM_ERR(EINVAL);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment