|
@@ -508,3 +508,96 @@ static struct regulator_init_data sdp4430_vusim = {
|
|
.max_uV = 2900000,
|
|
.max_uV = 2900000,
|
|
.apply_uV = true,
|
|
.apply_uV = true,
|
|
.valid_modes_mask = REGULATOR_MODE_NORMAL
|
|
.valid_modes_mask = REGULATOR_MODE_NORMAL
|
|
|
|
+ | REGULATOR_MODE_STANDBY,
|
|
|
|
+ .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE
|
|
|
|
+ | REGULATOR_CHANGE_MODE
|
|
|
|
+ | REGULATOR_CHANGE_STATUS,
|
|
|
|
+ },
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct twl6040_codec_data twl6040_codec = {
|
|
|
|
+ /* single-step ramp for headset and handsfree */
|
|
|
|
+ .hs_left_step = 0x0f,
|
|
|
|
+ .hs_right_step = 0x0f,
|
|
|
|
+ .hf_left_step = 0x1d,
|
|
|
|
+ .hf_right_step = 0x1d,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct twl6040_vibra_data twl6040_vibra = {
|
|
|
|
+ .vibldrv_res = 8,
|
|
|
|
+ .vibrdrv_res = 3,
|
|
|
|
+ .viblmotor_res = 10,
|
|
|
|
+ .vibrmotor_res = 10,
|
|
|
|
+ .vddvibl_uV = 0, /* fixed volt supply - VBAT */
|
|
|
|
+ .vddvibr_uV = 0, /* fixed volt supply - VBAT */
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct twl6040_platform_data twl6040_data = {
|
|
|
|
+ .codec = &twl6040_codec,
|
|
|
|
+ .vibra = &twl6040_vibra,
|
|
|
|
+ .audpwron_gpio = 127,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct i2c_board_info __initdata sdp4430_i2c_1_boardinfo[] = {
|
|
|
|
+ {
|
|
|
|
+ I2C_BOARD_INFO("twl6040", 0x4b),
|
|
|
|
+ .irq = 119 + OMAP44XX_IRQ_GIC_START,
|
|
|
|
+ .platform_data = &twl6040_data,
|
|
|
|
+ },
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct twl4030_platform_data sdp4430_twldata = {
|
|
|
|
+ /* Regulators */
|
|
|
|
+ .vusim = &sdp4430_vusim,
|
|
|
|
+ .vaux1 = &sdp4430_vaux1,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct i2c_board_info __initdata sdp4430_i2c_3_boardinfo[] = {
|
|
|
|
+ {
|
|
|
|
+ I2C_BOARD_INFO("tmp105", 0x48),
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ I2C_BOARD_INFO("bh1780", 0x29),
|
|
|
|
+ },
|
|
|
|
+};
|
|
|
|
+static struct i2c_board_info __initdata sdp4430_i2c_4_boardinfo[] = {
|
|
|
|
+ {
|
|
|
|
+ I2C_BOARD_INFO("hmc5843", 0x1e),
|
|
|
|
+ },
|
|
|
|
+};
|
|
|
|
+static int __init omap4_i2c_init(void)
|
|
|
|
+{
|
|
|
|
+ omap4_pmic_get_config(&sdp4430_twldata, TWL_COMMON_PDATA_USB,
|
|
|
|
+ TWL_COMMON_REGULATOR_VDAC |
|
|
|
|
+ TWL_COMMON_REGULATOR_VAUX2 |
|
|
|
|
+ TWL_COMMON_REGULATOR_VAUX3 |
|
|
|
|
+ TWL_COMMON_REGULATOR_VMMC |
|
|
|
|
+ TWL_COMMON_REGULATOR_VPP |
|
|
|
|
+ TWL_COMMON_REGULATOR_VANA |
|
|
|
|
+ TWL_COMMON_REGULATOR_VCXIO |
|
|
|
|
+ TWL_COMMON_REGULATOR_VUSB |
|
|
|
|
+ TWL_COMMON_REGULATOR_CLK32KG |
|
|
|
|
+ TWL_COMMON_REGULATOR_V1V8 |
|
|
|
|
+ TWL_COMMON_REGULATOR_V2V1);
|
|
|
|
+ omap4_pmic_init("twl6030", &sdp4430_twldata, sdp4430_i2c_1_boardinfo,
|
|
|
|
+ ARRAY_SIZE(sdp4430_i2c_1_boardinfo));
|
|
|
|
+ omap_register_i2c_bus(2, 400, NULL, 0);
|
|
|
|
+ omap_register_i2c_bus(3, 400, sdp4430_i2c_3_boardinfo,
|
|
|
|
+ ARRAY_SIZE(sdp4430_i2c_3_boardinfo));
|
|
|
|
+ omap_register_i2c_bus(4, 400, sdp4430_i2c_4_boardinfo,
|
|
|
|
+ ARRAY_SIZE(sdp4430_i2c_4_boardinfo));
|
|
|
|
+ return 0;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+static void __init omap_sfh7741prox_init(void)
|
|
|
|
+{
|
|
|
|
+ int error;
|
|
|
|
+
|
|
|
|
+ error = gpio_request_one(OMAP4_SFH7741_ENABLE_GPIO,
|
|
|
|
+ GPIOF_OUT_INIT_LOW, "sfh7741");
|
|
|
|
+ if (error < 0)
|
|
|
|
+ pr_err("%s:failed to request GPIO %d, error %d\n",
|
|
|
|
+ __func__, OMAP4_SFH7741_ENABLE_GPIO, error);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+#ifdef CONFIG_OMAP_MUX
|