2011-02-19 17:25:32 -08:00
/*
2011-10-12 14:53:03 +03:00
* Copyright ( C ) 2010 , 2011 NVIDIA Corporation
* Copyright ( C ) 2011 Google , Inc .
2011-02-19 17:25:32 -08:00
*
* This software is licensed under the terms of the GNU General Public
* License version 2 , as published by the Free Software Foundation , and
* may be copied , distributed , and modified under those terms .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
*/
# include <linux/kernel.h>
# include <linux/init.h>
# include <linux/gpio.h>
# include <mach/pinmux.h>
# include <mach/pinmux-t2.h>
# include "gpio-names.h"
# include "board-seaboard.h"
2011-10-11 16:16:12 -06:00
# include "devices.h"
2011-02-19 17:25:32 -08:00
# define DEFAULT_DRIVE(_name) \
{ \
. pingroup = TEGRA_DRIVE_PINGROUP_ # # _name , \
. hsm = TEGRA_HSM_DISABLE , \
. schmitt = TEGRA_SCHMITT_ENABLE , \
. drive = TEGRA_DRIVE_DIV_1 , \
. pull_down = TEGRA_PULL_31 , \
. pull_up = TEGRA_PULL_31 , \
. slew_rising = TEGRA_SLEW_SLOWEST , \
. slew_falling = TEGRA_SLEW_SLOWEST , \
}
static __initdata struct tegra_drive_pingroup_config seaboard_drive_pinmux [ ] = {
DEFAULT_DRIVE ( SDIO1 ) ,
} ;
static __initdata struct tegra_pingroup_config seaboard_pinmux [ ] = {
{ TEGRA_PINGROUP_ATA , TEGRA_MUX_IDE , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_ATB , TEGRA_MUX_SDIO4 , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_ATC , TEGRA_MUX_NAND , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_ATD , TEGRA_MUX_GMI , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_ATE , TEGRA_MUX_GMI , TEGRA_PUPD_NORMAL , TEGRA_TRI_TRISTATE } ,
{ TEGRA_PINGROUP_CDEV1 , TEGRA_MUX_PLLA_OUT , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_CDEV2 , TEGRA_MUX_PLLP_OUT4 , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_CRTP , TEGRA_MUX_CRT , TEGRA_PUPD_PULL_UP , TEGRA_TRI_TRISTATE } ,
{ TEGRA_PINGROUP_CSUS , TEGRA_MUX_VI_SENSOR_CLK , TEGRA_PUPD_NORMAL , TEGRA_TRI_TRISTATE } ,
{ TEGRA_PINGROUP_DAP1 , TEGRA_MUX_DAP1 , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
2011-08-08 14:35:14 -06:00
{ TEGRA_PINGROUP_DAP2 , TEGRA_MUX_DAP2 , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
2011-02-19 17:25:32 -08:00
{ TEGRA_PINGROUP_DAP3 , TEGRA_MUX_DAP3 , TEGRA_PUPD_NORMAL , TEGRA_TRI_TRISTATE } ,
{ TEGRA_PINGROUP_DAP4 , TEGRA_MUX_DAP4 , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_DDC , TEGRA_MUX_RSVD2 , TEGRA_PUPD_NORMAL , TEGRA_TRI_TRISTATE } ,
{ TEGRA_PINGROUP_DTA , TEGRA_MUX_VI , TEGRA_PUPD_PULL_DOWN , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_DTB , TEGRA_MUX_VI , TEGRA_PUPD_PULL_DOWN , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_DTC , TEGRA_MUX_VI , TEGRA_PUPD_PULL_DOWN , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_DTD , TEGRA_MUX_VI , TEGRA_PUPD_PULL_DOWN , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_DTE , TEGRA_MUX_VI , TEGRA_PUPD_PULL_DOWN , TEGRA_TRI_TRISTATE } ,
{ TEGRA_PINGROUP_DTF , TEGRA_MUX_I2C3 , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_GMA , TEGRA_MUX_SDIO4 , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_GMB , TEGRA_MUX_GMI , TEGRA_PUPD_PULL_UP , TEGRA_TRI_TRISTATE } ,
{ TEGRA_PINGROUP_GMC , TEGRA_MUX_UARTD , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_GMD , TEGRA_MUX_SFLASH , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_GME , TEGRA_MUX_SDIO4 , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_GPU , TEGRA_MUX_PWM , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_GPU7 , TEGRA_MUX_RTCK , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_GPV , TEGRA_MUX_PCIE , TEGRA_PUPD_NORMAL , TEGRA_TRI_TRISTATE } ,
{ TEGRA_PINGROUP_HDINT , TEGRA_MUX_HDMI , TEGRA_PUPD_NORMAL , TEGRA_TRI_TRISTATE } ,
{ TEGRA_PINGROUP_I2CP , TEGRA_MUX_I2C , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_IRRX , TEGRA_MUX_UARTB , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_IRTX , TEGRA_MUX_UARTB , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_KBCA , TEGRA_MUX_KBC , TEGRA_PUPD_PULL_UP , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_KBCB , TEGRA_MUX_KBC , TEGRA_PUPD_PULL_UP , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_KBCC , TEGRA_MUX_KBC , TEGRA_PUPD_PULL_UP , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_KBCD , TEGRA_MUX_KBC , TEGRA_PUPD_PULL_UP , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_KBCE , TEGRA_MUX_KBC , TEGRA_PUPD_PULL_UP , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_KBCF , TEGRA_MUX_KBC , TEGRA_PUPD_PULL_UP , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_LCSN , TEGRA_MUX_RSVD4 , TEGRA_PUPD_NORMAL , TEGRA_TRI_TRISTATE } ,
{ TEGRA_PINGROUP_LD0 , TEGRA_MUX_DISPLAYA , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_LD1 , TEGRA_MUX_DISPLAYA , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_LD10 , TEGRA_MUX_DISPLAYA , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_LD11 , TEGRA_MUX_DISPLAYA , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_LD12 , TEGRA_MUX_DISPLAYA , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_LD13 , TEGRA_MUX_DISPLAYA , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_LD14 , TEGRA_MUX_DISPLAYA , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_LD15 , TEGRA_MUX_DISPLAYA , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_LD16 , TEGRA_MUX_DISPLAYA , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_LD17 , TEGRA_MUX_DISPLAYA , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_LD2 , TEGRA_MUX_DISPLAYA , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_LD3 , TEGRA_MUX_DISPLAYA , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_LD4 , TEGRA_MUX_DISPLAYA , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_LD5 , TEGRA_MUX_DISPLAYA , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_LD6 , TEGRA_MUX_DISPLAYA , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_LD7 , TEGRA_MUX_DISPLAYA , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_LD8 , TEGRA_MUX_DISPLAYA , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_LD9 , TEGRA_MUX_DISPLAYA , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_LDC , TEGRA_MUX_RSVD4 , TEGRA_PUPD_NORMAL , TEGRA_TRI_TRISTATE } ,
{ TEGRA_PINGROUP_LDI , TEGRA_MUX_DISPLAYA , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_LHP0 , TEGRA_MUX_DISPLAYA , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_LHP1 , TEGRA_MUX_DISPLAYA , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_LHP2 , TEGRA_MUX_DISPLAYA , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_LHS , TEGRA_MUX_DISPLAYA , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_LM0 , TEGRA_MUX_RSVD4 , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_LM1 , TEGRA_MUX_CRT , TEGRA_PUPD_NORMAL , TEGRA_TRI_TRISTATE } ,
{ TEGRA_PINGROUP_LPP , TEGRA_MUX_DISPLAYA , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_LPW0 , TEGRA_MUX_HDMI , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_LPW1 , TEGRA_MUX_RSVD4 , TEGRA_PUPD_NORMAL , TEGRA_TRI_TRISTATE } ,
{ TEGRA_PINGROUP_LPW2 , TEGRA_MUX_HDMI , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_LSC0 , TEGRA_MUX_DISPLAYA , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_LSC1 , TEGRA_MUX_HDMI , TEGRA_PUPD_NORMAL , TEGRA_TRI_TRISTATE } ,
{ TEGRA_PINGROUP_LSCK , TEGRA_MUX_HDMI , TEGRA_PUPD_NORMAL , TEGRA_TRI_TRISTATE } ,
{ TEGRA_PINGROUP_LSDA , TEGRA_MUX_HDMI , TEGRA_PUPD_NORMAL , TEGRA_TRI_TRISTATE } ,
{ TEGRA_PINGROUP_LSDI , TEGRA_MUX_RSVD4 , TEGRA_PUPD_NORMAL , TEGRA_TRI_TRISTATE } ,
{ TEGRA_PINGROUP_LSPI , TEGRA_MUX_DISPLAYA , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_LVP0 , TEGRA_MUX_RSVD4 , TEGRA_PUPD_NORMAL , TEGRA_TRI_TRISTATE } ,
{ TEGRA_PINGROUP_LVP1 , TEGRA_MUX_DISPLAYA , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_LVS , TEGRA_MUX_DISPLAYA , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_OWC , TEGRA_MUX_RSVD2 , TEGRA_PUPD_NORMAL , TEGRA_TRI_TRISTATE } ,
{ TEGRA_PINGROUP_PMC , TEGRA_MUX_PWR_ON , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_PTA , TEGRA_MUX_HDMI , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_RM , TEGRA_MUX_I2C , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_SDB , TEGRA_MUX_SDIO3 , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_SDC , TEGRA_MUX_SDIO3 , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_SDD , TEGRA_MUX_SDIO3 , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_SDIO1 , TEGRA_MUX_SDIO1 , TEGRA_PUPD_PULL_UP , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_SLXA , TEGRA_MUX_PCIE , TEGRA_PUPD_PULL_UP , TEGRA_TRI_TRISTATE } ,
{ TEGRA_PINGROUP_SLXC , TEGRA_MUX_SPDIF , TEGRA_PUPD_NORMAL , TEGRA_TRI_TRISTATE } ,
{ TEGRA_PINGROUP_SLXD , TEGRA_MUX_SPDIF , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_SLXK , TEGRA_MUX_PCIE , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_SPDI , TEGRA_MUX_RSVD2 , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_SPDO , TEGRA_MUX_RSVD2 , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_SPIA , TEGRA_MUX_GMI , TEGRA_PUPD_PULL_UP , TEGRA_TRI_TRISTATE } ,
{ TEGRA_PINGROUP_SPIB , TEGRA_MUX_GMI , TEGRA_PUPD_NORMAL , TEGRA_TRI_TRISTATE } ,
2011-08-08 14:35:14 -06:00
{ TEGRA_PINGROUP_SPIC , TEGRA_MUX_GMI , TEGRA_PUPD_PULL_UP , TEGRA_TRI_NORMAL } ,
2011-02-19 17:25:32 -08:00
{ TEGRA_PINGROUP_SPID , TEGRA_MUX_SPI1 , TEGRA_PUPD_NORMAL , TEGRA_TRI_TRISTATE } ,
{ TEGRA_PINGROUP_SPIE , TEGRA_MUX_SPI1 , TEGRA_PUPD_NORMAL , TEGRA_TRI_TRISTATE } ,
{ TEGRA_PINGROUP_SPIF , TEGRA_MUX_SPI1 , TEGRA_PUPD_PULL_DOWN , TEGRA_TRI_TRISTATE } ,
{ TEGRA_PINGROUP_SPIG , TEGRA_MUX_SPI2_ALT , TEGRA_PUPD_PULL_UP , TEGRA_TRI_TRISTATE } ,
{ TEGRA_PINGROUP_SPIH , TEGRA_MUX_SPI2_ALT , TEGRA_PUPD_PULL_UP , TEGRA_TRI_TRISTATE } ,
{ TEGRA_PINGROUP_UAA , TEGRA_MUX_ULPI , TEGRA_PUPD_PULL_UP , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_UAB , TEGRA_MUX_ULPI , TEGRA_PUPD_PULL_UP , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_UAC , TEGRA_MUX_RSVD2 , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_UAD , TEGRA_MUX_IRDA , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_UCA , TEGRA_MUX_UARTC , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_UCB , TEGRA_MUX_UARTC , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_UDA , TEGRA_MUX_ULPI , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_CK32 , TEGRA_MUX_NONE , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_DDRC , TEGRA_MUX_NONE , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_PMCA , TEGRA_MUX_NONE , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_PMCB , TEGRA_MUX_NONE , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_PMCC , TEGRA_MUX_NONE , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_PMCD , TEGRA_MUX_NONE , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_PMCE , TEGRA_MUX_NONE , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_XM2C , TEGRA_MUX_NONE , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_XM2D , TEGRA_MUX_NONE , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
} ;
2011-10-12 14:53:04 +03:00
static __initdata struct tegra_pingroup_config ventana_pinmux [ ] = {
{ TEGRA_PINGROUP_DAP3 , TEGRA_MUX_DAP3 , TEGRA_PUPD_NORMAL , TEGRA_TRI_TRISTATE } ,
{ TEGRA_PINGROUP_DDC , TEGRA_MUX_RSVD2 , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_DTA , TEGRA_MUX_VI , TEGRA_PUPD_PULL_DOWN , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_DTB , TEGRA_MUX_VI , TEGRA_PUPD_PULL_DOWN , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_DTC , TEGRA_MUX_VI , TEGRA_PUPD_PULL_DOWN , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_DTD , TEGRA_MUX_VI , TEGRA_PUPD_PULL_DOWN , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_GMD , TEGRA_MUX_SFLASH , TEGRA_PUPD_NORMAL , TEGRA_TRI_TRISTATE } ,
{ TEGRA_PINGROUP_LPW0 , TEGRA_MUX_RSVD4 , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_LPW2 , TEGRA_MUX_RSVD4 , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_LSC1 , TEGRA_MUX_RSVD4 , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_LSCK , TEGRA_MUX_RSVD4 , TEGRA_PUPD_NORMAL , TEGRA_TRI_TRISTATE } ,
{ TEGRA_PINGROUP_LSDA , TEGRA_MUX_RSVD4 , TEGRA_PUPD_NORMAL , TEGRA_TRI_TRISTATE } ,
{ TEGRA_PINGROUP_PTA , TEGRA_MUX_RSVD2 , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_SLXC , TEGRA_MUX_SDIO3 , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_SLXK , TEGRA_MUX_SDIO3 , TEGRA_PUPD_NORMAL , TEGRA_TRI_NORMAL } ,
{ TEGRA_PINGROUP_SPIA , TEGRA_MUX_GMI , TEGRA_PUPD_NORMAL , TEGRA_TRI_TRISTATE } ,
{ TEGRA_PINGROUP_SPIC , TEGRA_MUX_GMI , TEGRA_PUPD_NORMAL , TEGRA_TRI_TRISTATE } ,
{ TEGRA_PINGROUP_SPIG , TEGRA_MUX_SPI2_ALT , TEGRA_PUPD_NORMAL , TEGRA_TRI_TRISTATE } ,
} ;
2011-02-19 17:25:32 -08:00
2011-10-11 16:16:12 -06:00
static struct platform_device * pinmux_devices [ ] = {
& tegra_gpio_device ,
& tegra_pinmux_device ,
} ;
2011-02-19 17:25:32 -08:00
2011-10-12 14:53:03 +03:00
static struct tegra_gpio_table common_gpio_table [ ] = {
2011-03-04 22:44:28 -07:00
{ . gpio = TEGRA_GPIO_SD2_CD , . enable = true } ,
{ . gpio = TEGRA_GPIO_SD2_WP , . enable = true } ,
{ . gpio = TEGRA_GPIO_SD2_POWER , . enable = true } ,
{ . gpio = TEGRA_GPIO_LIDSWITCH , . enable = true } ,
{ . gpio = TEGRA_GPIO_POWERKEY , . enable = true } ,
2011-03-04 15:21:53 -08:00
{ . gpio = TEGRA_GPIO_ISL29018_IRQ , . enable = true } ,
2011-08-08 14:35:14 -06:00
{ . gpio = TEGRA_GPIO_CDC_IRQ , . enable = true } ,
2011-08-08 14:35:15 -06:00
{ . gpio = TEGRA_GPIO_USB1 , . enable = true } ,
2011-02-19 17:25:32 -08:00
} ;
2011-10-12 14:53:04 +03:00
static void __init update_pinmux ( struct tegra_pingroup_config * newtbl , int size )
{
int i , j ;
struct tegra_pingroup_config * new_pingroup , * base_pingroup ;
/* Update base seaboard pinmux table with secondary board
* specific pinmux table table .
*/
for ( i = 0 ; i < size ; i + + ) {
new_pingroup = & newtbl [ i ] ;
for ( j = 0 ; j < ARRAY_SIZE ( seaboard_pinmux ) ; j + + ) {
base_pingroup = & seaboard_pinmux [ j ] ;
if ( new_pingroup - > pingroup = = base_pingroup - > pingroup ) {
* base_pingroup = * new_pingroup ;
break ;
}
}
}
}
2011-10-12 14:53:03 +03:00
void __init seaboard_common_pinmux_init ( void )
2011-02-19 17:25:32 -08:00
{
2011-10-11 16:16:12 -06:00
platform_add_devices ( pinmux_devices , ARRAY_SIZE ( pinmux_devices ) ) ;
2011-02-19 17:25:32 -08:00
tegra_pinmux_config_table ( seaboard_pinmux , ARRAY_SIZE ( seaboard_pinmux ) ) ;
tegra_drive_pinmux_config_table ( seaboard_drive_pinmux ,
ARRAY_SIZE ( seaboard_drive_pinmux ) ) ;
2011-10-12 14:53:03 +03:00
tegra_gpio_config ( common_gpio_table , ARRAY_SIZE ( common_gpio_table ) ) ;
}
void __init seaboard_pinmux_init ( void )
{
seaboard_common_pinmux_init ( ) ;
2011-02-19 17:25:32 -08:00
}
2011-10-12 14:53:04 +03:00
void __init ventana_pinmux_init ( void )
{
update_pinmux ( ventana_pinmux , ARRAY_SIZE ( ventana_pinmux ) ) ;
seaboard_common_pinmux_init ( ) ;
}