1 /* 2 * Copyright (C) 2012 Lucas Stach 3 * 4 * SPDX-License-Identifier: GPL-2.0+ 5 */ 6 7 #include <common.h> 8 #include <asm/arch/clock.h> 9 #include <asm/arch/funcmux.h> 10 #include <asm/arch/pinmux.h> 11 #include <asm/arch-tegra/board.h> 12 #include <asm/gpio.h> 13 14 #ifdef CONFIG_TEGRA_MMC 15 /* 16 * Routine: pin_mux_mmc 17 * Description: setup the pin muxes/tristate values for the SDMMC(s) 18 */ 19 void pin_mux_mmc(void) 20 { 21 funcmux_select(PERIPH_ID_SDMMC4, FUNCMUX_SDMMC4_ATB_GMA_4_BIT); 22 pinmux_tristate_disable(PMUX_PINGRP_GMB); 23 } 24 #endif 25 26 #ifdef CONFIG_TEGRA_NAND 27 void pin_mux_nand(void) 28 { 29 funcmux_select(PERIPH_ID_NDFLASH, FUNCMUX_NDFLASH_KBC_8_BIT); 30 31 /* 32 * configure pingroup ATC to something unrelated to 33 * avoid ATC overriding KBC 34 */ 35 pinmux_set_func(PMUX_PINGRP_ATC, PMUX_FUNC_GMI); 36 } 37 #endif 38 39 #ifdef CONFIG_USB_EHCI_TEGRA 40 void pin_mux_usb(void) 41 { 42 /* module internal USB bus to connect ethernet chipset */ 43 funcmux_select(PERIPH_ID_USB2, FUNCMUX_USB2_ULPI); 44 45 /* ULPI reference clock output */ 46 pinmux_set_func(PMUX_PINGRP_CDEV2, PMUX_FUNC_PLLP_OUT4); 47 pinmux_tristate_disable(PMUX_PINGRP_CDEV2); 48 49 /* PHY reset GPIO */ 50 pinmux_tristate_disable(PMUX_PINGRP_UAC); 51 52 /* VBus GPIO */ 53 pinmux_tristate_disable(PMUX_PINGRP_DTE); 54 55 /* Reset ASIX using LAN_RESET */ 56 gpio_request(GPIO_PV4, "LAN_RESET"); 57 gpio_direction_output(GPIO_PV4, 0); 58 pinmux_tristate_disable(PMUX_PINGRP_GPV); 59 udelay(5); 60 gpio_set_value(GPIO_PV4, 1); 61 62 /* USBH_PEN: USB 1 aka Tegra USB port 3 VBus */ 63 pinmux_tristate_disable(PMUX_PINGRP_SPIG); 64 } 65 #endif 66