Input: HID - add mapping for Powerbook USB keyboard

Map custom HID events (such as the ones generated by some Logitech and
Apple Powerbooks USB keyboards) to the FN keycode.

Signed-off-by: Stelian Pop <stelian@popies.net>
Signed-off-by: Vojtech Pavlik <vojtech@suse.cz>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
diff --git a/drivers/usb/input/hid-input.c b/drivers/usb/input/hid-input.c
index 14acfc5..0b64522 100644
--- a/drivers/usb/input/hid-input.c
+++ b/drivers/usb/input/hid-input.c
@@ -318,10 +318,18 @@
 			break;
 
 		case HID_UP_MSVENDOR:
-		case HID_UP_LOGIVENDOR:
 			goto ignore;
 
-		case HID_UP_LOGIVENDOR2: /* Reported on Logitech Ultra X Media Remote */
+		case HID_UP_CUSTOM: /* Reported on Logitech and Powerbook USB keyboards */
+
+			set_bit(EV_REP, input->evbit);
+			switch(usage->hid & HID_USAGE) {
+				case 0x003: map_key_clear(KEY_FN);		break;
+				default:    goto ignore;
+			}
+			break;
+
+		case HID_UP_LOGIVENDOR: /* Reported on Logitech Ultra X Media Remote */
 
 			set_bit(EV_REP, input->evbit);
 			switch(usage->hid & HID_USAGE) {
diff --git a/drivers/usb/input/hid.h b/drivers/usb/input/hid.h
index 47f75a4..ec2412c 100644
--- a/drivers/usb/input/hid.h
+++ b/drivers/usb/input/hid.h
@@ -183,8 +183,8 @@
 #define HID_UP_PID		0x000f0000
 #define HID_UP_HPVENDOR         0xff7f0000
 #define HID_UP_MSVENDOR		0xff000000
-#define HID_UP_LOGIVENDOR	0x00ff0000
-#define HID_UP_LOGIVENDOR2	0xffbc0000
+#define HID_UP_CUSTOM		0x00ff0000
+#define HID_UP_LOGIVENDOR	0xffbc0000
 
 #define HID_USAGE		0x0000ffff