[Midnightbsd-cvs] src: dev/drm: merge

laffer1 at midnightbsd.org laffer1 at midnightbsd.org
Tue Dec 2 19:29:05 EST 2008


Log Message:
-----------
merge

Modified Files:
--------------
    src/sys/dev/drm:
        ati_pcigart.c (r1.1.1.1 -> r1.2)
        drm-preprocess.sh (r1.1 -> r1.2)
        drm-subprocess.pl (r1.1 -> r1.2)
        drm.h (r1.2 -> r1.3)
        drmP.h (r1.2 -> r1.3)
        drm_agpsupport.c (r1.2 -> r1.3)
        drm_atomic.h (r1.1.1.1 -> r1.2)
        drm_auth.c (r1.1.1.1 -> r1.2)
        drm_bufs.c (r1.1.1.1 -> r1.2)
        drm_context.c (r1.1.1.1 -> r1.2)
        drm_dma.c (r1.1.1.1 -> r1.2)
        drm_drawable.c (r1.1.1.1 -> r1.2)
        drm_drv.c (r1.2 -> r1.3)
        drm_fops.c (r1.1.1.1 -> r1.2)
        drm_ioctl.c (r1.1.1.1 -> r1.2)
        drm_irq.c (r1.1.1.1 -> r1.2)
        drm_linux_list.h (r1.1.1.1 -> r1.2)
        drm_lock.c (r1.1.1.1 -> r1.2)
        drm_memory.c (r1.1.1.1 -> r1.2)
        drm_pci.c (r1.1.1.1 -> r1.2)
        drm_pciids.h (r1.2 -> r1.3)
        drm_sarea.h (r1.1.1.1 -> r1.2)
        drm_scatter.c (r1.2 -> r1.3)
        drm_sysctl.c (r1.1.1.1 -> r1.2)
        drm_vm.c (r1.1.1.1 -> r1.2)
        i915_dma.c (r1.2 -> r1.3)
        i915_drm.h (r1.2 -> r1.3)
        i915_drv.c (r1.2 -> r1.3)
        i915_drv.h (r1.2 -> r1.3)
        i915_irq.c (r1.2 -> r1.3)
        i915_mem.c (r1.2 -> r1.3)
        mach64_dma.c (r1.1.1.1 -> r1.2)
        mach64_drm.h (r1.1.1.1 -> r1.2)
        mach64_drv.c (r1.2 -> r1.3)
        mach64_drv.h (r1.1.1.1 -> r1.2)
        mach64_irq.c (r1.1.1.1 -> r1.2)
        mach64_state.c (r1.1.1.1 -> r1.2)
        mga_dma.c (r1.1.1.1 -> r1.2)
        mga_drm.h (r1.1.1.1 -> r1.2)
        mga_drv.c (r1.2 -> r1.3)
        mga_drv.h (r1.2 -> r1.3)
        mga_irq.c (r1.1.1.1 -> r1.2)
        mga_state.c (r1.1.1.1 -> r1.2)
        mga_ucode.h (r1.1.1.1 -> r1.2)
        mga_warp.c (r1.1.1.1 -> r1.2)
        r128_cce.c (r1.1.1.1 -> r1.2)
        r128_drm.h (r1.1.1.1 -> r1.2)
        r128_drv.c (r1.2 -> r1.3)
        r128_drv.h (r1.1.1.1 -> r1.2)
        r128_irq.c (r1.1.1.1 -> r1.2)
        r128_state.c (r1.1.1.1 -> r1.2)
        r300_cmdbuf.c (r1.2 -> r1.3)
        r300_reg.h (r1.2 -> r1.3)
        radeon_cp.c (r1.2 -> r1.3)
        radeon_drm.h (r1.2 -> r1.3)
        radeon_drv.c (r1.2 -> r1.3)
        radeon_drv.h (r1.2 -> r1.3)
        radeon_irq.c (r1.1.1.1 -> r1.2)
        radeon_mem.c (r1.1.1.1 -> r1.2)
        radeon_state.c (r1.2 -> r1.3)
        savage_bci.c (r1.2 -> r1.3)
        savage_drm.h (r1.1.1.1 -> r1.2)
        savage_drv.c (r1.2 -> r1.3)
        savage_drv.h (r1.1.1.1 -> r1.2)
        savage_state.c (r1.2 -> r1.3)
        sis_drm.h (r1.1.1.1 -> r1.2)
        sis_drv.c (r1.2 -> r1.3)
        sis_drv.h (r1.1.1.1 -> r1.2)
        sis_ds.c (r1.2 -> r1.3)
        sis_ds.h (r1.2 -> r1.3)
        sis_mm.c (r1.2 -> r1.3)
        tdfx_drv.c (r1.2 -> r1.3)
        tdfx_drv.h (r1.1.1.1 -> r1.2)

-------------- next part --------------
Index: i915_drm.h
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/i915_drm.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -L sys/dev/drm/i915_drm.h -L sys/dev/drm/i915_drm.h -u -r1.2 -r1.3
--- sys/dev/drm/i915_drm.h
+++ sys/dev/drm/i915_drm.h
@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/i915_drm.h,v 1.1.2.2 2006/05/17 07:40:11 anholt Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/i915_drm.h,v 1.4 2006/09/07 23:04:47 anholt Exp $");
 
 #ifndef _I915_DRM_H_
 #define _I915_DRM_H_
@@ -100,7 +100,13 @@
 	int rotated_offset;
 	int rotated_size;
 	int rotated_pitch;
-        int virtualX, virtualY;
+	int virtualX, virtualY;
+
+	unsigned int front_tiled;
+	unsigned int back_tiled;
+	unsigned int depth_tiled;
+	unsigned int rotated_tiled;
+	unsigned int rotated2_tiled;
 } drm_i915_sarea_t;
 
 /* Flags for perf_boxes
@@ -127,6 +133,8 @@
 #define DRM_I915_INIT_HEAP	0x0a
 #define DRM_I915_CMDBUFFER	0x0b
 #define DRM_I915_DESTROY_HEAP	0x0c
+#define DRM_I915_SET_VBLANK_PIPE	0x0d
+#define DRM_I915_GET_VBLANK_PIPE	0x0e
 
 #define DRM_IOCTL_I915_INIT		DRM_IOW( DRM_COMMAND_BASE + DRM_I915_INIT, drm_i915_init_t)
 #define DRM_IOCTL_I915_FLUSH		DRM_IO ( DRM_COMMAND_BASE + DRM_I915_FLUSH)
@@ -141,6 +149,8 @@
 #define DRM_IOCTL_I915_INIT_HEAP        DRM_IOW( DRM_COMMAND_BASE + DRM_I915_INIT_HEAP, drm_i915_mem_init_heap_t)
 #define DRM_IOCTL_I915_CMDBUFFER	DRM_IOW( DRM_COMMAND_BASE + DRM_I915_CMDBUFFER, drm_i915_cmdbuffer_t)
 #define DRM_IOCTL_I915_DESTROY_HEAP	DRM_IOW( DRM_COMMAND_BASE + DRM_I915_DESTROY_HEAP, drm_i915_mem_destroy_heap_t)
+#define DRM_IOCTL_I915_SET_VBLANK_PIPE	DRM_IOW( DRM_COMMAND_BASE + DRM_I915_SET_VBLANK_PIPE, drm_i915_vblank_pipe_t)
+#define DRM_IOCTL_I915_GET_VBLANK_PIPE	DRM_IOR( DRM_COMMAND_BASE + DRM_I915_GET_VBLANK_PIPE, drm_i915_vblank_pipe_t)
 
 
 /* Allow drivers to submit batchbuffers directly to hardware, relying
@@ -228,4 +238,13 @@
 	        int region;
 } drm_i915_mem_destroy_heap_t;
 
+/* Allow X server to configure which pipes to monitor for vblank signals
+ */
+#define	DRM_I915_VBLANK_PIPE_A	1
+#define	DRM_I915_VBLANK_PIPE_B	2
+
+typedef struct drm_i915_vblank_pipe {
+	int pipe;
+} drm_i915_vblank_pipe_t;
+
 #endif				/* _I915_DRM_H_ */
Index: drmP.h
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/drmP.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -L sys/dev/drm/drmP.h -L sys/dev/drm/drmP.h -u -r1.2 -r1.3
--- sys/dev/drm/drmP.h
+++ sys/dev/drm/drmP.h
@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/drmP.h,v 1.13.2.3 2006/05/17 07:40:11 anholt Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/drmP.h,v 1.18 2006/11/06 13:41:53 rwatson Exp $");
 
 #ifndef _DRM_P_H_
 #define _DRM_P_H_
@@ -50,6 +50,9 @@
 #include <sys/systm.h>
 #include <sys/conf.h>
 #include <sys/stat.h>
+#if __FreeBSD_version >= 700000
+#include <sys/priv.h>
+#endif
 #include <sys/proc.h>
 #include <sys/lock.h>
 #include <sys/fcntl.h>
@@ -173,7 +176,7 @@
 #define wait_queue_head_t	atomic_t
 #define DRM_WAKEUP(w)		wakeup((void *)w)
 #define DRM_WAKEUP_INT(w)	wakeup(w)
-#define DRM_INIT_WAITQUEUE(queue) do {} while (0)
+#define DRM_INIT_WAITQUEUE(queue) do {(void)(queue);} while (0)
 
 #if defined(__FreeBSD__) && __FreeBSD_version < 502109
 #define bus_alloc_resource_any(dev, type, rid, flags) \
@@ -233,7 +236,11 @@
 
 #define PAGE_ALIGN(addr) round_page(addr)
 /* DRM_SUSER returns true if the user is superuser */
+#if __FreeBSD_version >= 700000
+#define	DRM_SUSER(p)		(priv_check(p, PRIV_DRIVER) == 0)
+#else
 #define DRM_SUSER(p)		(suser(p) == 0)
+#endif
 #define DRM_AGP_FIND_DEVICE()	agp_find_device()
 #define DRM_MTRR_WC		MDF_WRITECOMBINE
 #define jiffies			ticks
@@ -273,6 +280,7 @@
 #endif
 
 typedef unsigned long dma_addr_t;
+typedef u_int64_t u64;
 typedef u_int32_t u32;
 typedef u_int16_t u16;
 typedef u_int8_t u8;
@@ -716,6 +724,9 @@
 	struct drm_driver_info driver;
 	drm_pci_id_list_t *id_entry;	/* PCI ID, name, and chipset private */
 
+	u_int16_t pci_device;		/* PCI device id */
+	u_int16_t pci_vendor;		/* PCI vendor id */
+
 	char		  *unique;	/* Unique identifier: e.g., busid  */
 	int		  unique_len;	/* Length of unique field	   */
 #ifdef __FreeBSD__
Index: mga_warp.c
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/mga_warp.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -L sys/dev/drm/mga_warp.c -L sys/dev/drm/mga_warp.c -u -r1.1.1.1 -r1.2
--- sys/dev/drm/mga_warp.c
+++ sys/dev/drm/mga_warp.c
@@ -29,7 +29,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/mga_warp.c,v 1.7.2.1 2005/12/14 00:52:58 anholt Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/mga_warp.c,v 1.8 2005/11/28 23:13:53 anholt Exp $");
 
 #include "dev/drm/drmP.h"
 #include "dev/drm/drm.h"
Index: savage_drv.c
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/savage_drv.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -L sys/dev/drm/savage_drv.c -L sys/dev/drm/savage_drv.c -u -r1.2 -r1.3
--- sys/dev/drm/savage_drv.c
+++ sys/dev/drm/savage_drv.c
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/savage_drv.c,v 1.1.2.2 2006/05/17 07:40:11 anholt Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/savage_drv.c,v 1.3 2005/12/20 22:44:36 jhb Exp $");
 
 #include "dev/drm/drmP.h"
 #include "dev/drm/drm.h"
Index: sis_ds.h
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/sis_ds.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -L sys/dev/drm/sis_ds.h -L sys/dev/drm/sis_ds.h -u -r1.2 -r1.3
--- sys/dev/drm/sis_ds.h
+++ sys/dev/drm/sis_ds.h
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/sis_ds.h,v 1.4.2.2 2006/05/17 07:40:11 anholt Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/sis_ds.h,v 1.6 2006/04/09 20:45:45 anholt Exp $");
 
 #ifndef __SIS_DS_H__
 #define __SIS_DS_H__
Index: drm.h
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/drm.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -L sys/dev/drm/drm.h -L sys/dev/drm/drm.h -u -r1.2 -r1.3
--- sys/dev/drm/drm.h
+++ sys/dev/drm/drm.h
@@ -34,7 +34,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/drm.h,v 1.9.2.2 2006/05/17 07:40:11 anholt Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/drm.h,v 1.12 2006/05/17 06:36:28 anholt Exp $");
 
 /**
  * \mainpage
Index: radeon_drv.h
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/radeon_drv.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -L sys/dev/drm/radeon_drv.h -L sys/dev/drm/radeon_drv.h -u -r1.2 -r1.3
--- sys/dev/drm/radeon_drv.h
+++ sys/dev/drm/radeon_drv.h
@@ -29,7 +29,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/radeon_drv.h,v 1.12.2.3 2006/05/17 07:40:11 anholt Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/radeon_drv.h,v 1.16 2006/09/07 23:04:47 anholt Exp $");
 
 #ifndef __RADEON_DRV_H__
 #define __RADEON_DRV_H__
@@ -41,7 +41,7 @@
 
 #define DRIVER_NAME		"radeon"
 #define DRIVER_DESC		"ATI Radeon"
-#define DRIVER_DATE		"20060225"
+#define DRIVER_DATE		"20060524"
 
 /* Interface history:
  *
@@ -96,10 +96,12 @@
  * 1.22- Add support for texture cache flushes (R300_TX_CNTL)
  * 1.23- Add new radeon memory map work from benh
  * 1.24- Add general-purpose packet for manipulating scratch registers (r300)
+ * 1.25- Add support for r200 vertex programs (R200_EMIT_VAP_PVS_CNTL,
+ *       new packet type)
  */
 
 #define DRIVER_MAJOR		1
-#define DRIVER_MINOR		24
+#define DRIVER_MINOR		25
 #define DRIVER_PATCHLEVEL	0
 
 /*
@@ -144,6 +146,7 @@
 	CHIP_HAS_HIERZ = 0x00100000UL,
 	CHIP_IS_PCIE = 0x00200000UL,
 	CHIP_NEW_MEMMAP = 0x00400000UL,
+	CHIP_IS_PCI = 0x00800000UL,
 };
 
 #define GET_RING_HEAD(dev_priv)	(dev_priv->writeback_works ? \
@@ -544,6 +547,11 @@
 #	define RADEON_RB3D_ZC_FREE		(1 << 2)
 #	define RADEON_RB3D_ZC_FLUSH_ALL		0x5
 #	define RADEON_RB3D_ZC_BUSY		(1 << 31)
+#define RADEON_RB3D_DSTCACHE_CTLSTAT            0x325c
+#	define RADEON_RB3D_DC_FLUSH		(3 << 0)
+#	define RADEON_RB3D_DC_FREE		(3 << 2)
+#	define RADEON_RB3D_DC_FLUSH_ALL		0xf
+#	define RADEON_RB3D_DC_BUSY		(1 << 31)
 #define RADEON_RB3D_ZSTENCILCNTL	0x1c2c
 #	define RADEON_Z_TEST_MASK		(7 << 4)
 #	define RADEON_Z_TEST_ALWAYS		(7 << 4)
@@ -680,6 +688,7 @@
 #define RADEON_CP_RB_BASE		0x0700
 #define RADEON_CP_RB_CNTL		0x0704
 #	define RADEON_BUF_SWAP_32BIT		(2 << 16)
+#	define RADEON_RB_NO_UPDATE		(1 << 27)
 #define RADEON_CP_RB_RPTR_ADDR		0x070c
 #define RADEON_CP_RB_RPTR		0x0710
 #define RADEON_CP_RB_WPTR		0x0714
@@ -885,6 +894,8 @@
 #define RADEON_PP_CUBIC_OFFSET_T1_0         0x1e00
 #define RADEON_PP_CUBIC_OFFSET_T2_0         0x1e14
 
+#define RADEON_SE_TCL_STATE_FLUSH           0x2284
+
 #define SE_VAP_CNTL__TCL_ENA_MASK                          0x00000001
 #define SE_VAP_CNTL__FORCE_W_TO_ONE_MASK                   0x00010000
 #define SE_VAP_CNTL__VF_MAX_VTX_NUM__SHIFT                 0x00000012
@@ -906,6 +917,8 @@
 #define R200_PP_AFS_0                     0x2f80
 #define R200_PP_AFS_1                     0x2f00 /* same as txcblend_0 */
 
+#define R200_VAP_PVS_CNTL_1               0x22D0
+
 /* MPEG settings from VHA code */
 #define RADEON_VHA_SETTO16_1                       0x2694
 #define RADEON_VHA_SETTO16_2                       0x2680
@@ -1011,13 +1024,13 @@
 } while (0)
 
 #define RADEON_FLUSH_CACHE() do {					\
-	OUT_RING( CP_PACKET0( RADEON_RB2D_DSTCACHE_CTLSTAT, 0 ) );	\
-	OUT_RING( RADEON_RB2D_DC_FLUSH );				\
+	OUT_RING( CP_PACKET0( RADEON_RB3D_DSTCACHE_CTLSTAT, 0 ) );	\
+	OUT_RING( RADEON_RB3D_DC_FLUSH );				\
 } while (0)
 
 #define RADEON_PURGE_CACHE() do {					\
-	OUT_RING( CP_PACKET0( RADEON_RB2D_DSTCACHE_CTLSTAT, 0 ) );	\
-	OUT_RING( RADEON_RB2D_DC_FLUSH_ALL );				\
+	OUT_RING( CP_PACKET0( RADEON_RB3D_DSTCACHE_CTLSTAT, 0 ) );	\
+	OUT_RING( RADEON_RB3D_DC_FLUSH_ALL );				\
 } while (0)
 
 #define RADEON_FLUSH_ZCACHE() do {					\
@@ -1085,7 +1098,7 @@
 			   n, __FUNCTION__ );				\
 	}								\
 	if ( dev_priv->ring.space <= (n) * sizeof(u32) ) {		\
-                COMMIT_RING();						\
+		COMMIT_RING();						\
 		radeon_wait_ring( dev_priv, (n) * sizeof(u32) );	\
 	}								\
 	_nr = n; dev_priv->ring.space -= (n) * sizeof(u32);		\
Index: drm_fops.c
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/drm_fops.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -L sys/dev/drm/drm_fops.c -L sys/dev/drm/drm_fops.c -u -r1.1.1.1 -r1.2
--- sys/dev/drm/drm_fops.c
+++ sys/dev/drm/drm_fops.c
@@ -33,7 +33,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/drm_fops.c,v 1.1.2.1 2005/12/14 00:52:58 anholt Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/drm_fops.c,v 1.2 2005/11/28 23:13:52 anholt Exp $");
 
 #include "dev/drm/drmP.h"
 
Index: sis_drv.c
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/sis_drv.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -L sys/dev/drm/sis_drv.c -L sys/dev/drm/sis_drv.c -u -r1.2 -r1.3
--- sys/dev/drm/sis_drv.c
+++ sys/dev/drm/sis_drv.c
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/sis_drv.c,v 1.5.2.2 2006/05/17 07:40:11 anholt Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/sis_drv.c,v 1.7 2005/12/20 22:44:36 jhb Exp $");
 
 #include "dev/drm/drmP.h"
 #include "dev/drm/sis_drm.h"
Index: mach64_drv.c
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/mach64_drv.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -L sys/dev/drm/mach64_drv.c -L sys/dev/drm/mach64_drv.c -u -r1.2 -r1.3
--- sys/dev/drm/mach64_drv.c
+++ sys/dev/drm/mach64_drv.c
@@ -31,7 +31,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/mach64_drv.c,v 1.1.2.2 2006/05/17 07:40:11 anholt Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/mach64_drv.c,v 1.3 2005/12/20 22:44:36 jhb Exp $");
 
 
 #include <sys/types.h>
Index: drm_lock.c
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/drm_lock.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -L sys/dev/drm/drm_lock.c -L sys/dev/drm/drm_lock.c -u -r1.1.1.1 -r1.2
--- sys/dev/drm/drm_lock.c
+++ sys/dev/drm/drm_lock.c
@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/drm_lock.c,v 1.1.2.1 2005/12/14 00:52:58 anholt Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/drm_lock.c,v 1.2 2005/11/28 23:13:52 anholt Exp $");
 
 #include "dev/drm/drmP.h"
 
Index: tdfx_drv.c
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/tdfx_drv.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -L sys/dev/drm/tdfx_drv.c -L sys/dev/drm/tdfx_drv.c -u -r1.2 -r1.3
--- sys/dev/drm/tdfx_drv.c
+++ sys/dev/drm/tdfx_drv.c
@@ -33,7 +33,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/tdfx_drv.c,v 1.8.2.2 2006/05/17 07:40:11 anholt Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/tdfx_drv.c,v 1.10 2005/12/20 22:44:36 jhb Exp $");
 
 #include "dev/drm/tdfx_drv.h"
 #include "dev/drm/drmP.h"
Index: drm_irq.c
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/drm_irq.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -L sys/dev/drm/drm_irq.c -L sys/dev/drm/drm_irq.c -u -r1.1.1.1 -r1.2
--- sys/dev/drm/drm_irq.c
+++ sys/dev/drm/drm_irq.c
@@ -29,7 +29,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/drm_irq.c,v 1.1.2.1 2005/12/14 00:52:58 anholt Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/drm_irq.c,v 1.3 2007/02/23 12:18:38 piso Exp $");
 
 #include "dev/drm/drmP.h"
 #include "dev/drm/drm.h"
@@ -110,7 +110,7 @@
 				 dev->irq_handler, dev, &dev->irqh);
 #else
 	retcode = bus_setup_intr(dev->device, dev->irqr, INTR_TYPE_TTY | INTR_MPSAFE,
-				 drm_irq_handler_wrap, dev, &dev->irqh);
+				 NULL, drm_irq_handler_wrap, dev, &dev->irqh);
 #endif
 	if (retcode != 0)
 		goto err;
Index: mga_drv.h
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/mga_drv.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -L sys/dev/drm/mga_drv.h -L sys/dev/drm/mga_drv.h -u -r1.2 -r1.3
--- sys/dev/drm/mga_drv.h
+++ sys/dev/drm/mga_drv.h
@@ -29,7 +29,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/mga_drv.h,v 1.9.2.2 2006/05/17 07:40:11 anholt Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/mga_drv.h,v 1.11 2006/04/09 20:45:45 anholt Exp $");
 
 #ifndef __MGA_DRV_H__
 #define __MGA_DRV_H__
Index: ati_pcigart.c
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/ati_pcigart.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -L sys/dev/drm/ati_pcigart.c -L sys/dev/drm/ati_pcigart.c -u -r1.1.1.1 -r1.2
--- sys/dev/drm/ati_pcigart.c
+++ sys/dev/drm/ati_pcigart.c
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/ati_pcigart.c,v 1.1.2.2 2005/12/14 00:52:58 anholt Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/ati_pcigart.c,v 1.3 2005/11/28 23:13:52 anholt Exp $");
 
 #include "dev/drm/drmP.h"
 
Index: mach64_drm.h
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/mach64_drm.h,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -L sys/dev/drm/mach64_drm.h -L sys/dev/drm/mach64_drm.h -u -r1.1.1.1 -r1.2
--- sys/dev/drm/mach64_drm.h
+++ sys/dev/drm/mach64_drm.h
@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/mach64_drm.h,v 1.1.2.1 2005/12/14 00:52:58 anholt Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/mach64_drm.h,v 1.3 2006/09/07 23:04:47 anholt Exp $");
 
 #ifndef __MACH64_DRM_H__
 #define __MACH64_DRM_H__
@@ -71,7 +71,7 @@
 /* Max number of swaps allowed on the ring
  * before the client must wait
  */
-#define MACH64_MAX_QUEUED_FRAMES        3
+#define MACH64_MAX_QUEUED_FRAMES        3U
 
 /* Byte offsets for host blit buffer data
  */
Index: radeon_drm.h
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/radeon_drm.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -L sys/dev/drm/radeon_drm.h -L sys/dev/drm/radeon_drm.h -u -r1.2 -r1.3
--- sys/dev/drm/radeon_drm.h
+++ sys/dev/drm/radeon_drm.h
@@ -31,7 +31,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/radeon_drm.h,v 1.10.2.3 2006/05/17 07:40:11 anholt Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/radeon_drm.h,v 1.14 2006/09/07 23:04:47 anholt Exp $");
 
 #ifndef __RADEON_DRM_H__
 #define __RADEON_DRM_H__
@@ -164,7 +164,8 @@
 #define R200_EMIT_PP_TXCTLALL_3                     91
 #define R200_EMIT_PP_TXCTLALL_4                     92
 #define R200_EMIT_PP_TXCTLALL_5                     93
-#define RADEON_MAX_STATE_PACKETS                    94
+#define R200_EMIT_VAP_PVS_CNTL                      94
+#define RADEON_MAX_STATE_PACKETS                    95
 
 /* Commands understood by cmd_buffer ioctl.  More can be added but
  * obviously these can't be removed or changed:
@@ -179,6 +180,7 @@
 #define RADEON_CMD_WAIT         8	/* emit hw wait commands -- note:
 					 *  doesn't make the cpu wait, just
 					 *  the graphics hardware */
+#define RADEON_CMD_VECLINEAR	9       /* another r200 stopgap */
 
 typedef union {
 	int i;
@@ -195,6 +197,9 @@
 		unsigned char cmd_type, offset, stride, count;
 	} vectors;
 	struct {
+		unsigned char cmd_type, addr_lo, addr_hi, count;
+	} veclinear;
+	struct {
 		unsigned char cmd_type, buf_idx, pad0, pad1;
 	} dma;
 	struct {
Index: i915_mem.c
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/i915_mem.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -L sys/dev/drm/i915_mem.c -L sys/dev/drm/i915_mem.c -u -r1.2 -r1.3
--- sys/dev/drm/i915_mem.c
+++ sys/dev/drm/i915_mem.c
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/i915_mem.c,v 1.1.2.2 2006/05/17 07:40:11 anholt Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/i915_mem.c,v 1.3 2006/04/09 20:45:45 anholt Exp $");
 
 #include "dev/drm/drmP.h"
 #include "dev/drm/drm.h"
Index: sis_drv.h
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/sis_drv.h,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -L sys/dev/drm/sis_drv.h -L sys/dev/drm/sis_drv.h -u -r1.1.1.1 -r1.2
--- sys/dev/drm/sis_drv.h
+++ sys/dev/drm/sis_drv.h
@@ -26,7 +26,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/sis_drv.h,v 1.3.2.1 2005/12/14 00:52:59 anholt Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/sis_drv.h,v 1.4 2005/11/28 23:13:55 anholt Exp $");
 
 #ifndef _SIS_DRV_H_
 #define _SIS_DRV_H_
Index: drm_vm.c
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/drm_vm.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -L sys/dev/drm/drm_vm.c -L sys/dev/drm/drm_vm.c -u -r1.1.1.1 -r1.2
--- sys/dev/drm/drm_vm.c
+++ sys/dev/drm/drm_vm.c
@@ -22,7 +22,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/drm_vm.c,v 1.1.2.1 2005/12/14 00:52:58 anholt Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/drm_vm.c,v 1.2 2005/11/28 23:13:53 anholt Exp $");
 
 #include "dev/drm/drmP.h"
 #include "dev/drm/drm.h"
Index: drm_drawable.c
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/drm_drawable.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -L sys/dev/drm/drm_drawable.c -L sys/dev/drm/drm_drawable.c -u -r1.1.1.1 -r1.2
--- sys/dev/drm/drm_drawable.c
+++ sys/dev/drm/drm_drawable.c
@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/drm_drawable.c,v 1.1.2.1 2005/12/14 00:52:58 anholt Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/drm_drawable.c,v 1.2 2005/11/28 23:13:52 anholt Exp $");
 
 #include "dev/drm/drmP.h"
 
Index: savage_drm.h
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/savage_drm.h,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -L sys/dev/drm/savage_drm.h -L sys/dev/drm/savage_drm.h -u -r1.1.1.1 -r1.2
--- sys/dev/drm/savage_drm.h
+++ sys/dev/drm/savage_drm.h
@@ -24,7 +24,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/savage_drm.h,v 1.1.2.1 2005/12/14 00:52:59 anholt Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/savage_drm.h,v 1.2 2005/11/28 23:13:55 anholt Exp $");
 
 #ifndef __SAVAGE_DRM_H__
 #define __SAVAGE_DRM_H__
Index: r128_irq.c
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/r128_irq.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -L sys/dev/drm/r128_irq.c -L sys/dev/drm/r128_irq.c -u -r1.1.1.1 -r1.2
--- sys/dev/drm/r128_irq.c
+++ sys/dev/drm/r128_irq.c
@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/r128_irq.c,v 1.5.2.1 2005/12/14 00:52:59 anholt Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/r128_irq.c,v 1.6 2005/11/28 23:13:53 anholt Exp $");
 
 #include "dev/drm/drmP.h"
 #include "dev/drm/drm.h"
Index: drm_auth.c
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/drm_auth.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -L sys/dev/drm/drm_auth.c -L sys/dev/drm/drm_auth.c -u -r1.1.1.1 -r1.2
--- sys/dev/drm/drm_auth.c
+++ sys/dev/drm/drm_auth.c
@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/drm_auth.c,v 1.1.2.1 2005/12/14 00:52:58 anholt Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/drm_auth.c,v 1.2 2005/11/28 23:13:52 anholt Exp $");
 
 #include "dev/drm/drmP.h"
 
Index: tdfx_drv.h
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/tdfx_drv.h,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -L sys/dev/drm/tdfx_drv.h -L sys/dev/drm/tdfx_drv.h -u -r1.1.1.1 -r1.2
--- sys/dev/drm/tdfx_drv.h
+++ sys/dev/drm/tdfx_drv.h
@@ -29,7 +29,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/tdfx_drv.h,v 1.1.2.1 2005/12/14 00:52:59 anholt Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/tdfx_drv.h,v 1.2 2005/11/28 23:13:55 anholt Exp $");
 
 #ifndef __TDFX_H__
 #define __TDFX_H__
Index: drm_sarea.h
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/drm_sarea.h,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -L sys/dev/drm/drm_sarea.h -L sys/dev/drm/drm_sarea.h -u -r1.1.1.1 -r1.2
--- sys/dev/drm/drm_sarea.h
+++ sys/dev/drm/drm_sarea.h
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/drm_sarea.h,v 1.5.2.1 2005/12/14 00:52:58 anholt Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/drm_sarea.h,v 1.6 2005/11/28 23:13:52 anholt Exp $");
 
 #ifndef _DRM_SAREA_H_
 #define _DRM_SAREA_H_
Index: radeon_state.c
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/radeon_state.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -L sys/dev/drm/radeon_state.c -L sys/dev/drm/radeon_state.c -u -r1.2 -r1.3
--- sys/dev/drm/radeon_state.c
+++ sys/dev/drm/radeon_state.c
@@ -28,7 +28,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/radeon_state.c,v 1.15.2.3 2006/05/17 07:40:11 anholt Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/radeon_state.c,v 1.22 2006/09/07 23:04:47 anholt Exp $");
 
 #include "dev/drm/drmP.h"
 #include "dev/drm/drm.h"
@@ -45,7 +45,11 @@
 						    drm_file_t * filp_priv,
 						    u32 * offset)
 {
-	u32 off = *offset;
+	u64 off = *offset;
+	u32 fb_start = dev_priv->fb_location;
+	u32 fb_end = fb_start + dev_priv->fb_size - 1;
+	u32 gart_start = dev_priv->gart_vm_start;
+	u32 gart_end = gart_start + dev_priv->gart_size - 1;
 	struct drm_radeon_driver_file_fields *radeon_priv;
 
 	/* Hrm ... the story of the offset ... So this function converts
@@ -65,10 +69,8 @@
 	/* First, the best case, the offset already lands in either the
 	 * framebuffer or the GART mapped space
 	 */
-	if ((off >= dev_priv->fb_location &&
-	     off < (dev_priv->fb_location + dev_priv->fb_size)) ||
-	    (off >= dev_priv->gart_vm_start &&
-	     off < (dev_priv->gart_vm_start + dev_priv->gart_size)))
+	if ((off >= fb_start && off <= fb_end) ||
+	    (off >= gart_start && off <= gart_end))
 		return 0;
 
 	/* Ok, that didn't happen... now check if we have a zero based
@@ -81,16 +83,13 @@
 	}
 
 	/* Finally, assume we aimed at a GART offset if beyond the fb */
-	if (off > (dev_priv->fb_location + dev_priv->fb_size))
-		off = off - (dev_priv->fb_location + dev_priv->fb_size) +
-			dev_priv->gart_vm_start;
+	if (off > fb_end)
+		off = off - fb_end - 1 + gart_start;
 
 	/* Now recheck and fail if out of bounds */
-	if ((off >= dev_priv->fb_location &&
-	     off < (dev_priv->fb_location + dev_priv->fb_size)) ||
-	    (off >= dev_priv->gart_vm_start &&
-	     off < (dev_priv->gart_vm_start + dev_priv->gart_size))) {
-		DRM_DEBUG("offset fixed up to 0x%x\n", off);
+	if ((off >= fb_start && off <= fb_end) ||
+	    (off >= gart_start && off <= gart_end)) {
+		DRM_DEBUG("offset fixed up to 0x%x\n", (unsigned int)off);
 		*offset = off;
 		return 0;
 	}
@@ -252,6 +251,7 @@
 	case R200_EMIT_PP_TXCTLALL_3:
 	case R200_EMIT_PP_TXCTLALL_4:
 	case R200_EMIT_PP_TXCTLALL_5:
+	case R200_EMIT_VAP_PVS_CNTL:
 		/* These packets don't contain memory offsets */
 		break;
 
@@ -629,6 +629,7 @@
 	{R200_PP_TXFILTER_3, 8, "R200_PP_TXCTLALL_3"},
 	{R200_PP_TXFILTER_4, 8, "R200_PP_TXCTLALL_4"},
 	{R200_PP_TXFILTER_5, 8, "R200_PP_TXCTLALL_5"},
+	{R200_VAP_PVS_CNTL_1, 2, "R200_VAP_PVS_CNTL"},
 };
 
 /* ================================================================
@@ -2633,7 +2634,8 @@
 	int stride = header.vectors.stride;
 	RING_LOCALS;
 
-	BEGIN_RING(3 + sz);
+	BEGIN_RING(5 + sz);
+	OUT_RING_REG(RADEON_SE_TCL_STATE_FLUSH, 0);
 	OUT_RING(CP_PACKET0(RADEON_SE_TCL_VECTOR_INDX_REG, 0));
 	OUT_RING(start | (stride << RADEON_VEC_INDX_OCTWORD_STRIDE_SHIFT));
 	OUT_RING(CP_PACKET0_TABLE(RADEON_SE_TCL_VECTOR_DATA_REG, (sz - 1)));
@@ -2645,6 +2647,32 @@
 	return 0;
 }
 
+static __inline__ int radeon_emit_veclinear(drm_radeon_private_t *dev_priv,
+					  drm_radeon_cmd_header_t header,
+					  drm_radeon_kcmd_buffer_t *cmdbuf)
+{
+	int sz = header.veclinear.count * 4;
+	int start = header.veclinear.addr_lo | (header.veclinear.addr_hi << 8);
+	RING_LOCALS;
+
+	if (!sz)
+		return 0;
+	if (sz * 4 > cmdbuf->bufsz)
+		return DRM_ERR(EINVAL);
+
+	BEGIN_RING(5 + sz);
+	OUT_RING_REG(RADEON_SE_TCL_STATE_FLUSH, 0);
+	OUT_RING(CP_PACKET0(RADEON_SE_TCL_VECTOR_INDX_REG, 0));
+	OUT_RING(start | (1 << RADEON_VEC_INDX_OCTWORD_STRIDE_SHIFT));
+	OUT_RING(CP_PACKET0_TABLE(RADEON_SE_TCL_VECTOR_DATA_REG, (sz - 1)));
+	OUT_RING_TABLE(cmdbuf->buf, sz);
+	ADVANCE_RING();
+
+	cmdbuf->buf += sz * sizeof(int);
+	cmdbuf->bufsz -= sz * sizeof(int);
+	return 0;
+}
+
 static int radeon_emit_packet3(drm_device_t * dev,
 			       drm_file_t * filp_priv,
 			       drm_radeon_kcmd_buffer_t *cmdbuf)
@@ -2908,6 +2936,14 @@
 				goto err;
 			}
 			break;
+		case RADEON_CMD_VECLINEAR:
+			DRM_DEBUG("RADEON_CMD_VECLINEAR\n");
+			if (radeon_emit_veclinear(dev_priv, header, &cmdbuf)) {
+				DRM_ERROR("radeon_emit_veclinear failed\n");
+				goto err;
+			}
+			break;
+
 		default:
 			DRM_ERROR("bad cmd_type %d at %p\n",
 				  header.header.cmd_type,
@@ -2991,6 +3027,11 @@
 	case RADEON_PARAM_GART_TEX_HANDLE:
 		value = dev_priv->gart_textures_offset;
 		break;
+	case RADEON_PARAM_SCRATCH_OFFSET:
+		if (!dev_priv->writeback_works)
+			return DRM_ERR(EINVAL);
+		value = RADEON_SCRATCH_REG_OFFSET;
+		break;
 	
 	case RADEON_PARAM_CARD_TYPE:
 		if (dev_priv->flags & CHIP_IS_PCIE)
@@ -3001,6 +3042,7 @@
 			value = RADEON_CARD_PCI;
 		break;
 	default:
+		DRM_DEBUG( "Invalid parameter %d\n", param.param );
 		return DRM_ERR(EINVAL);
 	}
 
Index: radeon_irq.c
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/radeon_irq.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -L sys/dev/drm/radeon_irq.c -L sys/dev/drm/radeon_irq.c -u -r1.1.1.1 -r1.2
--- sys/dev/drm/radeon_irq.c
+++ sys/dev/drm/radeon_irq.c
@@ -31,7 +31,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/radeon_irq.c,v 1.6.2.1 2005/12/14 00:52:59 anholt Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/radeon_irq.c,v 1.7 2005/11/28 23:13:54 anholt Exp $");
 
 #include "dev/drm/drmP.h"
 #include "dev/drm/drm.h"
Index: drm_agpsupport.c
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/drm_agpsupport.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -L sys/dev/drm/drm_agpsupport.c -L sys/dev/drm/drm_agpsupport.c -u -r1.2 -r1.3
--- sys/dev/drm/drm_agpsupport.c
+++ sys/dev/drm/drm_agpsupport.c
@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/drm_agpsupport.c,v 1.1.2.3 2006/05/17 07:40:11 anholt Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/drm_agpsupport.c,v 1.6 2006/12/28 21:55:47 jhb Exp $");
 
 #include "dev/drm/drmP.h"
 
@@ -46,7 +46,7 @@
 drm_device_find_capability(drm_device_t *dev, int cap)
 {
 #ifdef __FreeBSD__
-#if __FreeBSD_version >= 700010
+#if __FreeBSD_version >= 602102
 
 	return (pci_find_extcap(dev->device, cap, NULL) == 0);
 #else
Index: drm_bufs.c
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/drm_bufs.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -L sys/dev/drm/drm_bufs.c -L sys/dev/drm/drm_bufs.c -u -r1.1.1.1 -r1.2
--- sys/dev/drm/drm_bufs.c
+++ sys/dev/drm/drm_bufs.c
@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/drm_bufs.c,v 1.2.2.1 2005/12/14 00:52:58 anholt Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/drm_bufs.c,v 1.3 2005/11/28 23:13:52 anholt Exp $");
 
 #include "dev/pci/pcireg.h"
 
Index: drm_pci.c
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/drm_pci.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -L sys/dev/drm/drm_pci.c -L sys/dev/drm/drm_pci.c -u -r1.1.1.1 -r1.2
--- sys/dev/drm/drm_pci.c
+++ sys/dev/drm/drm_pci.c
@@ -29,7 +29,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/drm_pci.c,v 1.1.2.1 2005/12/14 00:52:58 anholt Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/drm_pci.c,v 1.2 2005/11/28 23:13:52 anholt Exp $");
 
 #include "dev/drm/drmP.h"
 
Index: mga_ucode.h
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/mga_ucode.h,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -L sys/dev/drm/mga_ucode.h -L sys/dev/drm/mga_ucode.h -u -r1.1.1.1 -r1.2
--- sys/dev/drm/mga_ucode.h
+++ sys/dev/drm/mga_ucode.h
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/mga_ucode.h,v 1.3.2.1 2005/12/14 00:52:58 anholt Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/mga_ucode.h,v 1.4 2005/11/28 23:13:53 anholt Exp $");
 
 /*
  * WARP pipes are named according to the functions they perform, where:
Index: i915_dma.c
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/i915_dma.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -L sys/dev/drm/i915_dma.c -L sys/dev/drm/i915_dma.c -u -r1.2 -r1.3
--- sys/dev/drm/i915_dma.c
+++ sys/dev/drm/i915_dma.c
@@ -27,13 +27,19 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/i915_dma.c,v 1.1.2.2 2006/05/17 07:40:11 anholt Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/i915_dma.c,v 1.6 2007/08/21 12:52:57 kib Exp $");
 
 #include "dev/drm/drmP.h"
 #include "dev/drm/drm.h"
 #include "dev/drm/i915_drm.h"
 #include "dev/drm/i915_drv.h"
 
+#define IS_I965G(dev)  (dev->pci_device == 0x2972 || \
+			dev->pci_device == 0x2982 || \
+			dev->pci_device == 0x2992 || \
+			dev->pci_device == 0x29A2)
+
+
 /* Really want an OS-independent resettable timer.  Would like to have
  * this loop run for (eg) 3 sec, but have the timer reset every time
  * the head pointer changes, so that EBUSY only happens if the ring
@@ -116,7 +122,21 @@
 			   drm_i915_private_t * dev_priv,
 			   drm_i915_init_t * init)
 {
+	drm_dma_handle_t *dmah;
+
+	DRM_UNLOCK();
 	memset(dev_priv, 0, sizeof(drm_i915_private_t));
+	dmah = drm_pci_alloc(dev, PAGE_SIZE, PAGE_SIZE, 
+	    0xffffffff);
+	DRM_LOCK();
+	if (!dmah) {
+		dev->dev_private = (void *)dev_priv;
+		i915_dma_cleanup(dev);
+		DRM_ERROR("Can not allocate hardware status page\n");
+		return DRM_ERR(ENOMEM);
+	}
+
+	dev_priv->status_page_dmah = dmah;
 
 	DRM_GETSAREA();
 	if (!dev_priv->sarea) {
@@ -175,15 +195,6 @@
 	dev_priv->allow_batchbuffer = 1;
 
 	/* Program Hardware Status Page */
-	dev_priv->status_page_dmah = drm_pci_alloc(dev, PAGE_SIZE, PAGE_SIZE, 
-	    0xffffffff);
-
-	if (!dev_priv->status_page_dmah) {
-		dev->dev_private = (void *)dev_priv;
-		i915_dma_cleanup(dev);
-		DRM_ERROR("Can not allocate hardware status page\n");
-		return DRM_ERR(ENOMEM);
-	}
 	dev_priv->hw_status_page = dev_priv->status_page_dmah->vaddr;
 	dev_priv->dma_status_page = dev_priv->status_page_dmah->busaddr;
 	
@@ -350,14 +361,15 @@
 	if ((dwords+1) * sizeof(int) >= dev_priv->ring.Size - 8)
 		return DRM_ERR(EINVAL);
 
-	BEGIN_LP_RING(((dwords+1)&~1));
+	BEGIN_LP_RING((dwords+1)&~1);
 
 	for (i = 0; i < dwords;) {
 		int cmd, sz;
 
-		if (DRM_COPY_FROM_USER_UNCHECKED(&cmd, &buffer[i], sizeof(cmd)))
-			return DRM_ERR(EINVAL);
+	     if (DRM_COPY_FROM_USER_UNCHECKED(&cmd, &buffer[i], sizeof(cmd))) {
 
+			return DRM_ERR(EINVAL);
+	      }
 		if ((sz = validate_cmd(cmd)) == 0 || i + sz > dwords)
 			return DRM_ERR(EINVAL);
 
@@ -398,25 +410,40 @@
 		return DRM_ERR(EINVAL);
 	}
 
-	BEGIN_LP_RING(6);
-	OUT_RING(GFX_OP_DRAWRECT_INFO);
-	OUT_RING(DR1);
-	OUT_RING((box.x1 & 0xffff) | (box.y1 << 16));
-	OUT_RING(((box.x2 - 1) & 0xffff) | ((box.y2 - 1) << 16));
-	OUT_RING(DR4);
-	OUT_RING(0);
-	ADVANCE_LP_RING();
+	if (IS_I965G(dev)) {
+		BEGIN_LP_RING(4);
+		OUT_RING(GFX_OP_DRAWRECT_INFO_I965);
+		OUT_RING((box.x1 & 0xffff) | (box.y1 << 16));
+		OUT_RING(((box.x2 - 1) & 0xffff) | ((box.y2 - 1) << 16));
+		OUT_RING(DR4);
+		ADVANCE_LP_RING();
+	} else {
+		BEGIN_LP_RING(6);
+		OUT_RING(GFX_OP_DRAWRECT_INFO);
+		OUT_RING(DR1);
+		OUT_RING((box.x1 & 0xffff) | (box.y1 << 16));
+		OUT_RING(((box.x2 - 1) & 0xffff) | ((box.y2 - 1) << 16));
+		OUT_RING(DR4);
+		OUT_RING(0);
+		ADVANCE_LP_RING();
+	}
 
 	return 0;
 }
 
+/* XXX: Emitting the counter should really be moved to part of the IRQ
+ * emit.  For now, do it in both places:
+ */
 
 static void i915_emit_breadcrumb(drm_device_t *dev)
 {
 	drm_i915_private_t *dev_priv = dev->dev_private;
 	RING_LOCALS;
 
-	dev_priv->sarea_priv->last_enqueue = dev_priv->counter++;
+	dev_priv->sarea_priv->last_enqueue = ++dev_priv->counter;
+
+	if (dev_priv->counter > 0x7FFFFFFFUL)
+		dev_priv->sarea_priv->last_enqueue = dev_priv->counter = 1;
 
 	BEGIN_LP_RING(4);
 	OUT_RING(CMD_STORE_DWORD_IDX);
@@ -775,7 +802,9 @@
 	[DRM_IOCTL_NR(DRM_I915_FREE)] = {i915_mem_free, DRM_AUTH},
 	[DRM_IOCTL_NR(DRM_I915_INIT_HEAP)] = {i915_mem_init_heap, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY},
 	[DRM_IOCTL_NR(DRM_I915_CMDBUFFER)] = {i915_cmdbuffer, DRM_AUTH},
-	[DRM_IOCTL_NR(DRM_I915_DESTROY_HEAP)] = { i915_mem_destroy_heap, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY }
+	[DRM_IOCTL_NR(DRM_I915_DESTROY_HEAP)] = { i915_mem_destroy_heap, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY },
+	[DRM_IOCTL_NR(DRM_I915_SET_VBLANK_PIPE)] = { i915_vblank_pipe_set, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY },
+	[DRM_IOCTL_NR(DRM_I915_GET_VBLANK_PIPE)] = { i915_vblank_pipe_get, DRM_AUTH },
 };
 
 int i915_max_ioctl = DRM_ARRAY_SIZE(i915_ioctls);
Index: drm_atomic.h
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/drm_atomic.h,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -L sys/dev/drm/drm_atomic.h -L sys/dev/drm/drm_atomic.h -u -r1.1.1.1 -r1.2
--- sys/dev/drm/drm_atomic.h
+++ sys/dev/drm/drm_atomic.h
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/drm_atomic.h,v 1.1.2.1 2005/12/14 00:52:58 anholt Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/drm_atomic.h,v 1.2 2005/11/28 23:13:52 anholt Exp $");
 
 /* Many of these implementations are rather fake, but good enough. */
 
Index: drm-subprocess.pl
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/drm-subprocess.pl,v
retrieving revision 1.1
retrieving revision 1.2
diff -L sys/dev/drm/drm-subprocess.pl -L sys/dev/drm/drm-subprocess.pl -u -r1.1 -r1.2
--- sys/dev/drm/drm-subprocess.pl
+++ sys/dev/drm/drm-subprocess.pl
@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/dev/drm/drm-subprocess.pl,v 1.1.2.1 2006/05/17 07:40:11 anholt Exp $
+# $FreeBSD: src/sys/dev/drm/drm-subprocess.pl,v 1.1 2005/11/28 23:13:52 anholt Exp $
 #
 # Props to Daniel Stone for starting this script for me.  I hate perl.
 
@@ -23,7 +23,7 @@
 			print $lastline;
 		}
 	} elsif ($foundopening && !$foundclosing && /\*\//) {
-		# print the $FreeBSD: src/sys/dev/drm/drm-subprocess.pl,v 1.1.2.1 2006/05/17 07:40:11 anholt Exp $ bits after the end of the license block
+		# print the $FreeBSD: src/sys/dev/drm/drm-subprocess.pl,v 1.1 2005/11/28 23:13:52 anholt Exp $ bits after the end of the license block
 		$foundclosing = 1;
 		print;
 		print "\n";
Index: sis_mm.c
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/sis_mm.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -L sys/dev/drm/sis_mm.c -L sys/dev/drm/sis_mm.c -u -r1.2 -r1.3
--- sys/dev/drm/sis_mm.c
+++ sys/dev/drm/sis_mm.c
@@ -29,7 +29,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/sis_mm.c,v 1.7.2.2 2006/05/17 07:40:11 anholt Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/sis_mm.c,v 1.9 2006/04/09 20:45:45 anholt Exp $");
 
 #if defined(__linux__) && defined(CONFIG_FB_SIS)
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
Index: mach64_state.c
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/mach64_state.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -L sys/dev/drm/mach64_state.c -L sys/dev/drm/mach64_state.c -u -r1.1.1.1 -r1.2
--- sys/dev/drm/mach64_state.c
+++ sys/dev/drm/mach64_state.c
@@ -31,7 +31,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/mach64_state.c,v 1.1.2.1 2005/12/14 00:52:58 anholt Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/mach64_state.c,v 1.2 2005/11/28 23:13:53 anholt Exp $");
 
 #include "dev/drm/drmP.h"
 #include "dev/drm/drm.h"
Index: radeon_cp.c
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/radeon_cp.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -L sys/dev/drm/radeon_cp.c -L sys/dev/drm/radeon_cp.c -u -r1.2 -r1.3
--- sys/dev/drm/radeon_cp.c
+++ sys/dev/drm/radeon_cp.c
@@ -29,7 +29,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/radeon_cp.c,v 1.15.2.3 2006/05/17 07:40:11 anholt Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/radeon_cp.c,v 1.19 2006/09/07 23:04:47 anholt Exp $");
 
 #include "dev/drm/drmP.h"
 #include "dev/drm/drm.h"
@@ -42,7 +42,7 @@
 static int radeon_do_cleanup_cp(drm_device_t * dev);
 
 /* CP microcode (from ATI) */
-static u32 R200_cp_microcode[][2] = {
+static const u32 R200_cp_microcode[][2] = {
 	{0x21007000, 0000000000},
 	{0x20007000, 0000000000},
 	{0x000000ab, 0x00000004},
@@ -301,7 +301,7 @@
 	{0000000000, 0000000000},
 };
 
-static u32 radeon_cp_microcode[][2] = {
+static const u32 radeon_cp_microcode[][2] = {
 	{0x21007000, 0000000000},
 	{0x20007000, 0000000000},
 	{0x000000b4, 0x00000004},
@@ -560,7 +560,7 @@
 	{0000000000, 0000000000},
 };
 
-static u32 R300_cp_microcode[][2] = {
+static const u32 R300_cp_microcode[][2] = {
 	{ 0x4200e000, 0000000000 },
 	{ 0x4000e000, 0000000000 },
 	{ 0x000000af, 0x00000008 },
@@ -867,13 +867,13 @@
 
 	dev_priv->stats.boxes |= RADEON_BOX_WAIT_IDLE;
 
-	tmp = RADEON_READ(RADEON_RB2D_DSTCACHE_CTLSTAT);
-	tmp |= RADEON_RB2D_DC_FLUSH_ALL;
-	RADEON_WRITE(RADEON_RB2D_DSTCACHE_CTLSTAT, tmp);
+	tmp = RADEON_READ(RADEON_RB3D_DSTCACHE_CTLSTAT);
+	tmp |= RADEON_RB3D_DC_FLUSH_ALL;
+	RADEON_WRITE(RADEON_RB3D_DSTCACHE_CTLSTAT, tmp);
 
 	for (i = 0; i < dev_priv->usec_timeout; i++) {
-		if (!(RADEON_READ(RADEON_RB2D_DSTCACHE_CTLSTAT)
-		      & RADEON_RB2D_DC_BUSY)) {
+		if (!(RADEON_READ(RADEON_RB3D_DSTCACHE_CTLSTAT)
+		      & RADEON_RB3D_DC_BUSY)) {
 			return 0;
 		}
 		DRM_UDELAY(1);
@@ -1261,6 +1261,12 @@
 		dev_priv->writeback_works = 0;
 		DRM_INFO("writeback forced off\n");
 	}
+
+	if (!dev_priv->writeback_works) {
+		/* Disable writeback to avoid unnecessary bus master transfers */
+		RADEON_WRITE(RADEON_CP_RB_CNTL, RADEON_READ(RADEON_CP_RB_CNTL) | RADEON_RB_NO_UPDATE);
+		RADEON_WRITE(RADEON_SCRATCH_UMSK, 0);
+	}
 }
 
 /* Enable or disable PCI-E GART on the chip */
@@ -1348,6 +1354,12 @@
 		DRM_DEBUG("Forcing AGP card to PCI mode\n");
 		dev_priv->flags &= ~CHIP_IS_AGP;
 	}
+	else if (!(dev_priv->flags & (CHIP_IS_AGP | CHIP_IS_PCI | CHIP_IS_PCIE))
+		 && !init->is_pci)
+	{
+		DRM_DEBUG("Restoring AGP flag\n");
+		dev_priv->flags |= CHIP_IS_AGP;
+	}
 
 	if ((!(dev_priv->flags & CHIP_IS_AGP)) && !dev->sg) {
 		DRM_ERROR("PCI GART memory not allocated!\n");
@@ -2202,9 +2214,10 @@
 
 	if (drm_device_is_agp(dev))
 		dev_priv->flags |= CHIP_IS_AGP;
-
-	if (drm_device_is_pcie(dev))
+	else if (drm_device_is_pcie(dev))
 		dev_priv->flags |= CHIP_IS_PCIE;
+	else
+		dev_priv->flags |= CHIP_IS_PCI;
 
 	DRM_DEBUG("%s card detected\n",
 		  ((dev_priv->flags & CHIP_IS_AGP) ? "AGP" : (((dev_priv->flags & CHIP_IS_PCIE) ? "PCIE" : "PCI"))));
Index: drm_memory.c
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/drm_memory.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -L sys/dev/drm/drm_memory.c -L sys/dev/drm/drm_memory.c -u -r1.1.1.1 -r1.2
--- sys/dev/drm/drm_memory.c
+++ sys/dev/drm/drm_memory.c
@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/drm_memory.c,v 1.1.2.1 2005/12/14 00:52:58 anholt Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/drm_memory.c,v 1.2 2005/11/28 23:13:52 anholt Exp $");
 
 #include "dev/drm/drmP.h"
 
Index: r128_drv.c
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/r128_drv.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -L sys/dev/drm/r128_drv.c -L sys/dev/drm/r128_drv.c -u -r1.2 -r1.3
--- sys/dev/drm/r128_drv.c
+++ sys/dev/drm/r128_drv.c
@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/r128_drv.c,v 1.9.2.2 2006/05/17 07:40:11 anholt Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/r128_drv.c,v 1.11 2005/12/20 22:44:36 jhb Exp $");
 
 #include "dev/drm/drmP.h"
 #include "dev/drm/drm.h"
Index: r128_cce.c
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/r128_cce.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -L sys/dev/drm/r128_cce.c -L sys/dev/drm/r128_cce.c -u -r1.1.1.1 -r1.2
--- sys/dev/drm/r128_cce.c
+++ sys/dev/drm/r128_cce.c
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/r128_cce.c,v 1.12.2.2 2005/12/14 00:52:58 anholt Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/r128_cce.c,v 1.14 2005/11/28 23:13:53 anholt Exp $");
 
 #include "dev/drm/drmP.h"
 #include "dev/drm/drm.h"
Index: drm_drv.c
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/drm_drv.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -L sys/dev/drm/drm_drv.c -L sys/dev/drm/drm_drv.c -u -r1.2 -r1.3
--- sys/dev/drm/drm_drv.c
+++ sys/dev/drm/drm_drv.c
@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/drm_drv.c,v 1.1.2.2 2006/05/17 07:40:11 anholt Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/drm_drv.c,v 1.6.4.1 2008/01/29 01:39:16 kensmith Exp $");
 
 #include "dev/drm/drmP.h"
 #include "dev/drm/drm.h"
@@ -519,6 +519,9 @@
 	dev->pci_slot = pci_get_slot(dev->device);
 	dev->pci_func = pci_get_function(dev->device);
 
+	dev->pci_vendor = pci_get_vendor(dev->device);
+	dev->pci_device = pci_get_device(dev->device);
+
 	TAILQ_INIT(&dev->maplist);
 
 	drm_mem_init();
@@ -708,6 +711,9 @@
 		return EINVAL;
 	}
 
+	if (--priv->refs != 0)
+		goto done;
+
 	if (dev->driver.preclose != NULL)
 		dev->driver.preclose(dev, filp);
 
@@ -783,17 +789,17 @@
 	dev->buf_pgid = 0;
 #endif /* __NetBSD__  || __OpenBSD__ */
 
-	if (--priv->refs == 0) {
-		if (dev->driver.postclose != NULL)
-			dev->driver.postclose(dev, priv);
-		TAILQ_REMOVE(&dev->files, priv, link);
-		free(priv, M_DRM);
-	}
+	if (dev->driver.postclose != NULL)
+		dev->driver.postclose(dev, priv);
+
+	TAILQ_REMOVE(&dev->files, priv, link);
+	free(priv, M_DRM);
 
 	/* ========================================================
 	 * End inline drm_release
 	 */
 
+	done:
 	atomic_inc( &dev->counts[_DRM_STAT_CLOSES] );
 #ifdef __FreeBSD__
 	device_unbusy(dev->device);
Index: radeon_mem.c
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/radeon_mem.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -L sys/dev/drm/radeon_mem.c -L sys/dev/drm/radeon_mem.c -u -r1.1.1.1 -r1.2
--- sys/dev/drm/radeon_mem.c
+++ sys/dev/drm/radeon_mem.c
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/radeon_mem.c,v 1.7.2.1 2005/12/14 00:52:59 anholt Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/radeon_mem.c,v 1.8 2005/11/28 23:13:54 anholt Exp $");
 
 #include "dev/drm/drmP.h"
 #include "dev/drm/drm.h"
Index: r128_drv.h
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/r128_drv.h,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -L sys/dev/drm/r128_drv.h -L sys/dev/drm/r128_drv.h -u -r1.1.1.1 -r1.2
--- sys/dev/drm/r128_drv.h
+++ sys/dev/drm/r128_drv.h
@@ -33,7 +33,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/r128_drv.h,v 1.10.2.1 2005/12/14 00:52:59 anholt Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/r128_drv.h,v 1.11 2005/11/28 23:13:53 anholt Exp $");
 
 #ifndef __R128_DRV_H__
 #define __R128_DRV_H__
Index: mach64_drv.h
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/mach64_drv.h,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -L sys/dev/drm/mach64_drv.h -L sys/dev/drm/mach64_drv.h -u -r1.1.1.1 -r1.2
--- sys/dev/drm/mach64_drv.h
+++ sys/dev/drm/mach64_drv.h
@@ -33,7 +33,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/mach64_drv.h,v 1.1.2.1 2005/12/14 00:52:58 anholt Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/mach64_drv.h,v 1.2 2005/11/28 23:13:53 anholt Exp $");
 
 #ifndef __MACH64_DRV_H__
 #define __MACH64_DRV_H__
Index: i915_drv.h
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/i915_drv.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -L sys/dev/drm/i915_drv.h -L sys/dev/drm/i915_drv.h -u -r1.2 -r1.3
--- sys/dev/drm/i915_drv.h
+++ sys/dev/drm/i915_drv.h
@@ -28,7 +28,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/i915_drv.h,v 1.1.2.2 2006/05/17 07:40:11 anholt Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/i915_drv.h,v 1.4 2006/09/07 23:04:47 anholt Exp $");
 
 #ifndef _I915_DRV_H_
 #define _I915_DRV_H_
@@ -48,9 +48,10 @@
  * 1.2: Add Power Management
  * 1.3: Add vblank support
  * 1.4: Fix cmdbuffer path, add heap destroy
+ * 1.5: Add vblank pipe configuration
  */
 #define DRIVER_MAJOR		1
-#define DRIVER_MINOR		4
+#define DRIVER_MINOR		5
 #define DRIVER_PATCHLEVEL	0
 
 typedef struct _drm_i915_ring_buffer {
@@ -99,6 +100,7 @@
 	int allow_batchbuffer;
 	struct mem_block *agp_heap;
 	unsigned int sr01, adpa, ppcr, dvob, dvoc, lvds;
+	int vblank_pipe;
 } drm_i915_private_t;
 
 extern drm_ioctl_desc_t i915_ioctls[];
@@ -122,6 +124,8 @@
 extern void i915_driver_irq_preinstall(drm_device_t * dev);
 extern void i915_driver_irq_postinstall(drm_device_t * dev);
 extern void i915_driver_irq_uninstall(drm_device_t * dev);
+extern int i915_vblank_pipe_set(DRM_IOCTL_ARGS);
+extern int i915_vblank_pipe_get(DRM_IOCTL_ARGS);
 
 /* i915_mem.c */
 extern int i915_mem_alloc(DRM_IOCTL_ARGS);
@@ -140,14 +144,14 @@
 #define I915_VERBOSE 0
 
 #define RING_LOCALS	unsigned int outring, ringmask, outcount; \
-                        volatile char *virt;
+			volatile char *virt;
 
 #define BEGIN_LP_RING(n) do {				\
 	if (I915_VERBOSE)				\
 		DRM_DEBUG("BEGIN_LP_RING(%d) in %s\n",	\
-			  n, __FUNCTION__);		\
-	if (dev_priv->ring.space < n*4)			\
-		i915_wait_ring(dev, n*4, __FUNCTION__);		\
+	                         (n), __FUNCTION__);           \
+	if (dev_priv->ring.space < (n)*4)                      \
+		i915_wait_ring(dev, (n)*4, __FUNCTION__);      \
 	outcount = 0;					\
 	outring = dev_priv->ring.tail;			\
 	ringmask = dev_priv->ring.tail_mask;		\
@@ -156,8 +160,8 @@
 
 #define OUT_RING(n) do {					\
 	if (I915_VERBOSE) DRM_DEBUG("   OUT_RING %x\n", (int)(n));	\
-	*(volatile unsigned int *)(virt + outring) = n;		\
-        outcount++;						\
+	*(volatile unsigned int *)(virt + outring) = (n);		\
+	outcount++;						\
 	outring += 4;						\
 	outring &= ringmask;					\
 } while (0)
@@ -253,6 +257,8 @@
 #define GFX_OP_DESTBUFFER_VARS   ((0x3<<29)|(0x1d<<24)|(0x85<<16)|0x0)
 #define GFX_OP_DRAWRECT_INFO     ((0x3<<29)|(0x1d<<24)|(0x80<<16)|(0x3))
 
+#define GFX_OP_DRAWRECT_INFO_I965  ((0x7900<<16)|0x2)
+
 #define MI_BATCH_BUFFER 	((0x30<<23)|1)
 #define MI_BATCH_BUFFER_START 	(0x31<<23)
 #define MI_BATCH_BUFFER_END 	(0xA<<23)
Index: i915_drv.c
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/i915_drv.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -L sys/dev/drm/i915_drv.c -L sys/dev/drm/i915_drv.c -u -r1.2 -r1.3
--- sys/dev/drm/i915_drv.c
+++ sys/dev/drm/i915_drv.c
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/i915_drv.c,v 1.1.2.2 2006/05/17 07:40:11 anholt Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/i915_drv.c,v 1.5 2006/05/17 06:36:28 anholt Exp $");
 
 #include "dev/drm/drmP.h"
 #include "dev/drm/drm.h"
Index: mga_dma.c
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/mga_dma.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -L sys/dev/drm/mga_dma.c -L sys/dev/drm/mga_dma.c -u -r1.1.1.1 -r1.2
--- sys/dev/drm/mga_dma.c
+++ sys/dev/drm/mga_dma.c
@@ -26,7 +26,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/mga_dma.c,v 1.12.2.1 2005/12/14 00:52:58 anholt Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/mga_dma.c,v 1.13 2005/11/28 23:13:53 anholt Exp $");
 
 /**
  * \file mga_dma.c
Index: drm_linux_list.h
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/drm_linux_list.h,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -L sys/dev/drm/drm_linux_list.h -L sys/dev/drm/drm_linux_list.h -u -r1.1.1.1 -r1.2
--- sys/dev/drm/drm_linux_list.h
+++ sys/dev/drm/drm_linux_list.h
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/drm_linux_list.h,v 1.3.2.1 2005/12/14 00:52:58 anholt Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/drm_linux_list.h,v 1.4 2005/11/28 23:13:52 anholt Exp $");
 
 struct list_head {
 	struct list_head *next, *prev;
Index: drm_pciids.h
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/drm_pciids.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -L sys/dev/drm/drm_pciids.h -L sys/dev/drm/drm_pciids.h -u -r1.2 -r1.3
--- sys/dev/drm/drm_pciids.h
+++ sys/dev/drm/drm_pciids.h
@@ -1,5 +1,5 @@
 /*
- * $FreeBSD: src/sys/dev/drm/drm_pciids.h,v 1.2.2.3 2006/05/17 07:40:11 anholt Exp $
+ * $FreeBSD: src/sys/dev/drm/drm_pciids.h,v 1.7 2006/09/07 23:04:47 anholt Exp $
  */
 /*
    This file is auto-generated from the drm_pciids.txt in the DRM CVS
@@ -230,6 +230,7 @@
 	{0x1106, 0x3122, 0, "VIA CLE266"}, \
 	{0x1106, 0x7205, 0, "VIA KM400"}, \
 	{0x1106, 0x3108, 0, "VIA K8M800"}, \
+	{0x1106, 0x3344, 0, "VIA P4VM800PRO"}, \
 	{0, 0, 0, NULL}
 
 #define i810_PCI_IDS \
@@ -288,6 +289,10 @@
 	{0x8086, 0x2592, 0, "Intel i915GM"}, \
 	{0x8086, 0x2772, 0, "Intel i945G"}, \
 	{0x8086, 0x27A2, 0, "Intel i945GM"}, \
+	{0x8086, 0x2972, 0, "Intel i946GZ"}, \
+	{0x8086, 0x2982, 0, "Intel i965G"}, \
+	{0x8086, 0x2992, 0, "Intel i965Q"}, \
+	{0x8086, 0x29A2, 0, "Intel i965G"}, \
 	{0, 0, 0, NULL}
 
 #define imagine_PCI_IDS \
Index: mach64_irq.c
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/mach64_irq.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -L sys/dev/drm/mach64_irq.c -L sys/dev/drm/mach64_irq.c -u -r1.1.1.1 -r1.2
--- sys/dev/drm/mach64_irq.c
+++ sys/dev/drm/mach64_irq.c
@@ -36,7 +36,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/mach64_irq.c,v 1.1.2.1 2005/12/14 00:52:58 anholt Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/mach64_irq.c,v 1.2 2005/11/28 23:13:53 anholt Exp $");
 
 #include "dev/drm/drmP.h"
 #include "dev/drm/drm.h"
Index: sis_drm.h
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/sis_drm.h,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -L sys/dev/drm/sis_drm.h -L sys/dev/drm/sis_drm.h -u -r1.1.1.1 -r1.2
--- sys/dev/drm/sis_drm.h
+++ sys/dev/drm/sis_drm.h
@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/sis_drm.h,v 1.5.2.1 2005/12/14 00:52:59 anholt Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/sis_drm.h,v 1.6 2005/11/28 23:13:55 anholt Exp $");
 
 #ifndef __SIS_DRM_H__
 #define __SIS_DRM_H__
Index: drm_ioctl.c
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/drm_ioctl.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -L sys/dev/drm/drm_ioctl.c -L sys/dev/drm/drm_ioctl.c -u -r1.1.1.1 -r1.2
--- sys/dev/drm/drm_ioctl.c
+++ sys/dev/drm/drm_ioctl.c
@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/drm_ioctl.c,v 1.1.2.1 2005/12/14 00:52:58 anholt Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/drm_ioctl.c,v 1.2 2005/11/28 23:13:52 anholt Exp $");
 
 #include "dev/drm/drmP.h"
 
Index: mach64_dma.c
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/mach64_dma.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -L sys/dev/drm/mach64_dma.c -L sys/dev/drm/mach64_dma.c -u -r1.1.1.1 -r1.2
--- sys/dev/drm/mach64_dma.c
+++ sys/dev/drm/mach64_dma.c
@@ -35,7 +35,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/mach64_dma.c,v 1.1.2.1 2005/12/14 00:52:58 anholt Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/mach64_dma.c,v 1.2 2005/11/28 23:13:53 anholt Exp $");
 
 #include "dev/drm/drmP.h"
 #include "dev/drm/drm.h"
Index: drm_sysctl.c
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/drm_sysctl.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -L sys/dev/drm/drm_sysctl.c -L sys/dev/drm/drm_sysctl.c -u -r1.1.1.1 -r1.2
--- sys/dev/drm/drm_sysctl.c
+++ sys/dev/drm/drm_sysctl.c
@@ -22,7 +22,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/drm_sysctl.c,v 1.1.2.1 2005/12/14 00:52:58 anholt Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/drm_sysctl.c,v 1.2 2005/11/28 23:13:53 anholt Exp $");
 
 #include "dev/drm/drmP.h"
 #include "dev/drm/drm.h"
Index: mga_state.c
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/mga_state.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -L sys/dev/drm/mga_state.c -L sys/dev/drm/mga_state.c -u -r1.1.1.1 -r1.2
--- sys/dev/drm/mga_state.c
+++ sys/dev/drm/mga_state.c
@@ -34,7 +34,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/mga_state.c,v 1.10.2.1 2005/12/14 00:52:58 anholt Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/mga_state.c,v 1.11 2005/11/28 23:13:53 anholt Exp $");
 
 #include "dev/drm/drmP.h"
 #include "dev/drm/drm.h"
Index: radeon_drv.c
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/radeon_drv.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -L sys/dev/drm/radeon_drv.c -L sys/dev/drm/radeon_drv.c -u -r1.2 -r1.3
--- sys/dev/drm/radeon_drv.c
+++ sys/dev/drm/radeon_drv.c
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/radeon_drv.c,v 1.12.2.2 2006/05/17 07:40:11 anholt Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/radeon_drv.c,v 1.14 2005/12/20 22:44:36 jhb Exp $");
 
 #include "dev/drm/drmP.h"
 #include "dev/drm/drm.h"
Index: mga_drm.h
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/mga_drm.h,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -L sys/dev/drm/mga_drm.h -L sys/dev/drm/mga_drm.h -u -r1.1.1.1 -r1.2
--- sys/dev/drm/mga_drm.h
+++ sys/dev/drm/mga_drm.h
@@ -33,7 +33,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/mga_drm.h,v 1.6.2.1 2005/12/14 00:52:58 anholt Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/mga_drm.h,v 1.7 2005/11/28 23:13:53 anholt Exp $");
 
 #ifndef __MGA_DRM_H__
 #define __MGA_DRM_H__
Index: r300_cmdbuf.c
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/r300_cmdbuf.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -L sys/dev/drm/r300_cmdbuf.c -L sys/dev/drm/r300_cmdbuf.c -u -r1.2 -r1.3
--- sys/dev/drm/r300_cmdbuf.c
+++ sys/dev/drm/r300_cmdbuf.c
@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/r300_cmdbuf.c,v 1.2.2.3 2006/05/17 07:40:11 anholt Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/r300_cmdbuf.c,v 1.5 2006/05/17 06:36:28 anholt Exp $");
 
 #include "dev/drm/drmP.h"
 #include "dev/drm/drm.h"
Index: savage_state.c
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/savage_state.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -L sys/dev/drm/savage_state.c -L sys/dev/drm/savage_state.c -u -r1.2 -r1.3
--- sys/dev/drm/savage_state.c
+++ sys/dev/drm/savage_state.c
@@ -24,7 +24,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/savage_state.c,v 1.1.2.2 2006/05/17 07:40:11 anholt Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/savage_state.c,v 1.3 2006/04/09 20:45:45 anholt Exp $");
 #include "dev/drm/drmP.h"
 #include "dev/drm/savage_drm.h"
 #include "dev/drm/savage_drv.h"
Index: r128_state.c
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/r128_state.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -L sys/dev/drm/r128_state.c -L sys/dev/drm/r128_state.c -u -r1.1.1.1 -r1.2
--- sys/dev/drm/r128_state.c
+++ sys/dev/drm/r128_state.c
@@ -29,7 +29,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/r128_state.c,v 1.12.2.1 2005/12/14 00:52:59 anholt Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/r128_state.c,v 1.13 2005/11/28 23:13:53 anholt Exp $");
 
 #include "dev/drm/drmP.h"
 #include "dev/drm/drm.h"
Index: r300_reg.h
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/r300_reg.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -L sys/dev/drm/r300_reg.h -L sys/dev/drm/r300_reg.h -u -r1.2 -r1.3
--- sys/dev/drm/r300_reg.h
+++ sys/dev/drm/r300_reg.h
@@ -24,7 +24,7 @@
 **************************************************************************/
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/r300_reg.h,v 1.1.2.3 2006/05/17 07:40:11 anholt Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/r300_reg.h,v 1.3 2006/04/09 20:45:45 anholt Exp $");
 
 #ifndef _R300_REG_H
 #define _R300_REG_H
Index: savage_bci.c
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/savage_bci.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -L sys/dev/drm/savage_bci.c -L sys/dev/drm/savage_bci.c -u -r1.2 -r1.3
--- sys/dev/drm/savage_bci.c
+++ sys/dev/drm/savage_bci.c
@@ -24,7 +24,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/savage_bci.c,v 1.1.2.2 2006/05/17 07:40:11 anholt Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/savage_bci.c,v 1.3 2006/04/09 20:45:45 anholt Exp $");
 #include "dev/drm/drmP.h"
 #include "dev/drm/savage_drm.h"
 #include "dev/drm/savage_drv.h"
Index: drm_context.c
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/drm_context.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -L sys/dev/drm/drm_context.c -L sys/dev/drm/drm_context.c -u -r1.1.1.1 -r1.2
--- sys/dev/drm/drm_context.c
+++ sys/dev/drm/drm_context.c
@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/drm_context.c,v 1.1.2.1 2005/12/14 00:52:58 anholt Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/drm_context.c,v 1.2 2005/11/28 23:13:52 anholt Exp $");
 
 #include "dev/drm/drmP.h"
 
Index: savage_drv.h
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/savage_drv.h,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -L sys/dev/drm/savage_drv.h -L sys/dev/drm/savage_drv.h -u -r1.1.1.1 -r1.2
--- sys/dev/drm/savage_drv.h
+++ sys/dev/drm/savage_drv.h
@@ -24,7 +24,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/savage_drv.h,v 1.1.2.1 2005/12/14 00:52:59 anholt Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/savage_drv.h,v 1.2 2005/11/28 23:13:55 anholt Exp $");
 
 #ifndef __SAVAGE_DRV_H__
 #define __SAVAGE_DRV_H__
Index: mga_irq.c
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/mga_irq.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -L sys/dev/drm/mga_irq.c -L sys/dev/drm/mga_irq.c -u -r1.1.1.1 -r1.2
--- sys/dev/drm/mga_irq.c
+++ sys/dev/drm/mga_irq.c
@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/mga_irq.c,v 1.5.2.1 2005/12/14 00:52:58 anholt Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/mga_irq.c,v 1.6 2005/11/28 23:13:53 anholt Exp $");
 
 #include "dev/drm/drmP.h"
 #include "dev/drm/drm.h"
Index: drm-preprocess.sh
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/drm-preprocess.sh,v
retrieving revision 1.1
retrieving revision 1.2
diff -L sys/dev/drm/drm-preprocess.sh -L sys/dev/drm/drm-preprocess.sh -u -r1.1 -r1.2
--- sys/dev/drm/drm-preprocess.sh
+++ sys/dev/drm/drm-preprocess.sh
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-# $FreeBSD: src/sys/dev/drm/drm-preprocess.sh,v 1.3.2.1 2006/05/17 07:40:11 anholt Exp $
+# $FreeBSD: src/sys/dev/drm/drm-preprocess.sh,v 1.3 2006/04/09 20:45:44 anholt Exp $
 
 cvs up -CPd *.[ch]
 
@@ -14,7 +14,7 @@
 
 (cd /usr/src/drm/bsd-core/ && make drm_pciids.h)
 
-# Replace drm_pciids.h with one with a $FreeBSD: src/sys/dev/drm/drm-preprocess.sh,v 1.3.2.1 2006/05/17 07:40:11 anholt Exp $
+# Replace drm_pciids.h with one with a $FreeBSD: src/sys/dev/drm/drm-preprocess.sh,v 1.3 2006/04/09 20:45:44 anholt Exp $
 line=`grep \\\$FreeBSD drm_pciids.h.cvs`
 rm -f drm_pciids.h
 echo "/*" >> drm_pciids.h
Index: mga_drv.c
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/mga_drv.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -L sys/dev/drm/mga_drv.c -L sys/dev/drm/mga_drv.c -u -r1.2 -r1.3
--- sys/dev/drm/mga_drv.c
+++ sys/dev/drm/mga_drv.c
@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/mga_drv.c,v 1.9.2.2 2006/05/17 07:40:11 anholt Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/mga_drv.c,v 1.12 2006/05/17 06:36:28 anholt Exp $");
 
 #include "dev/drm/drmP.h"
 #include "dev/drm/drm.h"
Index: i915_irq.c
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/i915_irq.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -L sys/dev/drm/i915_irq.c -L sys/dev/drm/i915_irq.c -u -r1.2 -r1.3
--- sys/dev/drm/i915_irq.c
+++ sys/dev/drm/i915_irq.c
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/i915_irq.c,v 1.1.2.2 2006/05/17 07:40:11 anholt Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/i915_irq.c,v 1.4 2006/09/07 23:04:47 anholt Exp $");
 
 #include "dev/drm/drmP.h"
 #include "dev/drm/drm.h"
@@ -48,7 +48,7 @@
 
 	temp = I915_READ16(I915REG_INT_IDENTITY_R);
 
-	temp &= (USER_INT_FLAG | VSYNC_PIPEA_FLAG);
+	temp &= (USER_INT_FLAG | VSYNC_PIPEA_FLAG | VSYNC_PIPEB_FLAG);
 
 	DRM_DEBUG("%s flag=%08x\n", __FUNCTION__, temp);
 
@@ -62,7 +62,7 @@
 	if (temp & USER_INT_FLAG)
 		DRM_WAKEUP(&dev_priv->irq_queue);
 
-	if (temp & VSYNC_PIPEA_FLAG) {
+	if (temp & (VSYNC_PIPEA_FLAG | VSYNC_PIPEB_FLAG)) {
 		atomic_inc(&dev->vbl_received);
 		DRM_WAKEUP(&dev->vbl_queue);
 		drm_vbl_send_signals(dev);
@@ -73,22 +73,32 @@
 
 static int i915_emit_irq(drm_device_t * dev)
 {
+	
 	drm_i915_private_t *dev_priv = dev->dev_private;
-	u32 ret;
 	RING_LOCALS;
 
 	i915_kernel_lost_context(dev);
 
 	DRM_DEBUG("%s\n", __FUNCTION__);
 
-	ret = dev_priv->counter;
+	dev_priv->sarea_priv->last_enqueue = ++dev_priv->counter;
+
+	if (dev_priv->counter > 0x7FFFFFFFUL)
+		 dev_priv->sarea_priv->last_enqueue = dev_priv->counter = 1;
+
+	BEGIN_LP_RING(6);
+	OUT_RING(CMD_STORE_DWORD_IDX);
+	OUT_RING(20);
+	OUT_RING(dev_priv->counter);
 
-	BEGIN_LP_RING(2);
+	OUT_RING(0);
 	OUT_RING(0);
 	OUT_RING(GFX_OP_USER_INTERRUPT);
 	ADVANCE_LP_RING();
 
-	return ret;
+	return dev_priv->counter;
+
+
 }
 
 static int i915_wait_irq(drm_device_t * dev, int irq_nr)
@@ -185,6 +195,68 @@
 	return i915_wait_irq(dev, irqwait.irq_seq);
 }
 
+static int i915_enable_interrupt (drm_device_t *dev)
+{
+	drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private;
+	u16 flag;
+	
+	flag = 0;
+	if (dev_priv->vblank_pipe & DRM_I915_VBLANK_PIPE_A)
+		flag |= VSYNC_PIPEA_FLAG;
+	if (dev_priv->vblank_pipe & DRM_I915_VBLANK_PIPE_B)
+		flag |= VSYNC_PIPEB_FLAG;
+	if (dev_priv->vblank_pipe & ~(DRM_I915_VBLANK_PIPE_A|DRM_I915_VBLANK_PIPE_B)) {
+		DRM_ERROR("%s called with invalid pipe 0x%x\n", 
+			  __FUNCTION__, dev_priv->vblank_pipe);
+		return DRM_ERR(EINVAL);
+	}
+	I915_WRITE16(I915REG_INT_ENABLE_R, USER_INT_FLAG | flag);
+	return 0;
+}
+
+/* Set the vblank monitor pipe
+ */
+int i915_vblank_pipe_set(DRM_IOCTL_ARGS)
+{
+	DRM_DEVICE;
+	drm_i915_private_t *dev_priv = dev->dev_private;
+	drm_i915_vblank_pipe_t pipe;
+
+	if (!dev_priv) {
+		DRM_ERROR("%s called with no initialization\n", __FUNCTION__);
+		return DRM_ERR(EINVAL);
+	}
+
+	DRM_COPY_FROM_USER_IOCTL(pipe, (drm_i915_vblank_pipe_t __user *) data,
+				 sizeof(pipe));
+
+	dev_priv->vblank_pipe = pipe.pipe;
+	return i915_enable_interrupt (dev);
+}
+
+int i915_vblank_pipe_get(DRM_IOCTL_ARGS)
+{
+	DRM_DEVICE;
+	drm_i915_private_t *dev_priv = dev->dev_private;
+	drm_i915_vblank_pipe_t pipe;
+	u16 flag;
+
+	if (!dev_priv) {
+		DRM_ERROR("%s called with no initialization\n", __FUNCTION__);
+		return DRM_ERR(EINVAL);
+	}
+
+	flag = I915_READ(I915REG_INT_ENABLE_R);
+	pipe.pipe = 0;
+	if (flag & VSYNC_PIPEA_FLAG)
+		pipe.pipe |= DRM_I915_VBLANK_PIPE_A;
+	if (flag & VSYNC_PIPEB_FLAG)
+		pipe.pipe |= DRM_I915_VBLANK_PIPE_B;
+	DRM_COPY_TO_USER_IOCTL((drm_i915_vblank_pipe_t __user *) data, pipe,
+				 sizeof(pipe));
+	return 0;
+}
+
 /* drm_dma.h hooks
 */
 void i915_driver_irq_preinstall(drm_device_t * dev)
@@ -200,7 +272,7 @@
 {
 	drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private;
 
-	I915_WRITE16(I915REG_INT_ENABLE_R, USER_INT_FLAG | VSYNC_PIPEA_FLAG);
+	i915_enable_interrupt(dev);
 	DRM_INIT_WAITQUEUE(&dev_priv->irq_queue);
 }
 
Index: drm_dma.c
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/drm_dma.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -L sys/dev/drm/drm_dma.c -L sys/dev/drm/drm_dma.c -u -r1.1.1.1 -r1.2
--- sys/dev/drm/drm_dma.c
+++ sys/dev/drm/drm_dma.c
@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/drm_dma.c,v 1.1.2.1 2005/12/14 00:52:58 anholt Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/drm_dma.c,v 1.2 2005/11/28 23:13:52 anholt Exp $");
 
 #include "dev/drm/drmP.h"
 
Index: sis_ds.c
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/sis_ds.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -L sys/dev/drm/sis_ds.c -L sys/dev/drm/sis_ds.c -u -r1.2 -r1.3
--- sys/dev/drm/sis_ds.c
+++ sys/dev/drm/sis_ds.c
@@ -29,7 +29,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/sis_ds.c,v 1.3.2.2 2006/05/17 07:40:11 anholt Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/sis_ds.c,v 1.5 2006/04/09 20:45:45 anholt Exp $");
 
 #include "dev/drm/drmP.h"
 #include "dev/drm/drm.h"
Index: r128_drm.h
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/r128_drm.h,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -L sys/dev/drm/r128_drm.h -L sys/dev/drm/r128_drm.h -u -r1.1.1.1 -r1.2
--- sys/dev/drm/r128_drm.h
+++ sys/dev/drm/r128_drm.h
@@ -31,7 +31,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/r128_drm.h,v 1.7.2.1 2005/12/14 00:52:59 anholt Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/r128_drm.h,v 1.8 2005/11/28 23:13:53 anholt Exp $");
 
 #ifndef __R128_DRM_H__
 #define __R128_DRM_H__
Index: drm_scatter.c
===================================================================
RCS file: /home/cvs/src/sys/dev/drm/drm_scatter.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -L sys/dev/drm/drm_scatter.c -L sys/dev/drm/drm_scatter.c -u -r1.2 -r1.3
--- sys/dev/drm/drm_scatter.c
+++ sys/dev/drm/drm_scatter.c
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/drm/drm_scatter.c,v 1.1.2.2 2006/05/17 07:40:11 anholt Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/drm/drm_scatter.c,v 1.3 2006/05/17 06:29:36 anholt Exp $");
 
 #include "dev/drm/drmP.h"
 


More information about the Midnightbsd-cvs mailing list