]> git.ipfire.org Git - people/ms/u-boot.git/commitdiff
Merge branch 'master' of git://git.denx.de/u-boot-tegra
authorTom Rini <trini@konsulko.com>
Tue, 10 Mar 2015 23:09:18 +0000 (19:09 -0400)
committerTom Rini <trini@konsulko.com>
Tue, 10 Mar 2015 23:09:18 +0000 (19:09 -0400)
Conflicts:
README

Signed-off-by: Tom Rini <trini@konsulko.com>
53 files changed:
README
arch/arm/cpu/arm926ejs/orion5x/u-boot-spl.lds [new file with mode: 0644]
arch/arm/cpu/armv7/virt-v7.c
arch/arm/cpu/armv8/start.S
arch/arm/cpu/tegra210-common/pinmux.c [new file with mode: 0644]
arch/arm/dts/tegra30-apalis.dts
arch/arm/dts/tegra30-colibri.dts
arch/arm/include/asm/arch-orion5x/spl.h [new file with mode: 0644]
arch/arm/include/asm/arch-tegra/ap.h
arch/arm/include/asm/arch-tegra/pinmux.h
arch/arm/include/asm/arch-tegra114/pinmux.h
arch/arm/include/asm/arch-tegra124/pinmux.h
arch/arm/include/asm/arch-tegra20/pinmux.h
arch/arm/include/asm/arch-tegra210/pinmux.h [new file with mode: 0644]
arch/arm/include/asm/arch-tegra30/pinmux.h
arch/arm/include/asm/macro.h
arch/arm/lib/interrupts.c
arch/arm/mach-orion5x/Kconfig
arch/arm/mach-orion5x/cpu.c
arch/arm/mach-orion5x/include/mach/cpu.h
arch/arm/mach-orion5x/lowlevel_init.S
arch/arm/mach-tegra/board.c
arch/arm/mach-tegra/clock.c
arch/arm/mach-tegra/pinmux-common.c
board/LaCie/edminiv2/config.mk [deleted file]
board/LaCie/edminiv2/edminiv2.c
board/nvidia/common/board.c
board/nvidia/jetson-tk1/jetson-tk1.c
board/nvidia/jetson-tk1/pinmux-config-jetson-tk1.h
common/board_f.c
configs/edminiv2_defconfig
include/configs/apalis_t30.h
include/configs/beaver.h
include/configs/cardhu.h
include/configs/colibri_t20_iris.h
include/configs/colibri_t30.h
include/configs/dalmore.h
include/configs/edminiv2.h
include/configs/harmony.h
include/configs/jetson-tk1.h
include/configs/ls2085a_common.h
include/configs/medcom-wide.h
include/configs/nyan-big.h
include/configs/paz00.h
include/configs/plutux.h
include/configs/seaboard.h
include/configs/tec-ng.h
include/configs/tec.h
include/configs/tegra-common.h
include/configs/trimslice.h
include/configs/venice2.h
include/configs/ventana.h
include/configs/whistler.h

diff --git a/README b/README
index 3c4a2e6b46fad5da9c2024a91206eae1b0348927..08283f52af97e2a0a896169959c85d9261c44adb 100644 (file)
--- a/README
+++ b/README
@@ -690,6 +690,125 @@ The following options need to be configured:
                exists, unlike the similar options in the Linux kernel. Do not
                set these options unless they apply!
 
+- Tegra SoC options:
+               CONFIG_TEGRA_SUPPORT_NON_SECURE
+
+               Support executing U-Boot in non-secure (NS) mode. Certain
+               impossible actions will be skipped if the CPU is in NS mode,
+               such as ARM architectural timer initialization.
+
+- Driver Model
+               Driver model is a new framework for devices in U-Boot
+               introduced in early 2014. U-Boot is being progressively
+               moved over to this. It offers a consistent device structure,
+               supports grouping devices into classes and has built-in
+               handling of platform data and device tree.
+
+               To enable transition to driver model in a relatively
+               painful fashion, each subsystem can be independently
+               switched between the legacy/ad-hoc approach and the new
+               driver model using the options below. Also, many uclass
+               interfaces include compatibility features which may be
+               removed once the conversion of that subsystem is complete.
+               As a result, the API provided by the subsystem may in fact
+               not change with driver model.
+
+               See doc/driver-model/README.txt for more information.
+
+               CONFIG_DM
+
+               Enable driver model. This brings in the core support,
+               including scanning of platform data on start-up. If
+               CONFIG_OF_CONTROL is enabled, the device tree will be
+               scanned also when available.
+
+               CONFIG_CMD_DM
+
+               Enable driver model test commands. These allow you to print
+               out the driver model tree and the uclasses.
+
+               CONFIG_DM_DEMO
+
+               Enable some demo devices and the 'demo' command. These are
+               really only useful for playing around while trying to
+               understand driver model in sandbox.
+
+               CONFIG_SPL_DM
+
+               Enable driver model in SPL. You will need to provide a
+               suitable malloc() implementation. If you are not using the
+               full malloc() enabled by CONFIG_SYS_SPL_MALLOC_START,
+               consider using CONFIG_SYS_MALLOC_SIMPLE. In that case you
+               must provide CONFIG_SYS_MALLOC_F_LEN to set the size.
+               In most cases driver model will only allocate a few uclasses
+               and devices in SPL, so 1KB should be enable. See
+               CONFIG_SYS_MALLOC_F_LEN for more details on how to enable
+               it.
+
+               CONFIG_DM_SERIAL
+
+               Enable driver model for serial. This replaces
+               drivers/serial/serial.c with the serial uclass, which
+               implements serial_putc() etc. The uclass interface is
+               defined in include/serial.h.
+
+               CONFIG_DM_GPIO
+
+               Enable driver model for GPIO access. The standard GPIO
+               interface (gpio_get_value(), etc.) is then implemented by
+               the GPIO uclass. Drivers provide methods to query the
+               particular GPIOs that they provide. The uclass interface
+               is defined in include/asm-generic/gpio.h.
+
+               CONFIG_DM_SPI
+
+               Enable driver model for SPI. The SPI slave interface
+               (spi_setup_slave(), spi_xfer(), etc.) is then implemented by
+               the SPI uclass. Drivers provide methods to access the SPI
+               buses that they control. The uclass interface is defined in
+               include/spi.h. The existing spi_slave structure is attached
+               as 'parent data' to every slave on each bus. Slaves
+               typically use driver-private data instead of extending the
+               spi_slave structure.
+
+               CONFIG_DM_SPI_FLASH
+
+               Enable driver model for SPI flash. This SPI flash interface
+               (spi_flash_probe(), spi_flash_write(), etc.) is then
+               implemented by the SPI flash uclass. There is one standard
+               SPI flash driver which knows how to probe most chips
+               supported by U-Boot. The uclass interface is defined in
+               include/spi_flash.h, but is currently fully compatible
+               with the old interface to avoid confusion and duplication
+               during the transition parent. SPI and SPI flash must be
+               enabled together (it is not possible to use driver model
+               for one and not the other).
+
+               CONFIG_DM_CROS_EC
+
+               Enable driver model for the Chrome OS EC interface. This
+               allows the cros_ec SPI driver to operate with CONFIG_DM_SPI
+               but otherwise makes few changes. Since cros_ec also supports
+               I2C and LPC (which don't support driver model yet), a full
+               conversion is not yet possible.
+
+
+               ** Code size options: The following options are enabled by
+               default except in SPL. Enable them explicitly to get these
+               features in SPL.
+
+               CONFIG_DM_WARN
+
+               Enable the dm_warn() function. This can use up quite a bit
+               of space for its strings.
+
+               CONFIG_DM_STDIO
+
+               Enable registering a serial device with the stdio library.
+
+               CONFIG_DM_DEVICE_REMOVE
+
+               Enable removing of devices.
 
 - Linux Kernel Interface:
                CONFIG_CLOCKS_IN_MHZ
diff --git a/arch/arm/cpu/arm926ejs/orion5x/u-boot-spl.lds b/arch/arm/cpu/arm926ejs/orion5x/u-boot-spl.lds
new file mode 100644 (file)
index 0000000..6f7fca0
--- /dev/null
@@ -0,0 +1,61 @@
+/*
+ * (C) Copyright 2014 Albert ARIBAUD <albert.u.boot@aribaud.net>
+ *
+ * Based on:
+ *
+ * Allwinner Technology Co., Ltd. <www.allwinnertech.com>
+ * Tom Cubie <tangliang@allwinnertech.com>
+ *
+ * Based on omap-common/u-boot-spl.lds:
+ *
+ * (C) Copyright 2002
+ * Gary Jennejohn, DENX Software Engineering, <garyj@denx.de>
+ *
+ * (C) Copyright 2010
+ * Texas Instruments, <www.ti.com>
+ *     Aneesh V <aneesh@ti.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+MEMORY { .nor : ORIGIN = CONFIG_SPL_TEXT_BASE,\
+               LENGTH = CONFIG_SPL_MAX_SIZE }
+MEMORY { .bss : ORIGIN = CONFIG_SPL_BSS_START_ADDR, \
+               LENGTH = CONFIG_SPL_BSS_MAX_SIZE }
+
+OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
+OUTPUT_ARCH(arm)
+ENTRY(_start)
+SECTIONS
+{
+       .text      :
+       {
+               __start = .;
+               *(.vectors)
+               CPUDIR/start.o  (.text)
+               *(.text*)
+       } > .nor
+
+       . = ALIGN(4);
+       .rodata : { *(SORT_BY_ALIGNMENT(.rodata*)) } >.nor
+
+       . = ALIGN(4);
+       .data : { *(SORT_BY_ALIGNMENT(.data*)) } >.nor
+
+       . = ALIGN(4);
+       .u_boot_list : {
+               KEEP(*(SORT(.u_boot_list*)));
+       } > .nor
+
+       . = ALIGN(4);
+       __image_copy_end = .;
+       _end = .;
+
+       .bss :
+       {
+               . = ALIGN(4);
+               __bss_start = .;
+               *(.bss*)
+               . = ALIGN(4);
+               __bss_end = .;
+       } > .bss
+}
index b69fd37c189c51f338ad7f1cbf766404952fc36d..4cb88062385205920cb8998dad79db85694323f6 100644 (file)
@@ -112,13 +112,20 @@ int armv7_init_nonsec(void)
        for (i = 1; i <= itlinesnr; i++)
                writel((unsigned)-1, gic_dist_addr + GICD_IGROUPRn + 4 * i);
 
+       /*
+        * Relocate secure section before any cpu runs in secure ram.
+        * smp_kick_all_cpus may enable other cores and runs into secure
+        * ram, so need to relocate secure section before enabling other
+        * cores.
+        */
+       relocate_secure_section();
+
 #ifndef CONFIG_ARMV7_PSCI
        smp_set_core_boot_addr((unsigned long)secure_ram_addr(_smp_pen), -1);
        smp_kick_all_cpus();
 #endif
 
        /* call the non-sec switching code on this CPU also */
-       relocate_secure_section();
        secure_ram_addr(_nonsec_init)();
        return 0;
 }
index df80a4e5fd9467cfd2224c5f9199db10bb2b6915..b4eab0b0f281869afddc9f8677f95b4ae585780a 100644 (file)
@@ -67,6 +67,9 @@ reset:
        msr     cpacr_el1, x0                   /* Enable FP/SIMD */
 0:
 
+       /* Apply ARM core specific erratas */
+       bl      apply_core_errata
+
        /*
         * Cache/BPB/TLB Invalidate
         * i-cache is invalidated before enabled in icache_enable()
@@ -97,6 +100,48 @@ master_cpu:
 
 /*-----------------------------------------------------------------------*/
 
+WEAK(apply_core_errata)
+
+       mov     x29, lr                 /* Save LR */
+       /* For now, we support Cortex-A57 specific errata only */
+
+       /* Check if we are running on a Cortex-A57 core */
+       branch_if_a57_core x0, apply_a57_core_errata
+0:
+       mov     lr, x29                 /* Restore LR */
+       ret
+
+apply_a57_core_errata:
+
+#ifdef CONFIG_ARM_ERRATA_828024
+       mrs     x0, S3_1_c15_c2_0       /* cpuactlr_el1 */
+       /* Disable non-allocate hint of w-b-n-a memory type */
+       mov     x0, #0x1 << 49
+       /* Disable write streaming no L1-allocate threshold */
+       mov     x0, #0x3 << 25
+       /* Disable write streaming no-allocate threshold */
+       mov     x0, #0x3 << 27
+       msr     S3_1_c15_c2_0, x0       /* cpuactlr_el1 */
+#endif
+
+#ifdef CONFIG_ARM_ERRATA_826974
+       mrs     x0, S3_1_c15_c2_0       /* cpuactlr_el1 */
+       /* Disable speculative load execution ahead of a DMB */
+       mov     x0, #0x1 << 59
+       msr     S3_1_c15_c2_0, x0       /* cpuactlr_el1 */
+#endif
+
+#ifdef CONFIG_ARM_ERRATA_833069
+       mrs     x0, S3_1_c15_c2_0       /* cpuactlr_el1 */
+       /* Disable Enable Invalidates of BTB bit */
+       and     x0, x0, #0xE
+       msr     S3_1_c15_c2_0, x0       /* cpuactlr_el1 */
+#endif
+       b 0b
+ENDPROC(apply_core_errata)
+
+/*-----------------------------------------------------------------------*/
+
 WEAK(lowlevel_init)
        mov     x29, lr                 /* Save LR */
 
diff --git a/arch/arm/cpu/tegra210-common/pinmux.c b/arch/arm/cpu/tegra210-common/pinmux.c
new file mode 100644 (file)
index 0000000..a29c76b
--- /dev/null
@@ -0,0 +1,195 @@
+/*
+ * Copyright (c) 2015, NVIDIA CORPORATION. All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/io.h>
+#include <asm/arch/pinmux.h>
+
+#define PIN(pin, f0, f1, f2, f3)       \
+       {                               \
+               .funcs = {              \
+                       PMUX_FUNC_##f0, \
+                       PMUX_FUNC_##f1, \
+                       PMUX_FUNC_##f2, \
+                       PMUX_FUNC_##f3, \
+               },                      \
+       }
+
+#define PIN_RESERVED {}
+
+static const struct pmux_pingrp_desc tegra210_pingroups[] = {
+       /*  pin,                  f0,         f1,     f2,    f3 */
+       /* Offset 0x3000 */
+       PIN(SDMMC1_CLK_PM0,       SDMMC1,     RSVD1,  RSVD2, RSVD3),
+       PIN(SDMMC1_CMD_PM1,       SDMMC1,     SPI3,   RSVD2, RSVD3),
+       PIN(SDMMC1_DAT3_PM2,      SDMMC1,     SPI3,   RSVD2, RSVD3),
+       PIN(SDMMC1_DAT2_PM3,      SDMMC1,     SPI3,   RSVD2, RSVD3),
+       PIN(SDMMC1_DAT1_PM4,      SDMMC1,     SPI3,   RSVD2, RSVD3),
+       PIN(SDMMC1_DAT0_PM5,      SDMMC1,     RSVD1,  RSVD2, RSVD3),
+       PIN_RESERVED,
+       /* Offset 0x301c */
+       PIN(SDMMC3_CLK_PP0,       SDMMC3,     RSVD1,  RSVD2, RSVD3),
+       PIN(SDMMC3_CMD_PP1,       SDMMC3,     RSVD1,  RSVD2, RSVD3),
+       PIN(SDMMC3_DAT0_PP5,      SDMMC3,     RSVD1,  RSVD2, RSVD3),
+       PIN(SDMMC3_DAT1_PP4,      SDMMC3,     RSVD1,  RSVD2, RSVD3),
+       PIN(SDMMC3_DAT2_PP3,      SDMMC3,     RSVD1,  RSVD2, RSVD3),
+       PIN(SDMMC3_DAT3_PP2,      SDMMC3,     RSVD1,  RSVD2, RSVD3),
+       PIN_RESERVED,
+       /* Offset 0x3038 */
+       PIN(PEX_L0_RST_N_PA0,     PE0,        RSVD1,  RSVD2, RSVD3),
+       PIN(PEX_L0_CLKREQ_N_PA1,  PE0,        RSVD1,  RSVD2, RSVD3),
+       PIN(PEX_WAKE_N_PA2,       PE,         RSVD1,  RSVD2, RSVD3),
+       PIN(PEX_L1_RST_N_PA3,     PE1,        RSVD1,  RSVD2, RSVD3),
+       PIN(PEX_L1_CLKREQ_N_PA4,  PE1,        RSVD1,  RSVD2, RSVD3),
+       PIN(SATA_LED_ACTIVE_PA5,  SATA,       RSVD1,  RSVD2, RSVD3),
+       PIN(SPI1_MOSI_PC0,        SPI1,       RSVD1,  RSVD2, RSVD3),
+       PIN(SPI1_MISO_PC1,        SPI1,       RSVD1,  RSVD2, RSVD3),
+       PIN(SPI1_SCK_PC2,         SPI1,       RSVD1,  RSVD2, RSVD3),
+       PIN(SPI1_CS0_PC3,         SPI1,       RSVD1,  RSVD2, RSVD3),
+       PIN(SPI1_CS1_PC4,         SPI1,       RSVD1,  RSVD2, RSVD3),
+       PIN(SPI2_MOSI_PB4,        SPI2,       DTV,    RSVD2, RSVD3),
+       PIN(SPI2_MISO_PB5,        SPI2,       DTV,    RSVD2, RSVD3),
+       PIN(SPI2_SCK_PB6,         SPI2,       DTV,    RSVD2, RSVD3),
+       PIN(SPI2_CS0_PB7,         SPI2,       DTV,    RSVD2, RSVD3),
+       PIN(SPI2_CS1_PDD0,        SPI2,       RSVD1,  RSVD2, RSVD3),
+       PIN(SPI4_MOSI_PC7,        SPI4,       RSVD1,  RSVD2, RSVD3),
+       PIN(SPI4_MISO_PD0,        SPI4,       RSVD1,  RSVD2, RSVD3),
+       PIN(SPI4_SCK_PC5,         SPI4,       RSVD1,  RSVD2, RSVD3),
+       PIN(SPI4_CS0_PC6,         SPI4,       RSVD1,  RSVD2, RSVD3),
+       PIN(QSPI_SCK_PEE0,        QSPI,       RSVD1,  RSVD2, RSVD3),
+       PIN(QSPI_CS_N_PEE1,       QSPI,       RSVD1,  RSVD2, RSVD3),
+       PIN(QSPI_IO0_PEE2,        QSPI,       RSVD1,  RSVD2, RSVD3),
+       PIN(QSPI_IO1_PEE3,        QSPI,       RSVD1,  RSVD2, RSVD3),
+       PIN(QSPI_IO2_PEE4,        QSPI,       RSVD1,  RSVD2, RSVD3),
+       PIN(QSPI_IO3_PEE5,        QSPI,       RSVD1,  RSVD2, RSVD3),
+       PIN_RESERVED,
+       /* Offset 0x30a4 */
+       PIN(DMIC1_CLK_PE0,        DMIC1,      I2S3,   RSVD2, RSVD3),
+       PIN(DMIC1_DAT_PE1,        DMIC1,      I2S3,   RSVD2, RSVD3),
+       PIN(DMIC2_CLK_PE2,        DMIC2,      I2S3,   RSVD2, RSVD3),
+       PIN(DMIC2_DAT_PE3,        DMIC2,      I2S3,   RSVD2, RSVD3),
+       PIN(DMIC3_CLK_PE4,        DMIC3,      I2S5A,  RSVD2, RSVD3),
+       PIN(DMIC3_DAT_PE5,        DMIC3,      I2S5A,  RSVD2, RSVD3),
+       PIN(GEN1_I2C_SCL_PJ1,     I2C1,       RSVD1,  RSVD2, RSVD3),
+       PIN(GEN1_I2C_SDA_PJ0,     I2C1,       RSVD1,  RSVD2, RSVD3),
+       PIN(GEN2_I2C_SCL_PJ2,     I2C2,       RSVD1,  RSVD2, RSVD3),
+       PIN(GEN2_I2C_SDA_PJ3,     I2C2,       RSVD1,  RSVD2, RSVD3),
+       PIN(GEN3_I2C_SCL_PF0,     I2C3,       RSVD1,  RSVD2, RSVD3),
+       PIN(GEN3_I2C_SDA_PF1,     I2C3,       RSVD1,  RSVD2, RSVD3),
+       PIN(CAM_I2C_SCL_PS2,      I2C3,       I2CVI,  RSVD2, RSVD3),
+       PIN(CAM_I2C_SDA_PS3,      I2C3,       I2CVI,  RSVD2, RSVD3),
+       PIN(PWR_I2C_SCL_PY3,      I2CPMU,     RSVD1,  RSVD2, RSVD3),
+       PIN(PWR_I2C_SDA_PY4,      I2CPMU,     RSVD1,  RSVD2, RSVD3),
+       PIN(UART1_TX_PU0,         UARTA,      RSVD1,  RSVD2, RSVD3),
+       PIN(UART1_RX_PU1,         UARTA,      RSVD1,  RSVD2, RSVD3),
+       PIN(UART1_RTS_PU2,        UARTA,      RSVD1,  RSVD2, RSVD3),
+       PIN(UART1_CTS_PU3,        UARTA,      RSVD1,  RSVD2, RSVD3),
+       PIN(UART2_TX_PG0,         UARTB,      I2S4A,  SPDIF, UART),
+       PIN(UART2_RX_PG1,         UARTB,      I2S4A,  SPDIF, UART),
+       PIN(UART2_RTS_PG2,        UARTB,      I2S4A,  RSVD2, UART),
+       PIN(UART2_CTS_PG3,        UARTB,      I2S4A,  RSVD2, UART),
+       PIN(UART3_TX_PD1,         UARTC,      SPI4,   RSVD2, RSVD3),
+       PIN(UART3_RX_PD2,         UARTC,      SPI4,   RSVD2, RSVD3),
+       PIN(UART3_RTS_PD3,        UARTC,      SPI4,   RSVD2, RSVD3),
+       PIN(UART3_CTS_PD4,        UARTC,      SPI4,   RSVD2, RSVD3),
+       PIN(UART4_TX_PI4,         UARTD,      UART,   RSVD2, RSVD3),
+       PIN(UART4_RX_PI5,         UARTD,      UART,   RSVD2, RSVD3),
+       PIN(UART4_RTS_PI6,        UARTD,      UART,   RSVD2, RSVD3),
+       PIN(UART4_CTS_PI7,        UARTD,      UART,   RSVD2, RSVD3),
+       PIN(DAP1_FS_PB0,          I2S1,       RSVD1,  RSVD2, RSVD3),
+       PIN(DAP1_DIN_PB1,         I2S1,       RSVD1,  RSVD2, RSVD3),
+       PIN(DAP1_DOUT_PB2,        I2S1,       RSVD1,  RSVD2, RSVD3),
+       PIN(DAP1_SCLK_PB3,        I2S1,       RSVD1,  RSVD2, RSVD3),
+       PIN(DAP2_FS_PAA0,         I2S2,       RSVD1,  RSVD2, RSVD3),
+       PIN(DAP2_DIN_PAA2,        I2S2,       RSVD1,  RSVD2, RSVD3),
+       PIN(DAP2_DOUT_PAA3,       I2S2,       RSVD1,  RSVD2, RSVD3),
+       PIN(DAP2_SCLK_PAA1,       I2S2,       RSVD1,  RSVD2, RSVD3),
+       PIN(DAP4_FS_PJ4,          I2S4B,      RSVD1,  RSVD2, RSVD3),
+       PIN(DAP4_DIN_PJ5,         I2S4B,      RSVD1,  RSVD2, RSVD3),
+       PIN(DAP4_DOUT_PJ6,        I2S4B,      RSVD1,  RSVD2, RSVD3),
+       PIN(DAP4_SCLK_PJ7,        I2S4B,      RSVD1,  RSVD2, RSVD3),
+       PIN(CAM1_MCLK_PS0,        EXTPERIPH3, RSVD1,  RSVD2, RSVD3),
+       PIN(CAM2_MCLK_PS1,        EXTPERIPH3, RSVD1,  RSVD2, RSVD3),
+       PIN(JTAG_RTCK,            JTAG,       RSVD1,  RSVD2, RSVD3),
+       PIN(CLK_32K_IN,           CLK,        RSVD1,  RSVD2, RSVD3),
+       PIN(CLK_32K_OUT_PY5,      SOC,        BLINK,  RSVD2, RSVD3),
+       PIN(BATT_BCL,             BCL,        RSVD1,  RSVD2, RSVD3),
+       PIN(CLK_REQ,              SYS,        RSVD1,  RSVD2, RSVD3),
+       PIN(CPU_PWR_REQ,          CPU,        RSVD1,  RSVD2, RSVD3),
+       PIN(PWR_INT_N,            PMI,        RSVD1,  RSVD2, RSVD3),
+       PIN(SHUTDOWN,             SHUTDOWN,   RSVD1,  RSVD2, RSVD3),
+       PIN(CORE_PWR_REQ,         CORE,       RSVD1,  RSVD2, RSVD3),
+       PIN(AUD_MCLK_PBB0,        AUD,        RSVD1,  RSVD2, RSVD3),
+       PIN(DVFS_PWM_PBB1,        RSVD0,      CLDVFS, SPI3,  RSVD3),
+       PIN(DVFS_CLK_PBB2,        RSVD0,      CLDVFS, SPI3,  RSVD3),
+       PIN(GPIO_X1_AUD_PBB3,     RSVD0,      RSVD1,  SPI3,  RSVD3),
+       PIN(GPIO_X3_AUD_PBB4,     RSVD0,      RSVD1,  SPI3,  RSVD3),
+       PIN(PCC7,                 RSVD0,      RSVD1,  RSVD2, RSVD3),
+       PIN(HDMI_CEC_PCC0,        CEC,        RSVD1,  RSVD2, RSVD3),
+       PIN(HDMI_INT_DP_HPD_PCC1, DP,         RSVD1,  RSVD2, RSVD3),
+       PIN(SPDIF_OUT_PCC2,       SPDIF,      RSVD1,  RSVD2, RSVD3),
+       PIN(SPDIF_IN_PCC3,        SPDIF,      RSVD1,  RSVD2, RSVD3),
+       PIN(USB_VBUS_EN0_PCC4,    USB,        RSVD1,  RSVD2, RSVD3),
+       PIN(USB_VBUS_EN1_PCC5,    USB,        RSVD1,  RSVD2, RSVD3),
+       PIN(DP_HPD0_PCC6,         DP,         RSVD1,  RSVD2, RSVD3),
+       PIN(WIFI_EN_PH0,          RSVD0,      RSVD1,  RSVD2, RSVD3),
+       PIN(WIFI_RST_PH1,         RSVD0,      RSVD1,  RSVD2, RSVD3),
+       PIN(WIFI_WAKE_AP_PH2,     RSVD0,      RSVD1,  RSVD2, RSVD3),
+       PIN(AP_WAKE_BT_PH3,       RSVD0,      UARTB,  SPDIF, RSVD3),
+       PIN(BT_RST_PH4,           RSVD0,      UARTB,  SPDIF, RSVD3),
+       PIN(BT_WAKE_AP_PH5,       RSVD0,      RSVD1,  RSVD2, RSVD3),
+       PIN(AP_WAKE_NFC_PH7,      RSVD0,      RSVD1,  RSVD2, RSVD3),
+       PIN(NFC_EN_PI0,           RSVD0,      RSVD1,  RSVD2, RSVD3),
+       PIN(NFC_INT_PI1,          RSVD0,      RSVD1,  RSVD2, RSVD3),
+       PIN(GPS_EN_PI2,           RSVD0,      RSVD1,  RSVD2, RSVD3),
+       PIN(GPS_RST_PI3,          RSVD0,      RSVD1,  RSVD2, RSVD3),
+       PIN(CAM_RST_PS4,          VGP1,       RSVD1,  RSVD2, RSVD3),
+       PIN(CAM_AF_EN_PS5,        VIMCLK,     VGP2,   RSVD2, RSVD3),
+       PIN(CAM_FLASH_EN_PS6,     VIMCLK,     VGP3,   RSVD2, RSVD3),
+       PIN(CAM1_PWDN_PS7,        VGP4,       RSVD1,  RSVD2, RSVD3),
+       PIN(CAM2_PWDN_PT0,        VGP5,       RSVD1,  RSVD2, RSVD3),
+       PIN(CAM1_STROBE_PT1,      VGP6,       RSVD1,  RSVD2, RSVD3),
+       PIN(LCD_TE_PY2,           DISPLAYA,   RSVD1,  RSVD2, RSVD3),
+       PIN(LCD_BL_PWM_PV0,       DISPLAYA,   PWM0,   SOR0,  RSVD3),
+       PIN(LCD_BL_EN_PV1,        RSVD0,      RSVD1,  RSVD2, RSVD3),
+       PIN(LCD_RST_PV2,          RSVD0,      RSVD1,  RSVD2, RSVD3),
+       PIN(LCD_GPIO1_PV3,        DISPLAYB,   RSVD1,  RSVD2, RSVD3),
+       PIN(LCD_GPIO2_PV4,        DISPLAYB,   PWM1,   RSVD2, SOR1),
+       PIN(AP_READY_PV5,         RSVD0,      RSVD1,  RSVD2, RSVD3),
+       PIN(TOUCH_RST_PV6,        RSVD0,      RSVD1,  RSVD2, RSVD3),
+       PIN(TOUCH_CLK_PV7,        TOUCH,      RSVD1,  RSVD2, RSVD3),
+       PIN(MODEM_WAKE_AP_PX0,    RSVD0,      RSVD1,  RSVD2, RSVD3),
+       PIN(TOUCH_INT_PX1,        RSVD0,      RSVD1,  RSVD2, RSVD3),
+       PIN(MOTION_INT_PX2,       RSVD0,      RSVD1,  RSVD2, RSVD3),
+       PIN(ALS_PROX_INT_PX3,     RSVD0,      RSVD1,  RSVD2, RSVD3),
+       PIN(TEMP_ALERT_PX4,       RSVD0,      RSVD1,  RSVD2, RSVD3),
+       PIN(BUTTON_POWER_ON_PX5,  RSVD0,      RSVD1,  RSVD2, RSVD3),
+       PIN(BUTTON_VOL_UP_PX6,    RSVD0,      RSVD1,  RSVD2, RSVD3),
+       PIN(BUTTON_VOL_DOWN_PX7,  RSVD0,      RSVD1,  RSVD2, RSVD3),
+       PIN(BUTTON_SLIDE_SW_PY0,  RSVD0,      RSVD1,  RSVD2, RSVD3),
+       PIN(BUTTON_HOME_PY1,      RSVD0,      RSVD1,  RSVD2, RSVD3),
+       PIN(PA6,                  SATA,       RSVD1,  RSVD2, RSVD3),
+       PIN(PE6,                  RSVD0,      I2S5A,  PWM2,  RSVD3),
+       PIN(PE7,                  RSVD0,      I2S5A,  PWM3,  RSVD3),
+       PIN(PH6,                  RSVD0,      RSVD1,  RSVD2, RSVD3),
+       PIN(PK0,                  IQC0,       I2S5B,  RSVD2, RSVD3),
+       PIN(PK1,                  IQC0,       I2S5B,  RSVD2, RSVD3),
+       PIN(PK2,                  IQC0,       I2S5B,  RSVD2, RSVD3),
+       PIN(PK3,                  IQC0,       I2S5B,  RSVD2, RSVD3),
+       PIN(PK4,                  IQC1,       RSVD1,  RSVD2, RSVD3),
+       PIN(PK5,                  IQC1,       RSVD1,  RSVD2, RSVD3),
+       PIN(PK6,                  IQC1,       RSVD1,  RSVD2, RSVD3),
+       PIN(PK7,                  IQC1,       RSVD1,  RSVD2, RSVD3),
+       PIN(PL0,                  RSVD0,      RSVD1,  RSVD2, RSVD3),
+       PIN(PL1,                  SOC,        RSVD1,  RSVD2, RSVD3),
+       PIN(PZ0,                  VIMCLK2,    RSVD1,  RSVD2, RSVD3),
+       PIN(PZ1,                  VIMCLK2,    SDMMC1, RSVD2, RSVD3),
+       PIN(PZ2,                  SDMMC3,     CCLA,   RSVD2, RSVD3),
+       PIN(PZ3,                  SDMMC3,     RSVD1,  RSVD2, RSVD3),
+       PIN(PZ4,                  SDMMC1,     RSVD1,  RSVD2, RSVD3),
+       PIN(PZ5,                  SOC,        RSVD1,  RSVD2, RSVD3),
+};
+const struct pmux_pingrp_desc *tegra_soc_pingroups = tegra210_pingroups;
index 15db0f275b6d3740caa1756e9394de6c93764674..13ab42bf3dcab6832bc9bda215c8f32dc0f5ce41 100644 (file)
                sdhci0 = "/sdhci@78000600";
                sdhci1 = "/sdhci@78000400";
                sdhci2 = "/sdhci@78000000";
+               spi0 = "/spi@7000d400";
+               spi1 = "/spi@7000dc00";
+               spi2 = "/spi@7000de00";
+               spi3 = "/spi@7000da00";
                usb0 = "/usb@7d000000";
                usb1 = "/usb@7d004000";
                usb2 = "/usb@7d008000";
        sdhci@78000000 {
                status = "okay";
                bus-width = <4>;
-               cd-gpios = <&gpio TEGRA_GPIO(CC, 5) GPIO_ACTIVE_HIGH>;
+               /* SD1_CD# */
+               cd-gpios = <&gpio TEGRA_GPIO(CC, 5) GPIO_ACTIVE_LOW>;
        };
 
        sdhci@78000400 {
                status = "okay";
                bus-width = <8>;
-               cd-gpios = <&gpio TEGRA_GPIO(V, 3) GPIO_ACTIVE_HIGH>;
+               /* MMC1_CD# */
+               cd-gpios = <&gpio TEGRA_GPIO(V, 3) GPIO_ACTIVE_LOW>;
        };
 
        sdhci@78000600 {
        usb@7d000000 {
                status = "okay";
                dr_mode = "peripheral";
+               /* USBO1_EN */
                nvidia,vbus-gpio = <&gpio TEGRA_GPIO(T, 5) GPIO_ACTIVE_HIGH>;
        };
 
        /* EHCI instance 1: USB2_DP/N -> USBH2_DP/N */
        usb@7d004000 {
                status = "okay";
+               /* USBH_EN */
                nvidia,vbus-gpio = <&gpio TEGRA_GPIO(DD, 1) GPIO_ACTIVE_HIGH>;
                phy_type = "utmi";
        };
        /* EHCI instance 2: USB3_DP/N -> USBH3_DP/N */
        usb@7d008000 {
                status = "okay";
+               /* USBH_EN */
                nvidia,vbus-gpio = <&gpio TEGRA_GPIO(DD, 1) GPIO_ACTIVE_HIGH>;
        };
 
index 6cd1902f11bcb563b8daab2ee7792325f9913628..36533dc840a31acbd4d461d95c93d314f41b223c 100644 (file)
@@ -64,7 +64,7 @@
        sdhci@78000200 {
                status = "okay";
                bus-width = <4>;
-               cd-gpios = <&gpio TEGRA_GPIO(C, 7) GPIO_ACTIVE_LOW>;
+               cd-gpios = <&gpio TEGRA_GPIO(C, 7) GPIO_ACTIVE_LOW>; /* MMCD */
        };
 
        sdhci@78000600 {
        usb@7d004000 {
                status = "okay";
                phy_type = "utmi";
+               /* VBUS_LAN */
                nvidia,vbus-gpio = <&gpio TEGRA_GPIO(DD, 2) GPIO_ACTIVE_HIGH>;
        };
 
        /* EHCI instance 2: USB3_DP/N -> USBH_P/N */
        usb@7d008000 {
                status = "okay";
+               /* USBH_PEN */
                nvidia,vbus-gpio = <&gpio TEGRA_GPIO(W, 2) GPIO_ACTIVE_LOW>;
        };
 };
diff --git a/arch/arm/include/asm/arch-orion5x/spl.h b/arch/arm/include/asm/arch-orion5x/spl.h
new file mode 100644 (file)
index 0000000..23745bc
--- /dev/null
@@ -0,0 +1,10 @@
+/*
+ * (C) Copyright 2014 Albert ARIBAUD <albert.u.boot@aribaud.net>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef        _ASM_ARCH_SPL_H_
+#define        _ASM_ARCH_SPL_H_
+
+#define BOOT_DEVICE_NOR                1
index 5c8be94d97728411f049a213c58ecfd23ede3bc9..ca40e4e0bce6a90e37de1c622790032a8721d07d 100644 (file)
@@ -74,3 +74,7 @@ static inline void config_vpr(void)
 {
 }
 #endif
+
+#if defined(CONFIG_TEGRA_SUPPORT_NON_SECURE)
+bool tegra_cpu_is_non_secure(void);
+#endif
index da477697bf029513db8fe4a605a8fc46c54ae3d9..4212e57699301a92bd29a9370d47a99ae3de5080 100644 (file)
@@ -23,39 +23,82 @@ enum pmux_tristate {
        PMUX_TRI_TRISTATE = 1,
 };
 
-#ifdef TEGRA_PMX_HAS_PIN_IO_BIT_ETC
+#ifdef TEGRA_PMX_PINS_HAVE_E_INPUT
 enum pmux_pin_io {
        PMUX_PIN_OUTPUT = 0,
        PMUX_PIN_INPUT = 1,
        PMUX_PIN_NONE,
 };
+#endif
 
+#ifdef TEGRA_PMX_PINS_HAVE_LOCK
 enum pmux_pin_lock {
        PMUX_PIN_LOCK_DEFAULT = 0,
        PMUX_PIN_LOCK_DISABLE,
        PMUX_PIN_LOCK_ENABLE,
 };
+#endif
 
+#ifdef TEGRA_PMX_PINS_HAVE_OD
 enum pmux_pin_od {
        PMUX_PIN_OD_DEFAULT = 0,
        PMUX_PIN_OD_DISABLE,
        PMUX_PIN_OD_ENABLE,
 };
+#endif
 
+#ifdef TEGRA_PMX_PINS_HAVE_IO_RESET
 enum pmux_pin_ioreset {
        PMUX_PIN_IO_RESET_DEFAULT = 0,
        PMUX_PIN_IO_RESET_DISABLE,
        PMUX_PIN_IO_RESET_ENABLE,
 };
+#endif
 
-#ifdef TEGRA_PMX_HAS_RCV_SEL
+#ifdef TEGRA_PMX_PINS_HAVE_RCV_SEL
 enum pmux_pin_rcv_sel {
        PMUX_PIN_RCV_SEL_DEFAULT = 0,
        PMUX_PIN_RCV_SEL_NORMAL,
        PMUX_PIN_RCV_SEL_HIGH,
 };
-#endif /* TEGRA_PMX_HAS_RCV_SEL */
-#endif /* TEGRA_PMX_HAS_PIN_IO_BIT_ETC */
+#endif
+
+#ifdef TEGRA_PMX_PINS_HAVE_E_IO_HV
+enum pmux_pin_e_io_hv {
+       PMUX_PIN_E_IO_HV_DEFAULT = 0,
+       PMUX_PIN_E_IO_HV_NORMAL,
+       PMUX_PIN_E_IO_HV_HIGH,
+};
+#endif
+
+#ifdef TEGRA_PMX_GRPS_HAVE_LPMD
+/* Defines a pin group cfg's low-power mode select */
+enum pmux_lpmd {
+       PMUX_LPMD_X8 = 0,
+       PMUX_LPMD_X4,
+       PMUX_LPMD_X2,
+       PMUX_LPMD_X,
+       PMUX_LPMD_NONE = -1,
+};
+#endif
+
+#if defined(TEGRA_PMX_PINS_HAVE_SCHMT) || defined(TEGRA_PMX_GRPS_HAVE_SCHMT)
+/* Defines whether a pin group cfg's schmidt is enabled or not */
+enum pmux_schmt {
+       PMUX_SCHMT_DISABLE = 0,
+       PMUX_SCHMT_ENABLE = 1,
+       PMUX_SCHMT_NONE = -1,
+};
+#endif
+
+#if defined(TEGRA_PMX_PINS_HAVE_HSM) || defined(TEGRA_PMX_GRPS_HAVE_HSM)
+/* Defines whether a pin group cfg's high-speed mode is enabled or not */
+enum pmux_hsm {
+       PMUX_HSM_DISABLE = 0,
+       PMUX_HSM_ENABLE = 1,
+       PMUX_HSM_NONE = -1,
+};
+#endif
 
 /*
  * This defines the configuration for a pin, including the function assigned,
@@ -68,21 +111,37 @@ struct pmux_pingrp_config {
        u32 func:8;             /* function to assign PMUX_FUNC_... */
        u32 pull:2;             /* pull up/down/normal PMUX_PULL_...*/
        u32 tristate:2;         /* tristate or normal PMUX_TRI_...  */
-#ifdef TEGRA_PMX_HAS_PIN_IO_BIT_ETC
+#ifdef TEGRA_PMX_PINS_HAVE_E_INPUT
        u32 io:2;               /* input or output PMUX_PIN_...     */
+#endif
+#ifdef TEGRA_PMX_PINS_HAVE_LOCK
        u32 lock:2;             /* lock enable/disable PMUX_PIN...  */
+#endif
+#ifdef TEGRA_PMX_PINS_HAVE_OD
        u32 od:2;               /* open-drain or push-pull driver   */
+#endif
+#ifdef TEGRA_PMX_PINS_HAVE_IO_RESET
        u32 ioreset:2;          /* input/output reset PMUX_PIN...   */
-#ifdef TEGRA_PMX_HAS_RCV_SEL
+#endif
+#ifdef TEGRA_PMX_PINS_HAVE_RCV_SEL
        u32 rcv_sel:2;          /* select between High and Normal  */
                                /* VIL/VIH receivers */
 #endif
+#ifdef TEGRA_PMX_PINS_HAVE_E_IO_HV
+       u32 e_io_hv:2;          /* select 3.3v tolerant receivers */
+#endif
+#ifdef TEGRA_PMX_PINS_HAVE_SCHMT
+       u32 schmt:2;            /* schmitt enable            */
+#endif
+#ifdef TEGRA_PMX_PINS_HAVE_HSM
+       u32 hsm:2;              /* high-speed mode enable    */
 #endif
 };
 
-#if !defined(CONFIG_TEGRA20) && !defined(CONFIG_TEGRA30)
-/* Set the pinmux CLAMP_INPUTS_WHEN_TRISTATED bit */
+#ifdef TEGRA_PMX_SOC_HAS_IO_CLAMPING
+/* Set/clear the pinmux CLAMP_INPUTS_WHEN_TRISTATED bit */
 void pinmux_set_tristate_input_clamping(void);
+void pinmux_clear_tristate_input_clamping(void);
 #endif
 
 /* Set the mux function for a pin group */
@@ -97,7 +156,7 @@ void pinmux_tristate_enable(enum pmux_pingrp pin);
 /* Set a pin group to normal (non tristate) */
 void pinmux_tristate_disable(enum pmux_pingrp pin);
 
-#ifdef TEGRA_PMX_HAS_PIN_IO_BIT_ETC
+#ifdef TEGRA_PMX_PINS_HAVE_E_INPUT
 /* Set a pin group as input or output */
 void pinmux_set_io(enum pmux_pingrp pin, enum pmux_pin_io io);
 #endif
@@ -111,7 +170,7 @@ void pinmux_set_io(enum pmux_pingrp pin, enum pmux_pin_io io);
 void pinmux_config_pingrp_table(const struct pmux_pingrp_config *config,
                                int len);
 
-#ifdef TEGRA_PMX_HAS_DRVGRPS
+#ifdef TEGRA_PMX_SOC_HAS_DRVGRPS
 
 #define PMUX_SLWF_MIN  0
 #define PMUX_SLWF_MAX  3
@@ -129,29 +188,6 @@ void pinmux_config_pingrp_table(const struct pmux_pingrp_config *config,
 #define PMUX_DRVDN_MAX 127
 #define PMUX_DRVDN_NONE        -1
 
-/* Defines a pin group cfg's low-power mode select */
-enum pmux_lpmd {
-       PMUX_LPMD_X8 = 0,
-       PMUX_LPMD_X4,
-       PMUX_LPMD_X2,
-       PMUX_LPMD_X,
-       PMUX_LPMD_NONE = -1,
-};
-
-/* Defines whether a pin group cfg's schmidt is enabled or not */
-enum pmux_schmt {
-       PMUX_SCHMT_DISABLE = 0,
-       PMUX_SCHMT_ENABLE = 1,
-       PMUX_SCHMT_NONE = -1,
-};
-
-/* Defines whether a pin group cfg's high-speed mode is enabled or not */
-enum pmux_hsm {
-       PMUX_HSM_DISABLE = 0,
-       PMUX_HSM_ENABLE = 1,
-       PMUX_HSM_NONE = -1,
-};
-
 /*
  * This defines the configuration for a pin group's pad control config
  */
@@ -161,9 +197,15 @@ struct pmux_drvgrp_config {
        u32 slwr:3;             /* rising edge slew          */
        u32 drvup:8;            /* pull-up drive strength    */
        u32 drvdn:8;            /* pull-down drive strength  */
+#ifdef TEGRA_PMX_GRPS_HAVE_LPMD
        u32 lpmd:3;             /* low-power mode selection  */
+#endif
+#ifdef TEGRA_PMX_GRPS_HAVE_SCHMT
        u32 schmt:2;            /* schmidt enable            */
+#endif
+#ifdef TEGRA_PMX_GRPS_HAVE_HSM
        u32 hsm:2;              /* high-speed mode enable    */
+#endif
 };
 
 /**
@@ -175,7 +217,7 @@ struct pmux_drvgrp_config {
 void pinmux_config_drvgrp_table(const struct pmux_drvgrp_config *config,
                                int len);
 
-#endif /* TEGRA_PMX_HAS_DRVGRPS */
+#endif /* TEGRA_PMX_SOC_HAS_DRVGRPS */
 
 struct pmux_pingrp_desc {
        u8 funcs[4];
index b86562ac6dee99fe4f8f22b49a2f6165145a9d17..38d8b9cf4d030dfe1bedde40ac626b99c07224bf 100644 (file)
@@ -313,9 +313,17 @@ enum pmux_func {
        PMUX_FUNC_COUNT,
 };
 
-#define TEGRA_PMX_HAS_PIN_IO_BIT_ETC
-#define TEGRA_PMX_HAS_RCV_SEL
-#define TEGRA_PMX_HAS_DRVGRPS
+#define TEGRA_PMX_SOC_DRV_GROUP_BASE_REG 0x868
+#define TEGRA_PMX_SOC_HAS_IO_CLAMPING
+#define TEGRA_PMX_SOC_HAS_DRVGRPS
+#define TEGRA_PMX_GRPS_HAVE_LPMD
+#define TEGRA_PMX_GRPS_HAVE_SCHMT
+#define TEGRA_PMX_GRPS_HAVE_HSM
+#define TEGRA_PMX_PINS_HAVE_E_INPUT
+#define TEGRA_PMX_PINS_HAVE_LOCK
+#define TEGRA_PMX_PINS_HAVE_OD
+#define TEGRA_PMX_PINS_HAVE_IO_RESET
+#define TEGRA_PMX_PINS_HAVE_RCV_SEL
 #include <asm/arch-tegra/pinmux.h>
 
 #endif /* _TEGRA114_PINMUX_H_ */
index 1884935a579edb8c794b080625b55d630afe2eca..78bc9e6f178bf3fed86d7f84e615d0f68fc56c03 100644 (file)
@@ -335,9 +335,17 @@ enum pmux_func {
        PMUX_FUNC_COUNT,
 };
 
-#define TEGRA_PMX_HAS_PIN_IO_BIT_ETC
-#define TEGRA_PMX_HAS_RCV_SEL
-#define TEGRA_PMX_HAS_DRVGRPS
+#define TEGRA_PMX_SOC_DRV_GROUP_BASE_REG 0x868
+#define TEGRA_PMX_SOC_HAS_IO_CLAMPING
+#define TEGRA_PMX_SOC_HAS_DRVGRPS
+#define TEGRA_PMX_GRPS_HAVE_LPMD
+#define TEGRA_PMX_GRPS_HAVE_SCHMT
+#define TEGRA_PMX_GRPS_HAVE_HSM
+#define TEGRA_PMX_PINS_HAVE_E_INPUT
+#define TEGRA_PMX_PINS_HAVE_LOCK
+#define TEGRA_PMX_PINS_HAVE_OD
+#define TEGRA_PMX_PINS_HAVE_IO_RESET
+#define TEGRA_PMX_PINS_HAVE_RCV_SEL
 #include <asm/arch-tegra/pinmux.h>
 
 #endif /* _TEGRA124_PINMUX_H_ */
index f7bc97fe5f7389cfc947b61537e8b10fe2d335ec..bf35d50ba316a599142f1b90fa358b66b3b019a8 100644 (file)
@@ -233,6 +233,7 @@ enum pmux_func {
        PMUX_FUNC_COUNT,
 };
 
+#define TEGRA_PMX_SOC_DRV_GROUP_BASE_REG 0x868
 #include <asm/arch-tegra/pinmux.h>
 
 #endif /* _TEGRA20_PINMUX_H_ */
diff --git a/arch/arm/include/asm/arch-tegra210/pinmux.h b/arch/arm/include/asm/arch-tegra210/pinmux.h
new file mode 100644 (file)
index 0000000..af3b55f
--- /dev/null
@@ -0,0 +1,416 @@
+/*
+ * Copyright (c) 2015, NVIDIA CORPORATION. All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#ifndef _TEGRA210_PINMUX_H_
+#define _TEGRA210_PINMUX_H_
+
+enum pmux_pingrp {
+       PMUX_PINGRP_SDMMC1_CLK_PM0,
+       PMUX_PINGRP_SDMMC1_CMD_PM1,
+       PMUX_PINGRP_SDMMC1_DAT3_PM2,
+       PMUX_PINGRP_SDMMC1_DAT2_PM3,
+       PMUX_PINGRP_SDMMC1_DAT1_PM4,
+       PMUX_PINGRP_SDMMC1_DAT0_PM5,
+       PMUX_PINGRP_SDMMC3_CLK_PP0 = (0x1c / 4),
+       PMUX_PINGRP_SDMMC3_CMD_PP1,
+       PMUX_PINGRP_SDMMC3_DAT0_PP5,
+       PMUX_PINGRP_SDMMC3_DAT1_PP4,
+       PMUX_PINGRP_SDMMC3_DAT2_PP3,
+       PMUX_PINGRP_SDMMC3_DAT3_PP2,
+       PMUX_PINGRP_PEX_L0_RST_N_PA0 = (0x38 / 4),
+       PMUX_PINGRP_PEX_L0_CLKREQ_N_PA1,
+       PMUX_PINGRP_PEX_WAKE_N_PA2,
+       PMUX_PINGRP_PEX_L1_RST_N_PA3,
+       PMUX_PINGRP_PEX_L1_CLKREQ_N_PA4,
+       PMUX_PINGRP_SATA_LED_ACTIVE_PA5,
+       PMUX_PINGRP_SPI1_MOSI_PC0,
+       PMUX_PINGRP_SPI1_MISO_PC1,
+       PMUX_PINGRP_SPI1_SCK_PC2,
+       PMUX_PINGRP_SPI1_CS0_PC3,
+       PMUX_PINGRP_SPI1_CS1_PC4,
+       PMUX_PINGRP_SPI2_MOSI_PB4,
+       PMUX_PINGRP_SPI2_MISO_PB5,
+       PMUX_PINGRP_SPI2_SCK_PB6,
+       PMUX_PINGRP_SPI2_CS0_PB7,
+       PMUX_PINGRP_SPI2_CS1_PDD0,
+       PMUX_PINGRP_SPI4_MOSI_PC7,
+       PMUX_PINGRP_SPI4_MISO_PD0,
+       PMUX_PINGRP_SPI4_SCK_PC5,
+       PMUX_PINGRP_SPI4_CS0_PC6,
+       PMUX_PINGRP_QSPI_SCK_PEE0,
+       PMUX_PINGRP_QSPI_CS_N_PEE1,
+       PMUX_PINGRP_QSPI_IO0_PEE2,
+       PMUX_PINGRP_QSPI_IO1_PEE3,
+       PMUX_PINGRP_QSPI_IO2_PEE4,
+       PMUX_PINGRP_QSPI_IO3_PEE5,
+       PMUX_PINGRP_DMIC1_CLK_PE0 = (0xa4 / 4),
+       PMUX_PINGRP_DMIC1_DAT_PE1,
+       PMUX_PINGRP_DMIC2_CLK_PE2,
+       PMUX_PINGRP_DMIC2_DAT_PE3,
+       PMUX_PINGRP_DMIC3_CLK_PE4,
+       PMUX_PINGRP_DMIC3_DAT_PE5,
+       PMUX_PINGRP_GEN1_I2C_SCL_PJ1,
+       PMUX_PINGRP_GEN1_I2C_SDA_PJ0,
+       PMUX_PINGRP_GEN2_I2C_SCL_PJ2,
+       PMUX_PINGRP_GEN2_I2C_SDA_PJ3,
+       PMUX_PINGRP_GEN3_I2C_SCL_PF0,
+       PMUX_PINGRP_GEN3_I2C_SDA_PF1,
+       PMUX_PINGRP_CAM_I2C_SCL_PS2,
+       PMUX_PINGRP_CAM_I2C_SDA_PS3,
+       PMUX_PINGRP_PWR_I2C_SCL_PY3,
+       PMUX_PINGRP_PWR_I2C_SDA_PY4,
+       PMUX_PINGRP_UART1_TX_PU0,
+       PMUX_PINGRP_UART1_RX_PU1,
+       PMUX_PINGRP_UART1_RTS_PU2,
+       PMUX_PINGRP_UART1_CTS_PU3,
+       PMUX_PINGRP_UART2_TX_PG0,
+       PMUX_PINGRP_UART2_RX_PG1,
+       PMUX_PINGRP_UART2_RTS_PG2,
+       PMUX_PINGRP_UART2_CTS_PG3,
+       PMUX_PINGRP_UART3_TX_PD1,
+       PMUX_PINGRP_UART3_RX_PD2,
+       PMUX_PINGRP_UART3_RTS_PD3,
+       PMUX_PINGRP_UART3_CTS_PD4,
+       PMUX_PINGRP_UART4_TX_PI4,
+       PMUX_PINGRP_UART4_RX_PI5,
+       PMUX_PINGRP_UART4_RTS_PI6,
+       PMUX_PINGRP_UART4_CTS_PI7,
+       PMUX_PINGRP_DAP1_FS_PB0,
+       PMUX_PINGRP_DAP1_DIN_PB1,
+       PMUX_PINGRP_DAP1_DOUT_PB2,
+       PMUX_PINGRP_DAP1_SCLK_PB3,
+       PMUX_PINGRP_DAP2_FS_PAA0,
+       PMUX_PINGRP_DAP2_DIN_PAA2,
+       PMUX_PINGRP_DAP2_DOUT_PAA3,
+       PMUX_PINGRP_DAP2_SCLK_PAA1,
+       PMUX_PINGRP_DAP4_FS_PJ4,
+       PMUX_PINGRP_DAP4_DIN_PJ5,
+       PMUX_PINGRP_DAP4_DOUT_PJ6,
+       PMUX_PINGRP_DAP4_SCLK_PJ7,
+       PMUX_PINGRP_CAM1_MCLK_PS0,
+       PMUX_PINGRP_CAM2_MCLK_PS1,
+       PMUX_PINGRP_JTAG_RTCK,
+       PMUX_PINGRP_CLK_32K_IN,
+       PMUX_PINGRP_CLK_32K_OUT_PY5,
+       PMUX_PINGRP_BATT_BCL,
+       PMUX_PINGRP_CLK_REQ,
+       PMUX_PINGRP_CPU_PWR_REQ,
+       PMUX_PINGRP_PWR_INT_N,
+       PMUX_PINGRP_SHUTDOWN,
+       PMUX_PINGRP_CORE_PWR_REQ,
+       PMUX_PINGRP_AUD_MCLK_PBB0,
+       PMUX_PINGRP_DVFS_PWM_PBB1,
+       PMUX_PINGRP_DVFS_CLK_PBB2,
+       PMUX_PINGRP_GPIO_X1_AUD_PBB3,
+       PMUX_PINGRP_GPIO_X3_AUD_PBB4,
+       PMUX_PINGRP_PCC7,
+       PMUX_PINGRP_HDMI_CEC_PCC0,
+       PMUX_PINGRP_HDMI_INT_DP_HPD_PCC1,
+       PMUX_PINGRP_SPDIF_OUT_PCC2,
+       PMUX_PINGRP_SPDIF_IN_PCC3,
+       PMUX_PINGRP_USB_VBUS_EN0_PCC4,
+       PMUX_PINGRP_USB_VBUS_EN1_PCC5,
+       PMUX_PINGRP_DP_HPD0_PCC6,
+       PMUX_PINGRP_WIFI_EN_PH0,
+       PMUX_PINGRP_WIFI_RST_PH1,
+       PMUX_PINGRP_WIFI_WAKE_AP_PH2,
+       PMUX_PINGRP_AP_WAKE_BT_PH3,
+       PMUX_PINGRP_BT_RST_PH4,
+       PMUX_PINGRP_BT_WAKE_AP_PH5,
+       PMUX_PINGRP_AP_WAKE_NFC_PH7,
+       PMUX_PINGRP_NFC_EN_PI0,
+       PMUX_PINGRP_NFC_INT_PI1,
+       PMUX_PINGRP_GPS_EN_PI2,
+       PMUX_PINGRP_GPS_RST_PI3,
+       PMUX_PINGRP_CAM_RST_PS4,
+       PMUX_PINGRP_CAM_AF_EN_PS5,
+       PMUX_PINGRP_CAM_FLASH_EN_PS6,
+       PMUX_PINGRP_CAM1_PWDN_PS7,
+       PMUX_PINGRP_CAM2_PWDN_PT0,
+       PMUX_PINGRP_CAM1_STROBE_PT1,
+       PMUX_PINGRP_LCD_TE_PY2,
+       PMUX_PINGRP_LCD_BL_PWM_PV0,
+       PMUX_PINGRP_LCD_BL_EN_PV1,
+       PMUX_PINGRP_LCD_RST_PV2,
+       PMUX_PINGRP_LCD_GPIO1_PV3,
+       PMUX_PINGRP_LCD_GPIO2_PV4,
+       PMUX_PINGRP_AP_READY_PV5,
+       PMUX_PINGRP_TOUCH_RST_PV6,
+       PMUX_PINGRP_TOUCH_CLK_PV7,
+       PMUX_PINGRP_MODEM_WAKE_AP_PX0,
+       PMUX_PINGRP_TOUCH_INT_PX1,
+       PMUX_PINGRP_MOTION_INT_PX2,
+       PMUX_PINGRP_ALS_PROX_INT_PX3,
+       PMUX_PINGRP_TEMP_ALERT_PX4,
+       PMUX_PINGRP_BUTTON_POWER_ON_PX5,
+       PMUX_PINGRP_BUTTON_VOL_UP_PX6,
+       PMUX_PINGRP_BUTTON_VOL_DOWN_PX7,
+       PMUX_PINGRP_BUTTON_SLIDE_SW_PY0,
+       PMUX_PINGRP_BUTTON_HOME_PY1,
+       PMUX_PINGRP_PA6,
+       PMUX_PINGRP_PE6,
+       PMUX_PINGRP_PE7,
+       PMUX_PINGRP_PH6,
+       PMUX_PINGRP_PK0,
+       PMUX_PINGRP_PK1,
+       PMUX_PINGRP_PK2,
+       PMUX_PINGRP_PK3,
+       PMUX_PINGRP_PK4,
+       PMUX_PINGRP_PK5,
+       PMUX_PINGRP_PK6,
+       PMUX_PINGRP_PK7,
+       PMUX_PINGRP_PL0,
+       PMUX_PINGRP_PL1,
+       PMUX_PINGRP_PZ0,
+       PMUX_PINGRP_PZ1,
+       PMUX_PINGRP_PZ2,
+       PMUX_PINGRP_PZ3,
+       PMUX_PINGRP_PZ4,
+       PMUX_PINGRP_PZ5,
+       PMUX_PINGRP_COUNT,
+};
+
+enum pmux_drvgrp {
+       PMUX_DRVGRP_ALS_PROX_INT = (0x10 / 4),
+       PMUX_DRVGRP_AP_READY,
+       PMUX_DRVGRP_AP_WAKE_BT,
+       PMUX_DRVGRP_AP_WAKE_NFC,
+       PMUX_DRVGRP_AUD_MCLK,
+       PMUX_DRVGRP_BATT_BCL,
+       PMUX_DRVGRP_BT_RST,
+       PMUX_DRVGRP_BT_WAKE_AP,
+       PMUX_DRVGRP_BUTTON_HOME,
+       PMUX_DRVGRP_BUTTON_POWER_ON,
+       PMUX_DRVGRP_BUTTON_SLIDE_SW,
+       PMUX_DRVGRP_BUTTON_VOL_DOWN,
+       PMUX_DRVGRP_BUTTON_VOL_UP,
+       PMUX_DRVGRP_CAM1_MCLK,
+       PMUX_DRVGRP_CAM1_PWDN,
+       PMUX_DRVGRP_CAM1_STROBE,
+       PMUX_DRVGRP_CAM2_MCLK,
+       PMUX_DRVGRP_CAM2_PWDN,
+       PMUX_DRVGRP_CAM_AF_EN,
+       PMUX_DRVGRP_CAM_FLASH_EN,
+       PMUX_DRVGRP_CAM_I2C_SCL,
+       PMUX_DRVGRP_CAM_I2C_SDA,
+       PMUX_DRVGRP_CAM_RST,
+       PMUX_DRVGRP_CLK_32K_IN,
+       PMUX_DRVGRP_CLK_32K_OUT,
+       PMUX_DRVGRP_CLK_REQ,
+       PMUX_DRVGRP_CORE_PWR_REQ,
+       PMUX_DRVGRP_CPU_PWR_REQ,
+       PMUX_DRVGRP_DAP1_DIN,
+       PMUX_DRVGRP_DAP1_DOUT,
+       PMUX_DRVGRP_DAP1_FS,
+       PMUX_DRVGRP_DAP1_SCLK,
+       PMUX_DRVGRP_DAP2_DIN,
+       PMUX_DRVGRP_DAP2_DOUT,
+       PMUX_DRVGRP_DAP2_FS,
+       PMUX_DRVGRP_DAP2_SCLK,
+       PMUX_DRVGRP_DAP4_DIN,
+       PMUX_DRVGRP_DAP4_DOUT,
+       PMUX_DRVGRP_DAP4_FS,
+       PMUX_DRVGRP_DAP4_SCLK,
+       PMUX_DRVGRP_DMIC1_CLK,
+       PMUX_DRVGRP_DMIC1_DAT,
+       PMUX_DRVGRP_DMIC2_CLK,
+       PMUX_DRVGRP_DMIC2_DAT,
+       PMUX_DRVGRP_DMIC3_CLK,
+       PMUX_DRVGRP_DMIC3_DAT,
+       PMUX_DRVGRP_DP_HPD0,
+       PMUX_DRVGRP_DVFS_CLK,
+       PMUX_DRVGRP_DVFS_PWM,
+       PMUX_DRVGRP_GEN1_I2C_SCL,
+       PMUX_DRVGRP_GEN1_I2C_SDA,
+       PMUX_DRVGRP_GEN2_I2C_SCL,
+       PMUX_DRVGRP_GEN2_I2C_SDA,
+       PMUX_DRVGRP_GEN3_I2C_SCL,
+       PMUX_DRVGRP_GEN3_I2C_SDA,
+       PMUX_DRVGRP_PA6,
+       PMUX_DRVGRP_PCC7,
+       PMUX_DRVGRP_PE6,
+       PMUX_DRVGRP_PE7,
+       PMUX_DRVGRP_PH6,
+       PMUX_DRVGRP_PK0,
+       PMUX_DRVGRP_PK1,
+       PMUX_DRVGRP_PK2,
+       PMUX_DRVGRP_PK3,
+       PMUX_DRVGRP_PK4,
+       PMUX_DRVGRP_PK5,
+       PMUX_DRVGRP_PK6,
+       PMUX_DRVGRP_PK7,
+       PMUX_DRVGRP_PL0,
+       PMUX_DRVGRP_PL1,
+       PMUX_DRVGRP_PZ0,
+       PMUX_DRVGRP_PZ1,
+       PMUX_DRVGRP_PZ2,
+       PMUX_DRVGRP_PZ3,
+       PMUX_DRVGRP_PZ4,
+       PMUX_DRVGRP_PZ5,
+       PMUX_DRVGRP_GPIO_X1_AUD,
+       PMUX_DRVGRP_GPIO_X3_AUD,
+       PMUX_DRVGRP_GPS_EN,
+       PMUX_DRVGRP_GPS_RST,
+       PMUX_DRVGRP_HDMI_CEC,
+       PMUX_DRVGRP_HDMI_INT_DP_HPD,
+       PMUX_DRVGRP_JTAG_RTCK,
+       PMUX_DRVGRP_LCD_BL_EN,
+       PMUX_DRVGRP_LCD_BL_PWM,
+       PMUX_DRVGRP_LCD_GPIO1,
+       PMUX_DRVGRP_LCD_GPIO2,
+       PMUX_DRVGRP_LCD_RST,
+       PMUX_DRVGRP_LCD_TE,
+       PMUX_DRVGRP_MODEM_WAKE_AP,
+       PMUX_DRVGRP_MOTION_INT,
+       PMUX_DRVGRP_NFC_EN,
+       PMUX_DRVGRP_NFC_INT,
+       PMUX_DRVGRP_PEX_L0_CLKREQ_N,
+       PMUX_DRVGRP_PEX_L0_RST_N,
+       PMUX_DRVGRP_PEX_L1_CLKREQ_N,
+       PMUX_DRVGRP_PEX_L1_RST_N,
+       PMUX_DRVGRP_PEX_WAKE_N,
+       PMUX_DRVGRP_PWR_I2C_SCL,
+       PMUX_DRVGRP_PWR_I2C_SDA,
+       PMUX_DRVGRP_PWR_INT_N,
+       PMUX_DRVGRP_QSPI_SCK = (0x1bc / 4),
+       PMUX_DRVGRP_SATA_LED_ACTIVE,
+       PMUX_DRVGRP_SDMMC1,
+       PMUX_DRVGRP_SDMMC2,
+       PMUX_DRVGRP_SDMMC3 = (0x1dc / 4),
+       PMUX_DRVGRP_SDMMC4,
+       PMUX_DRVGRP_SHUTDOWN = (0x1f4 / 4),
+       PMUX_DRVGRP_SPDIF_IN,
+       PMUX_DRVGRP_SPDIF_OUT,
+       PMUX_DRVGRP_SPI1_CS0,
+       PMUX_DRVGRP_SPI1_CS1,
+       PMUX_DRVGRP_SPI1_MISO,
+       PMUX_DRVGRP_SPI1_MOSI,
+       PMUX_DRVGRP_SPI1_SCK,
+       PMUX_DRVGRP_SPI2_CS0,
+       PMUX_DRVGRP_SPI2_CS1,
+       PMUX_DRVGRP_SPI2_MISO,
+       PMUX_DRVGRP_SPI2_MOSI,
+       PMUX_DRVGRP_SPI2_SCK,
+       PMUX_DRVGRP_SPI4_CS0,
+       PMUX_DRVGRP_SPI4_MISO,
+       PMUX_DRVGRP_SPI4_MOSI,
+       PMUX_DRVGRP_SPI4_SCK,
+       PMUX_DRVGRP_TEMP_ALERT,
+       PMUX_DRVGRP_TOUCH_CLK,
+       PMUX_DRVGRP_TOUCH_INT,
+       PMUX_DRVGRP_TOUCH_RST,
+       PMUX_DRVGRP_UART1_CTS,
+       PMUX_DRVGRP_UART1_RTS,
+       PMUX_DRVGRP_UART1_RX,
+       PMUX_DRVGRP_UART1_TX,
+       PMUX_DRVGRP_UART2_CTS,
+       PMUX_DRVGRP_UART2_RTS,
+       PMUX_DRVGRP_UART2_RX,
+       PMUX_DRVGRP_UART2_TX,
+       PMUX_DRVGRP_UART3_CTS,
+       PMUX_DRVGRP_UART3_RTS,
+       PMUX_DRVGRP_UART3_RX,
+       PMUX_DRVGRP_UART3_TX,
+       PMUX_DRVGRP_UART4_CTS,
+       PMUX_DRVGRP_UART4_RTS,
+       PMUX_DRVGRP_UART4_RX,
+       PMUX_DRVGRP_UART4_TX,
+       PMUX_DRVGRP_USB_VBUS_EN0,
+       PMUX_DRVGRP_USB_VBUS_EN1,
+       PMUX_DRVGRP_WIFI_EN,
+       PMUX_DRVGRP_WIFI_RST,
+       PMUX_DRVGRP_WIFI_WAKE_AP,
+       PMUX_DRVGRP_COUNT,
+};
+
+enum pmux_func {
+       PMUX_FUNC_DEFAULT,
+       PMUX_FUNC_AUD,
+       PMUX_FUNC_BCL,
+       PMUX_FUNC_BLINK,
+       PMUX_FUNC_CCLA,
+       PMUX_FUNC_CEC,
+       PMUX_FUNC_CLDVFS,
+       PMUX_FUNC_CLK,
+       PMUX_FUNC_CORE,
+       PMUX_FUNC_CPU,
+       PMUX_FUNC_DISPLAYA,
+       PMUX_FUNC_DISPLAYB,
+       PMUX_FUNC_DMIC1,
+       PMUX_FUNC_DMIC2,
+       PMUX_FUNC_DMIC3,
+       PMUX_FUNC_DP,
+       PMUX_FUNC_DTV,
+       PMUX_FUNC_EXTPERIPH3,
+       PMUX_FUNC_I2C1,
+       PMUX_FUNC_I2C2,
+       PMUX_FUNC_I2C3,
+       PMUX_FUNC_I2CPMU,
+       PMUX_FUNC_I2CVI,
+       PMUX_FUNC_I2S1,
+       PMUX_FUNC_I2S2,
+       PMUX_FUNC_I2S3,
+       PMUX_FUNC_I2S4A,
+       PMUX_FUNC_I2S4B,
+       PMUX_FUNC_I2S5A,
+       PMUX_FUNC_I2S5B,
+       PMUX_FUNC_IQC0,
+       PMUX_FUNC_IQC1,
+       PMUX_FUNC_JTAG,
+       PMUX_FUNC_PE,
+       PMUX_FUNC_PE0,
+       PMUX_FUNC_PE1,
+       PMUX_FUNC_PMI,
+       PMUX_FUNC_PWM0,
+       PMUX_FUNC_PWM1,
+       PMUX_FUNC_PWM2,
+       PMUX_FUNC_PWM3,
+       PMUX_FUNC_QSPI,
+       PMUX_FUNC_SATA,
+       PMUX_FUNC_SDMMC1,
+       PMUX_FUNC_SDMMC3,
+       PMUX_FUNC_SHUTDOWN,
+       PMUX_FUNC_SOC,
+       PMUX_FUNC_SOR0,
+       PMUX_FUNC_SOR1,
+       PMUX_FUNC_SPDIF,
+       PMUX_FUNC_SPI1,
+       PMUX_FUNC_SPI2,
+       PMUX_FUNC_SPI3,
+       PMUX_FUNC_SPI4,
+       PMUX_FUNC_SYS,
+       PMUX_FUNC_TOUCH,
+       PMUX_FUNC_UART,
+       PMUX_FUNC_UARTA,
+       PMUX_FUNC_UARTB,
+       PMUX_FUNC_UARTC,
+       PMUX_FUNC_UARTD,
+       PMUX_FUNC_USB,
+       PMUX_FUNC_VGP1,
+       PMUX_FUNC_VGP2,
+       PMUX_FUNC_VGP3,
+       PMUX_FUNC_VGP4,
+       PMUX_FUNC_VGP5,
+       PMUX_FUNC_VGP6,
+       PMUX_FUNC_VIMCLK,
+       PMUX_FUNC_VIMCLK2,
+       PMUX_FUNC_RSVD0,
+       PMUX_FUNC_RSVD1,
+       PMUX_FUNC_RSVD2,
+       PMUX_FUNC_RSVD3,
+       PMUX_FUNC_COUNT,
+};
+
+#define TEGRA_PMX_SOC_DRV_GROUP_BASE_REG 0x8d4
+#define TEGRA_PMX_SOC_HAS_IO_CLAMPING
+#define TEGRA_PMX_SOC_HAS_DRVGRPS
+#define TEGRA_PMX_PINS_HAVE_E_INPUT
+#define TEGRA_PMX_PINS_HAVE_LOCK
+#define TEGRA_PMX_PINS_HAVE_OD
+#define TEGRA_PMX_PINS_HAVE_E_IO_HV
+#include <asm/arch-tegra/pinmux.h>
+
+#endif /* _TEGRA210_PINMUX_H_ */
index a42e00990f0c1b4537a61448c9c077a36d9e1aa7..3358bf7ce3865ae2341ecfceb0e207a6ec177c85 100644 (file)
@@ -391,8 +391,15 @@ enum pmux_func {
        PMUX_FUNC_COUNT,
 };
 
-#define TEGRA_PMX_HAS_PIN_IO_BIT_ETC
-#define TEGRA_PMX_HAS_DRVGRPS
+#define TEGRA_PMX_SOC_DRV_GROUP_BASE_REG 0x868
+#define TEGRA_PMX_SOC_HAS_DRVGRPS
+#define TEGRA_PMX_GRPS_HAVE_LPMD
+#define TEGRA_PMX_GRPS_HAVE_SCHMT
+#define TEGRA_PMX_GRPS_HAVE_HSM
+#define TEGRA_PMX_PINS_HAVE_E_INPUT
+#define TEGRA_PMX_PINS_HAVE_LOCK
+#define TEGRA_PMX_PINS_HAVE_OD
+#define TEGRA_PMX_PINS_HAVE_IO_RESET
 #include <asm/arch-tegra/pinmux.h>
 
 #endif /* _TEGRA30_PINMUX_H_ */
index 3b3146ab2239929544784c8bf3944ab0d8d60ba8..3cf3307b37a44333e4812705d16a344f977a5123 100644 (file)
@@ -73,6 +73,28 @@ lr   .req    x30
        b.eq    \el1_label
 .endm
 
+/*
+ * Branch if current processor is a Cortex-A57 core.
+ */
+.macro branch_if_a57_core, xreg, a57_label
+       mrs     \xreg, midr_el1
+       lsr     \xreg, \xreg, #4
+       and     \xreg, \xreg, #0x00000FFF
+       cmp     \xreg, #0xD07           /* Cortex-A57 MPCore processor. */
+       b.eq    \a57_label
+.endm
+
+/*
+ * Branch if current processor is a Cortex-A53 core.
+ */
+.macro branch_if_a53_core, xreg, a53_label
+       mrs     \xreg, midr_el1
+       lsr     \xreg, \xreg, #4
+       and     \xreg, \xreg, #0x00000FFF
+       cmp     \xreg, #0xD03           /* Cortex-A53 MPCore processor. */
+       b.eq    \a53_label
+.endm
+
 /*
  * Branch if current processor is a slave,
  * choose processor with all zero affinity value as the master.
index 4dacfd941f6dd220cfa2f5d2a7ae006b10d628a2..06f46795c3f1289d98a533c5a755cb2459e3bee4 100644 (file)
@@ -137,10 +137,15 @@ void show_regs (struct pt_regs *regs)
 
        flags = condition_codes (regs);
 
-       printf ("pc : [<%08lx>]    lr : [<%08lx>]\n"
-               "sp : %08lx  ip : %08lx  fp : %08lx\n",
-               instruction_pointer (regs),
-               regs->ARM_lr, regs->ARM_sp, regs->ARM_ip, regs->ARM_fp);
+       printf("pc : [<%08lx>]     lr : [<%08lx>]\n",
+              instruction_pointer(regs), regs->ARM_lr);
+       if (gd->flags & GD_FLG_RELOC) {
+               printf("reloc pc : [<%08lx>]       lr : [<%08lx>]\n",
+                      instruction_pointer(regs) - gd->reloc_off,
+                      regs->ARM_lr - gd->reloc_off);
+       }
+       printf("sp : %08lx  ip : %08lx   fp : %08lx\n",
+              regs->ARM_sp, regs->ARM_ip, regs->ARM_fp);
        printf ("r10: %08lx  r9 : %08lx  r8 : %08lx\n",
                regs->ARM_r10, regs->ARM_r9, regs->ARM_r8);
        printf ("r7 : %08lx  r6 : %08lx  r5 : %08lx  r4 : %08lx\n",
index 5a542629c75e107c4116a301e569e983175c2841..291c511ba85e7794c4ee4a4d2ad7722b560c3aa1 100644 (file)
@@ -5,6 +5,7 @@ choice
 
 config TARGET_EDMINIV2
        bool "LaCie Ethernet Disk mini V2"
+       select SUPPORT_SPL
 
 endchoice
 
index f88db3b1f96ad400fdf47c0e3bbd83f91a46ed6a..2ecd3856780cb10533a9d1981eb97f14a23188a7 100644 (file)
@@ -234,7 +234,9 @@ int arch_cpu_init(void)
        /* Enable and invalidate L2 cache in write through mode */
        invalidate_l2_cache();
 
+#ifdef CONFIG_SPL_BUILD
        orion5x_config_adr_windows();
+#endif
 
        return 0;
 }
index 08a450f1f3f71a9098af5a151b542de0cfebf4b7..092dbd66a16fddf34026a0269a626d9e104dcc3a 100644 (file)
@@ -86,7 +86,7 @@ enum orion5x_cpu_attrib {
 #endif
 
 #if !defined (ORION5X_ADR_PCIE_IO_REMAP_LO)
-#define ORION5X_ADR_PCIE_IO_REMAP_LO   0x90000000
+#define ORION5X_ADR_PCIE_IO_REMAP_LO   0xf0000000
 #endif
 
 #if !defined (ORION5X_ADR_PCIE_IO_REMAP_HI)
index 4dacc296e41aa3dea563c92fd385f64b35d26424..51a8b3c51b2fedb18e836794d6931a0d0508c751 100644 (file)
 /*
  * Low-level init happens right after start.S has switched to SVC32,
  * flushed and disabled caches and disabled MMU. We're still running
- * from the boot chip select, so the first thing we should do is set
- * up RAM for us to relocate into.
+ * from the boot chip select, so the first thing SPL should do is to
+ * set up the RAM to copy U-Boot into.
  */
 
 .globl lowlevel_init
 
 lowlevel_init:
 
+#ifdef CONFIG_SPL_BUILD
+
        /* Use 'r4 as the base for internal register accesses */
        ldr     r4, =ORION5X_REGS_PHY_BASE
 
@@ -273,5 +275,13 @@ lowlevel_init:
        orr     r2, r2, r6
        str     r2, [r3, #0x484]
 
+       /* enable for 2 GB DDR; detection should find out real amount */
+       sub     r6, r6, r6
+       str     r6, [r3, #0x500]
+       ldr     r6, =0x7fff0001
+       str     r6, [r3, #0x504]
+
+#endif /* CONFIG_SPL_BUILD */
+
        /* Return to U-boot via saved link register */
        mov     pc, lr
index b6a84a577478a11374ad3e46ed75bc2c437f59ea..0ebaf1932556f58d102277fec54f694390bcacd0 100644 (file)
@@ -11,6 +11,7 @@
 #include <asm/arch/funcmux.h>
 #include <asm/arch/mc.h>
 #include <asm/arch/tegra.h>
+#include <asm/arch-tegra/ap.h>
 #include <asm/arch-tegra/board.h>
 #include <asm/arch-tegra/pmc.h>
 #include <asm/arch-tegra/sys_proto.h>
@@ -28,27 +29,66 @@ enum {
        UART_COUNT = 5,
 };
 
+#if defined(CONFIG_TEGRA_SUPPORT_NON_SECURE)
+#if !defined(CONFIG_TEGRA124)
+#error tegra_cpu_is_non_secure has only been validated on Tegra124
+#endif
+bool tegra_cpu_is_non_secure(void)
+{
+       /*
+        * This register reads 0xffffffff in non-secure mode. This register
+        * only implements bits 31:20, so the lower bits will always read 0 in
+        * secure mode. Thus, the lower bits are an indicator for secure vs.
+        * non-secure mode.
+        */
+       struct mc_ctlr *mc = (struct mc_ctlr *)NV_PA_MC_BASE;
+       uint32_t mc_s_cfg0 = readl(&mc->mc_security_cfg0);
+       return (mc_s_cfg0 & 1) == 1;
+}
+#endif
+
 /* Read the RAM size directly from the memory controller */
 unsigned int query_sdram_size(void)
 {
        struct mc_ctlr *const mc = (struct mc_ctlr *)NV_PA_MC_BASE;
-       u32 size_mb;
+       u32 emem_cfg, size_bytes;
 
-       size_mb = readl(&mc->mc_emem_cfg);
+       emem_cfg = readl(&mc->mc_emem_cfg);
 #if defined(CONFIG_TEGRA20)
-       debug("mc->mc_emem_cfg (MEM_SIZE_KB) = 0x%08x\n", size_mb);
-       size_mb = get_ram_size((void *)PHYS_SDRAM_1, size_mb * 1024);
+       debug("mc->mc_emem_cfg (MEM_SIZE_KB) = 0x%08x\n", emem_cfg);
+       size_bytes = get_ram_size((void *)PHYS_SDRAM_1, emem_cfg * 1024);
 #else
-       debug("mc->mc_emem_cfg (MEM_SIZE_MB) = 0x%08x\n", size_mb);
-       size_mb = get_ram_size((void *)PHYS_SDRAM_1, size_mb * 1024 * 1024);
+       debug("mc->mc_emem_cfg (MEM_SIZE_MB) = 0x%08x\n", emem_cfg);
+       /*
+        * If >=4GB RAM is present, the byte RAM size won't fit into 32-bits
+        * and will wrap. Clip the reported size to the maximum that a 32-bit
+        * variable can represent (rounded to a page).
+        */
+       if (emem_cfg >= 4096) {
+               size_bytes = U32_MAX & ~(0x1000 - 1);
+       } else {
+               /* RAM size EMC is programmed to. */
+               size_bytes = emem_cfg * 1024 * 1024;
+               /*
+                * If all RAM fits within 32-bits, it can be accessed without
+                * LPAE, so go test the RAM size. Otherwise, we can't access
+                * all the RAM, and get_ram_size() would get confused, so
+                * avoid using it. There's no reason we should need this
+                * validation step anyway.
+                */
+               if (emem_cfg <= (0 - PHYS_SDRAM_1) / (1024 * 1024))
+                       size_bytes = get_ram_size((void *)PHYS_SDRAM_1,
+                                                 size_bytes);
+       }
 #endif
 
 #if defined(CONFIG_TEGRA30) || defined(CONFIG_TEGRA114)
        /* External memory limited to 2047 MB due to IROM/HI-VEC */
-       if (size_mb == SZ_2G) size_mb -= SZ_1M;
+       if (size_bytes == SZ_2G)
+               size_bytes -= SZ_1M;
 #endif
 
-       return size_mb;
+       return size_bytes;
 }
 
 int dram_init(void)
index 11c7435505c1d17d53ccf10c4040f640d5a4afde..7c274b5f9940044da9ff3783124961ea54c1ff93 100644 (file)
@@ -20,6 +20,7 @@
 #include <asm/io.h>
 #include <asm/arch/clock.h>
 #include <asm/arch/tegra.h>
+#include <asm/arch-tegra/ap.h>
 #include <asm/arch-tegra/clk_rst.h>
 #include <asm/arch-tegra/timer.h>
 #include <div64.h>
@@ -573,7 +574,10 @@ void clock_init(void)
        debug("PLLX = %d\n", pll_rate[CLOCK_ID_XCPU]);
 
        /* Do any special system timer/TSC setup */
-       arch_timer_init();
+#if defined(CONFIG_TEGRA_SUPPORT_NON_SECURE)
+       if (!tegra_cpu_is_non_secure())
+#endif
+               arch_timer_init();
 }
 
 static void set_avp_clock_source(u32 src)
index 6e3ab0c14ca2b477451d1b8b0bd7004938daff00..912f65e98b06e999ad8101c29dd71e62fff5e229 100644 (file)
 #define pmux_pin_tristate_isvalid(tristate) \
        (((tristate) >= PMUX_TRI_NORMAL) && ((tristate) <= PMUX_TRI_TRISTATE))
 
-#ifdef TEGRA_PMX_HAS_PIN_IO_BIT_ETC
+#ifdef TEGRA_PMX_PINS_HAVE_E_INPUT
 /* return 1 if a pin_io_is in range */
 #define pmux_pin_io_isvalid(io) \
        (((io) >= PMUX_PIN_OUTPUT) && ((io) <= PMUX_PIN_INPUT))
+#endif
 
+#ifdef TEGRA_PMX_PINS_HAVE_LOCK
 /* return 1 if a pin_lock is in range */
 #define pmux_pin_lock_isvalid(lock) \
        (((lock) >= PMUX_PIN_LOCK_DISABLE) && ((lock) <= PMUX_PIN_LOCK_ENABLE))
+#endif
 
+#ifdef TEGRA_PMX_PINS_HAVE_OD
 /* return 1 if a pin_od is in range */
 #define pmux_pin_od_isvalid(od) \
        (((od) >= PMUX_PIN_OD_DISABLE) && ((od) <= PMUX_PIN_OD_ENABLE))
+#endif
 
+#ifdef TEGRA_PMX_PINS_HAVE_IO_RESET
 /* return 1 if a pin_ioreset_is in range */
 #define pmux_pin_ioreset_isvalid(ioreset) \
        (((ioreset) >= PMUX_PIN_IO_RESET_DISABLE) && \
         ((ioreset) <= PMUX_PIN_IO_RESET_ENABLE))
+#endif
 
-#ifdef TEGRA_PMX_HAS_RCV_SEL
+#ifdef TEGRA_PMX_PINS_HAVE_RCV_SEL
 /* return 1 if a pin_rcv_sel_is in range */
 #define pmux_pin_rcv_sel_isvalid(rcv_sel) \
        (((rcv_sel) >= PMUX_PIN_RCV_SEL_NORMAL) && \
         ((rcv_sel) <= PMUX_PIN_RCV_SEL_HIGH))
-#endif /* TEGRA_PMX_HAS_RCV_SEL */
-#endif /* TEGRA_PMX_HAS_PIN_IO_BIT_ETC */
+#endif
+
+#ifdef TEGRA_PMX_PINS_HAVE_E_IO_HV
+/* return 1 if a pin_e_io_hv is in range */
+#define pmux_pin_e_io_hv_isvalid(e_io_hv) \
+       (((e_io_hv) >= PMUX_PIN_E_IO_HV_NORMAL) && \
+        ((e_io_hv) <= PMUX_PIN_E_IO_HV_HIGH))
+#endif
+
+#ifdef TEGRA_PMX_GRPS_HAVE_LPMD
+#define pmux_lpmd_isvalid(lpm) \
+       (((lpm) >= PMUX_LPMD_X8) && ((lpm) <= PMUX_LPMD_X))
+#endif
+
+#if defined(TEGRA_PMX_PINS_HAVE_SCHMT) || defined(TEGRA_PMX_GRPS_HAVE_SCHMT)
+#define pmux_schmt_isvalid(schmt) \
+       (((schmt) >= PMUX_SCHMT_DISABLE) && ((schmt) <= PMUX_SCHMT_ENABLE))
+#endif
+
+#if defined(TEGRA_PMX_PINS_HAVE_HSM) || defined(TEGRA_PMX_GRPS_HAVE_HSM)
+#define pmux_hsm_isvalid(hsm) \
+       (((hsm) >= PMUX_HSM_DISABLE) && ((hsm) <= PMUX_HSM_ENABLE))
+#endif
 
 #define _R(offset)     (u32 *)(NV_PA_APB_MISC_BASE + (offset))
 
 
 #endif /* CONFIG_TEGRA20 */
 
-#define DRV_REG(group) _R(0x868 + ((group) * 4))
+#define DRV_REG(group) _R(TEGRA_PMX_SOC_DRV_GROUP_BASE_REG + ((group) * 4))
 
+/*
+ * We could force arch-tegraNN/pinmux.h to define all of these. However,
+ * that's a lot of defines, and for now it's manageable to just put a
+ * special case here. It's possible this decision will change with future
+ * SoCs.
+ */
+#ifdef CONFIG_TEGRA210
+#define IO_SHIFT       6
+#define LOCK_SHIFT     7
+#ifdef TEGRA_PMX_PINS_HAVE_HSM
+#define HSM_SHIFT      9
+#endif
+#define E_IO_HV_SHIFT  10
+#define OD_SHIFT       11
+#ifdef TEGRA_PMX_PINS_HAVE_SCHMT
+#define SCHMT_SHIFT    12
+#endif
+#else
 #define IO_SHIFT       5
 #define OD_SHIFT       6
 #define LOCK_SHIFT     7
 #define IO_RESET_SHIFT 8
 #define RCV_SEL_SHIFT  9
+#endif
 
-#if !defined(CONFIG_TEGRA20) && !defined(CONFIG_TEGRA30)
+#ifdef TEGRA_PMX_SOC_HAS_IO_CLAMPING
 /* This register/field only exists on Tegra114 and later */
 #define APB_MISC_PP_PINMUX_GLOBAL_0 0x40
 #define CLAMP_INPUTS_WHEN_TRISTATED 1
 void pinmux_set_tristate_input_clamping(void)
 {
        u32 *reg = _R(APB_MISC_PP_PINMUX_GLOBAL_0);
-       u32 val;
 
-       val = readl(reg);
-       val |= CLAMP_INPUTS_WHEN_TRISTATED;
-       writel(val, reg);
+       setbits_le32(reg, CLAMP_INPUTS_WHEN_TRISTATED);
+}
+
+void pinmux_clear_tristate_input_clamping(void)
+{
+       u32 *reg = _R(APB_MISC_PP_PINMUX_GLOBAL_0);
+
+       clrbits_le32(reg, CLAMP_INPUTS_WHEN_TRISTATED);
 }
 #endif
 
@@ -176,7 +227,7 @@ void pinmux_tristate_disable(enum pmux_pingrp pin)
        pinmux_set_tristate(pin, PMUX_TRI_NORMAL);
 }
 
-#ifdef TEGRA_PMX_HAS_PIN_IO_BIT_ETC
+#ifdef TEGRA_PMX_PINS_HAVE_E_INPUT
 void pinmux_set_io(enum pmux_pingrp pin, enum pmux_pin_io io)
 {
        u32 *reg = REG(pin);
@@ -196,7 +247,9 @@ void pinmux_set_io(enum pmux_pingrp pin, enum pmux_pin_io io)
                val &= ~(1 << IO_SHIFT);
        writel(val, reg);
 }
+#endif
 
+#ifdef TEGRA_PMX_PINS_HAVE_LOCK
 static void pinmux_set_lock(enum pmux_pingrp pin, enum pmux_pin_lock lock)
 {
        u32 *reg = REG(pin);
@@ -221,7 +274,9 @@ static void pinmux_set_lock(enum pmux_pingrp pin, enum pmux_pin_lock lock)
 
        return;
 }
+#endif
 
+#ifdef TEGRA_PMX_PINS_HAVE_OD
 static void pinmux_set_od(enum pmux_pingrp pin, enum pmux_pin_od od)
 {
        u32 *reg = REG(pin);
@@ -243,7 +298,9 @@ static void pinmux_set_od(enum pmux_pingrp pin, enum pmux_pin_od od)
 
        return;
 }
+#endif
 
+#ifdef TEGRA_PMX_PINS_HAVE_IO_RESET
 static void pinmux_set_ioreset(enum pmux_pingrp pin,
                                enum pmux_pin_ioreset ioreset)
 {
@@ -266,8 +323,9 @@ static void pinmux_set_ioreset(enum pmux_pingrp pin,
 
        return;
 }
+#endif
 
-#ifdef TEGRA_PMX_HAS_RCV_SEL
+#ifdef TEGRA_PMX_PINS_HAVE_RCV_SEL
 static void pinmux_set_rcv_sel(enum pmux_pingrp pin,
                                enum pmux_pin_rcv_sel rcv_sel)
 {
@@ -290,8 +348,82 @@ static void pinmux_set_rcv_sel(enum pmux_pingrp pin,
 
        return;
 }
-#endif /* TEGRA_PMX_HAS_RCV_SEL */
-#endif /* TEGRA_PMX_HAS_PIN_IO_BIT_ETC */
+#endif
+
+#ifdef TEGRA_PMX_PINS_HAVE_E_IO_HV
+static void pinmux_set_e_io_hv(enum pmux_pingrp pin,
+                               enum pmux_pin_e_io_hv e_io_hv)
+{
+       u32 *reg = REG(pin);
+       u32 val;
+
+       if (e_io_hv == PMUX_PIN_E_IO_HV_DEFAULT)
+               return;
+
+       /* Error check on pin and e_io_hv */
+       assert(pmux_pingrp_isvalid(pin));
+       assert(pmux_pin_e_io_hv_isvalid(e_io_hv));
+
+       val = readl(reg);
+       if (e_io_hv == PMUX_PIN_E_IO_HV_HIGH)
+               val |= (1 << E_IO_HV_SHIFT);
+       else
+               val &= ~(1 << E_IO_HV_SHIFT);
+       writel(val, reg);
+
+       return;
+}
+#endif
+
+#ifdef TEGRA_PMX_PINS_HAVE_SCHMT
+static void pinmux_set_schmt(enum pmux_pingrp pin, enum pmux_schmt schmt)
+{
+       u32 *reg = REG(grp);
+       u32 val;
+
+       /* NONE means unspecified/do not change/use POR value */
+       if (schmt == PMUX_SCHMT_NONE)
+               return;
+
+       /* Error check pad */
+       assert(pmux_pingrp_isvalid(pin));
+       assert(pmux_schmt_isvalid(schmt));
+
+       val = readl(reg);
+       if (schmt == PMUX_SCHMT_ENABLE)
+               val |= (1 << SCHMT_SHIFT);
+       else
+               val &= ~(1 << SCHMT_SHIFT);
+       writel(val, reg);
+
+       return;
+}
+#endif
+
+#ifdef TEGRA_PMX_PINS_HAVE_HSM
+static void pinmux_set_hsm(enum pmux_pingrp pin, enum pmux_hsm hsm)
+{
+       u32 *reg = REG(grp);
+       u32 val;
+
+       /* NONE means unspecified/do not change/use POR value */
+       if (hsm == PMUX_HSM_NONE)
+               return;
+
+       /* Error check pad */
+       assert(pmux_pingrp_isvalid(pin));
+       assert(pmux_hsm_isvalid(hsm));
+
+       val = readl(reg);
+       if (hsm == PMUX_HSM_ENABLE)
+               val |= (1 << HSM_SHIFT);
+       else
+               val &= ~(1 << HSM_SHIFT);
+       writel(val, reg);
+
+       return;
+}
+#endif
 
 static void pinmux_config_pingrp(const struct pmux_pingrp_config *config)
 {
@@ -300,14 +432,29 @@ static void pinmux_config_pingrp(const struct pmux_pingrp_config *config)
        pinmux_set_func(pin, config->func);
        pinmux_set_pullupdown(pin, config->pull);
        pinmux_set_tristate(pin, config->tristate);
-#ifdef TEGRA_PMX_HAS_PIN_IO_BIT_ETC
+#ifdef TEGRA_PMX_PINS_HAVE_E_INPUT
        pinmux_set_io(pin, config->io);
+#endif
+#ifdef TEGRA_PMX_PINS_HAVE_LOCK
        pinmux_set_lock(pin, config->lock);
+#endif
+#ifdef TEGRA_PMX_PINS_HAVE_OD
        pinmux_set_od(pin, config->od);
+#endif
+#ifdef TEGRA_PMX_PINS_HAVE_IO_RESET
        pinmux_set_ioreset(pin, config->ioreset);
-#ifdef TEGRA_PMX_HAS_RCV_SEL
+#endif
+#ifdef TEGRA_PMX_PINS_HAVE_RCV_SEL
        pinmux_set_rcv_sel(pin, config->rcv_sel);
 #endif
+#ifdef TEGRA_PMX_PINS_HAVE_E_IO_HV
+       pinmux_set_e_io_hv(pin, config->e_io_hv);
+#endif
+#ifdef TEGRA_PMX_PINS_HAVE_SCHMT
+       pinmux_set_schmt(pin, config->schmt);
+#endif
+#ifdef TEGRA_PMX_PINS_HAVE_HSM
+       pinmux_set_hsm(pin, config->hsm);
 #endif
 }
 
@@ -320,7 +467,7 @@ void pinmux_config_pingrp_table(const struct pmux_pingrp_config *config,
                pinmux_config_pingrp(&config[i]);
 }
 
-#ifdef TEGRA_PMX_HAS_DRVGRPS
+#ifdef TEGRA_PMX_SOC_HAS_DRVGRPS
 
 #define pmux_drvgrp_isvalid(pd) (((pd) >= 0) && ((pd) < PMUX_DRVGRP_COUNT))
 
@@ -330,19 +477,31 @@ void pinmux_config_pingrp_table(const struct pmux_pingrp_config *config,
 #define pmux_drv_isvalid(drv) \
        (((drv) >= PMUX_DRVUP_MIN) && ((drv) <= PMUX_DRVUP_MAX))
 
-#define pmux_lpmd_isvalid(lpm) \
-       (((lpm) >= PMUX_LPMD_X8) && ((lpm) <= PMUX_LPMD_X))
-
-#define pmux_schmt_isvalid(schmt) \
-       (((schmt) >= PMUX_SCHMT_DISABLE) && ((schmt) <= PMUX_SCHMT_ENABLE))
-
-#define pmux_hsm_isvalid(hsm) \
-       (((hsm) >= PMUX_HSM_DISABLE) && ((hsm) <= PMUX_HSM_ENABLE))
-
+#ifdef TEGRA_PMX_GRPS_HAVE_HSM
 #define HSM_SHIFT      2
+#endif
+#ifdef TEGRA_PMX_GRPS_HAVE_SCHMT
 #define SCHMT_SHIFT    3
+#endif
+#ifdef TEGRA_PMX_GRPS_HAVE_LPMD
 #define LPMD_SHIFT     4
 #define LPMD_MASK      (3 << LPMD_SHIFT)
+#endif
+/*
+ * Note that the following DRV* and SLW* defines are accurate for many drive
+ * groups on many SoCs. We really need a per-group data structure to solve
+ * this, since the fields are in different positions/sizes in different
+ * registers (for different groups).
+ *
+ * On Tegra30/114/124, the DRV*_SHIFT values vary.
+ * On Tegra30, the SLW*_SHIFT values vary.
+ * On Tegra30/114/124/210, the DRV*_MASK values vary, although the values
+ *   below are wide enough to cover the widest fields, and hopefully don't
+ *   interfere with any other fields.
+ * On Tegra30, the SLW*_MASK values vary, but we can't use a value that's
+ *   wide enough to cover all cases, since that would cause the field to
+ *   overlap with other fields in the narrower cases.
+ */
 #define DRVDN_SHIFT    12
 #define DRVDN_MASK     (0x7F << DRVDN_SHIFT)
 #define DRVUP_SHIFT    20
@@ -436,6 +595,7 @@ static void pinmux_set_drvdn(enum pmux_drvgrp grp, int drvdn)
        return;
 }
 
+#ifdef TEGRA_PMX_GRPS_HAVE_LPMD
 static void pinmux_set_lpmd(enum pmux_drvgrp grp, enum pmux_lpmd lpmd)
 {
        u32 *reg = DRV_REG(grp);
@@ -456,7 +616,9 @@ static void pinmux_set_lpmd(enum pmux_drvgrp grp, enum pmux_lpmd lpmd)
 
        return;
 }
+#endif
 
+#ifdef TEGRA_PMX_GRPS_HAVE_SCHMT
 static void pinmux_set_schmt(enum pmux_drvgrp grp, enum pmux_schmt schmt)
 {
        u32 *reg = DRV_REG(grp);
@@ -479,7 +641,9 @@ static void pinmux_set_schmt(enum pmux_drvgrp grp, enum pmux_schmt schmt)
 
        return;
 }
+#endif
 
+#ifdef TEGRA_PMX_GRPS_HAVE_HSM
 static void pinmux_set_hsm(enum pmux_drvgrp grp, enum pmux_hsm hsm)
 {
        u32 *reg = DRV_REG(grp);
@@ -502,6 +666,7 @@ static void pinmux_set_hsm(enum pmux_drvgrp grp, enum pmux_hsm hsm)
 
        return;
 }
+#endif
 
 static void pinmux_config_drvgrp(const struct pmux_drvgrp_config *config)
 {
@@ -511,9 +676,15 @@ static void pinmux_config_drvgrp(const struct pmux_drvgrp_config *config)
        pinmux_set_drvdn_slwr(grp, config->slwr);
        pinmux_set_drvup(grp, config->drvup);
        pinmux_set_drvdn(grp, config->drvdn);
+#ifdef TEGRA_PMX_GRPS_HAVE_LPMD
        pinmux_set_lpmd(grp, config->lpmd);
+#endif
+#ifdef TEGRA_PMX_GRPS_HAVE_SCHMT
        pinmux_set_schmt(grp, config->schmt);
+#endif
+#ifdef TEGRA_PMX_GRPS_HAVE_HSM
        pinmux_set_hsm(grp, config->hsm);
+#endif
 }
 
 void pinmux_config_drvgrp_table(const struct pmux_drvgrp_config *config,
diff --git a/board/LaCie/edminiv2/config.mk b/board/LaCie/edminiv2/config.mk
deleted file mode 100644 (file)
index dfa84f0..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-#
-# Copyright (C) 2010 Albert ARIBAUD <albert.u.boot@aribaud.net>
-#
-# (C) Copyright 2009
-# Marvell Semiconductor <www.marvell.com>
-# Written-by: Prafulla Wadaskar <prafulla@marvell.com>
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-# TEXT_BASE must equal the intended FLASH location of u-boot.
-CONFIG_SYS_TEXT_BASE = 0xfff90000
index 80ec7faa049476ee7c57a98471fcd34e2e92c934..edf6281797bff412a1918101e4cacf880264cf76 100644 (file)
 #include <miiphy.h>
 #include <asm/arch/orion5x.h>
 #include "../common/common.h"
+#include <spl.h>
+#include <ns16550.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
-/*
- * The ED Mini V2 is equipped with a Macronix MXLV400CB FLASH
- * which CFI does not properly detect, hence the LEGACY config.
- */
-#if defined(CONFIG_FLASH_CFI_LEGACY)
-#include <flash.h>
-ulong board_flash_get_legacy(ulong base, int banknum, flash_info_t *info)
-{
-       int sectsz[] = CONFIG_SYS_FLASH_SECTSZ;
-       int sect;
-
-       if (base != CONFIG_SYS_FLASH_BASE)
-               return 0;
-
-       info->size = 0;
-       info->sector_count = CONFIG_SYS_MAX_FLASH_SECT;
-       /* set each sector's start address and size based */
-       for (sect = 0; sect < CONFIG_SYS_MAX_FLASH_SECT; sect++) {
-               info->start[sect] = base+info->size;
-               info->size += sectsz[sect];
-       }
-       /* This flash must be accessed in 8-bits mode, no buffer. */
-       info->flash_id = 0x01000000;
-       info->portwidth = FLASH_CFI_8BIT;
-       info->chipwidth = FLASH_CFI_BY8;
-       info->buffer_size = 0;
-       /* timings are derived from the Macronix datasheet. */
-       info->erase_blk_tout = 1000;
-       info->write_tout = 10;
-       info->buffer_write_tout = 300;
-       /* Commands and addresses are for AMD mode 8-bit access. */
-       info->vendor = CFI_CMDSET_AMD_LEGACY;
-       info->cmd_reset = 0xF0;
-       info->interface = FLASH_CFI_X8;
-       info->legacy_unlock = 0;
-       info->ext_addr = 0;
-       info->addr_unlock1 = 0x00000aaa;
-       info->addr_unlock2 = 0x00000555;
-       /* Manufacturer Macronix, device MX29LV400CB, CFI 1.3. */
-       info->manufacturer_id = 0x22;
-       info->device_id = 0xBA;
-       info->device_id2 = 0;
-       info->cfi_version = 0x3133;
-       info->cfi_offset = 0x0000;
-       info->name = "MX29LV400CB";
-
-       return 1;
-}
-#endif                         /* CONFIG_SYS_FLASH_CFI */
-
 int board_init(void)
 {
        /* arch number of board */
@@ -83,3 +35,21 @@ void reset_phy(void)
        mv_phy_88e1116_init("egiga0", 8);
 }
 #endif /* CONFIG_RESET_PHY_R */
+
+/*
+ * SPL serial setup and NOR boot device selection
+ */
+
+#ifdef CONFIG_SPL_BUILD
+
+void spl_board_init(void)
+{
+       preloader_console_init();
+}
+
+u32 spl_boot_device(void)
+{
+       return BOOT_DEVICE_NOR;
+}
+
+#endif /* CONFIG_SPL_BUILD */
index 80ef8fdcb23baf885048ac90bded1d023c3328c9..018dddba15584f082758f5567b90b7421d09c025 100644 (file)
@@ -21,6 +21,7 @@
 #include <asm/arch/pwm.h>
 #endif
 #include <asm/arch/tegra.h>
+#include <asm/arch-tegra/ap.h>
 #include <asm/arch-tegra/board.h>
 #include <asm/arch-tegra/clk_rst.h>
 #include <asm/arch-tegra/pmc.h>
@@ -179,6 +180,14 @@ int board_late_init(void)
 #ifdef CONFIG_LCD
        /* Make sure we finish initing the LCD */
        tegra_lcd_check_next_stage(gd->fdt_blob, 1);
+#endif
+#if defined(CONFIG_TEGRA_SUPPORT_NON_SECURE)
+       if (tegra_cpu_is_non_secure()) {
+               printf("CPU is in NS mode\n");
+               setenv("cpu_ns_mode", "1");
+       } else {
+               setenv("cpu_ns_mode", "");
+       }
 #endif
        return 0;
 }
index daa74a4be02f029949803b6a3a21d435f4bb9e9c..52425a8f6dea2622496c27d14b007c9a2103d385 100644 (file)
@@ -22,7 +22,7 @@ DECLARE_GLOBAL_DATA_PTR;
  */
 void pinmux_init(void)
 {
-       pinmux_set_tristate_input_clamping();
+       pinmux_clear_tristate_input_clamping();
 
        gpio_config_table(jetson_tk1_gpio_inits,
                          ARRAY_SIZE(jetson_tk1_gpio_inits));
index de4eb355982cb2b1821849407f635caf65d3759b..863721b2a33084947d515cb19ddb8369f7259e9e 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, NVIDIA CORPORATION. All rights reserved.
+ * Copyright (c) 2015, NVIDIA CORPORATION. All rights reserved.
  *
  * SPDX-License-Identifier: GPL-2.0+
  */
 
 static const struct tegra_gpio_config jetson_tk1_gpio_inits[] = {
        /*        gpio, init_val */
-       GPIO_INIT(C7,   IN),
-       GPIO_INIT(G0,   OUT0),
-       GPIO_INIT(G1,   OUT0),
+       GPIO_INIT(G0,   IN),
+       GPIO_INIT(G1,   IN),
        GPIO_INIT(G2,   IN),
        GPIO_INIT(G3,   IN),
+       GPIO_INIT(G4,   IN),
        GPIO_INIT(H2,   OUT0),
-       GPIO_INIT(H3,   OUT0),
        GPIO_INIT(H4,   IN),
-       GPIO_INIT(H5,   OUT0),
-       GPIO_INIT(H6,   IN),
-       GPIO_INIT(H7,   OUT0),
+       GPIO_INIT(H7,   IN),
        GPIO_INIT(I0,   OUT0),
-       GPIO_INIT(I2,   OUT0),
-       GPIO_INIT(I4,   OUT0),
-       GPIO_INIT(I5,   IN),
+       GPIO_INIT(I1,   IN),
        GPIO_INIT(I6,   IN),
        GPIO_INIT(J0,   IN),
-       GPIO_INIT(J2,   IN),
        GPIO_INIT(K1,   OUT0),
        GPIO_INIT(K2,   IN),
-       GPIO_INIT(K3,   IN),
        GPIO_INIT(K4,   OUT0),
-       GPIO_INIT(K5,   OUT0),
        GPIO_INIT(K6,   OUT0),
        GPIO_INIT(N7,   IN),
-       GPIO_INIT(O0,   IN),
        GPIO_INIT(O1,   IN),
-       GPIO_INIT(O2,   IN),
-       GPIO_INIT(O3,   IN),
        GPIO_INIT(O4,   IN),
-       GPIO_INIT(O5,   IN),
-       GPIO_INIT(O6,   OUT0),
-       GPIO_INIT(O7,   IN),
-       GPIO_INIT(P0,   OUT0),
-       GPIO_INIT(P1,   OUT0),
        GPIO_INIT(P2,   OUT0),
        GPIO_INIT(Q0,   IN),
-       GPIO_INIT(Q1,   IN),
-       GPIO_INIT(Q2,   IN),
+       GPIO_INIT(Q3,   IN),
        GPIO_INIT(Q5,   IN),
-       GPIO_INIT(Q6,   IN),
-       GPIO_INIT(Q7,   IN),
        GPIO_INIT(R0,   OUT0),
-       GPIO_INIT(R1,   OUT0),
        GPIO_INIT(R2,   OUT0),
        GPIO_INIT(R4,   IN),
-       GPIO_INIT(R5,   OUT0),
        GPIO_INIT(R7,   IN),
-       GPIO_INIT(S0,   IN),
-       GPIO_INIT(S3,   OUT0),
-       GPIO_INIT(S4,   OUT0),
-       GPIO_INIT(S5,   IN),
-       GPIO_INIT(S6,   OUT0),
+       GPIO_INIT(S7,   IN),
        GPIO_INIT(T0,   OUT0),
-       GPIO_INIT(T1,   OUT0),
-       GPIO_INIT(U0,   OUT0),
+       GPIO_INIT(T1,   IN),
+       GPIO_INIT(U0,   IN),
        GPIO_INIT(U1,   IN),
        GPIO_INIT(U2,   IN),
-       GPIO_INIT(U3,   OUT0),
-       GPIO_INIT(U4,   OUT0),
+       GPIO_INIT(U3,   IN),
+       GPIO_INIT(U4,   IN),
        GPIO_INIT(U5,   IN),
        GPIO_INIT(U6,   IN),
        GPIO_INIT(V0,   IN),
        GPIO_INIT(V1,   IN),
-       GPIO_INIT(W2,   IN),
-       GPIO_INIT(W3,   IN),
-       GPIO_INIT(X1,   OUT0),
-       GPIO_INIT(X3,   IN),
-       GPIO_INIT(X4,   OUT0),
-       GPIO_INIT(X5,   IN),
-       GPIO_INIT(X6,   IN),
+       GPIO_INIT(X1,   IN),
+       GPIO_INIT(X4,   IN),
        GPIO_INIT(X7,   OUT0),
        GPIO_INIT(BB3,  OUT0),
        GPIO_INIT(BB5,  OUT0),
@@ -93,10 +63,7 @@ static const struct tegra_gpio_config jetson_tk1_gpio_inits[] = {
        GPIO_INIT(BB7,  OUT0),
        GPIO_INIT(CC1,  IN),
        GPIO_INIT(CC2,  IN),
-       GPIO_INIT(CC5,  OUT0),
-       GPIO_INIT(EE1,  OUT0),
-       GPIO_INIT(FF1,  OUT0),
-       GPIO_INIT(FF2,  IN),
+       GPIO_INIT(EE2,  OUT1),
 };
 
 #define PINCFG(_pingrp, _mux, _pull, _tri, _io, _od, _rcv_sel) \
@@ -114,152 +81,152 @@ static const struct tegra_gpio_config jetson_tk1_gpio_inits[] = {
 
 static const struct pmux_pingrp_config jetson_tk1_pingrps[] = {
        /*     pingrp,                 mux,          pull,   tri,      e_input, od,      rcv_sel */
-       PINCFG(CLK_32K_OUT_PA0,        SOC,          UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
-       PINCFG(UART3_CTS_N_PA1,        UARTC,        UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
-       PINCFG(DAP2_FS_PA2,            I2S1,         NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT),
-       PINCFG(DAP2_SCLK_PA3,          I2S1,         NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT),
-       PINCFG(DAP2_DIN_PA4,           I2S1,         NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT),
-       PINCFG(DAP2_DOUT_PA5,          I2S1,         NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT),
-       PINCFG(SDMMC3_CLK_PA6,         SDMMC3,       NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(CLK_32K_OUT_PA0,        SOC,          UP,     TRISTATE, INPUT,   DEFAULT, DEFAULT),
+       PINCFG(UART3_CTS_N_PA1,        GMI,          DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(DAP2_FS_PA2,            I2S1,         NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(DAP2_SCLK_PA3,          I2S1,         NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(DAP2_DIN_PA4,           I2S1,         NORMAL, TRISTATE, INPUT,   DEFAULT, DEFAULT),
+       PINCFG(DAP2_DOUT_PA5,          I2S1,         NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(SDMMC3_CLK_PA6,         SDMMC3,       NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT),
        PINCFG(SDMMC3_CMD_PA7,         SDMMC3,       UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
-       PINCFG(PB0,                    UARTD,        UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
-       PINCFG(PB1,                    UARTD,        UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(PB0,                    UARTD,        UP,     TRISTATE, INPUT,   DEFAULT, DEFAULT),
+       PINCFG(PB1,                    UARTD,        UP,     TRISTATE, INPUT,   DEFAULT, DEFAULT),
        PINCFG(SDMMC3_DAT3_PB4,        SDMMC3,       UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
        PINCFG(SDMMC3_DAT2_PB5,        SDMMC3,       UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
        PINCFG(SDMMC3_DAT1_PB6,        SDMMC3,       UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
        PINCFG(SDMMC3_DAT0_PB7,        SDMMC3,       UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
-       PINCFG(UART3_RTS_N_PC0,        UARTC,        NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(UART3_RTS_N_PC0,        GMI,          DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
        PINCFG(UART2_TXD_PC2,          IRDA,         NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
-       PINCFG(UART2_RXD_PC3,          IRDA,         UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(UART2_RXD_PC3,          IRDA,         UP,     TRISTATE, INPUT,   DEFAULT, DEFAULT),
        PINCFG(GEN1_I2C_SCL_PC4,       I2C1,         NORMAL, NORMAL,   INPUT,   ENABLE,  DEFAULT),
        PINCFG(GEN1_I2C_SDA_PC5,       I2C1,         NORMAL, NORMAL,   INPUT,   ENABLE,  DEFAULT),
-       PINCFG(PC7,                    DEFAULT,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
-       PINCFG(PG0,                    DEFAULT,      NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
-       PINCFG(PG1,                    DEFAULT,      NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
-       PINCFG(PG2,                    DEFAULT,      DOWN,   NORMAL,   INPUT,   DEFAULT, DEFAULT),
-       PINCFG(PG3,                    DEFAULT,      DOWN,   NORMAL,   INPUT,   DEFAULT, DEFAULT),
-       PINCFG(PG4,                    SPI4,         NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(PC7,                    RSVD1,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(PG0,                    DEFAULT,      NORMAL, TRISTATE, INPUT,   DEFAULT, DEFAULT),
+       PINCFG(PG1,                    DEFAULT,      NORMAL, TRISTATE, INPUT,   DEFAULT, DEFAULT),
+       PINCFG(PG2,                    DEFAULT,      NORMAL, TRISTATE, INPUT,   DEFAULT, DEFAULT),
+       PINCFG(PG3,                    DEFAULT,      NORMAL, TRISTATE, INPUT,   DEFAULT, DEFAULT),
+       PINCFG(PG4,                    DEFAULT,      NORMAL, TRISTATE, INPUT,   DEFAULT, DEFAULT),
        PINCFG(PG5,                    SPI4,         NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
        PINCFG(PG6,                    SPI4,         NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
-       PINCFG(PG7,                    SPI4,         NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(PG7,                    SPI4,         NORMAL, TRISTATE, INPUT,   DEFAULT, DEFAULT),
        PINCFG(PH0,                    GMI,          DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
        PINCFG(PH1,                    PWM1,         NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
        PINCFG(PH2,                    DEFAULT,      NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
-       PINCFG(PH3,                    DEFAULT,      NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
-       PINCFG(PH4,                    DEFAULT,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
-       PINCFG(PH5,                    DEFAULT,      NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
-       PINCFG(PH6,                    DEFAULT,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
-       PINCFG(PH7,                    DEFAULT,      NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(PH3,                    GMI,          DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(PH4,                    DEFAULT,      NORMAL, TRISTATE, INPUT,   DEFAULT, DEFAULT),
+       PINCFG(PH5,                    RSVD2,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(PH6,                    GMI,          DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(PH7,                    DEFAULT,      NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT),
        PINCFG(PI0,                    DEFAULT,      NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
-       PINCFG(PI1,                    RSVD1,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
-       PINCFG(PI2,                    DEFAULT,      NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(PI1,                    DEFAULT,      NORMAL, TRISTATE, INPUT,   DEFAULT, DEFAULT),
+       PINCFG(PI2,                    RSVD4,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
        PINCFG(PI3,                    SPI4,         NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
-       PINCFG(PI4,                    DEFAULT,      NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
-       PINCFG(PI5,                    DEFAULT,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
-       PINCFG(PI6,                    DEFAULT,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(PI4,                    GMI,          DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(PI5,                    RSVD2,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(PI6,                    DEFAULT,      NORMAL, TRISTATE, INPUT,   DEFAULT, DEFAULT),
        PINCFG(PI7,                    RSVD1,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
-       PINCFG(PJ0,                    DEFAULT,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
-       PINCFG(PJ2,                    DEFAULT,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
-       PINCFG(UART2_CTS_N_PJ5,        UARTB,        UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(PJ0,                    DEFAULT,      NORMAL, TRISTATE, INPUT,   DEFAULT, DEFAULT),
+       PINCFG(PJ2,                    RSVD1,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(UART2_CTS_N_PJ5,        UARTB,        UP,     TRISTATE, INPUT,   DEFAULT, DEFAULT),
        PINCFG(UART2_RTS_N_PJ6,        UARTB,        NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
        PINCFG(PJ7,                    UARTD,        NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
-       PINCFG(PK0,                    SOC,          UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(PK0,                    RSVD1,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
        PINCFG(PK1,                    DEFAULT,      NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
-       PINCFG(PK2,                    DEFAULT,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
-       PINCFG(PK3,                    DEFAULT,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(PK2,                    DEFAULT,      NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(PK3,                    GMI,          DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
        PINCFG(PK4,                    DEFAULT,      NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
-       PINCFG(SPDIF_OUT_PK5,          DEFAULT,      NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(SPDIF_OUT_PK5,          RSVD2,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
        PINCFG(SPDIF_IN_PK6,           DEFAULT,      NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
        PINCFG(PK7,                    UARTD,        NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
-       PINCFG(DAP1_FS_PN0,            I2S0,         DOWN,   NORMAL,   INPUT,   DEFAULT, DEFAULT),
-       PINCFG(DAP1_DIN_PN1,           I2S0,         DOWN,   NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(DAP1_FS_PN0,            RSVD4,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(DAP1_DIN_PN1,           RSVD4,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
        PINCFG(DAP1_DOUT_PN2,          SATA,         NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
-       PINCFG(DAP1_SCLK_PN3,          I2S0,         DOWN,   NORMAL,   INPUT,   DEFAULT, DEFAULT),
-       PINCFG(USB_VBUS_EN0_PN4,       USB,          UP,     NORMAL,   INPUT,   ENABLE,  DEFAULT),
-       PINCFG(USB_VBUS_EN1_PN5,       USB,          UP,     NORMAL,   INPUT,   ENABLE,  DEFAULT),
-       PINCFG(HDMI_INT_PN7,           DEFAULT,      DOWN,   NORMAL,   INPUT,   DEFAULT, NORMAL),
-       PINCFG(ULPI_DATA7_PO0,         DEFAULT,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
-       PINCFG(ULPI_DATA0_PO1,         DEFAULT,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
-       PINCFG(ULPI_DATA1_PO2,         DEFAULT,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
-       PINCFG(ULPI_DATA2_PO3,         DEFAULT,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
-       PINCFG(ULPI_DATA3_PO4,         DEFAULT,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
-       PINCFG(ULPI_DATA4_PO5,         DEFAULT,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
-       PINCFG(ULPI_DATA5_PO6,         DEFAULT,      NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
-       PINCFG(ULPI_DATA6_PO7,         DEFAULT,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
-       PINCFG(DAP3_FS_PP0,            DEFAULT,      NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
-       PINCFG(DAP3_DIN_PP1,           DEFAULT,      NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(DAP1_SCLK_PN3,          RSVD4,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(USB_VBUS_EN0_PN4,       USB,          NORMAL, NORMAL,   INPUT,   DISABLE, DEFAULT),
+       PINCFG(USB_VBUS_EN1_PN5,       USB,          NORMAL, NORMAL,   INPUT,   DISABLE, DEFAULT),
+       PINCFG(HDMI_INT_PN7,           DEFAULT,      DOWN,   TRISTATE, INPUT,   DEFAULT, NORMAL),
+       PINCFG(ULPI_DATA7_PO0,         ULPI,         DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(ULPI_DATA0_PO1,         DEFAULT,      NORMAL, TRISTATE, INPUT,   DEFAULT, DEFAULT),
+       PINCFG(ULPI_DATA1_PO2,         ULPI,         DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(ULPI_DATA2_PO3,         ULPI,         DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(ULPI_DATA3_PO4,         DEFAULT,      NORMAL, TRISTATE, INPUT,   DEFAULT, DEFAULT),
+       PINCFG(ULPI_DATA4_PO5,         ULPI,         DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(ULPI_DATA5_PO6,         ULPI,         DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(ULPI_DATA6_PO7,         ULPI,         DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(DAP3_FS_PP0,            I2S2,         DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(DAP3_DIN_PP1,           I2S2,         DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
        PINCFG(DAP3_DOUT_PP2,          DEFAULT,      NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
        PINCFG(DAP3_SCLK_PP3,          RSVD3,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
-       PINCFG(DAP4_FS_PP4,            I2S3,         DOWN,   NORMAL,   INPUT,   DEFAULT, DEFAULT),
-       PINCFG(DAP4_DIN_PP5,           I2S3,         DOWN,   NORMAL,   INPUT,   DEFAULT, DEFAULT),
-       PINCFG(DAP4_DOUT_PP6,          I2S3,         DOWN,   NORMAL,   INPUT,   DEFAULT, DEFAULT),
-       PINCFG(DAP4_SCLK_PP7,          I2S3,         DOWN,   NORMAL,   INPUT,   DEFAULT, DEFAULT),
-       PINCFG(KB_COL0_PQ0,            DEFAULT,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
-       PINCFG(KB_COL1_PQ1,            DEFAULT,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
-       PINCFG(KB_COL2_PQ2,            DEFAULT,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
-       PINCFG(KB_COL3_PQ3,            KBC,          DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
-       PINCFG(KB_COL4_PQ4,            SDMMC3,       UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
-       PINCFG(KB_COL5_PQ5,            DEFAULT,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
-       PINCFG(KB_COL6_PQ6,            DEFAULT,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
-       PINCFG(KB_COL7_PQ7,            DEFAULT,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(DAP4_FS_PP4,            RSVD4,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(DAP4_DIN_PP5,           RSVD3,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(DAP4_DOUT_PP6,          RSVD4,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(DAP4_SCLK_PP7,          RSVD3,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(KB_COL0_PQ0,            DEFAULT,      UP,     TRISTATE, INPUT,   DEFAULT, DEFAULT),
+       PINCFG(KB_COL1_PQ1,            RSVD2,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(KB_COL2_PQ2,            RSVD2,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(KB_COL3_PQ3,            DEFAULT,      NORMAL, TRISTATE, INPUT,   DEFAULT, DEFAULT),
+       PINCFG(KB_COL4_PQ4,            SDMMC3,       UP,     TRISTATE, INPUT,   DEFAULT, DEFAULT),
+       PINCFG(KB_COL5_PQ5,            DEFAULT,      NORMAL, TRISTATE, INPUT,   DEFAULT, DEFAULT),
+       PINCFG(KB_COL6_PQ6,            RSVD2,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(KB_COL7_PQ7,            RSVD2,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
        PINCFG(KB_ROW0_PR0,            DEFAULT,      NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
-       PINCFG(KB_ROW1_PR1,            DEFAULT,      NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(KB_ROW1_PR1,            RSVD2,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
        PINCFG(KB_ROW2_PR2,            DEFAULT,      NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
-       PINCFG(KB_ROW3_PR3,            SYS,          NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
-       PINCFG(KB_ROW4_PR4,            DEFAULT,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
-       PINCFG(KB_ROW5_PR5,            DEFAULT,      NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
-       PINCFG(KB_ROW6_PR6,            DISPLAYA_ALT, DOWN,   NORMAL,   INPUT,   DEFAULT, DEFAULT),
-       PINCFG(KB_ROW7_PR7,            DEFAULT,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
-       PINCFG(KB_ROW8_PS0,            DEFAULT,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
-       PINCFG(KB_ROW9_PS1,            RSVD2,        NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
-       PINCFG(KB_ROW10_PS2,           RSVD2,        UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
-       PINCFG(KB_ROW11_PS3,           DEFAULT,      NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
-       PINCFG(KB_ROW12_PS4,           DEFAULT,      NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
-       PINCFG(KB_ROW13_PS5,           DEFAULT,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
-       PINCFG(KB_ROW14_PS6,           DEFAULT,      NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
-       PINCFG(KB_ROW15_PS7,           SOC,          UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(KB_ROW3_PR3,            KBC,          DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(KB_ROW4_PR4,            DEFAULT,      NORMAL, TRISTATE, INPUT,   DEFAULT, DEFAULT),
+       PINCFG(KB_ROW5_PR5,            RSVD3,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(KB_ROW6_PR6,            DISPLAYA_ALT, NORMAL, TRISTATE, INPUT,   DEFAULT, DEFAULT),
+       PINCFG(KB_ROW7_PR7,            DEFAULT,      NORMAL, TRISTATE, INPUT,   DEFAULT, DEFAULT),
+       PINCFG(KB_ROW8_PS0,            RSVD2,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(KB_ROW9_PS1,            UARTA,        NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(KB_ROW10_PS2,           UARTA,        UP,     TRISTATE, INPUT,   DEFAULT, DEFAULT),
+       PINCFG(KB_ROW11_PS3,           RSVD2,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(KB_ROW12_PS4,           RSVD2,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(KB_ROW13_PS5,           RSVD2,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(KB_ROW14_PS6,           RSVD2,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(KB_ROW15_PS7,           DEFAULT,      NORMAL, TRISTATE, INPUT,   DEFAULT, DEFAULT),
        PINCFG(KB_ROW16_PT0,           DEFAULT,      NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
-       PINCFG(KB_ROW17_PT1,           DEFAULT,      NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(KB_ROW17_PT1,           DEFAULT,      NORMAL, TRISTATE, INPUT,   DEFAULT, DEFAULT),
        PINCFG(GEN2_I2C_SCL_PT5,       I2C2,         NORMAL, NORMAL,   INPUT,   ENABLE,  DEFAULT),
        PINCFG(GEN2_I2C_SDA_PT6,       I2C2,         NORMAL, NORMAL,   INPUT,   ENABLE,  DEFAULT),
        PINCFG(SDMMC4_CMD_PT7,         SDMMC4,       UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
-       PINCFG(PU0,                    DEFAULT,      NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
-       PINCFG(PU1,                    DEFAULT,      DOWN,   NORMAL,   INPUT,   DEFAULT, DEFAULT),
-       PINCFG(PU2,                    DEFAULT,      DOWN,   NORMAL,   INPUT,   DEFAULT, DEFAULT),
-       PINCFG(PU3,                    DEFAULT,      NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
-       PINCFG(PU4,                    DEFAULT,      NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
-       PINCFG(PU5,                    DEFAULT,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
-       PINCFG(PU6,                    DEFAULT,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
-       PINCFG(PV0,                    DEFAULT,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
-       PINCFG(PV1,                    DEFAULT,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
-       PINCFG(SDMMC3_CD_N_PV2,        SDMMC3,       UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(PU0,                    DEFAULT,      NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(PU1,                    DEFAULT,      NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(PU2,                    DEFAULT,      NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(PU3,                    DEFAULT,      NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(PU4,                    DEFAULT,      NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(PU5,                    DEFAULT,      NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(PU6,                    DEFAULT,      NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(PV0,                    DEFAULT,      NORMAL, TRISTATE, INPUT,   DEFAULT, DEFAULT),
+       PINCFG(PV1,                    DEFAULT,      NORMAL, TRISTATE, INPUT,   DEFAULT, DEFAULT),
+       PINCFG(SDMMC3_CD_N_PV2,        SDMMC3,       UP,     TRISTATE, INPUT,   DEFAULT, DEFAULT),
        PINCFG(SDMMC1_WP_N_PV3,        SDMMC1,       DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
        PINCFG(DDC_SCL_PV4,            I2C4,         NORMAL, NORMAL,   INPUT,   DEFAULT, NORMAL),
        PINCFG(DDC_SDA_PV5,            I2C4,         NORMAL, NORMAL,   INPUT,   DEFAULT, NORMAL),
-       PINCFG(GPIO_W2_AUD_PW2,        DEFAULT,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
-       PINCFG(GPIO_W3_AUD_PW3,        DEFAULT,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(GPIO_W2_AUD_PW2,        RSVD2,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(GPIO_W3_AUD_PW3,        SPI6,         DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
        PINCFG(DAP_MCLK1_PW4,          EXTPERIPH1,   NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
        PINCFG(CLK2_OUT_PW5,           EXTPERIPH2,   NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
-       PINCFG(UART3_TXD_PW6,          UARTC,        NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
-       PINCFG(UART3_RXD_PW7,          UARTC,        UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(UART3_TXD_PW6,          RSVD2,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(UART3_RXD_PW7,          RSVD2,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
        PINCFG(DVFS_PWM_PX0,           CLDVFS,       NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
-       PINCFG(GPIO_X1_AUD_PX1,        DEFAULT,      NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(GPIO_X1_AUD_PX1,        DEFAULT,      NORMAL, TRISTATE, INPUT,   DEFAULT, DEFAULT),
        PINCFG(DVFS_CLK_PX2,           CLDVFS,       NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
-       PINCFG(GPIO_X3_AUD_PX3,        DEFAULT,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
-       PINCFG(GPIO_X4_AUD_PX4,        DEFAULT,      NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
-       PINCFG(GPIO_X5_AUD_PX5,        DEFAULT,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
-       PINCFG(GPIO_X6_AUD_PX6,        DEFAULT,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(GPIO_X3_AUD_PX3,        RSVD4,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(GPIO_X4_AUD_PX4,        DEFAULT,      NORMAL, TRISTATE, INPUT,   DEFAULT, DEFAULT),
+       PINCFG(GPIO_X5_AUD_PX5,        RSVD4,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(GPIO_X6_AUD_PX6,        GMI,          DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
        PINCFG(GPIO_X7_AUD_PX7,        DEFAULT,      NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
        PINCFG(ULPI_CLK_PY0,           SPI1,         NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
-       PINCFG(ULPI_DIR_PY1,           SPI1,         DOWN,   NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(ULPI_DIR_PY1,           SPI1,         NORMAL, TRISTATE, INPUT,   DEFAULT, DEFAULT),
        PINCFG(ULPI_NXT_PY2,           SPI1,         NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
        PINCFG(ULPI_STP_PY3,           SPI1,         NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
-       PINCFG(SDMMC1_DAT3_PY4,        SDMMC1,       UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
-       PINCFG(SDMMC1_DAT2_PY5,        SDMMC1,       UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
-       PINCFG(SDMMC1_DAT1_PY6,        SDMMC1,       UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
-       PINCFG(SDMMC1_DAT0_PY7,        SDMMC1,       UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
-       PINCFG(SDMMC1_CLK_PZ0,         SDMMC1,       NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT),
-       PINCFG(SDMMC1_CMD_PZ1,         SDMMC1,       UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(SDMMC1_DAT3_PY4,        SDMMC1,       DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(SDMMC1_DAT2_PY5,        SDMMC1,       DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(SDMMC1_DAT1_PY6,        SDMMC1,       DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(SDMMC1_DAT0_PY7,        RSVD2,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(SDMMC1_CLK_PZ0,         RSVD3,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(SDMMC1_CMD_PZ1,         SDMMC1,       DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
        PINCFG(PWR_I2C_SCL_PZ6,        I2CPWR,       NORMAL, NORMAL,   INPUT,   ENABLE,  DEFAULT),
        PINCFG(PWR_I2C_SDA_PZ7,        I2CPWR,       NORMAL, NORMAL,   INPUT,   ENABLE,  DEFAULT),
        PINCFG(SDMMC4_DAT0_PAA0,       SDMMC4,       UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
@@ -279,30 +246,30 @@ static const struct pmux_pingrp_config jetson_tk1_pingrps[] = {
        PINCFG(PBB6,                   DEFAULT,      NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
        PINCFG(PBB7,                   DEFAULT,      NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
        PINCFG(CAM_MCLK_PCC0,          VI_ALT3,      NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
-       PINCFG(PCC1,                   DEFAULT,      DOWN,   NORMAL,   INPUT,   DEFAULT, DEFAULT),
-       PINCFG(PCC2,                   DEFAULT,      DOWN,   NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(PCC1,                   DEFAULT,      NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(PCC2,                   DEFAULT,      NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT),
        PINCFG(SDMMC4_CLK_PCC4,        SDMMC4,       NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT),
-       PINCFG(CLK2_REQ_PCC5,          DEFAULT,      NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(CLK2_REQ_PCC5,          RSVD2,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
        PINCFG(PEX_L0_RST_N_PDD1,      PE0,          NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
-       PINCFG(PEX_L0_CLKREQ_N_PDD2,   PE0,          UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
-       PINCFG(PEX_WAKE_N_PDD3,        PE,           UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(PEX_L0_CLKREQ_N_PDD2,   PE0,          NORMAL, TRISTATE, INPUT,   DEFAULT, DEFAULT),
+       PINCFG(PEX_WAKE_N_PDD3,        PE,           NORMAL, TRISTATE, INPUT,   DEFAULT, DEFAULT),
        PINCFG(PEX_L1_RST_N_PDD5,      PE1,          NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
-       PINCFG(PEX_L1_CLKREQ_N_PDD6,   PE1,          UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(PEX_L1_CLKREQ_N_PDD6,   PE1,          NORMAL, TRISTATE, INPUT,   DEFAULT, DEFAULT),
        PINCFG(CLK3_OUT_PEE0,          EXTPERIPH3,   NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
-       PINCFG(CLK3_REQ_PEE1,          DEFAULT,      NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
-       PINCFG(DAP_MCLK1_REQ_PEE2,     SATA,         NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
-       PINCFG(HDMI_CEC_PEE3,          CEC,          NORMAL, NORMAL,   INPUT,   ENABLE,  DEFAULT),
+       PINCFG(CLK3_REQ_PEE1,          RSVD2,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(DAP_MCLK1_REQ_PEE2,     DEFAULT,      NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(HDMI_CEC_PEE3,          CEC,          NORMAL, NORMAL,   INPUT,   DISABLE, DEFAULT),
        PINCFG(SDMMC3_CLK_LB_OUT_PEE4, SDMMC3,       UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
        PINCFG(SDMMC3_CLK_LB_IN_PEE5,  SDMMC3,       UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
-       PINCFG(DP_HPD_PFF0,            DP,           UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
-       PINCFG(USB_VBUS_EN2_PFF1,      DEFAULT,      NORMAL, NORMAL,   OUTPUT,  DISABLE, DEFAULT),
-       PINCFG(PFF2,                   DEFAULT,      UP,     NORMAL,   INPUT,   DISABLE, DEFAULT),
+       PINCFG(DP_HPD_PFF0,            DP,           NORMAL, TRISTATE, INPUT,   DEFAULT, DEFAULT),
+       PINCFG(USB_VBUS_EN2_PFF1,      RSVD2,        DOWN,   TRISTATE, OUTPUT,  DISABLE, DEFAULT),
+       PINCFG(PFF2,                   RSVD2,        DOWN,   TRISTATE, OUTPUT,  DISABLE, DEFAULT),
        PINCFG(CORE_PWR_REQ,           PWRON,        NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
-       PINCFG(CPU_PWR_REQ,            RSVD2,        NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
-       PINCFG(PWR_INT_N,              PMI,          UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT),
-       PINCFG(RESET_OUT_N,            RESET_OUT_N,  NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(CPU_PWR_REQ,            CPU,          NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
+       PINCFG(PWR_INT_N,              PMI,          UP,     TRISTATE, INPUT,   DEFAULT, DEFAULT),
+       PINCFG(RESET_OUT_N,            RESET_OUT_N,  NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT),
        PINCFG(OWR,                    RSVD2,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, NORMAL),
-       PINCFG(CLK_32K_IN,             RSVD2,        NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT),
+       PINCFG(CLK_32K_IN,             CLK,          NORMAL, TRISTATE, INPUT,   DEFAULT, DEFAULT),
        PINCFG(JTAG_RTCK,              RTCK,         UP,     NORMAL,   OUTPUT,  DEFAULT, DEFAULT),
 };
 
index fc3e7ddd10b8557678e913fc6e269e6071726725..731b539eaabe8bc1c14e5bae69b75c0dd82957c1 100644 (file)
@@ -360,6 +360,18 @@ static int setup_fdt(void)
 /* Get the top of usable RAM */
 __weak ulong board_get_usable_ram_top(ulong total_size)
 {
+#ifdef CONFIG_SYS_SDRAM_BASE
+       /*
+        * Detect whether we have so much RAM it goes past the end of our
+        * 32-bit address space. If so, clip the usable RAM so it doesn't.
+        */
+       if (gd->ram_top < CONFIG_SYS_SDRAM_BASE)
+               /*
+                * Will wrap back to top of 32-bit space when reservations
+                * are made.
+                */
+               return 0;
+#endif
        return gd->ram_top;
 }
 
index 3b1a6c193a703521a9a549567d99541471a26aab..20c1c65e1ff91633a58dc6f82f40d97a0f9612c9 100644 (file)
@@ -1,3 +1,4 @@
-CONFIG_ARM=y
-CONFIG_ORION5X=y
-CONFIG_TARGET_EDMINIV2=y
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_ORION5X=y
++S:CONFIG_TARGET_EDMINIV2=y
index 61809fcdbea79f0b75fc7b3c0ca1aa3d8f9eca9c..6d38853ed06f7b9a5258382115089a9a19c1c757 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 Marcel Ziswiler
+ * Copyright (c) 2014-2015 Marcel Ziswiler
  *
  * SPDX-License-Identifier:    GPL-2.0+
  */
@@ -22,8 +22,6 @@
 
 #define CONFIG_MACH_TYPE               MACH_TYPE_APALIS_T30
 
-#define CONFIG_BOARD_EARLY_INIT_F
-
 /* I2C */
 #define CONFIG_SYS_I2C_TEGRA
 #define CONFIG_CMD_I2C
 #define CONFIG_USB_STORAGE
 #define CONFIG_CMD_USB
 
-/* USB networking support */
-#define CONFIG_USB_HOST_ETHER
-#define CONFIG_USB_ETHER_ASIX
-
 /* PCI host support */
-#undef CONFIG_PCI      /* just define once Tegra PCIe support got merged */
+#define CONFIG_PCI
 #define CONFIG_PCI_TEGRA
 #define CONFIG_PCI_PNP
 #define CONFIG_CMD_PCI
 
 /* PCI networking support */
 #define CONFIG_E1000
-#undef CONFIG_E1000_NO_NVM     /* just define once E1000 driver got fixed */
+#define CONFIG_E1000_NO_NVM
 
 /* General networking support */
 #define CONFIG_CMD_NET
 #define CONFIG_CMD_DHCP
 
+/* Miscellaneous commands */
+#define CONFIG_CMD_SETEXPR
+#define CONFIG_FAT_WRITE
+
+/* Increase console I/O buffer size */
+#undef CONFIG_SYS_CBSIZE
+#define CONFIG_SYS_CBSIZE              1024
+
+/* Increase arguments buffer size */
+#undef CONFIG_SYS_BARGSIZE
+#define CONFIG_SYS_BARGSIZE CONFIG_SYS_CBSIZE
+
+/* Increase print buffer size */
+#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT) + 16)
+
+/* Increase maximum number of arguments */
+#undef CONFIG_SYS_MAXARGS
+#define CONFIG_SYS_MAXARGS             32
+
 #include "tegra-common-usb-gadget.h"
 #include "tegra-common-post.h"
 
index 5df460c96b1d0072b36e06c1e8c74b8b58f5f891..58013c6c9b2e0e667e6bad12af8c228ca58c5cb8 100644 (file)
@@ -36,8 +36,6 @@
 #define MACH_TYPE_BEAVER               4597    /* not yet in mach-types.h */
 #define CONFIG_MACH_TYPE               MACH_TYPE_BEAVER
 
-#define CONFIG_BOARD_EARLY_INIT_F
-
 /* I2C */
 #define CONFIG_SYS_I2C_TEGRA
 #define CONFIG_CMD_I2C
index 5e13b655c28788b9cfdf65a699c8e65929fb78ee..55de464acb047301d318916633a2a8abe70eb70e 100644 (file)
@@ -39,8 +39,6 @@
 
 #define CONFIG_MACH_TYPE               MACH_TYPE_CARDHU
 
-#define CONFIG_BOARD_EARLY_INIT_F
-
 /* I2C */
 #define CONFIG_SYS_I2C_TEGRA
 #define CONFIG_CMD_I2C
index 2b876fede111ecac108939edb02b557e94991a45..4888c945fe2d7dd9a5bea74d5860d6be5e3d5e8f 100644 (file)
@@ -18,8 +18,6 @@
 #define CONFIG_TEGRA_UARTA_SDIO1
 #define CONFIG_SYS_NS16550_COM1    NV_PA_APB_UARTA_BASE
 
-#define CONFIG_BOARD_EARLY_INIT_F
-
 /* SD/MMC support */
 #define CONFIG_MMC
 #define CONFIG_GENERIC_MMC
index ce6f23b8c4f12ee73e2164357b3f2c7fdab17bd6..ee6fa1c83077984a20c550ae5c4b2a562967d304 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013-2014 Stefan Agner
+ * Copyright (c) 2013-2015 Stefan Agner
  *
  * SPDX-License-Identifier:    GPL-2.0+
  */
 
 #include "tegra30-common.h"
 
+/* High-level configuration options */
 #define V_PROMPT                       "Colibri T30 # "
 #define CONFIG_TEGRA_BOARD_STRING      "Toradex Colibri T30"
 
-/* Board-specific config */
+/* Board-specific serial config */
 #define CONFIG_SERIAL_MULTI
 #define CONFIG_TEGRA_ENABLE_UARTA
 #define CONFIG_SYS_NS16550_COM1                NV_PA_APB_UARTA_BASE
 
 #define CONFIG_MACH_TYPE               MACH_TYPE_COLIBRI_T30
 
-#define CONFIG_BOARD_EARLY_INIT_F
-
 /* I2C */
 #define CONFIG_SYS_I2C_TEGRA
 #define CONFIG_CMD_I2C
 #define CONFIG_CMD_NET
 #define CONFIG_CMD_DHCP
 
+/* Miscellaneous commands */
+#define CONFIG_CMD_SETEXPR
+#define CONFIG_FAT_WRITE
+
+/* Increase console I/O buffer size */
+#undef CONFIG_SYS_CBSIZE
+#define CONFIG_SYS_CBSIZE              1024
+
+/* Increase arguments buffer size */
+#undef CONFIG_SYS_BARGSIZE
+#define CONFIG_SYS_BARGSIZE CONFIG_SYS_CBSIZE
+
+/* Increase print buffer size */
+#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT) + 16)
+
+/* Increase maximum number of arguments */
+#undef CONFIG_SYS_MAXARGS
+#define CONFIG_SYS_MAXARGS             32
+
 #include "tegra-common-usb-gadget.h"
 #include "tegra-common-post.h"
 
index 0b04ee67b36acbba63b0c3b64095da78acf8c1d7..5f5eb3b3139d79fc68555f57bd51db9d203a98e8 100644 (file)
@@ -32,8 +32,6 @@
 
 #define CONFIG_MACH_TYPE               MACH_TYPE_DALMORE
 
-#define CONFIG_BOARD_EARLY_INIT_F
-
 /* I2C */
 #define CONFIG_SYS_I2C_TEGRA
 #define CONFIG_CMD_I2C
index 70a698ab328e6392f73cac47a00a4ed3981de3a0..5ce01fb2aea5081ca0bfe38809a0f2c26b049879 100644 (file)
 #ifndef _CONFIG_EDMINIV2_H
 #define _CONFIG_EDMINIV2_H
 
+/* general settings */
+#define CONFIG_SYS_GENERIC_BOARD
+
+/*
+ * SPL
+ */
+
+#define CONFIG_SPL_FRAMEWORK
+#define CONFIG_SPL_LIBGENERIC_SUPPORT
+#define CONFIG_SPL_LIBCOMMON_SUPPORT
+#define CONFIG_SPL_SERIAL_SUPPORT
+#define CONFIG_SPL_NOR_SUPPORT
+#define CONFIG_SPL_TEXT_BASE           0xffff0000
+#define CONFIG_SPL_MAX_SIZE            0x0000fff0
+#define CONFIG_SPL_STACK               0x00020000
+#define CONFIG_SPL_BSS_START_ADDR      0x00020000
+#define CONFIG_SPL_BSS_MAX_SIZE                0x0001ffff
+#define CONFIG_SYS_SPL_MALLOC_START    0x00040000
+#define CONFIG_SYS_SPL_MALLOC_SIZE     0x0001ffff
+#define CONFIG_SPL_LDSCRIPT            "$(CPUDIR)/orion5x/u-boot-spl.lds"
+#define CONFIG_SPL_BOARD_INIT
+#define CONFIG_SYS_UBOOT_BASE          0xfff90000
+#define CONFIG_SYS_UBOOT_START         0x00800000
+#define CONFIG_SYS_TEXT_BASE           0x00800000
+
 /*
  * Version number information
  */
 
 #define CONFIG_SYS_FLASH_CFI
 #define CONFIG_FLASH_CFI_DRIVER
-#define CONFIG_FLASH_CFI_LEGACY
 #define CONFIG_SYS_MAX_FLASH_BANKS     1  /* max num of flash banks       */
 #define CONFIG_SYS_MAX_FLASH_SECT      11 /* max num of sects on one chip */
 #define CONFIG_SYS_FLASH_BASE          0xfff80000
-#define CONFIG_SYS_FLASH_SECTSZ \
-       {16384, 8192, 8192, 32768, \
-        65536, 65536, 65536, 65536, 65536, 65536, 65536}
 
 /* auto boot */
 #define CONFIG_BOOTDELAY       3       /* default enable autoboot */
index ff9fbc9965a25e0856c3849d8628eb98b2f0144a..ad3dcdb7bab1fa697106a535cc7e013357e54495 100644 (file)
@@ -27,9 +27,6 @@
 
 #define CONFIG_MACH_TYPE               MACH_TYPE_HARMONY
 
-#define CONFIG_BOARD_EARLY_INIT_F
-#define CONFIG_BOARD_LATE_INIT         /* Make sure LCD init is complete */
-
 /* SD/MMC */
 #define CONFIG_MMC
 #define CONFIG_GENERIC_MMC
index 0a79c7cfc361ead7f91ae7b5d1d9d226d1593dbb..8c016b795519283f829899d2445e2e91d44fcaee 100644 (file)
@@ -24,8 +24,6 @@
 #define CONFIG_TEGRA_ENABLE_UARTD
 #define CONFIG_SYS_NS16550_COM1                NV_PA_APB_UARTD_BASE
 
-#define CONFIG_BOARD_EARLY_INIT_F
-
 /* I2C */
 #define CONFIG_SYS_I2C_TEGRA
 #define CONFIG_CMD_I2C
index 17a1cde0399049001b19d208ccf4106d0ce1f4f1..f80efedeb2f68ac78d803a4e6289d8f96cbf01c1 100644 (file)
 #define CONFIG_GICV3
 #define CONFIG_FSL_TZPC_BP147
 
+/* Errata fixes */
+#define CONFIG_ARM_ERRATA_828024
+#define CONFIG_ARM_ERRATA_826974
+
 /* Link Definitions */
 #define CONFIG_SYS_TEXT_BASE           0x30001000
 
index ac5208fa0d342573059c24e075adb5e39c2c87bf..f721a4d6a21abe7e3d6f0a73d54cf9ad7ffa37da 100644 (file)
@@ -20,9 +20,6 @@
 #define CONFIG_TEGRA_ENABLE_UARTD      /* UARTD: debug UART */
 #define CONFIG_SYS_NS16550_COM1                NV_PA_APB_UARTD_BASE
 
-#define CONFIG_BOARD_EARLY_INIT_F
-#define CONFIG_BOARD_LATE_INIT
-
 /* SD/MMC */
 #define CONFIG_MMC
 #define CONFIG_GENERIC_MMC
index cf331ab2077a98b70b1948959523a2b9c2aaa26e..539759991123f6c5888d1403153c33fd87c8046d 100644 (file)
@@ -21,8 +21,6 @@
 #define CONFIG_TEGRA_ENABLE_UARTA
 #define CONFIG_SYS_NS16550_COM1                NV_PA_APB_UARTA_BASE
 
-#define CONFIG_BOARD_EARLY_INIT_F
-
 /* I2C */
 #define CONFIG_SYS_I2C_TEGRA
 #define CONFIG_CMD_I2C
index 45bb47088bc5e67cd886ef32d23543e30e8cb58a..284419ffc8a99a0694b105f0c73b3e663deb06a8 100644 (file)
@@ -30,9 +30,6 @@
 
 #define CONFIG_MACH_TYPE               MACH_TYPE_PAZ00
 
-#define CONFIG_BOARD_EARLY_INIT_F
-#define CONFIG_BOARD_LATE_INIT
-
 /* SD/MMC */
 #define CONFIG_MMC
 #define CONFIG_GENERIC_MMC
index b663b89d2c709761946c18a2bd5470878f04fbdc..6878ed799586df42de852a375c6e62a0bfedce84 100644 (file)
@@ -20,9 +20,6 @@
 #define CONFIG_TEGRA_ENABLE_UARTD      /* UARTD: debug UART */
 #define CONFIG_SYS_NS16550_COM1                NV_PA_APB_UARTD_BASE
 
-#define CONFIG_BOARD_EARLY_INIT_F
-#define CONFIG_BOARD_LATE_INIT
-
 /* SD/MMC */
 #define CONFIG_MMC
 #define CONFIG_GENERIC_MMC
index 5f77051d13f889c117f5cf4d180548eeb2c95eaa..4442064db914ce01de5b69109835a9a01941c0e7 100644 (file)
@@ -32,9 +32,6 @@
 
 #define CONFIG_MACH_TYPE               MACH_TYPE_SEABOARD
 
-#define CONFIG_BOARD_EARLY_INIT_F
-#define CONFIG_BOARD_LATE_INIT         /* Make sure LCD init is complete */
-
 /* I2C */
 #define CONFIG_SYS_I2C_TEGRA
 #define CONFIG_CMD_I2C
index e37b23359b544147f9798d46823c5c5b8b3c2b37..cfa7fb12d7ef96daab635eba878792affb65ff86 100644 (file)
@@ -19,8 +19,6 @@
 #define CONFIG_TEGRA_ENABLE_UARTD
 #define CONFIG_SYS_NS16550_COM1                NV_PA_APB_UARTD_BASE
 
-#define CONFIG_BOARD_EARLY_INIT_F
-
 /* I2C */
 #define CONFIG_SYS_I2C_TEGRA
 #define CONFIG_CMD_I2C
index 9ea4ff497115b200bbfebd591f7fa35f414ef460..13c24c960c08031a00312be4ec4228e05ad9ebae 100644 (file)
@@ -20,9 +20,6 @@
 #define CONFIG_TEGRA_ENABLE_UARTD      /* UARTD: debug UART */
 #define CONFIG_SYS_NS16550_COM1                NV_PA_APB_UARTD_BASE
 
-#define CONFIG_BOARD_EARLY_INIT_F
-#define CONFIG_BOARD_LATE_INIT
-
 /* SD/MMC */
 #define CONFIG_MMC
 #define CONFIG_GENERIC_MMC
index 117714150ce8f36f3993af1cc827a0640d071f90..2cf1f68404b138395bd45ac02979c264d041e6eb 100644 (file)
 #define CONFIG_SPL_GPIO_SUPPORT
 
 #define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_BOARD_EARLY_INIT_F
+#define CONFIG_BOARD_LATE_INIT
 
 /* Misc utility code */
 #define CONFIG_BOUNCE_BUFFER
index 59f4f6767b76a62cf100f15b1c207b5c303f96b6..81be8a22047286802982293a90a81c6f1a634f98 100644 (file)
@@ -22,8 +22,6 @@
 
 #define CONFIG_MACH_TYPE               MACH_TYPE_TRIMSLICE
 
-#define CONFIG_BOARD_EARLY_INIT_F
-
 /* SPI */
 #define CONFIG_TEGRA20_SFLASH
 #define CONFIG_SPI_FLASH
index 8880de86c42d7c6eb128e68cd7a0a2a74930ef7b..45940024249ebafbebc6146b23dde5145e407266 100644 (file)
@@ -21,8 +21,6 @@
 #define CONFIG_TEGRA_ENABLE_UARTA
 #define CONFIG_SYS_NS16550_COM1                NV_PA_APB_UARTA_BASE
 
-#define CONFIG_BOARD_EARLY_INIT_F
-
 /* I2C */
 #define CONFIG_SYS_I2C_TEGRA
 #define CONFIG_CMD_I2C
index f195f8a6eac36c0e3462fe4b5808d5151aba5f02..62bec9955e597e8f0b3fc4724fce9d50827c8730 100644 (file)
@@ -21,9 +21,6 @@
 
 #define CONFIG_MACH_TYPE               MACH_TYPE_VENTANA
 
-#define CONFIG_BOARD_EARLY_INIT_F
-#define CONFIG_BOARD_LATE_INIT         /* Make sure LCD init is complete */
-
 /* SD/MMC */
 #define CONFIG_MMC
 #define CONFIG_GENERIC_MMC
index e083cbd07f17753fbf734902e03b2607944667d0..94f151e9bea31b88a84666f2f367ef129ae8a45e 100644 (file)
@@ -22,8 +22,6 @@
 
 #define CONFIG_MACH_TYPE               MACH_TYPE_WHISTLER
 
-#define CONFIG_BOARD_EARLY_INIT_F
-
 /* I2C */
 #define CONFIG_SYS_I2C_TEGRA
 #define CONFIG_CMD_I2C