|
@@ -436,3 +436,119 @@ static struct regulator_init_data pandora_vaux4 = {
|
|
|
|
|
|
/* VSIM for audio DAC */
|
|
|
static struct regulator_init_data pandora_vsim = {
|
|
|
+ .constraints = {
|
|
|
+ .min_uV = 2800000,
|
|
|
+ .max_uV = 2800000,
|
|
|
+ .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(pandora_adac_supply),
|
|
|
+ .consumer_supplies = pandora_adac_supply,
|
|
|
+};
|
|
|
+
|
|
|
+/* Fixed regulator internal to Wifi module */
|
|
|
+static struct regulator_init_data pandora_vmmc3 = {
|
|
|
+ .constraints = {
|
|
|
+ .valid_ops_mask = REGULATOR_CHANGE_STATUS,
|
|
|
+ },
|
|
|
+ .num_consumer_supplies = ARRAY_SIZE(pandora_vmmc3_supply),
|
|
|
+ .consumer_supplies = pandora_vmmc3_supply,
|
|
|
+};
|
|
|
+
|
|
|
+static struct fixed_voltage_config pandora_vwlan = {
|
|
|
+ .supply_name = "vwlan",
|
|
|
+ .microvolts = 1800000, /* 1.8V */
|
|
|
+ .gpio = PANDORA_WIFI_NRESET_GPIO,
|
|
|
+ .startup_delay = 50000, /* 50ms */
|
|
|
+ .enable_high = 1,
|
|
|
+ .enabled_at_boot = 0,
|
|
|
+ .init_data = &pandora_vmmc3,
|
|
|
+};
|
|
|
+
|
|
|
+static struct platform_device pandora_vwlan_device = {
|
|
|
+ .name = "reg-fixed-voltage",
|
|
|
+ .id = 1,
|
|
|
+ .dev = {
|
|
|
+ .platform_data = &pandora_vwlan,
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
+static struct twl4030_bci_platform_data pandora_bci_data;
|
|
|
+
|
|
|
+static struct twl4030_power_data pandora_power_data = {
|
|
|
+ .use_poweroff = true,
|
|
|
+};
|
|
|
+
|
|
|
+static struct twl4030_platform_data omap3pandora_twldata = {
|
|
|
+ .gpio = &omap3pandora_gpio_data,
|
|
|
+ .vmmc1 = &pandora_vmmc1,
|
|
|
+ .vmmc2 = &pandora_vmmc2,
|
|
|
+ .vaux1 = &pandora_vaux1,
|
|
|
+ .vaux2 = &pandora_vaux2,
|
|
|
+ .vaux4 = &pandora_vaux4,
|
|
|
+ .vsim = &pandora_vsim,
|
|
|
+ .keypad = &pandora_kp_data,
|
|
|
+ .bci = &pandora_bci_data,
|
|
|
+ .power = &pandora_power_data,
|
|
|
+};
|
|
|
+
|
|
|
+static struct i2c_board_info __initdata omap3pandora_i2c3_boardinfo[] = {
|
|
|
+ {
|
|
|
+ I2C_BOARD_INFO("bq27500", 0x55),
|
|
|
+ .flags = I2C_CLIENT_WAKE,
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
+static int __init omap3pandora_i2c_init(void)
|
|
|
+{
|
|
|
+ omap3_pmic_get_config(&omap3pandora_twldata,
|
|
|
+ TWL_COMMON_PDATA_USB | TWL_COMMON_PDATA_AUDIO,
|
|
|
+ TWL_COMMON_REGULATOR_VDAC | TWL_COMMON_REGULATOR_VPLL2);
|
|
|
+
|
|
|
+ omap3pandora_twldata.vdac->constraints.apply_uV = true;
|
|
|
+
|
|
|
+ omap3pandora_twldata.vpll2->constraints.apply_uV = true;
|
|
|
+ omap3pandora_twldata.vpll2->num_consumer_supplies =
|
|
|
+ ARRAY_SIZE(pandora_vdds_supplies);
|
|
|
+ omap3pandora_twldata.vpll2->consumer_supplies = pandora_vdds_supplies;
|
|
|
+
|
|
|
+ omap3_pmic_init("tps65950", &omap3pandora_twldata);
|
|
|
+ /* i2c2 pins are not connected */
|
|
|
+ omap_register_i2c_bus(3, 100, omap3pandora_i2c3_boardinfo,
|
|
|
+ ARRAY_SIZE(omap3pandora_i2c3_boardinfo));
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+static struct spi_board_info omap3pandora_spi_board_info[] __initdata = {
|
|
|
+ {
|
|
|
+ .modalias = "tpo_td043mtea1_panel_spi",
|
|
|
+ .bus_num = 1,
|
|
|
+ .chip_select = 1,
|
|
|
+ .max_speed_hz = 375000,
|
|
|
+ .platform_data = &pandora_lcd_device,
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+static void __init pandora_wl1251_init(void)
|
|
|
+{
|
|
|
+ struct wl12xx_platform_data pandora_wl1251_pdata;
|
|
|
+ int ret;
|
|
|
+
|
|
|
+ memset(&pandora_wl1251_pdata, 0, sizeof(pandora_wl1251_pdata));
|
|
|
+
|
|
|
+ ret = gpio_request_one(PANDORA_WIFI_IRQ_GPIO, GPIOF_IN, "wl1251 irq");
|
|
|
+ if (ret < 0)
|
|
|
+ goto fail;
|
|
|
+
|
|
|
+ pandora_wl1251_pdata.irq = gpio_to_irq(PANDORA_WIFI_IRQ_GPIO);
|
|
|
+ if (pandora_wl1251_pdata.irq < 0)
|
|
|
+ goto fail_irq;
|
|
|
+
|
|
|
+ pandora_wl1251_pdata.use_eeprom = true;
|
|
|
+ ret = wl12xx_set_platform_data(&pandora_wl1251_pdata);
|
|
|
+ if (ret < 0)
|
|
|
+ goto fail_irq;
|
|
|
+
|