]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - arch/arm/mach-mx25/mach-mx25_3ds.c
Merge branch 'imx/for-2.6.36' of git://git.pengutronix.de/git/ukl/linux-2.6 into...
[net-next-2.6.git] / arch / arm / mach-mx25 / mach-mx25_3ds.c
index 978ad00b807c39ceafed212fb582ea41afd84402..62bc21f11a714aa46df5e439d4965f340d59460a 100644 (file)
@@ -30,6 +30,7 @@
 #include <linux/gpio.h>
 #include <linux/fec.h>
 #include <linux/platform_device.h>
+#include <linux/input/matrix_keypad.h>
 
 #include <mach/hardware.h>
 #include <asm/mach-types.h>
@@ -86,6 +87,16 @@ static struct pad_desc mx25pdk_pads[] = {
        MX25_PAD_LSCLK__LSCLK,
        MX25_PAD_OE_ACD__OE_ACD,
        MX25_PAD_CONTRAST__CONTRAST,
+
+       /* Keypad */
+       MX25_PAD_KPP_ROW0__KPP_ROW0,
+       MX25_PAD_KPP_ROW1__KPP_ROW1,
+       MX25_PAD_KPP_ROW2__KPP_ROW2,
+       MX25_PAD_KPP_ROW3__KPP_ROW3,
+       MX25_PAD_KPP_COL0__KPP_COL0,
+       MX25_PAD_KPP_COL1__KPP_COL1,
+       MX25_PAD_KPP_COL2__KPP_COL2,
+       MX25_PAD_KPP_COL3__KPP_COL3,
 };
 
 static struct fec_platform_data mx25_fec_pdata = {
@@ -144,6 +155,30 @@ static struct imx_fb_platform_data mx25pdk_fb_pdata = {
        .dmacr          = 0x00020010,
 };
 
+static const uint32_t mx25pdk_keymap[] = {
+       KEY(0, 0, KEY_UP),
+       KEY(0, 1, KEY_DOWN),
+       KEY(0, 2, KEY_VOLUMEDOWN),
+       KEY(0, 3, KEY_HOME),
+       KEY(1, 0, KEY_RIGHT),
+       KEY(1, 1, KEY_LEFT),
+       KEY(1, 2, KEY_ENTER),
+       KEY(1, 3, KEY_VOLUMEUP),
+       KEY(2, 0, KEY_F6),
+       KEY(2, 1, KEY_F8),
+       KEY(2, 2, KEY_F9),
+       KEY(2, 3, KEY_F10),
+       KEY(3, 0, KEY_F1),
+       KEY(3, 1, KEY_F2),
+       KEY(3, 2, KEY_F3),
+       KEY(3, 3, KEY_POWER),
+};
+
+static struct matrix_keymap_data mx25pdk_keymap_data = {
+       .keymap         = mx25pdk_keymap,
+       .keymap_size    = ARRAY_SIZE(mx25pdk_keymap),
+};
+
 static void __init mx25pdk_init(void)
 {
        mxc_iomux_v3_setup_multiple_pads(mx25pdk_pads,
@@ -154,9 +189,11 @@ static void __init mx25pdk_init(void)
        imx25_add_mxc_nand(&mx25pdk_nand_board_info);
        mxc_register_device(&mx25_rtc_device, NULL);
        mxc_register_device(&mx25_fb_device, &mx25pdk_fb_pdata);
+       mxc_register_device(&mxc_wdt, NULL);
 
        mx25pdk_fec_reset();
        mxc_register_device(&mx25_fec_device, &mx25_fec_pdata);
+       mxc_register_device(&mx25_kpp_device, &mx25pdk_keymap_data);
 }
 
 static void __init mx25pdk_timer_init(void)