|
@@ -275,3 +275,123 @@ static struct omap_dss_board_info cm_t35_dss_data = {
|
|
|
|
|
|
static struct omap2_mcspi_device_config tdo24m_mcspi_config = {
|
|
|
.turbo_mode = 0,
|
|
|
+};
|
|
|
+
|
|
|
+static struct tdo24m_platform_data tdo24m_config = {
|
|
|
+ .model = TDO35S,
|
|
|
+};
|
|
|
+
|
|
|
+static struct spi_board_info cm_t35_lcd_spi_board_info[] __initdata = {
|
|
|
+ {
|
|
|
+ .modalias = "tdo24m",
|
|
|
+ .bus_num = 4,
|
|
|
+ .chip_select = 0,
|
|
|
+ .max_speed_hz = 1000000,
|
|
|
+ .controller_data = &tdo24m_mcspi_config,
|
|
|
+ .platform_data = &tdo24m_config,
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
+static struct gpio cm_t35_dss_gpios[] __initdata = {
|
|
|
+ { CM_T35_LCD_EN_GPIO, GPIOF_OUT_INIT_LOW, "lcd enable" },
|
|
|
+ { CM_T35_LCD_BL_GPIO, GPIOF_OUT_INIT_LOW, "lcd bl enable" },
|
|
|
+};
|
|
|
+
|
|
|
+static void __init cm_t35_init_display(void)
|
|
|
+{
|
|
|
+ int err;
|
|
|
+
|
|
|
+ spi_register_board_info(cm_t35_lcd_spi_board_info,
|
|
|
+ ARRAY_SIZE(cm_t35_lcd_spi_board_info));
|
|
|
+
|
|
|
+ err = gpio_request_array(cm_t35_dss_gpios,
|
|
|
+ ARRAY_SIZE(cm_t35_dss_gpios));
|
|
|
+ if (err) {
|
|
|
+ pr_err("CM-T35: failed to request DSS control GPIOs\n");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ gpio_export(CM_T35_LCD_EN_GPIO, 0);
|
|
|
+ gpio_export(CM_T35_LCD_BL_GPIO, 0);
|
|
|
+
|
|
|
+ msleep(50);
|
|
|
+ gpio_set_value(CM_T35_LCD_EN_GPIO, 1);
|
|
|
+
|
|
|
+ err = omap_display_init(&cm_t35_dss_data);
|
|
|
+ if (err) {
|
|
|
+ pr_err("CM-T35: failed to register DSS device\n");
|
|
|
+ gpio_free_array(cm_t35_dss_gpios, ARRAY_SIZE(cm_t35_dss_gpios));
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+static struct regulator_consumer_supply cm_t35_vmmc1_supply[] = {
|
|
|
+ REGULATOR_SUPPLY("vmmc", "omap_hsmmc.0"),
|
|
|
+};
|
|
|
+
|
|
|
+static struct regulator_consumer_supply cm_t35_vsim_supply[] = {
|
|
|
+ REGULATOR_SUPPLY("vmmc_aux", "omap_hsmmc.0"),
|
|
|
+};
|
|
|
+
|
|
|
+static struct regulator_consumer_supply cm_t35_vio_supplies[] = {
|
|
|
+ REGULATOR_SUPPLY("vcc", "spi1.0"),
|
|
|
+ REGULATOR_SUPPLY("vdds_dsi", "omapdss"),
|
|
|
+ REGULATOR_SUPPLY("vdds_dsi", "omapdss_dsi1"),
|
|
|
+};
|
|
|
+
|
|
|
+/* VMMC1 for MMC1 pins CMD, CLK, DAT0..DAT3 (20 mA, plus card == max 220 mA) */
|
|
|
+static struct regulator_init_data cm_t35_vmmc1 = {
|
|
|
+ .constraints = {
|
|
|
+ .min_uV = 1850000,
|
|
|
+ .max_uV = 3150000,
|
|
|
+ .valid_modes_mask = REGULATOR_MODE_NORMAL
|
|
|
+ | REGULATOR_MODE_STANDBY,
|
|
|
+ .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE
|
|
|
+ | REGULATOR_CHANGE_MODE
|
|
|
+ | REGULATOR_CHANGE_STATUS,
|
|
|
+ },
|
|
|
+ .num_consumer_supplies = ARRAY_SIZE(cm_t35_vmmc1_supply),
|
|
|
+ .consumer_supplies = cm_t35_vmmc1_supply,
|
|
|
+};
|
|
|
+
|
|
|
+/* VSIM for MMC1 pins DAT4..DAT7 (2 mA, plus card == max 50 mA) */
|
|
|
+static struct regulator_init_data cm_t35_vsim = {
|
|
|
+ .constraints = {
|
|
|
+ .min_uV = 1800000,
|
|
|
+ .max_uV = 3000000,
|
|
|
+ .valid_modes_mask = REGULATOR_MODE_NORMAL
|
|
|
+ | REGULATOR_MODE_STANDBY,
|
|
|
+ .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE
|
|
|
+ | REGULATOR_CHANGE_MODE
|
|
|
+ | REGULATOR_CHANGE_STATUS,
|
|
|
+ },
|
|
|
+ .num_consumer_supplies = ARRAY_SIZE(cm_t35_vsim_supply),
|
|
|
+ .consumer_supplies = cm_t35_vsim_supply,
|
|
|
+};
|
|
|
+
|
|
|
+static struct regulator_init_data cm_t35_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,
|
|
|
+ },
|
|
|
+ .num_consumer_supplies = ARRAY_SIZE(cm_t35_vio_supplies),
|
|
|
+ .consumer_supplies = cm_t35_vio_supplies,
|
|
|
+};
|
|
|
+
|
|
|
+static uint32_t cm_t35_keymap[] = {
|
|
|
+ KEY(0, 0, KEY_A), KEY(0, 1, KEY_B), KEY(0, 2, KEY_LEFT),
|
|
|
+ KEY(1, 0, KEY_UP), KEY(1, 1, KEY_ENTER), KEY(1, 2, KEY_DOWN),
|
|
|
+ KEY(2, 0, KEY_RIGHT), KEY(2, 1, KEY_C), KEY(2, 2, KEY_D),
|
|
|
+};
|
|
|
+
|
|
|
+static struct matrix_keymap_data cm_t35_keymap_data = {
|
|
|
+ .keymap = cm_t35_keymap,
|
|
|
+ .keymap_size = ARRAY_SIZE(cm_t35_keymap),
|
|
|
+};
|
|
|
+
|
|
|
+static struct twl4030_keypad_data cm_t35_kp_data = {
|
|
|
+ .keymap_data = &cm_t35_keymap_data,
|
|
|
+ .rows = 3,
|