diff options
Diffstat (limited to 'arch/arm/mach-tegra/pinmux-t2-tables.c')
-rw-r--r-- | arch/arm/mach-tegra/pinmux-t2-tables.c | 26 |
1 files changed, 22 insertions, 4 deletions
diff --git a/arch/arm/mach-tegra/pinmux-t2-tables.c b/arch/arm/mach-tegra/pinmux-t2-tables.c index a6ea34e782dc..a475367befa3 100644 --- a/arch/arm/mach-tegra/pinmux-t2-tables.c +++ b/arch/arm/mach-tegra/pinmux-t2-tables.c | |||
@@ -29,6 +29,7 @@ | |||
29 | 29 | ||
30 | #include <mach/iomap.h> | 30 | #include <mach/iomap.h> |
31 | #include <mach/pinmux.h> | 31 | #include <mach/pinmux.h> |
32 | #include <mach/suspend.h> | ||
32 | 33 | ||
33 | #define DRIVE_PINGROUP(pg_name, r) \ | 34 | #define DRIVE_PINGROUP(pg_name, r) \ |
34 | [TEGRA_DRIVE_PINGROUP_ ## pg_name] = { \ | 35 | [TEGRA_DRIVE_PINGROUP_ ## pg_name] = { \ |
@@ -65,6 +66,16 @@ const struct tegra_drive_pingroup_desc tegra_soc_drive_pingroups[TEGRA_MAX_DRIVE | |||
65 | DRIVE_PINGROUP(XM2D, 0x8cc), | 66 | DRIVE_PINGROUP(XM2D, 0x8cc), |
66 | DRIVE_PINGROUP(XM2CLK, 0x8d0), | 67 | DRIVE_PINGROUP(XM2CLK, 0x8d0), |
67 | DRIVE_PINGROUP(MEMCOMP, 0x8d4), | 68 | DRIVE_PINGROUP(MEMCOMP, 0x8d4), |
69 | DRIVE_PINGROUP(SDIO1, 0x8e0), | ||
70 | DRIVE_PINGROUP(CRT, 0x8ec), | ||
71 | DRIVE_PINGROUP(DDC, 0x8f0), | ||
72 | DRIVE_PINGROUP(GMA, 0x8f4), | ||
73 | DRIVE_PINGROUP(GMB, 0x8f8), | ||
74 | DRIVE_PINGROUP(GMC, 0x8fc), | ||
75 | DRIVE_PINGROUP(GMD, 0x900), | ||
76 | DRIVE_PINGROUP(GME, 0x904), | ||
77 | DRIVE_PINGROUP(OWR, 0x908), | ||
78 | DRIVE_PINGROUP(UAD, 0x90c), | ||
68 | }; | 79 | }; |
69 | 80 | ||
70 | #define PINGROUP(pg_name, vdd, f0, f1, f2, f3, f_safe, \ | 81 | #define PINGROUP(pg_name, vdd, f0, f1, f2, f3, f_safe, \ |
@@ -216,7 +227,8 @@ const struct tegra_pingroup_desc tegra_soc_pingroups[TEGRA_MAX_PINGROUP] = { | |||
216 | #define PULLUPDOWN_REG_NUM 5 | 227 | #define PULLUPDOWN_REG_NUM 5 |
217 | 228 | ||
218 | static u32 pinmux_reg[TRISTATE_REG_NUM + PIN_MUX_CTL_REG_NUM + | 229 | static u32 pinmux_reg[TRISTATE_REG_NUM + PIN_MUX_CTL_REG_NUM + |
219 | PULLUPDOWN_REG_NUM]; | 230 | PULLUPDOWN_REG_NUM + |
231 | ARRAY_SIZE(tegra_soc_drive_pingroups)]; | ||
220 | 232 | ||
221 | static inline unsigned long pg_readl(unsigned long offset) | 233 | static inline unsigned long pg_readl(unsigned long offset) |
222 | { | 234 | { |
@@ -233,14 +245,17 @@ void tegra_pinmux_suspend(void) | |||
233 | unsigned int i; | 245 | unsigned int i; |
234 | u32 *ctx = pinmux_reg; | 246 | u32 *ctx = pinmux_reg; |
235 | 247 | ||
236 | for (i = 0; i < TRISTATE_REG_NUM; i++) | ||
237 | *ctx++ = pg_readl(TRISTATE_REG_A + i*4); | ||
238 | |||
239 | for (i = 0; i < PIN_MUX_CTL_REG_NUM; i++) | 248 | for (i = 0; i < PIN_MUX_CTL_REG_NUM; i++) |
240 | *ctx++ = pg_readl(PIN_MUX_CTL_REG_A + i*4); | 249 | *ctx++ = pg_readl(PIN_MUX_CTL_REG_A + i*4); |
241 | 250 | ||
242 | for (i = 0; i < PULLUPDOWN_REG_NUM; i++) | 251 | for (i = 0; i < PULLUPDOWN_REG_NUM; i++) |
243 | *ctx++ = pg_readl(PULLUPDOWN_REG_A + i*4); | 252 | *ctx++ = pg_readl(PULLUPDOWN_REG_A + i*4); |
253 | |||
254 | for (i = 0; i < TRISTATE_REG_NUM; i++) | ||
255 | *ctx++ = pg_readl(TRISTATE_REG_A + i*4); | ||
256 | |||
257 | for (i = 0; i < ARRAY_SIZE(tegra_soc_drive_pingroups); i++) | ||
258 | *ctx++ = pg_readl(tegra_soc_drive_pingroups[i].reg); | ||
244 | } | 259 | } |
245 | 260 | ||
246 | void tegra_pinmux_resume(void) | 261 | void tegra_pinmux_resume(void) |
@@ -256,5 +271,8 @@ void tegra_pinmux_resume(void) | |||
256 | 271 | ||
257 | for (i = 0; i < TRISTATE_REG_NUM; i++) | 272 | for (i = 0; i < TRISTATE_REG_NUM; i++) |
258 | pg_writel(*ctx++, TRISTATE_REG_A + i*4); | 273 | pg_writel(*ctx++, TRISTATE_REG_A + i*4); |
274 | |||
275 | for (i = 0; i < ARRAY_SIZE(tegra_soc_drive_pingroups); i++) | ||
276 | pg_writel(*ctx++, tegra_soc_drive_pingroups[i].reg); | ||
259 | } | 277 | } |
260 | #endif | 278 | #endif |