/* * Copyright (C) ST-Ericsson SA 2010 * * License terms: GNU General Public License (GPL) version 2 */ #include <linux/kernel.h> #include <linux/init.h> #include <asm/mach-types.h> #include <plat/pincfg.h> #include <plat/gpio-nomadik.h> #include <mach/hardware.h> #include "pins-db8500.h" static pin_cfg_t mop500_pins_common[] = { /* I2C */ GPIO147_I2C0_SCL, GPIO148_I2C0_SDA, GPIO16_I2C1_SCL, GPIO17_I2C1_SDA, GPIO10_I2C2_SDA, GPIO11_I2C2_SCL, GPIO229_I2C3_SDA, GPIO230_I2C3_SCL, /* MSP0 */ GPIO12_MSP0_TXD, GPIO13_MSP0_TFS, GPIO14_MSP0_TCK, GPIO15_MSP0_RXD, /* MSP2: HDMI */ GPIO193_MSP2_TXD, GPIO194_MSP2_TCK, GPIO195_MSP2_TFS, GPIO196_MSP2_RXD | PIN_OUTPUT_LOW, /* Touch screen INTERFACE */ GPIO84_GPIO | PIN_INPUT_PULLUP, /* TOUCH_INT1 */ /* STMPE1601/tc35893 keypad IRQ */ GPIO218_GPIO | PIN_INPUT_PULLUP, /* MMC0 (MicroSD card) */ GPIO18_MC0_CMDDIR | PIN_OUTPUT_HIGH, GPIO19_MC0_DAT0DIR | PIN_OUTPUT_HIGH, GPIO20_MC0_DAT2DIR | PIN_OUTPUT_HIGH, GPIO22_MC0_FBCLK | PIN_INPUT_NOPULL, GPIO23_MC0_CLK | PIN_OUTPUT_LOW, GPIO24_MC0_CMD | PIN_INPUT_PULLUP, GPIO25_MC0_DAT0 | PIN_INPUT_PULLUP, GPIO26_MC0_DAT1 | PIN_INPUT_PULLUP, GPIO27_MC0_DAT2 | PIN_INPUT_PULLUP, GPIO28_MC0_DAT3 | PIN_INPUT_PULLUP, /* SDI1 (SDIO) */ GPIO208_MC1_CLK | PIN_OUTPUT_LOW, GPIO209_MC1_FBCLK | PIN_INPUT_NOPULL, GPIO210_MC1_CMD | PIN_INPUT_PULLUP, GPIO211_MC1_DAT0 | PIN_INPUT_PULLUP, GPIO212_MC1_DAT1 | PIN_INPUT_PULLUP, GPIO213_MC1_DAT2 | PIN_INPUT_PULLUP, GPIO214_MC1_DAT3 | PIN_INPUT_PULLUP, /* MMC2 (On-board DATA INTERFACE eMMC) */ GPIO128_MC2_CLK | PIN_OUTPUT_LOW, GPIO129_MC2_CMD | PIN_INPUT_PULLUP, GPIO130_MC2_FBCLK | PIN_INPUT_NOPULL, GPIO131_MC2_DAT0 | PIN_INPUT_PULLUP, GPIO132_MC2_DAT1 | PIN_INPUT_PULLUP, GPIO133_MC2_DAT2 | PIN_INPUT_PULLUP, GPIO134_MC2_DAT3 | PIN_INPUT_PULLUP, GPIO135_MC2_DAT4 | PIN_INPUT_PULLUP, GPIO136_MC2_DAT5 | PIN_INPUT_PULLUP, GPIO137_MC2_DAT6 | PIN_INPUT_PULLUP, GPIO138_MC2_DAT7 | PIN_INPUT_PULLUP, /* MMC4 (On-board STORAGE INTERFACE eMMC) */ GPIO197_MC4_DAT3 | PIN_INPUT_PULLUP, GPIO198_MC4_DAT2 | PIN_INPUT_PULLUP, GPIO199_MC4_DAT1 | PIN_INPUT_PULLUP, GPIO200_MC4_DAT0 | PIN_INPUT_PULLUP, GPIO201_MC4_CMD | PIN_INPUT_PULLUP, GPIO202_MC4_FBCLK | PIN_INPUT_NOPULL, GPIO203_MC4_CLK | PIN_OUTPUT_LOW, GPIO204_MC4_DAT7 | PIN_INPUT_PULLUP, GPIO205_MC4_DAT6 | PIN_INPUT_PULLUP, GPIO206_MC4_DAT5 | PIN_INPUT_PULLUP, GPIO207_MC4_DAT4 | PIN_INPUT_PULLUP, /* SKE keypad */ GPIO153_KP_I7, GPIO154_KP_I6, GPIO155_KP_I5, GPIO156_KP_I4, GPIO157_KP_O7, GPIO158_KP_O6, GPIO159_KP_O5, GPIO160_KP_O4, GPIO161_KP_I3, GPIO162_KP_I2, GPIO163_KP_I1, GPIO164_KP_I0, GPIO165_KP_O3, GPIO166_KP_O2, GPIO167_KP_O1, GPIO168_KP_O0, /* UART */ /* uart-0 pins gpio configuration should be * kept intact to prevent glitch in tx line * when tty dev is opened. Later these pins * are configured to uart mop500_pins_uart0 * * It will be replaced with uart configuration * once the issue is solved. */ GPIO0_GPIO | PIN_INPUT_PULLUP, GPIO1_GPIO | PIN_OUTPUT_HIGH, GPIO2_GPIO | PIN_INPUT_PULLUP, GPIO3_GPIO | PIN_OUTPUT_HIGH, GPIO29_U2_RXD | PIN_INPUT_PULLUP, GPIO30_U2_TXD | PIN_OUTPUT_HIGH, GPIO31_U2_CTSn | PIN_INPUT_PULLUP, GPIO32_U2_RTSn | PIN_OUTPUT_HIGH, /* Display & HDMI HW sync */ GPIO68_LCD_VSI0 | PIN_INPUT_PULLUP, GPIO69_LCD_VSI1 | PIN_INPUT_PULLUP, }; static pin_cfg_t mop500_pins_default[] = { /* SSP0 */ GPIO143_SSP0_CLK, GPIO144_SSP0_FRM, GPIO145_SSP0_RXD | PIN_PULL_DOWN, GPIO146_SSP0_TXD, GPIO217_GPIO | PIN_INPUT_PULLUP, /* TC35892 IRQ */ /* SDI0 (MicroSD card) */ GPIO21_MC0_DAT31DIR | PIN_OUTPUT_HIGH, /* UART */ GPIO4_U1_RXD | PIN_INPUT_PULLUP, GPIO5_U1_TXD | PIN_OUTPUT_HIGH, GPIO6_U1_CTSn | PIN_INPUT_PULLUP, GPIO7_U1_RTSn | PIN_OUTPUT_HIGH, }; static pin_cfg_t hrefv60_pins[] = { /* WLAN */ GPIO4_GPIO | PIN_INPUT_PULLUP,/* WLAN_IRQ */ GPIO85_GPIO | PIN_OUTPUT_LOW,/* WLAN_ENA */ /* XENON Flashgun INTERFACE */ GPIO6_IP_GPIO0 | PIN_INPUT_PULLUP,/* XENON_FLASH_ID */ GPIO7_IP_GPIO1 | PIN_INPUT_PULLUP,/* XENON_READY */ GPIO170_GPIO | PIN_OUTPUT_LOW, /* XENON_CHARGE */ /* Assistant LED INTERFACE */ GPIO21_GPIO | PIN_OUTPUT_LOW, /* XENON_EN1 */ GPIO64_IP_GPIO4 | PIN_OUTPUT_LOW, /* XENON_EN2 */ /* Magnetometer */ GPIO31_GPIO | PIN_INPUT_PULLUP, /* magnetometer_INT */ GPIO32_GPIO | PIN_INPUT_PULLDOWN, /* Magnetometer DRDY */ /* Display Interface */ GPIO65_GPIO | PIN_OUTPUT_LOW, /* DISP1 RST */ GPIO66_GPIO | PIN_OUTPUT_LOW, /* DISP2 RST */ /* Touch screen INTERFACE */ GPIO143_GPIO | PIN_OUTPUT_LOW,/*TOUCH_RST1 */ /* Touch screen INTERFACE 2 */ GPIO67_GPIO | PIN_INPUT_PULLUP, /* TOUCH_INT2 */ GPIO146_GPIO | PIN_OUTPUT_LOW,/*TOUCH_RST2 */ /* ETM_PTM_TRACE INTERFACE */ GPIO70_GPIO | PIN_OUTPUT_LOW,/* ETM_PTM_DATA23 */ GPIO71_GPIO | PIN_OUTPUT_LOW,/* ETM_PTM_DATA22 */ GPIO72_GPIO | PIN_OUTPUT_LOW,/* ETM_PTM_DATA21 */ GPIO73_GPIO | PIN_OUTPUT_LOW,/* ETM_PTM_DATA20 */ GPIO74_GPIO | PIN_OUTPUT_LOW,/* ETM_PTM_DATA19 */ /* NAHJ INTERFACE */ GPIO76_GPIO | PIN_OUTPUT_LOW,/* NAHJ_CTRL */ GPIO216_GPIO | PIN_OUTPUT_HIGH,/* NAHJ_CTRL_INV */ /* NFC INTERFACE */ GPIO77_GPIO | PIN_OUTPUT_LOW, /* NFC_ENA */ GPIO144_GPIO | PIN_INPUT_PULLDOWN, /* NFC_IRQ */ GPIO142_GPIO | PIN_OUTPUT_LOW, /* NFC_RESET */ /* Keyboard MATRIX INTERFACE */ GPIO90_MC5_CMD | PIN_OUTPUT_LOW, /* KP_O_1 */ GPIO87_MC5_DAT1 | PIN_OUTPUT_LOW, /* KP_O_2 */ GPIO86_MC5_DAT0 | PIN_OUTPUT_LOW, /* KP_O_3 */ GPIO96_KP_O6 | PIN_OUTPUT_LOW, /* KP_O_6 */ GPIO94_KP_O7 | PIN_OUTPUT_LOW, /* KP_O_7 */ GPIO93_MC5_DAT4 | PIN_INPUT_PULLUP, /* KP_I_0 */ GPIO89_MC5_DAT3 | PIN_INPUT_PULLUP, /* KP_I_2 */ GPIO88_MC5_DAT2 | PIN_INPUT_PULLUP, /* KP_I_3 */ GPIO91_GPIO | PIN_INPUT_PULLUP, /* FORCE_SENSING_INT */ GPIO92_GPIO | PIN_OUTPUT_LOW, /* FORCE_SENSING_RST */ GPIO97_GPIO | PIN_OUTPUT_LOW, /* FORCE_SENSING_WU */ /* DiPro Sensor Interface */ GPIO139_GPIO | PIN_INPUT_PULLUP, /* DIPRO_INT */ /* HAL SWITCH INTERFACE */ GPIO145_GPIO | PIN_INPUT_PULLDOWN,/* HAL_SW */ /* Audio Amplifier Interface */ GPIO149_GPIO | PIN_OUTPUT_LOW, /* VAUDIO_HF_EN */ /* GBF INTERFACE */ GPIO171_GPIO | PIN_OUTPUT_LOW, /* GBF_ENA_RESET */ /* MSP : HDTV INTERFACE */ GPIO192_GPIO | PIN_INPUT_PULLDOWN, /* ACCELEROMETER_INTERFACE */ GPIO82_GPIO | PIN_INPUT_PULLUP, /* ACC_INT1 */ GPIO83_GPIO | PIN_INPUT_PULLUP, /* ACC_INT2 */ /* Proximity Sensor */ GPIO217_GPIO | PIN_INPUT_PULLUP, }; static pin_cfg_t snowball_pins[] = { /* SSP0, to AB8500 */ GPIO143_SSP0_CLK, GPIO144_SSP0_FRM, GPIO145_SSP0_RXD | PIN_PULL_DOWN, GPIO146_SSP0_TXD, /* MMC0: MicroSD card */ GPIO21_MC0_DAT31DIR | PIN_OUTPUT_HIGH, /* MMC2: LAN */ GPIO86_SM_ADQ0, GPIO87_SM_ADQ1, GPIO88_SM_ADQ2, GPIO89_SM_ADQ3, GPIO90_SM_ADQ4, GPIO91_SM_ADQ5, GPIO92_SM_ADQ6, GPIO93_SM_ADQ7, GPIO94_SM_ADVn, GPIO95_SM_CS0n, GPIO96_SM_OEn, GPIO97_SM_WEn, GPIO128_SM_CKO, GPIO130_SM_FBCLK, GPIO131_SM_ADQ8, GPIO132_SM_ADQ9, GPIO133_SM_ADQ10, GPIO134_SM_ADQ11, GPIO135_SM_ADQ12, GPIO136_SM_ADQ13, GPIO137_SM_ADQ14, GPIO138_SM_ADQ15, /* RSTn_LAN */ GPIO141_GPIO | PIN_OUTPUT_HIGH, }; void __init mop500_pins_init(void) { nmk_config_pins(mop500_pins_common, ARRAY_SIZE(mop500_pins_common)); nmk_config_pins(mop500_pins_default, ARRAY_SIZE(mop500_pins_default)); } void __init snowball_pins_init(void) { nmk_config_pins(mop500_pins_common, ARRAY_SIZE(mop500_pins_common)); nmk_config_pins(snowball_pins, ARRAY_SIZE(snowball_pins)); } void __init hrefv60_pins_init(void) { nmk_config_pins(mop500_pins_common, ARRAY_SIZE(mop500_pins_common)); nmk_config_pins(hrefv60_pins, ARRAY_SIZE(hrefv60_pins)); }