2 * Copyright (C) 2010,2011 NVIDIA Corporation
3 * Copyright (C) 2011 Google, Inc.
5 * This software is licensed under the terms of the GNU General Public
6 * License version 2, as published by the Free Software Foundation, and
7 * may be copied, distributed, and modified under those terms.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
16 #include <linux/kernel.h>
17 #include <linux/init.h>
18 #include <linux/gpio.h>
20 #include <mach/pinmux.h>
21 #include <mach/pinmux-t2.h>
23 #include "gpio-names.h"
24 #include "board-seaboard.h"
27 #define DEFAULT_DRIVE(_name) \
29 .pingroup = TEGRA_DRIVE_PINGROUP_##_name, \
30 .hsm = TEGRA_HSM_DISABLE, \
31 .schmitt = TEGRA_SCHMITT_ENABLE, \
32 .drive = TEGRA_DRIVE_DIV_1, \
33 .pull_down = TEGRA_PULL_31, \
34 .pull_up = TEGRA_PULL_31, \
35 .slew_rising = TEGRA_SLEW_SLOWEST, \
36 .slew_falling = TEGRA_SLEW_SLOWEST, \
39 static __initdata
struct tegra_drive_pingroup_config seaboard_drive_pinmux
[] = {
43 static __initdata
struct tegra_pingroup_config seaboard_pinmux
[] = {
44 {TEGRA_PINGROUP_ATA
, TEGRA_MUX_IDE
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
45 {TEGRA_PINGROUP_ATB
, TEGRA_MUX_SDIO4
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
46 {TEGRA_PINGROUP_ATC
, TEGRA_MUX_NAND
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
47 {TEGRA_PINGROUP_ATD
, TEGRA_MUX_GMI
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
48 {TEGRA_PINGROUP_ATE
, TEGRA_MUX_GMI
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_TRISTATE
},
49 {TEGRA_PINGROUP_CDEV1
, TEGRA_MUX_PLLA_OUT
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
50 {TEGRA_PINGROUP_CDEV2
, TEGRA_MUX_PLLP_OUT4
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
51 {TEGRA_PINGROUP_CRTP
, TEGRA_MUX_CRT
, TEGRA_PUPD_PULL_UP
, TEGRA_TRI_TRISTATE
},
52 {TEGRA_PINGROUP_CSUS
, TEGRA_MUX_VI_SENSOR_CLK
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_TRISTATE
},
53 {TEGRA_PINGROUP_DAP1
, TEGRA_MUX_DAP1
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
54 {TEGRA_PINGROUP_DAP2
, TEGRA_MUX_DAP2
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
55 {TEGRA_PINGROUP_DAP3
, TEGRA_MUX_DAP3
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_TRISTATE
},
56 {TEGRA_PINGROUP_DAP4
, TEGRA_MUX_DAP4
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
57 {TEGRA_PINGROUP_DDC
, TEGRA_MUX_RSVD2
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_TRISTATE
},
58 {TEGRA_PINGROUP_DTA
, TEGRA_MUX_VI
, TEGRA_PUPD_PULL_DOWN
, TEGRA_TRI_NORMAL
},
59 {TEGRA_PINGROUP_DTB
, TEGRA_MUX_VI
, TEGRA_PUPD_PULL_DOWN
, TEGRA_TRI_NORMAL
},
60 {TEGRA_PINGROUP_DTC
, TEGRA_MUX_VI
, TEGRA_PUPD_PULL_DOWN
, TEGRA_TRI_NORMAL
},
61 {TEGRA_PINGROUP_DTD
, TEGRA_MUX_VI
, TEGRA_PUPD_PULL_DOWN
, TEGRA_TRI_NORMAL
},
62 {TEGRA_PINGROUP_DTE
, TEGRA_MUX_VI
, TEGRA_PUPD_PULL_DOWN
, TEGRA_TRI_TRISTATE
},
63 {TEGRA_PINGROUP_DTF
, TEGRA_MUX_I2C3
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
64 {TEGRA_PINGROUP_GMA
, TEGRA_MUX_SDIO4
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
65 {TEGRA_PINGROUP_GMB
, TEGRA_MUX_GMI
, TEGRA_PUPD_PULL_UP
, TEGRA_TRI_TRISTATE
},
66 {TEGRA_PINGROUP_GMC
, TEGRA_MUX_UARTD
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
67 {TEGRA_PINGROUP_GMD
, TEGRA_MUX_SFLASH
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
68 {TEGRA_PINGROUP_GME
, TEGRA_MUX_SDIO4
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
69 {TEGRA_PINGROUP_GPU
, TEGRA_MUX_PWM
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
70 {TEGRA_PINGROUP_GPU7
, TEGRA_MUX_RTCK
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
71 {TEGRA_PINGROUP_GPV
, TEGRA_MUX_PCIE
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_TRISTATE
},
72 {TEGRA_PINGROUP_HDINT
, TEGRA_MUX_HDMI
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_TRISTATE
},
73 {TEGRA_PINGROUP_I2CP
, TEGRA_MUX_I2C
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
74 {TEGRA_PINGROUP_IRRX
, TEGRA_MUX_UARTB
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
75 {TEGRA_PINGROUP_IRTX
, TEGRA_MUX_UARTB
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
76 {TEGRA_PINGROUP_KBCA
, TEGRA_MUX_KBC
, TEGRA_PUPD_PULL_UP
, TEGRA_TRI_NORMAL
},
77 {TEGRA_PINGROUP_KBCB
, TEGRA_MUX_KBC
, TEGRA_PUPD_PULL_UP
, TEGRA_TRI_NORMAL
},
78 {TEGRA_PINGROUP_KBCC
, TEGRA_MUX_KBC
, TEGRA_PUPD_PULL_UP
, TEGRA_TRI_NORMAL
},
79 {TEGRA_PINGROUP_KBCD
, TEGRA_MUX_KBC
, TEGRA_PUPD_PULL_UP
, TEGRA_TRI_NORMAL
},
80 {TEGRA_PINGROUP_KBCE
, TEGRA_MUX_KBC
, TEGRA_PUPD_PULL_UP
, TEGRA_TRI_NORMAL
},
81 {TEGRA_PINGROUP_KBCF
, TEGRA_MUX_KBC
, TEGRA_PUPD_PULL_UP
, TEGRA_TRI_NORMAL
},
82 {TEGRA_PINGROUP_LCSN
, TEGRA_MUX_RSVD4
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_TRISTATE
},
83 {TEGRA_PINGROUP_LD0
, TEGRA_MUX_DISPLAYA
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
84 {TEGRA_PINGROUP_LD1
, TEGRA_MUX_DISPLAYA
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
85 {TEGRA_PINGROUP_LD10
, TEGRA_MUX_DISPLAYA
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
86 {TEGRA_PINGROUP_LD11
, TEGRA_MUX_DISPLAYA
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
87 {TEGRA_PINGROUP_LD12
, TEGRA_MUX_DISPLAYA
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
88 {TEGRA_PINGROUP_LD13
, TEGRA_MUX_DISPLAYA
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
89 {TEGRA_PINGROUP_LD14
, TEGRA_MUX_DISPLAYA
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
90 {TEGRA_PINGROUP_LD15
, TEGRA_MUX_DISPLAYA
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
91 {TEGRA_PINGROUP_LD16
, TEGRA_MUX_DISPLAYA
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
92 {TEGRA_PINGROUP_LD17
, TEGRA_MUX_DISPLAYA
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
93 {TEGRA_PINGROUP_LD2
, TEGRA_MUX_DISPLAYA
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
94 {TEGRA_PINGROUP_LD3
, TEGRA_MUX_DISPLAYA
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
95 {TEGRA_PINGROUP_LD4
, TEGRA_MUX_DISPLAYA
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
96 {TEGRA_PINGROUP_LD5
, TEGRA_MUX_DISPLAYA
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
97 {TEGRA_PINGROUP_LD6
, TEGRA_MUX_DISPLAYA
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
98 {TEGRA_PINGROUP_LD7
, TEGRA_MUX_DISPLAYA
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
99 {TEGRA_PINGROUP_LD8
, TEGRA_MUX_DISPLAYA
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
100 {TEGRA_PINGROUP_LD9
, TEGRA_MUX_DISPLAYA
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
101 {TEGRA_PINGROUP_LDC
, TEGRA_MUX_RSVD4
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_TRISTATE
},
102 {TEGRA_PINGROUP_LDI
, TEGRA_MUX_DISPLAYA
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
103 {TEGRA_PINGROUP_LHP0
, TEGRA_MUX_DISPLAYA
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
104 {TEGRA_PINGROUP_LHP1
, TEGRA_MUX_DISPLAYA
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
105 {TEGRA_PINGROUP_LHP2
, TEGRA_MUX_DISPLAYA
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
106 {TEGRA_PINGROUP_LHS
, TEGRA_MUX_DISPLAYA
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
107 {TEGRA_PINGROUP_LM0
, TEGRA_MUX_RSVD4
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
108 {TEGRA_PINGROUP_LM1
, TEGRA_MUX_CRT
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_TRISTATE
},
109 {TEGRA_PINGROUP_LPP
, TEGRA_MUX_DISPLAYA
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
110 {TEGRA_PINGROUP_LPW0
, TEGRA_MUX_HDMI
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
111 {TEGRA_PINGROUP_LPW1
, TEGRA_MUX_RSVD4
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_TRISTATE
},
112 {TEGRA_PINGROUP_LPW2
, TEGRA_MUX_HDMI
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
113 {TEGRA_PINGROUP_LSC0
, TEGRA_MUX_DISPLAYA
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
114 {TEGRA_PINGROUP_LSC1
, TEGRA_MUX_HDMI
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_TRISTATE
},
115 {TEGRA_PINGROUP_LSCK
, TEGRA_MUX_HDMI
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_TRISTATE
},
116 {TEGRA_PINGROUP_LSDA
, TEGRA_MUX_HDMI
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_TRISTATE
},
117 {TEGRA_PINGROUP_LSDI
, TEGRA_MUX_RSVD4
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_TRISTATE
},
118 {TEGRA_PINGROUP_LSPI
, TEGRA_MUX_DISPLAYA
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
119 {TEGRA_PINGROUP_LVP0
, TEGRA_MUX_RSVD4
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_TRISTATE
},
120 {TEGRA_PINGROUP_LVP1
, TEGRA_MUX_DISPLAYA
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
121 {TEGRA_PINGROUP_LVS
, TEGRA_MUX_DISPLAYA
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
122 {TEGRA_PINGROUP_OWC
, TEGRA_MUX_RSVD2
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_TRISTATE
},
123 {TEGRA_PINGROUP_PMC
, TEGRA_MUX_PWR_ON
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
124 {TEGRA_PINGROUP_PTA
, TEGRA_MUX_HDMI
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
125 {TEGRA_PINGROUP_RM
, TEGRA_MUX_I2C
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
126 {TEGRA_PINGROUP_SDB
, TEGRA_MUX_SDIO3
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
127 {TEGRA_PINGROUP_SDC
, TEGRA_MUX_SDIO3
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
128 {TEGRA_PINGROUP_SDD
, TEGRA_MUX_SDIO3
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
129 {TEGRA_PINGROUP_SDIO1
, TEGRA_MUX_SDIO1
, TEGRA_PUPD_PULL_UP
, TEGRA_TRI_NORMAL
},
130 {TEGRA_PINGROUP_SLXA
, TEGRA_MUX_PCIE
, TEGRA_PUPD_PULL_UP
, TEGRA_TRI_TRISTATE
},
131 {TEGRA_PINGROUP_SLXC
, TEGRA_MUX_SPDIF
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_TRISTATE
},
132 {TEGRA_PINGROUP_SLXD
, TEGRA_MUX_SPDIF
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
133 {TEGRA_PINGROUP_SLXK
, TEGRA_MUX_PCIE
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
134 {TEGRA_PINGROUP_SPDI
, TEGRA_MUX_RSVD2
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
135 {TEGRA_PINGROUP_SPDO
, TEGRA_MUX_RSVD2
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
136 {TEGRA_PINGROUP_SPIA
, TEGRA_MUX_GMI
, TEGRA_PUPD_PULL_UP
, TEGRA_TRI_TRISTATE
},
137 {TEGRA_PINGROUP_SPIB
, TEGRA_MUX_GMI
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_TRISTATE
},
138 {TEGRA_PINGROUP_SPIC
, TEGRA_MUX_GMI
, TEGRA_PUPD_PULL_UP
, TEGRA_TRI_NORMAL
},
139 {TEGRA_PINGROUP_SPID
, TEGRA_MUX_SPI1
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_TRISTATE
},
140 {TEGRA_PINGROUP_SPIE
, TEGRA_MUX_SPI1
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_TRISTATE
},
141 {TEGRA_PINGROUP_SPIF
, TEGRA_MUX_SPI1
, TEGRA_PUPD_PULL_DOWN
, TEGRA_TRI_TRISTATE
},
142 {TEGRA_PINGROUP_SPIG
, TEGRA_MUX_SPI2_ALT
, TEGRA_PUPD_PULL_UP
, TEGRA_TRI_TRISTATE
},
143 {TEGRA_PINGROUP_SPIH
, TEGRA_MUX_SPI2_ALT
, TEGRA_PUPD_PULL_UP
, TEGRA_TRI_TRISTATE
},
144 {TEGRA_PINGROUP_UAA
, TEGRA_MUX_ULPI
, TEGRA_PUPD_PULL_UP
, TEGRA_TRI_NORMAL
},
145 {TEGRA_PINGROUP_UAB
, TEGRA_MUX_ULPI
, TEGRA_PUPD_PULL_UP
, TEGRA_TRI_NORMAL
},
146 {TEGRA_PINGROUP_UAC
, TEGRA_MUX_RSVD2
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
147 {TEGRA_PINGROUP_UAD
, TEGRA_MUX_IRDA
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
148 {TEGRA_PINGROUP_UCA
, TEGRA_MUX_UARTC
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
149 {TEGRA_PINGROUP_UCB
, TEGRA_MUX_UARTC
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
150 {TEGRA_PINGROUP_UDA
, TEGRA_MUX_ULPI
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
151 {TEGRA_PINGROUP_CK32
, TEGRA_MUX_NONE
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
152 {TEGRA_PINGROUP_DDRC
, TEGRA_MUX_NONE
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
153 {TEGRA_PINGROUP_PMCA
, TEGRA_MUX_NONE
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
154 {TEGRA_PINGROUP_PMCB
, TEGRA_MUX_NONE
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
155 {TEGRA_PINGROUP_PMCC
, TEGRA_MUX_NONE
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
156 {TEGRA_PINGROUP_PMCD
, TEGRA_MUX_NONE
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
157 {TEGRA_PINGROUP_PMCE
, TEGRA_MUX_NONE
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
158 {TEGRA_PINGROUP_XM2C
, TEGRA_MUX_NONE
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
159 {TEGRA_PINGROUP_XM2D
, TEGRA_MUX_NONE
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
162 static __initdata
struct tegra_pingroup_config ventana_pinmux
[] = {
163 {TEGRA_PINGROUP_DAP3
, TEGRA_MUX_DAP3
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_TRISTATE
},
164 {TEGRA_PINGROUP_DDC
, TEGRA_MUX_RSVD2
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
165 {TEGRA_PINGROUP_DTA
, TEGRA_MUX_VI
, TEGRA_PUPD_PULL_DOWN
, TEGRA_TRI_NORMAL
},
166 {TEGRA_PINGROUP_DTB
, TEGRA_MUX_VI
, TEGRA_PUPD_PULL_DOWN
, TEGRA_TRI_NORMAL
},
167 {TEGRA_PINGROUP_DTC
, TEGRA_MUX_VI
, TEGRA_PUPD_PULL_DOWN
, TEGRA_TRI_NORMAL
},
168 {TEGRA_PINGROUP_DTD
, TEGRA_MUX_VI
, TEGRA_PUPD_PULL_DOWN
, TEGRA_TRI_NORMAL
},
169 {TEGRA_PINGROUP_GMD
, TEGRA_MUX_SFLASH
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_TRISTATE
},
170 {TEGRA_PINGROUP_LPW0
, TEGRA_MUX_RSVD4
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
171 {TEGRA_PINGROUP_LPW2
, TEGRA_MUX_RSVD4
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
172 {TEGRA_PINGROUP_LSC1
, TEGRA_MUX_RSVD4
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
173 {TEGRA_PINGROUP_LSCK
, TEGRA_MUX_RSVD4
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_TRISTATE
},
174 {TEGRA_PINGROUP_LSDA
, TEGRA_MUX_RSVD4
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_TRISTATE
},
175 {TEGRA_PINGROUP_PTA
, TEGRA_MUX_RSVD2
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
176 {TEGRA_PINGROUP_SLXC
, TEGRA_MUX_SDIO3
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
177 {TEGRA_PINGROUP_SLXK
, TEGRA_MUX_SDIO3
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_NORMAL
},
178 {TEGRA_PINGROUP_SPIA
, TEGRA_MUX_GMI
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_TRISTATE
},
179 {TEGRA_PINGROUP_SPIC
, TEGRA_MUX_GMI
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_TRISTATE
},
180 {TEGRA_PINGROUP_SPIG
, TEGRA_MUX_SPI2_ALT
, TEGRA_PUPD_NORMAL
, TEGRA_TRI_TRISTATE
},
183 static struct platform_device
*pinmux_devices
[] = {
185 &tegra_pinmux_device
,
188 static struct tegra_gpio_table common_gpio_table
[] = {
189 { .gpio
= TEGRA_GPIO_SD2_CD
, .enable
= true },
190 { .gpio
= TEGRA_GPIO_SD2_WP
, .enable
= true },
191 { .gpio
= TEGRA_GPIO_SD2_POWER
, .enable
= true },
192 { .gpio
= TEGRA_GPIO_LIDSWITCH
, .enable
= true },
193 { .gpio
= TEGRA_GPIO_POWERKEY
, .enable
= true },
194 { .gpio
= TEGRA_GPIO_ISL29018_IRQ
, .enable
= true },
195 { .gpio
= TEGRA_GPIO_CDC_IRQ
, .enable
= true },
196 { .gpio
= TEGRA_GPIO_USB1
, .enable
= true },
199 static void __init
update_pinmux(struct tegra_pingroup_config
*newtbl
, int size
)
202 struct tegra_pingroup_config
*new_pingroup
, *base_pingroup
;
204 /* Update base seaboard pinmux table with secondary board
205 * specific pinmux table table.
207 for (i
= 0; i
< size
; i
++) {
208 new_pingroup
= &newtbl
[i
];
209 for (j
= 0; j
< ARRAY_SIZE(seaboard_pinmux
); j
++) {
210 base_pingroup
= &seaboard_pinmux
[j
];
211 if (new_pingroup
->pingroup
== base_pingroup
->pingroup
) {
212 *base_pingroup
= *new_pingroup
;
219 void __init
seaboard_common_pinmux_init(void)
221 platform_add_devices(pinmux_devices
, ARRAY_SIZE(pinmux_devices
));
223 tegra_pinmux_config_table(seaboard_pinmux
, ARRAY_SIZE(seaboard_pinmux
));
225 tegra_drive_pinmux_config_table(seaboard_drive_pinmux
,
226 ARRAY_SIZE(seaboard_drive_pinmux
));
228 tegra_gpio_config(common_gpio_table
, ARRAY_SIZE(common_gpio_table
));
231 void __init
seaboard_pinmux_init(void)
233 seaboard_common_pinmux_init();
236 void __init
ventana_pinmux_init(void)
238 update_pinmux(ventana_pinmux
, ARRAY_SIZE(ventana_pinmux
));
239 seaboard_common_pinmux_init();