Merge branch 'master' of git://git.denx.de/u-boot-tegra
Conflicts: README Signed-off-by: Tom Rini <trini@konsulko.com>
This commit is contained in:
		
						commit
						b79dadf846
					
				
							
								
								
									
										119
									
								
								README
								
								
								
								
							
							
						
						
									
										119
									
								
								README
								
								
								
								
							|  | @ -690,6 +690,125 @@ The following options need to be configured: | ||||||
| 		exists, unlike the similar options in the Linux kernel. Do not | 		exists, unlike the similar options in the Linux kernel. Do not | ||||||
| 		set these options unless they apply! | 		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: | - Linux Kernel Interface: | ||||||
| 		CONFIG_CLOCKS_IN_MHZ | 		CONFIG_CLOCKS_IN_MHZ | ||||||
|  |  | ||||||
|  | @ -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 | ||||||
|  | } | ||||||
|  | @ -112,13 +112,20 @@ int armv7_init_nonsec(void) | ||||||
| 	for (i = 1; i <= itlinesnr; i++) | 	for (i = 1; i <= itlinesnr; i++) | ||||||
| 		writel((unsigned)-1, gic_dist_addr + GICD_IGROUPRn + 4 * 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 | #ifndef CONFIG_ARMV7_PSCI | ||||||
| 	smp_set_core_boot_addr((unsigned long)secure_ram_addr(_smp_pen), -1); | 	smp_set_core_boot_addr((unsigned long)secure_ram_addr(_smp_pen), -1); | ||||||
| 	smp_kick_all_cpus(); | 	smp_kick_all_cpus(); | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| 	/* call the non-sec switching code on this CPU also */ | 	/* call the non-sec switching code on this CPU also */ | ||||||
| 	relocate_secure_section(); |  | ||||||
| 	secure_ram_addr(_nonsec_init)(); | 	secure_ram_addr(_nonsec_init)(); | ||||||
| 	return 0; | 	return 0; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -67,6 +67,9 @@ reset: | ||||||
| 	msr	cpacr_el1, x0			/* Enable FP/SIMD */ | 	msr	cpacr_el1, x0			/* Enable FP/SIMD */ | ||||||
| 0: | 0: | ||||||
| 
 | 
 | ||||||
|  | 	/* Apply ARM core specific erratas */ | ||||||
|  | 	bl	apply_core_errata | ||||||
|  | 
 | ||||||
| 	/* | 	/* | ||||||
| 	 * Cache/BPB/TLB Invalidate | 	 * Cache/BPB/TLB Invalidate | ||||||
| 	 * i-cache is invalidated before enabled in icache_enable() | 	 * 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) | WEAK(lowlevel_init) | ||||||
| 	mov	x29, lr			/* Save LR */ | 	mov	x29, lr			/* Save LR */ | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -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; | ||||||
|  | @ -18,6 +18,10 @@ | ||||||
| 		sdhci0 = "/sdhci@78000600"; | 		sdhci0 = "/sdhci@78000600"; | ||||||
| 		sdhci1 = "/sdhci@78000400"; | 		sdhci1 = "/sdhci@78000400"; | ||||||
| 		sdhci2 = "/sdhci@78000000"; | 		sdhci2 = "/sdhci@78000000"; | ||||||
|  | 		spi0 = "/spi@7000d400"; | ||||||
|  | 		spi1 = "/spi@7000dc00"; | ||||||
|  | 		spi2 = "/spi@7000de00"; | ||||||
|  | 		spi3 = "/spi@7000da00"; | ||||||
| 		usb0 = "/usb@7d000000"; | 		usb0 = "/usb@7d000000"; | ||||||
| 		usb1 = "/usb@7d004000"; | 		usb1 = "/usb@7d004000"; | ||||||
| 		usb2 = "/usb@7d008000"; | 		usb2 = "/usb@7d008000"; | ||||||
|  | @ -243,13 +247,15 @@ | ||||||
| 	sdhci@78000000 { | 	sdhci@78000000 { | ||||||
| 		status = "okay"; | 		status = "okay"; | ||||||
| 		bus-width = <4>; | 		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 { | 	sdhci@78000400 { | ||||||
| 		status = "okay"; | 		status = "okay"; | ||||||
| 		bus-width = <8>; | 		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 { | 	sdhci@78000600 { | ||||||
|  | @ -262,12 +268,14 @@ | ||||||
| 	usb@7d000000 { | 	usb@7d000000 { | ||||||
| 		status = "okay"; | 		status = "okay"; | ||||||
| 		dr_mode = "peripheral"; | 		dr_mode = "peripheral"; | ||||||
|  | 		/* USBO1_EN */ | ||||||
| 		nvidia,vbus-gpio = <&gpio TEGRA_GPIO(T, 5) GPIO_ACTIVE_HIGH>; | 		nvidia,vbus-gpio = <&gpio TEGRA_GPIO(T, 5) GPIO_ACTIVE_HIGH>; | ||||||
| 	}; | 	}; | ||||||
| 
 | 
 | ||||||
| 	/* EHCI instance 1: USB2_DP/N -> USBH2_DP/N */ | 	/* EHCI instance 1: USB2_DP/N -> USBH2_DP/N */ | ||||||
| 	usb@7d004000 { | 	usb@7d004000 { | ||||||
| 		status = "okay"; | 		status = "okay"; | ||||||
|  | 		/* USBH_EN */ | ||||||
| 		nvidia,vbus-gpio = <&gpio TEGRA_GPIO(DD, 1) GPIO_ACTIVE_HIGH>; | 		nvidia,vbus-gpio = <&gpio TEGRA_GPIO(DD, 1) GPIO_ACTIVE_HIGH>; | ||||||
| 		phy_type = "utmi"; | 		phy_type = "utmi"; | ||||||
| 	}; | 	}; | ||||||
|  | @ -275,6 +283,7 @@ | ||||||
| 	/* EHCI instance 2: USB3_DP/N -> USBH3_DP/N */ | 	/* EHCI instance 2: USB3_DP/N -> USBH3_DP/N */ | ||||||
| 	usb@7d008000 { | 	usb@7d008000 { | ||||||
| 		status = "okay"; | 		status = "okay"; | ||||||
|  | 		/* USBH_EN */ | ||||||
| 		nvidia,vbus-gpio = <&gpio TEGRA_GPIO(DD, 1) GPIO_ACTIVE_HIGH>; | 		nvidia,vbus-gpio = <&gpio TEGRA_GPIO(DD, 1) GPIO_ACTIVE_HIGH>; | ||||||
| 	}; | 	}; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -64,7 +64,7 @@ | ||||||
| 	sdhci@78000200 { | 	sdhci@78000200 { | ||||||
| 		status = "okay"; | 		status = "okay"; | ||||||
| 		bus-width = <4>; | 		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 { | 	sdhci@78000600 { | ||||||
|  | @ -83,12 +83,14 @@ | ||||||
| 	usb@7d004000 { | 	usb@7d004000 { | ||||||
| 		status = "okay"; | 		status = "okay"; | ||||||
| 		phy_type = "utmi"; | 		phy_type = "utmi"; | ||||||
|  | 		/* VBUS_LAN */ | ||||||
| 		nvidia,vbus-gpio = <&gpio TEGRA_GPIO(DD, 2) GPIO_ACTIVE_HIGH>; | 		nvidia,vbus-gpio = <&gpio TEGRA_GPIO(DD, 2) GPIO_ACTIVE_HIGH>; | ||||||
| 	}; | 	}; | ||||||
| 
 | 
 | ||||||
| 	/* EHCI instance 2: USB3_DP/N -> USBH_P/N */ | 	/* EHCI instance 2: USB3_DP/N -> USBH_P/N */ | ||||||
| 	usb@7d008000 { | 	usb@7d008000 { | ||||||
| 		status = "okay"; | 		status = "okay"; | ||||||
|  | 		/* USBH_PEN */ | ||||||
| 		nvidia,vbus-gpio = <&gpio TEGRA_GPIO(W, 2) GPIO_ACTIVE_LOW>; | 		nvidia,vbus-gpio = <&gpio TEGRA_GPIO(W, 2) GPIO_ACTIVE_LOW>; | ||||||
| 	}; | 	}; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | @ -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 | ||||||
|  | @ -74,3 +74,7 @@ static inline void config_vpr(void) | ||||||
| { | { | ||||||
| } | } | ||||||
| #endif | #endif | ||||||
|  | 
 | ||||||
|  | #if defined(CONFIG_TEGRA_SUPPORT_NON_SECURE) | ||||||
|  | bool tegra_cpu_is_non_secure(void); | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | @ -23,39 +23,82 @@ enum pmux_tristate { | ||||||
| 	PMUX_TRI_TRISTATE = 1, | 	PMUX_TRI_TRISTATE = 1, | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| #ifdef TEGRA_PMX_HAS_PIN_IO_BIT_ETC | #ifdef TEGRA_PMX_PINS_HAVE_E_INPUT | ||||||
| enum pmux_pin_io { | enum pmux_pin_io { | ||||||
| 	PMUX_PIN_OUTPUT = 0, | 	PMUX_PIN_OUTPUT = 0, | ||||||
| 	PMUX_PIN_INPUT = 1, | 	PMUX_PIN_INPUT = 1, | ||||||
| 	PMUX_PIN_NONE, | 	PMUX_PIN_NONE, | ||||||
| }; | }; | ||||||
|  | #endif | ||||||
| 
 | 
 | ||||||
|  | #ifdef TEGRA_PMX_PINS_HAVE_LOCK | ||||||
| enum pmux_pin_lock { | enum pmux_pin_lock { | ||||||
| 	PMUX_PIN_LOCK_DEFAULT = 0, | 	PMUX_PIN_LOCK_DEFAULT = 0, | ||||||
| 	PMUX_PIN_LOCK_DISABLE, | 	PMUX_PIN_LOCK_DISABLE, | ||||||
| 	PMUX_PIN_LOCK_ENABLE, | 	PMUX_PIN_LOCK_ENABLE, | ||||||
| }; | }; | ||||||
|  | #endif | ||||||
| 
 | 
 | ||||||
|  | #ifdef TEGRA_PMX_PINS_HAVE_OD | ||||||
| enum pmux_pin_od { | enum pmux_pin_od { | ||||||
| 	PMUX_PIN_OD_DEFAULT = 0, | 	PMUX_PIN_OD_DEFAULT = 0, | ||||||
| 	PMUX_PIN_OD_DISABLE, | 	PMUX_PIN_OD_DISABLE, | ||||||
| 	PMUX_PIN_OD_ENABLE, | 	PMUX_PIN_OD_ENABLE, | ||||||
| }; | }; | ||||||
|  | #endif | ||||||
| 
 | 
 | ||||||
|  | #ifdef TEGRA_PMX_PINS_HAVE_IO_RESET | ||||||
| enum pmux_pin_ioreset { | enum pmux_pin_ioreset { | ||||||
| 	PMUX_PIN_IO_RESET_DEFAULT = 0, | 	PMUX_PIN_IO_RESET_DEFAULT = 0, | ||||||
| 	PMUX_PIN_IO_RESET_DISABLE, | 	PMUX_PIN_IO_RESET_DISABLE, | ||||||
| 	PMUX_PIN_IO_RESET_ENABLE, | 	PMUX_PIN_IO_RESET_ENABLE, | ||||||
| }; | }; | ||||||
|  | #endif | ||||||
| 
 | 
 | ||||||
| #ifdef TEGRA_PMX_HAS_RCV_SEL | #ifdef TEGRA_PMX_PINS_HAVE_RCV_SEL | ||||||
| enum pmux_pin_rcv_sel { | enum pmux_pin_rcv_sel { | ||||||
| 	PMUX_PIN_RCV_SEL_DEFAULT = 0, | 	PMUX_PIN_RCV_SEL_DEFAULT = 0, | ||||||
| 	PMUX_PIN_RCV_SEL_NORMAL, | 	PMUX_PIN_RCV_SEL_NORMAL, | ||||||
| 	PMUX_PIN_RCV_SEL_HIGH, | 	PMUX_PIN_RCV_SEL_HIGH, | ||||||
| }; | }; | ||||||
| #endif /* TEGRA_PMX_HAS_RCV_SEL */ | #endif | ||||||
| #endif /* TEGRA_PMX_HAS_PIN_IO_BIT_ETC */ | 
 | ||||||
|  | #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, |  * 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 func:8;		/* function to assign PMUX_FUNC_... */ | ||||||
| 	u32 pull:2;		/* pull up/down/normal PMUX_PULL_...*/ | 	u32 pull:2;		/* pull up/down/normal PMUX_PULL_...*/ | ||||||
| 	u32 tristate:2;		/* tristate or normal PMUX_TRI_...  */ | 	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_...     */ | 	u32 io:2;		/* input or output PMUX_PIN_...     */ | ||||||
|  | #endif | ||||||
|  | #ifdef TEGRA_PMX_PINS_HAVE_LOCK | ||||||
| 	u32 lock:2;		/* lock enable/disable PMUX_PIN...  */ | 	u32 lock:2;		/* lock enable/disable PMUX_PIN...  */ | ||||||
|  | #endif | ||||||
|  | #ifdef TEGRA_PMX_PINS_HAVE_OD | ||||||
| 	u32 od:2;		/* open-drain or push-pull driver   */ | 	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...   */ | 	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  */ | 	u32 rcv_sel:2;		/* select between High and Normal  */ | ||||||
| 				/* VIL/VIH receivers */ | 				/* VIL/VIH receivers */ | ||||||
| #endif | #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 | #endif | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| #if !defined(CONFIG_TEGRA20) && !defined(CONFIG_TEGRA30) | #ifdef TEGRA_PMX_SOC_HAS_IO_CLAMPING | ||||||
| /* Set the pinmux CLAMP_INPUTS_WHEN_TRISTATED bit */ | /* Set/clear the pinmux CLAMP_INPUTS_WHEN_TRISTATED bit */ | ||||||
| void pinmux_set_tristate_input_clamping(void); | void pinmux_set_tristate_input_clamping(void); | ||||||
|  | void pinmux_clear_tristate_input_clamping(void); | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| /* Set the mux function for a pin group */ | /* 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) */ | /* Set a pin group to normal (non tristate) */ | ||||||
| void pinmux_tristate_disable(enum pmux_pingrp pin); | 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 */ | /* Set a pin group as input or output */ | ||||||
| void pinmux_set_io(enum pmux_pingrp pin, enum pmux_pin_io io); | void pinmux_set_io(enum pmux_pingrp pin, enum pmux_pin_io io); | ||||||
| #endif | #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, | void pinmux_config_pingrp_table(const struct pmux_pingrp_config *config, | ||||||
| 				int len); | 				int len); | ||||||
| 
 | 
 | ||||||
| #ifdef TEGRA_PMX_HAS_DRVGRPS | #ifdef TEGRA_PMX_SOC_HAS_DRVGRPS | ||||||
| 
 | 
 | ||||||
| #define PMUX_SLWF_MIN	0 | #define PMUX_SLWF_MIN	0 | ||||||
| #define PMUX_SLWF_MAX	3 | #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_MAX	127 | ||||||
| #define PMUX_DRVDN_NONE	-1 | #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 |  * 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 slwr:3;		/* rising edge slew          */ | ||||||
| 	u32 drvup:8;		/* pull-up drive strength    */ | 	u32 drvup:8;		/* pull-up drive strength    */ | ||||||
| 	u32 drvdn:8;		/* pull-down drive strength  */ | 	u32 drvdn:8;		/* pull-down drive strength  */ | ||||||
|  | #ifdef TEGRA_PMX_GRPS_HAVE_LPMD | ||||||
| 	u32 lpmd:3;		/* low-power mode selection  */ | 	u32 lpmd:3;		/* low-power mode selection  */ | ||||||
|  | #endif | ||||||
|  | #ifdef TEGRA_PMX_GRPS_HAVE_SCHMT | ||||||
| 	u32 schmt:2;		/* schmidt enable            */ | 	u32 schmt:2;		/* schmidt enable            */ | ||||||
|  | #endif | ||||||
|  | #ifdef TEGRA_PMX_GRPS_HAVE_HSM | ||||||
| 	u32 hsm:2;		/* high-speed mode enable    */ | 	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, | void pinmux_config_drvgrp_table(const struct pmux_drvgrp_config *config, | ||||||
| 				int len); | 				int len); | ||||||
| 
 | 
 | ||||||
| #endif /* TEGRA_PMX_HAS_DRVGRPS */ | #endif /* TEGRA_PMX_SOC_HAS_DRVGRPS */ | ||||||
| 
 | 
 | ||||||
| struct pmux_pingrp_desc { | struct pmux_pingrp_desc { | ||||||
| 	u8 funcs[4]; | 	u8 funcs[4]; | ||||||
|  |  | ||||||
|  | @ -313,9 +313,17 @@ enum pmux_func { | ||||||
| 	PMUX_FUNC_COUNT, | 	PMUX_FUNC_COUNT, | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| #define TEGRA_PMX_HAS_PIN_IO_BIT_ETC | #define TEGRA_PMX_SOC_DRV_GROUP_BASE_REG 0x868 | ||||||
| #define TEGRA_PMX_HAS_RCV_SEL | #define TEGRA_PMX_SOC_HAS_IO_CLAMPING | ||||||
| #define TEGRA_PMX_HAS_DRVGRPS | #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> | #include <asm/arch-tegra/pinmux.h> | ||||||
| 
 | 
 | ||||||
| #endif /* _TEGRA114_PINMUX_H_ */ | #endif /* _TEGRA114_PINMUX_H_ */ | ||||||
|  |  | ||||||
|  | @ -335,9 +335,17 @@ enum pmux_func { | ||||||
| 	PMUX_FUNC_COUNT, | 	PMUX_FUNC_COUNT, | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| #define TEGRA_PMX_HAS_PIN_IO_BIT_ETC | #define TEGRA_PMX_SOC_DRV_GROUP_BASE_REG 0x868 | ||||||
| #define TEGRA_PMX_HAS_RCV_SEL | #define TEGRA_PMX_SOC_HAS_IO_CLAMPING | ||||||
| #define TEGRA_PMX_HAS_DRVGRPS | #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> | #include <asm/arch-tegra/pinmux.h> | ||||||
| 
 | 
 | ||||||
| #endif /* _TEGRA124_PINMUX_H_ */ | #endif /* _TEGRA124_PINMUX_H_ */ | ||||||
|  |  | ||||||
|  | @ -233,6 +233,7 @@ enum pmux_func { | ||||||
| 	PMUX_FUNC_COUNT, | 	PMUX_FUNC_COUNT, | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | #define TEGRA_PMX_SOC_DRV_GROUP_BASE_REG 0x868 | ||||||
| #include <asm/arch-tegra/pinmux.h> | #include <asm/arch-tegra/pinmux.h> | ||||||
| 
 | 
 | ||||||
| #endif /* _TEGRA20_PINMUX_H_ */ | #endif /* _TEGRA20_PINMUX_H_ */ | ||||||
|  |  | ||||||
|  | @ -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_ */ | ||||||
|  | @ -391,8 +391,15 @@ enum pmux_func { | ||||||
| 	PMUX_FUNC_COUNT, | 	PMUX_FUNC_COUNT, | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| #define TEGRA_PMX_HAS_PIN_IO_BIT_ETC | #define TEGRA_PMX_SOC_DRV_GROUP_BASE_REG 0x868 | ||||||
| #define TEGRA_PMX_HAS_DRVGRPS | #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> | #include <asm/arch-tegra/pinmux.h> | ||||||
| 
 | 
 | ||||||
| #endif /* _TEGRA30_PINMUX_H_ */ | #endif /* _TEGRA30_PINMUX_H_ */ | ||||||
|  |  | ||||||
|  | @ -73,6 +73,28 @@ lr	.req	x30 | ||||||
| 	b.eq	\el1_label | 	b.eq	\el1_label | ||||||
| .endm | .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, |  * Branch if current processor is a slave, | ||||||
|  * choose processor with all zero affinity value as the master. |  * choose processor with all zero affinity value as the master. | ||||||
|  |  | ||||||
|  | @ -137,10 +137,15 @@ void show_regs (struct pt_regs *regs) | ||||||
| 
 | 
 | ||||||
| 	flags = condition_codes (regs); | 	flags = condition_codes (regs); | ||||||
| 
 | 
 | ||||||
| 	printf ("pc : [<%08lx>]	   lr : [<%08lx>]\n" | 	printf("pc : [<%08lx>]	   lr : [<%08lx>]\n", | ||||||
| 		"sp : %08lx  ip : %08lx	 fp : %08lx\n", | 	       instruction_pointer(regs), regs->ARM_lr); | ||||||
| 		instruction_pointer (regs), | 	if (gd->flags & GD_FLG_RELOC) { | ||||||
| 		regs->ARM_lr, regs->ARM_sp, regs->ARM_ip, regs->ARM_fp); | 		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", | 	printf ("r10: %08lx  r9 : %08lx	 r8 : %08lx\n", | ||||||
| 		regs->ARM_r10, regs->ARM_r9, regs->ARM_r8); | 		regs->ARM_r10, regs->ARM_r9, regs->ARM_r8); | ||||||
| 	printf ("r7 : %08lx  r6 : %08lx	 r5 : %08lx  r4 : %08lx\n", | 	printf ("r7 : %08lx  r6 : %08lx	 r5 : %08lx  r4 : %08lx\n", | ||||||
|  |  | ||||||
|  | @ -5,6 +5,7 @@ choice | ||||||
| 
 | 
 | ||||||
| config TARGET_EDMINIV2 | config TARGET_EDMINIV2 | ||||||
| 	bool "LaCie Ethernet Disk mini V2" | 	bool "LaCie Ethernet Disk mini V2" | ||||||
|  | 	select SUPPORT_SPL | ||||||
| 
 | 
 | ||||||
| endchoice | endchoice | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -234,7 +234,9 @@ int arch_cpu_init(void) | ||||||
| 	/* Enable and invalidate L2 cache in write through mode */ | 	/* Enable and invalidate L2 cache in write through mode */ | ||||||
| 	invalidate_l2_cache(); | 	invalidate_l2_cache(); | ||||||
| 
 | 
 | ||||||
|  | #ifdef CONFIG_SPL_BUILD | ||||||
| 	orion5x_config_adr_windows(); | 	orion5x_config_adr_windows(); | ||||||
|  | #endif | ||||||
| 
 | 
 | ||||||
| 	return 0; | 	return 0; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -86,7 +86,7 @@ enum orion5x_cpu_attrib { | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| #if !defined (ORION5X_ADR_PCIE_IO_REMAP_LO) | #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 | #endif | ||||||
| 
 | 
 | ||||||
| #if !defined (ORION5X_ADR_PCIE_IO_REMAP_HI) | #if !defined (ORION5X_ADR_PCIE_IO_REMAP_HI) | ||||||
|  |  | ||||||
|  | @ -62,14 +62,16 @@ | ||||||
| /* | /* | ||||||
|  * Low-level init happens right after start.S has switched to SVC32, |  * Low-level init happens right after start.S has switched to SVC32, | ||||||
|  * flushed and disabled caches and disabled MMU. We're still running |  * 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 |  * from the boot chip select, so the first thing SPL should do is to | ||||||
|  * up RAM for us to relocate into. |  * set up the RAM to copy U-Boot into. | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| .globl lowlevel_init
 | .globl lowlevel_init
 | ||||||
| 
 | 
 | ||||||
| lowlevel_init: | lowlevel_init: | ||||||
| 
 | 
 | ||||||
|  | #ifdef CONFIG_SPL_BUILD | ||||||
|  | 
 | ||||||
| 	/* Use 'r4 as the base for internal register accesses */ | 	/* Use 'r4 as the base for internal register accesses */ | ||||||
| 	ldr	r4, =ORION5X_REGS_PHY_BASE | 	ldr	r4, =ORION5X_REGS_PHY_BASE | ||||||
| 
 | 
 | ||||||
|  | @ -273,5 +275,13 @@ lowlevel_init: | ||||||
| 	orr	r2, r2, r6 | 	orr	r2, r2, r6 | ||||||
| 	str	r2, [r3, #0x484] | 	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 */ | 	/* Return to U-boot via saved link register */ | ||||||
| 	mov	pc, lr | 	mov	pc, lr | ||||||
|  |  | ||||||
|  | @ -11,6 +11,7 @@ | ||||||
| #include <asm/arch/funcmux.h> | #include <asm/arch/funcmux.h> | ||||||
| #include <asm/arch/mc.h> | #include <asm/arch/mc.h> | ||||||
| #include <asm/arch/tegra.h> | #include <asm/arch/tegra.h> | ||||||
|  | #include <asm/arch-tegra/ap.h> | ||||||
| #include <asm/arch-tegra/board.h> | #include <asm/arch-tegra/board.h> | ||||||
| #include <asm/arch-tegra/pmc.h> | #include <asm/arch-tegra/pmc.h> | ||||||
| #include <asm/arch-tegra/sys_proto.h> | #include <asm/arch-tegra/sys_proto.h> | ||||||
|  | @ -28,27 +29,66 @@ enum { | ||||||
| 	UART_COUNT = 5, | 	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 */ | /* Read the RAM size directly from the memory controller */ | ||||||
| unsigned int query_sdram_size(void) | unsigned int query_sdram_size(void) | ||||||
| { | { | ||||||
| 	struct mc_ctlr *const mc = (struct mc_ctlr *)NV_PA_MC_BASE; | 	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) | #if defined(CONFIG_TEGRA20) | ||||||
| 	debug("mc->mc_emem_cfg (MEM_SIZE_KB) = 0x%08x\n", size_mb); | 	debug("mc->mc_emem_cfg (MEM_SIZE_KB) = 0x%08x\n", emem_cfg); | ||||||
| 	size_mb = get_ram_size((void *)PHYS_SDRAM_1, size_mb * 1024); | 	size_bytes = get_ram_size((void *)PHYS_SDRAM_1, emem_cfg * 1024); | ||||||
| #else | #else | ||||||
| 	debug("mc->mc_emem_cfg (MEM_SIZE_MB) = 0x%08x\n", size_mb); | 	debug("mc->mc_emem_cfg (MEM_SIZE_MB) = 0x%08x\n", emem_cfg); | ||||||
| 	size_mb = get_ram_size((void *)PHYS_SDRAM_1, size_mb * 1024 * 1024); | 	/*
 | ||||||
|  | 	 * 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 | #endif | ||||||
| 
 | 
 | ||||||
| #if defined(CONFIG_TEGRA30) || defined(CONFIG_TEGRA114) | #if defined(CONFIG_TEGRA30) || defined(CONFIG_TEGRA114) | ||||||
| 	/* External memory limited to 2047 MB due to IROM/HI-VEC */ | 	/* 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 | #endif | ||||||
| 
 | 
 | ||||||
| 	return size_mb; | 	return size_bytes; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| int dram_init(void) | int dram_init(void) | ||||||
|  |  | ||||||
|  | @ -20,6 +20,7 @@ | ||||||
| #include <asm/io.h> | #include <asm/io.h> | ||||||
| #include <asm/arch/clock.h> | #include <asm/arch/clock.h> | ||||||
| #include <asm/arch/tegra.h> | #include <asm/arch/tegra.h> | ||||||
|  | #include <asm/arch-tegra/ap.h> | ||||||
| #include <asm/arch-tegra/clk_rst.h> | #include <asm/arch-tegra/clk_rst.h> | ||||||
| #include <asm/arch-tegra/timer.h> | #include <asm/arch-tegra/timer.h> | ||||||
| #include <div64.h> | #include <div64.h> | ||||||
|  | @ -573,7 +574,10 @@ void clock_init(void) | ||||||
| 	debug("PLLX = %d\n", pll_rate[CLOCK_ID_XCPU]); | 	debug("PLLX = %d\n", pll_rate[CLOCK_ID_XCPU]); | ||||||
| 
 | 
 | ||||||
| 	/* Do any special system timer/TSC setup */ | 	/* 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) | static void set_avp_clock_source(u32 src) | ||||||
|  |  | ||||||
|  | @ -24,31 +24,59 @@ | ||||||
| #define pmux_pin_tristate_isvalid(tristate) \ | #define pmux_pin_tristate_isvalid(tristate) \ | ||||||
| 	(((tristate) >= PMUX_TRI_NORMAL) && ((tristate) <= PMUX_TRI_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 */ | /* return 1 if a pin_io_is in range */ | ||||||
| #define pmux_pin_io_isvalid(io) \ | #define pmux_pin_io_isvalid(io) \ | ||||||
| 	(((io) >= PMUX_PIN_OUTPUT) && ((io) <= PMUX_PIN_INPUT)) | 	(((io) >= PMUX_PIN_OUTPUT) && ((io) <= PMUX_PIN_INPUT)) | ||||||
|  | #endif | ||||||
| 
 | 
 | ||||||
|  | #ifdef TEGRA_PMX_PINS_HAVE_LOCK | ||||||
| /* return 1 if a pin_lock is in range */ | /* return 1 if a pin_lock is in range */ | ||||||
| #define pmux_pin_lock_isvalid(lock) \ | #define pmux_pin_lock_isvalid(lock) \ | ||||||
| 	(((lock) >= PMUX_PIN_LOCK_DISABLE) && ((lock) <= PMUX_PIN_LOCK_ENABLE)) | 	(((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 */ | /* return 1 if a pin_od is in range */ | ||||||
| #define pmux_pin_od_isvalid(od) \ | #define pmux_pin_od_isvalid(od) \ | ||||||
| 	(((od) >= PMUX_PIN_OD_DISABLE) && ((od) <= PMUX_PIN_OD_ENABLE)) | 	(((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 */ | /* return 1 if a pin_ioreset_is in range */ | ||||||
| #define pmux_pin_ioreset_isvalid(ioreset) \ | #define pmux_pin_ioreset_isvalid(ioreset) \ | ||||||
| 	(((ioreset) >= PMUX_PIN_IO_RESET_DISABLE) && \ | 	(((ioreset) >= PMUX_PIN_IO_RESET_DISABLE) && \ | ||||||
| 	 ((ioreset) <= PMUX_PIN_IO_RESET_ENABLE)) | 	 ((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 */ | /* return 1 if a pin_rcv_sel_is in range */ | ||||||
| #define pmux_pin_rcv_sel_isvalid(rcv_sel) \ | #define pmux_pin_rcv_sel_isvalid(rcv_sel) \ | ||||||
| 	(((rcv_sel) >= PMUX_PIN_RCV_SEL_NORMAL) && \ | 	(((rcv_sel) >= PMUX_PIN_RCV_SEL_NORMAL) && \ | ||||||
| 	 ((rcv_sel) <= PMUX_PIN_RCV_SEL_HIGH)) | 	 ((rcv_sel) <= PMUX_PIN_RCV_SEL_HIGH)) | ||||||
| #endif /* TEGRA_PMX_HAS_RCV_SEL */ | #endif | ||||||
| #endif /* TEGRA_PMX_HAS_PIN_IO_BIT_ETC */ | 
 | ||||||
|  | #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)) | #define _R(offset)	(u32 *)(NV_PA_APB_MISC_BASE + (offset)) | ||||||
| 
 | 
 | ||||||
|  | @ -78,15 +106,34 @@ | ||||||
| 
 | 
 | ||||||
| #endif /* CONFIG_TEGRA20 */ | #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 IO_SHIFT	5 | ||||||
| #define OD_SHIFT	6 | #define OD_SHIFT	6 | ||||||
| #define LOCK_SHIFT	7 | #define LOCK_SHIFT	7 | ||||||
| #define IO_RESET_SHIFT	8 | #define IO_RESET_SHIFT	8 | ||||||
| #define RCV_SEL_SHIFT	9 | #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 */ | /* This register/field only exists on Tegra114 and later */ | ||||||
| #define APB_MISC_PP_PINMUX_GLOBAL_0 0x40 | #define APB_MISC_PP_PINMUX_GLOBAL_0 0x40 | ||||||
| #define CLAMP_INPUTS_WHEN_TRISTATED 1 | #define CLAMP_INPUTS_WHEN_TRISTATED 1 | ||||||
|  | @ -94,11 +141,15 @@ | ||||||
| void pinmux_set_tristate_input_clamping(void) | void pinmux_set_tristate_input_clamping(void) | ||||||
| { | { | ||||||
| 	u32 *reg = _R(APB_MISC_PP_PINMUX_GLOBAL_0); | 	u32 *reg = _R(APB_MISC_PP_PINMUX_GLOBAL_0); | ||||||
| 	u32 val; |  | ||||||
| 
 | 
 | ||||||
| 	val = readl(reg); | 	setbits_le32(reg, CLAMP_INPUTS_WHEN_TRISTATED); | ||||||
| 	val |= CLAMP_INPUTS_WHEN_TRISTATED; | } | ||||||
| 	writel(val, reg); | 
 | ||||||
|  | void pinmux_clear_tristate_input_clamping(void) | ||||||
|  | { | ||||||
|  | 	u32 *reg = _R(APB_MISC_PP_PINMUX_GLOBAL_0); | ||||||
|  | 
 | ||||||
|  | 	clrbits_le32(reg, CLAMP_INPUTS_WHEN_TRISTATED); | ||||||
| } | } | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
|  | @ -176,7 +227,7 @@ void pinmux_tristate_disable(enum pmux_pingrp pin) | ||||||
| 	pinmux_set_tristate(pin, PMUX_TRI_NORMAL); | 	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) | void pinmux_set_io(enum pmux_pingrp pin, enum pmux_pin_io io) | ||||||
| { | { | ||||||
| 	u32 *reg = REG(pin); | 	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); | 		val &= ~(1 << IO_SHIFT); | ||||||
| 	writel(val, reg); | 	writel(val, reg); | ||||||
| } | } | ||||||
|  | #endif | ||||||
| 
 | 
 | ||||||
|  | #ifdef TEGRA_PMX_PINS_HAVE_LOCK | ||||||
| static void pinmux_set_lock(enum pmux_pingrp pin, enum pmux_pin_lock lock) | static void pinmux_set_lock(enum pmux_pingrp pin, enum pmux_pin_lock lock) | ||||||
| { | { | ||||||
| 	u32 *reg = REG(pin); | 	u32 *reg = REG(pin); | ||||||
|  | @ -221,7 +274,9 @@ static void pinmux_set_lock(enum pmux_pingrp pin, enum pmux_pin_lock lock) | ||||||
| 
 | 
 | ||||||
| 	return; | 	return; | ||||||
| } | } | ||||||
|  | #endif | ||||||
| 
 | 
 | ||||||
|  | #ifdef TEGRA_PMX_PINS_HAVE_OD | ||||||
| static void pinmux_set_od(enum pmux_pingrp pin, enum pmux_pin_od od) | static void pinmux_set_od(enum pmux_pingrp pin, enum pmux_pin_od od) | ||||||
| { | { | ||||||
| 	u32 *reg = REG(pin); | 	u32 *reg = REG(pin); | ||||||
|  | @ -243,7 +298,9 @@ static void pinmux_set_od(enum pmux_pingrp pin, enum pmux_pin_od od) | ||||||
| 
 | 
 | ||||||
| 	return; | 	return; | ||||||
| } | } | ||||||
|  | #endif | ||||||
| 
 | 
 | ||||||
|  | #ifdef TEGRA_PMX_PINS_HAVE_IO_RESET | ||||||
| static void pinmux_set_ioreset(enum pmux_pingrp pin, | static void pinmux_set_ioreset(enum pmux_pingrp pin, | ||||||
| 				enum pmux_pin_ioreset ioreset) | 				enum pmux_pin_ioreset ioreset) | ||||||
| { | { | ||||||
|  | @ -266,8 +323,9 @@ static void pinmux_set_ioreset(enum pmux_pingrp pin, | ||||||
| 
 | 
 | ||||||
| 	return; | 	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, | static void pinmux_set_rcv_sel(enum pmux_pingrp pin, | ||||||
| 				enum pmux_pin_rcv_sel rcv_sel) | 				enum pmux_pin_rcv_sel rcv_sel) | ||||||
| { | { | ||||||
|  | @ -290,8 +348,82 @@ static void pinmux_set_rcv_sel(enum pmux_pingrp pin, | ||||||
| 
 | 
 | ||||||
| 	return; | 	return; | ||||||
| } | } | ||||||
| #endif /* TEGRA_PMX_HAS_RCV_SEL */ | #endif | ||||||
| #endif /* TEGRA_PMX_HAS_PIN_IO_BIT_ETC */ | 
 | ||||||
|  | #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) | 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_func(pin, config->func); | ||||||
| 	pinmux_set_pullupdown(pin, config->pull); | 	pinmux_set_pullupdown(pin, config->pull); | ||||||
| 	pinmux_set_tristate(pin, config->tristate); | 	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); | 	pinmux_set_io(pin, config->io); | ||||||
|  | #endif | ||||||
|  | #ifdef TEGRA_PMX_PINS_HAVE_LOCK | ||||||
| 	pinmux_set_lock(pin, config->lock); | 	pinmux_set_lock(pin, config->lock); | ||||||
|  | #endif | ||||||
|  | #ifdef TEGRA_PMX_PINS_HAVE_OD | ||||||
| 	pinmux_set_od(pin, config->od); | 	pinmux_set_od(pin, config->od); | ||||||
|  | #endif | ||||||
|  | #ifdef TEGRA_PMX_PINS_HAVE_IO_RESET | ||||||
| 	pinmux_set_ioreset(pin, config->ioreset); | 	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); | 	pinmux_set_rcv_sel(pin, config->rcv_sel); | ||||||
| #endif | #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 | #endif | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -320,7 +467,7 @@ void pinmux_config_pingrp_table(const struct pmux_pingrp_config *config, | ||||||
| 		pinmux_config_pingrp(&config[i]); | 		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)) | #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) \ | #define pmux_drv_isvalid(drv) \ | ||||||
| 	(((drv) >= PMUX_DRVUP_MIN) && ((drv) <= PMUX_DRVUP_MAX)) | 	(((drv) >= PMUX_DRVUP_MIN) && ((drv) <= PMUX_DRVUP_MAX)) | ||||||
| 
 | 
 | ||||||
| #define pmux_lpmd_isvalid(lpm) \ | #ifdef TEGRA_PMX_GRPS_HAVE_HSM | ||||||
| 	(((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)) |  | ||||||
| 
 |  | ||||||
| #define HSM_SHIFT	2 | #define HSM_SHIFT	2 | ||||||
|  | #endif | ||||||
|  | #ifdef TEGRA_PMX_GRPS_HAVE_SCHMT | ||||||
| #define SCHMT_SHIFT	3 | #define SCHMT_SHIFT	3 | ||||||
|  | #endif | ||||||
|  | #ifdef TEGRA_PMX_GRPS_HAVE_LPMD | ||||||
| #define LPMD_SHIFT	4 | #define LPMD_SHIFT	4 | ||||||
| #define LPMD_MASK	(3 << LPMD_SHIFT) | #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_SHIFT	12 | ||||||
| #define DRVDN_MASK	(0x7F << DRVDN_SHIFT) | #define DRVDN_MASK	(0x7F << DRVDN_SHIFT) | ||||||
| #define DRVUP_SHIFT	20 | #define DRVUP_SHIFT	20 | ||||||
|  | @ -436,6 +595,7 @@ static void pinmux_set_drvdn(enum pmux_drvgrp grp, int drvdn) | ||||||
| 	return; | 	return; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | #ifdef TEGRA_PMX_GRPS_HAVE_LPMD | ||||||
| static void pinmux_set_lpmd(enum pmux_drvgrp grp, enum pmux_lpmd lpmd) | static void pinmux_set_lpmd(enum pmux_drvgrp grp, enum pmux_lpmd lpmd) | ||||||
| { | { | ||||||
| 	u32 *reg = DRV_REG(grp); | 	u32 *reg = DRV_REG(grp); | ||||||
|  | @ -456,7 +616,9 @@ static void pinmux_set_lpmd(enum pmux_drvgrp grp, enum pmux_lpmd lpmd) | ||||||
| 
 | 
 | ||||||
| 	return; | 	return; | ||||||
| } | } | ||||||
|  | #endif | ||||||
| 
 | 
 | ||||||
|  | #ifdef TEGRA_PMX_GRPS_HAVE_SCHMT | ||||||
| static void pinmux_set_schmt(enum pmux_drvgrp grp, enum pmux_schmt schmt) | static void pinmux_set_schmt(enum pmux_drvgrp grp, enum pmux_schmt schmt) | ||||||
| { | { | ||||||
| 	u32 *reg = DRV_REG(grp); | 	u32 *reg = DRV_REG(grp); | ||||||
|  | @ -479,7 +641,9 @@ static void pinmux_set_schmt(enum pmux_drvgrp grp, enum pmux_schmt schmt) | ||||||
| 
 | 
 | ||||||
| 	return; | 	return; | ||||||
| } | } | ||||||
|  | #endif | ||||||
| 
 | 
 | ||||||
|  | #ifdef TEGRA_PMX_GRPS_HAVE_HSM | ||||||
| static void pinmux_set_hsm(enum pmux_drvgrp grp, enum pmux_hsm hsm) | static void pinmux_set_hsm(enum pmux_drvgrp grp, enum pmux_hsm hsm) | ||||||
| { | { | ||||||
| 	u32 *reg = DRV_REG(grp); | 	u32 *reg = DRV_REG(grp); | ||||||
|  | @ -502,6 +666,7 @@ static void pinmux_set_hsm(enum pmux_drvgrp grp, enum pmux_hsm hsm) | ||||||
| 
 | 
 | ||||||
| 	return; | 	return; | ||||||
| } | } | ||||||
|  | #endif | ||||||
| 
 | 
 | ||||||
| static void pinmux_config_drvgrp(const struct pmux_drvgrp_config *config) | 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_drvdn_slwr(grp, config->slwr); | ||||||
| 	pinmux_set_drvup(grp, config->drvup); | 	pinmux_set_drvup(grp, config->drvup); | ||||||
| 	pinmux_set_drvdn(grp, config->drvdn); | 	pinmux_set_drvdn(grp, config->drvdn); | ||||||
|  | #ifdef TEGRA_PMX_GRPS_HAVE_LPMD | ||||||
| 	pinmux_set_lpmd(grp, config->lpmd); | 	pinmux_set_lpmd(grp, config->lpmd); | ||||||
|  | #endif | ||||||
|  | #ifdef TEGRA_PMX_GRPS_HAVE_SCHMT | ||||||
| 	pinmux_set_schmt(grp, config->schmt); | 	pinmux_set_schmt(grp, config->schmt); | ||||||
|  | #endif | ||||||
|  | #ifdef TEGRA_PMX_GRPS_HAVE_HSM | ||||||
| 	pinmux_set_hsm(grp, config->hsm); | 	pinmux_set_hsm(grp, config->hsm); | ||||||
|  | #endif | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void pinmux_config_drvgrp_table(const struct pmux_drvgrp_config *config, | void pinmux_config_drvgrp_table(const struct pmux_drvgrp_config *config, | ||||||
|  |  | ||||||
|  | @ -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 |  | ||||||
|  | @ -12,59 +12,11 @@ | ||||||
| #include <miiphy.h> | #include <miiphy.h> | ||||||
| #include <asm/arch/orion5x.h> | #include <asm/arch/orion5x.h> | ||||||
| #include "../common/common.h" | #include "../common/common.h" | ||||||
|  | #include <spl.h> | ||||||
|  | #include <ns16550.h> | ||||||
| 
 | 
 | ||||||
| DECLARE_GLOBAL_DATA_PTR; | 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) | int board_init(void) | ||||||
| { | { | ||||||
| 	/* arch number of board */ | 	/* arch number of board */ | ||||||
|  | @ -83,3 +35,21 @@ void reset_phy(void) | ||||||
| 	mv_phy_88e1116_init("egiga0", 8); | 	mv_phy_88e1116_init("egiga0", 8); | ||||||
| } | } | ||||||
| #endif /* CONFIG_RESET_PHY_R */ | #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 */ | ||||||
|  |  | ||||||
|  | @ -21,6 +21,7 @@ | ||||||
| #include <asm/arch/pwm.h> | #include <asm/arch/pwm.h> | ||||||
| #endif | #endif | ||||||
| #include <asm/arch/tegra.h> | #include <asm/arch/tegra.h> | ||||||
|  | #include <asm/arch-tegra/ap.h> | ||||||
| #include <asm/arch-tegra/board.h> | #include <asm/arch-tegra/board.h> | ||||||
| #include <asm/arch-tegra/clk_rst.h> | #include <asm/arch-tegra/clk_rst.h> | ||||||
| #include <asm/arch-tegra/pmc.h> | #include <asm/arch-tegra/pmc.h> | ||||||
|  | @ -179,6 +180,14 @@ int board_late_init(void) | ||||||
| #ifdef CONFIG_LCD | #ifdef CONFIG_LCD | ||||||
| 	/* Make sure we finish initing the LCD */ | 	/* Make sure we finish initing the LCD */ | ||||||
| 	tegra_lcd_check_next_stage(gd->fdt_blob, 1); | 	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 | #endif | ||||||
| 	return 0; | 	return 0; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -22,7 +22,7 @@ DECLARE_GLOBAL_DATA_PTR; | ||||||
|  */ |  */ | ||||||
| void pinmux_init(void) | void pinmux_init(void) | ||||||
| { | { | ||||||
| 	pinmux_set_tristate_input_clamping(); | 	pinmux_clear_tristate_input_clamping(); | ||||||
| 
 | 
 | ||||||
| 	gpio_config_table(jetson_tk1_gpio_inits, | 	gpio_config_table(jetson_tk1_gpio_inits, | ||||||
| 			  ARRAY_SIZE(jetson_tk1_gpio_inits)); | 			  ARRAY_SIZE(jetson_tk1_gpio_inits)); | ||||||
|  |  | ||||||
|  | @ -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+ |  * SPDX-License-Identifier: GPL-2.0+ | ||||||
|  */ |  */ | ||||||
|  | @ -15,77 +15,47 @@ | ||||||
| 
 | 
 | ||||||
| static const struct tegra_gpio_config jetson_tk1_gpio_inits[] = { | static const struct tegra_gpio_config jetson_tk1_gpio_inits[] = { | ||||||
| 	/*        gpio, init_val */ | 	/*        gpio, init_val */ | ||||||
| 	GPIO_INIT(C7,   IN), | 	GPIO_INIT(G0,   IN), | ||||||
| 	GPIO_INIT(G0,   OUT0), | 	GPIO_INIT(G1,   IN), | ||||||
| 	GPIO_INIT(G1,   OUT0), |  | ||||||
| 	GPIO_INIT(G2,   IN), | 	GPIO_INIT(G2,   IN), | ||||||
| 	GPIO_INIT(G3,   IN), | 	GPIO_INIT(G3,   IN), | ||||||
|  | 	GPIO_INIT(G4,   IN), | ||||||
| 	GPIO_INIT(H2,   OUT0), | 	GPIO_INIT(H2,   OUT0), | ||||||
| 	GPIO_INIT(H3,   OUT0), |  | ||||||
| 	GPIO_INIT(H4,   IN), | 	GPIO_INIT(H4,   IN), | ||||||
| 	GPIO_INIT(H5,   OUT0), | 	GPIO_INIT(H7,   IN), | ||||||
| 	GPIO_INIT(H6,   IN), |  | ||||||
| 	GPIO_INIT(H7,   OUT0), |  | ||||||
| 	GPIO_INIT(I0,   OUT0), | 	GPIO_INIT(I0,   OUT0), | ||||||
| 	GPIO_INIT(I2,   OUT0), | 	GPIO_INIT(I1,   IN), | ||||||
| 	GPIO_INIT(I4,   OUT0), |  | ||||||
| 	GPIO_INIT(I5,   IN), |  | ||||||
| 	GPIO_INIT(I6,   IN), | 	GPIO_INIT(I6,   IN), | ||||||
| 	GPIO_INIT(J0,   IN), | 	GPIO_INIT(J0,   IN), | ||||||
| 	GPIO_INIT(J2,   IN), |  | ||||||
| 	GPIO_INIT(K1,   OUT0), | 	GPIO_INIT(K1,   OUT0), | ||||||
| 	GPIO_INIT(K2,   IN), | 	GPIO_INIT(K2,   IN), | ||||||
| 	GPIO_INIT(K3,   IN), |  | ||||||
| 	GPIO_INIT(K4,   OUT0), | 	GPIO_INIT(K4,   OUT0), | ||||||
| 	GPIO_INIT(K5,   OUT0), |  | ||||||
| 	GPIO_INIT(K6,   OUT0), | 	GPIO_INIT(K6,   OUT0), | ||||||
| 	GPIO_INIT(N7,   IN), | 	GPIO_INIT(N7,   IN), | ||||||
| 	GPIO_INIT(O0,   IN), |  | ||||||
| 	GPIO_INIT(O1,   IN), | 	GPIO_INIT(O1,   IN), | ||||||
| 	GPIO_INIT(O2,   IN), |  | ||||||
| 	GPIO_INIT(O3,   IN), |  | ||||||
| 	GPIO_INIT(O4,   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(P2,   OUT0), | ||||||
| 	GPIO_INIT(Q0,   IN), | 	GPIO_INIT(Q0,   IN), | ||||||
| 	GPIO_INIT(Q1,   IN), | 	GPIO_INIT(Q3,   IN), | ||||||
| 	GPIO_INIT(Q2,   IN), |  | ||||||
| 	GPIO_INIT(Q5,   IN), | 	GPIO_INIT(Q5,   IN), | ||||||
| 	GPIO_INIT(Q6,   IN), |  | ||||||
| 	GPIO_INIT(Q7,   IN), |  | ||||||
| 	GPIO_INIT(R0,   OUT0), | 	GPIO_INIT(R0,   OUT0), | ||||||
| 	GPIO_INIT(R1,   OUT0), |  | ||||||
| 	GPIO_INIT(R2,   OUT0), | 	GPIO_INIT(R2,   OUT0), | ||||||
| 	GPIO_INIT(R4,   IN), | 	GPIO_INIT(R4,   IN), | ||||||
| 	GPIO_INIT(R5,   OUT0), |  | ||||||
| 	GPIO_INIT(R7,   IN), | 	GPIO_INIT(R7,   IN), | ||||||
| 	GPIO_INIT(S0,   IN), | 	GPIO_INIT(S7,   IN), | ||||||
| 	GPIO_INIT(S3,   OUT0), |  | ||||||
| 	GPIO_INIT(S4,   OUT0), |  | ||||||
| 	GPIO_INIT(S5,   IN), |  | ||||||
| 	GPIO_INIT(S6,   OUT0), |  | ||||||
| 	GPIO_INIT(T0,   OUT0), | 	GPIO_INIT(T0,   OUT0), | ||||||
| 	GPIO_INIT(T1,   OUT0), | 	GPIO_INIT(T1,   IN), | ||||||
| 	GPIO_INIT(U0,   OUT0), | 	GPIO_INIT(U0,   IN), | ||||||
| 	GPIO_INIT(U1,   IN), | 	GPIO_INIT(U1,   IN), | ||||||
| 	GPIO_INIT(U2,   IN), | 	GPIO_INIT(U2,   IN), | ||||||
| 	GPIO_INIT(U3,   OUT0), | 	GPIO_INIT(U3,   IN), | ||||||
| 	GPIO_INIT(U4,   OUT0), | 	GPIO_INIT(U4,   IN), | ||||||
| 	GPIO_INIT(U5,   IN), | 	GPIO_INIT(U5,   IN), | ||||||
| 	GPIO_INIT(U6,   IN), | 	GPIO_INIT(U6,   IN), | ||||||
| 	GPIO_INIT(V0,   IN), | 	GPIO_INIT(V0,   IN), | ||||||
| 	GPIO_INIT(V1,   IN), | 	GPIO_INIT(V1,   IN), | ||||||
| 	GPIO_INIT(W2,   IN), | 	GPIO_INIT(X1,   IN), | ||||||
| 	GPIO_INIT(W3,   IN), | 	GPIO_INIT(X4,   IN), | ||||||
| 	GPIO_INIT(X1,   OUT0), |  | ||||||
| 	GPIO_INIT(X3,   IN), |  | ||||||
| 	GPIO_INIT(X4,   OUT0), |  | ||||||
| 	GPIO_INIT(X5,   IN), |  | ||||||
| 	GPIO_INIT(X6,   IN), |  | ||||||
| 	GPIO_INIT(X7,   OUT0), | 	GPIO_INIT(X7,   OUT0), | ||||||
| 	GPIO_INIT(BB3,  OUT0), | 	GPIO_INIT(BB3,  OUT0), | ||||||
| 	GPIO_INIT(BB5,  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(BB7,  OUT0), | ||||||
| 	GPIO_INIT(CC1,  IN), | 	GPIO_INIT(CC1,  IN), | ||||||
| 	GPIO_INIT(CC2,  IN), | 	GPIO_INIT(CC2,  IN), | ||||||
| 	GPIO_INIT(CC5,  OUT0), | 	GPIO_INIT(EE2,  OUT1), | ||||||
| 	GPIO_INIT(EE1,  OUT0), |  | ||||||
| 	GPIO_INIT(FF1,  OUT0), |  | ||||||
| 	GPIO_INIT(FF2,  IN), |  | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| #define PINCFG(_pingrp, _mux, _pull, _tri, _io, _od, _rcv_sel)	\ | #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[] = { | static const struct pmux_pingrp_config jetson_tk1_pingrps[] = { | ||||||
| 	/*     pingrp,                 mux,          pull,   tri,      e_input, od,      rcv_sel */ | 	/*     pingrp,                 mux,          pull,   tri,      e_input, od,      rcv_sel */ | ||||||
| 	PINCFG(CLK_32K_OUT_PA0,        SOC,          UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT), | 	PINCFG(CLK_32K_OUT_PA0,        SOC,          UP,     TRISTATE, INPUT,   DEFAULT, DEFAULT), | ||||||
| 	PINCFG(UART3_CTS_N_PA1,        UARTC,        UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT), | 	PINCFG(UART3_CTS_N_PA1,        GMI,          DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(DAP2_FS_PA2,            I2S1,         NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT), | 	PINCFG(DAP2_FS_PA2,            I2S1,         NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(DAP2_SCLK_PA3,          I2S1,         NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT), | 	PINCFG(DAP2_SCLK_PA3,          I2S1,         NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(DAP2_DIN_PA4,           I2S1,         NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT), | 	PINCFG(DAP2_DIN_PA4,           I2S1,         NORMAL, TRISTATE, INPUT,   DEFAULT, DEFAULT), | ||||||
| 	PINCFG(DAP2_DOUT_PA5,          I2S1,         NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT), | 	PINCFG(DAP2_DOUT_PA5,          I2S1,         NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(SDMMC3_CLK_PA6,         SDMMC3,       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(SDMMC3_CMD_PA7,         SDMMC3,       UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT), | ||||||
| 	PINCFG(PB0,                    UARTD,        UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT), | 	PINCFG(PB0,                    UARTD,        UP,     TRISTATE, INPUT,   DEFAULT, DEFAULT), | ||||||
| 	PINCFG(PB1,                    UARTD,        UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT), | 	PINCFG(PB1,                    UARTD,        UP,     TRISTATE, INPUT,   DEFAULT, DEFAULT), | ||||||
| 	PINCFG(SDMMC3_DAT3_PB4,        SDMMC3,       UP,     NORMAL,   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_DAT2_PB5,        SDMMC3,       UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT), | ||||||
| 	PINCFG(SDMMC3_DAT1_PB6,        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(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_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_SCL_PC4,       I2C1,         NORMAL, NORMAL,   INPUT,   ENABLE,  DEFAULT), | ||||||
| 	PINCFG(GEN1_I2C_SDA_PC5,       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(PC7,                    RSVD1,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(PG0,                    DEFAULT,      NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT), | 	PINCFG(PG0,                    DEFAULT,      NORMAL, TRISTATE, INPUT,   DEFAULT, DEFAULT), | ||||||
| 	PINCFG(PG1,                    DEFAULT,      NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT), | 	PINCFG(PG1,                    DEFAULT,      NORMAL, TRISTATE, INPUT,   DEFAULT, DEFAULT), | ||||||
| 	PINCFG(PG2,                    DEFAULT,      DOWN,   NORMAL,   INPUT,   DEFAULT, DEFAULT), | 	PINCFG(PG2,                    DEFAULT,      NORMAL, TRISTATE, INPUT,   DEFAULT, DEFAULT), | ||||||
| 	PINCFG(PG3,                    DEFAULT,      DOWN,   NORMAL,   INPUT,   DEFAULT, DEFAULT), | 	PINCFG(PG3,                    DEFAULT,      NORMAL, TRISTATE, INPUT,   DEFAULT, DEFAULT), | ||||||
| 	PINCFG(PG4,                    SPI4,         NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT), | 	PINCFG(PG4,                    DEFAULT,      NORMAL, TRISTATE, INPUT,   DEFAULT, DEFAULT), | ||||||
| 	PINCFG(PG5,                    SPI4,         NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT), | 	PINCFG(PG5,                    SPI4,         NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(PG6,                    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(PH0,                    GMI,          DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(PH1,                    PWM1,         NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT), | 	PINCFG(PH1,                    PWM1,         NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(PH2,                    DEFAULT,      NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT), | 	PINCFG(PH2,                    DEFAULT,      NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(PH3,                    DEFAULT,      NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT), | 	PINCFG(PH3,                    GMI,          DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(PH4,                    DEFAULT,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT), | 	PINCFG(PH4,                    DEFAULT,      NORMAL, TRISTATE, INPUT,   DEFAULT, DEFAULT), | ||||||
| 	PINCFG(PH5,                    DEFAULT,      NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT), | 	PINCFG(PH5,                    RSVD2,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(PH6,                    DEFAULT,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT), | 	PINCFG(PH6,                    GMI,          DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(PH7,                    DEFAULT,      NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT), | 	PINCFG(PH7,                    DEFAULT,      NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT), | ||||||
| 	PINCFG(PI0,                    DEFAULT,      NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT), | 	PINCFG(PI0,                    DEFAULT,      NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(PI1,                    RSVD1,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT), | 	PINCFG(PI1,                    DEFAULT,      NORMAL, TRISTATE, INPUT,   DEFAULT, DEFAULT), | ||||||
| 	PINCFG(PI2,                    DEFAULT,      NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT), | 	PINCFG(PI2,                    RSVD4,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(PI3,                    SPI4,         NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT), | 	PINCFG(PI3,                    SPI4,         NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(PI4,                    DEFAULT,      NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT), | 	PINCFG(PI4,                    GMI,          DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(PI5,                    DEFAULT,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT), | 	PINCFG(PI5,                    RSVD2,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(PI6,                    DEFAULT,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT), | 	PINCFG(PI6,                    DEFAULT,      NORMAL, TRISTATE, INPUT,   DEFAULT, DEFAULT), | ||||||
| 	PINCFG(PI7,                    RSVD1,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT), | 	PINCFG(PI7,                    RSVD1,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(PJ0,                    DEFAULT,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT), | 	PINCFG(PJ0,                    DEFAULT,      NORMAL, TRISTATE, INPUT,   DEFAULT, DEFAULT), | ||||||
| 	PINCFG(PJ2,                    DEFAULT,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT), | 	PINCFG(PJ2,                    RSVD1,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(UART2_CTS_N_PJ5,        UARTB,        UP,     NORMAL,   INPUT,   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(UART2_RTS_N_PJ6,        UARTB,        NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(PJ7,                    UARTD,        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(PK1,                    DEFAULT,      NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(PK2,                    DEFAULT,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT), | 	PINCFG(PK2,                    DEFAULT,      NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT), | ||||||
| 	PINCFG(PK3,                    DEFAULT,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT), | 	PINCFG(PK3,                    GMI,          DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(PK4,                    DEFAULT,      NORMAL, NORMAL,   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(SPDIF_IN_PK6,           DEFAULT,      NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(PK7,                    UARTD,        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_FS_PN0,            RSVD4,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(DAP1_DIN_PN1,           I2S0,         DOWN,   NORMAL,   INPUT,   DEFAULT, DEFAULT), | 	PINCFG(DAP1_DIN_PN1,           RSVD4,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(DAP1_DOUT_PN2,          SATA,         NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT), | 	PINCFG(DAP1_DOUT_PN2,          SATA,         NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(DAP1_SCLK_PN3,          I2S0,         DOWN,   NORMAL,   INPUT,   DEFAULT, DEFAULT), | 	PINCFG(DAP1_SCLK_PN3,          RSVD4,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(USB_VBUS_EN0_PN4,       USB,          UP,     NORMAL,   INPUT,   ENABLE,  DEFAULT), | 	PINCFG(USB_VBUS_EN0_PN4,       USB,          NORMAL, NORMAL,   INPUT,   DISABLE, DEFAULT), | ||||||
| 	PINCFG(USB_VBUS_EN1_PN5,       USB,          UP,     NORMAL,   INPUT,   ENABLE,  DEFAULT), | 	PINCFG(USB_VBUS_EN1_PN5,       USB,          NORMAL, NORMAL,   INPUT,   DISABLE, DEFAULT), | ||||||
| 	PINCFG(HDMI_INT_PN7,           DEFAULT,      DOWN,   NORMAL,   INPUT,   DEFAULT, NORMAL), | 	PINCFG(HDMI_INT_PN7,           DEFAULT,      DOWN,   TRISTATE, INPUT,   DEFAULT, NORMAL), | ||||||
| 	PINCFG(ULPI_DATA7_PO0,         DEFAULT,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT), | 	PINCFG(ULPI_DATA7_PO0,         ULPI,         DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(ULPI_DATA0_PO1,         DEFAULT,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT), | 	PINCFG(ULPI_DATA0_PO1,         DEFAULT,      NORMAL, TRISTATE, INPUT,   DEFAULT, DEFAULT), | ||||||
| 	PINCFG(ULPI_DATA1_PO2,         DEFAULT,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT), | 	PINCFG(ULPI_DATA1_PO2,         ULPI,         DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(ULPI_DATA2_PO3,         DEFAULT,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT), | 	PINCFG(ULPI_DATA2_PO3,         ULPI,         DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(ULPI_DATA3_PO4,         DEFAULT,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT), | 	PINCFG(ULPI_DATA3_PO4,         DEFAULT,      NORMAL, TRISTATE, INPUT,   DEFAULT, DEFAULT), | ||||||
| 	PINCFG(ULPI_DATA4_PO5,         DEFAULT,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT), | 	PINCFG(ULPI_DATA4_PO5,         ULPI,         DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(ULPI_DATA5_PO6,         DEFAULT,      NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT), | 	PINCFG(ULPI_DATA5_PO6,         ULPI,         DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(ULPI_DATA6_PO7,         DEFAULT,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT), | 	PINCFG(ULPI_DATA6_PO7,         ULPI,         DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(DAP3_FS_PP0,            DEFAULT,      NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT), | 	PINCFG(DAP3_FS_PP0,            I2S2,         DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(DAP3_DIN_PP1,           DEFAULT,      NORMAL, NORMAL,   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_DOUT_PP2,          DEFAULT,      NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(DAP3_SCLK_PP3,          RSVD3,        DOWN,   TRISTATE, 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_FS_PP4,            RSVD4,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(DAP4_DIN_PP5,           I2S3,         DOWN,   NORMAL,   INPUT,   DEFAULT, DEFAULT), | 	PINCFG(DAP4_DIN_PP5,           RSVD3,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(DAP4_DOUT_PP6,          I2S3,         DOWN,   NORMAL,   INPUT,   DEFAULT, DEFAULT), | 	PINCFG(DAP4_DOUT_PP6,          RSVD4,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(DAP4_SCLK_PP7,          I2S3,         DOWN,   NORMAL,   INPUT,   DEFAULT, DEFAULT), | 	PINCFG(DAP4_SCLK_PP7,          RSVD3,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(KB_COL0_PQ0,            DEFAULT,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT), | 	PINCFG(KB_COL0_PQ0,            DEFAULT,      UP,     TRISTATE, INPUT,   DEFAULT, DEFAULT), | ||||||
| 	PINCFG(KB_COL1_PQ1,            DEFAULT,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT), | 	PINCFG(KB_COL1_PQ1,            RSVD2,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(KB_COL2_PQ2,            DEFAULT,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT), | 	PINCFG(KB_COL2_PQ2,            RSVD2,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(KB_COL3_PQ3,            KBC,          DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT), | 	PINCFG(KB_COL3_PQ3,            DEFAULT,      NORMAL, TRISTATE, INPUT,   DEFAULT, DEFAULT), | ||||||
| 	PINCFG(KB_COL4_PQ4,            SDMMC3,       UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT), | 	PINCFG(KB_COL4_PQ4,            SDMMC3,       UP,     TRISTATE, INPUT,   DEFAULT, DEFAULT), | ||||||
| 	PINCFG(KB_COL5_PQ5,            DEFAULT,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT), | 	PINCFG(KB_COL5_PQ5,            DEFAULT,      NORMAL, TRISTATE, INPUT,   DEFAULT, DEFAULT), | ||||||
| 	PINCFG(KB_COL6_PQ6,            DEFAULT,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT), | 	PINCFG(KB_COL6_PQ6,            RSVD2,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(KB_COL7_PQ7,            DEFAULT,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT), | 	PINCFG(KB_COL7_PQ7,            RSVD2,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(KB_ROW0_PR0,            DEFAULT,      NORMAL, NORMAL,   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_ROW2_PR2,            DEFAULT,      NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(KB_ROW3_PR3,            SYS,          NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT), | 	PINCFG(KB_ROW3_PR3,            KBC,          DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(KB_ROW4_PR4,            DEFAULT,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT), | 	PINCFG(KB_ROW4_PR4,            DEFAULT,      NORMAL, TRISTATE, INPUT,   DEFAULT, DEFAULT), | ||||||
| 	PINCFG(KB_ROW5_PR5,            DEFAULT,      NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT), | 	PINCFG(KB_ROW5_PR5,            RSVD3,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(KB_ROW6_PR6,            DISPLAYA_ALT, DOWN,   NORMAL,   INPUT,   DEFAULT, DEFAULT), | 	PINCFG(KB_ROW6_PR6,            DISPLAYA_ALT, NORMAL, TRISTATE, INPUT,   DEFAULT, DEFAULT), | ||||||
| 	PINCFG(KB_ROW7_PR7,            DEFAULT,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT), | 	PINCFG(KB_ROW7_PR7,            DEFAULT,      NORMAL, TRISTATE, INPUT,   DEFAULT, DEFAULT), | ||||||
| 	PINCFG(KB_ROW8_PS0,            DEFAULT,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT), | 	PINCFG(KB_ROW8_PS0,            RSVD2,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(KB_ROW9_PS1,            RSVD2,        NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT), | 	PINCFG(KB_ROW9_PS1,            UARTA,        NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(KB_ROW10_PS2,           RSVD2,        UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT), | 	PINCFG(KB_ROW10_PS2,           UARTA,        UP,     TRISTATE, INPUT,   DEFAULT, DEFAULT), | ||||||
| 	PINCFG(KB_ROW11_PS3,           DEFAULT,      NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT), | 	PINCFG(KB_ROW11_PS3,           RSVD2,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(KB_ROW12_PS4,           DEFAULT,      NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT), | 	PINCFG(KB_ROW12_PS4,           RSVD2,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(KB_ROW13_PS5,           DEFAULT,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT), | 	PINCFG(KB_ROW13_PS5,           RSVD2,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(KB_ROW14_PS6,           DEFAULT,      NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT), | 	PINCFG(KB_ROW14_PS6,           RSVD2,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(KB_ROW15_PS7,           SOC,          UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT), | 	PINCFG(KB_ROW15_PS7,           DEFAULT,      NORMAL, TRISTATE, INPUT,   DEFAULT, DEFAULT), | ||||||
| 	PINCFG(KB_ROW16_PT0,           DEFAULT,      NORMAL, NORMAL,   OUTPUT,  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_SCL_PT5,       I2C2,         NORMAL, NORMAL,   INPUT,   ENABLE,  DEFAULT), | ||||||
| 	PINCFG(GEN2_I2C_SDA_PT6,       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(SDMMC4_CMD_PT7,         SDMMC4,       UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT), | ||||||
| 	PINCFG(PU0,                    DEFAULT,      NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT), | 	PINCFG(PU0,                    DEFAULT,      NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT), | ||||||
| 	PINCFG(PU1,                    DEFAULT,      DOWN,   NORMAL,   INPUT,   DEFAULT, DEFAULT), | 	PINCFG(PU1,                    DEFAULT,      NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT), | ||||||
| 	PINCFG(PU2,                    DEFAULT,      DOWN,   NORMAL,   INPUT,   DEFAULT, DEFAULT), | 	PINCFG(PU2,                    DEFAULT,      NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT), | ||||||
| 	PINCFG(PU3,                    DEFAULT,      NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT), | 	PINCFG(PU3,                    DEFAULT,      NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT), | ||||||
| 	PINCFG(PU4,                    DEFAULT,      NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT), | 	PINCFG(PU4,                    DEFAULT,      NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT), | ||||||
| 	PINCFG(PU5,                    DEFAULT,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT), | 	PINCFG(PU5,                    DEFAULT,      NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT), | ||||||
| 	PINCFG(PU6,                    DEFAULT,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT), | 	PINCFG(PU6,                    DEFAULT,      NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT), | ||||||
| 	PINCFG(PV0,                    DEFAULT,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT), | 	PINCFG(PV0,                    DEFAULT,      NORMAL, TRISTATE, INPUT,   DEFAULT, DEFAULT), | ||||||
| 	PINCFG(PV1,                    DEFAULT,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT), | 	PINCFG(PV1,                    DEFAULT,      NORMAL, TRISTATE, INPUT,   DEFAULT, DEFAULT), | ||||||
| 	PINCFG(SDMMC3_CD_N_PV2,        SDMMC3,       UP,     NORMAL,   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(SDMMC1_WP_N_PV3,        SDMMC1,       DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(DDC_SCL_PV4,            I2C4,         NORMAL, NORMAL,   INPUT,   DEFAULT, NORMAL), | 	PINCFG(DDC_SCL_PV4,            I2C4,         NORMAL, NORMAL,   INPUT,   DEFAULT, NORMAL), | ||||||
| 	PINCFG(DDC_SDA_PV5,            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_W2_AUD_PW2,        RSVD2,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(GPIO_W3_AUD_PW3,        DEFAULT,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT), | 	PINCFG(GPIO_W3_AUD_PW3,        SPI6,         DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(DAP_MCLK1_PW4,          EXTPERIPH1,   NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT), | 	PINCFG(DAP_MCLK1_PW4,          EXTPERIPH1,   NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(CLK2_OUT_PW5,           EXTPERIPH2,   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_TXD_PW6,          RSVD2,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(UART3_RXD_PW7,          UARTC,        UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT), | 	PINCFG(UART3_RXD_PW7,          RSVD2,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(DVFS_PWM_PX0,           CLDVFS,       NORMAL, NORMAL,   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(DVFS_CLK_PX2,           CLDVFS,       NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(GPIO_X3_AUD_PX3,        DEFAULT,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT), | 	PINCFG(GPIO_X3_AUD_PX3,        RSVD4,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(GPIO_X4_AUD_PX4,        DEFAULT,      NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT), | 	PINCFG(GPIO_X4_AUD_PX4,        DEFAULT,      NORMAL, TRISTATE, INPUT,   DEFAULT, DEFAULT), | ||||||
| 	PINCFG(GPIO_X5_AUD_PX5,        DEFAULT,      UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT), | 	PINCFG(GPIO_X5_AUD_PX5,        RSVD4,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(GPIO_X6_AUD_PX6,        DEFAULT,      UP,     NORMAL,   INPUT,   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(GPIO_X7_AUD_PX7,        DEFAULT,      NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(ULPI_CLK_PY0,           SPI1,         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_NXT_PY2,           SPI1,         NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(ULPI_STP_PY3,           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_DAT3_PY4,        SDMMC1,       DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(SDMMC1_DAT2_PY5,        SDMMC1,       UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT), | 	PINCFG(SDMMC1_DAT2_PY5,        SDMMC1,       DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(SDMMC1_DAT1_PY6,        SDMMC1,       UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT), | 	PINCFG(SDMMC1_DAT1_PY6,        SDMMC1,       DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(SDMMC1_DAT0_PY7,        SDMMC1,       UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT), | 	PINCFG(SDMMC1_DAT0_PY7,        RSVD2,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(SDMMC1_CLK_PZ0,         SDMMC1,       NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT), | 	PINCFG(SDMMC1_CLK_PZ0,         RSVD3,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(SDMMC1_CMD_PZ1,         SDMMC1,       UP,     NORMAL,   INPUT,   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_SCL_PZ6,        I2CPWR,       NORMAL, NORMAL,   INPUT,   ENABLE,  DEFAULT), | ||||||
| 	PINCFG(PWR_I2C_SDA_PZ7,        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), | 	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(PBB6,                   DEFAULT,      NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(PBB7,                   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(CAM_MCLK_PCC0,          VI_ALT3,      NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(PCC1,                   DEFAULT,      DOWN,   NORMAL,   INPUT,   DEFAULT, DEFAULT), | 	PINCFG(PCC1,                   DEFAULT,      NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT), | ||||||
| 	PINCFG(PCC2,                   DEFAULT,      DOWN,   NORMAL,   INPUT,   DEFAULT, DEFAULT), | 	PINCFG(PCC2,                   DEFAULT,      NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT), | ||||||
| 	PINCFG(SDMMC4_CLK_PCC4,        SDMMC4,       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_RST_N_PDD1,      PE0,          NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(PEX_L0_CLKREQ_N_PDD2,   PE0,          UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT), | 	PINCFG(PEX_L0_CLKREQ_N_PDD2,   PE0,          NORMAL, TRISTATE, INPUT,   DEFAULT, DEFAULT), | ||||||
| 	PINCFG(PEX_WAKE_N_PDD3,        PE,           UP,     NORMAL,   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_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_OUT_PEE0,          EXTPERIPH3,   NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(CLK3_REQ_PEE1,          DEFAULT,      NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT), | 	PINCFG(CLK3_REQ_PEE1,          RSVD2,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(DAP_MCLK1_REQ_PEE2,     SATA,         NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT), | 	PINCFG(DAP_MCLK1_REQ_PEE2,     DEFAULT,      NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(HDMI_CEC_PEE3,          CEC,          NORMAL, NORMAL,   INPUT,   ENABLE,  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_OUT_PEE4, SDMMC3,       UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT), | ||||||
| 	PINCFG(SDMMC3_CLK_LB_IN_PEE5,  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(DP_HPD_PFF0,            DP,           NORMAL, TRISTATE, INPUT,   DEFAULT, DEFAULT), | ||||||
| 	PINCFG(USB_VBUS_EN2_PFF1,      DEFAULT,      NORMAL, NORMAL,   OUTPUT,  DISABLE, DEFAULT), | 	PINCFG(USB_VBUS_EN2_PFF1,      RSVD2,        DOWN,   TRISTATE, OUTPUT,  DISABLE, DEFAULT), | ||||||
| 	PINCFG(PFF2,                   DEFAULT,      UP,     NORMAL,   INPUT,   DISABLE, DEFAULT), | 	PINCFG(PFF2,                   RSVD2,        DOWN,   TRISTATE, OUTPUT,  DISABLE, DEFAULT), | ||||||
| 	PINCFG(CORE_PWR_REQ,           PWRON,        NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT), | 	PINCFG(CORE_PWR_REQ,           PWRON,        NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(CPU_PWR_REQ,            RSVD2,        NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT), | 	PINCFG(CPU_PWR_REQ,            CPU,          NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT), | ||||||
| 	PINCFG(PWR_INT_N,              PMI,          UP,     NORMAL,   INPUT,   DEFAULT, DEFAULT), | 	PINCFG(PWR_INT_N,              PMI,          UP,     TRISTATE, INPUT,   DEFAULT, DEFAULT), | ||||||
| 	PINCFG(RESET_OUT_N,            RESET_OUT_N,  NORMAL, NORMAL,   OUTPUT,  DEFAULT, DEFAULT), | 	PINCFG(RESET_OUT_N,            RESET_OUT_N,  NORMAL, NORMAL,   INPUT,   DEFAULT, DEFAULT), | ||||||
| 	PINCFG(OWR,                    RSVD2,        DOWN,   TRISTATE, OUTPUT,  DEFAULT, NORMAL), | 	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), | 	PINCFG(JTAG_RTCK,              RTCK,         UP,     NORMAL,   OUTPUT,  DEFAULT, DEFAULT), | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -360,6 +360,18 @@ static int setup_fdt(void) | ||||||
| /* Get the top of usable RAM */ | /* Get the top of usable RAM */ | ||||||
| __weak ulong board_get_usable_ram_top(ulong total_size) | __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; | 	return gd->ram_top; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,3 +1,4 @@ | ||||||
| CONFIG_ARM=y | CONFIG_SPL=y | ||||||
| CONFIG_ORION5X=y | +S:CONFIG_ARM=y | ||||||
| CONFIG_TARGET_EDMINIV2=y | +S:CONFIG_ORION5X=y | ||||||
|  | +S:CONFIG_TARGET_EDMINIV2=y | ||||||
|  |  | ||||||
|  | @ -1,5 +1,5 @@ | ||||||
| /*
 | /*
 | ||||||
|  * Copyright (c) 2014 Marcel Ziswiler |  * Copyright (c) 2014-2015 Marcel Ziswiler | ||||||
|  * |  * | ||||||
|  * SPDX-License-Identifier:	GPL-2.0+ |  * SPDX-License-Identifier:	GPL-2.0+ | ||||||
|  */ |  */ | ||||||
|  | @ -22,8 +22,6 @@ | ||||||
| 
 | 
 | ||||||
| #define CONFIG_MACH_TYPE		MACH_TYPE_APALIS_T30 | #define CONFIG_MACH_TYPE		MACH_TYPE_APALIS_T30 | ||||||
| 
 | 
 | ||||||
| #define CONFIG_BOARD_EARLY_INIT_F |  | ||||||
| 
 |  | ||||||
| /* I2C */ | /* I2C */ | ||||||
| #define CONFIG_SYS_I2C_TEGRA | #define CONFIG_SYS_I2C_TEGRA | ||||||
| #define CONFIG_CMD_I2C | #define CONFIG_CMD_I2C | ||||||
|  | @ -47,12 +45,8 @@ | ||||||
| #define CONFIG_USB_STORAGE | #define CONFIG_USB_STORAGE | ||||||
| #define CONFIG_CMD_USB | #define CONFIG_CMD_USB | ||||||
| 
 | 
 | ||||||
| /* USB networking support */ |  | ||||||
| #define CONFIG_USB_HOST_ETHER |  | ||||||
| #define CONFIG_USB_ETHER_ASIX |  | ||||||
| 
 |  | ||||||
| /* PCI host support */ | /* PCI host support */ | ||||||
| #undef CONFIG_PCI	/* just define once Tegra PCIe support got merged */ | #define CONFIG_PCI | ||||||
| #define CONFIG_PCI_TEGRA | #define CONFIG_PCI_TEGRA | ||||||
| #define CONFIG_PCI_PNP | #define CONFIG_PCI_PNP | ||||||
| #define CONFIG_CMD_PCI | #define CONFIG_CMD_PCI | ||||||
|  | @ -60,12 +54,31 @@ | ||||||
| 
 | 
 | ||||||
| /* PCI networking support */ | /* PCI networking support */ | ||||||
| #define CONFIG_E1000 | #define CONFIG_E1000 | ||||||
| #undef CONFIG_E1000_NO_NVM	/* just define once E1000 driver got fixed */ | #define CONFIG_E1000_NO_NVM | ||||||
| 
 | 
 | ||||||
| /* General networking support */ | /* General networking support */ | ||||||
| #define CONFIG_CMD_NET | #define CONFIG_CMD_NET | ||||||
| #define CONFIG_CMD_DHCP | #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-usb-gadget.h" | ||||||
| #include "tegra-common-post.h" | #include "tegra-common-post.h" | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -36,8 +36,6 @@ | ||||||
| #define MACH_TYPE_BEAVER		4597	/* not yet in mach-types.h */ | #define MACH_TYPE_BEAVER		4597	/* not yet in mach-types.h */ | ||||||
| #define CONFIG_MACH_TYPE		MACH_TYPE_BEAVER | #define CONFIG_MACH_TYPE		MACH_TYPE_BEAVER | ||||||
| 
 | 
 | ||||||
| #define CONFIG_BOARD_EARLY_INIT_F |  | ||||||
| 
 |  | ||||||
| /* I2C */ | /* I2C */ | ||||||
| #define CONFIG_SYS_I2C_TEGRA | #define CONFIG_SYS_I2C_TEGRA | ||||||
| #define CONFIG_CMD_I2C | #define CONFIG_CMD_I2C | ||||||
|  |  | ||||||
|  | @ -39,8 +39,6 @@ | ||||||
| 
 | 
 | ||||||
| #define CONFIG_MACH_TYPE		MACH_TYPE_CARDHU | #define CONFIG_MACH_TYPE		MACH_TYPE_CARDHU | ||||||
| 
 | 
 | ||||||
| #define CONFIG_BOARD_EARLY_INIT_F |  | ||||||
| 
 |  | ||||||
| /* I2C */ | /* I2C */ | ||||||
| #define CONFIG_SYS_I2C_TEGRA | #define CONFIG_SYS_I2C_TEGRA | ||||||
| #define CONFIG_CMD_I2C | #define CONFIG_CMD_I2C | ||||||
|  |  | ||||||
|  | @ -18,8 +18,6 @@ | ||||||
| #define CONFIG_TEGRA_UARTA_SDIO1 | #define CONFIG_TEGRA_UARTA_SDIO1 | ||||||
| #define CONFIG_SYS_NS16550_COM1    NV_PA_APB_UARTA_BASE | #define CONFIG_SYS_NS16550_COM1    NV_PA_APB_UARTA_BASE | ||||||
| 
 | 
 | ||||||
| #define CONFIG_BOARD_EARLY_INIT_F |  | ||||||
| 
 |  | ||||||
| /* SD/MMC support */ | /* SD/MMC support */ | ||||||
| #define CONFIG_MMC | #define CONFIG_MMC | ||||||
| #define CONFIG_GENERIC_MMC | #define CONFIG_GENERIC_MMC | ||||||
|  |  | ||||||
|  | @ -1,5 +1,5 @@ | ||||||
| /*
 | /*
 | ||||||
|  * Copyright (c) 2013-2014 Stefan Agner |  * Copyright (c) 2013-2015 Stefan Agner | ||||||
|  * |  * | ||||||
|  * SPDX-License-Identifier:	GPL-2.0+ |  * SPDX-License-Identifier:	GPL-2.0+ | ||||||
|  */ |  */ | ||||||
|  | @ -11,18 +11,17 @@ | ||||||
| 
 | 
 | ||||||
| #include "tegra30-common.h" | #include "tegra30-common.h" | ||||||
| 
 | 
 | ||||||
|  | /* High-level configuration options */ | ||||||
| #define V_PROMPT			"Colibri T30 # " | #define V_PROMPT			"Colibri T30 # " | ||||||
| #define CONFIG_TEGRA_BOARD_STRING	"Toradex Colibri T30" | #define CONFIG_TEGRA_BOARD_STRING	"Toradex Colibri T30" | ||||||
| 
 | 
 | ||||||
| /* Board-specific config */ | /* Board-specific serial config */ | ||||||
| #define CONFIG_SERIAL_MULTI | #define CONFIG_SERIAL_MULTI | ||||||
| #define CONFIG_TEGRA_ENABLE_UARTA | #define CONFIG_TEGRA_ENABLE_UARTA | ||||||
| #define CONFIG_SYS_NS16550_COM1		NV_PA_APB_UARTA_BASE | #define CONFIG_SYS_NS16550_COM1		NV_PA_APB_UARTA_BASE | ||||||
| 
 | 
 | ||||||
| #define CONFIG_MACH_TYPE		MACH_TYPE_COLIBRI_T30 | #define CONFIG_MACH_TYPE		MACH_TYPE_COLIBRI_T30 | ||||||
| 
 | 
 | ||||||
| #define CONFIG_BOARD_EARLY_INIT_F |  | ||||||
| 
 |  | ||||||
| /* I2C */ | /* I2C */ | ||||||
| #define CONFIG_SYS_I2C_TEGRA | #define CONFIG_SYS_I2C_TEGRA | ||||||
| #define CONFIG_CMD_I2C | #define CONFIG_CMD_I2C | ||||||
|  | @ -54,6 +53,25 @@ | ||||||
| #define CONFIG_CMD_NET | #define CONFIG_CMD_NET | ||||||
| #define CONFIG_CMD_DHCP | #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-usb-gadget.h" | ||||||
| #include "tegra-common-post.h" | #include "tegra-common-post.h" | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -32,8 +32,6 @@ | ||||||
| 
 | 
 | ||||||
| #define CONFIG_MACH_TYPE		MACH_TYPE_DALMORE | #define CONFIG_MACH_TYPE		MACH_TYPE_DALMORE | ||||||
| 
 | 
 | ||||||
| #define CONFIG_BOARD_EARLY_INIT_F |  | ||||||
| 
 |  | ||||||
| /* I2C */ | /* I2C */ | ||||||
| #define CONFIG_SYS_I2C_TEGRA | #define CONFIG_SYS_I2C_TEGRA | ||||||
| #define CONFIG_CMD_I2C | #define CONFIG_CMD_I2C | ||||||
|  |  | ||||||
|  | @ -12,6 +12,31 @@ | ||||||
| #ifndef _CONFIG_EDMINIV2_H | #ifndef _CONFIG_EDMINIV2_H | ||||||
| #define _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 |  * Version number information | ||||||
|  */ |  */ | ||||||
|  | @ -89,13 +114,9 @@ | ||||||
| 
 | 
 | ||||||
| #define CONFIG_SYS_FLASH_CFI | #define CONFIG_SYS_FLASH_CFI | ||||||
| #define CONFIG_FLASH_CFI_DRIVER | #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_BANKS	1  /* max num of flash banks       */ | ||||||
| #define CONFIG_SYS_MAX_FLASH_SECT	11 /* max num of sects on one chip */ | #define CONFIG_SYS_MAX_FLASH_SECT	11 /* max num of sects on one chip */ | ||||||
| #define CONFIG_SYS_FLASH_BASE		0xfff80000 | #define CONFIG_SYS_FLASH_BASE		0xfff80000 | ||||||
| #define CONFIG_SYS_FLASH_SECTSZ \ |  | ||||||
| 	{16384, 8192, 8192, 32768, \ |  | ||||||
| 	 65536, 65536, 65536, 65536, 65536, 65536, 65536} |  | ||||||
| 
 | 
 | ||||||
| /* auto boot */ | /* auto boot */ | ||||||
| #define CONFIG_BOOTDELAY	3	/* default enable autoboot */ | #define CONFIG_BOOTDELAY	3	/* default enable autoboot */ | ||||||
|  |  | ||||||
|  | @ -27,9 +27,6 @@ | ||||||
| 
 | 
 | ||||||
| #define CONFIG_MACH_TYPE		MACH_TYPE_HARMONY | #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 */ | /* SD/MMC */ | ||||||
| #define CONFIG_MMC | #define CONFIG_MMC | ||||||
| #define CONFIG_GENERIC_MMC | #define CONFIG_GENERIC_MMC | ||||||
|  |  | ||||||
|  | @ -24,8 +24,6 @@ | ||||||
| #define CONFIG_TEGRA_ENABLE_UARTD | #define CONFIG_TEGRA_ENABLE_UARTD | ||||||
| #define CONFIG_SYS_NS16550_COM1		NV_PA_APB_UARTD_BASE | #define CONFIG_SYS_NS16550_COM1		NV_PA_APB_UARTD_BASE | ||||||
| 
 | 
 | ||||||
| #define CONFIG_BOARD_EARLY_INIT_F |  | ||||||
| 
 |  | ||||||
| /* I2C */ | /* I2C */ | ||||||
| #define CONFIG_SYS_I2C_TEGRA | #define CONFIG_SYS_I2C_TEGRA | ||||||
| #define CONFIG_CMD_I2C | #define CONFIG_CMD_I2C | ||||||
|  |  | ||||||
|  | @ -15,6 +15,10 @@ | ||||||
| #define CONFIG_GICV3 | #define CONFIG_GICV3 | ||||||
| #define CONFIG_FSL_TZPC_BP147 | #define CONFIG_FSL_TZPC_BP147 | ||||||
| 
 | 
 | ||||||
|  | /* Errata fixes */ | ||||||
|  | #define CONFIG_ARM_ERRATA_828024 | ||||||
|  | #define CONFIG_ARM_ERRATA_826974 | ||||||
|  | 
 | ||||||
| /* Link Definitions */ | /* Link Definitions */ | ||||||
| #define CONFIG_SYS_TEXT_BASE		0x30001000 | #define CONFIG_SYS_TEXT_BASE		0x30001000 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -20,9 +20,6 @@ | ||||||
| #define CONFIG_TEGRA_ENABLE_UARTD	/* UARTD: debug UART */ | #define CONFIG_TEGRA_ENABLE_UARTD	/* UARTD: debug UART */ | ||||||
| #define CONFIG_SYS_NS16550_COM1		NV_PA_APB_UARTD_BASE | #define CONFIG_SYS_NS16550_COM1		NV_PA_APB_UARTD_BASE | ||||||
| 
 | 
 | ||||||
| #define CONFIG_BOARD_EARLY_INIT_F |  | ||||||
| #define CONFIG_BOARD_LATE_INIT |  | ||||||
| 
 |  | ||||||
| /* SD/MMC */ | /* SD/MMC */ | ||||||
| #define CONFIG_MMC | #define CONFIG_MMC | ||||||
| #define CONFIG_GENERIC_MMC | #define CONFIG_GENERIC_MMC | ||||||
|  |  | ||||||
|  | @ -21,8 +21,6 @@ | ||||||
| #define CONFIG_TEGRA_ENABLE_UARTA | #define CONFIG_TEGRA_ENABLE_UARTA | ||||||
| #define CONFIG_SYS_NS16550_COM1		NV_PA_APB_UARTA_BASE | #define CONFIG_SYS_NS16550_COM1		NV_PA_APB_UARTA_BASE | ||||||
| 
 | 
 | ||||||
| #define CONFIG_BOARD_EARLY_INIT_F |  | ||||||
| 
 |  | ||||||
| /* I2C */ | /* I2C */ | ||||||
| #define CONFIG_SYS_I2C_TEGRA | #define CONFIG_SYS_I2C_TEGRA | ||||||
| #define CONFIG_CMD_I2C | #define CONFIG_CMD_I2C | ||||||
|  |  | ||||||
|  | @ -30,9 +30,6 @@ | ||||||
| 
 | 
 | ||||||
| #define CONFIG_MACH_TYPE		MACH_TYPE_PAZ00 | #define CONFIG_MACH_TYPE		MACH_TYPE_PAZ00 | ||||||
| 
 | 
 | ||||||
| #define CONFIG_BOARD_EARLY_INIT_F |  | ||||||
| #define CONFIG_BOARD_LATE_INIT |  | ||||||
| 
 |  | ||||||
| /* SD/MMC */ | /* SD/MMC */ | ||||||
| #define CONFIG_MMC | #define CONFIG_MMC | ||||||
| #define CONFIG_GENERIC_MMC | #define CONFIG_GENERIC_MMC | ||||||
|  |  | ||||||
|  | @ -20,9 +20,6 @@ | ||||||
| #define CONFIG_TEGRA_ENABLE_UARTD	/* UARTD: debug UART */ | #define CONFIG_TEGRA_ENABLE_UARTD	/* UARTD: debug UART */ | ||||||
| #define CONFIG_SYS_NS16550_COM1		NV_PA_APB_UARTD_BASE | #define CONFIG_SYS_NS16550_COM1		NV_PA_APB_UARTD_BASE | ||||||
| 
 | 
 | ||||||
| #define CONFIG_BOARD_EARLY_INIT_F |  | ||||||
| #define CONFIG_BOARD_LATE_INIT |  | ||||||
| 
 |  | ||||||
| /* SD/MMC */ | /* SD/MMC */ | ||||||
| #define CONFIG_MMC | #define CONFIG_MMC | ||||||
| #define CONFIG_GENERIC_MMC | #define CONFIG_GENERIC_MMC | ||||||
|  |  | ||||||
|  | @ -32,9 +32,6 @@ | ||||||
| 
 | 
 | ||||||
| #define CONFIG_MACH_TYPE		MACH_TYPE_SEABOARD | #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 */ | /* I2C */ | ||||||
| #define CONFIG_SYS_I2C_TEGRA | #define CONFIG_SYS_I2C_TEGRA | ||||||
| #define CONFIG_CMD_I2C | #define CONFIG_CMD_I2C | ||||||
|  |  | ||||||
|  | @ -19,8 +19,6 @@ | ||||||
| #define CONFIG_TEGRA_ENABLE_UARTD | #define CONFIG_TEGRA_ENABLE_UARTD | ||||||
| #define CONFIG_SYS_NS16550_COM1		NV_PA_APB_UARTD_BASE | #define CONFIG_SYS_NS16550_COM1		NV_PA_APB_UARTD_BASE | ||||||
| 
 | 
 | ||||||
| #define CONFIG_BOARD_EARLY_INIT_F |  | ||||||
| 
 |  | ||||||
| /* I2C */ | /* I2C */ | ||||||
| #define CONFIG_SYS_I2C_TEGRA | #define CONFIG_SYS_I2C_TEGRA | ||||||
| #define CONFIG_CMD_I2C | #define CONFIG_CMD_I2C | ||||||
|  |  | ||||||
|  | @ -20,9 +20,6 @@ | ||||||
| #define CONFIG_TEGRA_ENABLE_UARTD	/* UARTD: debug UART */ | #define CONFIG_TEGRA_ENABLE_UARTD	/* UARTD: debug UART */ | ||||||
| #define CONFIG_SYS_NS16550_COM1		NV_PA_APB_UARTD_BASE | #define CONFIG_SYS_NS16550_COM1		NV_PA_APB_UARTD_BASE | ||||||
| 
 | 
 | ||||||
| #define CONFIG_BOARD_EARLY_INIT_F |  | ||||||
| #define CONFIG_BOARD_LATE_INIT |  | ||||||
| 
 |  | ||||||
| /* SD/MMC */ | /* SD/MMC */ | ||||||
| #define CONFIG_MMC | #define CONFIG_MMC | ||||||
| #define CONFIG_GENERIC_MMC | #define CONFIG_GENERIC_MMC | ||||||
|  |  | ||||||
|  | @ -150,6 +150,8 @@ | ||||||
| #define CONFIG_SPL_GPIO_SUPPORT | #define CONFIG_SPL_GPIO_SUPPORT | ||||||
| 
 | 
 | ||||||
| #define CONFIG_SYS_GENERIC_BOARD | #define CONFIG_SYS_GENERIC_BOARD | ||||||
|  | #define CONFIG_BOARD_EARLY_INIT_F | ||||||
|  | #define CONFIG_BOARD_LATE_INIT | ||||||
| 
 | 
 | ||||||
| /* Misc utility code */ | /* Misc utility code */ | ||||||
| #define CONFIG_BOUNCE_BUFFER | #define CONFIG_BOUNCE_BUFFER | ||||||
|  |  | ||||||
|  | @ -22,8 +22,6 @@ | ||||||
| 
 | 
 | ||||||
| #define CONFIG_MACH_TYPE		MACH_TYPE_TRIMSLICE | #define CONFIG_MACH_TYPE		MACH_TYPE_TRIMSLICE | ||||||
| 
 | 
 | ||||||
| #define CONFIG_BOARD_EARLY_INIT_F |  | ||||||
| 
 |  | ||||||
| /* SPI */ | /* SPI */ | ||||||
| #define CONFIG_TEGRA20_SFLASH | #define CONFIG_TEGRA20_SFLASH | ||||||
| #define CONFIG_SPI_FLASH | #define CONFIG_SPI_FLASH | ||||||
|  |  | ||||||
|  | @ -21,8 +21,6 @@ | ||||||
| #define CONFIG_TEGRA_ENABLE_UARTA | #define CONFIG_TEGRA_ENABLE_UARTA | ||||||
| #define CONFIG_SYS_NS16550_COM1		NV_PA_APB_UARTA_BASE | #define CONFIG_SYS_NS16550_COM1		NV_PA_APB_UARTA_BASE | ||||||
| 
 | 
 | ||||||
| #define CONFIG_BOARD_EARLY_INIT_F |  | ||||||
| 
 |  | ||||||
| /* I2C */ | /* I2C */ | ||||||
| #define CONFIG_SYS_I2C_TEGRA | #define CONFIG_SYS_I2C_TEGRA | ||||||
| #define CONFIG_CMD_I2C | #define CONFIG_CMD_I2C | ||||||
|  |  | ||||||
|  | @ -21,9 +21,6 @@ | ||||||
| 
 | 
 | ||||||
| #define CONFIG_MACH_TYPE		MACH_TYPE_VENTANA | #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 */ | /* SD/MMC */ | ||||||
| #define CONFIG_MMC | #define CONFIG_MMC | ||||||
| #define CONFIG_GENERIC_MMC | #define CONFIG_GENERIC_MMC | ||||||
|  |  | ||||||
|  | @ -22,8 +22,6 @@ | ||||||
| 
 | 
 | ||||||
| #define CONFIG_MACH_TYPE		MACH_TYPE_WHISTLER | #define CONFIG_MACH_TYPE		MACH_TYPE_WHISTLER | ||||||
| 
 | 
 | ||||||
| #define CONFIG_BOARD_EARLY_INIT_F |  | ||||||
| 
 |  | ||||||
| /* I2C */ | /* I2C */ | ||||||
| #define CONFIG_SYS_I2C_TEGRA | #define CONFIG_SYS_I2C_TEGRA | ||||||
| #define CONFIG_CMD_I2C | #define CONFIG_CMD_I2C | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue