summaryrefslogtreecommitdiff
path: root/arch/arm/mach-tegra/board-cardhu-power.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/mach-tegra/board-cardhu-power.c')
-rw-r--r--arch/arm/mach-tegra/board-cardhu-power.c41
1 files changed, 36 insertions, 5 deletions
diff --git a/arch/arm/mach-tegra/board-cardhu-power.c b/arch/arm/mach-tegra/board-cardhu-power.c
index ace103f5ba6b..677b38347514 100644
--- a/arch/arm/mach-tegra/board-cardhu-power.c
+++ b/arch/arm/mach-tegra/board-cardhu-power.c
@@ -538,7 +538,10 @@ static struct regulator_consumer_supply fixed_reg_en_3v3_sys_supply[] = {
REGULATOR_SUPPLY("hvdd_pex_pmu", NULL),
REGULATOR_SUPPLY("avdd_hdmi", NULL),
REGULATOR_SUPPLY("vpp_fuse", NULL),
- REGULATOR_SUPPLY("avdd_usb", NULL),
+ REGULATOR_SUPPLY("avdd_usb", "tegra-udc.0"),
+ REGULATOR_SUPPLY("avdd_usb", "tegra-ehci.0"),
+ REGULATOR_SUPPLY("avdd_usb", "tegra-ehci.1"),
+ REGULATOR_SUPPLY("avdd_usb", "tegra-ehci.2"),
REGULATOR_SUPPLY("vdd_ddr_rx", NULL),
REGULATOR_SUPPLY("vcore_nand", NULL),
REGULATOR_SUPPLY("hvdd_sata", NULL),
@@ -1131,15 +1134,25 @@ static struct tegra_suspend_platform_data cardhu_suspend_data = {
.cpu_lp2_min_residency = 2000,
.board_suspend = cardhu_board_suspend,
.board_resume = cardhu_board_resume,
+#ifdef CONFIG_TEGRA_LP1_950
+ .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
};
int __init cardhu_suspend_init(void)
{
struct board_info board_info;
struct board_info pmu_board_info;
+ struct board_info display_board_info;
tegra_get_board_info(&board_info);
tegra_get_pmu_board_info(&pmu_board_info);
+ tegra_get_display_board_info(&display_board_info);
/* For PMU Fab A03, A04 and A05 make core_pwr_req to high */
if ((pmu_board_info.fab == BOARD_FAB_A03) ||
@@ -1158,25 +1171,43 @@ int __init cardhu_suspend_init(void)
if (board_info.fab == BOARD_FAB_A03)
cardhu_suspend_data.corereq_high = true;
if (board_info.fab < BOARD_FAB_A03)
- /* post E1291-A02 revisions WAKE19/USB1-VBUS wake supported */
+ /* post E1291-A02 revisions VBUS wake supported */
tegra_disable_wake_source(TEGRA_WAKE_USB1_VBUS);
break;
case BOARD_E1198:
if (board_info.fab < BOARD_FAB_A02)
- /* post E1198-A01 revisions WAKE19/USB1-VBUS wake supported */
+ /* post E1198-A01 revisions VBUS wake supported */
tegra_disable_wake_source(TEGRA_WAKE_USB1_VBUS);
break;
case BOARD_PM269:
+#ifdef CONFIG_TEGRA_LP1_950
+ /* AP37 board supports the LP1_950mV feature */
+ if (is_display_board_dsi(display_board_info.board_id)) {
+ cardhu_suspend_data.lp1_lowvolt_support = true;
+ cardhu_suspend_data.i2c_base_addr = TEGRA_I2C5_BASE;
+ cardhu_suspend_data.pmuslave_addr = 0xC0;
+ cardhu_suspend_data.core_reg_addr = 0x03;
+ cardhu_suspend_data.lp1_core_volt_low = 0x2D;
+ cardhu_suspend_data.lp1_core_volt_high = 0x50;
+ }
+#endif
+ if (is_display_board_dsi(display_board_info.board_id))
+ cardhu_suspend_data.cpu_wake_freq = CPU_WAKE_FREQ_LOW;
case BOARD_PM305:
case BOARD_PM311:
break;
- case BOARD_E1187:
- case BOARD_E1186:
case BOARD_E1256:
case BOARD_E1257:
cardhu_suspend_data.cpu_timer = 5000;
cardhu_suspend_data.cpu_off_timer = 5000;
break;
+ case BOARD_E1187:
+ case BOARD_E1186:
+ /* VBUS repeated wakeup seen on older E1186 boards */
+ tegra_disable_wake_source(TEGRA_WAKE_USB1_VBUS);
+ cardhu_suspend_data.cpu_timer = 5000;
+ cardhu_suspend_data.cpu_off_timer = 5000;
+ break;
default:
break;
}