xref: /rk3399_rockchip-uboot/board/nvidia/seaboard/seaboard.c (revision c62db35d52c6ba5f31ac36e690c58ec54b273298)
1f4ef6668STom Warren /*
2f4ef6668STom Warren  *  (C) Copyright 2010,2011
3f4ef6668STom Warren  *  NVIDIA Corporation <www.nvidia.com>
4f4ef6668STom Warren  *
51a459660SWolfgang Denk  * SPDX-License-Identifier:	GPL-2.0+
6f4ef6668STom Warren  */
7f4ef6668STom Warren 
8f4ef6668STom Warren #include <common.h>
9f4ef6668STom Warren #include <asm/io.h>
10*c62db35dSSimon Glass #include <asm/mach-types.h>
11150c2493STom Warren #include <asm/arch/tegra.h>
1219d7bf3dSJeroen Hofstee #include <asm/arch-tegra/board.h>
13ca28090dSSimon Glass #include <asm/arch/clock.h>
14ca28090dSSimon Glass #include <asm/arch/funcmux.h>
15a2ab6b7dSStephen Warren #include <asm/arch/gpio.h>
16ae03661fSStephen Warren #include <asm/arch/pinmux.h>
17ccf7988bSTom Warren #include <asm/gpio.h>
18f4ef6668STom Warren 
19a04eba99SSimon Glass /* TODO: Remove this code when the SPI switch is working */
209000652dSAllen Martin #if (CONFIG_MACH_TYPE != MACH_TYPE_VENTANA)
gpio_early_init_uart(void)210cd10c7aSLucas Stach void gpio_early_init_uart(void)
22d5ef19b9SStephen Warren {
23a2ab6b7dSStephen Warren 	/* Enable UART via GPIO_PI3 (port 8, bit 3) so serial console works */
2401a97a11SStephen Warren 	gpio_request(TEGRA_GPIO(I, 3), "uart_en");
2501a97a11SStephen Warren 	gpio_direction_output(TEGRA_GPIO(I, 3), 0);
26d5ef19b9SStephen Warren }
27a04eba99SSimon Glass #endif
28d5ef19b9SStephen Warren 
291d2c0506SMasahiro Yamada #ifdef CONFIG_MMC_SDHCI_TEGRA
30ccf7988bSTom Warren /*
31ae03661fSStephen Warren  * Routine: pin_mux_mmc
32ae03661fSStephen Warren  * Description: setup the pin muxes/tristate values for the SDMMC(s)
33ae03661fSStephen Warren  */
pin_mux_mmc(void)34c9aa831eSTom Warren void pin_mux_mmc(void)
35ae03661fSStephen Warren {
36ca28090dSSimon Glass 	funcmux_select(PERIPH_ID_SDMMC4, FUNCMUX_SDMMC4_ATB_GMA_GME_8_BIT);
37ca28090dSSimon Glass 	funcmux_select(PERIPH_ID_SDMMC3, FUNCMUX_SDMMC3_SDB_4BIT);
38ae03661fSStephen Warren 
39ae03661fSStephen Warren 	/* For power GPIO PI6 */
4070ad375eSStephen Warren 	pinmux_tristate_disable(PMUX_PINGRP_ATA);
41ae03661fSStephen Warren 	/* For CD GPIO PI5 */
4270ad375eSStephen Warren 	pinmux_tristate_disable(PMUX_PINGRP_ATC);
43ae03661fSStephen Warren }
44ccf7988bSTom Warren #endif
45f10393e5SSimon Glass 
pin_mux_usb(void)46f10393e5SSimon Glass void pin_mux_usb(void)
47f10393e5SSimon Glass {
486dca554fSStephen Warren 	/* For USB0's GPIO PD0. For now, since we have no pinmux in fdt */
4970ad375eSStephen Warren 	pinmux_tristate_disable(PMUX_PINGRP_SLXK);
506dca554fSStephen Warren 	/* For USB1's ULPI signals */
516dca554fSStephen Warren 	funcmux_select(PERIPH_ID_USB2, FUNCMUX_USB2_ULPI);
526dca554fSStephen Warren 	pinmux_set_func(PMUX_PINGRP_CDEV2, PMUX_FUNC_PLLP_OUT4);
536dca554fSStephen Warren 	pinmux_tristate_disable(PMUX_PINGRP_CDEV2);
546dca554fSStephen Warren 	/* USB1 PHY reset GPIO */
556dca554fSStephen Warren 	pinmux_tristate_disable(PMUX_PINGRP_UAC);
56f10393e5SSimon Glass }
57