lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <1328130290-17607-3-git-send-email-swarren@nvidia.com>
Date:	Wed,  1 Feb 2012 14:04:49 -0700
From:	Stephen Warren <swarren@...dia.com>
To:	Linus Walleij <linus.walleij@...aro.org>
Cc:	linux-tegra@...r.kernel.org, linux-arm-kernel@...ts.infradead.org,
	linux-kernel@...r.kernel.org, Stephen Warren <swarren@...dia.com>
Subject: [PATCH V2 3/4] ARM: tegra: Switch to new pinctrl driver

* Rename old pinmux and new pinctrl platform driver and DT match table
  entries, so the new driver gets instantiated.
* Re-write board-pinmux.c, so that it uses pinctrl APIs to configura the
  pinmux.
* Re-write board-*-pinmux.c so that the pinmux configuration tables are
  in pinctrl format.

Ventana's pin mux table needed some edits on top of the basic format
conversion, since some mux options that were previously marked as
reserved are now valid in the new pinctrl driver. Attempting to use the
old reserved names will result in a failure. Specifically, groups lpw0,
lpw2, lsc1, lsck, and lsda were changed from function rsvd4 to displaya,
and group pta was changed from function rsvd2 to hdmi.

All boards' pin mux tables needed some edits on top of the based format
conversion, since function i2c was split into i2c1 (first general I2C
controller) and i2cp (power I2C controller) to better align function
definitions with HW blocks.

Due to the split of mux tables into pure mux and pull/tristate tables,
many entries in the separate Seaboard/Ventana tables could be merged
into the common table, since the entries differed only in the portion
in one of the tables, not both.

Most pin groups allow configuration of mux, tri-state, and pull. However,
some don't allow pull configuration, which is instead configured by new
groups that only allow pull configuration. This is a reflection of the
true HW capabilities, which weren't fully represented by the old pinmux
driver. This required adding new pull table entries for those new groups,
and setting many other entries' pull configuration to
TEGRA_PINCONFIG_DONT_SET.

Signed-off-by: Stephen Warren <swarren@...dia.com>
Acked-by: Linus Walleij <linus.walleij@...aro.org>
Acked-by: Olof Johansson <olof@...om.net>
---
 arch/arm/mach-tegra/board-harmony-pinmux.c   |  362 ++++++++++++++-------
 arch/arm/mach-tegra/board-paz00-pinmux.c     |  362 ++++++++++++++-------
 arch/arm/mach-tegra/board-pinmux.c           |   62 ++++-
 arch/arm/mach-tegra/board-pinmux.h           |   39 ++-
 arch/arm/mach-tegra/board-seaboard-pinmux.c  |  442 ++++++++++++++++---------
 arch/arm/mach-tegra/board-trimslice-pinmux.c |  366 ++++++++++++++--------
 arch/arm/mach-tegra/pinmux.c                 |    6 +-
 drivers/pinctrl/pinctrl-tegra.c              |    6 +-
 8 files changed, 1095 insertions(+), 550 deletions(-)

diff --git a/arch/arm/mach-tegra/board-harmony-pinmux.c b/arch/arm/mach-tegra/board-harmony-pinmux.c
index 465808c..9788fd0 100644
--- a/arch/arm/mach-tegra/board-harmony-pinmux.c
+++ b/arch/arm/mach-tegra/board-harmony-pinmux.c
@@ -2,6 +2,7 @@
  * arch/arm/mach-tegra/board-harmony-pinmux.c
  *
  * Copyright (C) 2010 Google, Inc.
+ * Copyright (c) 2011, NVIDIA CORPORATION.  All rights reserved.
  *
  * This software is licensed under the terms of the GNU General Public
  * License version 2, as published by the Free Software Foundation, and
@@ -15,133 +16,244 @@
  */
 
 #include <linux/kernel.h>
-#include <linux/gpio.h>
-#include <linux/of.h>
-
-#include <mach/pinmux.h>
-#include <mach/pinmux-tegra20.h>
 
 #include "gpio-names.h"
 #include "board-harmony.h"
 #include "board-pinmux.h"
 
-static struct tegra_pingroup_config harmony_pinmux[] = {
-	{TEGRA_PINGROUP_ATA,   TEGRA_MUX_IDE,           TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_ATB,   TEGRA_MUX_SDIO4,         TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_ATC,   TEGRA_MUX_NAND,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_ATD,   TEGRA_MUX_GMI,           TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_ATE,   TEGRA_MUX_GMI,           TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_CDEV1, TEGRA_MUX_PLLA_OUT,      TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_CDEV2, TEGRA_MUX_PLLP_OUT4,     TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_CRTP,  TEGRA_MUX_CRT,           TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_CSUS,  TEGRA_MUX_VI_SENSOR_CLK, TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_DAP1,  TEGRA_MUX_DAP1,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_DAP2,  TEGRA_MUX_DAP2,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_DAP3,  TEGRA_MUX_DAP3,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_DAP4,  TEGRA_MUX_DAP4,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_DDC,   TEGRA_MUX_I2C2,          TEGRA_PUPD_PULL_UP,   TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_DTA,   TEGRA_MUX_SDIO2,         TEGRA_PUPD_PULL_UP,   TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_DTB,   TEGRA_MUX_RSVD1,         TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_DTC,   TEGRA_MUX_RSVD1,         TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_DTD,   TEGRA_MUX_SDIO2,         TEGRA_PUPD_PULL_UP,   TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_DTE,   TEGRA_MUX_RSVD1,         TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_DTF,   TEGRA_MUX_I2C3,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_GMA,   TEGRA_MUX_SDIO4,         TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_GMB,   TEGRA_MUX_GMI,           TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_GMC,   TEGRA_MUX_UARTD,         TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_GMD,   TEGRA_MUX_GMI,           TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_GME,   TEGRA_MUX_SDIO4,         TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_GPU,   TEGRA_MUX_GMI,           TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_GPU7,  TEGRA_MUX_RTCK,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_GPV,   TEGRA_MUX_PCIE,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_HDINT, TEGRA_MUX_HDMI,          TEGRA_PUPD_PULL_UP,   TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_I2CP,  TEGRA_MUX_I2C,           TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_IRRX,  TEGRA_MUX_UARTA,         TEGRA_PUPD_PULL_UP,   TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_IRTX,  TEGRA_MUX_UARTA,         TEGRA_PUPD_PULL_UP,   TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_KBCA,  TEGRA_MUX_KBC,           TEGRA_PUPD_PULL_UP,   TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_KBCB,  TEGRA_MUX_KBC,           TEGRA_PUPD_PULL_UP,   TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_KBCC,  TEGRA_MUX_KBC,           TEGRA_PUPD_PULL_UP,   TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_KBCD,  TEGRA_MUX_KBC,           TEGRA_PUPD_PULL_UP,   TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_KBCE,  TEGRA_MUX_KBC,           TEGRA_PUPD_PULL_UP,   TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_KBCF,  TEGRA_MUX_KBC,           TEGRA_PUPD_PULL_UP,   TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LCSN,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_UP,   TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_LD0,   TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LD1,   TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LD10,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LD11,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LD12,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LD13,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LD14,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LD15,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LD16,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LD17,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LD2,   TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LD3,   TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LD4,   TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LD5,   TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LD6,   TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LD7,   TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LD8,   TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LD9,   TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LDC,   TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_UP,   TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_LDI,   TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LHP0,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LHP1,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LHP2,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LHS,   TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_UP,   TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LM0,   TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_UP,   TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LM1,   TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_UP,   TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_LPP,   TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LPW0,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_UP,   TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LPW1,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_UP,   TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_LPW2,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_UP,   TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LSC0,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_UP,   TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LSC1,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_UP,   TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_LSCK,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_UP,   TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_LSDA,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_UP,   TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_LSDI,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_UP,   TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_LSPI,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_UP,   TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LVP0,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_UP,   TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_LVP1,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LVS,   TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_UP,   TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_OWC,   TEGRA_MUX_RSVD2,         TEGRA_PUPD_PULL_UP,   TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_PMC,   TEGRA_MUX_PWR_ON,        TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_PTA,   TEGRA_MUX_HDMI,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_RM,    TEGRA_MUX_I2C,           TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_SDB,   TEGRA_MUX_PWM,           TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_SDC,   TEGRA_MUX_PWM,           TEGRA_PUPD_PULL_UP,   TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_SDD,   TEGRA_MUX_PWM,           TEGRA_PUPD_PULL_UP,   TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_SDIO1, TEGRA_MUX_SDIO1,         TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_SLXA,  TEGRA_MUX_PCIE,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_SLXC,  TEGRA_MUX_SPDIF,         TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_SLXD,  TEGRA_MUX_SPDIF,         TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_SLXK,  TEGRA_MUX_PCIE,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_SPDI,  TEGRA_MUX_RSVD2,         TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_SPDO,  TEGRA_MUX_RSVD2,         TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_SPIA,  TEGRA_MUX_GMI,           TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_SPIB,  TEGRA_MUX_GMI,           TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_SPIC,  TEGRA_MUX_GMI,           TEGRA_PUPD_PULL_UP,   TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_SPID,  TEGRA_MUX_SPI1,          TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_SPIE,  TEGRA_MUX_SPI1,          TEGRA_PUPD_PULL_UP,   TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_SPIF,  TEGRA_MUX_SPI1,          TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_SPIG,  TEGRA_MUX_SPI2_ALT,      TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_SPIH,  TEGRA_MUX_SPI2_ALT,      TEGRA_PUPD_PULL_UP,   TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_UAA,   TEGRA_MUX_ULPI,          TEGRA_PUPD_PULL_UP,   TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_UAB,   TEGRA_MUX_ULPI,          TEGRA_PUPD_PULL_UP,   TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_UAC,   TEGRA_MUX_RSVD2,         TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_UAD,   TEGRA_MUX_IRDA,          TEGRA_PUPD_PULL_UP,   TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_UCA,   TEGRA_MUX_UARTC,         TEGRA_PUPD_PULL_UP,   TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_UCB,   TEGRA_MUX_UARTC,         TEGRA_PUPD_PULL_UP,   TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_UDA,   TEGRA_MUX_ULPI,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_CK32,  TEGRA_MUX_NONE,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_DDRC,  TEGRA_MUX_NONE,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_PMCA,  TEGRA_MUX_NONE,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_PMCB,  TEGRA_MUX_NONE,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_PMCC,  TEGRA_MUX_NONE,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_PMCD,  TEGRA_MUX_NONE,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_PMCE,  TEGRA_MUX_NONE,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_XM2C,  TEGRA_MUX_NONE,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_XM2D,  TEGRA_MUX_NONE,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
+static struct pinmux_map harmony_map[] = {
+	TEGRA_PINMUX_MAP("ata",   "ide"),
+	TEGRA_PINMUX_MAP("atb",   "sdio4"),
+	TEGRA_PINMUX_MAP("atc",   "nand"),
+	TEGRA_PINMUX_MAP("atd",   "gmi"),
+	TEGRA_PINMUX_MAP("ate",   "gmi"),
+	TEGRA_PINMUX_MAP("cdev1", "plla_out"),
+	TEGRA_PINMUX_MAP("cdev2", "pllp_out4"),
+	TEGRA_PINMUX_MAP("crtp",  "crt"),
+	TEGRA_PINMUX_MAP("csus",  "vi_sensor_clk"),
+	TEGRA_PINMUX_MAP("dap1",  "dap1"),
+	TEGRA_PINMUX_MAP("dap2",  "dap2"),
+	TEGRA_PINMUX_MAP("dap3",  "dap3"),
+	TEGRA_PINMUX_MAP("dap4",  "dap4"),
+	TEGRA_PINMUX_MAP("ddc",   "i2c2"),
+	TEGRA_PINMUX_MAP("dta",   "sdio2"),
+	TEGRA_PINMUX_MAP("dtb",   "rsvd1"),
+	TEGRA_PINMUX_MAP("dtc",   "rsvd1"),
+	TEGRA_PINMUX_MAP("dtd",   "sdio2"),
+	TEGRA_PINMUX_MAP("dte",   "rsvd1"),
+	TEGRA_PINMUX_MAP("dtf",   "i2c3"),
+	TEGRA_PINMUX_MAP("gma",   "sdio4"),
+	TEGRA_PINMUX_MAP("gmb",   "gmi"),
+	TEGRA_PINMUX_MAP("gmc",   "uartd"),
+	TEGRA_PINMUX_MAP("gmd",   "gmi"),
+	TEGRA_PINMUX_MAP("gme",   "sdio4"),
+	TEGRA_PINMUX_MAP("gpu",   "gmi"),
+	TEGRA_PINMUX_MAP("gpu7",  "rtck"),
+	TEGRA_PINMUX_MAP("gpv",   "pcie"),
+	TEGRA_PINMUX_MAP("hdint", "hdmi"),
+	TEGRA_PINMUX_MAP("i2cp",  "i2cp"),
+	TEGRA_PINMUX_MAP("irrx",  "uarta"),
+	TEGRA_PINMUX_MAP("irtx",  "uarta"),
+	TEGRA_PINMUX_MAP("kbca",  "kbc"),
+	TEGRA_PINMUX_MAP("kbcb",  "kbc"),
+	TEGRA_PINMUX_MAP("kbcc",  "kbc"),
+	TEGRA_PINMUX_MAP("kbcd",  "kbc"),
+	TEGRA_PINMUX_MAP("kbce",  "kbc"),
+	TEGRA_PINMUX_MAP("kbcf",  "kbc"),
+	TEGRA_PINMUX_MAP("lcsn",  "displaya"),
+	TEGRA_PINMUX_MAP("ld0",   "displaya"),
+	TEGRA_PINMUX_MAP("ld1",   "displaya"),
+	TEGRA_PINMUX_MAP("ld2",   "displaya"),
+	TEGRA_PINMUX_MAP("ld3",   "displaya"),
+	TEGRA_PINMUX_MAP("ld4",   "displaya"),
+	TEGRA_PINMUX_MAP("ld5",   "displaya"),
+	TEGRA_PINMUX_MAP("ld6",   "displaya"),
+	TEGRA_PINMUX_MAP("ld7",   "displaya"),
+	TEGRA_PINMUX_MAP("ld8",   "displaya"),
+	TEGRA_PINMUX_MAP("ld9",   "displaya"),
+	TEGRA_PINMUX_MAP("ld10",  "displaya"),
+	TEGRA_PINMUX_MAP("ld11",  "displaya"),
+	TEGRA_PINMUX_MAP("ld12",  "displaya"),
+	TEGRA_PINMUX_MAP("ld13",  "displaya"),
+	TEGRA_PINMUX_MAP("ld14",  "displaya"),
+	TEGRA_PINMUX_MAP("ld15",  "displaya"),
+	TEGRA_PINMUX_MAP("ld16",  "displaya"),
+	TEGRA_PINMUX_MAP("ld17",  "displaya"),
+	TEGRA_PINMUX_MAP("ldc",   "displaya"),
+	TEGRA_PINMUX_MAP("ldi",   "displaya"),
+	TEGRA_PINMUX_MAP("lhp0",  "displaya"),
+	TEGRA_PINMUX_MAP("lhp1",  "displaya"),
+	TEGRA_PINMUX_MAP("lhp2",  "displaya"),
+	TEGRA_PINMUX_MAP("lhs",   "displaya"),
+	TEGRA_PINMUX_MAP("lm0",   "displaya"),
+	TEGRA_PINMUX_MAP("lm1",   "displaya"),
+	TEGRA_PINMUX_MAP("lpp",   "displaya"),
+	TEGRA_PINMUX_MAP("lpw0",  "displaya"),
+	TEGRA_PINMUX_MAP("lpw1",  "displaya"),
+	TEGRA_PINMUX_MAP("lpw2",  "displaya"),
+	TEGRA_PINMUX_MAP("lsc0",  "displaya"),
+	TEGRA_PINMUX_MAP("lsc1",  "displaya"),
+	TEGRA_PINMUX_MAP("lsck",  "displaya"),
+	TEGRA_PINMUX_MAP("lsda",  "displaya"),
+	TEGRA_PINMUX_MAP("lsdi",  "displaya"),
+	TEGRA_PINMUX_MAP("lspi",  "displaya"),
+	TEGRA_PINMUX_MAP("lvp0",  "displaya"),
+	TEGRA_PINMUX_MAP("lvp1",  "displaya"),
+	TEGRA_PINMUX_MAP("lvs",   "displaya"),
+	TEGRA_PINMUX_MAP("owc",   "rsvd2"),
+	TEGRA_PINMUX_MAP("pmc",   "pwr_on"),
+	TEGRA_PINMUX_MAP("pta",   "hdmi"),
+	TEGRA_PINMUX_MAP("rm",    "i2c1"),
+	TEGRA_PINMUX_MAP("sdb",   "pwm"),
+	TEGRA_PINMUX_MAP("sdc",   "pwm"),
+	TEGRA_PINMUX_MAP("sdd",   "pwm"),
+	TEGRA_PINMUX_MAP("sdio1", "sdio1"),
+	TEGRA_PINMUX_MAP("slxa",  "pcie"),
+	TEGRA_PINMUX_MAP("slxc",  "spdif"),
+	TEGRA_PINMUX_MAP("slxd",  "spdif"),
+	TEGRA_PINMUX_MAP("slxk",  "pcie"),
+	TEGRA_PINMUX_MAP("spdi",  "rsvd2"),
+	TEGRA_PINMUX_MAP("spdo",  "rsvd2"),
+	TEGRA_PINMUX_MAP("spia",  "gmi"),
+	TEGRA_PINMUX_MAP("spib",  "gmi"),
+	TEGRA_PINMUX_MAP("spic",  "gmi"),
+	TEGRA_PINMUX_MAP("spid",  "spi1"),
+	TEGRA_PINMUX_MAP("spie",  "spi1"),
+	TEGRA_PINMUX_MAP("spif",  "spi1"),
+	TEGRA_PINMUX_MAP("spig",  "spi2_alt"),
+	TEGRA_PINMUX_MAP("spih",  "spi2_alt"),
+	TEGRA_PINMUX_MAP("uaa",   "ulpi"),
+	TEGRA_PINMUX_MAP("uab",   "ulpi"),
+	TEGRA_PINMUX_MAP("uac",   "rsvd2"),
+	TEGRA_PINMUX_MAP("uad",   "irda"),
+	TEGRA_PINMUX_MAP("uca",   "uartc"),
+	TEGRA_PINMUX_MAP("ucb",   "uartc"),
+	TEGRA_PINMUX_MAP("uda",   "ulpi"),
+};
+
+struct tegra_board_pinmux_pg_conf harmony_pg[] = {
+	{"ata",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"atb",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"atc",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"atd",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"ate",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"cdev1",   TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"cdev2",   TEGRA_PINCONFIG_PULL_DOWN, TEGRA_PINCONFIG_TRISTATE},
+	{"crtp",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_TRISTATE},
+	{"csus",    TEGRA_PINCONFIG_PULL_DOWN, TEGRA_PINCONFIG_TRISTATE},
+	{"dap1",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"dap2",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_TRISTATE},
+	{"dap3",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_TRISTATE},
+	{"dap4",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_TRISTATE},
+	{"ddc",     TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_DRIVEN},
+	{"dta",     TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_DRIVEN},
+	{"dtb",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"dtc",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_TRISTATE},
+	{"dtd",     TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_DRIVEN},
+	{"dte",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_TRISTATE},
+	{"dtf",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_TRISTATE},
+	{"gma",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"gmb",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"gmc",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"gmd",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"gme",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"gpu",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_TRISTATE},
+	{"gpu7",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"gpv",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_TRISTATE},
+	{"hdint",   TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_TRISTATE},
+	{"i2cp",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"irrx",    TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_TRISTATE},
+	{"irtx",    TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_TRISTATE},
+	{"kbca",    TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_DRIVEN},
+	{"kbcb",    TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_DRIVEN},
+	{"kbcc",    TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_DRIVEN},
+	{"kbcd",    TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_DRIVEN},
+	{"kbce",    TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_DRIVEN},
+	{"kbcf",    TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_DRIVEN},
+	{"lcsn",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_TRISTATE},
+	{"ld0",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ld1",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ld2",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ld3",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ld4",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ld5",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ld6",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ld7",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ld8",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ld9",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ld10",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ld11",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ld12",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ld13",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ld14",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ld15",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ld16",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ld17",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ldc",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_TRISTATE},
+	{"ldi",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"lhp0",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"lhp1",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"lhp2",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"lhs",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"lm0",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"lm1",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_TRISTATE},
+	{"lpp",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"lpw0",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"lpw1",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_TRISTATE},
+	{"lpw2",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"lsc0",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"lsc1",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_TRISTATE},
+	{"lsck",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_TRISTATE},
+	{"lsda",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_TRISTATE},
+	{"lsdi",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_TRISTATE},
+	{"lspi",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"lvp0",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_TRISTATE},
+	{"lvp1",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"lvs",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"owc",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_TRISTATE},
+	{"pmc",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"pta",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"rm",      TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"sdb",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_TRISTATE},
+	{"sdc",     TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_DRIVEN},
+	{"sdd",     TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_TRISTATE},
+	{"sdio1",   TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_TRISTATE},
+	{"slxa",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_TRISTATE},
+	{"slxc",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_TRISTATE},
+	{"slxd",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_TRISTATE},
+	{"slxk",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_TRISTATE},
+	{"spdi",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_TRISTATE},
+	{"spdo",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_TRISTATE},
+	{"spia",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"spib",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"spic",    TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_TRISTATE},
+	{"spid",    TEGRA_PINCONFIG_PULL_DOWN, TEGRA_PINCONFIG_TRISTATE},
+	{"spie",    TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_TRISTATE},
+	{"spif",    TEGRA_PINCONFIG_PULL_DOWN, TEGRA_PINCONFIG_TRISTATE},
+	{"spig",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_TRISTATE},
+	{"spih",    TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_TRISTATE},
+	{"uaa",     TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_TRISTATE},
+	{"uab",     TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_TRISTATE},
+	{"uac",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_TRISTATE},
+	{"uad",     TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_TRISTATE},
+	{"uca",     TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_TRISTATE},
+	{"ucb",     TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_TRISTATE},
+	{"uda",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_TRISTATE},
+	{"ck32",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DONT_SET},
+	{"ddrc",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DONT_SET},
+	{"pmca",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DONT_SET},
+	{"pmcb",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DONT_SET},
+	{"pmcc",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DONT_SET},
+	{"pmcd",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DONT_SET},
+	{"pmce",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DONT_SET},
+	{"xm2c",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DONT_SET},
+	{"xm2d",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DONT_SET},
+	{"ls",      TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_DONT_SET},
+	{"lc",      TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_DONT_SET},
+	{"ld17_0",  TEGRA_PINCONFIG_PULL_DOWN, TEGRA_PINCONFIG_DONT_SET},
+	{"ld19_18", TEGRA_PINCONFIG_PULL_DOWN, TEGRA_PINCONFIG_DONT_SET},
+	{"ld21_20", TEGRA_PINCONFIG_PULL_DOWN, TEGRA_PINCONFIG_DONT_SET},
+	{"ld23_22", TEGRA_PINCONFIG_PULL_DOWN, TEGRA_PINCONFIG_DONT_SET},
 };
 
 static struct tegra_gpio_table gpio_table[] = {
@@ -158,8 +270,10 @@ static struct tegra_gpio_table gpio_table[] = {
 };
 
 static struct tegra_board_pinmux_conf conf = {
-	.pgs = harmony_pinmux,
-	.pg_count = ARRAY_SIZE(harmony_pinmux),
+	.maps = harmony_map,
+	.map_count = ARRAY_SIZE(harmony_map),
+	.pgs = harmony_pg,
+	.pg_count = ARRAY_SIZE(harmony_pg),
 	.gpios = gpio_table,
 	.gpio_count = ARRAY_SIZE(gpio_table),
 };
diff --git a/arch/arm/mach-tegra/board-paz00-pinmux.c b/arch/arm/mach-tegra/board-paz00-pinmux.c
index c775572..0a93f1b 100644
--- a/arch/arm/mach-tegra/board-paz00-pinmux.c
+++ b/arch/arm/mach-tegra/board-paz00-pinmux.c
@@ -2,6 +2,7 @@
  * arch/arm/mach-tegra/board-paz00-pinmux.c
  *
  * Copyright (C) 2010 Marc Dietrich <marvin24@....de>
+ * Copyright (c) 2011, NVIDIA CORPORATION.  All rights reserved.
  *
  * This software is licensed under the terms of the GNU General Public
  * License version 2, as published by the Free Software Foundation, and
@@ -15,133 +16,244 @@
  */
 
 #include <linux/kernel.h>
-#include <linux/gpio.h>
-#include <linux/of.h>
-
-#include <mach/pinmux.h>
-#include <mach/pinmux-tegra20.h>
 
 #include "gpio-names.h"
 #include "board-paz00.h"
 #include "board-pinmux.h"
 
-static struct tegra_pingroup_config paz00_pinmux[] = {
-	{TEGRA_PINGROUP_ATA,   TEGRA_MUX_GMI,           TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_ATB,   TEGRA_MUX_SDIO4,         TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_ATC,   TEGRA_MUX_GMI,           TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_ATD,   TEGRA_MUX_GMI,           TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_ATE,   TEGRA_MUX_GMI,           TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_CDEV1, TEGRA_MUX_PLLA_OUT,      TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_CDEV2, TEGRA_MUX_PLLP_OUT4,     TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_CRTP,  TEGRA_MUX_CRT,           TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_CSUS,  TEGRA_MUX_PLLC_OUT1,     TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_DAP1,  TEGRA_MUX_DAP1,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_DAP2,  TEGRA_MUX_GMI,           TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_DAP3,  TEGRA_MUX_DAP3,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_DAP4,  TEGRA_MUX_DAP4,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_DDC,   TEGRA_MUX_I2C2,          TEGRA_PUPD_PULL_UP,   TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_DTA,   TEGRA_MUX_RSVD1,         TEGRA_PUPD_PULL_UP,   TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_DTB,   TEGRA_MUX_RSVD1,         TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_DTC,   TEGRA_MUX_RSVD1,         TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_DTD,   TEGRA_MUX_RSVD1,         TEGRA_PUPD_PULL_UP,   TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_DTE,   TEGRA_MUX_RSVD1,         TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_DTF,   TEGRA_MUX_I2C3,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_GMA,   TEGRA_MUX_SDIO4,         TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_GMB,   TEGRA_MUX_GMI,           TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_GMC,   TEGRA_MUX_GMI,           TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_GMD,   TEGRA_MUX_GMI,           TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_GME,   TEGRA_MUX_SDIO4,         TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_GPU,   TEGRA_MUX_PWM,           TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_GPU7,  TEGRA_MUX_RTCK,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_GPV,   TEGRA_MUX_PCIE,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_HDINT, TEGRA_MUX_HDMI,          TEGRA_PUPD_PULL_UP,   TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_I2CP,  TEGRA_MUX_I2C,           TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_IRRX,  TEGRA_MUX_UARTA,         TEGRA_PUPD_PULL_UP,   TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_IRTX,  TEGRA_MUX_UARTA,         TEGRA_PUPD_PULL_UP,   TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_KBCA,  TEGRA_MUX_KBC,           TEGRA_PUPD_PULL_UP,   TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_KBCB,  TEGRA_MUX_SDIO2,         TEGRA_PUPD_PULL_UP,   TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_KBCC,  TEGRA_MUX_KBC,           TEGRA_PUPD_PULL_UP,   TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_KBCD,  TEGRA_MUX_SDIO2,         TEGRA_PUPD_PULL_UP,   TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_KBCE,  TEGRA_MUX_KBC,           TEGRA_PUPD_PULL_UP,   TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_KBCF,  TEGRA_MUX_KBC,           TEGRA_PUPD_PULL_UP,   TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LCSN,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_UP,   TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_LD0,   TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LD1,   TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LD10,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LD11,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LD12,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LD13,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LD14,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LD15,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LD16,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LD17,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LD2,   TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LD3,   TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LD4,   TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LD5,   TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LD6,   TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LD7,   TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LD8,   TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LD9,   TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LDC,   TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_UP,   TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LDI,   TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LHP0,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_LHP1,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_LHP2,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_LHS,   TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_UP,   TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LM0,   TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_UP,   TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_LM1,   TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_UP,   TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_LPP,   TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_LPW0,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_UP,   TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_LPW1,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_UP,   TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_LPW2,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_UP,   TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_LSC0,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_UP,   TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LSC1,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_UP,   TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_LSCK,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_UP,   TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_LSDA,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_UP,   TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_LSDI,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_UP,   TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_LSPI,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_UP,   TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LVP0,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_UP,   TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_LVP1,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_LVS,   TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_UP,   TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_OWC,   TEGRA_MUX_OWR,           TEGRA_PUPD_PULL_UP,   TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_PMC,   TEGRA_MUX_PWR_ON,        TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_PTA,   TEGRA_MUX_HDMI,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_RM,    TEGRA_MUX_I2C,           TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_SDB,   TEGRA_MUX_PWM,           TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_SDC,   TEGRA_MUX_TWC,           TEGRA_PUPD_PULL_UP,   TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_SDD,   TEGRA_MUX_PWM,           TEGRA_PUPD_PULL_UP,   TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_SDIO1, TEGRA_MUX_SDIO1,         TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_SLXA,  TEGRA_MUX_PCIE,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_SLXC,  TEGRA_MUX_SPI4,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_SLXD,  TEGRA_MUX_SPI4,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_SLXK,  TEGRA_MUX_PCIE,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_SPDI,  TEGRA_MUX_RSVD2,         TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_SPDO,  TEGRA_MUX_RSVD2,         TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_SPIA,  TEGRA_MUX_GMI,           TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_SPIB,  TEGRA_MUX_GMI,           TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_SPIC,  TEGRA_MUX_GMI,           TEGRA_PUPD_PULL_UP,   TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_SPID,  TEGRA_MUX_GMI,           TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_SPIE,  TEGRA_MUX_GMI,           TEGRA_PUPD_PULL_UP,   TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_SPIF,  TEGRA_MUX_RSVD4,         TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_SPIG,  TEGRA_MUX_SPI2_ALT,      TEGRA_PUPD_PULL_UP,   TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_SPIH,  TEGRA_MUX_SPI2_ALT,      TEGRA_PUPD_PULL_UP,   TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_UAA,   TEGRA_MUX_ULPI,          TEGRA_PUPD_PULL_UP,   TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_UAB,   TEGRA_MUX_ULPI,          TEGRA_PUPD_PULL_UP,   TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_UAC,   TEGRA_MUX_RSVD4,         TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_UAD,   TEGRA_MUX_SPDIF,         TEGRA_PUPD_PULL_UP,   TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_UCA,   TEGRA_MUX_UARTC,         TEGRA_PUPD_PULL_UP,   TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_UCB,   TEGRA_MUX_UARTC,         TEGRA_PUPD_PULL_UP,   TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_UDA,   TEGRA_MUX_ULPI,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_CK32,  TEGRA_MUX_NONE,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_DDRC,  TEGRA_MUX_NONE,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_PMCA,  TEGRA_MUX_NONE,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_PMCB,  TEGRA_MUX_NONE,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_PMCC,  TEGRA_MUX_NONE,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_PMCD,  TEGRA_MUX_NONE,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_PMCE,  TEGRA_MUX_NONE,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_XM2C,  TEGRA_MUX_NONE,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_XM2D,  TEGRA_MUX_NONE,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
+static struct pinmux_map paz00_map[] = {
+	TEGRA_PINMUX_MAP("ata",   "gmi"),
+	TEGRA_PINMUX_MAP("atb",   "sdio4"),
+	TEGRA_PINMUX_MAP("atc",   "gmi"),
+	TEGRA_PINMUX_MAP("atd",   "gmi"),
+	TEGRA_PINMUX_MAP("ate",   "gmi"),
+	TEGRA_PINMUX_MAP("cdev1", "plla_out"),
+	TEGRA_PINMUX_MAP("cdev2", "pllp_out4"),
+	TEGRA_PINMUX_MAP("crtp",  "crt"),
+	TEGRA_PINMUX_MAP("csus",  "pllc_out1"),
+	TEGRA_PINMUX_MAP("dap1",  "dap1"),
+	TEGRA_PINMUX_MAP("dap2",  "gmi"),
+	TEGRA_PINMUX_MAP("dap3",  "dap3"),
+	TEGRA_PINMUX_MAP("dap4",  "dap4"),
+	TEGRA_PINMUX_MAP("ddc",   "i2c2"),
+	TEGRA_PINMUX_MAP("dta",   "rsvd1"),
+	TEGRA_PINMUX_MAP("dtb",   "rsvd1"),
+	TEGRA_PINMUX_MAP("dtc",   "rsvd1"),
+	TEGRA_PINMUX_MAP("dtd",   "rsvd1"),
+	TEGRA_PINMUX_MAP("dte",   "rsvd1"),
+	TEGRA_PINMUX_MAP("dtf",   "i2c3"),
+	TEGRA_PINMUX_MAP("gma",   "sdio4"),
+	TEGRA_PINMUX_MAP("gmb",   "gmi"),
+	TEGRA_PINMUX_MAP("gmc",   "gmi"),
+	TEGRA_PINMUX_MAP("gmd",   "gmi"),
+	TEGRA_PINMUX_MAP("gme",   "sdio4"),
+	TEGRA_PINMUX_MAP("gpu",   "pwm"),
+	TEGRA_PINMUX_MAP("gpu7",  "rtck"),
+	TEGRA_PINMUX_MAP("gpv",   "pcie"),
+	TEGRA_PINMUX_MAP("hdint", "hdmi"),
+	TEGRA_PINMUX_MAP("i2cp",  "i2cp"),
+	TEGRA_PINMUX_MAP("irrx",  "uarta"),
+	TEGRA_PINMUX_MAP("irtx",  "uarta"),
+	TEGRA_PINMUX_MAP("kbca",  "kbc"),
+	TEGRA_PINMUX_MAP("kbcb",  "sdio2"),
+	TEGRA_PINMUX_MAP("kbcc",  "kbc"),
+	TEGRA_PINMUX_MAP("kbcd",  "sdio2"),
+	TEGRA_PINMUX_MAP("kbce",  "kbc"),
+	TEGRA_PINMUX_MAP("kbcf",  "kbc"),
+	TEGRA_PINMUX_MAP("lcsn",  "displaya"),
+	TEGRA_PINMUX_MAP("ld0",   "displaya"),
+	TEGRA_PINMUX_MAP("ld1",   "displaya"),
+	TEGRA_PINMUX_MAP("ld2",   "displaya"),
+	TEGRA_PINMUX_MAP("ld3",   "displaya"),
+	TEGRA_PINMUX_MAP("ld4",   "displaya"),
+	TEGRA_PINMUX_MAP("ld5",   "displaya"),
+	TEGRA_PINMUX_MAP("ld6",   "displaya"),
+	TEGRA_PINMUX_MAP("ld7",   "displaya"),
+	TEGRA_PINMUX_MAP("ld8",   "displaya"),
+	TEGRA_PINMUX_MAP("ld9",   "displaya"),
+	TEGRA_PINMUX_MAP("ld10",  "displaya"),
+	TEGRA_PINMUX_MAP("ld11",  "displaya"),
+	TEGRA_PINMUX_MAP("ld12",  "displaya"),
+	TEGRA_PINMUX_MAP("ld13",  "displaya"),
+	TEGRA_PINMUX_MAP("ld14",  "displaya"),
+	TEGRA_PINMUX_MAP("ld15",  "displaya"),
+	TEGRA_PINMUX_MAP("ld16",  "displaya"),
+	TEGRA_PINMUX_MAP("ld17",  "displaya"),
+	TEGRA_PINMUX_MAP("ldc",   "displaya"),
+	TEGRA_PINMUX_MAP("ldi",   "displaya"),
+	TEGRA_PINMUX_MAP("lhp0",  "displaya"),
+	TEGRA_PINMUX_MAP("lhp1",  "displaya"),
+	TEGRA_PINMUX_MAP("lhp2",  "displaya"),
+	TEGRA_PINMUX_MAP("lhs",   "displaya"),
+	TEGRA_PINMUX_MAP("lm0",   "displaya"),
+	TEGRA_PINMUX_MAP("lm1",   "displaya"),
+	TEGRA_PINMUX_MAP("lpp",   "displaya"),
+	TEGRA_PINMUX_MAP("lpw0",  "displaya"),
+	TEGRA_PINMUX_MAP("lpw1",  "displaya"),
+	TEGRA_PINMUX_MAP("lpw2",  "displaya"),
+	TEGRA_PINMUX_MAP("lsc0",  "displaya"),
+	TEGRA_PINMUX_MAP("lsc1",  "displaya"),
+	TEGRA_PINMUX_MAP("lsck",  "displaya"),
+	TEGRA_PINMUX_MAP("lsda",  "displaya"),
+	TEGRA_PINMUX_MAP("lsdi",  "displaya"),
+	TEGRA_PINMUX_MAP("lspi",  "displaya"),
+	TEGRA_PINMUX_MAP("lvp0",  "displaya"),
+	TEGRA_PINMUX_MAP("lvp1",  "displaya"),
+	TEGRA_PINMUX_MAP("lvs",   "displaya"),
+	TEGRA_PINMUX_MAP("owc",   "owr"),
+	TEGRA_PINMUX_MAP("pmc",   "pwr_on"),
+	TEGRA_PINMUX_MAP("pta",   "hdmi"),
+	TEGRA_PINMUX_MAP("rm",    "i2c1"),
+	TEGRA_PINMUX_MAP("sdb",   "pwm"),
+	TEGRA_PINMUX_MAP("sdc",   "twc"),
+	TEGRA_PINMUX_MAP("sdd",   "pwm"),
+	TEGRA_PINMUX_MAP("sdio1", "sdio1"),
+	TEGRA_PINMUX_MAP("slxa",  "pcie"),
+	TEGRA_PINMUX_MAP("slxc",  "spi4"),
+	TEGRA_PINMUX_MAP("slxd",  "spi4"),
+	TEGRA_PINMUX_MAP("slxk",  "pcie"),
+	TEGRA_PINMUX_MAP("spdi",  "rsvd2"),
+	TEGRA_PINMUX_MAP("spdo",  "rsvd2"),
+	TEGRA_PINMUX_MAP("spia",  "gmi"),
+	TEGRA_PINMUX_MAP("spib",  "gmi"),
+	TEGRA_PINMUX_MAP("spic",  "gmi"),
+	TEGRA_PINMUX_MAP("spid",  "gmi"),
+	TEGRA_PINMUX_MAP("spie",  "gmi"),
+	TEGRA_PINMUX_MAP("spif",  "rsvd4"),
+	TEGRA_PINMUX_MAP("spig",  "spi2_alt"),
+	TEGRA_PINMUX_MAP("spih",  "spi2_alt"),
+	TEGRA_PINMUX_MAP("uaa",   "ulpi"),
+	TEGRA_PINMUX_MAP("uab",   "ulpi"),
+	TEGRA_PINMUX_MAP("uac",   "rsvd4"),
+	TEGRA_PINMUX_MAP("uad",   "spdif"),
+	TEGRA_PINMUX_MAP("uca",   "uartc"),
+	TEGRA_PINMUX_MAP("ucb",   "uartc"),
+	TEGRA_PINMUX_MAP("uda",   "ulpi"),
+};
+
+static struct tegra_board_pinmux_pg_conf paz00_pg[] = {
+	{"ata",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"atb",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"atc",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"atd",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"ate",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"cdev1",   TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"cdev2",   TEGRA_PINCONFIG_PULL_DOWN, TEGRA_PINCONFIG_DRIVEN},
+	{"crtp",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_TRISTATE},
+	{"csus",    TEGRA_PINCONFIG_PULL_DOWN, TEGRA_PINCONFIG_TRISTATE},
+	{"dap1",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"dap2",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"dap3",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_TRISTATE},
+	{"dap4",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_TRISTATE},
+	{"ddc",     TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_DRIVEN},
+	{"dta",     TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_TRISTATE},
+	{"dtb",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_TRISTATE},
+	{"dtc",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_TRISTATE},
+	{"dtd",     TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_TRISTATE},
+	{"dte",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_TRISTATE},
+	{"dtf",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"gma",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"gmb",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"gmc",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"gmd",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"gme",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"gpu",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"gpu7",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"gpv",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"hdint",   TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"i2cp",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"irrx",    TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_DRIVEN},
+	{"irtx",    TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_DRIVEN},
+	{"kbca",    TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_DRIVEN},
+	{"kbcb",    TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_DRIVEN},
+	{"kbcc",    TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_DRIVEN},
+	{"kbcd",    TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_DRIVEN},
+	{"kbce",    TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_DRIVEN},
+	{"kbcf",    TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_DRIVEN},
+	{"lcsn",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_TRISTATE},
+	{"ld0",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ld1",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ld2",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ld3",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ld4",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ld5",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ld6",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ld7",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ld8",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ld9",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ld10",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ld11",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ld12",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ld13",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ld14",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ld15",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ld16",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ld17",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ldc",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ldi",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"lhp0",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_TRISTATE},
+	{"lhp1",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_TRISTATE},
+	{"lhp2",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_TRISTATE},
+	{"lhs",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"lm0",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_TRISTATE},
+	{"lm1",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_TRISTATE},
+	{"lpp",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_TRISTATE},
+	{"lpw0",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_TRISTATE},
+	{"lpw1",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_TRISTATE},
+	{"lpw2",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_TRISTATE},
+	{"lsc0",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"lsc1",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_TRISTATE},
+	{"lsck",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_TRISTATE},
+	{"lsda",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_TRISTATE},
+	{"lsdi",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_TRISTATE},
+	{"lspi",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"lvp0",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_TRISTATE},
+	{"lvp1",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_TRISTATE},
+	{"lvs",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"owc",     TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_TRISTATE},
+	{"pmc",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"pta",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"rm",      TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"sdb",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_TRISTATE},
+	{"sdc",     TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_TRISTATE},
+	{"sdd",     TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_TRISTATE},
+	{"sdio1",   TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"slxa",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_TRISTATE},
+	{"slxc",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_TRISTATE},
+	{"slxd",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_TRISTATE},
+	{"slxk",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"spdi",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_TRISTATE},
+	{"spdo",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"spia",    TEGRA_PINCONFIG_PULL_DOWN, TEGRA_PINCONFIG_TRISTATE},
+	{"spib",    TEGRA_PINCONFIG_PULL_DOWN, TEGRA_PINCONFIG_TRISTATE},
+	{"spic",    TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_DRIVEN},
+	{"spid",    TEGRA_PINCONFIG_PULL_DOWN, TEGRA_PINCONFIG_TRISTATE},
+	{"spie",    TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_TRISTATE},
+	{"spif",    TEGRA_PINCONFIG_PULL_DOWN, TEGRA_PINCONFIG_TRISTATE},
+	{"spig",    TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_DRIVEN},
+	{"spih",    TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_TRISTATE},
+	{"uaa",     TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_DRIVEN},
+	{"uab",     TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_DRIVEN},
+	{"uac",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"uad",     TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_TRISTATE},
+	{"uca",     TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_TRISTATE},
+	{"ucb",     TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_TRISTATE},
+	{"uda",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"ck32",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DONT_SET},
+	{"ddrc",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DONT_SET},
+	{"pmca",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DONT_SET},
+	{"pmcb",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DONT_SET},
+	{"pmcc",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DONT_SET},
+	{"pmcd",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DONT_SET},
+	{"pmce",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DONT_SET},
+	{"xm2c",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DONT_SET},
+	{"xm2d",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DONT_SET},
+	{"ls",      TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_DONT_SET},
+	{"lc",      TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_DONT_SET},
+	{"ld17_0",  TEGRA_PINCONFIG_PULL_DOWN, TEGRA_PINCONFIG_DONT_SET},
+	{"ld19_18", TEGRA_PINCONFIG_PULL_DOWN, TEGRA_PINCONFIG_DONT_SET},
+	{"ld21_20", TEGRA_PINCONFIG_PULL_DOWN, TEGRA_PINCONFIG_DONT_SET},
+	{"ld23_22", TEGRA_PINCONFIG_PULL_DOWN, TEGRA_PINCONFIG_DONT_SET},
 };
 
 static struct tegra_gpio_table gpio_table[] = {
@@ -155,8 +267,10 @@ static struct tegra_gpio_table gpio_table[] = {
 };
 
 static struct tegra_board_pinmux_conf conf = {
-	.pgs = paz00_pinmux,
-	.pg_count = ARRAY_SIZE(paz00_pinmux),
+	.maps = paz00_map,
+	.map_count = ARRAY_SIZE(paz00_map),
+	.pgs = paz00_pg,
+	.pg_count = ARRAY_SIZE(paz00_pg),
 	.gpios = gpio_table,
 	.gpio_count = ARRAY_SIZE(gpio_table),
 };
diff --git a/arch/arm/mach-tegra/board-pinmux.c b/arch/arm/mach-tegra/board-pinmux.c
index adc3efe..4e18e14 100644
--- a/arch/arm/mach-tegra/board-pinmux.c
+++ b/arch/arm/mach-tegra/board-pinmux.c
@@ -16,10 +16,10 @@
 #include <linux/kernel.h>
 #include <linux/notifier.h>
 #include <linux/of.h>
+#include <linux/pinctrl/pinconf.h>
 #include <linux/string.h>
 
 #include <mach/gpio-tegra.h>
-#include <mach/pinmux.h>
 
 #include "board-pinmux.h"
 #include "devices.h"
@@ -38,19 +38,58 @@ static void tegra_board_pinmux_setup_gpios(void)
 	}
 }
 
+static inline void tegra_board_pinmux_conf(const char *group, u16 param,
+					   u16 arg)
+{
+	if (arg == TEGRA_PINCONFIG_DONT_SET)
+		return;
+	pin_config_group_set(PINMUX_DEV, group, TEGRA_PINCONF_PACK(param, arg));
+}
+
 static void tegra_board_pinmux_setup_pinmux(void)
 {
-	int i;
+	int i, j;
+	const char *group;
 
 	for (i = 0; i < ARRAY_SIZE(confs); i++) {
 		if (!confs[i])
 			continue;
 
-		tegra_pinmux_config_table(confs[i]->pgs, confs[i]->pg_count);
-
-		if (confs[i]->drives)
-			tegra_drive_pinmux_config_table(confs[i]->drives,
-							confs[i]->drive_count);
+		for (j = 0; j < confs[i]->pg_count; j++) {
+			group = confs[i]->pgs[j].group;
+			tegra_board_pinmux_conf(group,
+				TEGRA_PINCONF_PARAM_PULL,
+				confs[i]->pgs[j].pull);
+			tegra_board_pinmux_conf(group,
+				TEGRA_PINCONF_PARAM_TRISTATE,
+				confs[i]->pgs[j].tristate);
+		}
+
+		for (j = 0; j < confs[i]->drive_count; j++) {
+			group = confs[i]->drives[j].group;
+
+			tegra_board_pinmux_conf(group,
+				TEGRA_PINCONF_PARAM_HIGH_SPEED_MODE,
+				confs[i]->drives[j].high_speed_mode);
+			tegra_board_pinmux_conf(group,
+				TEGRA_PINCONF_PARAM_SCHMITT,
+				confs[i]->drives[j].schmitt);
+			tegra_board_pinmux_conf(group,
+				TEGRA_PINCONF_PARAM_LOW_POWER_MODE,
+				confs[i]->drives[j].low_power_mode);
+			tegra_board_pinmux_conf(group,
+				TEGRA_PINCONF_PARAM_DRIVE_DOWN_STRENGTH,
+				confs[i]->drives[j].drive_down_strength);
+			tegra_board_pinmux_conf(group,
+				TEGRA_PINCONF_PARAM_DRIVE_UP_STRENGTH,
+				confs[i]->drives[j].drive_up_strength);
+			tegra_board_pinmux_conf(group,
+				TEGRA_PINCONF_PARAM_SLEW_RATE_FALLING,
+				confs[i]->drives[j].slew_falling);
+			tegra_board_pinmux_conf(group,
+				TEGRA_PINCONF_PARAM_SLEW_RATE_RISING,
+				confs[i]->drives[j].slew_rising);
+		}
 	}
 }
 
@@ -94,9 +133,18 @@ static struct platform_device *devices[] = {
 void tegra_board_pinmux_init(struct tegra_board_pinmux_conf *conf_a,
 			     struct tegra_board_pinmux_conf *conf_b)
 {
+	int i;
+
 	confs[0] = conf_a;
 	confs[1] = conf_b;
 
+	for (i = 0; i < ARRAY_SIZE(confs); i++) {
+		if (!confs[i])
+			continue;
+
+		pinmux_register_mappings(confs[i]->maps, confs[i]->map_count);
+	}
+
 	bus_register_notifier(&platform_bus_type, &nb);
 
 	if (!of_machine_is_compatible("nvidia,tegra20"))
diff --git a/arch/arm/mach-tegra/board-pinmux.h b/arch/arm/mach-tegra/board-pinmux.h
index 4aac735..22c9a6e 100644
--- a/arch/arm/mach-tegra/board-pinmux.h
+++ b/arch/arm/mach-tegra/board-pinmux.h
@@ -15,17 +15,48 @@
 #ifndef __MACH_TEGRA_BOARD_PINMUX_H
 #define __MACH_TEGRA_BOARD_PINMUX_H
 
+#include <linux/pinctrl/machine.h>
+
+#include <mach/pinconf-tegra.h>
+
 #define GPIO_DEV "tegra-gpio"
 #define PINMUX_DEV "tegra-pinmux"
 
-struct tegra_pingroup_config;
-struct tegra_gpio_table;
+#define TEGRA_PINMUX_MAP(_group_, _function_) {	\
+	.name = _group_,			\
+	.ctrl_dev_name = PINMUX_DEV,		\
+	.group = _group_,			\
+	.function = _function_,			\
+	.hog_on_boot = true,			\
+}
+
+#define TEGRA_PINCONFIG_DONT_SET 0xffff
+
+struct tegra_board_pinmux_pg_conf {
+	const char *group;
+	u16 pull;
+	u16 tristate;
+};
+
+struct tegra_board_pinmux_drive_conf {
+	const char *group;
+	u16 high_speed_mode;
+	u16 schmitt;
+	u16 low_power_mode;
+	u16 drive_down_strength;
+	u16 drive_up_strength;
+	u16 slew_falling;
+	u16 slew_rising;
+};
 
 struct tegra_board_pinmux_conf {
-	struct tegra_pingroup_config *pgs;
+	struct pinmux_map *maps;
+	int map_count;
+
+	struct tegra_board_pinmux_pg_conf *pgs;
 	int pg_count;
 
-	struct tegra_drive_pingroup_config *drives;
+	struct tegra_board_pinmux_drive_conf *drives;
 	int drive_count;
 
 	struct tegra_gpio_table *gpios;
diff --git a/arch/arm/mach-tegra/board-seaboard-pinmux.c b/arch/arm/mach-tegra/board-seaboard-pinmux.c
index 55e7e43..eefc113 100644
--- a/arch/arm/mach-tegra/board-seaboard-pinmux.c
+++ b/arch/arm/mach-tegra/board-seaboard-pinmux.c
@@ -14,169 +14,287 @@
  */
 
 #include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/gpio.h>
-#include <linux/of.h>
-
-#include <mach/pinmux.h>
-#include <mach/pinmux-tegra20.h>
 
 #include "gpio-names.h"
-#include "board-pinmux.h"
 #include "board-seaboard.h"
+#include "board-pinmux.h"
 
-#define DEFAULT_DRIVE(_name)					\
-	{							\
-		.pingroup = TEGRA_DRIVE_PINGROUP_##_name,	\
-		.hsm = TEGRA_HSM_DISABLE,			\
-		.schmitt = TEGRA_SCHMITT_ENABLE,		\
-		.drive = TEGRA_DRIVE_DIV_1,			\
-		.pull_down = TEGRA_PULL_31,			\
-		.pull_up = TEGRA_PULL_31,			\
-		.slew_rising = TEGRA_SLEW_SLOWEST,		\
-		.slew_falling = TEGRA_SLEW_SLOWEST,		\
+#define DEFAULT_DRIVE(name)			\
+	{					\
+		.group = name,			\
+		.high_speed_mode = 0,		\
+		.schmitt = 0,			\
+		.low_power_mode = 3,		\
+		.drive_down_strength = 31,	\
+		.drive_up_strength = 31,	\
+		.slew_falling = 3,		\
+		.slew_rising = 3,		\
 	}
 
-static struct tegra_drive_pingroup_config seaboard_drive_pinmux[] = {
-	DEFAULT_DRIVE(SDIO1),
+static struct tegra_board_pinmux_drive_conf seaboard_drive[] = {
+	DEFAULT_DRIVE("drive_sdio1"),
+};
+
+static struct pinmux_map common_map[] = {
+	TEGRA_PINMUX_MAP("ata",   "ide"),
+	TEGRA_PINMUX_MAP("atb",   "sdio4"),
+	TEGRA_PINMUX_MAP("atc",   "nand"),
+	TEGRA_PINMUX_MAP("atd",   "gmi"),
+	TEGRA_PINMUX_MAP("ate",   "gmi"),
+	TEGRA_PINMUX_MAP("cdev1", "plla_out"),
+	TEGRA_PINMUX_MAP("cdev2", "pllp_out4"),
+	TEGRA_PINMUX_MAP("crtp",  "crt"),
+	TEGRA_PINMUX_MAP("csus",  "vi_sensor_clk"),
+	TEGRA_PINMUX_MAP("dap1",  "dap1"),
+	TEGRA_PINMUX_MAP("dap2",  "dap2"),
+	TEGRA_PINMUX_MAP("dap3",  "dap3"),
+	TEGRA_PINMUX_MAP("dap4",  "dap4"),
+	TEGRA_PINMUX_MAP("ddc",   "rsvd2"),
+	TEGRA_PINMUX_MAP("dta",   "vi"),
+	TEGRA_PINMUX_MAP("dtb",   "vi"),
+	TEGRA_PINMUX_MAP("dtc",   "vi"),
+	TEGRA_PINMUX_MAP("dtd",   "vi"),
+	TEGRA_PINMUX_MAP("dte",   "vi"),
+	TEGRA_PINMUX_MAP("dtf",   "i2c3"),
+	TEGRA_PINMUX_MAP("gma",   "sdio4"),
+	TEGRA_PINMUX_MAP("gmb",   "gmi"),
+	TEGRA_PINMUX_MAP("gmc",   "uartd"),
+	TEGRA_PINMUX_MAP("gmd",   "sflash"),
+	TEGRA_PINMUX_MAP("gme",   "sdio4"),
+	TEGRA_PINMUX_MAP("gpu",   "pwm"),
+	TEGRA_PINMUX_MAP("gpu7",  "rtck"),
+	TEGRA_PINMUX_MAP("gpv",   "pcie"),
+	TEGRA_PINMUX_MAP("hdint", "hdmi"),
+	TEGRA_PINMUX_MAP("i2cp",  "i2cp"),
+	TEGRA_PINMUX_MAP("irrx",  "uartb"),
+	TEGRA_PINMUX_MAP("irtx",  "uartb"),
+	TEGRA_PINMUX_MAP("kbca",  "kbc"),
+	TEGRA_PINMUX_MAP("kbcb",  "kbc"),
+	TEGRA_PINMUX_MAP("kbcc",  "kbc"),
+	TEGRA_PINMUX_MAP("kbcd",  "kbc"),
+	TEGRA_PINMUX_MAP("kbce",  "kbc"),
+	TEGRA_PINMUX_MAP("kbcf",  "kbc"),
+	TEGRA_PINMUX_MAP("lcsn",  "rsvd4"),
+	TEGRA_PINMUX_MAP("ld0",   "displaya"),
+	TEGRA_PINMUX_MAP("ld1",   "displaya"),
+	TEGRA_PINMUX_MAP("ld2",   "displaya"),
+	TEGRA_PINMUX_MAP("ld3",   "displaya"),
+	TEGRA_PINMUX_MAP("ld4",   "displaya"),
+	TEGRA_PINMUX_MAP("ld5",   "displaya"),
+	TEGRA_PINMUX_MAP("ld6",   "displaya"),
+	TEGRA_PINMUX_MAP("ld7",   "displaya"),
+	TEGRA_PINMUX_MAP("ld8",   "displaya"),
+	TEGRA_PINMUX_MAP("ld9",   "displaya"),
+	TEGRA_PINMUX_MAP("ld10",  "displaya"),
+	TEGRA_PINMUX_MAP("ld11",  "displaya"),
+	TEGRA_PINMUX_MAP("ld12",  "displaya"),
+	TEGRA_PINMUX_MAP("ld13",  "displaya"),
+	TEGRA_PINMUX_MAP("ld14",  "displaya"),
+	TEGRA_PINMUX_MAP("ld15",  "displaya"),
+	TEGRA_PINMUX_MAP("ld16",  "displaya"),
+	TEGRA_PINMUX_MAP("ld17",  "displaya"),
+	TEGRA_PINMUX_MAP("ldc",   "rsvd4"),
+	TEGRA_PINMUX_MAP("ldi",   "displaya"),
+	TEGRA_PINMUX_MAP("lhp0",  "displaya"),
+	TEGRA_PINMUX_MAP("lhp1",  "displaya"),
+	TEGRA_PINMUX_MAP("lhp2",  "displaya"),
+	TEGRA_PINMUX_MAP("lhs",   "displaya"),
+	TEGRA_PINMUX_MAP("lm0",   "rsvd4"),
+	TEGRA_PINMUX_MAP("lm1",   "crt"),
+	TEGRA_PINMUX_MAP("lpp",   "displaya"),
+	TEGRA_PINMUX_MAP("lpw1",  "rsvd4"),
+	TEGRA_PINMUX_MAP("lsc0",  "displaya"),
+	TEGRA_PINMUX_MAP("lsdi",  "rsvd4"),
+	TEGRA_PINMUX_MAP("lspi",  "displaya"),
+	TEGRA_PINMUX_MAP("lvp0",  "rsvd4"),
+	TEGRA_PINMUX_MAP("lvp1",  "displaya"),
+	TEGRA_PINMUX_MAP("lvs",   "displaya"),
+	TEGRA_PINMUX_MAP("owc",   "rsvd2"),
+	TEGRA_PINMUX_MAP("pmc",   "pwr_on"),
+	TEGRA_PINMUX_MAP("pta",   "hdmi"),
+	TEGRA_PINMUX_MAP("rm",    "i2c1"),
+	TEGRA_PINMUX_MAP("sdb",   "sdio3"),
+	TEGRA_PINMUX_MAP("sdc",   "sdio3"),
+	TEGRA_PINMUX_MAP("sdd",   "sdio3"),
+	TEGRA_PINMUX_MAP("sdio1", "sdio1"),
+	TEGRA_PINMUX_MAP("slxa",  "pcie"),
+	TEGRA_PINMUX_MAP("slxd",  "spdif"),
+	TEGRA_PINMUX_MAP("spdi",  "rsvd2"),
+	TEGRA_PINMUX_MAP("spdo",  "rsvd2"),
+	TEGRA_PINMUX_MAP("spia",  "gmi"),
+	TEGRA_PINMUX_MAP("spib",  "gmi"),
+	TEGRA_PINMUX_MAP("spic",  "gmi"),
+	TEGRA_PINMUX_MAP("spid",  "spi1"),
+	TEGRA_PINMUX_MAP("spie",  "spi1"),
+	TEGRA_PINMUX_MAP("spif",  "spi1"),
+	TEGRA_PINMUX_MAP("spig",  "spi2_alt"),
+	TEGRA_PINMUX_MAP("spih",  "spi2_alt"),
+	TEGRA_PINMUX_MAP("uaa",   "ulpi"),
+	TEGRA_PINMUX_MAP("uab",   "ulpi"),
+	TEGRA_PINMUX_MAP("uac",   "rsvd2"),
+	TEGRA_PINMUX_MAP("uad",   "irda"),
+	TEGRA_PINMUX_MAP("uca",   "uartc"),
+	TEGRA_PINMUX_MAP("ucb",   "uartc"),
+	TEGRA_PINMUX_MAP("uda",   "ulpi"),
+};
+
+static struct pinmux_map seaboard_map[] = {
+	TEGRA_PINMUX_MAP("lpw0",  "hdmi"),
+	TEGRA_PINMUX_MAP("lpw2",  "hdmi"),
+	TEGRA_PINMUX_MAP("lsc1",  "hdmi"),
+	TEGRA_PINMUX_MAP("lsck",  "hdmi"),
+	TEGRA_PINMUX_MAP("lsda",  "hdmi"),
+	TEGRA_PINMUX_MAP("slxc",  "spdif"),
+	TEGRA_PINMUX_MAP("slxk",  "pcie"),
+};
+
+static struct pinmux_map ventana_map[] = {
+	TEGRA_PINMUX_MAP("lpw0",  "displaya"),
+	TEGRA_PINMUX_MAP("lpw2",  "displaya"),
+	TEGRA_PINMUX_MAP("lsc1",  "displaya"),
+	TEGRA_PINMUX_MAP("lsck",  "displaya"),
+	TEGRA_PINMUX_MAP("lsda",  "displaya"),
+	TEGRA_PINMUX_MAP("slxc",  "sdio3"),
+	TEGRA_PINMUX_MAP("slxk",  "sdio3"),
 };
 
-static struct tegra_pingroup_config common_pinmux[] = {
-	{TEGRA_PINGROUP_ATA,   TEGRA_MUX_IDE,           TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_ATB,   TEGRA_MUX_SDIO4,         TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_ATC,   TEGRA_MUX_NAND,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_ATD,   TEGRA_MUX_GMI,           TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_ATE,   TEGRA_MUX_GMI,           TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_CDEV1, TEGRA_MUX_PLLA_OUT,      TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_CDEV2, TEGRA_MUX_PLLP_OUT4,     TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_CRTP,  TEGRA_MUX_CRT,           TEGRA_PUPD_PULL_UP,   TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_CSUS,  TEGRA_MUX_VI_SENSOR_CLK, TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_DAP1,  TEGRA_MUX_DAP1,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_DAP2,  TEGRA_MUX_DAP2,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_DAP3,  TEGRA_MUX_DAP3,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_DAP4,  TEGRA_MUX_DAP4,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_DTA,   TEGRA_MUX_VI,            TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_DTB,   TEGRA_MUX_VI,            TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_DTC,   TEGRA_MUX_VI,            TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_DTD,   TEGRA_MUX_VI,            TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_DTE,   TEGRA_MUX_VI,            TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_DTF,   TEGRA_MUX_I2C3,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_GMA,   TEGRA_MUX_SDIO4,         TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_GMB,   TEGRA_MUX_GMI,           TEGRA_PUPD_PULL_UP,   TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_GMC,   TEGRA_MUX_UARTD,         TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_GME,   TEGRA_MUX_SDIO4,         TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_GPU,   TEGRA_MUX_PWM,           TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_GPU7,  TEGRA_MUX_RTCK,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_GPV,   TEGRA_MUX_PCIE,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_HDINT, TEGRA_MUX_HDMI,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_I2CP,  TEGRA_MUX_I2C,           TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_IRRX,  TEGRA_MUX_UARTB,         TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_IRTX,  TEGRA_MUX_UARTB,         TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_KBCA,  TEGRA_MUX_KBC,           TEGRA_PUPD_PULL_UP,   TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_KBCB,  TEGRA_MUX_KBC,           TEGRA_PUPD_PULL_UP,   TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_KBCC,  TEGRA_MUX_KBC,           TEGRA_PUPD_PULL_UP,   TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_KBCD,  TEGRA_MUX_KBC,           TEGRA_PUPD_PULL_UP,   TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_KBCE,  TEGRA_MUX_KBC,           TEGRA_PUPD_PULL_UP,   TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_KBCF,  TEGRA_MUX_KBC,           TEGRA_PUPD_PULL_UP,   TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LCSN,  TEGRA_MUX_RSVD4,         TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_LD0,   TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LD1,   TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LD10,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LD11,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LD12,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LD13,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LD14,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LD15,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LD16,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LD17,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LD2,   TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LD3,   TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LD4,   TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LD5,   TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LD6,   TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LD7,   TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LD8,   TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LD9,   TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LDC,   TEGRA_MUX_RSVD4,         TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_LDI,   TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LHP0,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LHP1,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LHP2,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LHS,   TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LM0,   TEGRA_MUX_RSVD4,         TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LM1,   TEGRA_MUX_CRT,           TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_LPP,   TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LPW1,  TEGRA_MUX_RSVD4,         TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_LSC0,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LSDI,  TEGRA_MUX_RSVD4,         TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_LSPI,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LVP0,  TEGRA_MUX_RSVD4,         TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_LVP1,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LVS,   TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_OWC,   TEGRA_MUX_RSVD2,         TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_PMC,   TEGRA_MUX_PWR_ON,        TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_RM,    TEGRA_MUX_I2C,           TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_SDB,   TEGRA_MUX_SDIO3,         TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_SDC,   TEGRA_MUX_SDIO3,         TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_SDD,   TEGRA_MUX_SDIO3,         TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_SDIO1, TEGRA_MUX_SDIO1,         TEGRA_PUPD_PULL_UP,   TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_SLXA,  TEGRA_MUX_PCIE,          TEGRA_PUPD_PULL_UP,   TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_SLXD,  TEGRA_MUX_SPDIF,         TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_SPDI,  TEGRA_MUX_RSVD2,         TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_SPDO,  TEGRA_MUX_RSVD2,         TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_SPIB,  TEGRA_MUX_GMI,           TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_SPID,  TEGRA_MUX_SPI1,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_SPIE,  TEGRA_MUX_SPI1,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_SPIF,  TEGRA_MUX_SPI1,          TEGRA_PUPD_PULL_DOWN, TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_SPIH,  TEGRA_MUX_SPI2_ALT,      TEGRA_PUPD_PULL_UP,   TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_UAA,   TEGRA_MUX_ULPI,          TEGRA_PUPD_PULL_UP,   TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_UAB,   TEGRA_MUX_ULPI,          TEGRA_PUPD_PULL_UP,   TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_UAC,   TEGRA_MUX_RSVD2,         TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_UAD,   TEGRA_MUX_IRDA,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_UCA,   TEGRA_MUX_UARTC,         TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_UCB,   TEGRA_MUX_UARTC,         TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_UDA,   TEGRA_MUX_ULPI,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_CK32,  TEGRA_MUX_NONE,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_DDRC,  TEGRA_MUX_NONE,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_PMCA,  TEGRA_MUX_NONE,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_PMCB,  TEGRA_MUX_NONE,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_PMCC,  TEGRA_MUX_NONE,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_PMCD,  TEGRA_MUX_NONE,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_PMCE,  TEGRA_MUX_NONE,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_XM2C,  TEGRA_MUX_NONE,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_XM2D,  TEGRA_MUX_NONE,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
+static struct tegra_board_pinmux_pg_conf common_pg[] = {
+	{"ata",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"atb",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"atc",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"atd",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"ate",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_TRISTATE},
+	{"cdev1",   TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"cdev2",   TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"crtp",    TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_TRISTATE},
+	{"csus",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_TRISTATE},
+	{"dap1",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"dap2",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"dap3",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_TRISTATE},
+	{"dap4",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"dta",     TEGRA_PINCONFIG_PULL_DOWN, TEGRA_PINCONFIG_DRIVEN},
+	{"dtb",     TEGRA_PINCONFIG_PULL_DOWN, TEGRA_PINCONFIG_DRIVEN},
+	{"dtc",     TEGRA_PINCONFIG_PULL_DOWN, TEGRA_PINCONFIG_DRIVEN},
+	{"dtd",     TEGRA_PINCONFIG_PULL_DOWN, TEGRA_PINCONFIG_DRIVEN},
+	{"dte",     TEGRA_PINCONFIG_PULL_DOWN, TEGRA_PINCONFIG_TRISTATE},
+	{"dtf",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"gma",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"gmb",     TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_TRISTATE},
+	{"gmc",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"gme",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"gpu",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"gpu7",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"gpv",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_TRISTATE},
+	{"hdint",   TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_TRISTATE},
+	{"i2cp",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"irrx",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"irtx",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"kbca",    TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_DRIVEN},
+	{"kbcb",    TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_DRIVEN},
+	{"kbcc",    TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_DRIVEN},
+	{"kbcd",    TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_DRIVEN},
+	{"kbce",    TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_DRIVEN},
+	{"kbcf",    TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_DRIVEN},
+	{"lcsn",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_TRISTATE},
+	{"ld0",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ld1",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ld2",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ld3",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ld4",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ld5",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ld6",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ld7",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ld8",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ld9",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ld10",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ld11",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ld12",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ld13",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ld14",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ld15",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ld16",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ld17",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ldc",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_TRISTATE},
+	{"ldi",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"lhp0",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"lhp1",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"lhp2",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"lhs",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"lm0",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"lm1",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_TRISTATE},
+	{"lpp",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"lpw0",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"lpw1",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_TRISTATE},
+	{"lpw2",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"lsc0",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"lsck",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_TRISTATE},
+	{"lsda",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_TRISTATE},
+	{"lsdi",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_TRISTATE},
+	{"lspi",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"lvp0",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_TRISTATE},
+	{"lvp1",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"lvs",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"owc",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_TRISTATE},
+	{"pmc",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"rm",      TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"sdb",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"sdc",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"sdd",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"sdio1",   TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_DRIVEN},
+	{"slxa",    TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_TRISTATE},
+	{"slxd",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"slxk",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"spdi",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"spdo",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"spib",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_TRISTATE},
+	{"spid",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_TRISTATE},
+	{"spie",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_TRISTATE},
+	{"spif",    TEGRA_PINCONFIG_PULL_DOWN, TEGRA_PINCONFIG_TRISTATE},
+	{"spih",    TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_TRISTATE},
+	{"uaa",     TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_DRIVEN},
+	{"uab",     TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_DRIVEN},
+	{"uac",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"uad",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"uca",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"ucb",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"uda",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"ck32",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DONT_SET},
+	{"ddrc",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DONT_SET},
+	{"pmca",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DONT_SET},
+	{"pmcb",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DONT_SET},
+	{"pmcc",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DONT_SET},
+	{"pmcd",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DONT_SET},
+	{"pmce",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DONT_SET},
+	{"xm2c",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DONT_SET},
+	{"xm2d",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DONT_SET},
+	{"ls",      TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DONT_SET},
+	{"lc",      TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DONT_SET},
+	{"ld17_0",  TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DONT_SET},
+	{"ld19_18", TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DONT_SET},
+	{"ld21_20", TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DONT_SET},
+	{"ld23_22", TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DONT_SET},
 };
 
-static struct tegra_pingroup_config seaboard_pinmux[] = {
-	{TEGRA_PINGROUP_DDC,   TEGRA_MUX_RSVD2,         TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_GMD,   TEGRA_MUX_SFLASH,        TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LPW0,  TEGRA_MUX_HDMI,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LPW2,  TEGRA_MUX_HDMI,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LSC1,  TEGRA_MUX_HDMI,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_LSCK,  TEGRA_MUX_HDMI,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_LSDA,  TEGRA_MUX_HDMI,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_PTA,   TEGRA_MUX_HDMI,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_SLXC,  TEGRA_MUX_SPDIF,         TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_SLXK,  TEGRA_MUX_PCIE,          TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_SPIA,  TEGRA_MUX_GMI,           TEGRA_PUPD_PULL_UP,   TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_SPIC,  TEGRA_MUX_GMI,           TEGRA_PUPD_PULL_UP,   TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_SPIG,  TEGRA_MUX_SPI2_ALT,      TEGRA_PUPD_PULL_UP,   TEGRA_TRI_TRISTATE},
+static struct tegra_board_pinmux_pg_conf seaboard_pg[] = {
+	{"ddc",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_TRISTATE},
+	{"gmd",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"lsc1",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_TRISTATE},
+	{"pta",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"slxc",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_TRISTATE},
+	{"spia",    TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_TRISTATE},
+	{"spic",    TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_DRIVEN},
+	{"spig",    TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_TRISTATE},
 };
 
-static struct tegra_pingroup_config ventana_pinmux[] = {
-	{TEGRA_PINGROUP_DDC,  TEGRA_MUX_RSVD2,    TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_GMD,  TEGRA_MUX_SFLASH,   TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_LPW0, TEGRA_MUX_RSVD4,    TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LPW2, TEGRA_MUX_RSVD4,    TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LSC1, TEGRA_MUX_RSVD4,    TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LSCK, TEGRA_MUX_RSVD4,    TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_LSDA, TEGRA_MUX_RSVD4,    TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_PTA,  TEGRA_MUX_RSVD2,    TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_SLXC, TEGRA_MUX_SDIO3,    TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_SLXK, TEGRA_MUX_SDIO3,    TEGRA_PUPD_NORMAL,    TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_SPIA, TEGRA_MUX_GMI,      TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_SPIC, TEGRA_MUX_GMI,      TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_SPIG, TEGRA_MUX_SPI2_ALT, TEGRA_PUPD_NORMAL,    TEGRA_TRI_TRISTATE},
+static struct tegra_board_pinmux_pg_conf ventana_pg[] = {
+	{"ddc",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"gmd",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_TRISTATE},
+	{"lsc1",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"pta",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"slxc",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"spia",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_TRISTATE},
+	{"spic",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_TRISTATE},
+	{"spig",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_TRISTATE},
 };
 
 static struct tegra_gpio_table common_gpio_table[] = {
@@ -204,24 +322,30 @@ static struct tegra_gpio_table ventana_gpio_table[] = {
 };
 
 static struct tegra_board_pinmux_conf common_conf = {
-	.pgs = common_pinmux,
-	.pg_count = ARRAY_SIZE(common_pinmux),
+	.maps = common_map,
+	.map_count = ARRAY_SIZE(common_map),
+	.pgs = common_pg,
+	.pg_count = ARRAY_SIZE(common_pg),
 	.gpios = common_gpio_table,
 	.gpio_count = ARRAY_SIZE(common_gpio_table),
 };
 
 static struct tegra_board_pinmux_conf seaboard_conf = {
-	.pgs = seaboard_pinmux,
-	.pg_count = ARRAY_SIZE(seaboard_pinmux),
-	.drives = seaboard_drive_pinmux,
-	.drive_count = ARRAY_SIZE(seaboard_drive_pinmux),
+	.maps = seaboard_map,
+	.map_count = ARRAY_SIZE(seaboard_map),
+	.pgs = seaboard_pg,
+	.pg_count = ARRAY_SIZE(seaboard_pg),
+	.drives = seaboard_drive,
+	.drive_count = ARRAY_SIZE(seaboard_drive),
 	.gpios = seaboard_gpio_table,
 	.gpio_count = ARRAY_SIZE(seaboard_gpio_table),
 };
 
 static struct tegra_board_pinmux_conf ventana_conf = {
-	.pgs = ventana_pinmux,
-	.pg_count = ARRAY_SIZE(ventana_pinmux),
+	.maps = ventana_map,
+	.map_count = ARRAY_SIZE(ventana_map),
+	.pgs = ventana_pg,
+	.pg_count = ARRAY_SIZE(ventana_pg),
 	.gpios = ventana_gpio_table,
 	.gpio_count = ARRAY_SIZE(ventana_gpio_table),
 };
diff --git a/arch/arm/mach-tegra/board-trimslice-pinmux.c b/arch/arm/mach-tegra/board-trimslice-pinmux.c
index a21a2be..7a73bbe 100644
--- a/arch/arm/mach-tegra/board-trimslice-pinmux.c
+++ b/arch/arm/mach-tegra/board-trimslice-pinmux.c
@@ -2,6 +2,7 @@
  * arch/arm/mach-tegra/board-trimslice-pinmux.c
  *
  * Copyright (C) 2011 CompuLab, Ltd.
+ * Copyright (c) 2011, NVIDIA CORPORATION.  All rights reserved.
  *
  * This software is licensed under the terms of the GNU General Public
  * License version 2, as published by the Free Software Foundation, and
@@ -13,135 +14,246 @@
  * GNU General Public License for more details.
  *
  */
-#include <linux/gpio.h>
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/of.h>
 
-#include <mach/pinmux.h>
-#include <mach/pinmux-tegra20.h>
+#include <linux/kernel.h>
 
 #include "gpio-names.h"
-#include "board-pinmux.h"
 #include "board-trimslice.h"
+#include "board-pinmux.h"
+
+static struct pinmux_map trimslice_map[] = {
+	TEGRA_PINMUX_MAP("ata",   "ide"),
+	TEGRA_PINMUX_MAP("atb",   "sdio4"),
+	TEGRA_PINMUX_MAP("atc",   "nand"),
+	TEGRA_PINMUX_MAP("atd",   "gmi"),
+	TEGRA_PINMUX_MAP("ate",   "gmi"),
+	TEGRA_PINMUX_MAP("cdev1", "plla_out"),
+	TEGRA_PINMUX_MAP("cdev2", "pllp_out4"),
+	TEGRA_PINMUX_MAP("crtp",  "crt"),
+	TEGRA_PINMUX_MAP("csus",  "vi_sensor_clk"),
+	TEGRA_PINMUX_MAP("dap1",  "dap1"),
+	TEGRA_PINMUX_MAP("dap2",  "dap2"),
+	TEGRA_PINMUX_MAP("dap3",  "dap3"),
+	TEGRA_PINMUX_MAP("dap4",  "dap4"),
+	TEGRA_PINMUX_MAP("ddc",   "i2c2"),
+	TEGRA_PINMUX_MAP("dta",   "vi"),
+	TEGRA_PINMUX_MAP("dtb",   "vi"),
+	TEGRA_PINMUX_MAP("dtc",   "vi"),
+	TEGRA_PINMUX_MAP("dtd",   "vi"),
+	TEGRA_PINMUX_MAP("dte",   "vi"),
+	TEGRA_PINMUX_MAP("dtf",   "i2c3"),
+	TEGRA_PINMUX_MAP("gma",   "sdio4"),
+	TEGRA_PINMUX_MAP("gmb",   "nand"),
+	TEGRA_PINMUX_MAP("gmc",   "sflash"),
+	TEGRA_PINMUX_MAP("gmd",   "sflash"),
+	TEGRA_PINMUX_MAP("gme",   "gmi"),
+	TEGRA_PINMUX_MAP("gpu",   "uarta"),
+	TEGRA_PINMUX_MAP("gpu7",  "rtck"),
+	TEGRA_PINMUX_MAP("gpv",   "pcie"),
+	TEGRA_PINMUX_MAP("hdint", "hdmi"),
+	TEGRA_PINMUX_MAP("i2cp",  "i2cp"),
+	TEGRA_PINMUX_MAP("irrx",  "uartb"),
+	TEGRA_PINMUX_MAP("irtx",  "uartb"),
+	TEGRA_PINMUX_MAP("kbca",  "kbc"),
+	TEGRA_PINMUX_MAP("kbcb",  "kbc"),
+	TEGRA_PINMUX_MAP("kbcc",  "kbc"),
+	TEGRA_PINMUX_MAP("kbcd",  "kbc"),
+	TEGRA_PINMUX_MAP("kbce",  "kbc"),
+	TEGRA_PINMUX_MAP("kbcf",  "kbc"),
+	TEGRA_PINMUX_MAP("lcsn",  "displaya"),
+	TEGRA_PINMUX_MAP("ld0",   "displaya"),
+	TEGRA_PINMUX_MAP("ld1",   "displaya"),
+	TEGRA_PINMUX_MAP("ld2",   "displaya"),
+	TEGRA_PINMUX_MAP("ld3",   "displaya"),
+	TEGRA_PINMUX_MAP("ld4",   "displaya"),
+	TEGRA_PINMUX_MAP("ld5",   "displaya"),
+	TEGRA_PINMUX_MAP("ld6",   "displaya"),
+	TEGRA_PINMUX_MAP("ld7",   "displaya"),
+	TEGRA_PINMUX_MAP("ld8",   "displaya"),
+	TEGRA_PINMUX_MAP("ld9",   "displaya"),
+	TEGRA_PINMUX_MAP("ld10",  "displaya"),
+	TEGRA_PINMUX_MAP("ld11",  "displaya"),
+	TEGRA_PINMUX_MAP("ld12",  "displaya"),
+	TEGRA_PINMUX_MAP("ld13",  "displaya"),
+	TEGRA_PINMUX_MAP("ld14",  "displaya"),
+	TEGRA_PINMUX_MAP("ld15",  "displaya"),
+	TEGRA_PINMUX_MAP("ld16",  "displaya"),
+	TEGRA_PINMUX_MAP("ld17",  "displaya"),
+	TEGRA_PINMUX_MAP("ldc",   "displaya"),
+	TEGRA_PINMUX_MAP("ldi",   "displaya"),
+	TEGRA_PINMUX_MAP("lhp0",  "displaya"),
+	TEGRA_PINMUX_MAP("lhp1",  "displaya"),
+	TEGRA_PINMUX_MAP("lhp2",  "displaya"),
+	TEGRA_PINMUX_MAP("lhs",   "displaya"),
+	TEGRA_PINMUX_MAP("lm0",   "displaya"),
+	TEGRA_PINMUX_MAP("lm1",   "displaya"),
+	TEGRA_PINMUX_MAP("lpp",   "displaya"),
+	TEGRA_PINMUX_MAP("lpw0",  "displaya"),
+	TEGRA_PINMUX_MAP("lpw1",  "displaya"),
+	TEGRA_PINMUX_MAP("lpw2",  "displaya"),
+	TEGRA_PINMUX_MAP("lsc0",  "displaya"),
+	TEGRA_PINMUX_MAP("lsc1",  "displaya"),
+	TEGRA_PINMUX_MAP("lsck",  "displaya"),
+	TEGRA_PINMUX_MAP("lsda",  "displaya"),
+	TEGRA_PINMUX_MAP("lsdi",  "displaya"),
+	TEGRA_PINMUX_MAP("lspi",  "displaya"),
+	TEGRA_PINMUX_MAP("lvp0",  "displaya"),
+	TEGRA_PINMUX_MAP("lvp1",  "displaya"),
+	TEGRA_PINMUX_MAP("lvs",   "displaya"),
+	TEGRA_PINMUX_MAP("owc",   "rsvd2"),
+	TEGRA_PINMUX_MAP("pmc",   "pwr_on"),
+	TEGRA_PINMUX_MAP("pta",   "gmi"),
+	TEGRA_PINMUX_MAP("rm",    "i2c1"),
+	TEGRA_PINMUX_MAP("sdb",   "pwm"),
+	TEGRA_PINMUX_MAP("sdc",   "pwm"),
+	TEGRA_PINMUX_MAP("sdd",   "pwm"),
+	TEGRA_PINMUX_MAP("sdio1", "sdio1"),
+	TEGRA_PINMUX_MAP("slxa",  "pcie"),
+	TEGRA_PINMUX_MAP("slxc",  "sdio3"),
+	TEGRA_PINMUX_MAP("slxd",  "sdio3"),
+	TEGRA_PINMUX_MAP("slxk",  "pcie"),
+	TEGRA_PINMUX_MAP("spdi",  "spdif"),
+	TEGRA_PINMUX_MAP("spdo",  "spdif"),
+	TEGRA_PINMUX_MAP("spia",  "spi2"),
+	TEGRA_PINMUX_MAP("spib",  "spi2"),
+	TEGRA_PINMUX_MAP("spic",  "spi2"),
+	TEGRA_PINMUX_MAP("spid",  "spi1"),
+	TEGRA_PINMUX_MAP("spie",  "spi1"),
+	TEGRA_PINMUX_MAP("spif",  "spi1"),
+	TEGRA_PINMUX_MAP("spig",  "spi2_alt"),
+	TEGRA_PINMUX_MAP("spih",  "spi2_alt"),
+	TEGRA_PINMUX_MAP("uaa",   "ulpi"),
+	TEGRA_PINMUX_MAP("uab",   "ulpi"),
+	TEGRA_PINMUX_MAP("uac",   "rsvd2"),
+	TEGRA_PINMUX_MAP("uad",   "irda"),
+	TEGRA_PINMUX_MAP("uca",   "uartc"),
+	TEGRA_PINMUX_MAP("ucb",   "uartc"),
+	TEGRA_PINMUX_MAP("uda",   "ulpi"),
+};
 
-static struct tegra_pingroup_config trimslice_pinmux[] = {
-	{TEGRA_PINGROUP_ATA,   TEGRA_MUX_IDE,           TEGRA_PUPD_NORMAL,	TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_ATB,   TEGRA_MUX_SDIO4,         TEGRA_PUPD_NORMAL,	TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_ATC,   TEGRA_MUX_NAND,          TEGRA_PUPD_NORMAL,	TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_ATD,   TEGRA_MUX_GMI,           TEGRA_PUPD_NORMAL,	TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_ATE,   TEGRA_MUX_GMI,           TEGRA_PUPD_NORMAL,	TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_CDEV1, TEGRA_MUX_PLLA_OUT,      TEGRA_PUPD_NORMAL,      TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_CDEV2, TEGRA_MUX_PLLP_OUT4,     TEGRA_PUPD_PULL_DOWN,   TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_CRTP,  TEGRA_MUX_CRT,           TEGRA_PUPD_NORMAL,      TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_CSUS,  TEGRA_MUX_VI_SENSOR_CLK, TEGRA_PUPD_PULL_DOWN,   TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_DAP1,  TEGRA_MUX_DAP1,          TEGRA_PUPD_NORMAL,      TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_DAP2,  TEGRA_MUX_DAP2,          TEGRA_PUPD_NORMAL,      TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_DAP3,  TEGRA_MUX_DAP3,          TEGRA_PUPD_NORMAL,      TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_DAP4,  TEGRA_MUX_DAP4,          TEGRA_PUPD_NORMAL,      TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_DDC,   TEGRA_MUX_I2C2,          TEGRA_PUPD_PULL_UP,     TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_DTA,   TEGRA_MUX_VI,            TEGRA_PUPD_NORMAL,      TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_DTB,   TEGRA_MUX_VI,            TEGRA_PUPD_NORMAL,      TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_DTC,   TEGRA_MUX_VI,            TEGRA_PUPD_NORMAL,      TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_DTD,   TEGRA_MUX_VI,            TEGRA_PUPD_NORMAL,      TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_DTE,   TEGRA_MUX_VI,            TEGRA_PUPD_NORMAL,      TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_DTF,   TEGRA_MUX_I2C3,          TEGRA_PUPD_PULL_UP,     TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_GMA,   TEGRA_MUX_SDIO4,         TEGRA_PUPD_NORMAL,      TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_GMB,   TEGRA_MUX_NAND,          TEGRA_PUPD_NORMAL,      TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_GMC,   TEGRA_MUX_SFLASH,        TEGRA_PUPD_NORMAL,      TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_GMD,   TEGRA_MUX_SFLASH,        TEGRA_PUPD_NORMAL,      TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_GME,   TEGRA_MUX_GMI,           TEGRA_PUPD_NORMAL,      TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_GPU,   TEGRA_MUX_UARTA,         TEGRA_PUPD_NORMAL,      TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_GPU7,  TEGRA_MUX_RTCK,          TEGRA_PUPD_NORMAL,      TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_GPV,   TEGRA_MUX_PCIE,          TEGRA_PUPD_NORMAL,      TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_HDINT, TEGRA_MUX_HDMI,          TEGRA_PUPD_PULL_UP,     TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_I2CP,  TEGRA_MUX_I2C,           TEGRA_PUPD_NORMAL,      TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_IRRX,  TEGRA_MUX_UARTB,         TEGRA_PUPD_PULL_UP,     TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_IRTX,  TEGRA_MUX_UARTB,         TEGRA_PUPD_PULL_UP,     TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_KBCA,  TEGRA_MUX_KBC,           TEGRA_PUPD_PULL_UP,     TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_KBCB,  TEGRA_MUX_KBC,           TEGRA_PUPD_PULL_UP,     TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_KBCC,  TEGRA_MUX_KBC,           TEGRA_PUPD_PULL_UP,     TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_KBCD,  TEGRA_MUX_KBC,           TEGRA_PUPD_PULL_UP,     TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_KBCE,  TEGRA_MUX_KBC,           TEGRA_PUPD_PULL_UP,     TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_KBCF,  TEGRA_MUX_KBC,           TEGRA_PUPD_PULL_UP,     TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_LCSN,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_UP,     TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_LD0,   TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_DOWN,   TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LD1,   TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_DOWN,   TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LD2,   TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_DOWN,   TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LD3,   TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_DOWN,   TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LD4,   TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_DOWN,   TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LD5,   TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_DOWN,   TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LD6,   TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_DOWN,   TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LD7,   TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_DOWN,   TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LD8,   TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_DOWN,   TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LD9,   TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_DOWN,   TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LD10,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_DOWN,   TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LD11,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_DOWN,   TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LD12,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_DOWN,   TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LD13,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_DOWN,   TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LD14,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_DOWN,   TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LD15,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_DOWN,   TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LD16,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_DOWN,   TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LD17,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_DOWN,   TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LDC,   TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_UP,     TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_LDI,   TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_DOWN,   TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LHP0,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_DOWN,   TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LHP1,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_DOWN,   TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LHP2,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_DOWN,   TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LHS,   TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_UP,     TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LM0,   TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_UP,     TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LM1,   TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_UP,     TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_LPP,   TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_DOWN,   TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LPW0,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_UP,     TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LPW1,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_UP,     TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_LPW2,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_UP,     TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LSC0,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_UP,     TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LSC1,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_UP,     TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_LSCK,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_UP,     TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_LSDA,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_UP,     TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_LSDI,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_UP,     TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_LSPI,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_UP,     TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LVP0,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_UP,     TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_LVP1,  TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_DOWN,   TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_LVS,   TEGRA_MUX_DISPLAYA,      TEGRA_PUPD_PULL_UP,     TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_OWC,   TEGRA_MUX_RSVD2,         TEGRA_PUPD_PULL_UP,     TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_PMC,   TEGRA_MUX_PWR_ON,        TEGRA_PUPD_NORMAL,      TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_PTA,   TEGRA_MUX_GMI,           TEGRA_PUPD_NORMAL,      TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_RM,    TEGRA_MUX_I2C,           TEGRA_PUPD_PULL_UP,     TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_SDB,   TEGRA_MUX_PWM,           TEGRA_PUPD_NORMAL,      TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_SDC,   TEGRA_MUX_PWM,           TEGRA_PUPD_PULL_UP,     TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_SDD,   TEGRA_MUX_PWM,           TEGRA_PUPD_PULL_UP,     TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_SDIO1, TEGRA_MUX_SDIO1,         TEGRA_PUPD_NORMAL,      TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_SLXA,  TEGRA_MUX_PCIE,          TEGRA_PUPD_NORMAL,      TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_SLXC,  TEGRA_MUX_SDIO3,         TEGRA_PUPD_NORMAL,      TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_SLXD,  TEGRA_MUX_SDIO3,         TEGRA_PUPD_NORMAL,      TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_SLXK,  TEGRA_MUX_PCIE,          TEGRA_PUPD_NORMAL,      TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_SPDI,  TEGRA_MUX_SPDIF,         TEGRA_PUPD_NORMAL,      TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_SPDO,  TEGRA_MUX_SPDIF,         TEGRA_PUPD_NORMAL,      TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_SPIA,  TEGRA_MUX_SPI2,          TEGRA_PUPD_PULL_DOWN,   TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_SPIB,  TEGRA_MUX_SPI2,          TEGRA_PUPD_PULL_DOWN,   TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_SPIC,  TEGRA_MUX_SPI2,          TEGRA_PUPD_PULL_UP,     TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_SPID,  TEGRA_MUX_SPI1,          TEGRA_PUPD_PULL_DOWN,   TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_SPIE,  TEGRA_MUX_SPI1,          TEGRA_PUPD_PULL_UP,     TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_SPIF,  TEGRA_MUX_SPI1,          TEGRA_PUPD_PULL_DOWN,   TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_SPIG,  TEGRA_MUX_SPI2_ALT,      TEGRA_PUPD_PULL_UP,     TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_SPIH,  TEGRA_MUX_SPI2_ALT,      TEGRA_PUPD_PULL_UP,     TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_UAA,   TEGRA_MUX_ULPI,          TEGRA_PUPD_PULL_UP,     TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_UAB,   TEGRA_MUX_ULPI,          TEGRA_PUPD_PULL_UP,     TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_UAC,   TEGRA_MUX_RSVD2,         TEGRA_PUPD_NORMAL,      TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_UAD,   TEGRA_MUX_IRDA,          TEGRA_PUPD_PULL_UP,     TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_UCA,   TEGRA_MUX_UARTC,         TEGRA_PUPD_PULL_UP,     TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_UCB,   TEGRA_MUX_UARTC,         TEGRA_PUPD_PULL_UP,     TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_UDA,   TEGRA_MUX_ULPI,          TEGRA_PUPD_NORMAL,      TEGRA_TRI_TRISTATE},
-	{TEGRA_PINGROUP_CK32,  TEGRA_MUX_NONE,          TEGRA_PUPD_NORMAL,      TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_DDRC,  TEGRA_MUX_NONE,          TEGRA_PUPD_NORMAL,      TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_PMCA,  TEGRA_MUX_NONE,          TEGRA_PUPD_NORMAL,      TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_PMCB,  TEGRA_MUX_NONE,          TEGRA_PUPD_NORMAL,      TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_PMCC,  TEGRA_MUX_NONE,          TEGRA_PUPD_NORMAL,      TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_PMCD,  TEGRA_MUX_NONE,          TEGRA_PUPD_NORMAL,      TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_PMCE,  TEGRA_MUX_NONE,          TEGRA_PUPD_NORMAL,      TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_XM2C,  TEGRA_MUX_NONE,          TEGRA_PUPD_NORMAL,      TEGRA_TRI_NORMAL},
-	{TEGRA_PINGROUP_XM2D,  TEGRA_MUX_NONE,          TEGRA_PUPD_NORMAL,      TEGRA_TRI_NORMAL},
+static struct tegra_board_pinmux_pg_conf trimslice_pg[] = {
+	{"ata",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_TRISTATE},
+	{"atb",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"atc",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_TRISTATE},
+	{"atd",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_TRISTATE},
+	{"ate",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_TRISTATE},
+	{"cdev1",   TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"cdev2",   TEGRA_PINCONFIG_PULL_DOWN, TEGRA_PINCONFIG_TRISTATE},
+	{"crtp",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_TRISTATE},
+	{"csus",    TEGRA_PINCONFIG_PULL_DOWN, TEGRA_PINCONFIG_TRISTATE},
+	{"dap1",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"dap2",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_TRISTATE},
+	{"dap3",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_TRISTATE},
+	{"dap4",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_TRISTATE},
+	{"ddc",     TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_DRIVEN},
+	{"dta",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_TRISTATE},
+	{"dtb",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_TRISTATE},
+	{"dtc",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_TRISTATE},
+	{"dtd",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_TRISTATE},
+	{"dte",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_TRISTATE},
+	{"dtf",     TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_DRIVEN},
+	{"gma",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"gmb",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_TRISTATE},
+	{"gmc",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"gmd",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"gme",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_TRISTATE},
+	{"gpu",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"gpu7",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"gpv",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"hdint",   TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_TRISTATE},
+	{"i2cp",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_TRISTATE},
+	{"irrx",    TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_TRISTATE},
+	{"irtx",    TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_TRISTATE},
+	{"kbca",    TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_TRISTATE},
+	{"kbcb",    TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_TRISTATE},
+	{"kbcc",    TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_TRISTATE},
+	{"kbcd",    TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_TRISTATE},
+	{"kbce",    TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_TRISTATE},
+	{"kbcf",    TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_TRISTATE},
+	{"lcsn",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_TRISTATE},
+	{"ld0",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ld1",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ld2",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ld3",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ld4",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ld5",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ld6",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ld7",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ld8",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ld9",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ld10",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ld11",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ld12",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ld13",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ld14",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ld15",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ld16",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ld17",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"ldc",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_TRISTATE},
+	{"ldi",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"lhp0",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"lhp1",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"lhp2",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"lhs",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"lm0",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"lm1",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_TRISTATE},
+	{"lpp",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"lpw0",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"lpw1",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_TRISTATE},
+	{"lpw2",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"lsc0",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"lsc1",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_TRISTATE},
+	{"lsck",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_TRISTATE},
+	{"lsda",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_TRISTATE},
+	{"lsdi",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_TRISTATE},
+	{"lspi",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"lvp0",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_TRISTATE},
+	{"lvp1",    TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"lvs",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"owc",     TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_TRISTATE},
+	{"pmc",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_TRISTATE},
+	{"pta",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_TRISTATE},
+	{"rm",      TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_DRIVEN},
+	{"sdb",     TEGRA_PINCONFIG_DONT_SET,  TEGRA_PINCONFIG_DRIVEN},
+	{"sdc",     TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_DRIVEN},
+	{"sdd",     TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_DRIVEN},
+	{"sdio1",   TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"slxa",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"slxc",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_TRISTATE},
+	{"slxd",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_TRISTATE},
+	{"slxk",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"spdi",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_TRISTATE},
+	{"spdo",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_TRISTATE},
+	{"spia",    TEGRA_PINCONFIG_PULL_DOWN, TEGRA_PINCONFIG_TRISTATE},
+	{"spib",    TEGRA_PINCONFIG_PULL_DOWN, TEGRA_PINCONFIG_TRISTATE},
+	{"spic",    TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_TRISTATE},
+	{"spid",    TEGRA_PINCONFIG_PULL_DOWN, TEGRA_PINCONFIG_TRISTATE},
+	{"spie",    TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_TRISTATE},
+	{"spif",    TEGRA_PINCONFIG_PULL_DOWN, TEGRA_PINCONFIG_TRISTATE},
+	{"spig",    TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_TRISTATE},
+	{"spih",    TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_TRISTATE},
+	{"uaa",     TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_TRISTATE},
+	{"uab",     TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_TRISTATE},
+	{"uac",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DRIVEN},
+	{"uad",     TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_TRISTATE},
+	{"uca",     TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_TRISTATE},
+	{"ucb",     TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_TRISTATE},
+	{"uda",     TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_TRISTATE},
+	{"ck32",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DONT_SET},
+	{"ddrc",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DONT_SET},
+	{"pmca",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DONT_SET},
+	{"pmcb",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DONT_SET},
+	{"pmcc",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DONT_SET},
+	{"pmcd",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DONT_SET},
+	{"pmce",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DONT_SET},
+	{"xm2c",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DONT_SET},
+	{"xm2d",    TEGRA_PINCONFIG_PULL_NONE, TEGRA_PINCONFIG_DONT_SET},
+	{"ls",      TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_DONT_SET},
+	{"lc",      TEGRA_PINCONFIG_PULL_UP,   TEGRA_PINCONFIG_DONT_SET},
+	{"ld17_0",  TEGRA_PINCONFIG_PULL_DOWN, TEGRA_PINCONFIG_DONT_SET},
+	{"ld19_18", TEGRA_PINCONFIG_PULL_DOWN, TEGRA_PINCONFIG_DONT_SET},
+	{"ld21_20", TEGRA_PINCONFIG_PULL_DOWN, TEGRA_PINCONFIG_DONT_SET},
+	{"ld23_22", TEGRA_PINCONFIG_PULL_DOWN, TEGRA_PINCONFIG_DONT_SET},
 };
 
 static struct tegra_gpio_table gpio_table[] = {
@@ -153,8 +265,10 @@ static struct tegra_gpio_table gpio_table[] = {
 };
 
 static struct tegra_board_pinmux_conf conf = {
-	.pgs = trimslice_pinmux,
-	.pg_count = ARRAY_SIZE(trimslice_pinmux),
+	.maps = trimslice_map,
+	.map_count = ARRAY_SIZE(trimslice_map),
+	.pgs = trimslice_pg,
+	.pg_count = ARRAY_SIZE(trimslice_pg),
 	.gpios = gpio_table,
 	.gpio_count = ARRAY_SIZE(gpio_table),
 };
diff --git a/arch/arm/mach-tegra/pinmux.c b/arch/arm/mach-tegra/pinmux.c
index ac35d2b..7867a12 100644
--- a/arch/arm/mach-tegra/pinmux.c
+++ b/arch/arm/mach-tegra/pinmux.c
@@ -711,10 +711,10 @@ void tegra_pinmux_config_pullupdown_table(const struct tegra_pingroup_config *co
 
 static struct of_device_id tegra_pinmux_of_match[] __devinitdata = {
 #ifdef CONFIG_ARCH_TEGRA_2x_SOC
-	{ .compatible = "nvidia,tegra20-pinmux", tegra20_pinmux_init },
+	{ .compatible = "nvidia,tegra20-pinmux-disabled", tegra20_pinmux_init },
 #endif
 #ifdef CONFIG_ARCH_TEGRA_3x_SOC
-	{ .compatible = "nvidia,tegra30-pinmux", tegra30_pinmux_init },
+	{ .compatible = "nvidia,tegra30-pinmux-disabled", tegra30_pinmux_init },
 #endif
 	{ },
 };
@@ -809,7 +809,7 @@ static int __devinit tegra_pinmux_probe(struct platform_device *pdev)
 
 static struct platform_driver tegra_pinmux_driver = {
 	.driver		= {
-		.name	= "tegra-pinmux",
+		.name	= "tegra-pinmux-disabled",
 		.owner	= THIS_MODULE,
 		.of_match_table = tegra_pinmux_of_match,
 	},
diff --git a/drivers/pinctrl/pinctrl-tegra.c b/drivers/pinctrl/pinctrl-tegra.c
index 9b32968..7fc8e83 100644
--- a/drivers/pinctrl/pinctrl-tegra.c
+++ b/drivers/pinctrl/pinctrl-tegra.c
@@ -31,7 +31,7 @@
 
 #include "pinctrl-tegra.h"
 
-#define DRIVER_NAME "tegra-pinmux-disabled"
+#define DRIVER_NAME "tegra-pinmux"
 
 struct tegra_pmx {
 	struct device *dev;
@@ -422,13 +422,13 @@ static struct pinctrl_desc tegra_pinctrl_desc = {
 static struct of_device_id tegra_pinctrl_of_match[] __devinitdata = {
 #ifdef CONFIG_PINCTRL_TEGRA20
 	{
-		.compatible = "nvidia,tegra20-pinmux-disabled",
+		.compatible = "nvidia,tegra20-pinmux",
 		.data = tegra20_pinctrl_init,
 	},
 #endif
 #ifdef CONFIG_PINCTRL_TEGRA30
 	{
-		.compatible = "nvidia,tegra30-pinmux-disabled",
+		.compatible = "nvidia,tegra30-pinmux",
 		.data = tegra30_pinctrl_init,
 	},
 #endif
-- 
1.7.0.4

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ