ARM: tegra11: pm: disable overriding pinmux
Harry Hong [Thu, 21 Feb 2013 07:29:12 +0000 (16:29 +0900)]
By POR, sys_clk_req pad is enabled to override
pinmux setting. this pin can be set to gpio.
to avoid overriding for gpio usage, adding
sysclkreq_gpio flag. Overriding pinmux will not
 works if this flag is set to true.

bug 1236315

Change-Id: If6f30a8bfbfc272a4e303d26e2d9553e2b353bd7
Signed-off-by: Harry Hong <hhong@nvidia.com>
Reviewed-on: http://git-master/r/202855
(cherry picked from commit f96759a36d68ad17a2ac9f066f36c0b2ed10026a)
Reviewed-on: http://git-master/r/214386
Reviewed-by: Automatic_Commit_Validation_User
GVS: Gerrit_Virtual_Submit
Reviewed-by: Bo Yan <byan@nvidia.com>

arch/arm/mach-tegra/pm.c
arch/arm/mach-tegra/pm.h

index db48da4..bc28e0b 100644 (file)
@@ -3,7 +3,7 @@
  *
  * CPU complex suspend & resume functions for Tegra SoCs
  *
- * Copyright (c) 2009-2013, NVIDIA Corporation.
+ * Copyright (c) 2009-2013, NVIDIA CORPORATION.  All rights reserved.
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -134,6 +134,8 @@ struct suspend_context tegra_sctx;
 #define TEGRA_POWER_CPU_PWRREQ_OE      (1 << 16)  /* CPU power request enable */
 #define TEGRA_POWER_CPUPWRGOOD_EN      (1 << 19)  /* CPU power good enable */
 
+#define TEGRA_DPAD_ORIDE_SYS_CLK_REQ   (1 << 21)
+
 #define PMC_CTRL               0x0
 #define PMC_CTRL_LATCH_WAKEUPS (1 << 5)
 #define PMC_WAKE_MASK          0xc
@@ -1441,6 +1443,12 @@ out:
                reg |= TEGRA_POWER_PWRREQ_OE;
        pmc_32kwritel(reg, PMC_CTRL);
 
+       if (pdata->sysclkreq_gpio) {
+               reg = readl(pmc + PMC_DPAD_ORIDE);
+               reg &= ~TEGRA_DPAD_ORIDE_SYS_CLK_REQ;
+               pmc_32kwritel(reg, PMC_DPAD_ORIDE);
+       }
+
        if (pdata->suspend_mode == TEGRA_SUSPEND_LP0)
                tegra_lp0_suspend_init();
 
index a1da6ba..eeac934 100644 (file)
@@ -2,7 +2,7 @@
  * arch/arm/mach-tegra/include/mach/pm.h
  *
  * Copyright (C) 2010 Google, Inc.
- * Copyright (c) 2010-2012, NVIDIA CORPORATION.  All rights reserved.
+ * Copyright (c) 2010-2013, NVIDIA CORPORATION.  All rights reserved.
  *
  * Author:
  *     Colin Cross <ccross@google.com>
@@ -58,6 +58,7 @@ struct tegra_suspend_platform_data {
        unsigned long core_off_timer;   /* core power off time ticks, LP0 */
        bool corereq_high;         /* Core power request active-high */
        bool sysclkreq_high;       /* System clock request is active-high */
+       bool sysclkreq_gpio;       /* if System clock request is set to gpio */
        bool combined_req;         /* if core & CPU power requests are combined */
        enum tegra_suspend_mode suspend_mode;
        unsigned long cpu_lp2_min_residency; /* Min LP2 state residency in us */