ARM: tegra: Enterprise: Provide settling time for 3.3 Voltage rail
Chaitanya Bandi [Wed, 4 Apr 2012 14:44:39 +0000 (19:44 +0530)]
It is observed that voltage rails for 3V3 is taking around 400us
for setting it output. Providing the startup delay of 500us for this
rail so that rails are stablized at desired level before any consumer
uses that rail.

Bug 959902

Change-Id: I602b428db44d595a94d69fccb3340a77c3819a3b
Signed-off-by: Chaitanya Bandi <bandik@nvidia.com>
Reviewed-on: http://git-master/r/94537
Reviewed-by: Rohan Somvanshi <rsomvanshi@nvidia.com>
Tested-by: Rohan Somvanshi <rsomvanshi@nvidia.com>

arch/arm/mach-tegra/board-enterprise-power.c

index 33d7198..be81f4f 100644 (file)
@@ -580,7 +580,7 @@ GPIO_REG(4, sdmmc3_vdd_sel,  tps80031_rails(SMPS4),
 
 /* Macro for defining fixed regulator sub device data */
 #define FIXED_REG(_id, _name, _input_supply, _gpio_nr, _active_high,   \
-                       _millivolts, _boot_state)                       \
+                       _millivolts, _boot_state, _sdelay)              \
        static struct regulator_init_data ri_data_##_name =             \
        {                                                               \
                .supply_regulator = _input_supply,                      \
@@ -603,6 +603,7 @@ GPIO_REG(4, sdmmc3_vdd_sel,  tps80031_rails(SMPS4),
                .enable_high = _active_high,                            \
                .enabled_at_boot = _boot_state,                         \
                .init_data = &ri_data_##_name,                          \
+               .startup_delay = _sdelay,                               \
        };                                                              \
        static struct platform_device fixed_reg_##_name##_dev = {       \
                .name   = "reg-fixed-voltage",                          \
@@ -613,25 +614,25 @@ GPIO_REG(4, sdmmc3_vdd_sel,  tps80031_rails(SMPS4),
        }
 
 FIXED_REG(0, pmu_5v15_en,     NULL,
-               ENT_TPS80031_GPIO_REGEN1, true, 5000, 0 );
+               ENT_TPS80031_GPIO_REGEN1, true, 5000, 0 , 0);
 FIXED_REG(2, pmu_hdmi_5v0_en, "fixed_reg_pmu_5v15_en",
-               ENT_TPS80031_GPIO_SYSEN, true, 5000, 0);
+               ENT_TPS80031_GPIO_SYSEN, true, 5000, 0, 0);
 FIXED_REG(3, vdd_fuse_en,     "fixed_reg_pmu_3v3_en",
-               TEGRA_GPIO_PM0, true, 3300, 0);
+               TEGRA_GPIO_PM0, true, 3300, 0, 0);
 FIXED_REG(5, cam_ldo_2v8_en,  NULL,
-               TEGRA_GPIO_PM7, true, 2800, 0);
+               TEGRA_GPIO_PM7, true, 2800, 0, 0);
 FIXED_REG(6, cam_ldo_1v8_en,  NULL,
-               TEGRA_GPIO_PF1, true, 1800, 0);
+               TEGRA_GPIO_PF1, true, 1800, 0, 0);
 
 /* Enterprise A02- specific */
 FIXED_REG(1, pmu_3v3_en,      "fixed_reg_pmu_5v15_en",
-               ENT_TPS80031_GPIO_REGEN2, true, 3300, 0);
+               ENT_TPS80031_GPIO_REGEN2, true, 3300, 0, 500);
 
 /* Enterprise A03+ specific */
 FIXED_REG(7, vdd_sdmmc3_2v85_en,  NULL,
-               TEGRA_GPIO_PF2, true, 2850, 0);
+               TEGRA_GPIO_PF2, true, 2850, 0, 0);
 FIXED_REG(8, lcd_1v8_en,  NULL,
-               TEGRA_GPIO_PB2, true, 1800, 0);
+               TEGRA_GPIO_PB2, true, 1800, 0, 0);
 
 #define ADD_FIXED_REG(_name)   (&fixed_reg_##_name##_dev)