summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--shared-core/via_drm.h14
-rw-r--r--shared-core/via_drv.c4
-rw-r--r--shared/via.h1
-rw-r--r--shared/via_drm.h14
-rw-r--r--shared/via_drv.c4
5 files changed, 17 insertions, 20 deletions
diff --git a/shared-core/via_drm.h b/shared-core/via_drm.h
index da80aa92..e984932c 100644
--- a/shared-core/via_drm.h
+++ b/shared-core/via_drm.h
@@ -35,7 +35,8 @@
#define VIA_DMA_BUF_SZ (1 << VIA_DMA_BUF_ORDER)
#define VIA_DMA_BUF_NR 256
#define VIA_NR_SAREA_CLIPRECTS 8
-#define VIA_NR_XVMC_LOCKS 2
+#define VIA_NR_XVMC_PORTS 10
+#define VIA_NR_XVMC_LOCKS 5
#define VIA_MAX_CACHELINE_SIZE 64
#define XVMCLOCKPTR(saPriv,lockNo) \
((volatile int *)(((((unsigned long) (saPriv)->XvMCLockArea) + \
@@ -142,19 +143,16 @@ typedef struct _drm_via_sarea {
/*
* Below is for XvMC.
- */
-
- unsigned int XvMCSubPicOn; /* Subpicture displaying flag */
- unsigned int XvMCDisplaying; /* Surface displaying flag */
- unsigned int XvMCCtxNoGrabbed; /* Last context to hold decoder */
-
- /*
* We want the lock integers alone on, and aligned to, a cache line.
* Therefore this somewhat strange construct.
*/
char XvMCLockArea[VIA_MAX_CACHELINE_SIZE * (VIA_NR_XVMC_LOCKS + 1)];
+ unsigned int XvMCDisplaying[VIA_NR_XVMC_PORTS];
+ unsigned int XvMCSubPicOn[VIA_NR_XVMC_PORTS];
+ unsigned int XvMCCtxNoGrabbed; /* Last context to hold decoder */
+
} drm_via_sarea_t;
diff --git a/shared-core/via_drv.c b/shared-core/via_drv.c
index 65ea55a1..6f41f1fc 100644
--- a/shared-core/via_drv.c
+++ b/shared-core/via_drv.c
@@ -31,10 +31,10 @@
#define DRIVER_NAME "via"
#define DRIVER_DESC "VIA Unichrome"
-#define DRIVER_DATE "20040317"
+#define DRIVER_DATE "20040411"
#define DRIVER_MAJOR 1
-#define DRIVER_MINOR 2
+#define DRIVER_MINOR 3
#define DRIVER_PATCHLEVEL 0
diff --git a/shared/via.h b/shared/via.h
index 8e81e571..7974dfbe 100644
--- a/shared/via.h
+++ b/shared/via.h
@@ -53,6 +53,7 @@ extern int via_final_context(int context);
#define DRIVER_CTX_DTOR via_final_context
#define DRIVER_PCI_IDS \
+ {0x1106, 0x3022, 0, "VIA CLE266 3022"}, \
{0x1106, 0x3122, 0, "VIA CLE266"}, \
{0x1106, 0x7205, 0, "VIA KM400"}, \
{0x1106, 0x7204, 0, "VIA K8M800"}, \
diff --git a/shared/via_drm.h b/shared/via_drm.h
index da80aa92..e984932c 100644
--- a/shared/via_drm.h
+++ b/shared/via_drm.h
@@ -35,7 +35,8 @@
#define VIA_DMA_BUF_SZ (1 << VIA_DMA_BUF_ORDER)
#define VIA_DMA_BUF_NR 256
#define VIA_NR_SAREA_CLIPRECTS 8
-#define VIA_NR_XVMC_LOCKS 2
+#define VIA_NR_XVMC_PORTS 10
+#define VIA_NR_XVMC_LOCKS 5
#define VIA_MAX_CACHELINE_SIZE 64
#define XVMCLOCKPTR(saPriv,lockNo) \
((volatile int *)(((((unsigned long) (saPriv)->XvMCLockArea) + \
@@ -142,19 +143,16 @@ typedef struct _drm_via_sarea {
/*
* Below is for XvMC.
- */
-
- unsigned int XvMCSubPicOn; /* Subpicture displaying flag */
- unsigned int XvMCDisplaying; /* Surface displaying flag */
- unsigned int XvMCCtxNoGrabbed; /* Last context to hold decoder */
-
- /*
* We want the lock integers alone on, and aligned to, a cache line.
* Therefore this somewhat strange construct.
*/
char XvMCLockArea[VIA_MAX_CACHELINE_SIZE * (VIA_NR_XVMC_LOCKS + 1)];
+ unsigned int XvMCDisplaying[VIA_NR_XVMC_PORTS];
+ unsigned int XvMCSubPicOn[VIA_NR_XVMC_PORTS];
+ unsigned int XvMCCtxNoGrabbed; /* Last context to hold decoder */
+
} drm_via_sarea_t;
diff --git a/shared/via_drv.c b/shared/via_drv.c
index 65ea55a1..6f41f1fc 100644
--- a/shared/via_drv.c
+++ b/shared/via_drv.c
@@ -31,10 +31,10 @@
#define DRIVER_NAME "via"
#define DRIVER_DESC "VIA Unichrome"
-#define DRIVER_DATE "20040317"
+#define DRIVER_DATE "20040411"
#define DRIVER_MAJOR 1
-#define DRIVER_MINOR 2
+#define DRIVER_MINOR 3
#define DRIVER_PATCHLEVEL 0