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