aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-tegra/include
diff options
context:
space:
mode:
authorPeter De Schrijver <pdeschrijver@nvidia.com>2011-12-14 10:03:22 -0500
committerOlof Johansson <olof@lixom.net>2011-12-17 23:15:28 -0500
commit6996e0858cd5e7b57bf7297b641c4b6a5bd59be6 (patch)
tree96d47bd8c48ce4f88e15f9d6633df4f58c2ef0b1 /arch/arm/mach-tegra/include
parent57be3bdb402afbf71b0490ccf229c3b9cf784ce1 (diff)
arm/tegra: prepare pinmux code for multiple tegra variants
This patch modifies the pinmux code to be useable for multiple tegra variants. Some tegra20 specific constants will be replaced by variables which will be initialized to the appropriate value at runtime. Signed-off-by: Peter De Schrijver <pdeschrijver@nvidia.com> Acked-by: Stephen Warren <swarren@nvidia.com> Acked-by: Colin Cross <ccross@android.com> Signed-off-by: Olof Johansson <olof@lixom.net>
Diffstat (limited to 'arch/arm/mach-tegra/include')
-rw-r--r--arch/arm/mach-tegra/include/mach/pinmux.h25
1 files changed, 10 insertions, 15 deletions
diff --git a/arch/arm/mach-tegra/include/mach/pinmux.h b/arch/arm/mach-tegra/include/mach/pinmux.h
index b93df9e31349..35999ce7c9b2 100644
--- a/arch/arm/mach-tegra/include/mach/pinmux.h
+++ b/arch/arm/mach-tegra/include/mach/pinmux.h
@@ -17,12 +17,6 @@
17#ifndef __MACH_TEGRA_PINMUX_H 17#ifndef __MACH_TEGRA_PINMUX_H
18#define __MACH_TEGRA_PINMUX_H 18#define __MACH_TEGRA_PINMUX_H
19 19
20#if defined(CONFIG_ARCH_TEGRA_2x_SOC)
21#include "pinmux-tegra20.h"
22#else
23#error "Undefined Tegra architecture"
24#endif
25
26enum tegra_mux_func { 20enum tegra_mux_func {
27 TEGRA_MUX_RSVD = 0x8000, 21 TEGRA_MUX_RSVD = 0x8000,
28 TEGRA_MUX_RSVD1 = 0x8000, 22 TEGRA_MUX_RSVD1 = 0x8000,
@@ -118,7 +112,7 @@ enum tegra_vddio {
118}; 112};
119 113
120struct tegra_pingroup_config { 114struct tegra_pingroup_config {
121 enum tegra_pingroup pingroup; 115 int pingroup;
122 enum tegra_mux_func func; 116 enum tegra_mux_func func;
123 enum tegra_pullupdown pupd; 117 enum tegra_pullupdown pupd;
124 enum tegra_tristate tristate; 118 enum tegra_tristate tristate;
@@ -187,7 +181,7 @@ enum tegra_schmitt {
187}; 181};
188 182
189struct tegra_drive_pingroup_config { 183struct tegra_drive_pingroup_config {
190 enum tegra_drive_pingroup pingroup; 184 int pingroup;
191 enum tegra_hsm hsm; 185 enum tegra_hsm hsm;
192 enum tegra_schmitt schmitt; 186 enum tegra_schmitt schmitt;
193 enum tegra_drive drive; 187 enum tegra_drive drive;
@@ -219,13 +213,15 @@ struct tegra_pingroup_desc {
219 s8 pupd_bit; /* offset into the PULL_UPDOWN_REG_* register bit */ 213 s8 pupd_bit; /* offset into the PULL_UPDOWN_REG_* register bit */
220}; 214};
221 215
222extern const struct tegra_pingroup_desc tegra_soc_pingroups[]; 216typedef void (*pinmux_init) (const struct tegra_pingroup_desc **pg,
223extern const struct tegra_drive_pingroup_desc tegra_soc_drive_pingroups[]; 217 int *pg_max, const struct tegra_drive_pingroup_desc **pgdrive,
218 int *pgdrive_max);
224 219
225int tegra_pinmux_set_tristate(enum tegra_pingroup pg, 220void tegra20_pinmux_init(const struct tegra_pingroup_desc **pg, int *pg_max,
226 enum tegra_tristate tristate); 221 const struct tegra_drive_pingroup_desc **pgdrive, int *pgdrive_max);
227int tegra_pinmux_set_pullupdown(enum tegra_pingroup pg, 222
228 enum tegra_pullupdown pupd); 223int tegra_pinmux_set_tristate(int pg, enum tegra_tristate tristate);
224int tegra_pinmux_set_pullupdown(int pg, enum tegra_pullupdown pupd);
229 225
230void tegra_pinmux_config_table(const struct tegra_pingroup_config *config, 226void tegra_pinmux_config_table(const struct tegra_pingroup_config *config,
231 int len); 227 int len);
@@ -241,4 +237,3 @@ void tegra_pinmux_config_tristate_table(const struct tegra_pingroup_config *conf
241void tegra_pinmux_config_pullupdown_table(const struct tegra_pingroup_config *config, 237void tegra_pinmux_config_pullupdown_table(const struct tegra_pingroup_config *config,
242 int len, enum tegra_pullupdown pupd); 238 int len, enum tegra_pullupdown pupd);
243#endif 239#endif
244