@@ -33,6 +33,9 @@
#include <linux/slab.h>
#include <linux/mfd/locomo.h>
+/* There is one minor difference between mappings on poodle and collie */
+#include <asm/mach-types.h>
+
#define KEY_ACTIVITY KEY_F16
#define KEY_CONTACT KEY_F18
#define KEY_CENTER KEY_F15
@@ -45,7 +48,7 @@
static const unsigned char
locomokbd_keycode[LOCOMOKBD_NUMKEYS] = {
0, KEY_ESC, KEY_ACTIVITY, 0, 0, 0, 0, 0, 0, 0, /* 0 - 9 */
- 0, 0, 0, 0, 0, 0, 0, KEY_MENU, KEY_HOME, KEY_CONTACT, /* 10 - 19 */
+ 0, 0, 0, 0, 0, 0, 0, KEY_MENU, 0, KEY_CONTACT, /* 10 - 19 */
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 20 - 29 */
0, 0, 0, KEY_CENTER, 0, KEY_MAIL, 0, 0, 0, 0, /* 30 - 39 */
0, 0, 0, 0, 0, 0, 0, 0, 0, KEY_RIGHT, /* 40 - 49 */
@@ -278,6 +281,11 @@ static int locomokbd_probe(struct platform_device *dev)
locomokbd_keycode,
sizeof(locomokbd->keycode));
+ if (machine_is_collie())
+ locomokbd->keycode[18] = KEY_HOME;
+ else
+ locomokbd->keycode[3] = KEY_HOME;
+
for (i = 0; i < LOCOMOKBD_NUMKEYS; i++)
input_set_capability(input_dev, EV_KEY, locomokbd->keycode[i]);
input_set_capability(input_dev, EV_PWR, KEY_SUSPEND);