summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLaxman Dewangan <ldewangan@nvidia.com>2014-05-29 17:54:41 +0530
committerMatthew Pedro <mapedro@nvidia.com>2014-09-15 10:24:53 -0700
commitc139c50c560df7e178beb83b603e499dd3652678 (patch)
tree7daf16a8d927d1f67a065ebcb6848edc819a19ec
parentb23c65a950883b6cbc16bb5a35ad856fe0ef6b09 (diff)
pinctrl: tegra: set tristate =1 and input =0 for unused pins
Set the tristate bit to 1 and e_input to 0 for unused pins to set it on low power and avoid conflict with any other pins. Bug 200033491 Change-Id: If83f6129dbf6c6fe28a7a7c596e5a3858a894914 Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com> Reviewed-on: http://git-master/r/416649 (cherry picked from commit 7e81b36f87cffdc5d473a39735877a1432ac3151) Reviewed-on: http://git-master/r/498328 GVS: Gerrit_Virtual_Submit Reviewed-by: Bibek Basu <bbasu@nvidia.com> Tested-by: Bibek Basu <bbasu@nvidia.com> Reviewed-by: Venkat Moganty <vmoganty@nvidia.com> Reviewed-by: Matthew Pedro <mapedro@nvidia.com>
-rw-r--r--drivers/pinctrl/pinctrl-tegra.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/drivers/pinctrl/pinctrl-tegra.c b/drivers/pinctrl/pinctrl-tegra.c
index 77970f48e49f..5f3a11016d85 100644
--- a/drivers/pinctrl/pinctrl-tegra.c
+++ b/drivers/pinctrl/pinctrl-tegra.c
@@ -58,6 +58,9 @@ struct tegra_pmx {
static struct tegra_pmx *pmx;
+static int tegra_pinconf_group_set(struct pinctrl_dev *pctldev,
+ unsigned group, unsigned long config);
+
static inline u32 pmx_readl(struct tegra_pmx *pmx, u32 bank, u32 reg)
{
return readl(pmx->regs[bank] + reg);
@@ -370,6 +373,21 @@ static int tegra_pinctrl_get_func_groups(struct pinctrl_dev *pctldev,
return 0;
}
+static int tegra_pinconfig_froup_set(struct pinctrl_dev *pctldev,
+ unsigned group, unsigned long param, unsigned long arg)
+{
+ unsigned long config;
+ int ret;
+
+ config = TEGRA_PINCONF_PACK(TEGRA_PINCONF_PARAM_TRISTATE, arg);
+ ret = tegra_pinconf_group_set(pctldev, group, config);
+ if (ret < 0)
+ dev_err(pctldev->dev,
+ "Pinctrl group %u tristate config failed: %d\n",
+ group, ret);
+ return ret;
+}
+
static int tegra_pinctrl_enable(struct pinctrl_dev *pctldev, unsigned req_function,
unsigned group)
{
@@ -379,6 +397,7 @@ static int tegra_pinctrl_enable(struct pinctrl_dev *pctldev, unsigned req_functi
int i;
u32 val;
unsigned long flags;
+ int ret;
g = &pmx->soc->groups[group];