18 #define ATEN_VERSION "1.01"
20 #include <linux/module.h>
23 #include <linux/kernel.h>
24 #include <linux/wait.h>
25 #include <linux/types.h>
30 #define j44(a,b) ((((a>>4)&0x0f)|(b&0xf0))^0x88)
36 static int cont_map[2] = { 0x08, 0x20 };
42 r = regr + cont_map[
cont] + 0x80;
47 static int aten_read_regr(
PIA *pi,
int cont,
int regr )
51 r = regr + cont_map[
cont] + 0x40;
62 w2(0x27);
w2(0x26);
w2(0x20);
70 static void aten_read_block(
PIA *pi,
char *
buf,
int count )
77 for (k=0;k<count/2;k++) {
79 a =
r1();
w0(0x58); b =
r1();
82 buf[2*k+1] =
j44(a,b);
88 for (k=0;k<count/2;k++) {
89 w2(0x27);
w2(0x26);
w2(0x22);
90 a =
r0();
w2(0x20); b =
r0();
91 buf[2*
k] =
b; buf[2*k+1] =
a;
98 static void aten_write_block(
PIA *pi,
char * buf,
int count )
103 for (k=0;k<count/2;k++) {
105 w0(buf[2*k]);
w2(7);
w2(6);
110 static void aten_connect (
PIA *pi )
117 static void aten_disconnect (
PIA *pi )
125 {
char *mode_string[2] = {
"4-bit",
"8-bit"};
127 printk(
"%s: aten %s, ATEN EH-100 at 0x%x, ",
141 .write_regr = aten_write_regr,
142 .read_regr = aten_read_regr,
143 .write_block = aten_write_block,
144 .read_block = aten_read_block,
145 .connect = aten_connect,
146 .disconnect = aten_disconnect,
147 .log_adapter = aten_log_adapter,
150 static int __init aten_init(
void)
155 static void __exit aten_exit(
void)