ARM: tegra: dalmore: Remove ldo4 tracking flag
[linux-3.10.git] / arch / arm / mach-tegra / board-dalmore-power.c
index 72719e0..4494145 100644 (file)
 #include <linux/regulator/driver.h>
 #include <linux/regulator/fixed.h>
 #include <linux/mfd/max77663-core.h>
+#include <linux/mfd/tps65090.h>
 #include <linux/regulator/max77663-regulator.h>
+#include <linux/regulator/tps65090-regulator.h>
 #include <linux/regulator/tps51632-regulator.h>
 
+#include <asm/mach-types.h>
+
 #include <mach/iomap.h>
 #include <mach/irqs.h>
 #include <mach/gpio-tegra.h>
 #define PMC_CTRL               0x0
 #define PMC_CTRL_INTR_LOW      (1 << 17)
 
+/*TPS65090 consumer rails */
+static struct regulator_consumer_supply tps65090_dcdc1_supply[] = {
+       REGULATOR_SUPPLY("vdd_sys_5v0", NULL),
+       REGULATOR_SUPPLY("vdd_spk", NULL),
+       REGULATOR_SUPPLY("vdd_sys_modem_5v0", NULL),
+       REGULATOR_SUPPLY("vdd_sys_cam_5v0", NULL),
+};
+
+static struct regulator_consumer_supply tps65090_dcdc2_supply[] = {
+       REGULATOR_SUPPLY("vdd_sys_3v3", NULL),
+       REGULATOR_SUPPLY("vddio_hv", "tegradc.1"),
+       REGULATOR_SUPPLY("vdd_sys_ds_3v3", NULL),
+       REGULATOR_SUPPLY("vdd_sys_nfc_3v3", NULL),
+       REGULATOR_SUPPLY("vdd_hv_nfc_3v3", NULL),
+       REGULATOR_SUPPLY("vdd_sys_cam_3v3", NULL),
+       REGULATOR_SUPPLY("vdd_sys_sensor_3v3", NULL),
+       REGULATOR_SUPPLY("vdd_sys_audio_3v3", NULL),
+       REGULATOR_SUPPLY("vdd_sys_dtv_3v3", NULL),
+       REGULATOR_SUPPLY("vcc", "0-007c"),
+       REGULATOR_SUPPLY("vcc", "0-0030"),
+};
+
+static struct regulator_consumer_supply tps65090_dcdc3_supply[] = {
+       REGULATOR_SUPPLY("vdd_ao", NULL),
+};
+
+static struct regulator_consumer_supply tps65090_ldo1_supply[] = {
+       REGULATOR_SUPPLY("vdd_sby_5v0", NULL),
+};
+
+static struct regulator_consumer_supply tps65090_ldo2_supply[] = {
+       REGULATOR_SUPPLY("vdd_sby_3v3", NULL),
+};
+
+static struct regulator_consumer_supply tps65090_fet1_supply[] = {
+       REGULATOR_SUPPLY("vdd_lcd_bl", NULL),
+};
+
+static struct regulator_consumer_supply tps65090_fet3_supply[] = {
+       REGULATOR_SUPPLY("vdd_modem_3v3", NULL),
+};
+
+static struct regulator_consumer_supply tps65090_fet4_supply[] = {
+       REGULATOR_SUPPLY("avdd_lcd", NULL),
+       REGULATOR_SUPPLY("vdd_ts_3v3", NULL),
+};
+
+static struct regulator_consumer_supply tps65090_fet5_supply[] = {
+       REGULATOR_SUPPLY("vdd_lvds", NULL),
+};
+
+static struct regulator_consumer_supply tps65090_fet6_supply[] = {
+       REGULATOR_SUPPLY("vdd_sd_slot", "sdhci-tegra.2"),
+};
+
+static struct regulator_consumer_supply tps65090_fet7_supply[] = {
+       REGULATOR_SUPPLY("vdd_com_3v3", NULL),
+       REGULATOR_SUPPLY("vdd_gps_3v3", NULL),
+};
+
+#define TPS65090_PDATA_INIT(_id, _name, _supply_reg,                   \
+               _always_on, _boot_on, _apply_uV, _en_ext_ctrl, _gpio)   \
+static struct regulator_init_data ri_data_##_name =                    \
+{                                                                      \
+       .supply_regulator = _supply_reg,                                \
+       .constraints = {                                                \
+               .name = tps65090_rails(_id),                            \
+               .valid_modes_mask = (REGULATOR_MODE_NORMAL |            \
+                                    REGULATOR_MODE_STANDBY),           \
+               .valid_ops_mask = (REGULATOR_CHANGE_MODE |              \
+                                  REGULATOR_CHANGE_STATUS |            \
+                                  REGULATOR_CHANGE_VOLTAGE),           \
+               .always_on = _always_on,                                \
+               .boot_on = _boot_on,                                    \
+               .apply_uV = _apply_uV,                                  \
+       },                                                              \
+       .num_consumer_supplies =                                        \
+               ARRAY_SIZE(tps65090_##_name##_supply),                  \
+       .consumer_supplies = tps65090_##_name##_supply,                 \
+};                                                                     \
+static struct tps65090_regulator_platform_data                         \
+                       tps65090_regulator_pdata_##_name =              \
+{                                                                      \
+       .id = TPS65090_REGULATOR_##_id,                                 \
+       .enable_ext_control = _en_ext_ctrl,                             \
+       .gpio = _gpio,                                                  \
+       .reg_init_data = &ri_data_##_name ,                             \
+}
+
+TPS65090_PDATA_INIT(DCDC1, dcdc1, NULL, 1, 1, 0, false, -1);
+TPS65090_PDATA_INIT(DCDC2, dcdc2, NULL, 1, 1, 0, false, -1);
+TPS65090_PDATA_INIT(DCDC3, dcdc3, NULL, 1, 1, 0, false, -1);
+TPS65090_PDATA_INIT(LDO1, ldo1, NULL, 1, 1, 0, false, -1);
+TPS65090_PDATA_INIT(LDO2, ldo2, NULL, 1, 1, 0, false, -1);
+TPS65090_PDATA_INIT(FET1, fet1, NULL, 0, 0, 0, false, -1);
+TPS65090_PDATA_INIT(FET3, fet3, tps65090_rails(DCDC2), 0, 0, 0, false, -1);
+TPS65090_PDATA_INIT(FET4, fet4, tps65090_rails(DCDC2), 0, 0, 0, false, -1);
+TPS65090_PDATA_INIT(FET5, fet5, tps65090_rails(DCDC2), 0, 0, 0, false, -1);
+TPS65090_PDATA_INIT(FET6, fet6, tps65090_rails(DCDC2), 0, 0, 0, false, -1);
+TPS65090_PDATA_INIT(FET7, fet7, tps65090_rails(DCDC2), 0, 0, 0, false, -1);
+
+#define ADD_TPS65090_REG(_name) (&tps65090_regulator_pdata_##_name)
+static struct tps65090_regulator_platform_data *tps65090_reg_pdata[] = {
+       ADD_TPS65090_REG(dcdc1),
+       ADD_TPS65090_REG(dcdc2),
+       ADD_TPS65090_REG(dcdc3),
+       ADD_TPS65090_REG(ldo1),
+       ADD_TPS65090_REG(ldo2),
+       ADD_TPS65090_REG(fet1),
+       ADD_TPS65090_REG(fet3),
+       ADD_TPS65090_REG(fet4),
+       ADD_TPS65090_REG(fet5),
+       ADD_TPS65090_REG(fet6),
+       ADD_TPS65090_REG(fet7),
+};
+
+static struct tps65090_platform_data tps65090_pdata = {
+       .irq_base = -1,
+       .num_reg_pdata =  ARRAY_SIZE(tps65090_reg_pdata),
+       .reg_pdata = tps65090_reg_pdata
+};
+
+/* MAX77663 consumer rails */
 static struct regulator_consumer_supply max77663_sd0_supply[] = {
        REGULATOR_SUPPLY("vdd_core", NULL),
 };
 
 static struct regulator_consumer_supply max77663_sd1_supply[] = {
        REGULATOR_SUPPLY("vddio_ddr", NULL),
+       REGULATOR_SUPPLY("vddio_ddr0", NULL),
+       REGULATOR_SUPPLY("vddio_ddr1", NULL),
 };
 
 static struct regulator_consumer_supply max77663_sd2_supply[] = {
-       REGULATOR_SUPPLY("avdd_usb_pll", NULL),
-       REGULATOR_SUPPLY("vddio_cam", NULL),
+       REGULATOR_SUPPLY("avdd_usb_pll", "tegra-ehci.0"),
+       REGULATOR_SUPPLY("avdd_usb_pll", "tegra-ehci.1"),
+       REGULATOR_SUPPLY("vddio_cam", "tegrra_camera"),
        REGULATOR_SUPPLY("avdd_osc", NULL),
        REGULATOR_SUPPLY("vddio_sys", NULL),
-       REGULATOR_SUPPLY("vddio_bb", NULL),
        REGULATOR_SUPPLY("vddio_sdmmc", "sdhci-tegra.0"),
        REGULATOR_SUPPLY("vddio_sdmmc", "sdhci-tegra.3"),
+       REGULATOR_SUPPLY("vdd_emmc", NULL),
        REGULATOR_SUPPLY("vddio_audio", NULL),
+       REGULATOR_SUPPLY("avdd_audio_1v8", NULL),
+       REGULATOR_SUPPLY("vdd_audio_1v8", NULL),
+       REGULATOR_SUPPLY("vddio_modem", NULL),
+       REGULATOR_SUPPLY("vddio_modem_1v8", NULL),
+       REGULATOR_SUPPLY("vddio_bb", NULL),
+       REGULATOR_SUPPLY("vddio_bb_1v8", NULL),
        REGULATOR_SUPPLY("vddio_uart", NULL),
        REGULATOR_SUPPLY("vddio_gmi", NULL),
+       REGULATOR_SUPPLY("vdd_sensor_1v8", NULL),
+       REGULATOR_SUPPLY("vdd_mic_1v8", NULL),
+       REGULATOR_SUPPLY("vdd_nfc_1v8", NULL),
+       REGULATOR_SUPPLY("vdd_ds_1v8", NULL),
+       REGULATOR_SUPPLY("vdd_ts_1v8", NULL),
+       REGULATOR_SUPPLY("vdd_spi_1v8", NULL),
+       REGULATOR_SUPPLY("dvdd_lcd", NULL),
+       REGULATOR_SUPPLY("vdd_com_1v8", NULL),
+       REGULATOR_SUPPLY("vddio_com_1v8", NULL),
+       REGULATOR_SUPPLY("vdd_gps_1v8", NULL),
+       REGULATOR_SUPPLY("vdd_dtv_1v8", NULL),
 };
 
 static struct regulator_consumer_supply max77663_sd3_supply[] = {
-       REGULATOR_SUPPLY("vdd_emmc_core", NULL),
+       REGULATOR_SUPPLY("vcore_emmc", NULL),
 };
 
 static struct regulator_consumer_supply max77663_ldo0_supply[] = {
-       REGULATOR_SUPPLY("avdd_plla_p_c_s", NULL),
+       REGULATOR_SUPPLY("avdd_plla_p_c", NULL),
        REGULATOR_SUPPLY("avdd_pllx", NULL),
+       REGULATOR_SUPPLY("avdd_plle", NULL),
        REGULATOR_SUPPLY("avdd_pllm", NULL),
        REGULATOR_SUPPLY("avdd_pllu", NULL),
-       REGULATOR_SUPPLY("avdd_hdmmi_pll", NULL),
-       REGULATOR_SUPPLY("avdd_csi_dsi_pll", NULL),
+       REGULATOR_SUPPLY("avdd_csi_dsi_pll", "tegradc.0"),
+       REGULATOR_SUPPLY("avdd_csi_dsi_pll", "tegradc.1"),
+       REGULATOR_SUPPLY("avdd_csi_dsi_pll", "tegra_camera"),
 };
 
 static struct regulator_consumer_supply max77663_ldo1_supply[] = {
@@ -79,13 +228,15 @@ static struct regulator_consumer_supply max77663_ldo1_supply[] = {
 };
 
 static struct regulator_consumer_supply max77663_ldo2_supply[] = {
-       REGULATOR_SUPPLY("vdd_sensor_2v8", NULL),
+       REGULATOR_SUPPLY("vdd_sensor_2v85", NULL),
+       REGULATOR_SUPPLY("vdd_als", NULL),
+       REGULATOR_SUPPLY("vdd", "1-004c"),
 };
 
 static struct regulator_consumer_supply max77663_ldo3_supply[] = {
-       REGULATOR_SUPPLY("avdd_hdmi_pll", NULL),
-       REGULATOR_SUPPLY("avdd_usb3_pll", NULL),
-       REGULATOR_SUPPLY("avddio_usb3", NULL),
+       REGULATOR_SUPPLY("avdd_hdmi_pll", "tegradc.1"),
+       REGULATOR_SUPPLY("avdd_usb_pll", "tegra-ehci.2"),
+       REGULATOR_SUPPLY("avddio_usb", "tegra-ehci.2"),
 };
 
 static struct regulator_consumer_supply max77663_ldo4_supply[] = {
@@ -93,18 +244,25 @@ static struct regulator_consumer_supply max77663_ldo4_supply[] = {
 };
 
 static struct regulator_consumer_supply max77663_ldo5_supply[] = {
-       REGULATOR_SUPPLY("avdd_dsi_csi", NULL),
-       REGULATOR_SUPPLY("vddio_hsic", NULL),
+       REGULATOR_SUPPLY("avdd_dsi_csi", "tegradc.0"),
+       REGULATOR_SUPPLY("avdd_dsi_csi", "tegradc.1"),
+       REGULATOR_SUPPLY("avdd_dsi_csi", "tegra_camera"),
+       REGULATOR_SUPPLY("vddio_hsic", "tegra-ehci.0"),
+       REGULATOR_SUPPLY("vddio_hsic", "tegra-ehci.1"),
+       REGULATOR_SUPPLY("vddio_bb_hsic", NULL),
 };
 
 static struct regulator_consumer_supply max77663_ldo6_supply[] = {
        REGULATOR_SUPPLY("vddio_sdmmc", "sdhci-tegra.2"),
 };
 
+/* FIXME!! Put the device address of camera */
 static struct regulator_consumer_supply max77663_ldo7_supply[] = {
        REGULATOR_SUPPLY("avdd_cam1", NULL),
+       REGULATOR_SUPPLY("avdd_2v8_cam_af", NULL),
 };
 
+/* FIXME!! Put the device address of camera */
 static struct regulator_consumer_supply max77663_ldo8_supply[] = {
        REGULATOR_SUPPLY("avdd_cam2", NULL),
 };
@@ -127,33 +285,32 @@ static struct max77663_regulator_fps_cfg max77663_fps_cfgs[] = {
        },
 };
 
-#define MAX77663_PDATA_INIT(_id, _min_uV, _max_uV, _supply_reg,                \
+#define MAX77663_PDATA_INIT(_rid, _id, _min_uV, _max_uV, _supply_reg,  \
                _always_on, _boot_on, _apply_uV,                        \
-               _init_apply, _init_enable, _init_uV,                    \
                _fps_src, _fps_pu_period, _fps_pd_period, _flags)       \
+       static struct regulator_init_data max77663_regulator_idata_##_id = {   \
+               .supply_regulator = _supply_reg,                        \
+               .constraints = {                                        \
+                       .name = max77663_rails(_id),                    \
+                       .min_uV = _min_uV,                              \
+                       .max_uV = _max_uV,                              \
+                       .valid_modes_mask = (REGULATOR_MODE_NORMAL |    \
+                                            REGULATOR_MODE_STANDBY),   \
+                       .valid_ops_mask = (REGULATOR_CHANGE_MODE |      \
+                                          REGULATOR_CHANGE_STATUS |    \
+                                          REGULATOR_CHANGE_VOLTAGE),   \
+                       .always_on = _always_on,                        \
+                       .boot_on = _boot_on,                            \
+                       .apply_uV = _apply_uV,                          \
+               },                                                      \
+               .num_consumer_supplies =                                \
+                       ARRAY_SIZE(max77663_##_id##_supply),            \
+               .consumer_supplies = max77663_##_id##_supply,           \
+       };                                                              \
 static struct max77663_regulator_platform_data max77663_regulator_pdata_##_id =\
 {                                                                      \
-       .init_data = {                                                  \
-                       .constraints = {                                \
-                               .min_uV = _min_uV,                      \
-                               .max_uV = _max_uV,                      \
-                               .valid_modes_mask = (REGULATOR_MODE_NORMAL |  \
-                                                    REGULATOR_MODE_STANDBY), \
-                               .valid_ops_mask = (REGULATOR_CHANGE_MODE |    \
-                                                  REGULATOR_CHANGE_STATUS |  \
-                                                  REGULATOR_CHANGE_VOLTAGE), \
-                               .always_on = _always_on,                \
-                               .boot_on = _boot_on,                    \
-                               .apply_uV = _apply_uV,                  \
-                       },                                              \
-                       .num_consumer_supplies =                        \
-                               ARRAY_SIZE(max77663_##_id##_supply),    \
-                       .consumer_supplies = max77663_##_id##_supply,   \
-                       .supply_regulator = _supply_reg,                \
-               },                                                      \
-               .init_apply = _init_apply,                              \
-               .init_enable = _init_enable,                            \
-               .init_uV = _init_uV,                                    \
+               .reg_init_data = &max77663_regulator_idata_##_id,       \
+               .id = MAX77663_REGULATOR_ID_##_rid,                     \
                .fps_src = _fps_src,                                    \
                .fps_pu_period = _fps_pu_period,                        \
                .fps_pd_period = _fps_pd_period,                        \
@@ -161,54 +318,48 @@ static struct max77663_regulator_platform_data max77663_regulator_pdata_##_id =\
                .flags = _flags,                                        \
        }
 
-MAX77663_PDATA_INIT(sd0,  600000, 3387500, NULL, 1, 0, 0,
-                   1, 1, -1, FPS_SRC_1, -1, -1, SD_FSRADE_DISABLE);
+MAX77663_PDATA_INIT(SD0, sd0,  900000, 1400000, tps65090_rails(DCDC3), 1, 1, 0,
+                   FPS_SRC_1, -1, -1, SD_FSRADE_DISABLE);
 
-MAX77663_PDATA_INIT(sd1,  800000, 1587500, NULL, 1, 0, 0,
-                   1, 1, -1, FPS_SRC_1, -1, -1, SD_FSRADE_DISABLE);
+MAX77663_PDATA_INIT(SD1, sd1,  1200000, 1200000, tps65090_rails(DCDC3), 1, 1, 1,
+                   FPS_SRC_1, -1, -1, SD_FSRADE_DISABLE);
 
-MAX77663_PDATA_INIT(sd2,  1800000, 1800000, NULL, 1, 0, 0,
-                   1, 1, -1, FPS_SRC_0, -1, -1, 0);
+MAX77663_PDATA_INIT(SD2, sd2,  1800000, 1800000, tps65090_rails(DCDC3), 1, 1, 1,
+                   FPS_SRC_0, -1, -1, 0);
 
-MAX77663_PDATA_INIT(sd3,  600000, 3387500, NULL, 1, 0, 0,
-                   1, 1, -1, FPS_SRC_NONE, -1, -1, 0);
+MAX77663_PDATA_INIT(SD3, sd3,  2850000, 2850000, tps65090_rails(DCDC3), 1, 1, 1,
+                   FPS_SRC_NONE, -1, -1, 0);
 
-MAX77663_PDATA_INIT(ldo0, 800000, 2350000, max77663_rails(sd2), 1, 0, 0,
-                   1, 1, -1, FPS_SRC_1, -1, -1, 0);
+MAX77663_PDATA_INIT(LDO0, ldo0, 1050000, 1050000, max77663_rails(sd2), 1, 1, 1,
+                   FPS_SRC_1, -1, -1, 0);
 
-MAX77663_PDATA_INIT(ldo1, 800000, 2350000, max77663_rails(sd2), 0, 0, 0,
-                   0, 0, -1, FPS_SRC_NONE, -1, -1, 0);
+MAX77663_PDATA_INIT(LDO1, ldo1, 1050000, 1050000, max77663_rails(sd2), 0, 0, 1,
+                   FPS_SRC_NONE, -1, -1, 0);
 
-MAX77663_PDATA_INIT(ldo2, 2850000, 2850000, NULL, 1, 0, 0,
-                   1, 1, -1, FPS_SRC_1, -1, -1, 0);
+MAX77663_PDATA_INIT(LDO2, ldo2, 2850000, 2850000, tps65090_rails(DCDC2), 1, 1,
+                   1, FPS_SRC_1, -1, -1, 0);
 
-MAX77663_PDATA_INIT(ldo3, 800000, 3950000, max77663_rails(sd2), 1, 0, 0,
-                   1, 1, -1, FPS_SRC_NONE, -1, -1, 0);
+MAX77663_PDATA_INIT(LDO3, ldo3, 1050000, 1050000, max77663_rails(sd2), 1, 1, 1,
+                   FPS_SRC_NONE, -1, -1, 0);
 
-MAX77663_PDATA_INIT(ldo4, 800000, 1587500, NULL, 0, 0, 0,
-                   1, 1, 1000000, FPS_SRC_NONE, -1, -1, LDO4_EN_TRACKING);
+MAX77663_PDATA_INIT(LDO4, ldo4, 1100000, 1100000, tps65090_rails(DCDC2), 1, 1,
+                   1, FPS_SRC_NONE, -1, -1, 0);
 
-MAX77663_PDATA_INIT(ldo5, 800000, 2800000, max77663_rails(sd2), 0, 0, 0,
-                   1, 1, -1, FPS_SRC_NONE, -1, -1, 0);
+MAX77663_PDATA_INIT(LDO5, ldo5, 1200000, 1200000, max77663_rails(sd2), 0, 1, 1,
+                   FPS_SRC_NONE, -1, -1, 0);
 
-MAX77663_PDATA_INIT(ldo6, 800000, 3950000, NULL, 0, 0, 0,
-                   0, 0, -1, FPS_SRC_NONE, -1, -1, 0);
+MAX77663_PDATA_INIT(LDO6, ldo6, 1800000, 3300000, tps65090_rails(DCDC2), 0, 0, 0,
+                   FPS_SRC_NONE, -1, -1, 0);
 
-MAX77663_PDATA_INIT(ldo7, 800000, 3950000, NULL, 0, 0, 0,
-                   0, 0, -1, FPS_SRC_NONE, -1, -1, 0);
+MAX77663_PDATA_INIT(LDO7, ldo7, 2800000, 2800000, tps65090_rails(DCDC2), 0, 0, 1,
+                   FPS_SRC_NONE, -1, -1, 0);
 
-MAX77663_PDATA_INIT(ldo8, 800000, 3950000, NULL, 0, 0, 0,
-                   1, 1, -1, FPS_SRC_1, -1, -1, 0);
+MAX77663_PDATA_INIT(LDO8, ldo8, 2800000, 2800000, tps65090_rails(DCDC2), 0, 1, 1,
+                   FPS_SRC_1, -1, -1, 0);
 
-#define MAX77663_REG(_id, _data)                                       \
-       {                                                               \
-               .name = "max77663-regulator",                           \
-               .id = MAX77663_REGULATOR_ID_##_id,                      \
-               .platform_data = &max77663_regulator_pdata_##_data,     \
-               .pdata_size = sizeof(max77663_regulator_pdata_##_data), \
-       }
+#define MAX77663_REG(_id, _data) (&max77663_regulator_pdata_##_data)
 
-static struct mfd_cell max77663_subdevs[] = {
+static struct max77663_regulator_platform_data *max77663_reg_pdata[] = {
        MAX77663_REG(SD0, sd0),
        MAX77663_REG(SD1, sd1),
        MAX77663_REG(SD2, sd2),
@@ -286,72 +437,62 @@ static struct max77663_gpio_config max77663_gpio_cfgs[] = {
        },
 };
 
-static struct max77663_platform_data max7763_pdata = {
+static struct max77663_platform_data max77663_pdata = {
        .irq_base       = MAX77663_IRQ_BASE,
        .gpio_base      = MAX77663_GPIO_BASE,
 
        .num_gpio_cfgs  = ARRAY_SIZE(max77663_gpio_cfgs),
        .gpio_cfgs      = max77663_gpio_cfgs,
 
-
-       .num_subdevs    = ARRAY_SIZE(max77663_subdevs),
-       .sub_devices    = max77663_subdevs,
+       .regulator_pdata = max77663_reg_pdata,
+       .num_regulator_pdata = ARRAY_SIZE(max77663_reg_pdata),
 
        .rtc_i2c_addr   = 0x68,
 
        .use_power_off  = false,
 };
 
-
 /* EN_AVDD_USB_HDMI From PMU GP1 */
-static struct regulator_consumer_supply fixed_reg_en_avdd_hdmi_usb_supply[] = {
-       REGULATOR_SUPPLY("avdd_hdmi", NULL),
-       REGULATOR_SUPPLY("avdd_usb", NULL),
-       REGULATOR_SUPPLY("hvdd_usb3", NULL),
+static struct regulator_consumer_supply fixed_reg_avdd_usb_hdmi_supply[] = {
+       REGULATOR_SUPPLY("avdd_hdmi", "tegradc.1"),
+       REGULATOR_SUPPLY("avdd_usb", "tegra-ehci.0"),
+       REGULATOR_SUPPLY("avdd_usb", "tegra-ehci.1"),
+       REGULATOR_SUPPLY("avdd_usb", "tegra-ehci.2"),
+       REGULATOR_SUPPLY("hvdd_usb", "tegra-ehci.2"),
 };
 
-/* EN_3V3 From PMU GP2 */
-static struct regulator_consumer_supply fixed_reg_en_3v3_sys_supply[] = {
-       REGULATOR_SUPPLY("vdd_3v3_sys", NULL),
+/* EN_CAM_1v8 From PMU GP5 */
+static struct regulator_consumer_supply fixed_reg_en_1v8_cam_supply[] = {
+       REGULATOR_SUPPLY("dvdd_cam", NULL),
+       REGULATOR_SUPPLY("vdd_cam_1v8", NULL),
 };
 
-/* EN_5V0 From PMU GP3 */
-static struct regulator_consumer_supply fixed_reg_en_5v0_supply[] = {
-       REGULATOR_SUPPLY("vdd_5v0_sys", NULL),
-       REGULATOR_SUPPLY("vdd_hdmi_con", NULL),
-       REGULATOR_SUPPLY("vdd_spk", NULL),
+
+static struct regulator_consumer_supply fixed_reg_vdd_hdmi_5v0_supply[] = {
+       REGULATOR_SUPPLY("vdd_hdmi_5v0", "tegradc.1"),
 };
 
-/* EN_CAM_1v8 From PMU GP5 */
-static struct regulator_consumer_supply fixed_reg_en_1v8_cam_supply[] = {
-       REGULATOR_SUPPLY("dvdd_cam", NULL),
+/* EN_USB1_VBUS From TEGRA GPIO PN4 PR3(T30) */
+static struct regulator_consumer_supply fixed_reg_usb1_vbus_supply[] = {
+       REGULATOR_SUPPLY("usb_vbus", "tegra-ehci.0"),
 };
 
 #ifdef CONFIG_ARCH_TEGRA_11x_SOC
 /* EN_3V3_FUSE From TEGRA GPIO PX4 */
-static struct regulator_consumer_supply fixed_reg_en_3v3_fuse_supply[] = {
+static struct regulator_consumer_supply fixed_reg_vpp_fuse_supply[] = {
        REGULATOR_SUPPLY("vpp_fuse", NULL),
 };
 
-/* EN_USB1_VBUS From TEGRA GPIO PN4 */
-static struct regulator_consumer_supply fixed_reg_en_usb1_vbus_supply[] = {
-       REGULATOR_SUPPLY("vdd_vbus_micro_usb", NULL),
-};
-
 /* EN_USB3_VBUS From TEGRA GPIO PM5 */
-static struct regulator_consumer_supply fixed_reg_en_usb3_vbus_supply[] = {
-       REGULATOR_SUPPLY("usb3_vbus_con", NULL),
+static struct regulator_consumer_supply fixed_reg_usb3_vbus_supply[] = {
+       REGULATOR_SUPPLY("usb_vbus", "tegra-ehci.2"),
 };
 #endif
 
-static struct regulator_consumer_supply fixed_reg_en_vddio_hv_supply[] = {
-       REGULATOR_SUPPLY("vddio_hv", NULL),
-};
-
 /* Macro for defining fixed regulator sub device data */
 #define FIXED_SUPPLY(_name) "fixed_reg_"#_name
 #define FIXED_REG(_id, _var, _name, _in_supply, _always_on, _boot_on,  \
-       _gpio_nr, _active_high, _boot_state, _millivolts)       \
+       _gpio_nr, _open_drain, _active_high, _boot_state, _millivolts)  \
        static struct regulator_init_data ri_data_##_var =              \
        {                                                               \
                .supply_regulator = _in_supply,                         \
@@ -373,6 +514,7 @@ static struct regulator_consumer_supply fixed_reg_en_vddio_hv_supply[] = {
                .supply_name = FIXED_SUPPLY(_name),                     \
                .microvolts = _millivolts * 1000,                       \
                .gpio = _gpio_nr,                                       \
+               .gpio_is_open_drain = _open_drain,                      \
                .enable_high = _active_high,                            \
                .enabled_at_boot = _boot_state,                         \
                .init_data = &ri_data_##_var,                           \
@@ -385,33 +527,35 @@ static struct regulator_consumer_supply fixed_reg_en_vddio_hv_supply[] = {
                },                                                      \
        }
 
-FIXED_REG(1,   en_3v3_sys,     en_3v3_sys,
-       NULL,   1,      0,
-       MAX77663_GPIO_BASE + MAX77663_GPIO2,    true,   1,      3300);
-FIXED_REG(2,   en_avdd_hdmi_usb,       en_avdd_hdmi_usb,
-       FIXED_SUPPLY(en_3v3_sys),       0,      0,
-       MAX77663_GPIO_BASE + MAX77663_GPIO1,    true,   1,      3300);
-FIXED_REG(3,   en_1v8_cam,     en_1v8_cam,
+FIXED_REG(1,   avdd_usb_hdmi,  avdd_usb_hdmi,
+       tps65090_rails(DCDC2),  0,      0,
+       MAX77663_GPIO_BASE + MAX77663_GPIO1,    true,   true,   1,      3300);
+
+FIXED_REG(2,   en_1v8_cam,     en_1v8_cam,
        max77663_rails(sd2),    0,      0,
-       MAX77663_GPIO_BASE + MAX77663_GPIO5,    true,   0,      1800);
-FIXED_REG(4,   en_5v0, en_5v0,
-       NULL,   0,      0,
-       MAX77663_GPIO_BASE + MAX77663_GPIO3,    true,   0,      5000);
-FIXED_REG(5,   en_vddio_hv,    en_vddio_hv,
-       FIXED_SUPPLY(en_3v3_sys),       0,      0,
-       -1,     true,   0,      3300);
+       MAX77663_GPIO_BASE + MAX77663_GPIO5,    false,  true,   0,      1800);
+
+FIXED_REG(3,   vdd_hdmi_5v0,   vdd_hdmi_5v0,
+       tps65090_rails(DCDC1),  0,      0,
+       TEGRA_GPIO_PK1, false,  true,   0,      5000);
+
 #ifdef CONFIG_ARCH_TEGRA_11x_SOC
-FIXED_REG(6,   en_3v3_fuse,    en_3v3_fuse,
+FIXED_REG(4,   vpp_fuse,       vpp_fuse,
        max77663_rails(sd2),    0,      0,
-       TEGRA_GPIO_PX4, true,   0,      3300);
-FIXED_REG(7,   en_usb1_vbus,   en_usb1_vbus,
-       FIXED_SUPPLY(en_5v0),   0,      0,
-       TEGRA_GPIO_PN4, true,   0,      5000);
-FIXED_REG(8,   en_usb3_vbus,   en_usb3_vbus,
-       FIXED_SUPPLY(en_5v0),   0,      0,
-       TEGRA_GPIO_PM5, true,   0,      5000);
+       TEGRA_GPIO_PX4, false,  true,   0,      3300);
+
+FIXED_REG(5,   usb1_vbus,      usb1_vbus,
+       tps65090_rails(DCDC1),  0,      0,
+       TEGRA_GPIO_PN4, true,   true,   0,      5000);
+
+FIXED_REG(6,   usb3_vbus,      usb3_vbus,
+       tps65090_rails(DCDC1),  0,      0,
+       TEGRA_GPIO_PK6, true,   true,   0,      5000);
+#else
+FIXED_REG(4,   usb1_vbus,      usb1_vbus,
+       tps65090_rails(DCDC1),  0,      0,
+       TEGRA_GPIO_PR3, true,   true,   0,      5000);
 #endif
-
 /*
  * Creating the fixed regulator device tables
  */
@@ -419,25 +563,29 @@ FIXED_REG(8,      en_usb3_vbus,   en_usb3_vbus,
 #define ADD_FIXED_REG(_name)    (&fixed_reg_##_name##_dev)
 
 #define E1612_COMMON_FIXED_REG                 \
-       ADD_FIXED_REG(en_3v3_sys),              \
-       ADD_FIXED_REG(en_avdd_hdmi_usb),        \
+       ADD_FIXED_REG(avdd_usb_hdmi),           \
        ADD_FIXED_REG(en_1v8_cam),              \
-       ADD_FIXED_REG(en_5v0),                  \
-       ADD_FIXED_REG(en_vddio_hv),             \
+       ADD_FIXED_REG(vdd_hdmi_5v0),
 
 #ifdef CONFIG_ARCH_TEGRA_11x_SOC
-
 #define E1612_T114_FIXED_REG                   \
-       ADD_FIXED_REG(en_3v3_fuse),             \
-       ADD_FIXED_REG(en_usb1_vbus),            \
-       ADD_FIXED_REG(en_usb3_vbus),            \
+       ADD_FIXED_REG(vpp_fuse),                \
+       ADD_FIXED_REG(usb1_vbus),               \
+       ADD_FIXED_REG(usb3_vbus),
+#endif
 
+#ifdef CONFIG_ARCH_TEGRA_3x_SOC
+#define E1612_T30_FIXED_REG                    \
+       ADD_FIXED_REG(usb1_vbus),
 #endif
 
 /* Gpio switch regulator platform data for Dalmore E1612 */
 static struct platform_device *fixed_reg_devs_a00[] = {
 #ifdef CONFIG_ARCH_TEGRA_11x_SOC
-       E1612_T114_FIXED_REG,
+       E1612_T114_FIXED_REG
+#endif
+#ifdef CONFIG_ARCH_TEGRA_3x_SOC
+       E1612_T30_FIXED_REG
 #endif
        E1612_COMMON_FIXED_REG
 
@@ -448,7 +596,14 @@ static struct i2c_board_info __initdata max77663_regulators[] = {
                /* The I2C address was determined by OTP factory setting */
                I2C_BOARD_INFO("max77663", 0x3c),
                .irq            = INT_EXTERNAL_PMU,
-               .platform_data  = &max7763_pdata,
+               .platform_data  = &max77663_pdata,
+       },
+};
+
+static struct i2c_board_info __initdata tps65090_regulators[] = {
+       {
+               I2C_BOARD_INFO("tps65090", 0x48),
+               .platform_data  = &tps65090_pdata,
        },
 };
 
@@ -460,15 +615,15 @@ static struct regulator_consumer_supply tps51632_dcdc_supply[] = {
 static struct regulator_init_data tps51632_init_data = {
        .constraints = {                                                \
                .min_uV = 500000,                                       \
-                       .max_uV = 1520000,                              \
-                       .valid_modes_mask = (REGULATOR_MODE_NORMAL |    \
+               .max_uV = 1520000,                                      \
+               .valid_modes_mask = (REGULATOR_MODE_NORMAL |            \
                                        REGULATOR_MODE_STANDBY),        \
-                       .valid_ops_mask = (REGULATOR_CHANGE_MODE |      \
+               .valid_ops_mask = (REGULATOR_CHANGE_MODE |              \
                                        REGULATOR_CHANGE_STATUS |       \
                                        REGULATOR_CHANGE_VOLTAGE),      \
-                       .always_on = 1,                                 \
-                       .boot_on =  1,                                  \
-                       .apply_uV = 0,                                  \
+               .always_on = 1,                                         \
+               .boot_on =  1,                                          \
+               .apply_uV = 0,                                          \
        },                                                              \
        .num_consumer_supplies = ARRAY_SIZE(tps51632_dcdc_supply),      \
                .consumer_supplies = tps51632_dcdc_supply,              \
@@ -542,30 +697,19 @@ static int __init dalmore_max77663_regulator_init(void)
 
 static int __init dalmore_fixed_regulator_init(void)
 {
-       int i;
-       struct board_info board_info;
-       struct platform_device **fixed_reg_devs;
-       int nfixreg_devs;
-
-       tegra_get_board_info(&board_info);
-       fixed_reg_devs = fixed_reg_devs_a00;
-       nfixreg_devs = ARRAY_SIZE(fixed_reg_devs_a00);
-
-       for (i = 0; i < nfixreg_devs; ++i) {
-               int gpio_nr;
-               struct fixed_voltage_config *fixed_reg_pdata =
-                       fixed_reg_devs[i]->dev.platform_data;
-               gpio_nr = fixed_reg_pdata->gpio;
+       if (!machine_is_dalmore())
+               return 0;
 
-       }
-
-       return platform_add_devices(fixed_reg_devs, nfixreg_devs);
+       return platform_add_devices(fixed_reg_devs_a00,
+                               ARRAY_SIZE(fixed_reg_devs_a00));
 }
 subsys_initcall_sync(dalmore_fixed_regulator_init);
 
-
 int __init dalmore_regulator_init(void)
 {
+       i2c_register_board_info(4, tps65090_regulators,
+                               ARRAY_SIZE(tps65090_regulators));
+
        dalmore_max77663_regulator_init();
        i2c_register_board_info(4, tps51632_boardinfo, 1);
        platform_device_register(&dalmore_pda_power_device);