|
@@ -366,3 +366,84 @@ static int omap3evm_twl_gpio_setup(struct device *dev,
|
|
r = gpio_request_one(gpio + TWL4030_GPIO_MAX, lcd_bl_en, "EN_LCD_BKL");
|
|
r = gpio_request_one(gpio + TWL4030_GPIO_MAX, lcd_bl_en, "EN_LCD_BKL");
|
|
if (r)
|
|
if (r)
|
|
printk(KERN_ERR "failed to get/set lcd_bkl gpio\n");
|
|
printk(KERN_ERR "failed to get/set lcd_bkl gpio\n");
|
|
|
|
+
|
|
|
|
+ /* gpio + 7 == DVI Enable */
|
|
|
|
+ gpio_request_one(gpio + 7, GPIOF_OUT_INIT_LOW, "EN_DVI");
|
|
|
|
+
|
|
|
|
+ /* TWL4030_GPIO_MAX + 1 == ledB (out, active low LED) */
|
|
|
|
+ gpio_leds[0].gpio = gpio + TWL4030_GPIO_MAX + 1;
|
|
|
|
+
|
|
|
|
+ platform_device_register(&leds_gpio);
|
|
|
|
+
|
|
|
|
+ /* Enable VBUS switch by setting TWL4030.GPIO2DIR as output
|
|
|
|
+ * for starting USB tranceiver
|
|
|
|
+ */
|
|
|
|
+#ifdef CONFIG_TWL4030_CORE
|
|
|
|
+ if (get_omap3_evm_rev() >= OMAP3EVM_BOARD_GEN_2) {
|
|
|
|
+ u8 val;
|
|
|
|
+
|
|
|
|
+ twl_i2c_read_u8(TWL4030_MODULE_GPIO, &val, REG_GPIODATADIR1);
|
|
|
|
+ val |= 0x04; /* TWL4030.GPIO2DIR BIT at GPIODATADIR1(0x9B) */
|
|
|
|
+ twl_i2c_write_u8(TWL4030_MODULE_GPIO, val, REG_GPIODATADIR1);
|
|
|
|
+ }
|
|
|
|
+#endif
|
|
|
|
+
|
|
|
|
+ return 0;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+static struct twl4030_gpio_platform_data omap3evm_gpio_data = {
|
|
|
|
+ .use_leds = true,
|
|
|
|
+ .setup = omap3evm_twl_gpio_setup,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static uint32_t board_keymap[] = {
|
|
|
|
+ KEY(0, 0, KEY_LEFT),
|
|
|
|
+ KEY(0, 1, KEY_DOWN),
|
|
|
|
+ KEY(0, 2, KEY_ENTER),
|
|
|
|
+ KEY(0, 3, KEY_M),
|
|
|
|
+
|
|
|
|
+ KEY(1, 0, KEY_RIGHT),
|
|
|
|
+ KEY(1, 1, KEY_UP),
|
|
|
|
+ KEY(1, 2, KEY_I),
|
|
|
|
+ KEY(1, 3, KEY_N),
|
|
|
|
+
|
|
|
|
+ KEY(2, 0, KEY_A),
|
|
|
|
+ KEY(2, 1, KEY_E),
|
|
|
|
+ KEY(2, 2, KEY_J),
|
|
|
|
+ KEY(2, 3, KEY_O),
|
|
|
|
+
|
|
|
|
+ KEY(3, 0, KEY_B),
|
|
|
|
+ KEY(3, 1, KEY_F),
|
|
|
|
+ KEY(3, 2, KEY_K),
|
|
|
|
+ KEY(3, 3, KEY_P)
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct matrix_keymap_data board_map_data = {
|
|
|
|
+ .keymap = board_keymap,
|
|
|
|
+ .keymap_size = ARRAY_SIZE(board_keymap),
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct twl4030_keypad_data omap3evm_kp_data = {
|
|
|
|
+ .keymap_data = &board_map_data,
|
|
|
|
+ .rows = 4,
|
|
|
|
+ .cols = 4,
|
|
|
|
+ .rep = 1,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+/* ads7846 on SPI */
|
|
|
|
+static struct regulator_consumer_supply omap3evm_vio_supply[] = {
|
|
|
|
+ REGULATOR_SUPPLY("vcc", "spi1.0"),
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+/* VIO for ads7846 */
|
|
|
|
+static struct regulator_init_data omap3evm_vio = {
|
|
|
|
+ .constraints = {
|
|
|
|
+ .min_uV = 1800000,
|
|
|
|
+ .max_uV = 1800000,
|
|
|
|
+ .apply_uV = true,
|
|
|
|
+ .valid_modes_mask = REGULATOR_MODE_NORMAL
|
|
|
|
+ | REGULATOR_MODE_STANDBY,
|
|
|
|
+ .valid_ops_mask = REGULATOR_CHANGE_MODE
|
|
|
|
+ | REGULATOR_CHANGE_STATUS,
|
|
|
|
+ },
|
|
|
|
+ .num_consumer_supplies = ARRAY_SIZE(omap3evm_vio_supply),
|