1*00a2749dSAllen Martin /* 2*00a2749dSAllen Martin * Copyright (c) 2011 The Chromium OS Authors. 3*00a2749dSAllen Martin * See file CREDITS for list of people who contributed to this 4*00a2749dSAllen Martin * project. 5*00a2749dSAllen Martin * 6*00a2749dSAllen Martin * This program is free software; you can redistribute it and/or 7*00a2749dSAllen Martin * modify it under the terms of the GNU General Public License as 8*00a2749dSAllen Martin * published by the Free Software Foundation; either version 2 of 9*00a2749dSAllen Martin * the License, or (at your option) any later version. 10*00a2749dSAllen Martin * 11*00a2749dSAllen Martin * This program is distributed in the hope that it will be useful, 12*00a2749dSAllen Martin * but WITHOUT ANY WARRANTY; without even the implied warranty of 13*00a2749dSAllen Martin * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14*00a2749dSAllen Martin * GNU General Public License for more details. 15*00a2749dSAllen Martin * 16*00a2749dSAllen Martin * You should have received a copy of the GNU General Public License 17*00a2749dSAllen Martin * along with this program; if not, write to the Free Software 18*00a2749dSAllen Martin * Foundation, Inc., 59 Temple Place, Suite 330, Boston, 19*00a2749dSAllen Martin * MA 02111-1307 USA 20*00a2749dSAllen Martin */ 21*00a2749dSAllen Martin 22*00a2749dSAllen Martin /* Tegra20 high-level function multiplexing */ 23*00a2749dSAllen Martin 24*00a2749dSAllen Martin #ifndef __FUNCMUX_H 25*00a2749dSAllen Martin #define __FUNCMUX_H 26*00a2749dSAllen Martin 27*00a2749dSAllen Martin /* Configs supported by the func mux */ 28*00a2749dSAllen Martin enum { 29*00a2749dSAllen Martin FUNCMUX_DEFAULT = 0, /* default config */ 30*00a2749dSAllen Martin 31*00a2749dSAllen Martin /* UART configs */ 32*00a2749dSAllen Martin FUNCMUX_UART1_IRRX_IRTX = 0, 33*00a2749dSAllen Martin FUNCMUX_UART1_UAA_UAB, 34*00a2749dSAllen Martin FUNCMUX_UART1_GPU, 35*00a2749dSAllen Martin FUNCMUX_UART1_SDIO1, 36*00a2749dSAllen Martin FUNCMUX_UART2_IRDA = 0, 37*00a2749dSAllen Martin FUNCMUX_UART4_GMC = 0, 38*00a2749dSAllen Martin 39*00a2749dSAllen Martin /* I2C configs */ 40*00a2749dSAllen Martin FUNCMUX_DVC_I2CP = 0, 41*00a2749dSAllen Martin FUNCMUX_I2C1_RM = 0, 42*00a2749dSAllen Martin FUNCMUX_I2C2_DDC = 0, 43*00a2749dSAllen Martin FUNCMUX_I2C2_PTA, 44*00a2749dSAllen Martin FUNCMUX_I2C3_DTF = 0, 45*00a2749dSAllen Martin 46*00a2749dSAllen Martin /* SDMMC configs */ 47*00a2749dSAllen Martin FUNCMUX_SDMMC1_SDIO1_4BIT = 0, 48*00a2749dSAllen Martin FUNCMUX_SDMMC2_DTA_DTD_8BIT = 0, 49*00a2749dSAllen Martin FUNCMUX_SDMMC3_SDB_4BIT = 0, 50*00a2749dSAllen Martin FUNCMUX_SDMMC3_SDB_SLXA_8BIT, 51*00a2749dSAllen Martin FUNCMUX_SDMMC4_ATC_ATD_8BIT = 0, 52*00a2749dSAllen Martin FUNCMUX_SDMMC4_ATB_GMA_4_BIT, 53*00a2749dSAllen Martin FUNCMUX_SDMMC4_ATB_GMA_GME_8_BIT, 54*00a2749dSAllen Martin 55*00a2749dSAllen Martin /* USB configs */ 56*00a2749dSAllen Martin FUNCMUX_USB2_ULPI = 0, 57*00a2749dSAllen Martin 58*00a2749dSAllen Martin /* Serial Flash configs */ 59*00a2749dSAllen Martin FUNCMUX_SPI1_GMC_GMD = 0, 60*00a2749dSAllen Martin }; 61*00a2749dSAllen Martin 62*00a2749dSAllen Martin /** 63*00a2749dSAllen Martin * Select a config for a particular peripheral. 64*00a2749dSAllen Martin * 65*00a2749dSAllen Martin * Each peripheral can operate through a number of configurations, 66*00a2749dSAllen Martin * which are sets of pins that it uses to bring out its signals. 67*00a2749dSAllen Martin * The basic config is 0, and higher numbers indicate different 68*00a2749dSAllen Martin * pinmux settings to bring the peripheral out on other pins, 69*00a2749dSAllen Martin * 70*00a2749dSAllen Martin * This function also disables tristate for the function's pins, 71*00a2749dSAllen Martin * so that they operate in normal mode. 72*00a2749dSAllen Martin * 73*00a2749dSAllen Martin * @param id Peripheral id 74*00a2749dSAllen Martin * @param config Configuration to use (FUNCMUX_...), 0 for default 75*00a2749dSAllen Martin * @return 0 if ok, -1 on error (e.g. incorrect id or config) 76*00a2749dSAllen Martin */ 77*00a2749dSAllen Martin int funcmux_select(enum periph_id id, int config); 78*00a2749dSAllen Martin 79*00a2749dSAllen Martin #endif 80