Commit 146a4b3b authored by Andreas Jaggi's avatar Andreas Jaggi Committed by Linus Torvalds

[PATCH] macintosh/adbhid.c: adb buttons support for aluminium PowerBook G4

This patch adds support for the special adb buttons of the aluminium
PowerBook G4.
Signed-off-by: default avatarAndreas Jaggi <andreas.jaggi@waterwave.ch>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Paul Mackerras <paulus@samba.org>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 616299af
...@@ -555,6 +555,42 @@ adbhid_buttons_input(unsigned char *data, int nb, struct pt_regs *regs, int auto ...@@ -555,6 +555,42 @@ adbhid_buttons_input(unsigned char *data, int nb, struct pt_regs *regs, int auto
#endif /* CONFIG_PMAC_BACKLIGHT */ #endif /* CONFIG_PMAC_BACKLIGHT */
input_report_key(&adbhid[id]->input, KEY_BRIGHTNESSUP, down); input_report_key(&adbhid[id]->input, KEY_BRIGHTNESSUP, down);
break; break;
case 0xc: /* videomode switch */
input_report_key(&adbhid[id]->input, KEY_SWITCHVIDEOMODE, down);
break;
case 0xd: /* keyboard illumination toggle */
input_report_key(&adbhid[id]->input, KEY_KBDILLUMTOGGLE, down);
break;
case 0xe: /* keyboard illumination decrease */
input_report_key(&adbhid[id]->input, KEY_KBDILLUMDOWN, down);
break;
case 0xf:
switch (data[1]) {
case 0x8f:
case 0x0f:
/* keyboard illumination increase */
input_report_key(&adbhid[id]->input, KEY_KBDILLUMUP, down);
break;
case 0x7f:
case 0xff:
/* keypad overlay toogle */
break;
default:
printk(KERN_INFO "Unhandled ADB_MISC event %02x, %02x, %02x, %02x\n",
data[0], data[1], data[2], data[3]);
break;
}
break;
default:
printk(KERN_INFO "Unhandled ADB_MISC event %02x, %02x, %02x, %02x\n",
data[0], data[1], data[2], data[3]);
break;
} }
} }
break; break;
...@@ -775,6 +811,10 @@ adbhid_input_register(int id, int default_id, int original_handler_id, ...@@ -775,6 +811,10 @@ adbhid_input_register(int id, int default_id, int original_handler_id,
set_bit(KEY_BRIGHTNESSUP, adbhid[id]->input.keybit); set_bit(KEY_BRIGHTNESSUP, adbhid[id]->input.keybit);
set_bit(KEY_BRIGHTNESSDOWN, adbhid[id]->input.keybit); set_bit(KEY_BRIGHTNESSDOWN, adbhid[id]->input.keybit);
set_bit(KEY_EJECTCD, adbhid[id]->input.keybit); set_bit(KEY_EJECTCD, adbhid[id]->input.keybit);
set_bit(KEY_SWITCHVIDEOMODE, adbhid[id]->input.keybit);
set_bit(KEY_KBDILLUMTOGGLE, adbhid[id]->input.keybit);
set_bit(KEY_KBDILLUMDOWN, adbhid[id]->input.keybit);
set_bit(KEY_KBDILLUMUP, adbhid[id]->input.keybit);
break; break;
} }
if (adbhid[id]->name[0]) if (adbhid[id]->name[0])
......
...@@ -328,6 +328,11 @@ struct input_absinfo { ...@@ -328,6 +328,11 @@ struct input_absinfo {
#define KEY_BRIGHTNESSUP 225 #define KEY_BRIGHTNESSUP 225
#define KEY_MEDIA 226 #define KEY_MEDIA 226
#define KEY_SWITCHVIDEOMODE 227
#define KEY_KBDILLUMTOGGLE 228
#define KEY_KBDILLUMDOWN 229
#define KEY_KBDILLUMUP 230
#define KEY_UNKNOWN 240 #define KEY_UNKNOWN 240
#define BTN_MISC 0x100 #define BTN_MISC 0x100
......
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