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

[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
Loading
Loading
Loading
Loading
+40 −0
Original line number Original line Diff line number Diff line
@@ -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,
			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])
+5 −0
Original line number Original line Diff line number Diff line
@@ -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