* 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 <soc/addressmap.h> #include <soc/funitcfg.h> #include <soc/padconfig.h> #include <soc/verstage.h> #include <soc/nvidia/tegra/i2c.h> #include "gpio.h" #include "pmic.h" static const struct pad_config tpm_pads[] = { PAD_CFG_SFIO(CAM_I2C_SCL, PINMUX_INPUT_ENABLE, I2C3), PAD_CFG_SFIO(CAM_I2C_SDA, PINMUX_INPUT_ENABLE, I2C3), }; static const struct pad_config ec_i2c_pads[] = { PAD_CFG_SFIO(GEN2_I2C_SCL, PINMUX_OPEN_DRAIN|PINMUX_INPUT_ENABLE, I2C2), PAD_CFG_SFIO(GEN2_I2C_SDA, PINMUX_OPEN_DRAIN|PINMUX_INPUT_ENABLE, I2C2), }; static const struct funit_cfg funits[] = { /* TPM on I2C3 @ 400kHz */ FUNIT_CFG(I2C3, PLLP, 400, tpm_pads, ARRAY_SIZE(tpm_pads)), /* EC on I2C2 - pulled to 3.3V @ 100kHz */ FUNIT_CFG(I2C2, PLLP, 100, ec_i2c_pads, ARRAY_SIZE(ec_i2c_pads)), };
* GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc. */ #include <soc/addressmap.h> #include <soc/funitcfg.h> #include <soc/padconfig.h> #include <soc/verstage.h> #include <soc/nvidia/tegra/i2c.h> static const struct pad_config i2cpad[] = { /* TPM I2C */ PAD_CFG_SFIO(CAM_I2C_SCL, PINMUX_INPUT_ENABLE, I2C3), PAD_CFG_SFIO(CAM_I2C_SDA, PINMUX_INPUT_ENABLE, I2C3), }; static const struct pad_config spipad[] = { /* EC on SPI1: mosi, miso, clk, cs */ PAD_CFG_SFIO(ULPI_CLK, PINMUX_INPUT_ENABLE, SPI1), PAD_CFG_SFIO(ULPI_DIR, PINMUX_INPUT_ENABLE, SPI1), PAD_CFG_SFIO(ULPI_NXT, PINMUX_INPUT_ENABLE, SPI1), PAD_CFG_SFIO(ULPI_STP, PINMUX_INPUT_ENABLE, SPI1), }; static const struct funit_cfg funitcfgs[] = { FUNIT_CFG(SBC1, CLK_M, 3000, spipad, ARRAY_SIZE(spipad)), FUNIT_CFG(I2C3, PLLP, 400, i2cpad, ARRAY_SIZE(i2cpad)), };
#include <arch/io.h> #include <bootblock_common.h> #include <console/console.h> #include <device/i2c.h> #include <soc/addressmap.h> #include <soc/clk_rst.h> #include <soc/clock.h> #include <soc/funitcfg.h> #include <soc/nvidia/tegra/i2c.h> #include <soc/padconfig.h> #include "pmic.h" static const struct pad_config uart_console_pads[] = { /* UARTA: tx and rx. */ PAD_CFG_SFIO(KB_ROW9, PINMUX_PULL_NONE, UA3), PAD_CFG_SFIO(KB_ROW10, PINMUX_INPUT_ENABLE | PINMUX_PULL_UP, UA3), /* * Disable UART2 pads as they are default connected to UARTA controller. */ PAD_CFG_UNUSED(UART2_RXD), PAD_CFG_UNUSED(UART2_TXD), PAD_CFG_UNUSED(UART2_RTS_N), PAD_CFG_UNUSED(UART2_CTS_N), }; static const struct pad_config pmic_pads[] = { PAD_CFG_SFIO(PWR_I2C_SCL, PINMUX_INPUT_ENABLE, I2CPMU), PAD_CFG_SFIO(PWR_I2C_SDA, PINMUX_INPUT_ENABLE, I2CPMU), };
#include <memrange.h> #include <soc/addressmap.h> #include <soc/clk_rst.h> #include <soc/clock.h> #include <soc/funitcfg.h> #include <soc/nvidia/tegra/i2c.h> #include <soc/padconfig.h> #include <soc/spi.h> #include <soc/nvidia/tegra/dc.h> #include <soc/display.h> #include <vendorcode/google/chromeos/chromeos.h> static const struct pad_config sdmmc1_pad[] = { /* MMC1(SDCARD) */ PAD_CFG_SFIO(SDMMC1_CLK, PINMUX_INPUT_ENABLE, SDMMC1), PAD_CFG_SFIO(SDMMC1_CMD, PINMUX_INPUT_ENABLE | PINMUX_PULL_UP, SDMMC1), PAD_CFG_SFIO(SDMMC1_DAT0, PINMUX_INPUT_ENABLE | PINMUX_PULL_UP, SDMMC1), PAD_CFG_SFIO(SDMMC1_DAT1, PINMUX_INPUT_ENABLE | PINMUX_PULL_UP, SDMMC1), PAD_CFG_SFIO(SDMMC1_DAT2, PINMUX_INPUT_ENABLE | PINMUX_PULL_UP, SDMMC1), PAD_CFG_SFIO(SDMMC1_DAT3, PINMUX_INPUT_ENABLE | PINMUX_PULL_UP, SDMMC1), /* MMC1 Card Detect pin */ PAD_CFG_GPIO_INPUT(GPIO_PZ1, PINMUX_PULL_UP), /* Disable SD card reader power so it can be reset even on warm boot. Payloads must enable power before accessing SD card slots. */ PAD_CFG_GPIO_OUT0(GPIO_PZ4, PINMUX_PULL_NONE), }; static const struct pad_config audio_codec_pads[] = { /* GPIO_X1_AUD(BB3) is AUDIO_LDO_EN (->CODEC RESET_N pin) */ PAD_CFG_GPIO_OUT1(GPIO_X1_AUD, PINMUX_PULL_DOWN),
#include <device/device.h> #include <memrange.h> #include <soc/addressmap.h> #include <soc/clk_rst.h> #include <soc/clock.h> #include <soc/funitcfg.h> #include <soc/nvidia/tegra/i2c.h> #include <soc/nvidia/tegra/usb.h> #include <soc/padconfig.h> #include <soc/spi.h> #include <soc/nvidia/tegra/dc.h> #include <soc/display.h> static const struct pad_config sdmmc3_pad[] = { /* MMC3(SDCARD) */ PAD_CFG_SFIO(SDMMC3_CLK, PINMUX_INPUT_ENABLE, SDMMC3), PAD_CFG_SFIO(SDMMC3_CMD, PINMUX_INPUT_ENABLE | PINMUX_PULL_UP, SDMMC3), PAD_CFG_SFIO(SDMMC3_DAT0, PINMUX_INPUT_ENABLE | PINMUX_PULL_UP, SDMMC3), PAD_CFG_SFIO(SDMMC3_DAT1, PINMUX_INPUT_ENABLE | PINMUX_PULL_UP, SDMMC3), PAD_CFG_SFIO(SDMMC3_DAT2, PINMUX_INPUT_ENABLE | PINMUX_PULL_UP, SDMMC3), PAD_CFG_SFIO(SDMMC3_DAT3, PINMUX_INPUT_ENABLE | PINMUX_PULL_UP, SDMMC3), PAD_CFG_SFIO(SDMMC3_CLK_LB_IN, PINMUX_INPUT_ENABLE | PINMUX_PULL_UP, SDMMC3), PAD_CFG_SFIO(SDMMC3_CLK_LB_OUT, PINMUX_INPUT_ENABLE | PINMUX_PULL_DOWN, SDMMC3), /* MMC3 Card Detect pin */ PAD_CFG_GPIO_INPUT(SDMMC3_CD_N, PINMUX_PULL_UP), /* Disable SD card reader power so it can be reset even on warm boot. Payloads must enable power before accessing SD card slots. */ PAD_CFG_GPIO_OUT0(KB_ROW0, PINMUX_PULL_NONE), }; static const struct pad_config sdmmc4_pad[] = {
#include <arch/io.h> #include <bootblock_common.h> #include <console/console.h> #include <device/i2c.h> #include <soc/addressmap.h> #include <soc/clk_rst.h> #include <soc/clock.h> #include <soc/funitcfg.h> #include <soc/nvidia/tegra/i2c.h> #include <soc/padconfig.h> #include <soc/spi.h> /* FIXME: move back to soc code? */ #include "pmic.h" static const struct pad_config pmic_pads[] = { PAD_CFG_SFIO(PWR_I2C_SCL, PINMUX_INPUT_ENABLE, I2CPMU), PAD_CFG_SFIO(PWR_I2C_SDA, PINMUX_INPUT_ENABLE, I2CPMU), }; static const struct pad_config spiflash_pads[] = { /* QSPI fLash: mosi, miso, clk, cs0, hold, wp */ PAD_CFG_SFIO(QSPI_IO0, PINMUX_INPUT_ENABLE | PINMUX_PULL_UP, QSPI), PAD_CFG_SFIO(QSPI_IO1, PINMUX_INPUT_ENABLE | PINMUX_PULL_UP, QSPI), PAD_CFG_SFIO(QSPI_SCK, PINMUX_INPUT_ENABLE, QSPI), PAD_CFG_SFIO(QSPI_CS_N, PINMUX_INPUT_ENABLE, QSPI), PAD_CFG_SFIO(QSPI_IO2, PINMUX_INPUT_ENABLE | PINMUX_PULL_UP, QSPI), PAD_CFG_SFIO(QSPI_IO3, PINMUX_INPUT_ENABLE | PINMUX_PULL_UP, QSPI), }; /********************* TPM ************************************/ static const struct pad_config tpm_pads[] = {
#include "pmic.h" static const struct pad_config padcfgs[] = { PAD_CFG_GPIO_INPUT(USB_VBUS_EN1, PINMUX_PULL_NONE | PINMUX_PARKED | PINMUX_INPUT_ENABLE | PINMUX_LPDR | PINMUX_IO_HV), }; static const struct pad_config audio_codec_pads[] = { /* GPIO_X1_AUD(BB3) is CODEC_RST_L and DMIC1_DAT(E1) is AUDIO_ENABLE */ PAD_CFG_GPIO_OUT1(GPIO_X1_AUD, PINMUX_PULL_DOWN), PAD_CFG_GPIO_OUT1(DMIC1_DAT, PINMUX_PULL_DOWN), }; static const struct pad_config i2s1_pad[] = { /* I2S1 */ PAD_CFG_SFIO(DAP1_SCLK, PINMUX_INPUT_ENABLE, I2S1), PAD_CFG_SFIO(DAP1_FS, PINMUX_INPUT_ENABLE, I2S1), PAD_CFG_SFIO(DAP1_DOUT, PINMUX_INPUT_ENABLE, I2S1), PAD_CFG_SFIO(DAP1_DIN, PINMUX_INPUT_ENABLE | PINMUX_TRISTATE, I2S1), /* codec MCLK via AUD SFIO */ PAD_CFG_SFIO(AUD_MCLK, PINMUX_PULL_NONE, AUD), }; static const struct funit_cfg audio_funit[] = { /* We need 1.5MHz for I2S1. So we use CLK_M */ FUNIT_CFG(I2S1, CLK_M, 1500, i2s1_pad, ARRAY_SIZE(i2s1_pad)), }; static const struct funit_cfg funits[] = { FUNIT_CFG_USB(USBD), FUNIT_CFG(SDMMC4, PLLP, 48000, NULL, 0),