summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuc Verhaegen <libv@skynet.be>2010-03-20 02:37:38 +0100
committerLuc Verhaegen <libv@skynet.be>2010-03-20 02:37:38 +0100
commit30fdda6c3ef81007fe72ef9da5430563f34e91e8 (patch)
tree28c16bdc89a38f28b0aaa869a6b1ef368c6a267e
parent7476337246e984b0d7ac6ed93b18787c834a71b3 (diff)
DRM: remove DRM_VIA_DEC_FUTEX.
Only used by the less than ideal openchrome xvmc implementation.
-rwxr-xr-xdrm/Kbuild2
-rw-r--r--drm/via_dma.c1
-rw-r--r--drm/via_drm.h36
-rw-r--r--drm/via_drv.c6
-rw-r--r--drm/via_drv.h11
-rw-r--r--drm/via_map.c2
-rw-r--r--drm/via_mm.c6
-rw-r--r--drm/via_video.c94
8 files changed, 11 insertions, 147 deletions
diff --git a/drm/Kbuild b/drm/Kbuild
index ddb1521..9314b41 100755
--- a/drm/Kbuild
+++ b/drm/Kbuild
@@ -1,5 +1,5 @@
EXTRA_CFLAGS += -I/usr/include -I./drivers/char/drm -I./include/drm
via-y := via_irq.o via_drv.o via_map.o via_mm.o via_dma.o via_verifier.o \
- via_video.o via_dmablit.o
+ via_dmablit.o
obj-m := via.o
diff --git a/drm/via_dma.c b/drm/via_dma.c
index bcc98ba..dac5ff8 100644
--- a/drm/via_dma.c
+++ b/drm/via_dma.c
@@ -747,7 +747,6 @@ struct drm_ioctl_desc via_ioctls[] = {
DRM_IOCTL_DEF(DRM_VIA_AGP_INIT, via_agp_init, DRM_AUTH|DRM_MASTER),
DRM_IOCTL_DEF(DRM_VIA_FB_INIT, via_fb_init, DRM_AUTH|DRM_MASTER),
DRM_IOCTL_DEF(DRM_VIA_MAP_INIT, via_map_init, DRM_AUTH|DRM_MASTER),
- DRM_IOCTL_DEF(DRM_VIA_DEC_FUTEX, via_decoder_futex, DRM_AUTH),
DRM_IOCTL_DEF(DRM_VIA_DMA_INIT, via_dma_init, DRM_AUTH),
DRM_IOCTL_DEF(DRM_VIA_CMDBUFFER, via_cmdbuffer, DRM_AUTH),
DRM_IOCTL_DEF(DRM_VIA_FLUSH, via_flush_ioctl, DRM_AUTH),
diff --git a/drm/via_drm.h b/drm/via_drm.h
index 1c60bdb..465b429 100644
--- a/drm/via_drm.h
+++ b/drm/via_drm.h
@@ -24,6 +24,10 @@
#ifndef _VIA_DRM_H_
#define _VIA_DRM_H_
+#define VIA_DRM_DRIVER_MAJOR 3
+#define VIA_DRM_DRIVER_MINOR 0
+#define VIA_DRM_DRIVER_PATCHLEVEL 0
+
#include <linux/types.h>
/* WARNING: These defines must be the same as what the Xserver uses.
@@ -38,14 +42,7 @@
#endif
#define VIA_NR_SAREA_CLIPRECTS 8
-#define VIA_NR_XVMC_PORTS 10
-#define VIA_NR_XVMC_LOCKS 5
#define VIA_MAX_CACHELINE_SIZE 64
-#define XVMCLOCKPTR(saPriv,lockNo) \
- ((volatile struct drm_hw_lock *)(((((unsigned long) (saPriv)->XvMCLockArea) + \
- (VIA_MAX_CACHELINE_SIZE - 1)) & \
- ~(VIA_MAX_CACHELINE_SIZE - 1)) + \
- VIA_MAX_CACHELINE_SIZE*(lockNo)))
/* Each region is a minimum of 64k, and there are at most 64 of them.
*/
@@ -68,7 +65,7 @@
#define DRM_VIA_AGP_INIT 0x02
#define DRM_VIA_FB_INIT 0x03
#define DRM_VIA_MAP_INIT 0x04
-#define DRM_VIA_DEC_FUTEX 0x05
+#define NOT_USED
#define NOT_USED
#define DRM_VIA_DMA_INIT 0x07
#define DRM_VIA_CMDBUFFER 0x08
@@ -85,7 +82,6 @@
#define DRM_IOCTL_VIA_AGP_INIT DRM_IOWR(DRM_COMMAND_BASE + DRM_VIA_AGP_INIT, drm_via_agp_t)
#define DRM_IOCTL_VIA_FB_INIT DRM_IOWR(DRM_COMMAND_BASE + DRM_VIA_FB_INIT, drm_via_fb_t)
#define DRM_IOCTL_VIA_MAP_INIT DRM_IOWR(DRM_COMMAND_BASE + DRM_VIA_MAP_INIT, drm_via_init_t)
-#define DRM_IOCTL_VIA_DEC_FUTEX DRM_IOW( DRM_COMMAND_BASE + DRM_VIA_DEC_FUTEX, drm_via_futex_t)
#define DRM_IOCTL_VIA_DMA_INIT DRM_IOWR(DRM_COMMAND_BASE + DRM_VIA_DMA_INIT, drm_via_dma_init_t)
#define DRM_IOCTL_VIA_CMDBUFFER DRM_IOW( DRM_COMMAND_BASE + DRM_VIA_CMDBUFFER, drm_via_cmdbuffer_t)
#define DRM_IOCTL_VIA_FLUSH DRM_IO( DRM_COMMAND_BASE + DRM_VIA_FLUSH)
@@ -145,16 +141,6 @@ typedef struct _drm_via_init {
unsigned long agpAddr;
} drm_via_init_t;
-typedef struct _drm_via_futex {
- enum {
- VIA_FUTEX_WAIT = 0x00,
- VIA_FUTEX_WAKE = 0X01
- } func;
- __u32 ms;
- __u32 lock;
- __u32 val;
-} drm_via_futex_t;
-
typedef struct _drm_via_dma_init {
enum {
VIA_INIT_DMA = 0x01,
@@ -190,18 +176,6 @@ typedef struct _drm_via_sarea {
int ctxOwner; /* last context to upload state */
int vertexPrim;
- /*
- * Below is for XvMC.
- * 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 */
-
/* Used by the 3d driver only at this point, for pageflipping:
*/
unsigned int pfCurrentOffset;
diff --git a/drm/via_drv.c b/drm/via_drv.c
index 721eb18..50023d1 100644
--- a/drm/via_drv.c
+++ b/drm/via_drv.c
@@ -92,9 +92,9 @@ static struct drm_driver driver = {
.name = DRIVER_NAME,
.desc = DRIVER_DESC,
.date = DRIVER_DATE,
- .major = DRIVER_MAJOR,
- .minor = DRIVER_MINOR,
- .patchlevel = DRIVER_PATCHLEVEL,
+ .major = VIA_DRM_DRIVER_MAJOR,
+ .minor = VIA_DRM_DRIVER_MINOR,
+ .patchlevel = VIA_DRM_DRIVER_PATCHLEVEL,
};
static int __init via_init(void)
diff --git a/drm/via_drv.h b/drm/via_drv.h
index c0e404a..e4f7730 100644
--- a/drm/via_drv.h
+++ b/drm/via_drv.h
@@ -29,11 +29,7 @@
#define DRIVER_NAME "via"
#define DRIVER_DESC "VIA Unichrome / Pro"
-#define DRIVER_DATE "20070202"
-
-#define DRIVER_MAJOR 2
-#define DRIVER_MINOR 11
-#define DRIVER_PATCHLEVEL 1
+#define DRIVER_DATE "20100320"
#include "via_verifier.h"
@@ -63,7 +59,6 @@ typedef struct drm_via_private {
drm_local_map_t *fb;
drm_local_map_t *mmio;
unsigned long agpAddr;
- wait_queue_head_t decoder_queue[VIA_NR_XVMC_LOCKS];
char *dma_ptr;
unsigned int dma_low;
unsigned int dma_high;
@@ -121,7 +116,6 @@ extern int via_mem_alloc(struct drm_device *dev, void *data, struct drm_file *fi
extern int via_mem_free(struct drm_device *dev, void *data, struct drm_file *file_priv);
extern int via_agp_init(struct drm_device *dev, void *data, struct drm_file *file_priv);
extern int via_map_init(struct drm_device *dev, void *data, struct drm_file *file_priv);
-extern int via_decoder_futex(struct drm_device *dev, void *data, struct drm_file *file_priv);
extern int via_wait_irq(struct drm_device *dev, void *data, struct drm_file *file_priv);
extern int via_dma_blit_sync( struct drm_device *dev, void *data, struct drm_file *file_priv );
extern int via_dma_blit( struct drm_device *dev, void *data, struct drm_file *file_priv );
@@ -153,9 +147,6 @@ extern void via_driver_irq_uninstall(struct drm_device * dev);
extern int via_dma_cleanup(struct drm_device * dev);
extern void via_init_command_verifier(void);
extern int via_driver_dma_quiescent(struct drm_device * dev);
-extern void via_init_futex(drm_via_private_t *dev_priv);
-extern void via_cleanup_futex(drm_via_private_t *dev_priv);
-extern void via_release_futex(drm_via_private_t *dev_priv, int context);
extern void via_reclaim_buffers_locked(struct drm_device *dev,
struct drm_file *file_priv);
diff --git a/drm/via_map.c b/drm/via_map.c
index 0a00a4c..255fb85 100644
--- a/drm/via_map.c
+++ b/drm/via_map.c
@@ -61,8 +61,6 @@ static int via_do_init_map(struct drm_device * dev, drm_via_init_t * init)
dev_priv->agpAddr = init->agpAddr;
- via_init_futex(dev_priv);
-
via_init_dmablit(dev);
dev->dev_private = (void *)dev_priv;
diff --git a/drm/via_mm.c b/drm/via_mm.c
index a20cd65..6065227 100644
--- a/drm/via_mm.c
+++ b/drm/via_mm.c
@@ -85,10 +85,6 @@ int via_fb_init(struct drm_device *dev, void *data, struct drm_file *file_priv)
int via_final_context(struct drm_device *dev, int context)
{
- drm_via_private_t *dev_priv = (drm_via_private_t *) dev->dev_private;
-
- via_release_futex(dev_priv, context);
-
/* Linux specific until context tracking code gets ported to BSD */
/* Last context, perform cleanup */
if (dev->ctx_count == 1 && dev->dev_private) {
@@ -97,7 +93,7 @@ int via_final_context(struct drm_device *dev, int context)
if (dev->irq)
#endif
drm_irq_uninstall(dev);
- via_cleanup_futex(dev_priv);
+
via_do_cleanup_map(dev);
}
return 1;
diff --git a/drm/via_video.c b/drm/via_video.c
deleted file mode 100644
index dadaa0a..0000000
--- a/drm/via_video.c
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Copyright 2005 Thomas Hellstrom. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sub license,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHOR(S), AND/OR THE COPYRIGHT HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
- * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- *
- * Author: Thomas Hellstrom 2005.
- *
- * Video and XvMC related functions.
- */
-
-#include <drmP.h>
-
-#include "via_drm.h"
-#include "via_drv.h"
-
-void via_init_futex(drm_via_private_t * dev_priv)
-{
- unsigned int i;
-
- DRM_DEBUG("\n");
-
- for (i = 0; i < VIA_NR_XVMC_LOCKS; ++i) {
- DRM_INIT_WAITQUEUE(&(dev_priv->decoder_queue[i]));
- XVMCLOCKPTR(dev_priv->sarea_priv, i)->lock = 0;
- }
-}
-
-void via_cleanup_futex(drm_via_private_t * dev_priv)
-{
-}
-
-void via_release_futex(drm_via_private_t * dev_priv, int context)
-{
- unsigned int i;
- volatile int *lock;
-
- if (!dev_priv->sarea_priv)
- return;
-
- for (i = 0; i < VIA_NR_XVMC_LOCKS; ++i) {
- lock = (volatile int *)XVMCLOCKPTR(dev_priv->sarea_priv, i);
- if ((_DRM_LOCKING_CONTEXT(*lock) == context)) {
- if (_DRM_LOCK_IS_HELD(*lock)
- && (*lock & _DRM_LOCK_CONT)) {
- DRM_WAKEUP(&(dev_priv->decoder_queue[i]));
- }
- *lock = 0;
- }
- }
-}
-
-int via_decoder_futex(struct drm_device *dev, void *data, struct drm_file *file_priv)
-{
- drm_via_futex_t *fx = data;
- volatile int *lock;
- drm_via_private_t *dev_priv = (drm_via_private_t *) dev->dev_private;
- drm_via_sarea_t *sAPriv = dev_priv->sarea_priv;
- int ret = 0;
-
- DRM_DEBUG("\n");
-
- if (fx->lock > VIA_NR_XVMC_LOCKS)
- return -EFAULT;
-
- lock = (volatile int *)XVMCLOCKPTR(sAPriv, fx->lock);
-
- switch (fx->func) {
- case VIA_FUTEX_WAIT:
- DRM_WAIT_ON(ret, dev_priv->decoder_queue[fx->lock],
- (fx->ms / 10) * (DRM_HZ / 100), *lock != fx->val);
- return ret;
- case VIA_FUTEX_WAKE:
- DRM_WAKEUP(&(dev_priv->decoder_queue[fx->lock]));
- return 0;
- }
- return 0;
-}