|
@@ -19,6 +19,8 @@
|
|
|
#include <linux/gpio.h>
|
|
|
#include <linux/usb/otg.h>
|
|
|
#include <linux/spi/spi.h>
|
|
|
+#include <linux/i2c/twl.h>
|
|
|
+#include <linux/regulator/machine.h>
|
|
|
|
|
|
#include <mach/hardware.h>
|
|
|
#include <mach/omap4-common.h>
|
|
@@ -135,13 +137,186 @@ static struct omap_musb_board_data musb_board_data = {
|
|
|
.mode = MUSB_PERIPHERAL,
|
|
|
.power = 100,
|
|
|
};
|
|
|
+static struct regulator_consumer_supply sdp4430_vmmc_supply[] = {
|
|
|
+ {
|
|
|
+ .supply = "vmmc",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ .supply = "vmmc",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ .supply = "vmmc",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ .supply = "vmmc",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ .supply = "vmmc",
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
+static struct regulator_init_data sdp4430_vaux1 = {
|
|
|
+ .constraints = {
|
|
|
+ .min_uV = 1000000,
|
|
|
+ .max_uV = 3000000,
|
|
|
+ .apply_uV = true,
|
|
|
+ .valid_modes_mask = REGULATOR_MODE_NORMAL
|
|
|
+ | REGULATOR_MODE_STANDBY,
|
|
|
+ .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE
|
|
|
+ | REGULATOR_CHANGE_MODE
|
|
|
+ | REGULATOR_CHANGE_STATUS,
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
+static struct regulator_init_data sdp4430_vaux2 = {
|
|
|
+ .constraints = {
|
|
|
+ .min_uV = 1200000,
|
|
|
+ .max_uV = 2800000,
|
|
|
+ .apply_uV = true,
|
|
|
+ .valid_modes_mask = REGULATOR_MODE_NORMAL
|
|
|
+ | REGULATOR_MODE_STANDBY,
|
|
|
+ .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE
|
|
|
+ | REGULATOR_CHANGE_MODE
|
|
|
+ | REGULATOR_CHANGE_STATUS,
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
+static struct regulator_init_data sdp4430_vaux3 = {
|
|
|
+ .constraints = {
|
|
|
+ .min_uV = 1000000,
|
|
|
+ .max_uV = 3000000,
|
|
|
+ .apply_uV = true,
|
|
|
+ .valid_modes_mask = REGULATOR_MODE_NORMAL
|
|
|
+ | REGULATOR_MODE_STANDBY,
|
|
|
+ .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE
|
|
|
+ | REGULATOR_CHANGE_MODE
|
|
|
+ | REGULATOR_CHANGE_STATUS,
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
+/* VMMC1 for MMC1 card */
|
|
|
+static struct regulator_init_data sdp4430_vmmc = {
|
|
|
+ .constraints = {
|
|
|
+ .min_uV = 1200000,
|
|
|
+ .max_uV = 3000000,
|
|
|
+ .apply_uV = true,
|
|
|
+ .valid_modes_mask = REGULATOR_MODE_NORMAL
|
|
|
+ | REGULATOR_MODE_STANDBY,
|
|
|
+ .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE
|
|
|
+ | REGULATOR_CHANGE_MODE
|
|
|
+ | REGULATOR_CHANGE_STATUS,
|
|
|
+ },
|
|
|
+ .num_consumer_supplies = 5,
|
|
|
+ .consumer_supplies = sdp4430_vmmc_supply,
|
|
|
+};
|
|
|
+
|
|
|
+static struct regulator_init_data sdp4430_vpp = {
|
|
|
+ .constraints = {
|
|
|
+ .min_uV = 1800000,
|
|
|
+ .max_uV = 2500000,
|
|
|
+ .apply_uV = true,
|
|
|
+ .valid_modes_mask = REGULATOR_MODE_NORMAL
|
|
|
+ | REGULATOR_MODE_STANDBY,
|
|
|
+ .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE
|
|
|
+ | REGULATOR_CHANGE_MODE
|
|
|
+ | REGULATOR_CHANGE_STATUS,
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
+static struct regulator_init_data sdp4430_vusim = {
|
|
|
+ .constraints = {
|
|
|
+ .min_uV = 1200000,
|
|
|
+ .max_uV = 2900000,
|
|
|
+ .apply_uV = true,
|
|
|
+ .valid_modes_mask = REGULATOR_MODE_NORMAL
|
|
|
+ | REGULATOR_MODE_STANDBY,
|
|
|
+ .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE
|
|
|
+ | REGULATOR_CHANGE_MODE
|
|
|
+ | REGULATOR_CHANGE_STATUS,
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
+static struct regulator_init_data sdp4430_vana = {
|
|
|
+ .constraints = {
|
|
|
+ .min_uV = 2100000,
|
|
|
+ .max_uV = 2100000,
|
|
|
+ .apply_uV = true,
|
|
|
+ .valid_modes_mask = REGULATOR_MODE_NORMAL
|
|
|
+ | REGULATOR_MODE_STANDBY,
|
|
|
+ .valid_ops_mask = REGULATOR_CHANGE_MODE
|
|
|
+ | REGULATOR_CHANGE_STATUS,
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
+static struct regulator_init_data sdp4430_vcxio = {
|
|
|
+ .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,
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
+static struct regulator_init_data sdp4430_vdac = {
|
|
|
+ .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,
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
+static struct regulator_init_data sdp4430_vusb = {
|
|
|
+ .constraints = {
|
|
|
+ .min_uV = 3300000,
|
|
|
+ .max_uV = 3300000,
|
|
|
+ .apply_uV = true,
|
|
|
+ .valid_modes_mask = REGULATOR_MODE_NORMAL
|
|
|
+ | REGULATOR_MODE_STANDBY,
|
|
|
+ .valid_ops_mask = REGULATOR_CHANGE_MODE
|
|
|
+ | REGULATOR_CHANGE_STATUS,
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
+static struct twl4030_platform_data sdp4430_twldata = {
|
|
|
+ .irq_base = TWL6030_IRQ_BASE,
|
|
|
+ .irq_end = TWL6030_IRQ_END,
|
|
|
+
|
|
|
+ /* Regulators */
|
|
|
+ .vmmc = &sdp4430_vmmc,
|
|
|
+ .vpp = &sdp4430_vpp,
|
|
|
+ .vusim = &sdp4430_vusim,
|
|
|
+ .vana = &sdp4430_vana,
|
|
|
+ .vcxio = &sdp4430_vcxio,
|
|
|
+ .vdac = &sdp4430_vdac,
|
|
|
+ .vusb = &sdp4430_vusb,
|
|
|
+ .vaux1 = &sdp4430_vaux1,
|
|
|
+ .vaux2 = &sdp4430_vaux2,
|
|
|
+ .vaux3 = &sdp4430_vaux3,
|
|
|
+};
|
|
|
+
|
|
|
+static struct i2c_board_info __initdata sdp4430_i2c_boardinfo[] = {
|
|
|
+ {
|
|
|
+ I2C_BOARD_INFO("twl6030", 0x48),
|
|
|
+ .flags = I2C_CLIENT_WAKE,
|
|
|
+ .irq = OMAP44XX_IRQ_SYS_1N,
|
|
|
+ .platform_data = &sdp4430_twldata,
|
|
|
+ },
|
|
|
+};
|
|
|
static int __init omap4_i2c_init(void)
|
|
|
{
|
|
|
/*
|
|
|
* Phoenix Audio IC needs I2C1 to
|
|
|
* start with 400 KHz or less
|
|
|
*/
|
|
|
- omap_register_i2c_bus(1, 400, NULL, 0);
|
|
|
+ omap_register_i2c_bus(1, 400, sdp4430_i2c_boardinfo,
|
|
|
+ ARRAY_SIZE(sdp4430_i2c_boardinfo));
|
|
|
omap_register_i2c_bus(2, 400, NULL, 0);
|
|
|
omap_register_i2c_bus(3, 400, NULL, 0);
|
|
|
omap_register_i2c_bus(4, 400, NULL, 0);
|