[ARM] tegra: pinmux: add safe values, move tegra2, add suspend
authorColin Cross <ccross@android.com>
Fri, 9 Jul 2010 22:13:52 +0000 (15:13 -0700)
committerColin Cross <ccross@android.com>
Thu, 30 Sep 2010 00:45:07 +0000 (17:45 -0700)
commit076714e16ba57684b3bd99cb7031dd5153a1b26d
tree75f183704b9fcb02f8384bb07e25addff3e66d59
parent87c03d967cc9b0996b00738c39742cc5b1e79968
[ARM] tegra: pinmux: add safe values, move tegra2, add suspend

- the reset values for some pin groups in the tegra pin mux can result in
functional errors due to conflicting with actively-configured pin groups
muxing from the same controller. this change adds a known safe, non-
conflicting mux for every pin group, which can be used on platforms
where the pin group is not routed to any peripheral

- also add each pin group's I/O voltage rail, to enable platform code to
map from the pin groups used by each interface to the regulators used
for dynamic voltage control

- add routines to individually configure the tristate, pin mux and pull-
ups for a pingroup_config array, so that it is possible to program
individual values at run-time without modifying other values.
this allows driver power-management code to reprogram individual
interfaces into lower power states during idle / suspend, or to
reprogram the pin mux to support multiple physical busses per
internal controller (e.g., sharing a single I2C or SPI controller
across multiple pin groups)

- move chip-specific data like pingroups and drive-pingroups
out of the common code and into chip-specific code

- fix debug output for group with no pullups

- add a TEGRA_MUX_SAFE function.  Setting a pingroup to TEGRA_MUX_SAFE
will automatically select a mux setting that is guaranteed not to
conflict with any of the hardware blocks.

Signed-off-by: Gary King <gking@nvidia.com>
arch/arm/mach-tegra/Makefile
arch/arm/mach-tegra/include/mach/pinmux-t2.h [new file with mode: 0644]
arch/arm/mach-tegra/include/mach/pinmux.h
arch/arm/mach-tegra/pinmux-t2-tables.c [new file with mode: 0644]
arch/arm/mach-tegra/pinmux.c