diff options
author | alex <alex@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2002-12-20 21:07:27 +0000 |
---|---|---|
committer | alex <alex@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2002-12-20 21:07:27 +0000 |
commit | 6429f7e4fd55a230f471a4f1c12387db793a71dd (patch) | |
tree | 16ba159231ad1bae6e9c8583f94d8436354d65b2 /libdha/libdha.c | |
parent | a75ffd19d6f674d0f05f8fc5e1763a47343c929f (diff) | |
download | mpv-6429f7e4fd55a230f471a4f1c12387db793a71dd.tar.bz2 mpv-6429f7e4fd55a230f471a4f1c12387db793a71dd.tar.xz |
svgalib kernelhelper support (based on patch by Matan Ziv-Av <matan@svgalib.org>) and some reordering/cleanup (part #1 ;)
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@8504 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libdha/libdha.c')
-rw-r--r-- | libdha/libdha.c | 80 |
1 files changed, 51 insertions, 29 deletions
diff --git a/libdha/libdha.c b/libdha/libdha.c index 800b68bcf2..e0739e1a03 100644 --- a/libdha/libdha.c +++ b/libdha/libdha.c @@ -66,21 +66,40 @@ void libdha_exit(const char *message, int level) #endif #ifdef CONFIG_DHAHELPER - #include "kernelhelper/dhahelper.h" +#endif + +#ifdef CONFIG_SVGAHELPER +#include <svgalib_helper.h> +#endif static int mem=-1; void *map_phys_mem(unsigned long base, unsigned long size) -{ +{ #ifdef ARCH_ALPHA /* TODO: move it into sysdep */ base += bus_base(); #endif + +#ifdef CONFIG_SVGAHELPER + if ( (mem = open(DEV_SVGA,O_RDWR)) == -1) { + perror("libdha: SVGAlib kernelhelper failed"); +#ifdef CONFIG_DHAHELPER + goto dha_helper_way; +#else + goto dev_mem_way; +#endif + } + else + goto mmap; +#endif + +#ifdef CONFIG_DHAHELPER +dha_helper_way: if ( (mem = open("/dev/dhahelper",O_RDWR)) < 0) { - if ( (mem = open(DEV_MEM,O_RDWR)) == -1) { - perror("libdha: open(/dev/mem) failed") ; exit(1) ; - } + perror("libdha: DHA kernelhelper failed"); + goto dev_mem_way; } else { @@ -93,37 +112,41 @@ void *map_phys_mem(unsigned long base, unsigned long size) if (ioctl(mem, DHAHELPER_MEMORY, &mem_req) < 0) { - perror("libdha: failed mapping throught kernel helper"); - return NULL; + perror("libdha: DHA kernelhelper failed"); + close(mem); + goto dev_mem_way; } + else + goto mmap; } - return mmap(0,size,PROT_READ|PROT_WRITE,MAP_SHARED,mem,base) ; -} -#else - -static int mem=-1; -void *map_phys_mem(unsigned long base, unsigned long size) -{ -#ifdef ARCH_ALPHA -/* TODO: move it into sysdep */ - base += bus_base(); #endif - if ( (mem = open(DEV_MEM,O_RDWR)) == -1) { - perror("libdha: open(/dev/mem) failed") ; exit(1) ; + +dev_mem_way: + if ( (mem = open(DEV_MEM,O_RDWR)) == -1) + { + perror("libdha: opening /dev/mem failed"); + exit(1); } - return mmap(0,size,PROT_READ|PROT_WRITE,MAP_SHARED,mem,base) ; + +mmap: + return mmap(0,size,PROT_READ|PROT_WRITE,MAP_SHARED,mem,base); } #endif /* CONFIG_DHAHELPER */ void unmap_phys_mem(void *ptr, unsigned long size) { - int res=munmap(ptr,size) ; - if (res == -1) { perror("libdha: munmap() failed") ; exit(1) ; } + int res = munmap(ptr,size); + + if (res == -1) + { + perror("libdha: unmapping memory failed"); + exit(1); + } close(mem); + mem = -1; } -#endif -unsigned char INPORT8(unsigned idx) +unsigned char INPORT8(unsigned idx) { return inb(idx); } @@ -133,23 +156,22 @@ unsigned short INPORT16(unsigned idx) return inw(idx); } -unsigned INPORT32(unsigned idx) +unsigned INPORT32(unsigned idx) { return inl(idx); } -void OUTPORT8(unsigned idx,unsigned char val) +void OUTPORT8(unsigned idx,unsigned char val) { outb(idx,val); } -void OUTPORT16(unsigned idx,unsigned short val) +void OUTPORT16(unsigned idx,unsigned short val) { outw(idx,val); } -void OUTPORT32(unsigned idx,unsigned val) +void OUTPORT32(unsigned idx,unsigned val) { outl(idx,val); } - |