diff options
author | Laxman Dewangan <ldewangan@nvidia.com> | 2011-06-14 23:47:44 +0530 |
---|---|---|
committer | Niket Sirsi <nsirsi@nvidia.com> | 2011-06-20 19:54:34 -0700 |
commit | 886517603c1576796e3a1ca349ba69efeed5ecae (patch) | |
tree | ff345430559111968b0f89aea380ea31dc28ede8 /arch | |
parent | e8b0455f37a170c89e752ee330f2290519d87b49 (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>
Diffstat (limited to 'arch')
-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) { |