summaryrefslogtreecommitdiff
path: root/drivers/pinctrl
diff options
context:
space:
mode:
authorMohan T <mohant@nvidia.com>2014-01-03 00:39:18 +0530
committerBitan Biswas <bbiswas@nvidia.com>2014-01-03 11:24:12 -0800
commite41d9838c8b4a2b269b376a3e20330c07cac391e (patch)
treef4557888726cce79f065d1cba9cb8bf7a45f2db9 /drivers/pinctrl
parentf4a063081552617e72cbdda5596ae7bd537696f7 (diff)
ARM: tegra: pinmux: correct pinmux resume sequence
Do not operate on DPD pads and do not TRISTATE pins before restoring for T124 Bug 1416263 Bug 1429819 Change-Id: I7261c7e5d4341f6d74dadf1ab6af985e7965b860 Signed-off-by: Mohan T <mohant@nvidia.com> Reviewed-on: http://git-master/r/351369 Reviewed-by: Automatic_Commit_Validation_User GVS: Gerrit_Virtual_Submit Reviewed-by: Bitan Biswas <bbiswas@nvidia.com> Tested-by: Bitan Biswas <bbiswas@nvidia.com>
Diffstat (limited to 'drivers/pinctrl')
-rw-r--r--drivers/pinctrl/pinctrl-tegra124.c29
1 files changed, 16 insertions, 13 deletions
diff --git a/drivers/pinctrl/pinctrl-tegra124.c b/drivers/pinctrl/pinctrl-tegra124.c
index 2da5478b3895..24ed49f58eac 100644
--- a/drivers/pinctrl/pinctrl-tegra124.c
+++ b/drivers/pinctrl/pinctrl-tegra124.c
@@ -1,7 +1,7 @@
/*
* Pinctrl data for the NVIDIA Tegra124 pinmux
*
- * Copyright (c) 2013, NVIDIA CORPORATION. All rights reserved.
+ * Copyright (c) 2013-2014, NVIDIA CORPORATION. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU General Public License,
@@ -3329,20 +3329,23 @@ static void tegra124_pinctrl_resume(u32 *pg_data)
{
int i;
u32 *ctx = pg_data;
- u32 *tmp = pg_data;
- u32 reg_value;
-
- for (i = 0; i < ARRAY_SIZE(tegra124_groups); i++) {
- if (tegra124_groups[i].drv_reg < 0) {
- reg_value = *tmp++;
- reg_value |= BIT(4);
- tegra_pinctrl_writel(reg_value,
- tegra124_groups[i].mux_bank,
- tegra124_groups[i].mux_reg);
+
+ if (tegra_is_dpd_mode) {
+ u32 *tmp = pg_data;
+ u32 reg_value;
+ for (i = 0; i < ARRAY_SIZE(tegra124_groups); i++) {
+ if (tegra124_groups[i].drv_reg < 0) {
+ reg_value = *tmp++;
+ reg_value |= BIT(4);
+ tegra_pinctrl_writel(reg_value,
+ tegra124_groups[i].mux_bank,
+ tegra124_groups[i].mux_reg);
+ }
}
- }
- tegra_pmc_remove_dpd_req();
+ tegra_pmc_remove_dpd_req();
+ tegra_is_dpd_mode = false;
+ }
for (i = 0; i < ARRAY_SIZE(tegra124_groups); i++) {
if (tegra124_groups[i].drv_reg < 0)
tegra_pinctrl_writel(*ctx++, tegra124_groups[i].mux_bank,