summaryrefslogtreecommitdiff
path: root/arch/arm/mach-tegra/board-vcm30_t124-power.c
diff options
context:
space:
mode:
authorBhavesh Parekh <bparekh@nvidia.com>2013-10-11 19:16:38 +0530
committerBharat Nihalani <bnihalani@nvidia.com>2013-10-17 00:56:42 -0700
commit14f2b3c9735d656ca078d15abbd2dc19effd0053 (patch)
tree9797a96ba3626e781dc50d86d3119cf67ba81488 /arch/arm/mach-tegra/board-vcm30_t124-power.c
parent05d79a0936517d9640279de72e46ac5ddc082d44 (diff)
ARM: vcm30-t124: Power: Remove un-necessary rails
For VCM30-t124, currently no support for DVFS is required and POR values of all rails other than LDO5 are correct. So use dummy-regulator instead of registering the code based on H/w team input bug 1369235 Change-Id: I52eb9fb90fa13c4fd35b570b74de9cebd5fd7788 Signed-off-by: Bhavesh Parekh <bparekh@nvidia.com> Reviewed-on: http://git-master/r/289877 GVS: Gerrit_Virtual_Submit Reviewed-by: Ashwin Joshi <asjoshi@nvidia.com> Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com>
Diffstat (limited to 'arch/arm/mach-tegra/board-vcm30_t124-power.c')
-rw-r--r--arch/arm/mach-tegra/board-vcm30_t124-power.c334
1 files changed, 15 insertions, 319 deletions
diff --git a/arch/arm/mach-tegra/board-vcm30_t124-power.c b/arch/arm/mach-tegra/board-vcm30_t124-power.c
index a8e7fa32b6d9..5ed9567f29da 100644
--- a/arch/arm/mach-tegra/board-vcm30_t124-power.c
+++ b/arch/arm/mach-tegra/board-vcm30_t124-power.c
@@ -16,21 +16,12 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <linux/i2c.h>
-#include <linux/platform_device.h>
-#include <linux/resource.h>
#include <linux/io.h>
-#include <linux/regulator/machine.h>
-#include <linux/regulator/driver.h>
-#include <linux/regulator/fixed.h>
#include <linux/mfd/max77663-core.h>
#include <linux/regulator/max77663-regulator.h>
#include <linux/regulator/max15569-regulator.h>
-#include <linux/gpio.h>
-#include <linux/interrupt.h>
-#include <linux/tegra-soc.h>
#include <mach/edp.h>
-#include <mach/gpio-tegra.h>
#include "pm.h"
#include "board.h"
@@ -45,88 +36,6 @@
#define PMC_CTRL 0x0
#define PMC_CTRL_INTR_LOW (1 << 17)
-/* FIXME: remove power supplies not in use. */
-
-/* MAX77663 consumer rails */
-static struct regulator_consumer_supply max77663_sd0_supply[] = {
- REGULATOR_SUPPLY("vddio_ddr", NULL),
- REGULATOR_SUPPLY("vddio_ddr0", NULL),
- REGULATOR_SUPPLY("vddio_ddr1", NULL),
-};
-
-static struct regulator_consumer_supply max77663_sd1_supply[] = {
- /* REGULATOR_SUPPLY("vdd_core", NULL), */
-};
-
-static struct regulator_consumer_supply max77663_sd2_supply[] = {
- REGULATOR_SUPPLY("avdd_pll_utmip", "tegra-ehci.0"),
- REGULATOR_SUPPLY("avdd_pll_utmip", "tegra-ehci.1"),
- REGULATOR_SUPPLY("avdd_pll_utmip", "tegra-ehci.2"),
- REGULATOR_SUPPLY("vddio_cam", "vi"),
- REGULATOR_SUPPLY("pwrdet_cam", NULL),
- REGULATOR_SUPPLY("avdd_osc", NULL),
- REGULATOR_SUPPLY("vddio_sdmmc", "sdhci-tegra.3"),
- REGULATOR_SUPPLY("vddio_sd_slot", "sdhci-tegra.3"),
- REGULATOR_SUPPLY("vddio_sdmmc", "sdhci-tegra.1"),
- REGULATOR_SUPPLY("vddio_sd_slot", "sdhci-tegra.1"),
- REGULATOR_SUPPLY("pwrdet_sdmmc4", NULL),
- REGULATOR_SUPPLY("vdd_emmc", NULL),
-};
-
-static struct regulator_consumer_supply max77663_sd3_supply[] = {
- REGULATOR_SUPPLY("avdd_usb", "tegra-ehci.0"),
- REGULATOR_SUPPLY("avdd_usb", "tegra-ehci.1"),
- REGULATOR_SUPPLY("avdd_usb", "tegra-ehci.2"),
- REGULATOR_SUPPLY("vddio_hv", "tegradc.1"),
- REGULATOR_SUPPLY("pwrdet_hv", NULL),
- REGULATOR_SUPPLY("vddio_bb", NULL),
- REGULATOR_SUPPLY("pwrdet_bb", NULL),
- REGULATOR_SUPPLY("vddio_audio", NULL),
- REGULATOR_SUPPLY("pwrdet_audio", NULL),
- REGULATOR_SUPPLY("vddio_uart", NULL),
- REGULATOR_SUPPLY("pwrdet_uart", NULL),
- REGULATOR_SUPPLY("vddio_gmi", NULL),
- REGULATOR_SUPPLY("avdd_hdmi", "tegradc.1"),
- REGULATOR_SUPPLY("hvdd_usb", "tegra-ehci.2"),
- REGULATOR_SUPPLY("hvdd_usb", "tegra-xhci"),
- REGULATOR_SUPPLY("hvdd_sata", NULL),
-};
-
-static struct regulator_consumer_supply max77663_sd4_supply[] = {
- REGULATOR_SUPPLY("avdd_csi_dsi", "tegradc.0"),
- REGULATOR_SUPPLY("avdd_csi_dsi", "tegradc.1"),
- REGULATOR_SUPPLY("avdd_csi_dsi", "vi"),
- REGULATOR_SUPPLY("vddio_hsic", "tegra-ehci.1"),
-};
-
-static struct regulator_consumer_supply max77663_ldo0_supply[] = {
- REGULATOR_SUPPLY("vdd_ddr_hs", NULL),
-};
-
-static struct regulator_consumer_supply max77663_ldo1_supply[] = {
- REGULATOR_SUPPLY("avdd_pllx", NULL),
- REGULATOR_SUPPLY("avdd_pllm", NULL),
- REGULATOR_SUPPLY("avdd_pllu", NULL),
- REGULATOR_SUPPLY("avdd_plle", NULL),
- REGULATOR_SUPPLY("avdd_csi_dsi_pll", "tegradc.0"),
- REGULATOR_SUPPLY("avdd_csi_dsi_pll", "tegradc.1"),
- REGULATOR_SUPPLY("avdd_csi_dsi_pll", "vi"),
-};
-
-
-static struct regulator_consumer_supply max77663_ldo2_supply[] = {
- REGULATOR_SUPPLY("avdd_hdmi_pll", "tegradc.1"),
-};
-
-static struct regulator_consumer_supply max77663_ldo3_supply[] = {
- REGULATOR_SUPPLY("vddio_sdmmc", "sdhci-tegra.0"),
- REGULATOR_SUPPLY("vddio_sd_slot", "sdhci-tegra.0"),
- REGULATOR_SUPPLY("pwrdet_sdmmc1", NULL),
-};
-
-static struct regulator_consumer_supply max77663_ldo4_supply[] = {
- REGULATOR_SUPPLY("vdd_rtc", NULL),
-};
static struct regulator_consumer_supply max77663_ldo5_supply[] = {
REGULATOR_SUPPLY("vddio_sdmmc", "sdhci-tegra.2"),
@@ -134,22 +43,6 @@ static struct regulator_consumer_supply max77663_ldo5_supply[] = {
REGULATOR_SUPPLY("pwrdet_sdmmc3", NULL),
};
-static struct regulator_consumer_supply max77663_ldo6_supply[] = {
- REGULATOR_SUPPLY("vddio_sys", NULL),
-};
-
-/* FIXME: PCI rails should be added? */
-static struct regulator_consumer_supply max77663_ldo7_supply[] = {
- REGULATOR_SUPPLY("avdd_usb", "tegra-xhci"),
- REGULATOR_SUPPLY("avdd_pll_utmip", "tegra-xhci"),
-};
-
-static struct regulator_consumer_supply max77663_ldo8_supply[] = {
- REGULATOR_SUPPLY("avdd_sata", NULL),
- REGULATOR_SUPPLY("vdd_sata", NULL),
- REGULATOR_SUPPLY("avdd_sata_pll", NULL),
-};
-
static struct max77663_regulator_fps_cfg max77663_fps_cfgs[] = {
{
.src = FPS_SRC_0,
@@ -202,92 +95,21 @@ static struct max77663_regulator_fps_cfg max77663_fps_cfgs[] = {
.flags = _flags, \
}
-/* FIXME: Revisit maximum constraint value for all supplies */
-
-MAX77663_PDATA_INIT(SD0, sd0, 600000, 3387500, NULL, 1, 0, 0,
- FPS_SRC_NONE, -1, -1, 0);
-
-MAX77663_PDATA_INIT(SD1, sd1, 800000, 1587500, NULL, 1, 1, 0,
- FPS_SRC_1, FPS_POWER_PERIOD_1, FPS_POWER_PERIOD_6, 0);
-
-MAX77663_PDATA_INIT(SD2, sd2, 1800000, 1800000, NULL, 1, 1, 0,
- FPS_SRC_0, -1, -1, 0);
-
-MAX77663_PDATA_INIT(SD3, sd3, 600000, 3387500, NULL, 1, 1, 0,
- FPS_SRC_0, -1, -1, 0);
-
-MAX77663_PDATA_INIT(SD4, sd4, 1200000, 1200000, NULL, 1, 1, 0,
- FPS_SRC_0, -1, -1, 0);
-
-MAX77663_PDATA_INIT(LDO0, ldo0, 800000, 2350000, NULL, 1, 1, 0,
- FPS_SRC_1, -1, -1, 0);
-
-MAX77663_PDATA_INIT(LDO1, ldo1, 800000, 2350000, NULL, 0, 0, 0,
- FPS_SRC_NONE, -1, -1, 0);
-
-MAX77663_PDATA_INIT(LDO2, ldo2, 800000, 3950000, NULL, 1, 1, 0,
- FPS_SRC_1, -1, -1, 0);
-
-MAX77663_PDATA_INIT(LDO3, ldo3, 800000, 3950000, NULL, 1, 1, 0,
- FPS_SRC_1, -1, -1, 0);
-
-MAX77663_PDATA_INIT(LDO4, ldo4, 1000000, 1000000, NULL, 0, 1, 0,
- FPS_SRC_0, -1, -1, 0);
-
-MAX77663_PDATA_INIT(LDO5, ldo5, 800000, 3950000, NULL, 0, 1, 0,
- FPS_SRC_NONE, -1, -1, 0);
-
-MAX77663_PDATA_INIT(LDO6, ldo6, 800000, 3950000, NULL, 0, 0, 0,
- FPS_SRC_NONE, -1, -1, 0);
-
-MAX77663_PDATA_INIT(LDO7, ldo7, 800000, 3950000, NULL, 0, 0, 0,
- FPS_SRC_NONE, -1, -1, 0);
-
-MAX77663_PDATA_INIT(LDO8, ldo8, 800000, 3950000, NULL, 0, 1, 0,
- FPS_SRC_1, -1, -1, 0);
+MAX77663_PDATA_INIT(LDO5, ldo5, 800000, 2800000, NULL, 0, 1, 0,
+ FPS_SRC_1, FPS_POWER_PERIOD_7, FPS_POWER_PERIOD_0, 0);
#define MAX77663_REG(_id, _data) (&max77663_regulator_pdata_##_data)
static struct max77663_regulator_platform_data *max77663_reg_pdata[] = {
- MAX77663_REG(SD0, sd0),
- MAX77663_REG(SD1, sd1),
- MAX77663_REG(SD2, sd2),
- MAX77663_REG(SD3, sd3),
- MAX77663_REG(SD4, sd4),
- MAX77663_REG(LDO0, ldo0),
- MAX77663_REG(LDO1, ldo1),
- MAX77663_REG(LDO2, ldo2),
- MAX77663_REG(LDO3, ldo3),
- MAX77663_REG(LDO4, ldo4),
MAX77663_REG(LDO5, ldo5),
- MAX77663_REG(LDO6, ldo6),
- MAX77663_REG(LDO7, ldo7),
- MAX77663_REG(LDO8, ldo8),
-};
-
-static struct max77663_gpio_config max77663_gpio_cfgs[] = {
- {
- .gpio = MAX77663_GPIO0,
- .dir = GPIO_DIR_OUT,
- .dout = GPIO_DOUT_LOW,
- .out_drv = GPIO_OUT_DRV_PUSH_PULL,
- .alternate = GPIO_ALT_DISABLE,
- },
- {
- .gpio = MAX77663_GPIO5,
- .dir = GPIO_DIR_OUT,
- .dout = GPIO_DOUT_LOW,
- .out_drv = GPIO_OUT_DRV_PUSH_PULL,
- .alternate = GPIO_ALT_DISABLE,
- },
};
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_gpio_cfgs = 0,
+ .gpio_cfgs = NULL,
.regulator_pdata = max77663_reg_pdata,
.num_regulator_pdata = ARRAY_SIZE(max77663_reg_pdata),
@@ -306,137 +128,6 @@ static struct i2c_board_info __initdata max77663_regulators[] = {
},
};
-/* MAX15569 switching regulator for vdd_cpu */
-static struct regulator_consumer_supply max15569_vddcpu_supply[] = {
- REGULATOR_SUPPLY("vdd_cpu", NULL),
-};
-
-static struct regulator_init_data max15569_vddcpu_init_data = {
- .constraints = {
- .min_uV = 500000,
- .max_uV = 1520000,
- .valid_modes_mask = (REGULATOR_MODE_NORMAL |
- REGULATOR_MODE_STANDBY),
- .valid_ops_mask = (REGULATOR_CHANGE_MODE |
- REGULATOR_CHANGE_STATUS |
- REGULATOR_CHANGE_CONTROL |
- REGULATOR_CHANGE_VOLTAGE),
- .always_on = 1,
- .boot_on = 1,
- .apply_uV = 0,
- },
- .num_consumer_supplies = ARRAY_SIZE(max15569_vddcpu_supply),
- .consumer_supplies = max15569_vddcpu_supply,
-};
-
-static struct max15569_regulator_platform_data max15569_vddcpu_pdata = {
- .reg_init_data = &max15569_vddcpu_init_data,
- .max_voltage_uV = 1520000,
- .base_voltage_uV = 1200000,
- .slew_rate_mv_per_us = 44,
-};
-
-static struct i2c_board_info __initdata max15569_vddcpu_boardinfo[] = {
- {
- I2C_BOARD_INFO("max15569", 0x3a),
- .platform_data = &max15569_vddcpu_pdata,
- },
-};
-
-/* MAX15569 switching regulator for vdd_core */
-static struct regulator_consumer_supply max15569_vddcore_supply[] = {
- REGULATOR_SUPPLY("vdd_core", NULL),
-};
-
-static struct regulator_init_data max15569_vddcore_init_data = {
- .constraints = {
- .min_uV = 500000,
- .max_uV = 1520000,
- .valid_modes_mask = (REGULATOR_MODE_NORMAL |
- REGULATOR_MODE_STANDBY),
- .valid_ops_mask = (REGULATOR_CHANGE_MODE |
- REGULATOR_CHANGE_STATUS |
- REGULATOR_CHANGE_CONTROL |
- REGULATOR_CHANGE_VOLTAGE),
- .always_on = 1,
- .boot_on = 1,
- .apply_uV = 0,
- },
- .num_consumer_supplies = ARRAY_SIZE(max15569_vddcore_supply),
- .consumer_supplies = max15569_vddcore_supply,
-};
-
-static struct max15569_regulator_platform_data max15569_vddcore_pdata = {
- .reg_init_data = &max15569_vddcore_init_data,
- .max_voltage_uV = 1300000,
- .base_voltage_uV = 1150000,
- .slew_rate_mv_per_us = 44,
-};
-
-static struct i2c_board_info __initdata max15569_vddcore_boardinfo[] = {
- {
- I2C_BOARD_INFO("max15569", 0x39),
- .platform_data = &max15569_vddcore_pdata,
- },
-};
-
-/* MAX15569 switching regulator for vdd_gpu */
-static struct regulator_consumer_supply max15569_vddgpu_supply[] = {
- REGULATOR_SUPPLY("vdd_gpu", NULL),
-};
-
-static struct regulator_init_data max15569_vddgpu_init_data = {
- .constraints = {
- .min_uV = 500000,
- .max_uV = 1520000,
- .valid_modes_mask = (REGULATOR_MODE_NORMAL |
- REGULATOR_MODE_STANDBY),
- .valid_ops_mask = (REGULATOR_CHANGE_MODE |
- REGULATOR_CHANGE_STATUS |
- REGULATOR_CHANGE_CONTROL |
- REGULATOR_CHANGE_VOLTAGE),
- .always_on = 0,
- .boot_on = 0,
- .apply_uV = 0,
- },
- .num_consumer_supplies = ARRAY_SIZE(max15569_vddgpu_supply),
- .consumer_supplies = max15569_vddgpu_supply,
-};
-
-static struct max15569_regulator_platform_data max15569_vddgpu_pdata = {
- .reg_init_data = &max15569_vddgpu_init_data,
- .max_voltage_uV = 1400000,
- .base_voltage_uV = 1200000,
- .slew_rate_mv_per_us = 44,
-};
-
-static struct i2c_board_info __initdata max15569_vddgpu_boardinfo[] = {
- {
- I2C_BOARD_INFO("max15569", 0x38),
- .platform_data = &max15569_vddgpu_pdata,
- },
-};
-
-static struct tegra_suspend_platform_data vcm30_t124_suspend_data = {
- .cpu_timer = 500,
- .cpu_off_timer = 300,
- .suspend_mode = TEGRA_SUSPEND_LP0,
- .core_timer = 0x157e,
- .core_off_timer = 2000,
- .corereq_high = true,
- .sysclkreq_high = true,
- .cpu_lp2_min_residency = 1000,
- .min_residency_crail = 20000,
-#ifdef CONFIG_TEGRA_LP1_LOW_COREVOLTAGE
- .lp1_lowvolt_support = false,
- .i2c_base_addr = 0,
- .pmuslave_addr = 0,
- .core_reg_addr = 0,
- .lp1_core_volt_low = 0,
- .lp1_core_volt_high = 0,
-#endif
-};
-
#ifdef CONFIG_ARCH_TEGRA_HAS_CL_DVFS
/* board parameters for cpu dfll */
static struct tegra_cl_dvfs_cfg_param vcm30_t124_cl_dvfs_param = {
@@ -451,7 +142,6 @@ static struct tegra_cl_dvfs_cfg_param vcm30_t124_cl_dvfs_param = {
.droop_restore_ramp = 0x0,
.scale_out_ramp = 0x0,
};
-#endif
/* MAX15569: fixed 10mV steps from 600mV to 1400mV, with offset 0x0b */
#define PMU_CPU_VDD_MAP_SIZE ((1400000 - 600000) / 10000 + 1)
@@ -465,8 +155,6 @@ static inline void fill_reg_map(void)
}
}
-/* FIXME: Needed? */
-#ifdef CONFIG_ARCH_TEGRA_HAS_CL_DVFS
static struct tegra_cl_dvfs_platform_data vcm30_t124_cl_dvfs_data = {
.dfll_clk_name = "dfll_cpu",
.pmu_if = TEGRA_CL_DVFS_PMU_I2C,
@@ -518,12 +206,20 @@ int __init vcm30_t124_regulator_init(void)
#endif
vcm30_t124_max77663_regulator_init();
- i2c_register_board_info(4, max15569_vddcpu_boardinfo, 1);
- i2c_register_board_info(4, max15569_vddcore_boardinfo, 1);
- i2c_register_board_info(4, max15569_vddgpu_boardinfo, 1);
return 0;
}
+static struct tegra_suspend_platform_data vcm30_t124_suspend_data = {
+ .cpu_timer = 2000,
+ .cpu_off_timer = 2000,
+ .suspend_mode = TEGRA_SUSPEND_LP0,
+ .core_timer = 0xfefe,
+ .core_off_timer = 2000,
+ .corereq_high = true,
+ .sysclkreq_high = true,
+ .cpu_lp2_min_residency = 1000,
+};
+
int __init vcm30_t124_suspend_init(void)
{
tegra_init_suspend(&vcm30_t124_suspend_data);