2 * (C) Copyright 2010-2013
3 * NVIDIA Corporation <www.nvidia.com>
5 * SPDX-License-Identifier: GPL-2.0+
10 #include <asm/arch/pinmux.h>
11 #include <asm/arch/gp_padctrl.h>
12 #include <asm/arch/gpio.h>
14 #include "pinmux-config-cardhu.h"
18 #define PMU_I2C_ADDRESS 0x2D
19 #define MAX_I2C_RETRY 3
22 * Routine: pinmux_init
23 * Description: Do individual peripheral pinmux configs
25 void pinmux_init(void)
27 pinmux_config_pingrp_table(tegra3_pinmux_common,
28 ARRAY_SIZE(tegra3_pinmux_common));
30 pinmux_config_pingrp_table(unused_pins_lowpower,
31 ARRAY_SIZE(unused_pins_lowpower));
33 /* Initialize any non-default pad configs (APB_MISC_GP regs) */
34 pinmux_config_drvgrp_table(cardhu_padctrl, ARRAY_SIZE(cardhu_padctrl));
37 #if defined(CONFIG_TEGRA_MMC)
39 * Do I2C/PMU writes to bring up SD card bus power
42 void board_sdmmc_voltage_init(void)
45 uchar reg, data_buffer[1];
49 ret = i2c_get_chip_for_busnum(0, PMU_I2C_ADDRESS, 1, &dev);
51 debug("%s: Cannot find PMIC I2C chip\n", __func__);
55 /* TPS659110: LDO5_REG = 3.3v, ACTIVE to SDMMC1 */
56 data_buffer[0] = 0x65;
59 for (i = 0; i < MAX_I2C_RETRY; ++i) {
60 if (dm_i2c_write(dev, reg, data_buffer, 1))
64 /* TPS659110: GPIO7_REG = PDEN, output a 1 to EN_3V3_SYS */
65 data_buffer[0] = 0x09;
68 for (i = 0; i < MAX_I2C_RETRY; ++i) {
69 if (dm_i2c_write(dev, reg, data_buffer, 1))
75 * Routine: pin_mux_mmc
76 * Description: setup the MMC muxes, power rails, etc.
78 void pin_mux_mmc(void)
81 * NOTE: We don't do mmc-specific pin muxes here.
82 * They were done globally in pinmux_init().
85 /* Bring up the SDIO1 power rail */
86 board_sdmmc_voltage_init();
90 #ifdef CONFIG_PCI_TEGRA
91 int tegra_pcie_board_init(void)
97 err = i2c_get_chip_for_busnum(0, PMU_I2C_ADDRESS, 1, &dev);
99 debug("failed to find PMU bus\n");
103 /* TPS659110: LDO1_REG = 1.05V, ACTIVE */
107 err = dm_i2c_write(dev, addr, data, 1);
109 debug("failed to set VDD supply\n");
113 /* GPIO: PEX = 3.3V */
114 err = gpio_request(GPIO_PL7, "PEX");
118 gpio_direction_output(GPIO_PL7, 1);
120 /* TPS659110: LDO2_REG = 1.05V, ACTIVE */
124 err = dm_i2c_write(dev, addr, data, 1);
126 debug("failed to set AVDD supply\n");
133 int board_eth_init(bd_t *bis)
135 return pci_eth_init(bis);