summaryrefslogtreecommitdiffstats
path: root/vidix/dhahelper
diff options
context:
space:
mode:
authorUoti Urpala <uau@glyph.nonexistent.invalid>2011-01-31 03:44:50 +0200
committerUoti Urpala <uau@glyph.nonexistent.invalid>2011-01-31 16:03:10 +0200
commit6d534cd3cb5ca12d41f53345e92b9ab594971406 (patch)
treeb1c80430a490877234dd6226e5e635823b913b4c /vidix/dhahelper
parent902289f2b3754b43e474cf5b5d3b0a4dbb7e7069 (diff)
downloadmpv-6d534cd3cb5ca12d41f53345e92b9ab594971406.tar.bz2
mpv-6d534cd3cb5ca12d41f53345e92b9ab594971406.tar.xz
vidix: drop VIDIX support
By now VIDIX is too obscure to justify the amount of code and complexity it requires in the sources. Although there is no pressing need to drop it just now from a code point of view, I'll rather remove it before release than release with VIDIX support and then drop it later. Some of the manpage mentions of VIDIX were in "this option supported for these VOs" lists that looked outdated and failed to mention vdpau for example. Replace such incorrect lists with a generic "not supported for all VOs" mention.
Diffstat (limited to 'vidix/dhahelper')
-rw-r--r--vidix/dhahelper/dhahelper.c377
-rw-r--r--vidix/dhahelper/dhahelper.h85
-rw-r--r--vidix/dhahelper/test.c82
3 files changed, 0 insertions, 544 deletions
diff --git a/vidix/dhahelper/dhahelper.c b/vidix/dhahelper/dhahelper.c
deleted file mode 100644
index a187388ef3..0000000000
--- a/vidix/dhahelper/dhahelper.c
+++ /dev/null
@@ -1,377 +0,0 @@
-/*
- * Direct Hardware Access (DHA) kernel helper
- *
- * Copyright (C) 2002 Alex Beregszaszi <alex@fsn.hu>
- *
- * This file is part of MPlayer.
- *
- * MPlayer is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * MPlayer is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with MPlayer; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-/*
- Accessing hardware from userspace as USER (no root needed!)
-
- Tested on 2.2.x (2.2.19) and 2.4.x (2.4.3,2.4.17).
-
- WARNING! THIS MODULE VIOLATES SEVERAL SECURITY LINES! DON'T USE IT
- ON PRODUCTION SYSTEMS, ONLY AT HOME, ON A "SINGLE-USER" SYSTEM.
- NO WARRANTY!
-
- Tech:
- Communication between userspace and kernelspace goes over character
- device using ioctl.
-
- Usage:
- mknod -m 666 /dev/dhahelper c 180 0
-
- Also you can change the major number, setting the "dhahelper_major"
- module parameter, the default is 180, specified in dhahelper.h.
-
- Note: do not use other than minor==0, the module forbids it.
-
- TODO:
- * do memory mapping without fops:mmap
- * implement unmap memory
- * select (request?) a "valid" major number (from Linux project? ;)
- * make security
- * is pci handling needed? (libdha does this with lowlevel port funcs)
- * is mttr handling needed?
- * test on older kernels (2.0.x (?))
-*/
-
-#ifndef MODULE
-#define MODULE
-#endif
-
-#ifndef __KERNEL__
-#define __KERNEL__
-#endif
-
-#include <linux/config.h>
-
-#ifdef CONFIG_MODVERSION
-#define MODVERSION
-#include <linux/modversions.h>
-#endif
-
-#include <linux/version.h>
-#include <linux/module.h>
-#include <linux/types.h>
-#include <linux/kernel.h>
-#include <linux/sched.h>
-#include <linux/mm.h>
-#include <linux/string.h>
-#include <linux/errno.h>
-
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,4,10)
-#include <linux/malloc.h>
-#else
-#include <linux/slab.h>
-#endif
-
-#include <linux/pci.h>
-#include <linux/ioport.h>
-#include <linux/init.h>
-
-#include <asm/uaccess.h>
-#include <asm/system.h>
-#include <asm/io.h>
-
-#include <linux/mman.h>
-
-#include <linux/fs.h>
-#include <linux/unistd.h>
-
-#include "dhahelper.h"
-
-MODULE_AUTHOR("Alex Beregszaszi <alex@fsn.hu>");
-MODULE_DESCRIPTION("Provides userspace access to hardware (security violation!)");
-#ifdef MODULE_LICENSE
-MODULE_LICENSE("GPL");
-#endif
-
-static int dhahelper_major = DEFAULT_MAJOR;
-MODULE_PARM(dhahelper_major, "i");
-MODULE_PARM_DESC(dhahelper_major, "Major number of dhahelper characterdevice");
-
-/* 0 = silent */
-/* 1 = report errors (default) */
-/* 2 = debug */
-static int dhahelper_verbosity = 1;
-MODULE_PARM(dhahelper_verbosity, "i");
-MODULE_PARM_DESC(dhahelper_verbosity, "Level of verbosity (0 = silent, 1 = only errors, 2 = debug)");
-
-static dhahelper_memory_t last_mem_request;
-
-
-static int dhahelper_open(struct inode *inode, struct file *file)
-{
- if (dhahelper_verbosity > 1)
- printk(KERN_DEBUG "dhahelper: device opened\n");
-
- if (MINOR(inode->i_rdev) != 0)
- return -ENXIO;
-
- MOD_INC_USE_COUNT;
-
- return 0;
-}
-
-static int dhahelper_release(struct inode *inode, struct file *file)
-{
- if (dhahelper_verbosity > 1)
- printk(KERN_DEBUG "dhahelper: device released\n");
-
- if (MINOR(inode->i_rdev) != 0)
- return -ENXIO;
-
- MOD_DEC_USE_COUNT;
-
- return 0;
-}
-
-static int dhahelper_ioctl(struct inode *inode, struct file *file,
- unsigned int cmd, unsigned long arg)
-{
- if (dhahelper_verbosity > 1)
- printk(KERN_DEBUG "dhahelper: ioctl(cmd=%x, arg=%lx)\n",
- cmd, arg);
-
- if (MINOR(inode->i_rdev) != 0)
- return -ENXIO;
-
- switch(cmd)
- {
- case DHAHELPER_GET_VERSION:
- {
- int version = API_VERSION;
-
- if (copy_to_user((int *)arg, &version, sizeof(int)))
- {
- if (dhahelper_verbosity > 0)
- printk(KERN_ERR "dhahelper: failed copy to userspace\n");
- return -EFAULT;
- }
-
- break;
- }
- case DHAHELPER_PORT:
- {
- dhahelper_port_t port;
-
- if (copy_from_user(&port, (dhahelper_port_t *)arg, sizeof(dhahelper_port_t)))
- {
- if (dhahelper_verbosity > 0)
- printk(KERN_ERR "dhahelper: failed copy from userspace\n");
- return -EFAULT;
- }
-
- switch(port.operation)
- {
- case PORT_OP_READ:
- {
- switch(port.size)
- {
- case 1:
- port.value = inb(port.addr);
- break;
- case 2:
- port.value = inw(port.addr);
- break;
- case 4:
- port.value = inl(port.addr);
- break;
- default:
- if (dhahelper_verbosity > 0)
- printk(KERN_ERR "dhahelper: invalid port read size (%d)\n",
- port.size);
- return -EINVAL;
- }
- break;
- }
- case PORT_OP_WRITE:
- {
- switch(port.size)
- {
- case 1:
- outb(port.value, port.addr);
- break;
- case 2:
- outw(port.value, port.addr);
- break;
- case 4:
- outl(port.value, port.addr);
- break;
- default:
- if (dhahelper_verbosity > 0)
- printk(KERN_ERR "dhahelper: invalid port write size (%d)\n",
- port.size);
- return -EINVAL;
- }
- break;
- }
- default:
- if (dhahelper_verbosity > 0)
- printk(KERN_ERR "dhahelper: invalid port operation (%d)\n",
- port.operation);
- return -EINVAL;
- }
-
- /* copy back only if read was performed */
- if (port.operation == PORT_OP_READ)
- if (copy_to_user((dhahelper_port_t *)arg, &port, sizeof(dhahelper_port_t)))
- {
- if (dhahelper_verbosity > 0)
- printk(KERN_ERR "dhahelper: failed copy to userspace\n");
- return -EFAULT;
- }
-
- break;
- }
- case DHAHELPER_MEMORY:
- {
- dhahelper_memory_t mem;
-
- if (copy_from_user(&mem, (dhahelper_memory_t *)arg, sizeof(dhahelper_memory_t)))
- {
- if (dhahelper_verbosity > 0)
- printk(KERN_ERR "dhahelper: failed copy from userspace\n");
- return -EFAULT;
- }
-
- switch(mem.operation)
- {
- case MEMORY_OP_MAP:
- {
-#if 1
- memcpy(&last_mem_request, &mem, sizeof(dhahelper_memory_t));
-#else
- mem.ret = do_mmap(file, mem.start, mem.size, PROT_READ|PROT_WRITE,
- MAP_SHARED, mem.offset);
-#endif
-
- break;
- }
- case MEMORY_OP_UNMAP:
- break;
- default:
- if (dhahelper_verbosity > 0)
- printk(KERN_ERR "dhahelper: invalid memory operation (%d)\n",
- mem.operation);
- return -EINVAL;
- }
-
- if (copy_to_user((dhahelper_memory_t *)arg, &mem, sizeof(dhahelper_memory_t)))
- {
- if (dhahelper_verbosity > 0)
- printk(KERN_ERR "dhahelper: failed copy to userspace\n");
- return -EFAULT;
- }
-
- break;
- }
- default:
- if (dhahelper_verbosity > 0)
- printk(KERN_ERR "dhahelper: invalid ioctl (%x)\n", cmd);
- return -EINVAL;
- }
-
- return 0;
-}
-
-static int dhahelper_mmap(struct file *file, struct vm_area_struct *vma)
-{
- if (last_mem_request.operation != MEMORY_OP_MAP)
- {
- if (dhahelper_verbosity > 0)
- printk(KERN_ERR "dhahelper: mapping not requested before mmap\n");
- return -EFAULT;
- }
-
- if (dhahelper_verbosity > 1)
- printk(KERN_INFO "dhahelper: mapping %x (size: %x)\n",
- last_mem_request.start+last_mem_request.offset, last_mem_request.size);
-
- if (remap_page_range(0, last_mem_request.start + last_mem_request.offset,
- last_mem_request.size, vma->vm_page_prot))
- {
- if (dhahelper_verbosity > 0)
- printk(KERN_ERR "dhahelper: error mapping memory\n");
- return -EFAULT;
- }
-
- return 0;
-}
-
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,4,0)
-static struct file_operations dhahelper_fops =
-{
- /*llseek*/ NULL,
- /*read*/ NULL,
- /*write*/ NULL,
- /*readdir*/ NULL,
- /*poll*/ NULL,
- /*ioctl*/ dhahelper_ioctl,
- /*mmap*/ dhahelper_mmap,
- /*open*/ dhahelper_open,
- /*flush*/ NULL,
- /*release*/ dhahelper_release,
- /* zero out the last 5 entries too ? */
-};
-#else
-static struct file_operations dhahelper_fops =
-{
- owner: THIS_MODULE,
- ioctl: dhahelper_ioctl,
- mmap: dhahelper_mmap,
- open: dhahelper_open,
- release: dhahelper_release
-};
-#endif
-
-#if KERNEL_VERSION < KERNEL_VERSION(2,4,0)
-int init_module(void)
-#else
-static int __init init_dhahelper(void)
-#endif
-{
- printk(KERN_INFO "Direct Hardware Access kernel helper (C) Alex Beregszaszi\n");
-
- if(register_chrdev(dhahelper_major, "dhahelper", &dhahelper_fops))
- {
- if (dhahelper_verbosity > 0)
- printk(KERN_ERR "dhahelper: unable to register character device (major: %d)\n",
- dhahelper_major);
- return -EIO;
- }
-
- return 0;
-}
-
-#if KERNEL_VERSION < KERNEL_VERSION(2,4,0)
-void cleanup_module(void)
-#else
-static void __exit exit_dhahelper(void)
-#endif
-{
- unregister_chrdev(dhahelper_major, "dhahelper");
-}
-
-EXPORT_NO_SYMBOLS;
-
-#if KERNEL_VERSION >= KERNEL_VERSION(2,4,0)
-module_init(init_dhahelper);
-module_exit(exit_dhahelper);
-#endif
diff --git a/vidix/dhahelper/dhahelper.h b/vidix/dhahelper/dhahelper.h
deleted file mode 100644
index f7c5fa13c1..0000000000
--- a/vidix/dhahelper/dhahelper.h
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Direct Hardware Access (DHA) kernel helper
- *
- * Copyright (C) 2002 Alex Beregszaszi <alex@fsn.hu>
- *
- * This file is part of MPlayer.
- *
- * MPlayer is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * MPlayer is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with MPlayer; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-#ifndef MPLAYER_DHAHELPER_H
-#define MPLAYER_DHAHELPER_H
-
-#include <linux/ioctl.h>
-
-/* feel free to change */
-#define DEFAULT_MAJOR 180
-
-#define API_VERSION 0x1
-
-typedef struct dhahelper_port_s
-{
-#define PORT_OP_READ 1
-#define PORT_OP_WRITE 2
- int operation;
- int size;
- int addr;
- int value;
-} dhahelper_port_t;
-
-typedef struct dhahelper_memory_s
-{
-#define MEMORY_OP_MAP 1
-#define MEMORY_OP_UNMAP 2
- int operation;
- int start;
- int offset;
- int size;
- int ret;
-#define MEMORY_FLAG_NOCACHE 1
- int flags;
-} dhahelper_memory_t;
-
-typedef struct dhahelper_mtrr_s
-{
-#define MTRR_OP_ADD 1
-#define MTRR_OP_DEL 2
- int operation;
- int start;
- int size;
- int type;
-} dhahelper_mtrr_t;
-
-typedef struct dhahelper_pci_s
-{
-#define PCI_OP_READ 1
-#define PCI_OP_WRITE 1
- int operation;
- int bus;
- int dev;
- int func;
- int cmd;
- int size;
- int ret;
-} dhahelper_pci_t;
-
-#define DHAHELPER_GET_VERSION _IOW('D', 0, int)
-#define DHAHELPER_PORT _IOWR('D', 1, dhahelper_port_t)
-#define DHAHELPER_MEMORY _IOWR('D', 2, dhahelper_memory_t)
-#define DHAHELPER_MTRR _IOWR('D', 3, dhahelper_mtrr_t)
-#define DHAHELPER_PCI _IOWR('D', 4, dhahelper_pci_t)
-
-#endif /* MPLAYER_DHAHELPER_H */
diff --git a/vidix/dhahelper/test.c b/vidix/dhahelper/test.c
deleted file mode 100644
index 59e356efea..0000000000
--- a/vidix/dhahelper/test.c
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * dhahelper test program
- *
- * Copyright (C) 2002 Alex Beregszsaszi
- *
- * This file is part of MPlayer.
- *
- * MPlayer is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * MPlayer is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with MPlayer; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-#include <string.h>
-#include <stdio.h>
-#include <sys/ioctl.h>
-#include <unistd.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <sys/mman.h>
-
-#include "dhahelper.h"
-
-int main(int argc, char *argv[])
-{
- int fd;
- int ret;
-
- fd = open("/dev/dhahelper", O_RDWR);
-
- ioctl(fd, DHAHELPER_GET_VERSION, &ret);
-
- printf("api version: %d\n", ret);
- if (ret != API_VERSION)
- printf("incompatible api!\n");
-
- {
- dhahelper_memory_t mem;
-
- mem.operation = MEMORY_OP_MAP;
- //mem.start = 0xe0000000;
- mem.start = 0xe4000008;
- mem.offset = 0;
- mem.size = 0x4000;
- mem.ret = 0;
-
- ret = ioctl(fd, DHAHELPER_MEMORY, &mem);
-
- printf("ret: %s\n", strerror(errno));
-
- mem.ret = (int)mmap(NULL, (size_t)mem.size, PROT_READ, MAP_SHARED, fd, (off_t)0);
- printf("allocated to %x\n", mem.ret);
-
- if (argc > 1)
- if (mem.ret != 0)
- {
- int i;
-
- for (i = 0; i < 256; i++)
- printf("[%x] ", *(int *)(mem.ret+i));
- printf("\n");
- }
-
- munmap((void *)mem.ret, mem.size);
-
- mem.operation = MEMORY_OP_UNMAP;
- mem.start = mem.ret;
-
- ioctl(fd, DHAHELPER_MEMORY, &mem);
- }
-
- return 0;
-}