diff options
author | Laxman Dewangan <ldewangan@nvidia.com> | 2011-06-14 23:47:44 +0530 |
---|---|---|
committer | Dan Willemsen <dwillemsen@nvidia.com> | 2012-03-23 19:57:10 -0700 |
commit | 05274ef9cd0134eaed80b8455672649f42af5662 (patch) | |
tree | 8e064e90abb0e40781831f3746ae2bec70cd546b /arch/arm/mach-tegra/board-cardhu-power.c | |
parent | fe350c8a2b3112d7d45b1aa5a8a514c8235863a4 (diff) |
arm: tegra: cardhu: support for PMUA03/A04
The core_pwr_req signal need to be make high for the PMU A03 and A04.
bug 829846
Change-Id: Ie568a29e76823e86743893ea59953b0429cc027a
Reviewed-on: http://git-master/r/36544
Reviewed-by: Laxman Dewangan <ldewangan@nvidia.com>
Tested-by: Laxman Dewangan <ldewangan@nvidia.com>
Reviewed-by: Bitan Biswas <bbiswas@nvidia.com>
Rebase-Id: Ra97979df79f413641d2d862f982e6a7a114c2387
Diffstat (limited to 'arch/arm/mach-tegra/board-cardhu-power.c')
-rw-r--r-- | arch/arm/mach-tegra/board-cardhu-power.c | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/arch/arm/mach-tegra/board-cardhu-power.c b/arch/arm/mach-tegra/board-cardhu-power.c index eb5de88a114d..75f79c465559 100644 --- a/arch/arm/mach-tegra/board-cardhu-power.c +++ b/arch/arm/mach-tegra/board-cardhu-power.c @@ -405,6 +405,7 @@ static struct i2c_board_info __initdata tps6236x_boardinfo[] = { int __init cardhu_regulator_init(void) { struct board_info board_info; + struct board_info pmu_board_info; void __iomem *pmc = IO_ADDRESS(TEGRA_PMC_BASE); u32 pmc_ctrl; @@ -415,6 +416,8 @@ int __init cardhu_regulator_init(void) writel(pmc_ctrl | PMC_CTRL_INTR_LOW, pmc + PMC_CTRL); tegra_get_board_info(&board_info); + tegra_get_pmu_board_info(&pmu_board_info); + if ((board_info.board_id == BOARD_E1198) || (board_info.board_id == BOARD_E1291)) { if ((board_info.sku & 1) == 1) { @@ -427,7 +430,7 @@ int __init cardhu_regulator_init(void) tps_platform.subdevs = tps_devs_e1198_skubit0_0; } } else { - if ((board_info.sku & 1) == 1) { + if ((pmu_board_info.sku & 1) == 1) { tps_platform.num_subdevs = ARRAY_SIZE(tps_devs_e118x_skubit0_1); tps_platform.subdevs = tps_devs_e118x_skubit0_1; } else { @@ -447,7 +450,7 @@ int __init cardhu_regulator_init(void) i2c_register_board_info(4, cardhu_regulators, 1); /* Resgister the TPS6236x for all boards whose sku bit 0 is set. */ - if ((board_info.sku & 1) == 1) { + if (((board_info.sku & 1) == 1) || ((pmu_board_info.sku & 1) == 1)) { pr_info("Registering the device TPS62361B\n"); i2c_register_board_info(4, tps6236x_boardinfo, 1); } @@ -962,12 +965,18 @@ static struct tegra_suspend_platform_data cardhu_suspend_data = { int __init cardhu_suspend_init(void) { struct board_info board_info; + struct board_info pmu_board_info; tegra_get_board_info(&board_info); + tegra_get_pmu_board_info(&pmu_board_info); + + /* For PMU Fab A03 and A04 make core_pwr_req to high */ + if ((pmu_board_info.fab == 0x3) || (pmu_board_info.fab == 0x4)) + cardhu_suspend_data.corereq_high = true; - /* CORE_PWR_REQ to be high for all board whose sku bit 0 is set. - * This is require to enable the dc-dc converter tps62361x */ - if ((board_info.sku & 1) == 1) + /* CORE_PWR_REQ to be high for all processor/pmu board whose sku bit 0 + * is set. This is require to enable the dc-dc converter tps62361x */ + if (((board_info.sku & 1) == 1) || ((pmu_board_info.sku & 1) == 1)) cardhu_suspend_data.corereq_high = true; switch (board_info.board_id) { |