From: Vojtech Pavlik Date: Sat, 13 Jul 2002 17:26:38 +0000 (+0200) Subject: Franz Sirl's ADB/PPC keyboard handling update - move fully X-Git-Tag: v2.5.26~114^2~2 X-Git-Url: http://git.neil.brown.name/?a=commitdiff_plain;h=b07a73e9038e5093e713c5f9fb27b0190b30a23e;p=history.git Franz Sirl's ADB/PPC keyboard handling update - move fully to using the input core --- diff --git a/arch/ppc/4xx_io/stb_kb.c b/arch/ppc/4xx_io/stb_kb.c index ccb2cd83420d..6de3b94ff84b 100644 --- a/arch/ppc/4xx_io/stb_kb.c +++ b/arch/ppc/4xx_io/stb_kb.c @@ -283,11 +283,7 @@ void redwood_irkb_init(void) { extern struct machdep_calls ppc_md; - ppc_md.kbd_setkeycode = rawirkbd_setkeycode; - ppc_md.kbd_getkeycode = rawirkbd_getkeycode; ppc_md.kbd_translate = rawirkbd_translate; ppc_md.kbd_unexpected_up = rawirkbd_unexpected_up; - ppc_md.kbd_leds = NULL; /*rawirkbd_leds;*/ - ppc_md.kbd_init_hw = rawirkbd_init_hw; } diff --git a/arch/ppc/Config.help b/arch/ppc/Config.help index f570362e43e4..68dc2325f09a 100644 --- a/arch/ppc/Config.help +++ b/arch/ppc/Config.help @@ -321,19 +321,6 @@ CONFIG_CD_NO_IDESCSI answer will get "defaulted" for you if you enable any of the Linux CD-ROM drivers). -CONFIG_INPUT_ADBHID - Say Y here if you want to have ADB (Apple Desktop Bus) HID devices - such as keyboards, mice, joysticks, or graphic tablets handled by - the input layer. If you say Y here, make sure to say Y to the - corresponding drivers "Keyboard support" (CONFIG_INPUT_KEYBDEV), - "Mouse Support" (CONFIG_INPUT_MOUSEDEV) and "Event interface - support" (CONFIG_INPUT_EVDEV) as well. - - If you say N here, you still have the option of using the old ADB - keyboard and mouse drivers. - - If unsure, say Y. - CONFIG_PREP_RESIDUAL Some PReP systems have residual data passed to the kernel by the firmware. This allows detection of memory size, devices present and @@ -382,14 +369,26 @@ CONFIG_ADB_MACIO also includes a MESH II SCSI controller, DBDMA controller, VIA chip, OpenPIC controller and two RS422/Geoports.) -CONFIG_ADB_KEYBOARD - This option allows you to use an ADB keyboard attached to your - machine. Note that this disables any other (ie. PS/2) keyboard - support, even if your machine is physically capable of using both at - the same time. +CONFIG_INPUT_ADBHID + Say Y here if you want to have ADB (Apple Desktop Bus) HID devices + such as keyboards, mice, joysticks, trackpads or graphic tablets + handled by the input layer. If you say Y here, make sure to say Y to + the corresponding drivers "Keyboard support" (CONFIG_INPUT_KEYBDEV), + "Mouse Support" (CONFIG_INPUT_MOUSEDEV) and "Event interface + support" (CONFIG_INPUT_EVDEV) as well. + + If unsure, say Y. + +CONFIG_MAC_EMUMOUSEBTN + This provides generic support for emulating the 2nd and 3rd mouse + button with keypresses. If you say Y here, the emulation is still + disabled by default. The emulation is controlled by these sysctl + entries: + /proc/sys/dev/mac_hid/mouse_button_emulation + /proc/sys/dev/mac_hid/mouse_button2_keycode + /proc/sys/dev/mac_hid/mouse_button3_keycode - If you use an ADB keyboard (4 pin connector), say Y here. - If you use a PS/2 keyboard (6 pin connector), say N here. + If you have an Apple machine with a 1-button mouse, say Y here. CONFIG_SERIAL_CONSOLE If you say Y here, it will be possible to use a serial port as the @@ -886,28 +885,6 @@ CONFIG_EST8260 End of life: - URL: -CONFIG_MAC_ADBKEYCODES - This provides support for sending ADB keycodes to console devices in - raw mode, rather than generic "Linux" keycodes. This is the default - up to 2.4.0, but in future this may be phased out in favor of - generic Linux keycodes. If you say Y here, you can dynamically - switch via the /proc/sys/dev/mac_hid/keyboard_sends_linux_keycodes - sysctl and with the "keyboard_sends_linux_keycodes=" kernel - argument. - - If unsure, say Y here. - -CONFIG_MAC_EMUMOUSEBTN - This provides generic support for emulating the 2nd and 3rd mouse - button with keypresses. If you say Y here, the emulation is still - disabled by default. The emulation is controlled by these sysctl - entries: - /proc/sys/dev/mac_hid/mouse_button_emulation - /proc/sys/dev/mac_hid/mouse_button2_keycode - /proc/sys/dev/mac_hid/mouse_button3_keycode - - If you have an Apple machine with a 1-button mouse, say Y here. - CONFIG_PPC_RTC If you say Y here and create a character special file /dev/rtc with major number 10 and minor number 135 using mknod ("man mknod"), you diff --git a/arch/ppc/config.in b/arch/ppc/config.in index dddff7e6c876..71c362b18343 100644 --- a/arch/ppc/config.in +++ b/arch/ppc/config.in @@ -536,12 +536,9 @@ if [ "$CONFIG_ALL_PPC" = "y" ]; then bool 'Apple Desktop Bus (ADB) support' CONFIG_ADB if [ "$CONFIG_ADB" = "y" ]; then bool ' Include MacIO (CHRP) ADB driver' CONFIG_ADB_MACIO - dep_bool ' Use input layer for ADB devices' CONFIG_INPUT_ADBHID $CONFIG_INPUT + dep_bool ' Support for ADB input devices (keyboard, mice, ...)' CONFIG_INPUT_ADBHID $CONFIG_INPUT if [ "$CONFIG_INPUT_ADBHID" = "y" ]; then - bool ' Support for ADB raw keycodes' CONFIG_MAC_ADBKEYCODES bool ' Support for mouse button 2+3 emulation' CONFIG_MAC_EMUMOUSEBTN - else - bool ' Support for ADB keyboard (old driver)' CONFIG_ADB_KEYBOARD fi fi # This is for drivers/macintosh/mac_hid.o, which is needed if the input diff --git a/arch/ppc/kernel/m8260_setup.c b/arch/ppc/kernel/m8260_setup.c index a05530474cfd..8a4fb7f61b43 100644 --- a/arch/ppc/kernel/m8260_setup.c +++ b/arch/ppc/kernel/m8260_setup.c @@ -266,14 +266,6 @@ platform_init(unsigned long r3, unsigned long r4, unsigned long r5, ppc_md.find_end_of_memory = m8260_find_end_of_memory; ppc_md.setup_io_mappings = m8260_map_io; - - ppc_md.kbd_setkeycode = NULL; - ppc_md.kbd_getkeycode = NULL; - ppc_md.kbd_translate = NULL; - ppc_md.kbd_unexpected_up = NULL; - ppc_md.kbd_leds = NULL; - ppc_md.kbd_init_hw = NULL; - ppc_md.ppc_kbd_sysrq_xlate = NULL; } /* Mainly for ksyms. diff --git a/arch/ppc/kernel/m8xx_setup.c b/arch/ppc/kernel/m8xx_setup.c index bb5baa630d4f..d523047de080 100644 --- a/arch/ppc/kernel/m8xx_setup.c +++ b/arch/ppc/kernel/m8xx_setup.c @@ -396,14 +396,6 @@ platform_init(unsigned long r3, unsigned long r4, unsigned long r5, ppc_md.find_end_of_memory = m8xx_find_end_of_memory; ppc_md.setup_io_mappings = m8xx_map_io; - ppc_md.kbd_setkeycode = NULL; - ppc_md.kbd_getkeycode = NULL; - ppc_md.kbd_translate = NULL; - ppc_md.kbd_unexpected_up = NULL; - ppc_md.kbd_leds = NULL; - ppc_md.kbd_init_hw = NULL; - ppc_md.ppc_kbd_sysrq_xlate = NULL; - #if defined(CONFIG_BLK_DEV_IDE) || defined(CONFIG_BLK_DEV_IDE_MODULE) m8xx_ide_init(); #endif diff --git a/arch/ppc/kernel/ppc4xx_setup.c b/arch/ppc/kernel/ppc4xx_setup.c index ad30ccaeff80..7bb7baf99781 100755 --- a/arch/ppc/kernel/ppc4xx_setup.c +++ b/arch/ppc/kernel/ppc4xx_setup.c @@ -59,15 +59,6 @@ extern void abort(void); extern void ppc4xx_find_bridges(void); -extern int pckbd_setkeycode(unsigned int scancode, unsigned int keycode); -extern int pckbd_getkeycode(unsigned int scancode); -extern int pckbd_pretranslate(unsigned char scancode, char raw_mode); -extern int pckbd_translate(unsigned char scancode, unsigned char *keycode, - char raw_mode); -extern char pckbd_unexpected_up(unsigned char keycode); -extern void pckbd_leds(unsigned char leds); -extern void pckbd_init_hw(void); - extern void ppc4xx_wdt_heartbeat(void); extern int wdt_enable; extern unsigned long wdt_period; @@ -357,13 +348,6 @@ platform_init(unsigned long r3, unsigned long r4, unsigned long r5, #if defined(CONFIG_VT) && defined(CONFIG_PC_KEYBOARD) #if defined(CONFIG_REDWOOD_4) && defined(CONFIG_STB_KB) redwood_irkb_init(); -#else - ppc_md.kbd_setkeycode = pckbd_setkeycode; - ppc_md.kbd_getkeycode = pckbd_getkeycode; - ppc_md.kbd_translate = pckbd_translate; - ppc_md.kbd_unexpected_up = pckbd_unexpected_up; - ppc_md.kbd_leds = pckbd_leds; - ppc_md.kbd_init_hw = pckbd_init_hw; #endif #endif diff --git a/arch/ppc/kernel/setup.c b/arch/ppc/kernel/setup.c index 8f86820e5deb..f510b23caa40 100644 --- a/arch/ppc/kernel/setup.c +++ b/arch/ppc/kernel/setup.c @@ -83,7 +83,7 @@ extern void chrp_init(unsigned long r3, unsigned long r4, #endif /* CONFIG_ALL_PPC */ #ifdef CONFIG_MAGIC_SYSRQ -unsigned long SYSRQ_KEY; +unsigned long SYSRQ_KEY = 0x54; #endif /* CONFIG_MAGIC_SYSRQ */ #ifdef CONFIG_VGA_CONSOLE diff --git a/arch/ppc/platforms/apus_setup.c b/arch/ppc/platforms/apus_setup.c index a7904e35fb4c..34b237292822 100644 --- a/arch/ppc/platforms/apus_setup.c +++ b/arch/ppc/platforms/apus_setup.c @@ -854,13 +854,6 @@ void platform_init(unsigned long r3, unsigned long r4, unsigned long r5, /* These should not be used for the APUS yet, since it uses the M68K keyboard now. */ - ppc_md.kbd_setkeycode = apus_kbd_setkeycode; - ppc_md.kbd_getkeycode = apus_kbd_getkeycode; ppc_md.kbd_translate = amiga_kbd_translate; ppc_md.kbd_unexpected_up = apus_kbd_unexpected_up; - ppc_md.kbd_init_hw = apus_kbd_init_hw; -#ifdef CONFIG_SYSRQ - ppc_md.ppc_kbd_sysrq_xlate = amiga_sysrq_xlate; - SYSRQ_KEY = 0xff; -#endif } diff --git a/arch/ppc/platforms/chrp_setup.c b/arch/ppc/platforms/chrp_setup.c index a531cfdbf254..37d92db09aa4 100644 --- a/arch/ppc/platforms/chrp_setup.c +++ b/arch/ppc/platforms/chrp_setup.c @@ -69,14 +69,6 @@ void rtas_indicator_progress(char *, unsigned short); void btext_progress(char *, unsigned short); extern unsigned long pmac_find_end_of_memory(void); -extern int pckbd_setkeycode(unsigned int scancode, unsigned int keycode); -extern int pckbd_getkeycode(unsigned int scancode); -extern int pckbd_translate(unsigned char scancode, unsigned char *keycode, - char raw_mode); -extern char pckbd_unexpected_up(unsigned char keycode); -extern void pckbd_leds(unsigned char leds); -extern void pckbd_init_hw(void); -extern unsigned char pckbd_sysrq_xlate[128]; extern void select_adb_keyboard(void); extern int of_show_percpuinfo(struct seq_file *, int); @@ -389,7 +381,7 @@ void __init chrp_init_IRQ(void) int i; unsigned long chrp_int_ack; unsigned char init_senses[NR_IRQS - NUM_8259_INTERRUPTS]; -#if defined(CONFIG_VT) && defined(CONFIG_ADB_KEYBOARD) && defined(XMON) +#if defined(CONFIG_VT) && defined(CONFIG_INPUT_ADBHID) && defined(XMON) struct device_node *kbd; #endif @@ -417,7 +409,7 @@ void __init chrp_init_IRQ(void) irq_desc[i].handler = &i8259_pic; i8259_init(chrp_int_ack); -#if defined(CONFIG_VT) && defined(CONFIG_ADB_KEYBOARD) && defined(XMON) +#if defined(CONFIG_VT) && defined(CONFIG_INPUT_ADBHID) && defined(XMON) /* see if there is a keyboard in the device tree with a parent of type "adb" */ for (kbd = find_devices("keyboard"); kbd; kbd = kbd->next) @@ -447,7 +439,7 @@ chrp_init2(void) if (ppc_md.progress) ppc_md.progress(" Have fun! ", 0x7777); -#if defined(CONFIG_VT) && (defined(CONFIG_ADB_KEYBOARD) || defined(CONFIG_INPUT)) +#if defined(CONFIG_VT) && defined(CONFIG_INPUT) /* see if there is a keyboard in the device tree with a parent of type "adb" */ { @@ -461,7 +453,7 @@ chrp_init2(void) } } } -#endif /* CONFIG_VT && (CONFIG_ADB_KEYBOARD || CONFIG_INPUT) */ +#endif /* CONFIG_VT && CONFIG_INPUT */ } void __init @@ -502,20 +494,6 @@ chrp_init(unsigned long r3, unsigned long r4, unsigned long r5, ppc_md.find_end_of_memory = pmac_find_end_of_memory; -#ifdef CONFIG_VT - /* these are adjusted in chrp_init2 if we have an ADB keyboard */ - ppc_md.kbd_setkeycode = pckbd_setkeycode; - ppc_md.kbd_getkeycode = pckbd_getkeycode; - ppc_md.kbd_translate = pckbd_translate; - ppc_md.kbd_unexpected_up = pckbd_unexpected_up; - ppc_md.kbd_leds = pckbd_leds; - ppc_md.kbd_init_hw = pckbd_init_hw; -#ifdef CONFIG_MAGIC_SYSRQ - ppc_md.ppc_kbd_sysrq_xlate = pckbd_sysrq_xlate; - SYSRQ_KEY = 0x54; -#endif /* CONFIG_MAGIC_SYSRQ */ -#endif /* CONFIG_VT */ - if (rtas_data) { struct device_node *rtas; unsigned int *p; diff --git a/arch/ppc/platforms/gemini_setup.c b/arch/ppc/platforms/gemini_setup.c index 621eec4934f8..206f613f8eec 100644 --- a/arch/ppc/platforms/gemini_setup.c +++ b/arch/ppc/platforms/gemini_setup.c @@ -576,14 +576,6 @@ void __init platform_init(unsigned long r3, unsigned long r4, unsigned long r5, ppc_md.find_end_of_memory = gemini_find_end_of_memory; ppc_md.setup_io_mappings = gemini_map_io; - /* no keyboard/mouse/video stuff yet.. */ - ppc_md.kbd_setkeycode = NULL; - ppc_md.kbd_getkeycode = NULL; - ppc_md.kbd_translate = NULL; - ppc_md.kbd_unexpected_up = NULL; - ppc_md.kbd_leds = NULL; - ppc_md.kbd_init_hw = NULL; - ppc_md.ppc_kbd_sysrq_xlate = NULL; ppc_md.pcibios_fixup_bus = gemini_pcibios_fixup; #ifdef CONFIG_SMP diff --git a/arch/ppc/platforms/iSeries_setup.c b/arch/ppc/platforms/iSeries_setup.c index 71e262ccaa7c..550abe7096b3 100644 --- a/arch/ppc/platforms/iSeries_setup.c +++ b/arch/ppc/platforms/iSeries_setup.c @@ -216,12 +216,6 @@ platform_init(unsigned long r3, unsigned long r4, unsigned long r5, ppc_md.progress = iSeries_progress; ppc_md.find_end_of_memory = iSeries_find_end_of_memory; - ppc_md.kbd_setkeycode = NULL; - ppc_md.kbd_getkeycode = NULL; - ppc_md.kbd_translate = NULL; - ppc_md.kbd_unexpected_up = NULL; - ppc_md.kbd_leds = NULL; - ppc_md.kbd_init_hw = NULL; #ifdef CONFIG_PCI ppc_md.pcibios_fixup_bus = iSeries_fixup_bus; ppc_md.pcibios_fixup = iSeries_fixup; @@ -230,10 +224,6 @@ platform_init(unsigned long r3, unsigned long r4, unsigned long r5, ppc_md.pcibios_fixup = NULL; #endif /* CONFIG_PCI */ -#if defined(CONFIG_MAGIC_SYSRQ) - ppc_md.ppc_kbd_sysrq_xlate = NULL; -#endif - #ifdef CONFIG_SMP ppc_md.smp_ops = &iSeries_smp_ops; #endif /* CONFIG_SMP */ diff --git a/arch/ppc/platforms/oak_setup.c b/arch/ppc/platforms/oak_setup.c index 4ad64b9b6432..10140a75b7c6 100644 --- a/arch/ppc/platforms/oak_setup.c +++ b/arch/ppc/platforms/oak_setup.c @@ -117,14 +117,6 @@ platform_init(unsigned long r3, unsigned long r4, unsigned long r5, ppc_md.set_rtc_time = oak_set_rtc_time; ppc_md.get_rtc_time = oak_get_rtc_time; ppc_md.calibrate_decr = oak_calibrate_decr; - - ppc_md.kbd_setkeycode = NULL; - ppc_md.kbd_getkeycode = NULL; - ppc_md.kbd_translate = NULL; - ppc_md.kbd_unexpected_up = NULL; - ppc_md.kbd_leds = NULL; - ppc_md.kbd_init_hw = NULL; - ppc_md.ppc_kbd_sysrq_xlate = NULL; } /* diff --git a/arch/ppc/platforms/pmac_setup.c b/arch/ppc/platforms/pmac_setup.c index 8a4e7c8cb7da..2cf084833407 100644 --- a/arch/ppc/platforms/pmac_setup.c +++ b/arch/ppc/platforms/pmac_setup.c @@ -88,26 +88,6 @@ extern void pmac_find_bridges(void); extern int pmac_ide_check_base(ide_ioreg_t base); extern ide_ioreg_t pmac_ide_get_base(int index); -extern int mackbd_setkeycode(unsigned int scancode, unsigned int keycode); -extern int mackbd_getkeycode(unsigned int scancode); -extern int mackbd_translate(unsigned char keycode, unsigned char *keycodep, - char raw_mode); -extern char mackbd_unexpected_up(unsigned char keycode); -extern void mackbd_leds(unsigned char leds); -extern void __init mackbd_init_hw(void); -extern int mac_hid_kbd_translate(unsigned char scancode, unsigned char *keycode, - char raw_mode); -extern char mac_hid_kbd_unexpected_up(unsigned char keycode); -extern void mac_hid_init_hw(void); -extern unsigned char mac_hid_kbd_sysrq_xlate[]; -extern unsigned char pckbd_sysrq_xlate[]; -extern unsigned char mackbd_sysrq_xlate[]; -extern int pckbd_setkeycode(unsigned int scancode, unsigned int keycode); -extern int pckbd_getkeycode(unsigned int scancode); -extern int pckbd_translate(unsigned char scancode, unsigned char *keycode, - char raw_mode); -extern char pckbd_unexpected_up(unsigned char keycode); -extern int keyboard_sends_linux_keycodes; extern void pmac_nvram_update(void); extern unsigned char pmac_nvram_read_byte(int addr); extern void pmac_nvram_write_byte(int addr, unsigned char val); @@ -641,37 +621,8 @@ void __init select_adb_keyboard(void) { #ifdef CONFIG_VT -#ifdef CONFIG_INPUT - ppc_md.kbd_init_hw = mac_hid_init_hw; ppc_md.kbd_translate = mac_hid_kbd_translate; ppc_md.kbd_unexpected_up = mac_hid_kbd_unexpected_up; - ppc_md.kbd_setkeycode = 0; - ppc_md.kbd_getkeycode = 0; - ppc_md.kbd_leds = 0; -#ifdef CONFIG_MAGIC_SYSRQ -#ifdef CONFIG_MAC_ADBKEYCODES - if (!keyboard_sends_linux_keycodes) { - ppc_md.ppc_kbd_sysrq_xlate = mac_hid_kbd_sysrq_xlate; - SYSRQ_KEY = 0x69; - } else -#endif /* CONFIG_MAC_ADBKEYCODES */ - { - ppc_md.ppc_kbd_sysrq_xlate = pckbd_sysrq_xlate; - SYSRQ_KEY = 0x54; - } -#endif /* CONFIG_MAGIC_SYSRQ */ -#elif defined(CONFIG_ADB_KEYBOARD) - ppc_md.kbd_setkeycode = mackbd_setkeycode; - ppc_md.kbd_getkeycode = mackbd_getkeycode; - ppc_md.kbd_translate = mackbd_translate; - ppc_md.kbd_unexpected_up = mackbd_unexpected_up; - ppc_md.kbd_leds = mackbd_leds; - ppc_md.kbd_init_hw = mackbd_init_hw; -#ifdef CONFIG_MAGIC_SYSRQ - ppc_md.ppc_kbd_sysrq_xlate = mackbd_sysrq_xlate; - SYSRQ_KEY = 0x69; -#endif /* CONFIG_MAGIC_SYSRQ */ -#endif /* CONFIG_INPUT_ADBHID/CONFIG_ADB_KEYBOARD */ #endif /* CONFIG_VT */ } diff --git a/arch/ppc/platforms/pplus_setup.c b/arch/ppc/platforms/pplus_setup.c index 3da7b0375a5e..74d2aac096bd 100644 --- a/arch/ppc/platforms/pplus_setup.c +++ b/arch/ppc/platforms/pplus_setup.c @@ -77,15 +77,6 @@ TODC_ALLOC(); -extern int pckbd_setkeycode(unsigned int scancode, unsigned int keycode); -extern int pckbd_getkeycode(unsigned int scancode); -extern int pckbd_translate(unsigned char scancode, unsigned char *keycode, - char raw_mode); -extern char pckbd_unexpected_up(unsigned char keycode); -extern void pckbd_leds(unsigned char leds); -extern void pckbd_init_hw(void); -extern unsigned char pckbd_sysrq_xlate[128]; - extern void pplus_setup_hose(void); extern void pplus_set_VIA_IDE_native(void); @@ -508,19 +499,6 @@ platform_init(unsigned long r3, unsigned long r4, unsigned long r5, ppc_ide_md.ide_init_hwif = pplus_ide_init_hwif_ports; #endif -#ifdef CONFIG_VT - ppc_md.kbd_setkeycode = pckbd_setkeycode; - ppc_md.kbd_getkeycode = pckbd_getkeycode; - ppc_md.kbd_translate = pckbd_translate; - ppc_md.kbd_unexpected_up = pckbd_unexpected_up; - ppc_md.kbd_leds = pckbd_leds; - ppc_md.kbd_init_hw = pckbd_init_hw; -#ifdef CONFIG_MAGIC_SYSRQ - ppc_md.ppc_kbd_sysrq_xlate = pckbd_sysrq_xlate; - SYSRQ_KEY = 0x54; -#endif -#endif - #ifdef CONFIG_SMP ppc_md.smp_ops = &pplus_smp_ops; #endif /* CONFIG_SMP */ diff --git a/arch/ppc/platforms/prep_setup.c b/arch/ppc/platforms/prep_setup.c index ce9b00fe4eff..96db1accd38d 100644 --- a/arch/ppc/platforms/prep_setup.c +++ b/arch/ppc/platforms/prep_setup.c @@ -79,15 +79,6 @@ extern void rs_nvram_write_val(int addr, unsigned char val); extern void ibm_prep_init(void); -extern int pckbd_setkeycode(unsigned int scancode, unsigned int keycode); -extern int pckbd_getkeycode(unsigned int scancode); -extern int pckbd_translate(unsigned char scancode, unsigned char *keycode, - char raw_mode); -extern char pckbd_unexpected_up(unsigned char keycode); -extern void pckbd_leds(unsigned char leds); -extern void pckbd_init_hw(void); -extern unsigned char pckbd_sysrq_xlate[]; - extern void prep_find_bridges(void); extern char saved_command_line[]; @@ -895,19 +886,6 @@ prep_init(unsigned long r3, unsigned long r4, unsigned long r5, ppc_ide_md.default_io_base = prep_ide_default_io_base; #endif -#ifdef CONFIG_VT - ppc_md.kbd_setkeycode = pckbd_setkeycode; - ppc_md.kbd_getkeycode = pckbd_getkeycode; - ppc_md.kbd_translate = pckbd_translate; - ppc_md.kbd_unexpected_up = pckbd_unexpected_up; - ppc_md.kbd_leds = pckbd_leds; - ppc_md.kbd_init_hw = pckbd_init_hw; -#ifdef CONFIG_MAGIC_SYSRQ - ppc_md.ppc_kbd_sysrq_xlate = pckbd_sysrq_xlate; - SYSRQ_KEY = 0x54; -#endif -#endif - #ifdef CONFIG_SMP ppc_md.smp_ops = &prep_smp_ops; #endif /* CONFIG_SMP */ diff --git a/arch/ppc/platforms/sandpoint_setup.c b/arch/ppc/platforms/sandpoint_setup.c index 64d7201f86f7..2aaa391069ec 100644 --- a/arch/ppc/platforms/sandpoint_setup.c +++ b/arch/ppc/platforms/sandpoint_setup.c @@ -97,15 +97,6 @@ extern u_int openpic_irq(void); extern void openpic_eoi(void); -extern int pckbd_setkeycode(unsigned int scancode, unsigned int keycode); -extern int pckbd_getkeycode(unsigned int scancode); -extern int pckbd_translate(unsigned char scancode, unsigned char *keycode, - char raw_mode); -extern char pckbd_unexpected_up(unsigned char keycode); -extern void pckbd_leds(unsigned char leds); -extern void pckbd_init_hw(void); -extern unsigned char pckbd_sysrq_xlate[128]; - static void sandpoint_halt(void); @@ -645,19 +636,6 @@ platform_init(unsigned long r3, unsigned long r4, unsigned long r5, ppc_md.progress = NULL; #endif /* CONFIG_SERIAL_TEXT_DEBUG */ -#ifdef CONFIG_VT - ppc_md.kbd_setkeycode = pckbd_setkeycode; - ppc_md.kbd_getkeycode = pckbd_getkeycode; - ppc_md.kbd_translate = pckbd_translate; - ppc_md.kbd_unexpected_up = pckbd_unexpected_up; - ppc_md.kbd_leds = pckbd_leds; - ppc_md.kbd_init_hw = pckbd_init_hw; -#ifdef CONFIG_MAGIC_SYSRQ - ppc_md.ppc_kbd_sysrq_xlate = pckbd_sysrq_xlate; - SYSRQ_KEY = 0x54; -#endif -#endif - #if defined(CONFIG_BLK_DEV_IDE) || defined(CONFIG_BLK_DEV_IDE_MODULE) ppc_ide_md.default_irq = sandpoint_ide_default_irq; ppc_ide_md.default_io_base = sandpoint_ide_default_io_base; diff --git a/arch/ppc/platforms/spruce_setup.c b/arch/ppc/platforms/spruce_setup.c index a4e6171365f1..693cc58c6ee6 100644 --- a/arch/ppc/platforms/spruce_setup.c +++ b/arch/ppc/platforms/spruce_setup.c @@ -64,13 +64,6 @@ extern void spruce_init_IRQ(void); extern int spruce_get_irq(struct pt_regs *); extern void spruce_setup_hose(void); -extern int pckbd_setkeycode(unsigned int, unsigned int); -extern int pckbd_getkeycode(unsigned int); -extern int pckbd_translate(unsigned char, unsigned char *, char); -extern char pckbd_unexpected_up(unsigned char); -extern void pckbd_leds(unsigned char); -extern void pckbd_init_hw(void); -extern unsigned char pckbd_sysrq_xlate[128]; extern char cmd_line[]; /* @@ -279,18 +272,4 @@ platform_init(unsigned long r3, unsigned long r4, unsigned long r5, ppc_md.nvram_read_val = todc_direct_read_val; ppc_md.nvram_write_val = todc_direct_write_val; - -#ifdef CONFIG_VT - /* Spruce has a PS2 style keyboard */ - ppc_md.kbd_setkeycode = pckbd_setkeycode; - ppc_md.kbd_getkeycode = pckbd_getkeycode; - ppc_md.kbd_translate = pckbd_translate; - ppc_md.kbd_unexpected_up = pckbd_unexpected_up; - ppc_md.kbd_leds = pckbd_leds; - ppc_md.kbd_init_hw = pckbd_init_hw; -#ifdef CONFIG_MAGIC_SYSRQ - ppc_md.kbd_sysrq_xlate = pckbd_sysrq_xlate; - SYSRQ_KEY = 0x54; -#endif -#endif } diff --git a/drivers/macintosh/adbhid.c b/drivers/macintosh/adbhid.c index cc400ade45f9..b5abd0cb73c8 100644 --- a/drivers/macintosh/adbhid.c +++ b/drivers/macintosh/adbhid.c @@ -77,6 +77,7 @@ struct adbhid { int mouse_kind; unsigned char *keycode; char name[64]; + char phys[32]; }; static struct adbhid *adbhid[16] = { 0 }; @@ -273,12 +274,37 @@ adbhid_buttons_input(unsigned char *data, int nb, struct pt_regs *regs, int auto switch (adbhid[id]->original_handler_id) { default: case 0x02: /* Adjustable keyboard button device */ - printk(KERN_INFO "Unhandled ADB_MISC event %02x, %02x, %02x, %02x\n", - data[0], data[1], data[2], data[3]); - break; + { + int down = (data[1] == (data[1] & 0xf)); + + switch (data[1] & 0x0f) { + case 0x0: /* microphone */ + input_report_key(&adbhid[id]->input, KEY_SOUND, down); + break; + + case 0x1: /* mute */ + input_report_key(&adbhid[id]->input, KEY_MUTE, down); + break; + + case 0x2: /* volume decrease */ + input_report_key(&adbhid[id]->input, KEY_VOLUMEDOWN, down); + break; + + case 0x3: /* volume increase */ + input_report_key(&adbhid[id]->input, KEY_VOLUMEUP, down); + break; + + default: + printk(KERN_INFO "Unhandled ADB_MISC event %02x, %02x, %02x, %02x\n", + data[0], data[1], data[2], data[3]); + break; + } + } + break; + case 0x1f: /* Powerbook button device */ { - int down = (data[1] == (data[1] & 0xf)); + int down = (data[1] == (data[1] & 0xf)); #ifdef CONFIG_PMAC_BACKLIGHT int backlight = get_backlight_level(); #endif @@ -298,11 +324,12 @@ adbhid_buttons_input(unsigned char *data, int nb, struct pt_regs *regs, int auto case 0x6: /* volume increase */ input_report_key(&adbhid[id]->input, KEY_VOLUMEUP, down); - break; + break; case 0xb: /* eject */ input_report_key(&adbhid[id]->input, KEY_EJECTCD, down); break; + case 0xa: /* brightness decrease */ #ifdef CONFIG_PMAC_BACKLIGHT if (!disable_kernel_backlight) { @@ -317,6 +344,7 @@ adbhid_buttons_input(unsigned char *data, int nb, struct pt_regs *regs, int auto #endif /* CONFIG_PMAC_BACKLIGHT */ input_report_key(&adbhid[id]->input, KEY_BRIGHTNESSDOWN, down); break; + case 0x9: /* brightness increase */ #ifdef CONFIG_PMAC_BACKLIGHT if (!disable_kernel_backlight) { @@ -442,6 +470,7 @@ adbhid_input_register(int id, int default_id, int original_handler_id, return; memset(adbhid[id], 0, sizeof(struct adbhid)); + sprintf(adbhid[id]->phys, "adb%d:%d.%02x/input", id, default_id, original_handler_id); adbhid[id]->id = default_id; adbhid[id]->original_handler_id = original_handler_id; @@ -449,6 +478,7 @@ adbhid_input_register(int id, int default_id, int original_handler_id, adbhid[id]->mouse_kind = mouse_kind; adbhid[id]->input.private = adbhid[id]; adbhid[id]->input.name = adbhid[id]->name; + adbhid[id]->input.phys = adbhid[id]->phys; adbhid[id]->input.idbus = BUS_ADB; adbhid[id]->input.idvendor = 0x0001; adbhid[id]->input.idproduct = (id << 12) | (default_id << 8) | original_handler_id; @@ -461,8 +491,7 @@ adbhid_input_register(int id, int default_id, int original_handler_id, return; } - sprintf(adbhid[id]->name, "ADB keyboard on ID %d:%d.%02x", - id, default_id, original_handler_id); + sprintf(adbhid[id]->name, "ADB keyboard"); memcpy(adbhid[id]->keycode, adb_to_linux_keycodes, sizeof(adb_to_linux_keycodes)); @@ -509,8 +538,7 @@ adbhid_input_register(int id, int default_id, int original_handler_id, break; case ADB_MOUSE: - sprintf(adbhid[id]->name, "ADB mouse on ID %d:%d.%02x", - id, default_id, original_handler_id); + sprintf(adbhid[id]->name, "ADB mouse"); adbhid[id]->input.evbit[0] = BIT(EV_KEY) | BIT(EV_REL); adbhid[id]->input.keybit[LONG(BTN_MOUSE)] = BIT(BTN_LEFT) | BIT(BTN_MIDDLE) | BIT(BTN_RIGHT); @@ -520,12 +548,15 @@ adbhid_input_register(int id, int default_id, int original_handler_id, case ADB_MISC: switch (original_handler_id) { case 0x02: /* Adjustable keyboard button device */ - sprintf(adbhid[id]->name, "ADB adjustable keyboard buttons on ID %d:%d.%02x", - id, default_id, original_handler_id); + sprintf(adbhid[id]->name, "ADB adjustable keyboard buttons"); + adbhid[id]->input.evbit[0] = BIT(EV_KEY) | BIT(EV_REP); + set_bit(KEY_SOUND, adbhid[id]->input.keybit); + set_bit(KEY_MUTE, adbhid[id]->input.keybit); + set_bit(KEY_VOLUMEUP, adbhid[id]->input.keybit); + set_bit(KEY_VOLUMEDOWN, adbhid[id]->input.keybit); break; case 0x1f: /* Powerbook button device */ - sprintf(adbhid[id]->name, "ADB Powerbook buttons on ID %d:%d.%02x", - id, default_id, original_handler_id); + sprintf(adbhid[id]->name, "ADB Powerbook buttons"); adbhid[id]->input.evbit[0] = BIT(EV_KEY) | BIT(EV_REP); set_bit(KEY_MUTE, adbhid[id]->input.keybit); set_bit(KEY_VOLUMEUP, adbhid[id]->input.keybit); @@ -549,8 +580,8 @@ adbhid_input_register(int id, int default_id, int original_handler_id, input_register_device(&adbhid[id]->input); - printk(KERN_INFO "input%d: ADB HID on ID %d:%d.%02x\n", - adbhid[id]->input.number, id, default_id, original_handler_id); + printk(KERN_INFO "input: %s on %s\n", + adbhid[id]->name, adbhid[id]->phys); if (default_id == ADB_KEYBOARD) { /* HACK WARNING!! This should go away as soon there is an utility @@ -580,11 +611,11 @@ adbhid_input_reregister(int id, int default_id, int org_handler_id, ((id << 12)|(default_id << 8)|org_handler_id)) { adbhid_input_unregister(id); adbhid_input_register(id, default_id, org_handler_id, - cur_handler_id, mk); + cur_handler_id, mk); } } else adbhid_input_register(id, default_id, org_handler_id, - cur_handler_id, mk); + cur_handler_id, mk); return 1< #include -#ifdef CONFIG_MAC_ADBKEYCODES -#include -#include -#include -#endif - -#ifdef CONFIG_MAC_ADBKEYCODES -/* Simple translation table for the SysRq keys */ - -#ifdef CONFIG_MAGIC_SYSRQ -unsigned char mac_hid_kbd_sysrq_xlate[128] = - "asdfhgzxcv\000bqwer" /* 0x00 - 0x0f */ - "yt123465=97-80o]" /* 0x10 - 0x1f */ - "u[ip\rlj'k;\\,/nm." /* 0x20 - 0x2f */ - "\t `\177\000\033\000\000\000\000\000\000\000\000\000\000" - /* 0x30 - 0x3f */ - "\000\000\000*\000+\000\000\000\000\000/\r\000-\000" - /* 0x40 - 0x4f */ - "\000\0000123456789\000\000\000" /* 0x50 - 0x5f */ - "\205\206\207\203\210\211\000\213\000\215\000\000\000\000\000\212\000\214"; - /* 0x60 - 0x6f */ -extern unsigned char pckbd_sysrq_xlate[128]; -#endif - -static u_short macplain_map[NR_KEYS] = { - 0xfb61, 0xfb73, 0xfb64, 0xfb66, 0xfb68, 0xfb67, 0xfb7a, 0xfb78, - 0xfb63, 0xfb76, 0xf200, 0xfb62, 0xfb71, 0xfb77, 0xfb65, 0xfb72, - 0xfb79, 0xfb74, 0xf031, 0xf032, 0xf033, 0xf034, 0xf036, 0xf035, - 0xf03d, 0xf039, 0xf037, 0xf02d, 0xf038, 0xf030, 0xf05d, 0xfb6f, - 0xfb75, 0xf05b, 0xfb69, 0xfb70, 0xf201, 0xfb6c, 0xfb6a, 0xf027, - 0xfb6b, 0xf03b, 0xf05c, 0xf02c, 0xf02f, 0xfb6e, 0xfb6d, 0xf02e, - 0xf009, 0xf020, 0xf060, 0xf07f, 0xf200, 0xf01b, 0xf702, 0xf703, - 0xf700, 0xf207, 0xf701, 0xf601, 0xf602, 0xf600, 0xf603, 0xf200, - 0xf200, 0xf310, 0xf200, 0xf30c, 0xf200, 0xf30a, 0xf200, 0xf208, - 0xf200, 0xf200, 0xf200, 0xf30d, 0xf30e, 0xf200, 0xf30b, 0xf200, - 0xf200, 0xf200, 0xf300, 0xf301, 0xf302, 0xf303, 0xf304, 0xf305, - 0xf306, 0xf307, 0xf200, 0xf308, 0xf309, 0xf200, 0xf200, 0xf200, - 0xf104, 0xf105, 0xf106, 0xf102, 0xf107, 0xf108, 0xf200, 0xf10a, - 0xf200, 0xf10c, 0xf200, 0xf209, 0xf200, 0xf109, 0xf200, 0xf10b, - 0xf200, 0xf11d, 0xf115, 0xf114, 0xf118, 0xf116, 0xf103, 0xf117, - 0xf101, 0xf119, 0xf100, 0xf700, 0xf701, 0xf702, 0xf200, 0xf200, -}; - -static u_short macshift_map[NR_KEYS] = { - 0xfb41, 0xfb53, 0xfb44, 0xfb46, 0xfb48, 0xfb47, 0xfb5a, 0xfb58, - 0xfb43, 0xfb56, 0xf200, 0xfb42, 0xfb51, 0xfb57, 0xfb45, 0xfb52, - 0xfb59, 0xfb54, 0xf021, 0xf040, 0xf023, 0xf024, 0xf05e, 0xf025, - 0xf02b, 0xf028, 0xf026, 0xf05f, 0xf02a, 0xf029, 0xf07d, 0xfb4f, - 0xfb55, 0xf07b, 0xfb49, 0xfb50, 0xf201, 0xfb4c, 0xfb4a, 0xf022, - 0xfb4b, 0xf03a, 0xf07c, 0xf03c, 0xf03f, 0xfb4e, 0xfb4d, 0xf03e, - 0xf009, 0xf020, 0xf07e, 0xf07f, 0xf200, 0xf01b, 0xf702, 0xf703, - 0xf700, 0xf207, 0xf701, 0xf601, 0xf602, 0xf600, 0xf603, 0xf200, - 0xf200, 0xf310, 0xf200, 0xf30c, 0xf200, 0xf30a, 0xf200, 0xf208, - 0xf200, 0xf200, 0xf200, 0xf30d, 0xf30e, 0xf200, 0xf30b, 0xf200, - 0xf200, 0xf200, 0xf300, 0xf301, 0xf302, 0xf303, 0xf304, 0xf305, - 0xf306, 0xf307, 0xf200, 0xf308, 0xf309, 0xf200, 0xf200, 0xf200, - 0xf10e, 0xf10f, 0xf110, 0xf10c, 0xf111, 0xf112, 0xf200, 0xf10a, - 0xf200, 0xf10c, 0xf200, 0xf203, 0xf200, 0xf113, 0xf200, 0xf10b, - 0xf200, 0xf11d, 0xf115, 0xf114, 0xf20b, 0xf116, 0xf10d, 0xf117, - 0xf10b, 0xf20a, 0xf10a, 0xf700, 0xf701, 0xf702, 0xf200, 0xf200, -}; - -static u_short macaltgr_map[NR_KEYS] = { - 0xf914, 0xfb73, 0xf917, 0xf919, 0xfb68, 0xfb67, 0xfb7a, 0xfb78, - 0xf916, 0xfb76, 0xf200, 0xf915, 0xfb71, 0xfb77, 0xf918, 0xfb72, - 0xfb79, 0xfb74, 0xf200, 0xf040, 0xf200, 0xf024, 0xf200, 0xf200, - 0xf200, 0xf05d, 0xf07b, 0xf05c, 0xf05b, 0xf07d, 0xf07e, 0xfb6f, - 0xfb75, 0xf200, 0xfb69, 0xfb70, 0xf201, 0xfb6c, 0xfb6a, 0xf200, - 0xfb6b, 0xf200, 0xf200, 0xf200, 0xf200, 0xfb6e, 0xfb6d, 0xf200, - 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf702, 0xf703, - 0xf700, 0xf207, 0xf701, 0xf601, 0xf602, 0xf600, 0xf603, 0xf200, - 0xf200, 0xf310, 0xf200, 0xf30c, 0xf200, 0xf30a, 0xf200, 0xf208, - 0xf200, 0xf200, 0xf200, 0xf30d, 0xf30e, 0xf200, 0xf30b, 0xf200, - 0xf200, 0xf200, 0xf90a, 0xf90b, 0xf90c, 0xf90d, 0xf90e, 0xf90f, - 0xf910, 0xf911, 0xf200, 0xf912, 0xf913, 0xf200, 0xf200, 0xf200, - 0xf510, 0xf511, 0xf512, 0xf50e, 0xf513, 0xf514, 0xf200, 0xf516, - 0xf200, 0xf10c, 0xf200, 0xf202, 0xf200, 0xf515, 0xf200, 0xf517, - 0xf200, 0xf11d, 0xf115, 0xf114, 0xf118, 0xf116, 0xf50f, 0xf117, - 0xf50d, 0xf119, 0xf50c, 0xf700, 0xf701, 0xf702, 0xf200, 0xf200, -}; - -static u_short macctrl_map[NR_KEYS] = { - 0xf001, 0xf013, 0xf004, 0xf006, 0xf008, 0xf007, 0xf01a, 0xf018, - 0xf003, 0xf016, 0xf200, 0xf002, 0xf011, 0xf017, 0xf005, 0xf012, - 0xf019, 0xf014, 0xf200, 0xf000, 0xf01b, 0xf01c, 0xf01e, 0xf01d, - 0xf200, 0xf200, 0xf01f, 0xf01f, 0xf07f, 0xf200, 0xf01d, 0xf00f, - 0xf015, 0xf01b, 0xf009, 0xf010, 0xf201, 0xf00c, 0xf00a, 0xf007, - 0xf00b, 0xf200, 0xf01c, 0xf200, 0xf07f, 0xf00e, 0xf00d, 0xf20e, - 0xf200, 0xf000, 0xf000, 0xf008, 0xf200, 0xf200, 0xf702, 0xf703, - 0xf700, 0xf207, 0xf701, 0xf601, 0xf602, 0xf600, 0xf603, 0xf200, - 0xf200, 0xf310, 0xf200, 0xf30c, 0xf200, 0xf30a, 0xf200, 0xf208, - 0xf200, 0xf200, 0xf200, 0xf30d, 0xf30e, 0xf200, 0xf30b, 0xf200, - 0xf200, 0xf200, 0xf300, 0xf301, 0xf302, 0xf303, 0xf304, 0xf305, - 0xf306, 0xf307, 0xf200, 0xf308, 0xf309, 0xf200, 0xf200, 0xf200, - 0xf104, 0xf105, 0xf106, 0xf102, 0xf107, 0xf108, 0xf200, 0xf10a, - 0xf200, 0xf10c, 0xf200, 0xf204, 0xf200, 0xf109, 0xf200, 0xf10b, - 0xf200, 0xf11d, 0xf115, 0xf114, 0xf118, 0xf116, 0xf103, 0xf117, - 0xf101, 0xf119, 0xf100, 0xf700, 0xf701, 0xf702, 0xf200, 0xf200, -}; - -static u_short macshift_ctrl_map[NR_KEYS] = { - 0xf001, 0xf013, 0xf004, 0xf006, 0xf008, 0xf007, 0xf01a, 0xf018, - 0xf003, 0xf016, 0xf200, 0xf002, 0xf011, 0xf017, 0xf005, 0xf012, - 0xf019, 0xf014, 0xf200, 0xf000, 0xf200, 0xf200, 0xf200, 0xf200, - 0xf200, 0xf200, 0xf200, 0xf01f, 0xf200, 0xf200, 0xf200, 0xf00f, - 0xf015, 0xf200, 0xf009, 0xf010, 0xf201, 0xf00c, 0xf00a, 0xf200, - 0xf00b, 0xf200, 0xf200, 0xf200, 0xf200, 0xf00e, 0xf00d, 0xf200, - 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf702, 0xf703, - 0xf700, 0xf207, 0xf701, 0xf601, 0xf602, 0xf600, 0xf603, 0xf200, - 0xf200, 0xf310, 0xf200, 0xf30c, 0xf200, 0xf30a, 0xf200, 0xf208, - 0xf200, 0xf200, 0xf200, 0xf30d, 0xf30e, 0xf200, 0xf30b, 0xf200, - 0xf200, 0xf200, 0xf300, 0xf301, 0xf302, 0xf303, 0xf304, 0xf305, - 0xf306, 0xf307, 0xf200, 0xf308, 0xf309, 0xf200, 0xf200, 0xf200, - 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, - 0xf200, 0xf10c, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, - 0xf200, 0xf11d, 0xf115, 0xf114, 0xf118, 0xf116, 0xf200, 0xf117, - 0xf200, 0xf119, 0xf200, 0xf700, 0xf701, 0xf702, 0xf200, 0xf20c, -}; - -static u_short macalt_map[NR_KEYS] = { - 0xf861, 0xf873, 0xf864, 0xf866, 0xf868, 0xf867, 0xf87a, 0xf878, - 0xf863, 0xf876, 0xf200, 0xf862, 0xf871, 0xf877, 0xf865, 0xf872, - 0xf879, 0xf874, 0xf831, 0xf832, 0xf833, 0xf834, 0xf836, 0xf835, - 0xf83d, 0xf839, 0xf837, 0xf82d, 0xf838, 0xf830, 0xf85d, 0xf86f, - 0xf875, 0xf85b, 0xf869, 0xf870, 0xf80d, 0xf86c, 0xf86a, 0xf827, - 0xf86b, 0xf83b, 0xf85c, 0xf82c, 0xf82f, 0xf86e, 0xf86d, 0xf82e, - 0xf809, 0xf820, 0xf860, 0xf87f, 0xf200, 0xf81b, 0xf702, 0xf703, - 0xf700, 0xf207, 0xf701, 0xf210, 0xf211, 0xf600, 0xf603, 0xf200, - 0xf200, 0xf310, 0xf200, 0xf30c, 0xf200, 0xf30a, 0xf200, 0xf208, - 0xf200, 0xf200, 0xf200, 0xf30d, 0xf30e, 0xf200, 0xf30b, 0xf200, - 0xf200, 0xf200, 0xf900, 0xf901, 0xf902, 0xf903, 0xf904, 0xf905, - 0xf906, 0xf907, 0xf200, 0xf908, 0xf909, 0xf200, 0xf200, 0xf200, - 0xf504, 0xf505, 0xf506, 0xf502, 0xf507, 0xf508, 0xf200, 0xf50a, - 0xf200, 0xf10c, 0xf200, 0xf209, 0xf200, 0xf509, 0xf200, 0xf50b, - 0xf200, 0xf11d, 0xf115, 0xf114, 0xf118, 0xf116, 0xf503, 0xf117, - 0xf501, 0xf119, 0xf500, 0xf700, 0xf701, 0xf702, 0xf200, 0xf200, -}; - -static u_short macctrl_alt_map[NR_KEYS] = { - 0xf801, 0xf813, 0xf804, 0xf806, 0xf808, 0xf807, 0xf81a, 0xf818, - 0xf803, 0xf816, 0xf200, 0xf802, 0xf811, 0xf817, 0xf805, 0xf812, - 0xf819, 0xf814, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, - 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf80f, - 0xf815, 0xf200, 0xf809, 0xf810, 0xf201, 0xf80c, 0xf80a, 0xf200, - 0xf80b, 0xf200, 0xf200, 0xf200, 0xf200, 0xf80e, 0xf80d, 0xf200, - 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf702, 0xf703, - 0xf700, 0xf207, 0xf701, 0xf601, 0xf602, 0xf600, 0xf603, 0xf200, - 0xf200, 0xf310, 0xf200, 0xf30c, 0xf200, 0xf30a, 0xf200, 0xf208, - 0xf200, 0xf200, 0xf200, 0xf30d, 0xf30e, 0xf200, 0xf30b, 0xf200, - 0xf200, 0xf200, 0xf300, 0xf301, 0xf302, 0xf303, 0xf304, 0xf305, - 0xf306, 0xf307, 0xf200, 0xf308, 0xf309, 0xf200, 0xf200, 0xf200, - 0xf504, 0xf505, 0xf506, 0xf502, 0xf507, 0xf508, 0xf200, 0xf50a, - 0xf200, 0xf10c, 0xf200, 0xf200, 0xf200, 0xf509, 0xf200, 0xf50b, - 0xf200, 0xf11d, 0xf115, 0xf114, 0xf118, 0xf116, 0xf503, 0xf117, - 0xf501, 0xf119, 0xf500, 0xf700, 0xf701, 0xf702, 0xf200, 0xf200, -}; - -static unsigned short *mac_key_maps_save[MAX_NR_KEYMAPS] = { - macplain_map, macshift_map, macaltgr_map, 0, - macctrl_map, macshift_ctrl_map, 0, 0, - macalt_map, 0, 0, 0, - macctrl_alt_map, 0 -}; - -static unsigned short *pc_key_maps_save[MAX_NR_KEYMAPS]; - -int mac_hid_kbd_translate(unsigned char keycode, unsigned char *keycodep, - char raw_mode); -static int mac_hid_sysctl_keycodes(ctl_table *ctl, int write, struct file * filp, - void *buffer, size_t *lenp); -char mac_hid_kbd_unexpected_up(unsigned char keycode); - -static int keyboard_lock_keycodes = 0; -int keyboard_sends_linux_keycodes = 0; -#else -int keyboard_sends_linux_keycodes = 1; -#endif - static unsigned char e0_keys[128] = { 0, 0, 0, KEY_KPCOMMA, 0, KEY_INTL3, 0, 0, /* 0x00-0x07 */ @@ -225,25 +45,10 @@ static int mouse_button3_keycode = KEY_RIGHTALT; /* right option key */ static int mouse_last_keycode = 0; #endif -extern void pckbd_init_hw(void); - -#if defined CONFIG_SYSCTL && (defined(CONFIG_MAC_ADBKEYCODES) || defined(CONFIG_MAC_EMUMOUSEBTN)) +#if defined(CONFIG_SYSCTL) && defined(CONFIG_MAC_EMUMOUSEBTN) /* file(s) in /proc/sys/dev/mac_hid */ ctl_table mac_hid_files[] = { -#ifdef CONFIG_MAC_ADBKEYCODES - { - DEV_MAC_HID_KEYBOARD_SENDS_LINUX_KEYCODES, - "keyboard_sends_linux_keycodes", &keyboard_sends_linux_keycodes, sizeof(int), - 0644, NULL, &mac_hid_sysctl_keycodes - }, - { - DEV_MAC_HID_KEYBOARD_LOCK_KEYCODES, - "keyboard_lock_keycodes", &keyboard_lock_keycodes, sizeof(int), - 0644, NULL, &proc_dointvec - }, -#endif -#ifdef CONFIG_MAC_EMUMOUSEBTN { DEV_MAC_HID_MOUSE_BUTTON_EMULATION, "mouse_button_emulation", &mouse_emulate_buttons, sizeof(int), @@ -259,7 +64,6 @@ ctl_table mac_hid_files[] = "mouse_button3_keycode", &mouse_button3_keycode, sizeof(int), 0644, NULL, &proc_dointvec }, -#endif { 0 } }; @@ -279,148 +83,72 @@ ctl_table mac_hid_root_dir[] = static struct ctl_table_header *mac_hid_sysctl_header; -#ifdef CONFIG_MAC_ADBKEYCODES -static -int mac_hid_sysctl_keycodes(ctl_table *ctl, int write, struct file * filp, - void *buffer, size_t *lenp) -{ - int val = keyboard_sends_linux_keycodes; - int ret = 0; - - if (!write - || (write && !keyboard_lock_keycodes)) - ret = proc_dointvec(ctl, write, filp, buffer, lenp); - - if (write - && keyboard_sends_linux_keycodes != val) { - if (!keyboard_sends_linux_keycodes) { -#ifdef CONFIG_MAGIC_SYSRQ - ppc_md.ppc_kbd_sysrq_xlate = mac_hid_kbd_sysrq_xlate; - SYSRQ_KEY = 0x69; -#endif - memcpy(pc_key_maps_save, key_maps, sizeof(key_maps)); - memcpy(key_maps, mac_key_maps_save, sizeof(key_maps)); - } else { -#ifdef CONFIG_MAGIC_SYSRQ - ppc_md.ppc_kbd_sysrq_xlate = pckbd_sysrq_xlate; - SYSRQ_KEY = 0x54; -#endif - memcpy(mac_key_maps_save, key_maps, sizeof(key_maps)); - memcpy(key_maps, pc_key_maps_save, sizeof(key_maps)); - } - } - - return ret; -} -#endif #endif /* endif CONFIG_SYSCTL */ int mac_hid_kbd_translate(unsigned char scancode, unsigned char *keycode, char raw_mode) { -#ifdef CONFIG_MAC_ADBKEYCODES - if (!keyboard_sends_linux_keycodes) { - if (!raw_mode) { - /* - * Convert R-shift/control/option to L version. - */ - switch (scancode) { - case 0x7b: scancode = 0x38; break; /* R-shift */ - case 0x7c: scancode = 0x3a; break; /* R-option */ - case 0x7d: scancode = 0x36; break; /* R-control */ - } - } - *keycode = scancode; - return 1; - } else -#endif - { - /* This code was copied from char/pc_keyb.c and will be - * superflous when the input layer is fully integrated. - * We don't need the high_keys handling, so this part - * has been removed. - */ - static int prev_scancode = 0; - - /* special prefix scancodes.. */ - if (scancode == 0xe0 || scancode == 0xe1) { - prev_scancode = scancode; - return 0; - } + /* This code was copied from char/pc_keyb.c and will be + * superflous when the input layer is fully integrated. + * We don't need the high_keys handling, so this part + * has been removed. + */ + static int prev_scancode = 0; + + /* special prefix scancodes.. */ + if (scancode == 0xe0 || scancode == 0xe1) { + prev_scancode = scancode; + return 0; + } - scancode &= 0x7f; + scancode &= 0x7f; - if (prev_scancode) { - if (prev_scancode != 0xe0) { - if (prev_scancode == 0xe1 && scancode == 0x1d) { - prev_scancode = 0x100; - return 0; - } else if (prev_scancode == 0x100 && scancode == 0x45) { - *keycode = KEY_PAUSE; - prev_scancode = 0; - } else { - if (!raw_mode) - printk(KERN_INFO "keyboard: unknown e1 escape sequence\n"); - prev_scancode = 0; - return 0; - } - } else { + if (prev_scancode) { + if (prev_scancode != 0xe0) { + if (prev_scancode == 0xe1 && scancode == 0x1d) { + prev_scancode = 0x100; + return 0; + } else if (prev_scancode == 0x100 && scancode == 0x45) { + *keycode = KEY_PAUSE; prev_scancode = 0; - if (scancode == 0x2a || scancode == 0x36) - return 0; - } - if (e0_keys[scancode]) - *keycode = e0_keys[scancode]; - else { + } else { if (!raw_mode) - printk(KERN_INFO "keyboard: unknown scancode e0 %02x\n", - scancode); + printk(KERN_INFO "keyboard: unknown e1 escape sequence\n"); + prev_scancode = 0; return 0; } } else { - switch (scancode) { - case 91: scancode = KEY_LINEFEED; break; - case 92: scancode = KEY_KPEQUAL; break; - case 125: scancode = KEY_INTL1; break; - } - *keycode = scancode; + prev_scancode = 0; + if (scancode == 0x2a || scancode == 0x36) + return 0; } - return 1; + if (e0_keys[scancode]) + *keycode = e0_keys[scancode]; + else { + if (!raw_mode) + printk(KERN_INFO "keyboard: unknown scancode e0 %02x\n", + scancode); + return 0; + } + } else { + switch (scancode) { + case 91: scancode = KEY_LINEFEED; break; + case 92: scancode = KEY_KPEQUAL; break; + case 125: scancode = KEY_INTL1; break; + } + *keycode = scancode; } + return 1; } char mac_hid_kbd_unexpected_up(unsigned char keycode) { - if (keyboard_sends_linux_keycodes && keycode == KEY_F13) + if (keycode == KEY_F13) return 0; else return 0x80; } -#ifdef CONFIG_MAC_ADBKEYCODES -int mac_hid_keyboard_sends_linux_keycodes(void) -{ - return keyboard_sends_linux_keycodes; -} - -EXPORT_SYMBOL(mac_hid_keyboard_sends_linux_keycodes); - -static int __init mac_hid_setup(char *str) -{ - int ints[2]; - - str = get_options(str, ARRAY_SIZE(ints), ints); - if (ints[0] == 1) { - keyboard_sends_linux_keycodes = ints[1] != 0; - keyboard_lock_keycodes = 1; - } - return 1; -} - -__setup("keyboard_sends_linux_keycodes=", mac_hid_setup); - -#endif - #ifdef CONFIG_MAC_EMUMOUSEBTN int mac_hid_mouse_emulate_buttons(int caller, unsigned int keycode, int down) { @@ -439,15 +167,6 @@ int mac_hid_mouse_emulate_buttons(int caller, unsigned int keycode, int down) mouse_last_keycode = down ? keycode : 0; } break; - case 2: - /* Called from mousedev.c */ - if (mouse_emulate_buttons == 2 && keycode == 0) { - if (mouse_last_keycode == mouse_button2_keycode) - return 1; /* map to middle button */ - if (mouse_last_keycode == mouse_button3_keycode) - return 2; /* map to right button */ - } - return keycode; /* keep button */ } return 0; } @@ -469,40 +188,22 @@ static void emumousebtn_input_register(void) input_register_device(&emumousebtn); - printk(KERN_INFO "input%d: Macintosh mouse button emulation\n", emumousebtn.number); + printk(KERN_INFO "input: Macintosh mouse button emulation\n"); } #endif -void __init mac_hid_init_hw(void) +int __init mac_hid_init(void) { -#ifdef CONFIG_MAC_ADBKEYCODES - memcpy(pc_key_maps_save, key_maps, sizeof(key_maps)); - - if (!keyboard_sends_linux_keycodes) { -#ifdef CONFIG_MAGIC_SYSRQ - ppc_md.ppc_kbd_sysrq_xlate = mac_hid_kbd_sysrq_xlate; - SYSRQ_KEY = 0x69; -#endif - memcpy(key_maps, mac_key_maps_save, sizeof(key_maps)); - } else { -#ifdef CONFIG_MAGIC_SYSRQ - ppc_md.ppc_kbd_sysrq_xlate = pckbd_sysrq_xlate; - SYSRQ_KEY = 0x54; -#endif - } -#endif /* CONFIG_MAC_ADBKEYCODES */ - #ifdef CONFIG_MAC_EMUMOUSEBTN emumousebtn_input_register(); #endif -#if CONFIG_PPC - if (_machine != _MACH_Pmac) - pckbd_init_hw(); -#endif - -#if defined(CONFIG_SYSCTL) && (defined(CONFIG_MAC_ADBKEYCODES) || defined(CONFIG_MAC_EMUMOUSEBTN)) +#if defined(CONFIG_SYSCTL) && defined(CONFIG_MAC_EMUMOUSEBTN) mac_hid_sysctl_header = register_sysctl_table(mac_hid_root_dir, 1); #endif /* CONFIG_SYSCTL */ + + return 0; } + +device_initcall(mac_hid_init); diff --git a/include/asm-ppc/keyboard.h b/include/asm-ppc/keyboard.h index 4d6b0aab4ddb..bda2d671d563 100644 --- a/include/asm-ppc/keyboard.h +++ b/include/asm-ppc/keyboard.h @@ -36,20 +36,22 @@ #define DISABLE_KBD_DURING_INTERRUPTS 0 #define INIT_KBD +extern int mac_hid_kbd_translate(unsigned char scancode, unsigned char *keycode, + char raw_mode); +extern char mac_hid_kbd_unexpected_up(unsigned char keycode); +extern int pckbd_translate(unsigned char scancode, unsigned char *keycode, + char raw_mode); +extern char pckbd_unexpected_up(unsigned char keycode); +extern unsigned char pckbd_sysrq_xlate[128]; + static inline int kbd_setkeycode(unsigned int scancode, unsigned int keycode) { - if ( ppc_md.kbd_setkeycode ) - return ppc_md.kbd_setkeycode(scancode, keycode); - else - return 0; + return 0; } static inline int kbd_getkeycode(unsigned int scancode) { - if ( ppc_md.kbd_getkeycode ) - return ppc_md.kbd_getkeycode(scancode); - else - return 0; + return 0; } static inline int kbd_translate(unsigned char keycode, unsigned char *keycodep, @@ -58,7 +60,7 @@ static inline int kbd_translate(unsigned char keycode, unsigned char *keycodep, if ( ppc_md.kbd_translate ) return ppc_md.kbd_translate(keycode, keycodep, raw_mode); else - return 0; + return pckbd_translate(keycode, keycodep, raw_mode); } static inline int kbd_unexpected_up(unsigned char keycode) @@ -66,22 +68,18 @@ static inline int kbd_unexpected_up(unsigned char keycode) if ( ppc_md.kbd_unexpected_up ) return ppc_md.kbd_unexpected_up(keycode); else - return 0; + return pckbd_unexpected_up(keycode); } static inline void kbd_leds(unsigned char leds) { - if ( ppc_md.kbd_leds ) - ppc_md.kbd_leds(leds); } static inline void kbd_init_hw(void) { - if ( ppc_md.kbd_init_hw ) - ppc_md.kbd_init_hw(); } -#define kbd_sysrq_xlate (ppc_md.ppc_kbd_sysrq_xlate) +#define kbd_sysrq_xlate pckbd_sysrq_xlate extern unsigned long SYSRQ_KEY; diff --git a/include/asm-ppc/machdep.h b/include/asm-ppc/machdep.h index 6dd6a1ee526f..f5218fdb73c2 100644 --- a/include/asm-ppc/machdep.h +++ b/include/asm-ppc/machdep.h @@ -57,16 +57,10 @@ struct machdep_calls { void (*nvram_write_val)(int addr, unsigned char val); /* Tons of keyboard stuff. */ - int (*kbd_setkeycode)(unsigned int scancode, - unsigned int keycode); - int (*kbd_getkeycode)(unsigned int scancode); int (*kbd_translate)(unsigned char scancode, unsigned char *keycode, char raw_mode); char (*kbd_unexpected_up)(unsigned char keycode); - void (*kbd_leds)(unsigned char leds); - void (*kbd_init_hw)(void); - unsigned char *ppc_kbd_sysrq_xlate; /* * optional PCI "hooks"