From 7d30d1df118d5b27a559e590475897e1b09f0ebe Mon Sep 17 00:00:00 2001 From: Vojtech Pavlik Date: Thu, 25 Jul 2002 02:57:12 +0200 Subject: This patch by Brad Hards replaces the four id* fields of the input struct by a single struct to simplify passing it around and to userspace. --- include/linux/gameport.h | 5 +---- include/linux/input.h | 19 ++++++++++--------- include/linux/uinput.h | 5 +---- 3 files changed, 12 insertions(+), 17 deletions(-) (limited to 'include') diff --git a/include/linux/gameport.h b/include/linux/gameport.h index 0cb1a3b46f77..7bf3bccf0fda 100644 --- a/include/linux/gameport.h +++ b/include/linux/gameport.h @@ -39,10 +39,7 @@ struct gameport { char *name; char *phys; - unsigned short idbus; - unsigned short idvendor; - unsigned short idproduct; - unsigned short idversion; + struct input_devinfo id; int io; int speed; diff --git a/include/linux/input.h b/include/linux/input.h index 28cc98e91037..ca8d8fa55a77 100644 --- a/include/linux/input.h +++ b/include/linux/input.h @@ -56,8 +56,15 @@ struct input_event { * IOCTLs (0x00 - 0x7f) */ +struct input_devinfo { + uint16_t bustype; + uint16_t vendor; + uint16_t product; + uint16_t version; +}; + #define EVIOCGVERSION _IOR('E', 0x01, int) /* get driver version */ -#define EVIOCGID _IOR('E', 0x02, short[4]) /* get device ID */ +#define EVIOCGID _IOR('E', 0x02, struct input_devinfo) /* get device ID */ #define EVIOCGREP _IOR('E', 0x03, int[2]) /* get repeat settings */ #define EVIOCSREP _IOW('E', 0x03, int[2]) /* get repeat settings */ #define EVIOCGKEYCODE _IOR('E', 0x04, int[2]) /* get keycode */ @@ -742,10 +749,7 @@ struct input_dev { char *name; char *phys; char *uniq; - unsigned short idbus; - unsigned short idvendor; - unsigned short idproduct; - unsigned short idversion; + struct input_devinfo id; unsigned long evbit[NBITS(EV_MAX)]; unsigned long keybit[NBITS(KEY_MAX)]; @@ -818,10 +822,7 @@ struct input_device_id { unsigned long flags; - unsigned short idbus; - unsigned short idvendor; - unsigned short idproduct; - unsigned short idversion; + struct input_devinfo id; unsigned long evbit[NBITS(EV_MAX)]; unsigned long keybit[NBITS(KEY_MAX)]; diff --git a/include/linux/uinput.h b/include/linux/uinput.h index 6754ab4e0952..528b27a21d78 100644 --- a/include/linux/uinput.h +++ b/include/linux/uinput.h @@ -64,10 +64,7 @@ struct uinput_device { #define UINPUT_MAX_NAME_SIZE 80 struct uinput_user_dev { char name[UINPUT_MAX_NAME_SIZE]; - unsigned short idbus; - unsigned short idvendor; - unsigned short idproduct; - unsigned short idversion; + struct input_devinfo id; int ff_effects_max; int absmax[ABS_MAX + 1]; int absmin[ABS_MAX + 1]; -- cgit v1.2.3 From 90ced6f7baf3c19792d2e6d81ec81eb431eb0a24 Mon Sep 17 00:00:00 2001 From: Vojtech Pavlik Date: Thu, 25 Jul 2002 03:05:23 +0200 Subject: Remove duplicately defined keys in input.h that got there as a part of a PVR support patch. --- include/linux/input.h | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) (limited to 'include') diff --git a/include/linux/input.h b/include/linux/input.h index ca8d8fa55a77..7d413abc26b3 100644 --- a/include/linux/input.h +++ b/include/linux/input.h @@ -461,17 +461,15 @@ struct input_devinfo { #define KEY_FIRST 0x194 #define KEY_LAST 0x195 #define KEY_AB 0x196 -#define KEY_PLAY 0x197 +#define KEY_NEXT 0x197 #define KEY_RESTART 0x198 #define KEY_SLOW 0x199 #define KEY_SHUFFLE 0x19a -#define KEY_FASTFORWARD 0x19b +#define KEY_BREAK 0x1ab #define KEY_PREVIOUS 0x19c -#define KEY_NEXT 0x19d -#define KEY_DIGITS 0x19e -#define KEY_TEEN 0x19f -#define KEY_TWEN 0x1a0 -#define KEY_BREAK 0x1a1 +#define KEY_DIGITS 0x19d +#define KEY_TEEN 0x19e +#define KEY_TWEN 0x1af #define KEY_MAX 0x1ff -- cgit v1.2.3 From d41a84b5121f484e86f0484da32a6a71a55a7024 Mon Sep 17 00:00:00 2001 From: Vojtech Pavlik Date: Thu, 25 Jul 2002 03:11:39 +0200 Subject: 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 --- arch/ppc/4xx_io/Makefile | 1 - arch/ppc/4xx_io/stb_kb.c | 289 ----------------------------------- arch/ppc/8xx_io/uart.c | 16 -- arch/ppc/amiga/config.c | 18 --- arch/ppc/config.in | 1 - arch/ppc/kernel/ppc4xx_setup.c | 6 - arch/ppc/platforms/apus_setup.c | 39 ----- arch/ppc/platforms/chrp_setup.c | 1 - arch/ppc/platforms/pplus_setup.c | 1 - arch/ppc/platforms/prep_setup.c | 1 - arch/ppc/platforms/redwood.c | 19 --- arch/ppc/platforms/sandpoint_setup.c | 1 - arch/ppc/platforms/spruce.h | 11 -- arch/ppc/platforms/spruce_setup.c | 44 ------ arch/ppc/platforms/walnut.c | 5 +- arch/ppc/platforms/walnut.h | 8 - drivers/input/keybdev.c | 29 ---- drivers/input/serio/i8042-ppcio.h | 6 + include/asm-ppc/keyboard.h | 4 - 19 files changed, 8 insertions(+), 492 deletions(-) (limited to 'include') diff --git a/arch/ppc/4xx_io/Makefile b/arch/ppc/4xx_io/Makefile index 8c0700cf083c..d6d3d0444a34 100644 --- a/arch/ppc/4xx_io/Makefile +++ b/arch/ppc/4xx_io/Makefile @@ -6,7 +6,6 @@ O_TARGET := 4xx_io.o #obj-y := -obj-$(CONFIG_STB_KB) += stb_kb.o obj-$(CONFIG_SERIAL_SICC) += serial_sicc.o include $(TOPDIR)/Rules.make diff --git a/arch/ppc/4xx_io/stb_kb.c b/arch/ppc/4xx_io/stb_kb.c index 6de3b94ff84b..e69de29bb2d1 100644 --- a/arch/ppc/4xx_io/stb_kb.c +++ b/arch/ppc/4xx_io/stb_kb.c @@ -1,289 +0,0 @@ -/* - * 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 - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/* 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 - -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; -} - diff --git a/arch/ppc/8xx_io/uart.c b/arch/ppc/8xx_io/uart.c index b2e8009a26dd..25dff6c76039 100644 --- a/arch/ppc/8xx_io/uart.c +++ b/arch/ppc/8xx_io/uart.c @@ -3103,19 +3103,3 @@ static int __init serial_console_setup(struct console *co, char *options) 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 diff --git a/arch/ppc/amiga/config.c b/arch/ppc/amiga/config.c index c06708759309..d7cbddef505e 100644 --- a/arch/ppc/amiga/config.c +++ b/arch/ppc/amiga/config.c @@ -36,7 +36,6 @@ #include #include #include -#include #include #include @@ -76,9 +75,6 @@ static char amiga_model_name[13] = "Amiga "; extern char m68k_debug_device[]; 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 */ extern void amiga_init_IRQ (void); extern void (*amiga_default_handler[]) (int, void *, struct pt_regs *); @@ -119,18 +115,6 @@ static struct console amiga_console_driver = { 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); @@ -407,8 +391,6 @@ void __init config_amiga(void) request_resource(&iomem_resource, &((struct resource *)&mb_resources)[i]); mach_sched_init = amiga_sched_init; - mach_keyb_init = amiga_keyb_init; - mach_kbdrate = amiga_kbdrate; mach_init_IRQ = amiga_init_IRQ; #ifndef CONFIG_APUS mach_default_handler = &amiga_default_handler; diff --git a/arch/ppc/config.in b/arch/ppc/config.in index 26f4c2eddd8f..090d2a78afe0 100644 --- a/arch/ppc/config.in +++ b/arch/ppc/config.in @@ -575,7 +575,6 @@ if [ "$CONFIG_40x" = "y" ]; then mainmenu_option next_comment comment 'IBM 40x options' if [ "$CONFIG_STB03xxx" = "y" ]; then - bool 'STB IR Keyboard' CONFIG_STB_KB bool 'SICC Serial port' CONFIG_SERIAL_SICC if [ "$CONFIG_SERIAL_SICC" = "y" -a "$CONFIG_UART0_TTYS1" = "y" ]; then define_bool CONFIG_UART1_DFLT_CONSOLE y diff --git a/arch/ppc/kernel/ppc4xx_setup.c b/arch/ppc/kernel/ppc4xx_setup.c index d65e1d58ab37..b6319a885da4 100755 --- a/arch/ppc/kernel/ppc4xx_setup.c +++ b/arch/ppc/kernel/ppc4xx_setup.c @@ -345,12 +345,6 @@ platform_init(unsigned long r3, unsigned long r4, unsigned long r5, ppc_md.progress = ppc4xx_progress; #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 ** defined(CONFIG_BLK_DEV_IDE) || defined(CONFIG_BLK_DEV_IDE_MODULE) diff --git a/arch/ppc/platforms/apus_setup.c b/arch/ppc/platforms/apus_setup.c index 34b237292822..ce5db175c9da 100644 --- a/arch/ppc/platforms/apus_setup.c +++ b/arch/ppc/platforms/apus_setup.c @@ -34,7 +34,6 @@ #include #include #include -#include #include unsigned long m68k_machtype; @@ -42,16 +41,9 @@ char debug_device[6] = ""; 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); 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 */ void (*mach_init_IRQ) (void) __initdata = NULL; void (*(*mach_default_handler)[]) (int, void *, struct pt_regs *) = NULL; @@ -562,32 +554,6 @@ void apus_end_irq(unsigned int irq) 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 */ /* some serial hardware definitions */ @@ -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.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; } diff --git a/arch/ppc/platforms/chrp_setup.c b/arch/ppc/platforms/chrp_setup.c index 37d92db09aa4..2ccac47373eb 100644 --- a/arch/ppc/platforms/chrp_setup.c +++ b/arch/ppc/platforms/chrp_setup.c @@ -50,7 +50,6 @@ #include #include #include -#include #include #include #include diff --git a/arch/ppc/platforms/pplus_setup.c b/arch/ppc/platforms/pplus_setup.c index 5af73b599e54..640c6164fbd0 100644 --- a/arch/ppc/platforms/pplus_setup.c +++ b/arch/ppc/platforms/pplus_setup.c @@ -63,7 +63,6 @@ #include #include #include -#include #include #include diff --git a/arch/ppc/platforms/prep_setup.c b/arch/ppc/platforms/prep_setup.c index 8fafd380b413..9ab36cbf3f10 100644 --- a/arch/ppc/platforms/prep_setup.c +++ b/arch/ppc/platforms/prep_setup.c @@ -55,7 +55,6 @@ #include #include #include -#include #include #include #include diff --git a/arch/ppc/platforms/redwood.c b/arch/ppc/platforms/redwood.c index 39dcafab547b..e1615d14a2c3 100644 --- a/arch/ppc/platforms/redwood.c +++ b/arch/ppc/platforms/redwood.c @@ -45,22 +45,3 @@ void __init 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 diff --git a/arch/ppc/platforms/sandpoint_setup.c b/arch/ppc/platforms/sandpoint_setup.c index f22f5d3208c7..7c0eb2572264 100644 --- a/arch/ppc/platforms/sandpoint_setup.c +++ b/arch/ppc/platforms/sandpoint_setup.c @@ -83,7 +83,6 @@ #include #include #include -#include #include #include #include diff --git a/arch/ppc/platforms/spruce.h b/arch/ppc/platforms/spruce.h index 5009c5f7d886..1f75ccf4ac33 100644 --- a/arch/ppc/platforms/spruce.h +++ b/arch/ppc/platforms/spruce.h @@ -58,16 +58,5 @@ #define SPRUCE_NVRAM_BASE_ADDR 0xff800000 #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 /* __KERNEL__ */ diff --git a/arch/ppc/platforms/spruce_setup.c b/arch/ppc/platforms/spruce_setup.c index 4a8c03dc880f..d1152dcd231b 100644 --- a/arch/ppc/platforms/spruce_setup.c +++ b/arch/ppc/platforms/spruce_setup.c @@ -46,7 +46,6 @@ #include #include -#include #include #include #include @@ -201,49 +200,6 @@ spruce_map_io(void) 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 platform_init(unsigned long r3, unsigned long r4, unsigned long r5, unsigned long r6, unsigned long r7) diff --git a/arch/ppc/platforms/walnut.c b/arch/ppc/platforms/walnut.c index be520b8fd5c9..b8f0bde680e8 100755 --- a/arch/ppc/platforms/walnut.c +++ b/arch/ppc/platforms/walnut.c @@ -45,6 +45,8 @@ #include #endif +#include "walnut.h" + #undef DEBUG #ifdef DEBUG @@ -82,9 +84,6 @@ ppc405_map_irq(struct pci_dev *dev, unsigned char idsel, unsigned char pin) void __init board_setup_arch(void) { -#define WALNUT_PS2_BASE 0xF0100000 -#define WALNUT_FPGA_BASE 0xF0300000 - void *fpga_brdc; unsigned char fpga_brdc_data; void *fpga_enable; diff --git a/arch/ppc/platforms/walnut.h b/arch/ppc/platforms/walnut.h index ccf4c5cf732f..5e228de77720 100644 --- a/arch/ppc/platforms/walnut.h +++ b/arch/ppc/platforms/walnut.h @@ -73,14 +73,6 @@ extern void *walnut_rtc_base; #define WALNUT_PS2_BASE 0xF0100000 #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" #endif /* !__ASSEMBLY__ */ diff --git a/drivers/input/keybdev.c b/drivers/input/keybdev.c index 8a5a93b57f7a..c96751914084 100644 --- a/drivers/input/keybdev.c +++ b/drivers/input/keybdev.c @@ -72,26 +72,6 @@ static unsigned short x86_keycodes[256] = #ifdef CONFIG_MAC_EMUMOUSEBTN extern int mac_hid_mouse_emulate_buttons(int, int, int); #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) { @@ -99,15 +79,6 @@ static int emulate_raw(unsigned int keycode, int down) if (mac_hid_mouse_emulate_buttons(1, keycode, down)) return 0; #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]) return -1; diff --git a/drivers/input/serio/i8042-ppcio.h b/drivers/input/serio/i8042-ppcio.h index 4b89fa3cc99e..c385b473c688 100644 --- a/drivers/input/serio/i8042-ppcio.h +++ b/drivers/input/serio/i8042-ppcio.h @@ -18,6 +18,9 @@ extern void *kb_cs; 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) { return readb(kb_data); @@ -57,6 +60,9 @@ static inline void i8042_platform_exit(void) #define I8042_KBD_PHYS_DESC "spruceps2/serio0" #define I8042_AUX_PHYS_DESC "spruceps2/serio1" +#define I8042_COMMAND_REG 0xff810000 +#define I8042_DATA_REG 0xff810001 + static inline int i8042_read_data(void) { unsigned long kbd_data; diff --git a/include/asm-ppc/keyboard.h b/include/asm-ppc/keyboard.h index bda2d671d563..cde58bef0916 100644 --- a/include/asm-ppc/keyboard.h +++ b/include/asm-ppc/keyboard.h @@ -25,10 +25,6 @@ #include #include #include -/* IBM Spruce platform is different. */ -#ifdef CONFIG_SPRUCE -#include -#endif #ifndef KEYBOARD_IRQ #define KEYBOARD_IRQ 1 -- cgit v1.2.3 From db82e8212151e4ce67253bc067ac162615615ca5 Mon Sep 17 00:00:00 2001 From: Vojtech Pavlik Date: Thu, 25 Jul 2002 03:14:48 +0200 Subject: The following patch adds the "resend" capability to the keyboard driver; when the host driver detects a parity or framing error, we can ask the keyboard to resend the data, instead of treating random garbage as valid data. We also export serio_interrupt() - serio modules are using it, yet you can't use them as modules without this symbol exported. -- Russell King --- drivers/input/keyboard/atkbd.c | 10 +++++++++- drivers/input/serio/serio.c | 1 + include/linux/serio.h | 4 ++++ 3 files changed, 14 insertions(+), 1 deletion(-) (limited to 'include') diff --git a/drivers/input/keyboard/atkbd.c b/drivers/input/keyboard/atkbd.c index 998edbf7ff7f..c64b1934dc7a 100644 --- a/drivers/input/keyboard/atkbd.c +++ b/drivers/input/keyboard/atkbd.c @@ -98,6 +98,7 @@ static unsigned char atkbd_set3_keycode[512] = { #define ATKBD_CMD_ENABLE 0x00f4 #define ATKBD_CMD_RESET_DIS 0x00f5 #define ATKBD_CMD_SETALL_MB 0x00f8 +#define ATKBD_CMD_RESEND 0x00fe #define ATKBD_CMD_EX_ENABLE 0x10ea #define ATKBD_CMD_EX_SETLEDS 0x20eb @@ -141,9 +142,16 @@ static void atkbd_interrupt(struct serio *serio, unsigned char data, unsigned in int code = data; #ifdef ATKBD_DEBUG - printk(KERN_DEBUG "atkbd.c: Received %02x\n", data); + printk(KERN_DEBUG "atkbd.c: Received %02x flags %02x\n", data, flags); #endif + /* Interface error. Request that the keyboard resend. */ + if (flags & (SERIO_FRAME | SERIO_PARITY)) { + printk("atkbd.c: frame/parity error: %02x\n", flags); + serio_write(serio, ATKBD_CMD_RESEND); + return; + } + switch (code) { case ATKBD_RET_ACK: atkbd->ack = 1; diff --git a/drivers/input/serio/serio.c b/drivers/input/serio/serio.c index 415adb665568..b6e6c0f71384 100644 --- a/drivers/input/serio/serio.c +++ b/drivers/input/serio/serio.c @@ -42,6 +42,7 @@ MODULE_AUTHOR("Vojtech Pavlik "); MODULE_DESCRIPTION("Serio abstraction core"); MODULE_LICENSE("GPL"); +EXPORT_SYMBOL(serio_interrupt); EXPORT_SYMBOL(serio_register_port); EXPORT_SYMBOL(serio_unregister_port); EXPORT_SYMBOL(serio_register_device); diff --git a/include/linux/serio.h b/include/linux/serio.h index 37deb0ca7836..ce0359b25fb7 100644 --- a/include/linux/serio.h +++ b/include/linux/serio.h @@ -94,8 +94,12 @@ static __inline__ void serio_dev_write_wakeup(struct serio *serio) serio->dev->write_wakeup(serio); } +/* + * bit masks for use in "interrupt" flags (3rd argument) + */ #define SERIO_TIMEOUT 1 #define SERIO_PARITY 2 +#define SERIO_FRAME 4 #define SERIO_TYPE 0xff000000UL #define SERIO_XT 0x00000000UL -- cgit v1.2.3