.debounce_ms    = 40,                   /* in millisecs */
 };
 
+/*
+ * STMPE1601
+ */
+static struct stmpe_keypad_platform_data stmpe1601_keypad_data = {
+       .debounce_ms    = 64,
+       .scan_count     = 8,
+       .no_autorepeat  = true,
+       .keymap_data    = &mop500_keymap_data,
+};
+
+static struct stmpe_platform_data stmpe1601_data = {
+       .id             = 1,
+       .blocks         = STMPE_BLOCK_KEYPAD,
+       .irq_trigger    = IRQF_TRIGGER_FALLING,
+       .irq_base       = MOP500_STMPE1601_IRQ(0),
+       .keypad         = &stmpe1601_keypad_data,
+       .autosleep      = true,
+       .autosleep_timeout = 1024,
+};
+
+static struct i2c_board_info __initdata mop500_i2c0_devices_stuib[] = {
+       {
+               I2C_BOARD_INFO("stmpe1601", 0x40),
+               .irq = NOMADIK_GPIO_TO_IRQ(218),
+               .platform_data = &stmpe1601_data,
+               .flags = I2C_CLIENT_WAKE,
+       },
+};
+
 void mop500_keypad_init(void)
 {
        db8500_add_ske_keypad(&ske_keypad_board);
+
+       i2c_register_board_info(0, mop500_i2c0_devices_stuib,
+                       ARRAY_SIZE(mop500_i2c0_devices_stuib));
 }
 
 #define MOP500_AB8500_IRQ_END          (MOP500_AB8500_IRQ_BASE \
                                         + AB8500_NR_IRQS)
 
+/* TC35892 */
 #define TC35892_NR_INTERNAL_IRQS       8
 #define TC35892_INT_GPIO(x)            (TC35892_NR_INTERNAL_IRQS + (x))
 #define TC35892_NR_GPIOS               24
 #define MOP500_EGPIO_IRQ_BASE          MOP500_AB8500_IRQ_END
 #define MOP500_EGPIO_IRQ_END           (MOP500_EGPIO_IRQ_BASE \
                                         + MOP500_EGPIO_NR_IRQS)
+/* STMPE1601 irqs */
+#define STMPE_NR_INTERNAL_IRQS          9
+#define STMPE_INT_GPIO(x)               (STMPE_NR_INTERNAL_IRQS + (x))
+#define STMPE_NR_GPIOS                  24
+#define STMPE_NR_IRQS                   STMPE_INT_GPIO(STMPE_NR_GPIOS)
 
-#define MOP500_IRQ_END                 MOP500_EGPIO_IRQ_END
+#define MOP500_STMPE1601_IRQBASE        MOP500_EGPIO_IRQ_END
+#define MOP500_STMPE1601_IRQ(x)         (MOP500_STMPE1601_IRQBASE + (x))
+
+#define MOP500_NR_IRQS          MOP500_STMPE1601_IRQ(STMPE_NR_INTERNAL_IRQS)
+
+#define MOP500_IRQ_END          MOP500_NR_IRQS
 
 #if MOP500_IRQ_END > IRQ_BOARD_END
 #undef IRQ_BOARD_END