e89f3be3bd
contributed by Hiroshi TOKUDA <tokudah@nttdata.co.jp>. PR: ports/29591 Submitted by: Yoichi NAKAYAMA <yoichi@eken.phys.nagoya-u.ac.jp> Approved by: MAINTAINER's silence (timeout)
79 lines
1.5 KiB
Text
79 lines
1.5 KiB
Text
--- vaiobat.c Tue Dec 12 09:42:20 2000
|
|
+++ vaiobat.c Wed Mar 21 20:16:59 2001
|
|
@@ -4,18 +4,50 @@
|
|
#include <unistd.h>
|
|
#include <fcntl.h>
|
|
#include <errno.h>
|
|
+#ifdef LINUX
|
|
#include <sys/io.h>
|
|
+#endif
|
|
#include <sys/mman.h>
|
|
#include <dirent.h>
|
|
#include <ctype.h>
|
|
+#ifdef LINUX
|
|
#include <malloc.h>
|
|
+#endif
|
|
#include <string.h>
|
|
#include <signal.h>
|
|
+#ifdef HAVE_GETOPT_H
|
|
#include <getopt.h>
|
|
+#endif
|
|
+#ifdef LINUX
|
|
#include <linux/pci.h>
|
|
+#endif
|
|
#include <sys/time.h>
|
|
|
|
|
|
+
|
|
+#ifdef __FreeBSD__
|
|
+#include <machine/cpufunc.h>
|
|
+static int deviofd=-1;
|
|
+static int iopl(int lvl)
|
|
+{
|
|
+ if(lvl==0){
|
|
+ if(deviofd!=-1){
|
|
+ close(deviofd);
|
|
+ deviofd=-1;
|
|
+ }
|
|
+ return 0;
|
|
+ }else if(lvl==3){
|
|
+ if(deviofd==-1){
|
|
+ deviofd=open("/dev/io",0);
|
|
+ }
|
|
+ return deviofd;
|
|
+ }
|
|
+ return -1;
|
|
+}
|
|
+
|
|
+#endif
|
|
+
|
|
+
|
|
#define DATA_REG 0x62
|
|
#define CST_REG 0x66
|
|
|
|
@@ -25,20 +57,20 @@
|
|
static void ecr_set(u8 addr, u8 value)
|
|
{
|
|
while (inb(CST_REG) & 3) usleep(1);
|
|
- outb(0x81, CST_REG);
|
|
+ outb(CST_REG, 0x81);
|
|
while (inb(CST_REG) & 2) usleep(1);
|
|
- outb(addr, DATA_REG);
|
|
+ outb(DATA_REG, addr);
|
|
while (inb(CST_REG) & 2) usleep(1);
|
|
- outb(value, DATA_REG);
|
|
+ outb(DATA_REG, value);
|
|
while (inb(CST_REG) & 2) usleep(1);
|
|
}
|
|
|
|
static u8 ecr_get(u8 addr)
|
|
{
|
|
while (inb(CST_REG) & 3) usleep(1);
|
|
- outb(0x80, CST_REG);
|
|
+ outb(CST_REG, 0x80);
|
|
while (inb(CST_REG) & 2) usleep(1);
|
|
- outb(addr, DATA_REG);
|
|
+ outb(DATA_REG, addr);
|
|
while (inb(CST_REG) & 2) usleep(1);
|
|
return inb(DATA_REG);
|
|
}
|