summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorLaxman Dewangan <ldewangan@nvidia.com>2011-06-14 23:47:44 +0530
committerNiket Sirsi <nsirsi@nvidia.com>2011-06-20 19:54:34 -0700
commit886517603c1576796e3a1ca349ba69efeed5ecae (patch)
treeff345430559111968b0f89aea380ea31dc28ede8 /arch
parente8b0455f37a170c89e752ee330f2290519d87b49 (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.c19
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) {