Commit d41a84b5 authored by Vojtech Pavlik's avatar Vojtech Pavlik

After some grepping and talking to maintainers, I did the appended cleanup

patch. This should be it from me until char/keyboard.c becomes a real input
layer client, but this final patch will be _very_ small now :-)).
-- Franz Sirl
parent f85d4617
...@@ -6,7 +6,6 @@ O_TARGET := 4xx_io.o ...@@ -6,7 +6,6 @@ O_TARGET := 4xx_io.o
#obj-y := #obj-y :=
obj-$(CONFIG_STB_KB) += stb_kb.o
obj-$(CONFIG_SERIAL_SICC) += serial_sicc.o obj-$(CONFIG_SERIAL_SICC) += serial_sicc.o
include $(TOPDIR)/Rules.make include $(TOPDIR)/Rules.make
/*
* arch/ppc/4xx_io/stb_kb.c
*
* This file is subject to the terms and conditions of the GNU General Public
* License. See the file COPYING in the main directory of this archive for
* more details.
*/
#include <linux/config.h>
#include <linux/spinlock.h>
#include <linux/sched.h>
#include <linux/interrupt.h>
#include <linux/tty.h>
#include <linux/mm.h>
#include <linux/signal.h>
#include <linux/init.h>
#include <linux/kbd_ll.h>
#include <linux/delay.h>
#include <linux/random.h>
#include <linux/poll.h>
#include <linux/miscdevice.h>
#include <linux/slab.h>
#include <linux/kbd_kern.h>
/* the following are borrowed from pc_keyb.c, thanks to those involved! */
/*
* Translation of escaped scancodes to keycodes.
* This is now user-settable.
* The keycodes 1-88,96-111,119 are fairly standard, and
* should probably not be changed - changing might confuse X.
* X also interprets scancode 0x5d (KEY_Begin).
*
* For 1-88 keycode equals scancode.
*/
#define E0_KPENTER 96
#define E0_RCTRL 97
#define E0_KPSLASH 98
#define E0_PRSCR 99
#define E0_RALT 100
#define E0_BREAK 101 /* (control-pause) */
#define E0_HOME 102
#define E0_UP 103
#define E0_PGUP 104
#define E0_LEFT 105
#define E0_RIGHT 106
#define E0_END 107
#define E0_DOWN 108
#define E0_PGDN 109
#define E0_INS 110
#define E0_DEL 111
#define E1_PAUSE 119
/*
* The keycodes below are randomly located in 89-95,112-118,120-127.
* They could be thrown away (and all occurrences below replaced by 0),
* but that would force many users to use the `setkeycodes' utility, where
* they needed not before. It does not matter that there are duplicates, as
* long as no duplication occurs for any single keyboard.
*/
#define SC_LIM 89
#define FOCUS_PF1 85 /* actual code! */
#define FOCUS_PF2 89
#define FOCUS_PF3 90
#define FOCUS_PF4 91
#define FOCUS_PF5 92
#define FOCUS_PF6 93
#define FOCUS_PF7 94
#define FOCUS_PF8 95
#define FOCUS_PF9 120
#define FOCUS_PF10 121
#define FOCUS_PF11 122
#define FOCUS_PF12 123
#define JAP_86 124
/* tfj@olivia.ping.dk:
* The four keys are located over the numeric keypad, and are
* labelled A1-A4. It's an rc930 keyboard, from
* Regnecentralen/RC International, Now ICL.
* Scancodes: 59, 5a, 5b, 5c.
*/
#define RGN1 124
#define RGN2 125
#define RGN3 126
#define RGN4 127
static unsigned char high_keys[128 - SC_LIM] = {
RGN1, RGN2, RGN3, RGN4, 0, 0, 0, /* 0x59-0x5f */
0, 0, 0, 0, 0, 0, 0, 0, /* 0x60-0x67 */
0, 0, 0, 0, 0, FOCUS_PF11, 0, FOCUS_PF12, /* 0x68-0x6f */
0, 0, 0, FOCUS_PF2, FOCUS_PF9, 0, 0, FOCUS_PF3, /* 0x70-0x77 */
FOCUS_PF4, FOCUS_PF5, FOCUS_PF6, FOCUS_PF7, /* 0x78-0x7b */
FOCUS_PF8, JAP_86, FOCUS_PF10, 0 /* 0x7c-0x7f */
};
/* BTC */
#define E0_MACRO 112
/* LK450 */
#define E0_F13 113
#define E0_F14 114
#define E0_HELP 115
#define E0_DO 116
#define E0_F17 117
#define E0_KPMINPLUS 118
/*
* My OmniKey generates e0 4c for the "OMNI" key and the
* right alt key does nada. [kkoller@nyx10.cs.du.edu]
*/
#define E0_OK 124
/*
* New microsoft keyboard is rumoured to have
* e0 5b (left window button), e0 5c (right window button),
* e0 5d (menu button). [or: LBANNER, RBANNER, RMENU]
* [or: Windows_L, Windows_R, TaskMan]
*/
#define E0_MSLW 125
#define E0_MSRW 126
#define E0_MSTM 127
static unsigned char e0_keys[128] = {
0, 0, 0, 0, 0, 0, 0, 0, /* 0x00-0x07 */
0, 0, 0, 0, 0, 0, 0, 0, /* 0x08-0x0f */
0, 0, 0, 0, 0, 0, 0, 0, /* 0x10-0x17 */
0, 0, 0, 0, E0_KPENTER, E0_RCTRL, 0, 0, /* 0x18-0x1f */
0, 0, 0, 0, 0, 0, 0, 0, /* 0x20-0x27 */
0, 0, 0, 0, 0, 0, 0, 0, /* 0x28-0x2f */
0, 0, 0, 0, 0, E0_KPSLASH, 0, E0_PRSCR, /* 0x30-0x37 */
E0_RALT, 0, 0, 0, 0, E0_F13, E0_F14, E0_HELP, /* 0x38-0x3f */
E0_DO, E0_F17, 0, 0, 0, 0, E0_BREAK, E0_HOME, /* 0x40-0x47 */
E0_UP, E0_PGUP, 0, E0_LEFT, E0_OK, E0_RIGHT, E0_KPMINPLUS, E0_END,/* 0x48-0x4f */
E0_DOWN, E0_PGDN, E0_INS, E0_DEL, 0, 0, 0, 0, /* 0x50-0x57 */
0, 0, 0, E0_MSLW, E0_MSRW, E0_MSTM, 0, 0, /* 0x58-0x5f */
0, 0, 0, 0, 0, 0, 0, 0, /* 0x60-0x67 */
0, 0, 0, 0, 0, 0, 0, E0_MACRO, /* 0x68-0x6f */
0, 0, 0, 0, 0, 0, 0, 0, /* 0x70-0x77 */
0, 0, 0, 0, 0, 0, 0, 0 /* 0x78-0x7f */
};
void __init rawirkbd_init_hw(void) {
}
/*
int rawirkbd_setkeycode(unsigned int scancode, unsigned int keycode)
{
return -EINVAL;
}
int rawirkbd_getkeycode(unsigned int scancode)
{
return -EINVAL;
}
*/
int rawirkbd_setkeycode(unsigned int scancode, unsigned int keycode)
{
if (scancode < SC_LIM || scancode > 255 || keycode > 127)
return -EINVAL;
if (scancode < 128)
high_keys[scancode - SC_LIM] = keycode;
else
e0_keys[scancode - 128] = keycode;
return 0;
}
int rawirkbd_getkeycode(unsigned int scancode)
{
return
(scancode < SC_LIM || scancode > 255) ? -EINVAL :
(scancode < 128) ? high_keys[scancode - SC_LIM] :
e0_keys[scancode - 128];
}
int rawirkbd_translate(unsigned char scancode, unsigned char *keycode,
char raw_mode)
{
static int prev_scancode = 0;
/* special prefix scancodes.. */
if (scancode == 0xe0 || scancode == 0xe1) {
prev_scancode = scancode;
return 0;
}
/* 0xFF is sent by a few keyboards, ignore it. 0x00 is error */
if (scancode == 0x00 || scancode == 0xff) {
prev_scancode = 0;
return 0;
}
scancode &= 0x7f;
if (prev_scancode) {
/*
* usually it will be 0xe0, but a Pause key generates
* e1 1d 45 e1 9d c5 when pressed, and nothing when released
*/
if (prev_scancode != 0xe0) {
if (prev_scancode == 0xe1 && scancode == 0x1d) {
prev_scancode = 0x100;
return 0;
} else if (prev_scancode == 0x100 && scancode == 0x45) {
*keycode = E1_PAUSE;
prev_scancode = 0;
} else {
#ifdef KBD_REPORT_UNKN
if (!raw_mode)
printk(KERN_INFO "keyboard: unknown e1 escape sequence\n");
#endif
prev_scancode = 0;
return 0;
}
} else {
prev_scancode = 0;
/*
* The keyboard maintains its own internal caps lock and
* num lock statuses. In caps lock mode E0 AA precedes make
* code and E0 2A follows break code. In num lock mode,
* E0 2A precedes make code and E0 AA follows break code.
* We do our own book-keeping, so we will just ignore these.
*/
/*
* For my keyboard there is no caps lock mode, but there are
* both Shift-L and Shift-R modes. The former mode generates
* E0 2A / E0 AA pairs, the latter E0 B6 / E0 36 pairs.
* So, we should also ignore the latter. - aeb@cwi.nl
*/
if (scancode == 0x2a || scancode == 0x36)
return 0;
if (e0_keys[scancode])
*keycode = e0_keys[scancode];
else {
#ifdef KBD_REPORT_UNKN
if (!raw_mode)
printk(KERN_INFO "keyboard: unknown scancode e0 %02x\n",
scancode);
#endif
return 0;
}
}
} else if (scancode >= SC_LIM) {
/* This happens with the FOCUS 9000 keyboard
Its keys PF1..PF12 are reported to generate
55 73 77 78 79 7a 7b 7c 74 7e 6d 6f
Moreover, unless repeated, they do not generate
key-down events, so we have to zero up_flag below */
/* Also, Japanese 86/106 keyboards are reported to
generate 0x73 and 0x7d for \ - and \ | respectively. */
/* Also, some Brazilian keyboard is reported to produce
0x73 and 0x7e for \ ? and KP-dot, respectively. */
*keycode = high_keys[scancode - SC_LIM];
if (!*keycode) {
if (!raw_mode) {
#ifdef KBD_REPORT_UNKN
printk(KERN_INFO "keyboard: unrecognized scancode (%02x)"
" - ignored\n", scancode);
#endif
}
return 0;
}
} else
*keycode = scancode;
return 1;
}
char rawirkbd_unexpected_up(unsigned char keycode)
{
/* unexpected, but this can happen: maybe this was a key release for a
FOCUS 9000 PF key; if we want to see it, we have to clear up_flag */
if (keycode >= SC_LIM || keycode == 85)
return 0;
else
return 0200;
}
#include <asm/machdep.h>
void redwood_irkb_init(void)
{
extern struct machdep_calls ppc_md;
ppc_md.kbd_translate = rawirkbd_translate;
ppc_md.kbd_unexpected_up = rawirkbd_unexpected_up;
}
...@@ -3103,19 +3103,3 @@ static int __init serial_console_setup(struct console *co, char *options) ...@@ -3103,19 +3103,3 @@ static int __init serial_console_setup(struct console *co, char *options)
return 0; return 0;
} }
#ifdef CONFIG_INPUT_KEYBDEV
void handle_scancode(unsigned char scancode, int down)
{
printk("handle_scancode(scancode=0x%x, down=%d)\n", scancode, down);
}
static void kbd_bh(unsigned long dummy)
{
}
DECLARE_TASKLET_DISABLED(keyboard_tasklet, kbd_bh, 0);
void (*kbd_ledfunc)(unsigned int led);
#endif
...@@ -36,7 +36,6 @@ ...@@ -36,7 +36,6 @@
#include <asm/amigahw.h> #include <asm/amigahw.h>
#include <asm/amigaints.h> #include <asm/amigaints.h>
#include <asm/irq.h> #include <asm/irq.h>
#include <asm/keyboard.h>
#include <asm/machdep.h> #include <asm/machdep.h>
#include <asm/io.h> #include <asm/io.h>
...@@ -76,9 +75,6 @@ static char amiga_model_name[13] = "Amiga "; ...@@ -76,9 +75,6 @@ static char amiga_model_name[13] = "Amiga ";
extern char m68k_debug_device[]; extern char m68k_debug_device[];
static void amiga_sched_init(void (*handler)(int, void *, struct pt_regs *)); static void amiga_sched_init(void (*handler)(int, void *, struct pt_regs *));
/* amiga specific keyboard functions */
extern int amiga_keyb_init(void);
extern int amiga_kbdrate (struct kbd_repeat *);
/* amiga specific irq functions */ /* amiga specific irq functions */
extern void amiga_init_IRQ (void); extern void amiga_init_IRQ (void);
extern void (*amiga_default_handler[]) (int, void *, struct pt_regs *); extern void (*amiga_default_handler[]) (int, void *, struct pt_regs *);
...@@ -119,18 +115,6 @@ static struct console amiga_console_driver = { ...@@ -119,18 +115,6 @@ static struct console amiga_console_driver = {
index: -1, index: -1,
}; };
#ifdef CONFIG_MAGIC_SYSRQ
char amiga_sysrq_xlate[128] =
"\0001234567890-=\\\000\000" /* 0x00 - 0x0f */
"qwertyuiop[]\000123" /* 0x10 - 0x1f */
"asdfghjkl;'\000\000456" /* 0x20 - 0x2f */
"\000zxcvbnm,./\000+789" /* 0x30 - 0x3f */
" \177\t\r\r\000\177\000\000\000-\000\000\000\000\000" /* 0x40 - 0x4f */
"\000\201\202\203\204\205\206\207\210\211()/*+\000" /* 0x50 - 0x5f */
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" /* 0x60 - 0x6f */
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"; /* 0x70 - 0x7f */
#endif
extern void (*kd_mksound)(unsigned int, unsigned int); extern void (*kd_mksound)(unsigned int, unsigned int);
...@@ -407,8 +391,6 @@ void __init config_amiga(void) ...@@ -407,8 +391,6 @@ void __init config_amiga(void)
request_resource(&iomem_resource, &((struct resource *)&mb_resources)[i]); request_resource(&iomem_resource, &((struct resource *)&mb_resources)[i]);
mach_sched_init = amiga_sched_init; mach_sched_init = amiga_sched_init;
mach_keyb_init = amiga_keyb_init;
mach_kbdrate = amiga_kbdrate;
mach_init_IRQ = amiga_init_IRQ; mach_init_IRQ = amiga_init_IRQ;
#ifndef CONFIG_APUS #ifndef CONFIG_APUS
mach_default_handler = &amiga_default_handler; mach_default_handler = &amiga_default_handler;
......
...@@ -575,7 +575,6 @@ if [ "$CONFIG_40x" = "y" ]; then ...@@ -575,7 +575,6 @@ if [ "$CONFIG_40x" = "y" ]; then
mainmenu_option next_comment mainmenu_option next_comment
comment 'IBM 40x options' comment 'IBM 40x options'
if [ "$CONFIG_STB03xxx" = "y" ]; then if [ "$CONFIG_STB03xxx" = "y" ]; then
bool 'STB IR Keyboard' CONFIG_STB_KB
bool 'SICC Serial port' CONFIG_SERIAL_SICC bool 'SICC Serial port' CONFIG_SERIAL_SICC
if [ "$CONFIG_SERIAL_SICC" = "y" -a "$CONFIG_UART0_TTYS1" = "y" ]; then if [ "$CONFIG_SERIAL_SICC" = "y" -a "$CONFIG_UART0_TTYS1" = "y" ]; then
define_bool CONFIG_UART1_DFLT_CONSOLE y define_bool CONFIG_UART1_DFLT_CONSOLE y
......
...@@ -345,12 +345,6 @@ platform_init(unsigned long r3, unsigned long r4, unsigned long r5, ...@@ -345,12 +345,6 @@ platform_init(unsigned long r3, unsigned long r4, unsigned long r5,
ppc_md.progress = ppc4xx_progress; ppc_md.progress = ppc4xx_progress;
#endif #endif
#if defined(CONFIG_VT) && defined(CONFIG_PC_KEYBOARD)
#if defined(CONFIG_REDWOOD_4) && defined(CONFIG_STB_KB)
redwood_irkb_init();
#endif
#endif
/* /*
** m8xx_setup.c, prep_setup.c use ** m8xx_setup.c, prep_setup.c use
** defined(CONFIG_BLK_DEV_IDE) || defined(CONFIG_BLK_DEV_IDE_MODULE) ** defined(CONFIG_BLK_DEV_IDE) || defined(CONFIG_BLK_DEV_IDE_MODULE)
......
...@@ -34,7 +34,6 @@ ...@@ -34,7 +34,6 @@
#include <asm/pgtable.h> #include <asm/pgtable.h>
#include <asm/dma.h> #include <asm/dma.h>
#include <asm/machdep.h> #include <asm/machdep.h>
#include <asm/keyboard.h>
#include <asm/time.h> #include <asm/time.h>
unsigned long m68k_machtype; unsigned long m68k_machtype;
...@@ -42,16 +41,9 @@ char debug_device[6] = ""; ...@@ -42,16 +41,9 @@ char debug_device[6] = "";
extern void amiga_init_IRQ(void); extern void amiga_init_IRQ(void);
extern int amiga_kbd_translate(unsigned char keycode, unsigned char *keycodep, char raw_mode);
extern char amiga_sysrq_xlate[128];
extern void apus_setup_pci_ptrs(void); extern void apus_setup_pci_ptrs(void);
void (*mach_sched_init) (void (*handler)(int, void *, struct pt_regs *)) __initdata = NULL; void (*mach_sched_init) (void (*handler)(int, void *, struct pt_regs *)) __initdata = NULL;
/* machine dependent keyboard functions */
int (*mach_keyb_init) (void) __initdata = NULL;
int (*mach_kbdrate) (struct kbd_repeat *) = NULL;
void (*mach_kbd_leds) (unsigned int) = NULL;
/* machine dependent irq functions */ /* machine dependent irq functions */
void (*mach_init_IRQ) (void) __initdata = NULL; void (*mach_init_IRQ) (void) __initdata = NULL;
void (*(*mach_default_handler)[]) (int, void *, struct pt_regs *) = NULL; void (*(*mach_default_handler)[]) (int, void *, struct pt_regs *) = NULL;
...@@ -562,32 +554,6 @@ void apus_end_irq(unsigned int irq) ...@@ -562,32 +554,6 @@ void apus_end_irq(unsigned int irq)
APUS_WRITE(APUS_IPL_EMU, IPLEMU_DISABLEINT|ipl_emu); APUS_WRITE(APUS_IPL_EMU, IPLEMU_DISABLEINT|ipl_emu);
} }
/****************************************************** keyboard */
static int apus_kbd_setkeycode(unsigned int scancode, unsigned int keycode)
{
return -EOPNOTSUPP;
}
static int apus_kbd_getkeycode(unsigned int scancode)
{
return scancode > 127 ? -EINVAL : scancode;
}
static char apus_kbd_unexpected_up(unsigned char keycode)
{
return 0200;
}
static void apus_kbd_init_hw(void)
{
#ifdef CONFIG_APUS
extern int amiga_keyb_init(void);
amiga_keyb_init();
#endif
}
/****************************************************** debugging */ /****************************************************** debugging */
/* some serial hardware definitions */ /* some serial hardware definitions */
...@@ -851,9 +817,4 @@ void platform_init(unsigned long r3, unsigned long r4, unsigned long r5, ...@@ -851,9 +817,4 @@ void platform_init(unsigned long r3, unsigned long r4, unsigned long r5,
ppc_md.find_end_of_memory = apus_find_end_of_memory; ppc_md.find_end_of_memory = apus_find_end_of_memory;
ppc_md.setup_io_mappings = apus_map_io; ppc_md.setup_io_mappings = apus_map_io;
/* These should not be used for the APUS yet, since it uses
the M68K keyboard now. */
ppc_md.kbd_translate = amiga_kbd_translate;
ppc_md.kbd_unexpected_up = apus_kbd_unexpected_up;
} }
...@@ -50,7 +50,6 @@ ...@@ -50,7 +50,6 @@
#include <asm/machdep.h> #include <asm/machdep.h>
#include <asm/irq.h> #include <asm/irq.h>
#include <asm/hydra.h> #include <asm/hydra.h>
#include <asm/keyboard.h>
#include <asm/sections.h> #include <asm/sections.h>
#include <asm/time.h> #include <asm/time.h>
#include <asm/btext.h> #include <asm/btext.h>
......
...@@ -63,7 +63,6 @@ ...@@ -63,7 +63,6 @@
#include <asm/mk48t59.h> #include <asm/mk48t59.h>
#include <asm/prep_nvram.h> #include <asm/prep_nvram.h>
#include <asm/raven.h> #include <asm/raven.h>
#include <asm/keyboard.h>
#include <asm/vga.h> #include <asm/vga.h>
#include <asm/time.h> #include <asm/time.h>
......
...@@ -55,7 +55,6 @@ ...@@ -55,7 +55,6 @@
#include <asm/mk48t59.h> #include <asm/mk48t59.h>
#include <asm/prep_nvram.h> #include <asm/prep_nvram.h>
#include <asm/raven.h> #include <asm/raven.h>
#include <asm/keyboard.h>
#include <asm/vga.h> #include <asm/vga.h>
#include <asm/time.h> #include <asm/time.h>
#include <asm/mpc10x.h> #include <asm/mpc10x.h>
......
...@@ -45,22 +45,3 @@ void __init ...@@ -45,22 +45,3 @@ void __init
board_init(void) board_init(void)
{ {
} }
/* hack; blame me dan. -brad */
#ifdef CONFIG_INPUT_KEYBDEV
void
handle_scancode(unsigned char scancode, int down)
{
printk("handle_scancode(scancode=0x%x, down=%d)\n", scancode, down);
}
static void
kbd_bh(unsigned long dummy)
{
}
DECLARE_TASKLET_DISABLED(keyboard_tasklet, kbd_bh, 0);
void (*kbd_ledfunc) (unsigned int led);
#endif
...@@ -83,7 +83,6 @@ ...@@ -83,7 +83,6 @@
#include <asm/machdep.h> #include <asm/machdep.h>
#include <asm/prom.h> #include <asm/prom.h>
#include <asm/smp.h> #include <asm/smp.h>
#include <asm/keyboard.h>
#include <asm/vga.h> #include <asm/vga.h>
#include <asm/open_pic.h> #include <asm/open_pic.h>
#include <asm/i8259.h> #include <asm/i8259.h>
......
...@@ -58,16 +58,5 @@ ...@@ -58,16 +58,5 @@
#define SPRUCE_NVRAM_BASE_ADDR 0xff800000 #define SPRUCE_NVRAM_BASE_ADDR 0xff800000
#define SPRUCE_RTC_BASE_ADDR SPRUCE_NVRAM_BASE_ADDR #define SPRUCE_RTC_BASE_ADDR SPRUCE_NVRAM_BASE_ADDR
#define KEYBOARD_IRQ 22
#define AUX_IRQ 21
unsigned char spruce_read_keyb_data(void);
unsigned char spruce_read_keyb_status(void);
#define kbd_read_input spruce_read_keyb_data
#define kbd_read_status spruce_read_keyb_status
#define kbd_write_output(val) *((unsigned char *)0xff810000) = (char)val
#define kbd_write_command(val) *((unsigned char *)0xff810001) = (char)val
#endif /* __ASM_SPRUCE_H__ */ #endif /* __ASM_SPRUCE_H__ */
#endif /* __KERNEL__ */ #endif /* __KERNEL__ */
...@@ -46,7 +46,6 @@ ...@@ -46,7 +46,6 @@
#include <linux/ide.h> #include <linux/ide.h>
#include <linux/root_dev.h> #include <linux/root_dev.h>
#include <asm/keyboard.h>
#include <asm/system.h> #include <asm/system.h>
#include <asm/pgtable.h> #include <asm/pgtable.h>
#include <asm/page.h> #include <asm/page.h>
...@@ -201,49 +200,6 @@ spruce_map_io(void) ...@@ -201,49 +200,6 @@ spruce_map_io(void)
0x08000000, _PAGE_IO); 0x08000000, _PAGE_IO);
} }
unsigned char spruce_read_keyb_status(void)
{
unsigned long kbd_status;
__raw_writel(0x00000088, 0xff500008);
eieio();
__raw_writel(0x03000000, 0xff50000c);
eieio();
asm volatile(" lis 7,0xff88 \n
ori 7,7,0x8 \n
lswi 6,7,0x8 \n
mr %0,6 \n"
: "=r" (kbd_status) :: "6", "7");
__raw_writel(0x00000000, 0xff50000c);
eieio();
return (unsigned char)(kbd_status >> 24);
}
unsigned char spruce_read_keyb_data(void)
{
unsigned long kbd_data;
__raw_writel(0x00000088, 0xff500008);
eieio();
__raw_writel(0x03000000, 0xff50000c);
eieio();
asm volatile(" lis 7,0xff88 \n
lswi 6,7,0x8 \n
mr %0,6 \n"
: "=r" (kbd_data) :: "6", "7");
__raw_writel(0x00000000, 0xff50000c);
eieio();
return (unsigned char)(kbd_data >> 24);
}
void __init void __init
platform_init(unsigned long r3, unsigned long r4, unsigned long r5, platform_init(unsigned long r3, unsigned long r4, unsigned long r5,
unsigned long r6, unsigned long r7) unsigned long r6, unsigned long r7)
......
...@@ -45,6 +45,8 @@ ...@@ -45,6 +45,8 @@
#include <asm/todc.h> #include <asm/todc.h>
#endif #endif
#include "walnut.h"
#undef DEBUG #undef DEBUG
#ifdef DEBUG #ifdef DEBUG
...@@ -82,9 +84,6 @@ ppc405_map_irq(struct pci_dev *dev, unsigned char idsel, unsigned char pin) ...@@ -82,9 +84,6 @@ ppc405_map_irq(struct pci_dev *dev, unsigned char idsel, unsigned char pin)
void __init void __init
board_setup_arch(void) board_setup_arch(void)
{ {
#define WALNUT_PS2_BASE 0xF0100000
#define WALNUT_FPGA_BASE 0xF0300000
void *fpga_brdc; void *fpga_brdc;
unsigned char fpga_brdc_data; unsigned char fpga_brdc_data;
void *fpga_enable; void *fpga_enable;
......
...@@ -73,14 +73,6 @@ extern void *walnut_rtc_base; ...@@ -73,14 +73,6 @@ extern void *walnut_rtc_base;
#define WALNUT_PS2_BASE 0xF0100000 #define WALNUT_PS2_BASE 0xF0100000
#define WALNUT_FPGA_BASE 0xF0300000 #define WALNUT_FPGA_BASE 0xF0300000
extern void *kb_cs;
extern void *kb_data;
#define kbd_read_input() readb(kb_data)
#define kbd_read_status() readb(kb_cs)
#define kbd_write_output(val) writeb(val, kb_data)
#define kbd_write_command(val) writeb(val, kb_cs)
#define PPC4xx_MACHINE_NAME "IBM Walnut" #define PPC4xx_MACHINE_NAME "IBM Walnut"
#endif /* !__ASSEMBLY__ */ #endif /* !__ASSEMBLY__ */
......
...@@ -72,26 +72,6 @@ static unsigned short x86_keycodes[256] = ...@@ -72,26 +72,6 @@ static unsigned short x86_keycodes[256] =
#ifdef CONFIG_MAC_EMUMOUSEBTN #ifdef CONFIG_MAC_EMUMOUSEBTN
extern int mac_hid_mouse_emulate_buttons(int, int, int); extern int mac_hid_mouse_emulate_buttons(int, int, int);
#endif /* CONFIG_MAC_EMUMOUSEBTN */ #endif /* CONFIG_MAC_EMUMOUSEBTN */
#ifdef CONFIG_MAC_ADBKEYCODES
extern int mac_hid_keyboard_sends_linux_keycodes(void);
#else
#define mac_hid_keyboard_sends_linux_keycodes() 0
#endif /* CONFIG_MAC_ADBKEYCODES */
#if defined(CONFIG_MAC_ADBKEYCODES) || defined(CONFIG_ADB_KEYBOARD)
static unsigned char mac_keycodes[256] = {
0, 53, 18, 19, 20, 21, 23, 22, 26, 28, 25, 29, 27, 24, 51, 48,
12, 13, 14, 15, 17, 16, 32, 34, 31, 35, 33, 30, 36, 54,128, 1,
2, 3, 5, 4, 38, 40, 37, 41, 39, 50, 56, 42, 6, 7, 8, 9,
11, 45, 46, 43, 47, 44,123, 67, 58, 49, 57,122,120, 99,118, 96,
97, 98,100,101,109, 71,107, 89, 91, 92, 78, 86, 87, 88, 69, 83,
84, 85, 82, 65, 42, 0, 10,103,111, 0, 0, 0, 0, 0, 0, 0,
76,125, 75,105,124,110,115, 62,116, 59, 60,119, 61,121,114,117,
0, 0, 0, 0,127, 81, 0,113, 0, 0, 0, 0, 95, 55, 55, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 94, 0, 93, 0, 0, 0, 0, 0, 0,104,102 };
#endif /* CONFIG_MAC_ADBKEYCODES || CONFIG_ADB_KEYBOARD */
static int emulate_raw(unsigned int keycode, int down) static int emulate_raw(unsigned int keycode, int down)
{ {
...@@ -99,15 +79,6 @@ static int emulate_raw(unsigned int keycode, int down) ...@@ -99,15 +79,6 @@ static int emulate_raw(unsigned int keycode, int down)
if (mac_hid_mouse_emulate_buttons(1, keycode, down)) if (mac_hid_mouse_emulate_buttons(1, keycode, down))
return 0; return 0;
#endif /* CONFIG_MAC_EMUMOUSEBTN */ #endif /* CONFIG_MAC_EMUMOUSEBTN */
#if defined(CONFIG_MAC_ADBKEYCODES) || defined(CONFIG_ADB_KEYBOARD)
if (!mac_hid_keyboard_sends_linux_keycodes()) {
if (keycode > 255 || !mac_keycodes[keycode])
return -1;
handle_scancode((mac_keycodes[keycode] & 0x7f), down);
return 0;
}
#endif /* CONFIG_MAC_ADBKEYCODES || CONFIG_ADB_KEYBOARD */
if (keycode > 255 || !x86_keycodes[keycode]) if (keycode > 255 || !x86_keycodes[keycode])
return -1; return -1;
......
...@@ -18,6 +18,9 @@ ...@@ -18,6 +18,9 @@
extern void *kb_cs; extern void *kb_cs;
extern void *kb_data; extern void *kb_data;
#define I8042_COMMAND_REG (*(int *)kb_cs)
#define I8042_DATA_REG (*(int *)kb_data)
static inline int i8042_read_data(void) static inline int i8042_read_data(void)
{ {
return readb(kb_data); return readb(kb_data);
...@@ -57,6 +60,9 @@ static inline void i8042_platform_exit(void) ...@@ -57,6 +60,9 @@ static inline void i8042_platform_exit(void)
#define I8042_KBD_PHYS_DESC "spruceps2/serio0" #define I8042_KBD_PHYS_DESC "spruceps2/serio0"
#define I8042_AUX_PHYS_DESC "spruceps2/serio1" #define I8042_AUX_PHYS_DESC "spruceps2/serio1"
#define I8042_COMMAND_REG 0xff810000
#define I8042_DATA_REG 0xff810001
static inline int i8042_read_data(void) static inline int i8042_read_data(void)
{ {
unsigned long kbd_data; unsigned long kbd_data;
......
...@@ -25,10 +25,6 @@ ...@@ -25,10 +25,6 @@
#include <linux/ioport.h> #include <linux/ioport.h>
#include <linux/kd.h> #include <linux/kd.h>
#include <asm/io.h> #include <asm/io.h>
/* IBM Spruce platform is different. */
#ifdef CONFIG_SPRUCE
#include <platforms/spruce.h>
#endif
#ifndef KEYBOARD_IRQ #ifndef KEYBOARD_IRQ
#define KEYBOARD_IRQ 1 #define KEYBOARD_IRQ 1
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment