summaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorRalf Baechle <ralf@linux-mips.org>1997-07-24 01:55:37 +0000
committerRalf Baechle <ralf@linux-mips.org>1997-07-24 01:55:37 +0000
commite940c15ebb25269923db9a8a912727046cfffa77 (patch)
tree0e4bbd46c2d69a129bfc30bd4e1f8dce132ba64b /arch
parent79fa43ce85955f44a4b6fd7b5134743f12c225b0 (diff)
Cleanup the architecture specifics of keyboard and PS/2 mouse drivers.
Diffstat (limited to 'arch')
-rw-r--r--arch/mips/deskstation/hw-access.c34
-rw-r--r--arch/mips/deskstation/setup.c3
-rw-r--r--arch/mips/jazz/hw-access.c34
-rw-r--r--arch/mips/jazz/setup.c3
-rw-r--r--arch/mips/sgi/kernel/setup.c37
-rw-r--r--arch/mips/sni/hw-access.c35
-rw-r--r--arch/mips/sni/setup.c3
7 files changed, 145 insertions, 4 deletions
diff --git a/arch/mips/deskstation/hw-access.c b/arch/mips/deskstation/hw-access.c
index 418bac5f6..8b1bd0e3b 100644
--- a/arch/mips/deskstation/hw-access.c
+++ b/arch/mips/deskstation/hw-access.c
@@ -5,10 +5,13 @@
* License. See the file "COPYING" in the main directory of this archive
* for more details.
*
- * Copyright (C) 1996 by Ralf Baechle
+ * Copyright (C) 1996, 1997 by Ralf Baechle
+ *
+ * $Id: hw-access.c,v 1.2 1997/07/23 17:40:54 ralf Exp $
*/
#include <linux/config.h>
#include <linux/delay.h>
+#include <linux/kbdcntrlr.h>
#include <linux/kernel.h>
#include <linux/linkage.h>
#include <linux/types.h>
@@ -194,3 +197,32 @@ struct feature deskstation_rpc44_feature = {
rtc_write_data
};
#endif
+
+static unsigned char dtc_read_input(void)
+{
+ return inb(KBD_DATA_REG);
+}
+
+static void dtc_write_output(unsigned char val)
+{
+ outb(val, KBD_DATA_REG);
+}
+
+static void dtc_write_command(unsigned char val)
+{
+ outb(val, KBD_CNTL_REG);
+}
+
+static unsigned char dtc_read_status(void)
+{
+ return inb(KBD_STATUS_REG);
+}
+
+static void dtc_rm200_keyboard_setup(void)
+{
+ kbd_read_input = dtc_read_input;
+ kbd_write_output = dtc_write_output;
+ kbd_write_command = dtc_write_command;
+ kbd_read_status = dtc_read_status;
+ request_region(0x60, 16, "keyboard");
+}
diff --git a/arch/mips/deskstation/setup.c b/arch/mips/deskstation/setup.c
index 8b70a656c..939730b91 100644
--- a/arch/mips/deskstation/setup.c
+++ b/arch/mips/deskstation/setup.c
@@ -6,6 +6,8 @@
* for more details.
*
* Copyright (C) 1996, 1997 by Ralf Baechle
+ *
+ * $Id: setup.c,v 1.2 1997/07/23 17:40:54 ralf Exp $
*/
#include <linux/config.h>
#include <linux/init.h>
@@ -102,6 +104,7 @@ __initfunc(void deskstation_setup(void))
#endif
}
fd_cacheflush = deskstation_fd_cacheflush;
+ keyboard_setup = dtc_keyboard_setup;
request_region(0x00,0x20,"dma1");
request_region(0x40,0x20,"timer");
request_region(0x70,0x10,"rtc");
diff --git a/arch/mips/jazz/hw-access.c b/arch/mips/jazz/hw-access.c
index 52a61165f..482e50cb2 100644
--- a/arch/mips/jazz/hw-access.c
+++ b/arch/mips/jazz/hw-access.c
@@ -5,7 +5,7 @@
* License. See the file "COPYING" in the main directory of this archive
* for more details.
*
- * Copyright (C) 1995, 1996 by Ralf Baechle
+ * Copyright (C) 1995, 1996, 1997 by Ralf Baechle
*/
#include <linux/delay.h>
#include <linux/linkage.h>
@@ -15,6 +15,7 @@
#include <asm/vector.h>
#include <asm/jazz.h>
#include <asm/jazzdma.h>
+#include <asm/keyboard.h>
#include <asm/pgtable.h>
#include <asm/mc146818rtc.h>
@@ -146,3 +147,34 @@ struct feature jazz_feature = {
rtc_read_data,
rtc_write_data
};
+
+static volatile keyboard_hardware *jazz_kh = JAZZ_KEYBOARD_ADDRESS;
+
+static unsigned char jazz_read_input(void)
+{
+ return jazz_kh->data;
+}
+
+static void jazz_write_output(unsigned char val)
+{
+ jazz_kh->data = val;
+}
+
+static void jazz_write_command(unsigned char val)
+{
+ jazz_kh->command = val;
+}
+
+static unsigned char jazz_read_status(void)
+{
+ return jazz_kh->command;
+}
+
+void jazz_keyboard_setup(void)
+{
+ kbd_read_input = jazz_read_input;
+ kbd_write_output = jazz_write_output;
+ kbd_write_command = jazz_write_command;
+ kbd_read_status = jazz_read_status;
+ request_region(0x60, 16, "keyboard");
+}
diff --git a/arch/mips/jazz/setup.c b/arch/mips/jazz/setup.c
index e7550e7ad..3b9924ef5 100644
--- a/arch/mips/jazz/setup.c
+++ b/arch/mips/jazz/setup.c
@@ -12,6 +12,7 @@
#include <linux/sched.h>
#include <linux/interrupt.h>
#include <asm/bootinfo.h>
+#include <asm/keyboard.h>
#include <asm/irq.h>
#include <asm/jazz.h>
#include <asm/ptrace.h>
@@ -32,6 +33,7 @@ static struct irqaction irq2 = { no_action, 0, 0, "cascade", NULL, NULL};
extern asmlinkage void jazz_handle_int(void);
extern asmlinkage void jazz_fd_cacheflush(const void *addr, size_t size);
extern struct feature jazz_feature;
+extern void jazz_keyboard_setup(void);
extern void jazz_machine_restart(char *command);
extern void jazz_machine_halt(void);
@@ -96,6 +98,7 @@ __initfunc(void jazz_setup(void))
irq_setup = jazz_irq_setup;
fd_cacheflush = jazz_fd_cacheflush;
+ keyboard_setup = jazz_keyboard_setup;
feature = &jazz_feature; // Will go away
port_base = JAZZ_PORT_BASE;
isa_slot_offset = 0xe3000000;
diff --git a/arch/mips/sgi/kernel/setup.c b/arch/mips/sgi/kernel/setup.c
index f3e329656..04cdb6235 100644
--- a/arch/mips/sgi/kernel/setup.c
+++ b/arch/mips/sgi/kernel/setup.c
@@ -1,7 +1,9 @@
-/* $Id: setup.c,v 1.2 1997/06/28 22:47:44 ralf Exp $
+/*
* setup.c: SGI specific setup, including init of the feature struct.
*
* Copyright (C) 1996 David S. Miller (dm@engr.sgi.com)
+ *
+ * $Id: setup.c,v 1.4 1997/07/23 17:59:23 ralf Exp $
*/
#ifndef __GOGOGO__
#error "... about to fuckup your Indy?"
@@ -9,6 +11,8 @@
#include <linux/kernel.h>
#include <linux/sched.h>
+#include <asm/addrspace.h>
+#include <asm/keyboard.h>
#include <asm/reboot.h>
#include <asm/vector.h>
#include <asm/sgialib.h>
@@ -26,6 +30,36 @@ extern void sgi_machine_power_off(void);
struct feature sgi_feature = {
};
+static volatile struct hpc_keyb *sgi_kh = (struct hpc_keyb *) (KSEG1 + 0x1fbd9800 + 64);
+
+static unsigned char sgi_read_input(void)
+{
+ return sgi_kh->data;
+}
+
+static void sgi_write_output(unsigned char val)
+{
+ sgi_kh->data = val;
+}
+
+static void sgi_write_command(unsigned char val)
+{
+ sgi_kh->command = val;
+}
+
+static unsigned char sgi_read_status(void)
+{
+ return sgi_kh->command;
+}
+
+static void sgi_keyboard_setup(void)
+{
+ kbd_read_input = sgi_read_input;
+ kbd_write_output = sgi_write_output;
+ kbd_write_command = sgi_write_command;
+ kbd_read_status = sgi_read_status;
+}
+
static void sgi_irq_setup(void)
{
sgint_init();
@@ -52,6 +86,7 @@ void sgi_setup(void)
irq_setup = sgi_irq_setup;
feature = &sgi_feature;
+ keyboard_setup = sgi_keyboard_setup;
_machine_restart = sgi_machine_restart;
_machine_halt = sgi_machine_halt;
diff --git a/arch/mips/sni/hw-access.c b/arch/mips/sni/hw-access.c
index 39cbec410..5ffa6fdd9 100644
--- a/arch/mips/sni/hw-access.c
+++ b/arch/mips/sni/hw-access.c
@@ -5,9 +5,12 @@
* License. See the file "COPYING" in the main directory of this archive
* for more details.
*
- * Copyright (C) 1996 by Ralf Baechle
+ * Copyright (C) 1996, 1997 by Ralf Baechle
+ *
+ * $Id: hw-access.c,v 1.2 1997/07/23 17:41:07 ralf Exp $
*/
#include <linux/delay.h>
+#include <linux/kbdcntrlr.h>
#include <linux/kernel.h>
#include <linux/linkage.h>
#include <linux/types.h>
@@ -15,6 +18,7 @@
#include <asm/bootinfo.h>
#include <asm/cachectl.h>
#include <asm/dma.h>
+#include <asm/keyboard.h>
#include <asm/io.h>
#include <asm/irq.h>
#include <asm/mc146818rtc.h>
@@ -157,3 +161,32 @@ struct feature sni_rm200_pci_feature = {
rtc_read_data,
rtc_write_data
};
+
+static unsigned char sni_read_input(void)
+{
+ return inb(KBD_DATA_REG);
+}
+
+static void sni_write_output(unsigned char val)
+{
+ outb(val, KBD_DATA_REG);
+}
+
+static void sni_write_command(unsigned char val)
+{
+ outb(val, KBD_CNTL_REG);
+}
+
+static unsigned char sni_read_status(void)
+{
+ return inb(KBD_STATUS_REG);
+}
+
+void sni_rm200_keyboard_setup(void)
+{
+ kbd_read_input = sni_read_input;
+ kbd_write_output = sni_write_output;
+ kbd_write_command = sni_write_command;
+ kbd_read_status = sni_read_status;
+ request_region(0x60, 16, "keyboard");
+}
diff --git a/arch/mips/sni/setup.c b/arch/mips/sni/setup.c
index 7fa76a490..b73c857b4 100644
--- a/arch/mips/sni/setup.c
+++ b/arch/mips/sni/setup.c
@@ -15,6 +15,7 @@
#include <linux/timex.h>
#include <linux/pci.h>
#include <asm/bootinfo.h>
+#include <asm/keyboard.h>
#include <asm/io.h>
#include <asm/irq.h>
#include <asm/processor.h>
@@ -36,6 +37,7 @@ static struct irqaction irq2 = { no_action, 0, 0, "cascade", NULL, NULL};
extern asmlinkage void sni_rm200_pci_handle_int(void);
extern asmlinkage void sni_fd_cacheflush(const void *addr, size_t size);
extern struct feature sni_rm200_pci_feature;
+extern void sni_rm200_keyboard_setup(void);
extern void sni_machine_restart(char *command);
extern void sni_machine_halt(void);
@@ -127,6 +129,7 @@ __initfunc(void sni_rm200_pci_setup(void))
fd_cacheflush = sni_fd_cacheflush; // Will go away
feature = &sni_rm200_pci_feature;
port_base = SNI_PORT_BASE;
+ keyboard_setup = sni_rm200_keyboard_setup;
/*
* Setup (E)ISA I/O memory access stuff