2 * linux/arch/arm/mach-tegra/pinmux-t2-tables.c
4 * Common pinmux configurations for Tegra 2 SoCs
6 * Copyright (C) 2010 NVIDIA Corporation
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 2 of the License, or
11 * (at your option) any later version.
13 * This program is distributed in the hope that it will be useful, but WITHOUT
14 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
15 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
18 * You should have received a copy of the GNU General Public License along
19 * with this program; if not, write to the Free Software Foundation, Inc.,
20 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
23 #include <linux/kernel.h>
24 #include <linux/errno.h>
25 #include <linux/spinlock.h>
27 #include <linux/init.h>
28 #include <linux/string.h>
30 #include <mach/iomap.h>
31 #include <mach/pinmux.h>
32 #include <mach/suspend.h>
34 #define DRIVE_PINGROUP(pg_name, r) \
35 [TEGRA_DRIVE_PINGROUP_ ## pg_name] = { \
40 const struct tegra_drive_pingroup_desc tegra_soc_drive_pingroups
[TEGRA_MAX_DRIVE_PINGROUP
] = {
41 DRIVE_PINGROUP(AO1
, 0x868),
42 DRIVE_PINGROUP(AO2
, 0x86c),
43 DRIVE_PINGROUP(AT1
, 0x870),
44 DRIVE_PINGROUP(AT2
, 0x874),
45 DRIVE_PINGROUP(CDEV1
, 0x878),
46 DRIVE_PINGROUP(CDEV2
, 0x87c),
47 DRIVE_PINGROUP(CSUS
, 0x880),
48 DRIVE_PINGROUP(DAP1
, 0x884),
49 DRIVE_PINGROUP(DAP2
, 0x888),
50 DRIVE_PINGROUP(DAP3
, 0x88c),
51 DRIVE_PINGROUP(DAP4
, 0x890),
52 DRIVE_PINGROUP(DBG
, 0x894),
53 DRIVE_PINGROUP(LCD1
, 0x898),
54 DRIVE_PINGROUP(LCD2
, 0x89c),
55 DRIVE_PINGROUP(SDMMC2
, 0x8a0),
56 DRIVE_PINGROUP(SDMMC3
, 0x8a4),
57 DRIVE_PINGROUP(SPI
, 0x8a8),
58 DRIVE_PINGROUP(UAA
, 0x8ac),
59 DRIVE_PINGROUP(UAB
, 0x8b0),
60 DRIVE_PINGROUP(UART2
, 0x8b4),
61 DRIVE_PINGROUP(UART3
, 0x8b8),
62 DRIVE_PINGROUP(VI1
, 0x8bc),
63 DRIVE_PINGROUP(VI2
, 0x8c0),
64 DRIVE_PINGROUP(XM2A
, 0x8c4),
65 DRIVE_PINGROUP(XM2C
, 0x8c8),
66 DRIVE_PINGROUP(XM2D
, 0x8cc),
67 DRIVE_PINGROUP(XM2CLK
, 0x8d0),
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),
81 #define PINGROUP(pg_name, vdd, f0, f1, f2, f3, f_safe, \
82 tri_r, tri_b, mux_r, mux_b, pupd_r, pupd_b) \
83 [TEGRA_PINGROUP_ ## pg_name] = { \
85 .vddio = TEGRA_VDDIO_ ## vdd, \
92 .func_safe = TEGRA_MUX_ ## f_safe, \
101 const struct tegra_pingroup_desc tegra_soc_pingroups
[TEGRA_MAX_PINGROUP
] = {
102 PINGROUP(ATA
, NAND
, IDE
, NAND
, GMI
, RSVD
, IDE
, 0x14, 0, 0x80, 24, 0xA0, 0),
103 PINGROUP(ATB
, NAND
, IDE
, NAND
, GMI
, SDIO4
, IDE
, 0x14, 1, 0x80, 16, 0xA0, 2),
104 PINGROUP(ATC
, NAND
, IDE
, NAND
, GMI
, SDIO4
, IDE
, 0x14, 2, 0x80, 22, 0xA0, 4),
105 PINGROUP(ATD
, NAND
, IDE
, NAND
, GMI
, SDIO4
, IDE
, 0x14, 3, 0x80, 20, 0xA0, 6),
106 PINGROUP(ATE
, NAND
, IDE
, NAND
, GMI
, RSVD
, IDE
, 0x18, 25, 0x80, 12, 0xA0, 8),
107 PINGROUP(CDEV1
, AUDIO
, OSC
, PLLA_OUT
, PLLM_OUT1
, AUDIO_SYNC
, OSC
, 0x14, 4, 0x88, 2, 0xA8, 0),
108 PINGROUP(CDEV2
, AUDIO
, OSC
, AHB_CLK
, APB_CLK
, PLLP_OUT4
, OSC
, 0x14, 5, 0x88, 4, 0xA8, 2),
109 PINGROUP(CRTP
, LCD
, CRT
, RSVD
, RSVD
, RSVD
, RSVD
, 0x20, 14, 0x98, 20, 0xA4, 24),
110 PINGROUP(CSUS
, VI
, PLLC_OUT1
, PLLP_OUT2
, PLLP_OUT3
, VI_SENSOR_CLK
, PLLC_OUT1
, 0x14, 6, 0x88, 6, 0xAC, 24),
111 PINGROUP(DAP1
, AUDIO
, DAP1
, RSVD
, GMI
, SDIO2
, DAP1
, 0x14, 7, 0x88, 20, 0xA0, 10),
112 PINGROUP(DAP2
, AUDIO
, DAP2
, TWC
, RSVD
, GMI
, DAP2
, 0x14, 8, 0x88, 22, 0xA0, 12),
113 PINGROUP(DAP3
, BB
, DAP3
, RSVD
, RSVD
, RSVD
, DAP3
, 0x14, 9, 0x88, 24, 0xA0, 14),
114 PINGROUP(DAP4
, UART
, DAP4
, RSVD
, GMI
, RSVD
, DAP4
, 0x14, 10, 0x88, 26, 0xA0, 16),
115 PINGROUP(DDC
, LCD
, I2C2
, RSVD
, RSVD
, RSVD
, RSVD4
, 0x18, 31, 0x88, 0, 0xB0, 28),
116 PINGROUP(DTA
, VI
, RSVD
, SDIO2
, VI
, RSVD
, RSVD4
, 0x14, 11, 0x84, 20, 0xA0, 18),
117 PINGROUP(DTB
, VI
, RSVD
, RSVD
, VI
, SPI1
, RSVD1
, 0x14, 12, 0x84, 22, 0xA0, 20),
118 PINGROUP(DTC
, VI
, RSVD
, RSVD
, VI
, RSVD
, RSVD1
, 0x14, 13, 0x84, 26, 0xA0, 22),
119 PINGROUP(DTD
, VI
, RSVD
, SDIO2
, VI
, RSVD
, RSVD1
, 0x14, 14, 0x84, 28, 0xA0, 24),
120 PINGROUP(DTE
, VI
, RSVD
, RSVD
, VI
, SPI1
, RSVD1
, 0x14, 15, 0x84, 30, 0xA0, 26),
121 PINGROUP(DTF
, VI
, I2C3
, RSVD
, VI
, RSVD
, RSVD4
, 0x20, 12, 0x98, 30, 0xA0, 28),
122 PINGROUP(GMA
, NAND
, UARTE
, SPI3
, GMI
, SDIO4
, SPI3
, 0x14, 28, 0x84, 0, 0xB0, 20),
123 PINGROUP(GMB
, NAND
, IDE
, NAND
, GMI
, GMI_INT
, GMI
, 0x18, 29, 0x88, 28, 0xB0, 22),
124 PINGROUP(GMC
, NAND
, UARTD
, SPI4
, GMI
, SFLASH
, SPI4
, 0x14, 29, 0x84, 2, 0xB0, 24),
125 PINGROUP(GMD
, NAND
, RSVD
, NAND
, GMI
, SFLASH
, GMI
, 0x18, 30, 0x88, 30, 0xB0, 26),
126 PINGROUP(GME
, NAND
, RSVD
, DAP5
, GMI
, SDIO4
, GMI
, 0x18, 0, 0x8C, 0, 0xA8, 24),
127 PINGROUP(GPU
, UART
, PWM
, UARTA
, GMI
, RSVD
, RSVD4
, 0x14, 16, 0x8C, 4, 0xA4, 20),
128 PINGROUP(GPU7
, SYS
, RTCK
, RSVD
, RSVD
, RSVD
, RTCK
, 0x20, 11, 0x98, 28, 0xA4, 6),
129 PINGROUP(GPV
, SD
, PCIE
, RSVD
, RSVD
, RSVD
, PCIE
, 0x14, 17, 0x8C, 2, 0xA0, 30),
130 PINGROUP(HDINT
, LCD
, HDMI
, RSVD
, RSVD
, RSVD
, HDMI
, 0x1C, 23, 0x84, 4, 0xAC, 22),
131 PINGROUP(I2CP
, SYS
, I2C
, RSVD
, RSVD
, RSVD
, RSVD4
, 0x14, 18, 0x88, 8, 0xA4, 2),
132 PINGROUP(IRRX
, UART
, UARTA
, UARTB
, GMI
, SPI4
, UARTB
, 0x14, 20, 0x88, 18, 0xA8, 22),
133 PINGROUP(IRTX
, UART
, UARTA
, UARTB
, GMI
, SPI4
, UARTB
, 0x14, 19, 0x88, 16, 0xA8, 20),
134 PINGROUP(KBCA
, SYS
, KBC
, NAND
, SDIO2
, EMC_TEST0_DLL
, KBC
, 0x14, 22, 0x88, 10, 0xA4, 8),
135 PINGROUP(KBCB
, SYS
, KBC
, NAND
, SDIO2
, MIO
, KBC
, 0x14, 21, 0x88, 12, 0xA4, 10),
136 PINGROUP(KBCC
, SYS
, KBC
, NAND
, TRACE
, EMC_TEST1_DLL
, KBC
, 0x18, 26, 0x88, 14, 0xA4, 12),
137 PINGROUP(KBCD
, SYS
, KBC
, NAND
, SDIO2
, MIO
, KBC
, 0x20, 10, 0x98, 26, 0xA4, 14),
138 PINGROUP(KBCE
, SYS
, KBC
, NAND
, OWR
, RSVD
, KBC
, 0x14, 26, 0x80, 28, 0xB0, 2),
139 PINGROUP(KBCF
, SYS
, KBC
, NAND
, TRACE
, MIO
, KBC
, 0x14, 27, 0x80, 26, 0xB0, 0),
140 PINGROUP(LCSN
, LCD
, DISPLAYA
, DISPLAYB
, SPI3
, RSVD
, RSVD4
, 0x1C, 31, 0x90, 12, 0xAC, 20),
141 PINGROUP(LD0
, LCD
, DISPLAYA
, DISPLAYB
, XIO
, RSVD
, RSVD4
, 0x1C, 0, 0x94, 0, 0xAC, 12),
142 PINGROUP(LD1
, LCD
, DISPLAYA
, DISPLAYB
, XIO
, RSVD
, RSVD4
, 0x1C, 1, 0x94, 2, 0xAC, 12),
143 PINGROUP(LD10
, LCD
, DISPLAYA
, DISPLAYB
, XIO
, RSVD
, RSVD4
, 0x1C, 10, 0x94, 20, 0xAC, 12),
144 PINGROUP(LD11
, LCD
, DISPLAYA
, DISPLAYB
, XIO
, RSVD
, RSVD4
, 0x1C, 11, 0x94, 22, 0xAC, 12),
145 PINGROUP(LD12
, LCD
, DISPLAYA
, DISPLAYB
, XIO
, RSVD
, RSVD4
, 0x1C, 12, 0x94, 24, 0xAC, 12),
146 PINGROUP(LD13
, LCD
, DISPLAYA
, DISPLAYB
, XIO
, RSVD
, RSVD4
, 0x1C, 13, 0x94, 26, 0xAC, 12),
147 PINGROUP(LD14
, LCD
, DISPLAYA
, DISPLAYB
, XIO
, RSVD
, RSVD4
, 0x1C, 14, 0x94, 28, 0xAC, 12),
148 PINGROUP(LD15
, LCD
, DISPLAYA
, DISPLAYB
, XIO
, RSVD
, RSVD4
, 0x1C, 15, 0x94, 30, 0xAC, 12),
149 PINGROUP(LD16
, LCD
, DISPLAYA
, DISPLAYB
, XIO
, RSVD
, RSVD4
, 0x1C, 16, 0x98, 0, 0xAC, 12),
150 PINGROUP(LD17
, LCD
, DISPLAYA
, DISPLAYB
, RSVD
, RSVD
, RSVD4
, 0x1C, 17, 0x98, 2, 0xAC, 12),
151 PINGROUP(LD2
, LCD
, DISPLAYA
, DISPLAYB
, XIO
, RSVD
, RSVD4
, 0x1C, 2, 0x94, 4, 0xAC, 12),
152 PINGROUP(LD3
, LCD
, DISPLAYA
, DISPLAYB
, XIO
, RSVD
, RSVD4
, 0x1C, 3, 0x94, 6, 0xAC, 12),
153 PINGROUP(LD4
, LCD
, DISPLAYA
, DISPLAYB
, XIO
, RSVD
, RSVD4
, 0x1C, 4, 0x94, 8, 0xAC, 12),
154 PINGROUP(LD5
, LCD
, DISPLAYA
, DISPLAYB
, XIO
, RSVD
, RSVD4
, 0x1C, 5, 0x94, 10, 0xAC, 12),
155 PINGROUP(LD6
, LCD
, DISPLAYA
, DISPLAYB
, XIO
, RSVD
, RSVD4
, 0x1C, 6, 0x94, 12, 0xAC, 12),
156 PINGROUP(LD7
, LCD
, DISPLAYA
, DISPLAYB
, XIO
, RSVD
, RSVD4
, 0x1C, 7, 0x94, 14, 0xAC, 12),
157 PINGROUP(LD8
, LCD
, DISPLAYA
, DISPLAYB
, XIO
, RSVD
, RSVD4
, 0x1C, 8, 0x94, 16, 0xAC, 12),
158 PINGROUP(LD9
, LCD
, DISPLAYA
, DISPLAYB
, XIO
, RSVD
, RSVD4
, 0x1C, 9, 0x94, 18, 0xAC, 12),
159 PINGROUP(LDC
, LCD
, DISPLAYA
, DISPLAYB
, RSVD
, RSVD
, RSVD4
, 0x1C, 30, 0x90, 14, 0xAC, 20),
160 PINGROUP(LDI
, LCD
, DISPLAYA
, DISPLAYB
, RSVD
, RSVD
, RSVD4
, 0x20, 6, 0x98, 16, 0xAC, 18),
161 PINGROUP(LHP0
, LCD
, DISPLAYA
, DISPLAYB
, RSVD
, RSVD
, RSVD4
, 0x1C, 18, 0x98, 10, 0xAC, 16),
162 PINGROUP(LHP1
, LCD
, DISPLAYA
, DISPLAYB
, RSVD
, RSVD
, RSVD4
, 0x1C, 19, 0x98, 4, 0xAC, 14),
163 PINGROUP(LHP2
, LCD
, DISPLAYA
, DISPLAYB
, RSVD
, RSVD
, RSVD4
, 0x1C, 20, 0x98, 6, 0xAC, 14),
164 PINGROUP(LHS
, LCD
, DISPLAYA
, DISPLAYB
, XIO
, RSVD
, RSVD4
, 0x20, 7, 0x90, 22, 0xAC, 22),
165 PINGROUP(LM0
, LCD
, DISPLAYA
, DISPLAYB
, SPI3
, RSVD
, RSVD4
, 0x1C, 24, 0x90, 26, 0xAC, 22),
166 PINGROUP(LM1
, LCD
, DISPLAYA
, DISPLAYB
, RSVD
, CRT
, RSVD3
, 0x1C, 25, 0x90, 28, 0xAC, 22),
167 PINGROUP(LPP
, LCD
, DISPLAYA
, DISPLAYB
, RSVD
, RSVD
, RSVD4
, 0x20, 8, 0x98, 14, 0xAC, 18),
168 PINGROUP(LPW0
, LCD
, DISPLAYA
, DISPLAYB
, SPI3
, HDMI
, DISPLAYA
, 0x20, 3, 0x90, 0, 0xAC, 20),
169 PINGROUP(LPW1
, LCD
, DISPLAYA
, DISPLAYB
, RSVD
, RSVD
, RSVD4
, 0x20, 4, 0x90, 2, 0xAC, 20),
170 PINGROUP(LPW2
, LCD
, DISPLAYA
, DISPLAYB
, SPI3
, HDMI
, DISPLAYA
, 0x20, 5, 0x90, 4, 0xAC, 20),
171 PINGROUP(LSC0
, LCD
, DISPLAYA
, DISPLAYB
, XIO
, RSVD
, RSVD4
, 0x1C, 27, 0x90, 18, 0xAC, 22),
172 PINGROUP(LSC1
, LCD
, DISPLAYA
, DISPLAYB
, SPI3
, HDMI
, DISPLAYA
, 0x1C, 28, 0x90, 20, 0xAC, 20),
173 PINGROUP(LSCK
, LCD
, DISPLAYA
, DISPLAYB
, SPI3
, HDMI
, DISPLAYA
, 0x1C, 29, 0x90, 16, 0xAC, 20),
174 PINGROUP(LSDA
, LCD
, DISPLAYA
, DISPLAYB
, SPI3
, HDMI
, DISPLAYA
, 0x20, 1, 0x90, 8, 0xAC, 20),
175 PINGROUP(LSDI
, LCD
, DISPLAYA
, DISPLAYB
, SPI3
, RSVD
, DISPLAYA
, 0x20, 2, 0x90, 6, 0xAC, 20),
176 PINGROUP(LSPI
, LCD
, DISPLAYA
, DISPLAYB
, XIO
, HDMI
, DISPLAYA
, 0x20, 0, 0x90, 10, 0xAC, 22),
177 PINGROUP(LVP0
, LCD
, DISPLAYA
, DISPLAYB
, RSVD
, RSVD
, RSVD4
, 0x1C, 21, 0x90, 30, 0xAC, 22),
178 PINGROUP(LVP1
, LCD
, DISPLAYA
, DISPLAYB
, RSVD
, RSVD
, RSVD4
, 0x1C, 22, 0x98, 8, 0xAC, 16),
179 PINGROUP(LVS
, LCD
, DISPLAYA
, DISPLAYB
, XIO
, RSVD
, RSVD4
, 0x1C, 26, 0x90, 24, 0xAC, 22),
180 PINGROUP(OWC
, SYS
, OWR
, RSVD
, RSVD
, RSVD
, OWR
, 0x14, 31, 0x84, 8, 0xB0, 30),
181 PINGROUP(PMC
, SYS
, PWR_ON
, PWR_INTR
, RSVD
, RSVD
, PWR_ON
, 0x14, 23, 0x98, 18, -1, -1),
182 PINGROUP(PTA
, NAND
, I2C2
, HDMI
, GMI
, RSVD
, RSVD4
, 0x14, 24, 0x98, 22, 0xA4, 4),
183 PINGROUP(RM
, UART
, I2C
, RSVD
, RSVD
, RSVD
, RSVD4
, 0x14, 25, 0x80, 14, 0xA4, 0),
184 PINGROUP(SDB
, SD
, UARTA
, PWM
, SDIO3
, SPI2
, PWM
, 0x20, 15, 0x8C, 10, -1, -1),
185 PINGROUP(SDC
, SD
, PWM
, TWC
, SDIO3
, SPI3
, TWC
, 0x18, 1, 0x8C, 12, 0xAC, 28),
186 PINGROUP(SDD
, SD
, UARTA
, PWM
, SDIO3
, SPI3
, PWM
, 0x18, 2, 0x8C, 14, 0xAC, 30),
187 PINGROUP(SDIO1
, BB
, SDIO1
, RSVD
, UARTE
, UARTA
, RSVD2
, 0x14, 30, 0x80, 30, 0xB0, 18),
188 PINGROUP(SLXA
, SD
, PCIE
, SPI4
, SDIO3
, SPI2
, PCIE
, 0x18, 3, 0x84, 6, 0xA4, 22),
189 PINGROUP(SLXC
, SD
, SPDIF
, SPI4
, SDIO3
, SPI2
, SPI4
, 0x18, 5, 0x84, 10, 0xA4, 26),
190 PINGROUP(SLXD
, SD
, SPDIF
, SPI4
, SDIO3
, SPI2
, SPI4
, 0x18, 6, 0x84, 12, 0xA4, 28),
191 PINGROUP(SLXK
, SD
, PCIE
, SPI4
, SDIO3
, SPI2
, PCIE
, 0x18, 7, 0x84, 14, 0xA4, 30),
192 PINGROUP(SPDI
, AUDIO
, SPDIF
, RSVD
, I2C
, SDIO2
, RSVD2
, 0x18, 8, 0x8C, 8, 0xA4, 16),
193 PINGROUP(SPDO
, AUDIO
, SPDIF
, RSVD
, I2C
, SDIO2
, RSVD2
, 0x18, 9, 0x8C, 6, 0xA4, 18),
194 PINGROUP(SPIA
, AUDIO
, SPI1
, SPI2
, SPI3
, GMI
, GMI
, 0x18, 10, 0x8C, 30, 0xA8, 4),
195 PINGROUP(SPIB
, AUDIO
, SPI1
, SPI2
, SPI3
, GMI
, GMI
, 0x18, 11, 0x8C, 28, 0xA8, 6),
196 PINGROUP(SPIC
, AUDIO
, SPI1
, SPI2
, SPI3
, GMI
, GMI
, 0x18, 12, 0x8C, 26, 0xA8, 8),
197 PINGROUP(SPID
, AUDIO
, SPI2
, SPI1
, SPI2_ALT
, GMI
, GMI
, 0x18, 13, 0x8C, 24, 0xA8, 10),
198 PINGROUP(SPIE
, AUDIO
, SPI2
, SPI1
, SPI2_ALT
, GMI
, GMI
, 0x18, 14, 0x8C, 22, 0xA8, 12),
199 PINGROUP(SPIF
, AUDIO
, SPI3
, SPI1
, SPI2
, RSVD
, RSVD4
, 0x18, 15, 0x8C, 20, 0xA8, 14),
200 PINGROUP(SPIG
, AUDIO
, SPI3
, SPI2
, SPI2_ALT
, I2C
, SPI2_ALT
, 0x18, 16, 0x8C, 18, 0xA8, 16),
201 PINGROUP(SPIH
, AUDIO
, SPI3
, SPI2
, SPI2_ALT
, I2C
, SPI2_ALT
, 0x18, 17, 0x8C, 16, 0xA8, 18),
202 PINGROUP(UAA
, BB
, SPI3
, MIPI_HS
, UARTA
, ULPI
, MIPI_HS
, 0x18, 18, 0x80, 0, 0xAC, 0),
203 PINGROUP(UAB
, BB
, SPI2
, MIPI_HS
, UARTA
, ULPI
, MIPI_HS
, 0x18, 19, 0x80, 2, 0xAC, 2),
204 PINGROUP(UAC
, BB
, OWR
, RSVD
, RSVD
, RSVD
, RSVD4
, 0x18, 20, 0x80, 4, 0xAC, 4),
205 PINGROUP(UAD
, UART
, IRDA
, SPDIF
, UARTA
, SPI4
, SPDIF
, 0x18, 21, 0x80, 6, 0xAC, 6),
206 PINGROUP(UCA
, UART
, UARTC
, RSVD
, GMI
, RSVD
, RSVD4
, 0x18, 22, 0x84, 16, 0xAC, 8),
207 PINGROUP(UCB
, UART
, UARTC
, PWM
, GMI
, RSVD
, RSVD4
, 0x18, 23, 0x84, 18, 0xAC, 10),
208 PINGROUP(UDA
, BB
, SPI1
, RSVD
, UARTD
, ULPI
, RSVD2
, 0x20, 13, 0x80, 8, 0xB0, 16),
209 /* these pin groups only have pullup and pull down control */
210 PINGROUP(CK32
, SYS
, RSVD
, RSVD
, RSVD
, RSVD
, RSVD
, -1, -1, -1, -1, 0xB0, 14),
211 PINGROUP(DDRC
, DDR
, RSVD
, RSVD
, RSVD
, RSVD
, RSVD
, -1, -1, -1, -1, 0xAC, 26),
212 PINGROUP(PMCA
, SYS
, RSVD
, RSVD
, RSVD
, RSVD
, RSVD
, -1, -1, -1, -1, 0xB0, 4),
213 PINGROUP(PMCB
, SYS
, RSVD
, RSVD
, RSVD
, RSVD
, RSVD
, -1, -1, -1, -1, 0xB0, 6),
214 PINGROUP(PMCC
, SYS
, RSVD
, RSVD
, RSVD
, RSVD
, RSVD
, -1, -1, -1, -1, 0xB0, 8),
215 PINGROUP(PMCD
, SYS
, RSVD
, RSVD
, RSVD
, RSVD
, RSVD
, -1, -1, -1, -1, 0xB0, 10),
216 PINGROUP(PMCE
, SYS
, RSVD
, RSVD
, RSVD
, RSVD
, RSVD
, -1, -1, -1, -1, 0xB0, 12),
217 PINGROUP(XM2C
, DDR
, RSVD
, RSVD
, RSVD
, RSVD
, RSVD
, -1, -1, -1, -1, 0xA8, 30),
218 PINGROUP(XM2D
, DDR
, RSVD
, RSVD
, RSVD
, RSVD
, RSVD
, -1, -1, -1, -1, 0xA8, 28),
222 #define TRISTATE_REG_A 0x14
223 #define TRISTATE_REG_NUM 4
224 #define PIN_MUX_CTL_REG_A 0x80
225 #define PIN_MUX_CTL_REG_NUM 8
226 #define PULLUPDOWN_REG_A 0xa0
227 #define PULLUPDOWN_REG_NUM 5
229 static u32 pinmux_reg
[TRISTATE_REG_NUM
+ PIN_MUX_CTL_REG_NUM
+
231 ARRAY_SIZE(tegra_soc_drive_pingroups
)];
233 static inline unsigned long pg_readl(unsigned long offset
)
235 return readl(IO_TO_VIRT(TEGRA_APB_MISC_BASE
+ offset
));
238 static inline void pg_writel(unsigned long value
, unsigned long offset
)
240 writel(value
, IO_TO_VIRT(TEGRA_APB_MISC_BASE
+ offset
));
243 void tegra_pinmux_suspend(void)
246 u32
*ctx
= pinmux_reg
;
248 for (i
= 0; i
< PIN_MUX_CTL_REG_NUM
; i
++)
249 *ctx
++ = pg_readl(PIN_MUX_CTL_REG_A
+ i
*4);
251 for (i
= 0; i
< PULLUPDOWN_REG_NUM
; i
++)
252 *ctx
++ = pg_readl(PULLUPDOWN_REG_A
+ i
*4);
254 for (i
= 0; i
< TRISTATE_REG_NUM
; i
++)
255 *ctx
++ = pg_readl(TRISTATE_REG_A
+ i
*4);
257 for (i
= 0; i
< ARRAY_SIZE(tegra_soc_drive_pingroups
); i
++)
258 *ctx
++ = pg_readl(tegra_soc_drive_pingroups
[i
].reg
);
261 void tegra_pinmux_resume(void)
264 u32
*ctx
= pinmux_reg
;
266 for (i
= 0; i
< PIN_MUX_CTL_REG_NUM
; i
++)
267 pg_writel(*ctx
++, PIN_MUX_CTL_REG_A
+ i
*4);
269 for (i
= 0; i
< PULLUPDOWN_REG_NUM
; i
++)
270 pg_writel(*ctx
++, PULLUPDOWN_REG_A
+ i
*4);
272 for (i
= 0; i
< TRISTATE_REG_NUM
; i
++)
273 pg_writel(*ctx
++, TRISTATE_REG_A
+ i
*4);
275 for (i
= 0; i
< ARRAY_SIZE(tegra_soc_drive_pingroups
); i
++)
276 pg_writel(*ctx
++, tegra_soc_drive_pingroups
[i
].reg
);