Merge branch 'master' of git://git.denx.de/u-boot
Signed-off-by: Stefano Babic <sbabic@denx.de>
This commit is contained in:
		
						commit
						dc557e9a1f
					
				
							
								
								
									
										2
									
								
								Kconfig
								
								
								
								
							
							
						
						
									
										2
									
								
								Kconfig
								
								
								
								
							| 
						 | 
				
			
			@ -268,7 +268,7 @@ config SYS_EXTRA_OPTIONS
 | 
			
		|||
 | 
			
		||||
config SYS_TEXT_BASE
 | 
			
		||||
	depends on SPARC || ARC || X86 || ARCH_UNIPHIER || ARCH_ZYNQMP || \
 | 
			
		||||
		(M68K && !TARGET_ASTRO_MCF5373L) || MICROBLAZE
 | 
			
		||||
		(M68K && !TARGET_ASTRO_MCF5373L) || MICROBLAZE || MIPS
 | 
			
		||||
	depends on !EFI_APP
 | 
			
		||||
	hex "Text Base"
 | 
			
		||||
	help
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										19
									
								
								Makefile
								
								
								
								
							
							
						
						
									
										19
									
								
								Makefile
								
								
								
								
							| 
						 | 
				
			
			@ -3,9 +3,9 @@
 | 
			
		|||
#
 | 
			
		||||
 | 
			
		||||
VERSION = 2016
 | 
			
		||||
PATCHLEVEL = 05
 | 
			
		||||
PATCHLEVEL = 07
 | 
			
		||||
SUBLEVEL =
 | 
			
		||||
EXTRAVERSION =
 | 
			
		||||
EXTRAVERSION = -rc1
 | 
			
		||||
NAME =
 | 
			
		||||
 | 
			
		||||
# *DOCUMENTATION*
 | 
			
		||||
| 
						 | 
				
			
			@ -801,13 +801,6 @@ quiet_cmd_pad_cat = CAT     $@
 | 
			
		|||
cmd_pad_cat = $(cmd_objcopy) && $(append) || rm -f $@
 | 
			
		||||
 | 
			
		||||
all:		$(ALL-y)
 | 
			
		||||
ifneq ($(CONFIG_SYS_GENERIC_BOARD),y)
 | 
			
		||||
	@echo "===================== WARNING ======================"
 | 
			
		||||
	@echo "Please convert this board to generic board."
 | 
			
		||||
	@echo "Otherwise it will be removed by the end of 2014."
 | 
			
		||||
	@echo "See doc/README.generic-board for further information"
 | 
			
		||||
	@echo "===================================================="
 | 
			
		||||
endif
 | 
			
		||||
ifeq ($(CONFIG_DM_I2C_COMPAT),y)
 | 
			
		||||
	@echo "===================== WARNING ======================"
 | 
			
		||||
	@echo "This board uses CONFIG_DM_I2C_COMPAT. Please remove"
 | 
			
		||||
| 
						 | 
				
			
			@ -1257,13 +1250,6 @@ prepare2: prepare3 outputmakefile
 | 
			
		|||
 | 
			
		||||
prepare1: prepare2 $(version_h) $(timestamp_h) \
 | 
			
		||||
                   include/config/auto.conf
 | 
			
		||||
ifeq ($(CONFIG_HAVE_GENERIC_BOARD),)
 | 
			
		||||
ifeq ($(CONFIG_SYS_GENERIC_BOARD),y)
 | 
			
		||||
	@echo >&2 "  Your architecture does not support generic board."
 | 
			
		||||
	@echo >&2 "  Please undefine CONFIG_SYS_GENERIC_BOARD in your board config file."
 | 
			
		||||
	@/bin/false
 | 
			
		||||
endif
 | 
			
		||||
endif
 | 
			
		||||
ifeq ($(wildcard $(LDSCRIPT)),)
 | 
			
		||||
	@echo >&2 "  Could not find linker script."
 | 
			
		||||
	@/bin/false
 | 
			
		||||
| 
						 | 
				
			
			@ -1452,6 +1438,7 @@ clean: $(clean-dirs)
 | 
			
		|||
		-o -name '.*.d' -o -name '.*.tmp' -o -name '*.mod.c' \
 | 
			
		||||
		-o -name '*.symtypes' -o -name 'modules.order' \
 | 
			
		||||
		-o -name modules.builtin -o -name '.tmp_*.o.*' \
 | 
			
		||||
		-o -name 'dsdt.aml' -o -name 'dsdt.asl.tmp' -o -name 'dsdt.c' \
 | 
			
		||||
		-o -name '*.gcno' \) -type f -print | xargs rm -f
 | 
			
		||||
 | 
			
		||||
# mrproper - Delete all generated files, including .config
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										10
									
								
								README
								
								
								
								
							
							
						
						
									
										10
									
								
								README
								
								
								
								
							| 
						 | 
				
			
			@ -4048,16 +4048,6 @@ Configuration Settings:
 | 
			
		|||
	If defined, don't allow the -f switch to env set override variable
 | 
			
		||||
	access flags.
 | 
			
		||||
 | 
			
		||||
- CONFIG_SYS_GENERIC_BOARD
 | 
			
		||||
	This selects the architecture-generic board system instead of the
 | 
			
		||||
	architecture-specific board files. It is intended to move boards
 | 
			
		||||
	to this new framework over time. Defining this will disable the
 | 
			
		||||
	arch/foo/lib/board.c file and use common/board_f.c and
 | 
			
		||||
	common/board_r.c instead. To use this option your architecture
 | 
			
		||||
	must support it (i.e. must select HAVE_GENERIC_BOARD in arch/Kconfig).
 | 
			
		||||
	If you find problems enabling this option on your board please report
 | 
			
		||||
	the problem and send patches!
 | 
			
		||||
 | 
			
		||||
- CONFIG_OMAP_PLATFORM_RESET_TIME_MAX_USEC (OMAP only)
 | 
			
		||||
	This is set by OMAP boards for the max time that reset should
 | 
			
		||||
	be asserted. See doc/README.omap-reset-time for details on how
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										32
									
								
								arch/Kconfig
								
								
								
								
							
							
						
						
									
										32
									
								
								arch/Kconfig
								
								
								
								
							| 
						 | 
				
			
			@ -1,13 +1,6 @@
 | 
			
		|||
config CREATE_ARCH_SYMLINK
 | 
			
		||||
	bool
 | 
			
		||||
 | 
			
		||||
config HAVE_GENERIC_BOARD
 | 
			
		||||
	bool
 | 
			
		||||
 | 
			
		||||
config SYS_GENERIC_BOARD
 | 
			
		||||
	bool
 | 
			
		||||
	depends on HAVE_GENERIC_BOARD
 | 
			
		||||
 | 
			
		||||
choice
 | 
			
		||||
	prompt "Architecture select"
 | 
			
		||||
	default SANDBOX
 | 
			
		||||
| 
						 | 
				
			
			@ -15,57 +8,39 @@ choice
 | 
			
		|||
config ARC
 | 
			
		||||
	bool "ARC architecture"
 | 
			
		||||
	select HAVE_PRIVATE_LIBGCC
 | 
			
		||||
	select HAVE_GENERIC_BOARD
 | 
			
		||||
	select SYS_GENERIC_BOARD
 | 
			
		||||
	select SUPPORT_OF_CONTROL
 | 
			
		||||
 | 
			
		||||
config ARM
 | 
			
		||||
	bool "ARM architecture"
 | 
			
		||||
	select CREATE_ARCH_SYMLINK
 | 
			
		||||
	select HAVE_PRIVATE_LIBGCC if !ARM64
 | 
			
		||||
	select HAVE_GENERIC_BOARD
 | 
			
		||||
	select SYS_GENERIC_BOARD
 | 
			
		||||
	select SUPPORT_OF_CONTROL
 | 
			
		||||
 | 
			
		||||
config AVR32
 | 
			
		||||
	bool "AVR32 architecture"
 | 
			
		||||
	select CREATE_ARCH_SYMLINK
 | 
			
		||||
	select HAVE_GENERIC_BOARD
 | 
			
		||||
	select SYS_GENERIC_BOARD
 | 
			
		||||
 | 
			
		||||
config BLACKFIN
 | 
			
		||||
	bool "Blackfin architecture"
 | 
			
		||||
	select HAVE_GENERIC_BOARD
 | 
			
		||||
	select SYS_GENERIC_BOARD
 | 
			
		||||
 | 
			
		||||
config M68K
 | 
			
		||||
	bool "M68000 architecture"
 | 
			
		||||
	select HAVE_PRIVATE_LIBGCC
 | 
			
		||||
	select HAVE_GENERIC_BOARD
 | 
			
		||||
	select SYS_GENERIC_BOARD
 | 
			
		||||
 | 
			
		||||
config MICROBLAZE
 | 
			
		||||
	bool "MicroBlaze architecture"
 | 
			
		||||
	select HAVE_GENERIC_BOARD
 | 
			
		||||
	select SYS_GENERIC_BOARD
 | 
			
		||||
	select SUPPORT_OF_CONTROL
 | 
			
		||||
 | 
			
		||||
config MIPS
 | 
			
		||||
	bool "MIPS architecture"
 | 
			
		||||
	select HAVE_PRIVATE_LIBGCC
 | 
			
		||||
	select HAVE_GENERIC_BOARD
 | 
			
		||||
	select SYS_GENERIC_BOARD
 | 
			
		||||
	select SUPPORT_OF_CONTROL
 | 
			
		||||
 | 
			
		||||
config NDS32
 | 
			
		||||
	bool "NDS32 architecture"
 | 
			
		||||
	select HAVE_GENERIC_BOARD
 | 
			
		||||
	select SYS_GENERIC_BOARD
 | 
			
		||||
 | 
			
		||||
config NIOS2
 | 
			
		||||
	bool "Nios II architecture"
 | 
			
		||||
	select HAVE_GENERIC_BOARD
 | 
			
		||||
	select SYS_GENERIC_BOARD
 | 
			
		||||
	select SUPPORT_OF_CONTROL
 | 
			
		||||
	select OF_CONTROL
 | 
			
		||||
	select DM
 | 
			
		||||
| 
						 | 
				
			
			@ -77,14 +52,10 @@ config OPENRISC
 | 
			
		|||
config PPC
 | 
			
		||||
	bool "PowerPC architecture"
 | 
			
		||||
	select HAVE_PRIVATE_LIBGCC
 | 
			
		||||
	select HAVE_GENERIC_BOARD
 | 
			
		||||
	select SYS_GENERIC_BOARD
 | 
			
		||||
	select SUPPORT_OF_CONTROL
 | 
			
		||||
 | 
			
		||||
config SANDBOX
 | 
			
		||||
	bool "Sandbox"
 | 
			
		||||
	select HAVE_GENERIC_BOARD
 | 
			
		||||
	select SYS_GENERIC_BOARD
 | 
			
		||||
	select SUPPORT_OF_CONTROL
 | 
			
		||||
	select DM
 | 
			
		||||
	select DM_SPI_FLASH
 | 
			
		||||
| 
						 | 
				
			
			@ -99,15 +70,12 @@ config SH
 | 
			
		|||
 | 
			
		||||
config SPARC
 | 
			
		||||
	bool "SPARC architecture"
 | 
			
		||||
	select HAVE_GENERIC_BOARD
 | 
			
		||||
	select CREATE_ARCH_SYMLINK
 | 
			
		||||
 | 
			
		||||
config X86
 | 
			
		||||
	bool "x86 architecture"
 | 
			
		||||
	select CREATE_ARCH_SYMLINK
 | 
			
		||||
	select HAVE_PRIVATE_LIBGCC
 | 
			
		||||
	select HAVE_GENERIC_BOARD
 | 
			
		||||
	select SYS_GENERIC_BOARD
 | 
			
		||||
	select SUPPORT_OF_CONTROL
 | 
			
		||||
	select DM
 | 
			
		||||
	select DM_SERIAL
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										111
									
								
								arch/arm/Kconfig
								
								
								
								
							
							
						
						
									
										111
									
								
								arch/arm/Kconfig
								
								
								
								
							| 
						 | 
				
			
			@ -64,6 +64,20 @@ config SYS_CPU
 | 
			
		|||
        default "sa1100" if CPU_SA1100
 | 
			
		||||
	default "armv8" if ARM64
 | 
			
		||||
 | 
			
		||||
config SYS_ARM_ARCH
 | 
			
		||||
	int
 | 
			
		||||
	default 4 if CPU_ARM720T
 | 
			
		||||
	default 4 if CPU_ARM920T
 | 
			
		||||
	default 5 if CPU_ARM926EJS
 | 
			
		||||
	default 5 if CPU_ARM946ES
 | 
			
		||||
	default 6 if CPU_ARM1136
 | 
			
		||||
	default 6 if CPU_ARM1176
 | 
			
		||||
	default 7 if CPU_V7
 | 
			
		||||
	default 7 if CPU_V7M
 | 
			
		||||
	default 5 if CPU_PXA
 | 
			
		||||
	default 4 if CPU_SA1100
 | 
			
		||||
	default 8 if ARM64
 | 
			
		||||
 | 
			
		||||
config SEMIHOSTING
 | 
			
		||||
	bool "support boot from semihosting"
 | 
			
		||||
	help
 | 
			
		||||
| 
						 | 
				
			
			@ -77,6 +91,14 @@ config SYS_L2CACHE_OFF
 | 
			
		|||
	  If SoC does not support L2CACHE or one do not want to enable
 | 
			
		||||
	  L2CACHE, choose this option.
 | 
			
		||||
 | 
			
		||||
config ENABLE_ARM_SOC_BOOT0_HOOK
 | 
			
		||||
	bool "prepare BOOT0 header"
 | 
			
		||||
	help
 | 
			
		||||
	  If the SoC's BOOT0 requires a header area filled with (magic)
 | 
			
		||||
	  values, then choose this option, and create a define called
 | 
			
		||||
	  ARM_SOC_BOOT0_HOOK which contains the required assembler
 | 
			
		||||
	  preprocessor code.
 | 
			
		||||
 | 
			
		||||
choice
 | 
			
		||||
	prompt "Target select"
 | 
			
		||||
	default TARGET_HIKEY
 | 
			
		||||
| 
						 | 
				
			
			@ -339,6 +361,11 @@ config TARGET_RASTABAN
 | 
			
		|||
	select CPU_V7
 | 
			
		||||
	select SUPPORT_SPL
 | 
			
		||||
 | 
			
		||||
config TARGET_ETAMIN
 | 
			
		||||
        bool "Support etamin"
 | 
			
		||||
        select CPU_V7
 | 
			
		||||
        select SUPPORT_SPL
 | 
			
		||||
 | 
			
		||||
config TARGET_PXM2
 | 
			
		||||
	bool "Support pxm2"
 | 
			
		||||
	select CPU_V7
 | 
			
		||||
| 
						 | 
				
			
			@ -374,6 +401,14 @@ config TARGET_AM335X_EVM
 | 
			
		|||
	select DM_GPIO
 | 
			
		||||
	select TI_I2C_BOARD_DETECT
 | 
			
		||||
 | 
			
		||||
config TARGET_AM335X_SHC
 | 
			
		||||
	bool "Support am335x based shc board from bosch"
 | 
			
		||||
	select CPU_V7
 | 
			
		||||
	select SUPPORT_SPL
 | 
			
		||||
	select DM
 | 
			
		||||
	select DM_SERIAL
 | 
			
		||||
	select DM_GPIO
 | 
			
		||||
 | 
			
		||||
config TARGET_AM335X_SL50
 | 
			
		||||
	bool "Support am335x_sl50"
 | 
			
		||||
	select CPU_V7
 | 
			
		||||
| 
						 | 
				
			
			@ -381,12 +416,6 @@ config TARGET_AM335X_SL50
 | 
			
		|||
	select DM
 | 
			
		||||
	select DM_SERIAL
 | 
			
		||||
 | 
			
		||||
config TARGET_AM43XX_EVM
 | 
			
		||||
	bool "Support am43xx_evm"
 | 
			
		||||
	select CPU_V7
 | 
			
		||||
	select SUPPORT_SPL
 | 
			
		||||
	select TI_I2C_BOARD_DETECT
 | 
			
		||||
 | 
			
		||||
config TARGET_BAV335X
 | 
			
		||||
	bool "Support bav335x"
 | 
			
		||||
	select CPU_V7
 | 
			
		||||
| 
						 | 
				
			
			@ -426,7 +455,6 @@ config TARGET_BCMNSP
 | 
			
		|||
 | 
			
		||||
config ARCH_EXYNOS
 | 
			
		||||
	bool "Samsung EXYNOS"
 | 
			
		||||
	select CPU_V7
 | 
			
		||||
	select DM
 | 
			
		||||
	select DM_SPI_FLASH
 | 
			
		||||
	select DM_SERIAL
 | 
			
		||||
| 
						 | 
				
			
			@ -456,6 +484,13 @@ config ARCH_KEYSTONE
 | 
			
		|||
	select SUPPORT_SPL
 | 
			
		||||
	select CMD_POWEROFF
 | 
			
		||||
 | 
			
		||||
config ARCH_MESON
 | 
			
		||||
	bool "Amlogic Meson"
 | 
			
		||||
	help
 | 
			
		||||
	  Support for the Meson SoC family developed by Amlogic Inc.,
 | 
			
		||||
	  targeted at media players and tablet computers. We currently
 | 
			
		||||
	  support the S905 (GXBaby) 64-bit SoC.
 | 
			
		||||
 | 
			
		||||
config ARCH_MX7
 | 
			
		||||
	bool "Freescale MX7"
 | 
			
		||||
	select CPU_V7
 | 
			
		||||
| 
						 | 
				
			
			@ -507,6 +542,17 @@ config OMAP54XX
 | 
			
		|||
	select CPU_V7
 | 
			
		||||
	select SUPPORT_SPL
 | 
			
		||||
 | 
			
		||||
config AM43XX
 | 
			
		||||
	bool "AM43XX SoC"
 | 
			
		||||
	select CPU_V7
 | 
			
		||||
	select SUPPORT_SPL
 | 
			
		||||
	help
 | 
			
		||||
	  Support for AM43xx SOC from Texas Instruments.
 | 
			
		||||
	  The AM43xx high performance SOC features a Cortex-A9
 | 
			
		||||
	  ARM core, a quad core PRU-ICSS for industrial Ethernet
 | 
			
		||||
	  protocols, dual camera support, optional 3D graphics
 | 
			
		||||
	  and an optional customer programmable secure boot.
 | 
			
		||||
 | 
			
		||||
config RMOBILE
 | 
			
		||||
	bool "Renesas ARM SoCs"
 | 
			
		||||
	select CPU_V7
 | 
			
		||||
| 
						 | 
				
			
			@ -538,7 +584,16 @@ config TARGET_CM_T43
 | 
			
		|||
 | 
			
		||||
config ARCH_SUNXI
 | 
			
		||||
	bool "Support sunxi (Allwinner) SoCs"
 | 
			
		||||
	select CMD_BOOTZ
 | 
			
		||||
	select CMD_DHCP
 | 
			
		||||
	select CMD_EXT2
 | 
			
		||||
	select CMD_EXT4
 | 
			
		||||
	select CMD_FAT
 | 
			
		||||
	select CMD_FS_GENERIC
 | 
			
		||||
	select CMD_GPIO
 | 
			
		||||
	select CMD_MII
 | 
			
		||||
	select CMD_MMC if MMC
 | 
			
		||||
	select CMD_PING
 | 
			
		||||
	select CMD_USB
 | 
			
		||||
	select DM
 | 
			
		||||
	select DM_ETH
 | 
			
		||||
| 
						 | 
				
			
			@ -546,6 +601,7 @@ config ARCH_SUNXI
 | 
			
		|||
	select DM_KEYBOARD
 | 
			
		||||
	select DM_SERIAL
 | 
			
		||||
	select DM_USB
 | 
			
		||||
	select HUSH_PARSER
 | 
			
		||||
	select OF_BOARD_SETUP
 | 
			
		||||
	select OF_CONTROL
 | 
			
		||||
	select OF_SEPARATE
 | 
			
		||||
| 
						 | 
				
			
			@ -594,6 +650,7 @@ config ARCH_ZYNQMP
 | 
			
		|||
	select DM
 | 
			
		||||
	select OF_CONTROL
 | 
			
		||||
	select DM_SERIAL
 | 
			
		||||
	select SUPPORT_SPL
 | 
			
		||||
 | 
			
		||||
config TEGRA
 | 
			
		||||
	bool "NVIDIA Tegra"
 | 
			
		||||
| 
						 | 
				
			
			@ -673,6 +730,33 @@ config TARGET_HIKEY
 | 
			
		|||
	  Support for HiKey 96boards platform. It features a HI6220
 | 
			
		||||
	  SoC, with 8xA53 CPU, mali450 gpu, and 1GB RAM.
 | 
			
		||||
 | 
			
		||||
config TARGET_LS1012AQDS
 | 
			
		||||
	bool "Support ls1012aqds"
 | 
			
		||||
	select ARM64
 | 
			
		||||
	help
 | 
			
		||||
	  Support for Freescale LS1012AQDS platform.
 | 
			
		||||
	  The LS1012A Development System (QDS) is a high-performance
 | 
			
		||||
	  development platform that supports the QorIQ LS1012A
 | 
			
		||||
	  Layerscape Architecture processor.
 | 
			
		||||
 | 
			
		||||
config TARGET_LS1012ARDB
 | 
			
		||||
	bool "Support ls1012ardb"
 | 
			
		||||
	select ARM64
 | 
			
		||||
	help
 | 
			
		||||
	  Support for Freescale LS1012ARDB platform.
 | 
			
		||||
	  The LS1012A Reference design board (RDB) is a high-performance
 | 
			
		||||
	  development platform that supports the QorIQ LS1012A
 | 
			
		||||
	  Layerscape Architecture processor.
 | 
			
		||||
 | 
			
		||||
config TARGET_LS1012AFRDM
 | 
			
		||||
	bool "Support ls1012afrdm"
 | 
			
		||||
	select ARM64
 | 
			
		||||
	help
 | 
			
		||||
	  Support for Freescale LS1012AFRDM platform.
 | 
			
		||||
	  The LS1012A Freedom  board (FRDM) is a high-performance
 | 
			
		||||
	  development platform that supports the QorIQ LS1012A
 | 
			
		||||
	  Layerscape Architecture processor.
 | 
			
		||||
 | 
			
		||||
config TARGET_LS1021AQDS
 | 
			
		||||
	bool "Support ls1021aqds"
 | 
			
		||||
	select CPU_V7
 | 
			
		||||
| 
						 | 
				
			
			@ -743,6 +827,7 @@ config ARCH_ROCKCHIP
 | 
			
		|||
 | 
			
		||||
config TARGET_THUNDERX_88XX
 | 
			
		||||
	bool "Support ThunderX 88xx"
 | 
			
		||||
	select ARM64
 | 
			
		||||
	select OF_CONTROL
 | 
			
		||||
 | 
			
		||||
endchoice
 | 
			
		||||
| 
						 | 
				
			
			@ -771,16 +856,14 @@ source "arch/arm/cpu/armv7/mx6/Kconfig"
 | 
			
		|||
 | 
			
		||||
source "arch/arm/cpu/armv7/mx5/Kconfig"
 | 
			
		||||
 | 
			
		||||
source "arch/arm/cpu/armv7/omap3/Kconfig"
 | 
			
		||||
 | 
			
		||||
source "arch/arm/cpu/armv7/omap4/Kconfig"
 | 
			
		||||
 | 
			
		||||
source "arch/arm/cpu/armv7/omap5/Kconfig"
 | 
			
		||||
source "arch/arm/cpu/armv7/omap-common/Kconfig"
 | 
			
		||||
 | 
			
		||||
source "arch/arm/mach-orion5x/Kconfig"
 | 
			
		||||
 | 
			
		||||
source "arch/arm/cpu/armv7/rmobile/Kconfig"
 | 
			
		||||
 | 
			
		||||
source "arch/arm/mach-meson/Kconfig"
 | 
			
		||||
 | 
			
		||||
source "arch/arm/mach-rockchip/Kconfig"
 | 
			
		||||
 | 
			
		||||
source "arch/arm/mach-s5pc1xx/Kconfig"
 | 
			
		||||
| 
						 | 
				
			
			@ -805,6 +888,7 @@ source "arch/arm/cpu/armv8/Kconfig"
 | 
			
		|||
 | 
			
		||||
source "arch/arm/imx-common/Kconfig"
 | 
			
		||||
 | 
			
		||||
source "board/bosch/shc/Kconfig"
 | 
			
		||||
source "board/BuR/kwb/Kconfig"
 | 
			
		||||
source "board/BuR/tseries/Kconfig"
 | 
			
		||||
source "board/CarMediaLab/flea3/Kconfig"
 | 
			
		||||
| 
						 | 
				
			
			@ -831,6 +915,9 @@ source "board/freescale/ls1021aqds/Kconfig"
 | 
			
		|||
source "board/freescale/ls1043aqds/Kconfig"
 | 
			
		||||
source "board/freescale/ls1021atwr/Kconfig"
 | 
			
		||||
source "board/freescale/ls1043ardb/Kconfig"
 | 
			
		||||
source "board/freescale/ls1012aqds/Kconfig"
 | 
			
		||||
source "board/freescale/ls1012ardb/Kconfig"
 | 
			
		||||
source "board/freescale/ls1012afrdm/Kconfig"
 | 
			
		||||
source "board/freescale/mx23evk/Kconfig"
 | 
			
		||||
source "board/freescale/mx25pdk/Kconfig"
 | 
			
		||||
source "board/freescale/mx28evk/Kconfig"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11,7 +11,7 @@ endif
 | 
			
		|||
arch-$(CONFIG_CPU_ARM720T)	=-march=armv4
 | 
			
		||||
arch-$(CONFIG_CPU_ARM920T)	=-march=armv4t
 | 
			
		||||
arch-$(CONFIG_CPU_ARM926EJS)	=-march=armv5te
 | 
			
		||||
arch-$(CONFIG_CPU_ARM946ES)	=-march=armv4
 | 
			
		||||
arch-$(CONFIG_CPU_ARM946ES)	=-march=armv5te
 | 
			
		||||
arch-$(CONFIG_CPU_SA1100)	=-march=armv4
 | 
			
		||||
arch-$(CONFIG_CPU_PXA)		=
 | 
			
		||||
arch-$(CONFIG_CPU_ARM1136)	=-march=armv5
 | 
			
		||||
| 
						 | 
				
			
			@ -50,6 +50,7 @@ machine-$(CONFIG_ARCH_HIGHBANK)		+= highbank
 | 
			
		|||
machine-$(CONFIG_ARCH_KEYSTONE)		+= keystone
 | 
			
		||||
# TODO: rename CONFIG_KIRKWOOD -> CONFIG_ARCH_KIRKWOOD
 | 
			
		||||
machine-$(CONFIG_KIRKWOOD)		+= kirkwood
 | 
			
		||||
machine-$(CONFIG_ARCH_MESON)		+= meson
 | 
			
		||||
machine-$(CONFIG_ARCH_MVEBU)		+= mvebu
 | 
			
		||||
# TODO: rename CONFIG_TEGRA -> CONFIG_ARCH_TEGRA
 | 
			
		||||
# TODO: rename CONFIG_ORION5X -> CONFIG_ARCH_ORION5X
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,40 @@
 | 
			
		|||
if AM43XX
 | 
			
		||||
config TARGET_AM43XX_EVM
 | 
			
		||||
	bool "Support am43xx_evm"
 | 
			
		||||
	select TI_I2C_BOARD_DETECT
 | 
			
		||||
	help
 | 
			
		||||
	  This option specifies support for the AM43xx
 | 
			
		||||
	  GP and HS EVM development platforms.The AM437x
 | 
			
		||||
	  GP EVM is a standalone test, development, and
 | 
			
		||||
	  evaluation module system that enables developers
 | 
			
		||||
	  to write software and develop hardware around
 | 
			
		||||
	  an AM43xx processor subsystem.
 | 
			
		||||
 | 
			
		||||
config ISW_ENTRY_ADDR
 | 
			
		||||
	hex "Address in memory or XIP flash of bootloader entry point"
 | 
			
		||||
	help
 | 
			
		||||
	  After any reset, the boot ROM on the AM43XX SOC
 | 
			
		||||
	  searches the boot media for a valid boot image.
 | 
			
		||||
	  For non-XIP devices, the ROM then copies the
 | 
			
		||||
	  image into internal memory.
 | 
			
		||||
	  For all boot modes, after the ROM processes the
 | 
			
		||||
	  boot image it eventually computes the entry
 | 
			
		||||
	  point address depending on the device type
 | 
			
		||||
	  (secure/non-secure), boot media (xip/non-xip) and
 | 
			
		||||
	  image headers.
 | 
			
		||||
	default 0x402F4000
 | 
			
		||||
 | 
			
		||||
config PUB_ROM_DATA_SIZE
 | 
			
		||||
	hex "Size in bytes of the L3 SRAM reserved by ROM to store data"
 | 
			
		||||
	help
 | 
			
		||||
	  During the device boot, the public ROM uses the top of
 | 
			
		||||
	  the public L3 OCMC RAM to store r/w data like stack,
 | 
			
		||||
	  heap, globals etc. When the ROM is copying the boot
 | 
			
		||||
	  image from the boot media into memory, the image must
 | 
			
		||||
	  not spill over into this area. This value can be used
 | 
			
		||||
	  during compile time to determine the maximum size of a
 | 
			
		||||
	  boot image. Once the ROM transfers control to the boot
 | 
			
		||||
	  image, this area is no longer used, and can be reclaimed
 | 
			
		||||
	  for run time use by the boot image.
 | 
			
		||||
	default 0x8400
 | 
			
		||||
endif
 | 
			
		||||
| 
						 | 
				
			
			@ -18,3 +18,5 @@ obj-y	+= ddr.o
 | 
			
		|||
obj-y	+= emif4.o
 | 
			
		||||
obj-y	+= board.o
 | 
			
		||||
obj-y	+= mux.o
 | 
			
		||||
 | 
			
		||||
obj-$(CONFIG_CLOCK_SYNTHESIZER)	+= clk_synthesizer.o
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,104 @@
 | 
			
		|||
/*
 | 
			
		||||
 * clk-synthesizer.c
 | 
			
		||||
 *
 | 
			
		||||
 * Clock synthesizer apis
 | 
			
		||||
 *
 | 
			
		||||
 * Copyright (C) 2016, Texas Instruments, Incorporated - http://www.ti.com/
 | 
			
		||||
 *
 | 
			
		||||
 * SPDX-License-Identifier:	GPL-2.0+
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include <common.h>
 | 
			
		||||
#include <asm/arch/clk_synthesizer.h>
 | 
			
		||||
#include <i2c.h>
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * clk_synthesizer_reg_read - Read register from synthesizer.
 | 
			
		||||
 * @addr:	addr within the i2c device
 | 
			
		||||
 * buf:		Buffer to which value is to be read.
 | 
			
		||||
 *
 | 
			
		||||
 * For reading the register from this clock synthesizer, a command needs to
 | 
			
		||||
 * be send along with enabling byte read more, and then read can happen.
 | 
			
		||||
 * Returns 0 on success
 | 
			
		||||
 */
 | 
			
		||||
static int clk_synthesizer_reg_read(int addr, uint8_t *buf)
 | 
			
		||||
{
 | 
			
		||||
	int rc;
 | 
			
		||||
 | 
			
		||||
	/* Enable Bye read */
 | 
			
		||||
	addr = addr | CLK_SYNTHESIZER_BYTE_MODE;
 | 
			
		||||
 | 
			
		||||
	/* Send the command byte */
 | 
			
		||||
	rc = i2c_write(CLK_SYNTHESIZER_I2C_ADDR, addr, 1, buf, 1);
 | 
			
		||||
	if (rc)
 | 
			
		||||
		printf("Failed to send command to clock synthesizer\n");
 | 
			
		||||
 | 
			
		||||
	/* Read the Data */
 | 
			
		||||
	return i2c_read(CLK_SYNTHESIZER_I2C_ADDR, addr, 1, buf, 1);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * clk_synthesizer_reg_write - Write a value to register in synthesizer.
 | 
			
		||||
 * @addr:	addr within the i2c device
 | 
			
		||||
 * val:		Value to be written in the addr.
 | 
			
		||||
 *
 | 
			
		||||
 * Enable the byte read mode in the address and start the i2c transfer.
 | 
			
		||||
 * Returns 0 on success
 | 
			
		||||
 */
 | 
			
		||||
static int clk_synthesizer_reg_write(int addr, uint8_t val)
 | 
			
		||||
{
 | 
			
		||||
	uint8_t cmd[2];
 | 
			
		||||
	int rc = 0;
 | 
			
		||||
 | 
			
		||||
	/* Enable byte write */
 | 
			
		||||
	cmd[0] = addr | CLK_SYNTHESIZER_BYTE_MODE;
 | 
			
		||||
	cmd[1] = val;
 | 
			
		||||
 | 
			
		||||
	rc = i2c_write(CLK_SYNTHESIZER_I2C_ADDR, addr, 1, cmd, 2);
 | 
			
		||||
	if (rc)
 | 
			
		||||
		printf("Clock synthesizer reg write failed at addr = 0x%x\n",
 | 
			
		||||
		       addr);
 | 
			
		||||
	return rc;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * setup_clock_syntherizer - Program the clock synthesizer to get the desired
 | 
			
		||||
 *				frequency.
 | 
			
		||||
 * @data: Data containing the desired output
 | 
			
		||||
 *
 | 
			
		||||
 * This is a PLL-based high performance synthesizer which gives 3 outputs
 | 
			
		||||
 * as per the PLL_DIV and load capacitor programmed.
 | 
			
		||||
 */
 | 
			
		||||
int setup_clock_synthesizer(struct clk_synth *data)
 | 
			
		||||
{
 | 
			
		||||
	int rc;
 | 
			
		||||
	uint8_t val;
 | 
			
		||||
 | 
			
		||||
	rc =  i2c_probe(CLK_SYNTHESIZER_I2C_ADDR);
 | 
			
		||||
	if (rc) {
 | 
			
		||||
		printf("i2c probe failed at address 0x%x\n",
 | 
			
		||||
		       CLK_SYNTHESIZER_I2C_ADDR);
 | 
			
		||||
		return rc;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	rc = clk_synthesizer_reg_read(CLK_SYNTHESIZER_ID_REG, &val);
 | 
			
		||||
	if (val != data->id)
 | 
			
		||||
		return rc;
 | 
			
		||||
 | 
			
		||||
	/* Crystal Load capacitor selection */
 | 
			
		||||
	rc = clk_synthesizer_reg_write(CLK_SYNTHESIZER_XCSEL, data->capacitor);
 | 
			
		||||
	if (rc)
 | 
			
		||||
		return rc;
 | 
			
		||||
	rc = clk_synthesizer_reg_write(CLK_SYNTHESIZER_MUX_REG, data->mux);
 | 
			
		||||
	if (rc)
 | 
			
		||||
		return rc;
 | 
			
		||||
	rc = clk_synthesizer_reg_write(CLK_SYNTHESIZER_PDIV2_REG, data->pdiv2);
 | 
			
		||||
	if (rc)
 | 
			
		||||
		return rc;
 | 
			
		||||
	rc = clk_synthesizer_reg_write(CLK_SYNTHESIZER_PDIV3_REG, data->pdiv3);
 | 
			
		||||
	if (rc)
 | 
			
		||||
		return rc;
 | 
			
		||||
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -159,3 +159,76 @@ void enable_basic_clocks(void)
 | 
			
		|||
	/* Select the Master osc 24 MHZ as Timer2 clock source */
 | 
			
		||||
	writel(0x1, &cmdpll->clktimer2clk);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Enable Spread Spectrum for the MPU by calculating the required
 | 
			
		||||
 * values and setting the registers accordingly.
 | 
			
		||||
 * @param permille The spreading in permille (10th of a percent)
 | 
			
		||||
 */
 | 
			
		||||
void set_mpu_spreadspectrum(int permille)
 | 
			
		||||
{
 | 
			
		||||
	u32 multiplier_m;
 | 
			
		||||
	u32 predivider_n;
 | 
			
		||||
	u32 cm_clksel_dpll_mpu;
 | 
			
		||||
	u32 cm_clkmode_dpll_mpu;
 | 
			
		||||
	u32 ref_clock;
 | 
			
		||||
	u32 pll_bandwidth;
 | 
			
		||||
	u32 mod_freq_divider;
 | 
			
		||||
	u32 exponent;
 | 
			
		||||
	u32 mantissa;
 | 
			
		||||
	u32 delta_m_step;
 | 
			
		||||
 | 
			
		||||
	printf("Enabling Spread Spectrum of %d permille for MPU\n",
 | 
			
		||||
	       permille);
 | 
			
		||||
 | 
			
		||||
	/* Read PLL parameter m and n */
 | 
			
		||||
	cm_clksel_dpll_mpu = readl(&cmwkup->clkseldpllmpu);
 | 
			
		||||
	multiplier_m = (cm_clksel_dpll_mpu >> 8) & 0x3FF;
 | 
			
		||||
	predivider_n = cm_clksel_dpll_mpu & 0x7F;
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 * Calculate reference clock (clock after pre-divider),
 | 
			
		||||
	 * its max. PLL bandwidth,
 | 
			
		||||
	 * and resulting mod_freq_divider
 | 
			
		||||
	 */
 | 
			
		||||
	ref_clock = V_OSCK / (predivider_n + 1);
 | 
			
		||||
	pll_bandwidth = ref_clock / 70;
 | 
			
		||||
	mod_freq_divider = ref_clock / (4 * pll_bandwidth);
 | 
			
		||||
 | 
			
		||||
	/* Calculate Mantissa/Exponent */
 | 
			
		||||
	exponent = 0;
 | 
			
		||||
	mantissa = mod_freq_divider;
 | 
			
		||||
	while ((mantissa > 127) && (exponent < 7)) {
 | 
			
		||||
		exponent++;
 | 
			
		||||
		mantissa /= 2;
 | 
			
		||||
	}
 | 
			
		||||
	if (mantissa > 127)
 | 
			
		||||
		mantissa = 127;
 | 
			
		||||
 | 
			
		||||
	mod_freq_divider = mantissa << exponent;
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 * Calculate Modulation steps
 | 
			
		||||
	 * As we use Downspread only, the spread is twice the value of
 | 
			
		||||
	 * permille, so Div2!
 | 
			
		||||
	 * As it takes the value in percent, divide by ten!
 | 
			
		||||
	 */
 | 
			
		||||
	delta_m_step = ((u32)((multiplier_m * permille) / 10 / 2)) << 18;
 | 
			
		||||
	delta_m_step /= 100;
 | 
			
		||||
	delta_m_step /= mod_freq_divider;
 | 
			
		||||
	if (delta_m_step > 0xFFFFF)
 | 
			
		||||
		delta_m_step = 0xFFFFF;
 | 
			
		||||
 | 
			
		||||
	/* Setup Spread Spectrum */
 | 
			
		||||
	writel(delta_m_step, &cmwkup->sscdeltamstepdllmpu);
 | 
			
		||||
	writel((exponent << 8) | mantissa, &cmwkup->sscmodfreqdivdpllmpu);
 | 
			
		||||
	cm_clkmode_dpll_mpu = readl(&cmwkup->clkmoddpllmpu);
 | 
			
		||||
	/* clear all SSC flags */
 | 
			
		||||
	cm_clkmode_dpll_mpu &= ~(0xF << CM_CLKMODE_DPLL_SSC_EN_SHIFT);
 | 
			
		||||
	/* enable SSC with Downspread only */
 | 
			
		||||
	cm_clkmode_dpll_mpu |=  CM_CLKMODE_DPLL_SSC_EN_MASK |
 | 
			
		||||
				CM_CLKMODE_DPLL_SSC_DOWNSPREAD_MASK;
 | 
			
		||||
	writel(cm_clkmode_dpll_mpu, &cmwkup->clkmoddpllmpu);
 | 
			
		||||
	while (!(readl(&cmwkup->clkmoddpllmpu) & 0x2000))
 | 
			
		||||
		;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -160,7 +160,7 @@ void disable_edma3_clocks(void)
 | 
			
		|||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef CONFIG_USB_DWC3
 | 
			
		||||
#if defined(CONFIG_USB_DWC3) || defined(CONFIG_USB_XHCI_OMAP)
 | 
			
		||||
void enable_usb_clocks(int index)
 | 
			
		||||
{
 | 
			
		||||
	u32 *usbclkctrl = 0;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,9 +3,29 @@
 | 
			
		|||
#
 | 
			
		||||
# SPDX-License-Identifier:	GPL-2.0+
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
include  $(srctree)/$(CPUDIR)/omap-common/config_secure.mk
 | 
			
		||||
 | 
			
		||||
ifdef CONFIG_SPL_BUILD
 | 
			
		||||
ifeq ($(CONFIG_TI_SECURE_DEVICE),y)
 | 
			
		||||
#
 | 
			
		||||
# For booting from SPI use
 | 
			
		||||
# u-boot-spl_HS_SPI_X-LOADER to program flash
 | 
			
		||||
#
 | 
			
		||||
# For booting spl from all other  media
 | 
			
		||||
# use u-boot-spl_HS_ISSW
 | 
			
		||||
#
 | 
			
		||||
# Refer to README.ti-secure for more info
 | 
			
		||||
#
 | 
			
		||||
ALL-y	+= u-boot-spl_HS_ISSW
 | 
			
		||||
ALL-$(CONFIG_SPL_SPI_SUPPORT) += u-boot-spl_HS_SPI_X-LOADER
 | 
			
		||||
else
 | 
			
		||||
ALL-y	+= MLO
 | 
			
		||||
ALL-$(CONFIG_SPL_SPI_SUPPORT) += MLO.byteswap
 | 
			
		||||
endif
 | 
			
		||||
else
 | 
			
		||||
ifeq ($(CONFIG_TI_SECURE_DEVICE),y)
 | 
			
		||||
ALL-$(CONFIG_QSPI_BOOT) += u-boot_HS_XIP_X-LOADER
 | 
			
		||||
endif
 | 
			
		||||
ALL-y	+= u-boot.img
 | 
			
		||||
endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,7 +20,7 @@ u32 spl_boot_mode(void)
 | 
			
		|||
	switch (spl_boot_device()) {
 | 
			
		||||
	case BOOT_DEVICE_MMC1:
 | 
			
		||||
#ifdef CONFIG_SPL_FAT_SUPPORT
 | 
			
		||||
		return MMCSD_MODE_FAT;
 | 
			
		||||
		return MMCSD_MODE_FS;
 | 
			
		||||
#else
 | 
			
		||||
		return MMCSD_MODE_RAW;
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,17 @@
 | 
			
		|||
config TI_SECURE_DEVICE
 | 
			
		||||
	bool "HS Device Type Support"
 | 
			
		||||
	depends on OMAP54XX || AM43XX
 | 
			
		||||
	help
 | 
			
		||||
	  If a high secure (HS) device type is being used, this config
 | 
			
		||||
	  must be set. This option impacts various aspects of the
 | 
			
		||||
	  build system (to create signed boot images that can be
 | 
			
		||||
	  authenticated) and the code. See the doc/README.ti-secure
 | 
			
		||||
	  file for further details.
 | 
			
		||||
 | 
			
		||||
source "arch/arm/cpu/armv7/omap3/Kconfig"
 | 
			
		||||
 | 
			
		||||
source "arch/arm/cpu/armv7/omap4/Kconfig"
 | 
			
		||||
 | 
			
		||||
source "arch/arm/cpu/armv7/omap5/Kconfig"
 | 
			
		||||
 | 
			
		||||
source "arch/arm/cpu/armv7/am33xx/Kconfig"
 | 
			
		||||
| 
						 | 
				
			
			@ -200,7 +200,7 @@ void spl_board_init(void)
 | 
			
		|||
#endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int board_mmc_init(bd_t *bis)
 | 
			
		||||
__weak int board_mmc_init(bd_t *bis)
 | 
			
		||||
{
 | 
			
		||||
	switch (spl_boot_device()) {
 | 
			
		||||
	case BOOT_DEVICE_MMC1:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -236,6 +236,8 @@ static void do_setup_dpll(u32 const base, const struct dpll_params *params,
 | 
			
		|||
			/* Dpll locked with ideal values for nominal opps. */
 | 
			
		||||
			debug("\n %s Dpll already locked with ideal"
 | 
			
		||||
						"nominal opp values", dpll);
 | 
			
		||||
 | 
			
		||||
			bypass_dpll(base);
 | 
			
		||||
			goto setup_post_dividers;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			@ -251,13 +253,13 @@ static void do_setup_dpll(u32 const base, const struct dpll_params *params,
 | 
			
		|||
 | 
			
		||||
	writel(temp, &dpll_regs->cm_clksel_dpll);
 | 
			
		||||
 | 
			
		||||
setup_post_dividers:
 | 
			
		||||
	setup_post_dividers(base, params);
 | 
			
		||||
 | 
			
		||||
	/* Lock */
 | 
			
		||||
	if (lock)
 | 
			
		||||
		do_lock_dpll(base);
 | 
			
		||||
 | 
			
		||||
setup_post_dividers:
 | 
			
		||||
	setup_post_dividers(base, params);
 | 
			
		||||
 | 
			
		||||
	/* Wait till the DPLL locks */
 | 
			
		||||
	if (lock)
 | 
			
		||||
		wait_for_lock(base);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,66 @@
 | 
			
		|||
#
 | 
			
		||||
# Copyright (C) 2016, Texas Instruments, Incorporated - http://www.ti.com/
 | 
			
		||||
#
 | 
			
		||||
# SPDX-License-Identifier:	GPL-2.0+
 | 
			
		||||
#
 | 
			
		||||
quiet_cmd_mkomapsecimg = MKIMAGE $@
 | 
			
		||||
ifneq ($(TI_SECURE_DEV_PKG),)
 | 
			
		||||
ifneq ($(wildcard $(TI_SECURE_DEV_PKG)/scripts/create-boot-image.sh),)
 | 
			
		||||
ifneq ($(CONFIG_SPL_BUILD),)
 | 
			
		||||
cmd_mkomapsecimg = $(TI_SECURE_DEV_PKG)/scripts/create-boot-image.sh \
 | 
			
		||||
	$(patsubst u-boot-spl_HS_%,%,$(@F)) $< $@ $(CONFIG_ISW_ENTRY_ADDR) \
 | 
			
		||||
	$(if $(KBUILD_VERBOSE:1=), >/dev/null)
 | 
			
		||||
else
 | 
			
		||||
cmd_mkomapsecimg = $(TI_SECURE_DEV_PKG)/scripts/create-boot-image.sh \
 | 
			
		||||
    $(patsubst u-boot_HS_%,%,$(@F)) $< $@ $(CONFIG_ISW_ENTRY_ADDR) \
 | 
			
		||||
    $(if $(KBUILD_VERBOSE:1=), >/dev/null)
 | 
			
		||||
endif
 | 
			
		||||
else
 | 
			
		||||
cmd_mkomapsecimg = echo "WARNING:" \
 | 
			
		||||
	"$(TI_SECURE_DEV_PKG)/scripts/create-boot-image.sh not found." \
 | 
			
		||||
	"$@ was NOT created!"
 | 
			
		||||
endif
 | 
			
		||||
else
 | 
			
		||||
cmd_mkomapsecimg = echo "WARNING: TI_SECURE_DEV_PKG environment" \
 | 
			
		||||
	"variable must be defined for TI secure devices. $@ was NOT created!"
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
# Standard X-LOADER target (QPSI, NOR flash)
 | 
			
		||||
u-boot-spl_HS_X-LOADER: $(obj)/u-boot-spl.bin
 | 
			
		||||
	$(call if_changed,mkomapsecimg)
 | 
			
		||||
 | 
			
		||||
# For MLO targets (SD card boot) the final file name
 | 
			
		||||
# that is copied to the SD card fAT partition must
 | 
			
		||||
# be MLO, so we make a copy of the output file to a
 | 
			
		||||
# new file with that name
 | 
			
		||||
u-boot-spl_HS_MLO: $(obj)/u-boot-spl.bin
 | 
			
		||||
	$(call if_changed,mkomapsecimg)
 | 
			
		||||
	@if [ -f $@ ]; then \
 | 
			
		||||
		cp -f $@ MLO; \
 | 
			
		||||
	fi
 | 
			
		||||
 | 
			
		||||
# Standard 2ND target (certain peripheral boot modes)
 | 
			
		||||
u-boot-spl_HS_2ND: $(obj)/u-boot-spl.bin
 | 
			
		||||
	$(call if_changed,mkomapsecimg)
 | 
			
		||||
 | 
			
		||||
# Standard ULO target (certain peripheral boot modes)
 | 
			
		||||
u-boot-spl_HS_ULO: $(obj)/u-boot-spl.bin
 | 
			
		||||
	$(call if_changed,mkomapsecimg)
 | 
			
		||||
 | 
			
		||||
# Standard ISSW target (certain devices, various boot modes)
 | 
			
		||||
u-boot-spl_HS_ISSW: $(obj)/u-boot-spl.bin
 | 
			
		||||
	$(call if_changed,mkomapsecimg)
 | 
			
		||||
 | 
			
		||||
# For SPI flash on AM335x and AM43xx, these
 | 
			
		||||
# require special byte swap handling so we use
 | 
			
		||||
# the SPI_X-LOADER target instead of X-LOADER
 | 
			
		||||
# and let the create-boot-image.sh script handle
 | 
			
		||||
# that
 | 
			
		||||
u-boot-spl_HS_SPI_X-LOADER: $(obj)/u-boot-spl.bin
 | 
			
		||||
	$(call if_changed,mkomapsecimg)
 | 
			
		||||
 | 
			
		||||
# For supporting single stage XiP QSPI on AM43xx, the
 | 
			
		||||
# image is a full u-boot file, not an SPL. In this case
 | 
			
		||||
# the mkomapsecimg command looks for a u-boot-HS_* prefix
 | 
			
		||||
u-boot_HS_XIP_X-LOADER: $(obj)/u-boot.bin
 | 
			
		||||
	$(call if_changed,mkomapsecimg)
 | 
			
		||||
| 
						 | 
				
			
			@ -65,12 +65,30 @@ static void omap_rev_string(void)
 | 
			
		|||
	u32 major_rev = (omap_rev & 0x00000F00) >> 8;
 | 
			
		||||
	u32 minor_rev = (omap_rev & 0x000000F0) >> 4;
 | 
			
		||||
 | 
			
		||||
	const char *sec_s;
 | 
			
		||||
 | 
			
		||||
	switch (get_device_type()) {
 | 
			
		||||
	case TST_DEVICE:
 | 
			
		||||
		sec_s = "TST";
 | 
			
		||||
		break;
 | 
			
		||||
	case EMU_DEVICE:
 | 
			
		||||
		sec_s = "EMU";
 | 
			
		||||
		break;
 | 
			
		||||
	case HS_DEVICE:
 | 
			
		||||
		sec_s = "HS";
 | 
			
		||||
		break;
 | 
			
		||||
	case GP_DEVICE:
 | 
			
		||||
		sec_s = "GP";
 | 
			
		||||
		break;
 | 
			
		||||
	default:
 | 
			
		||||
		sec_s = "?";
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (soc_variant)
 | 
			
		||||
		printf("OMAP");
 | 
			
		||||
	else
 | 
			
		||||
		printf("DRA");
 | 
			
		||||
	printf("%x ES%x.%x\n", omap_variant, major_rev,
 | 
			
		||||
	       minor_rev);
 | 
			
		||||
	printf("%x-%s ES%x.%x\n", omap_variant, sec_s, major_rev, minor_rev);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifdef CONFIG_SPL_BUILD
 | 
			
		||||
| 
						 | 
				
			
			@ -94,6 +112,16 @@ void __weak do_board_detect(void)
 | 
			
		|||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * vcores_init() - Assign omap_vcores based on board
 | 
			
		||||
 *
 | 
			
		||||
 * Function to pick the vcores based on board. This is expected to be
 | 
			
		||||
 * overridden in the SoC family board file where desired.
 | 
			
		||||
 */
 | 
			
		||||
void __weak vcores_init(void)
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void s_init(void)
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -131,6 +159,7 @@ void early_system_init(void)
 | 
			
		|||
#endif
 | 
			
		||||
	setup_early_clocks();
 | 
			
		||||
	do_board_detect();
 | 
			
		||||
	vcores_init();
 | 
			
		||||
	prcm_init();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -108,6 +108,6 @@ void omap_die_id_display(void)
 | 
			
		|||
 | 
			
		||||
	omap_die_id(die_id);
 | 
			
		||||
 | 
			
		||||
	printf("OMAP die ID: %08x%08x%08x%08x\n", die_id[0], die_id[1],
 | 
			
		||||
		die_id[2], die_id[3]);
 | 
			
		||||
	printf("OMAP die ID: %08x%08x%08x%08x\n", die_id[3], die_id[2],
 | 
			
		||||
		die_id[1], die_id[0]);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -280,6 +280,8 @@ static int do_switch_ecc(cmd_tbl_t * cmdtp, int flag, int argc, char * const arg
 | 
			
		|||
				omap_nand_switch_ecc(1, 1);
 | 
			
		||||
			else if (strncmp(argv[2], "bch8", 4) == 0)
 | 
			
		||||
				omap_nand_switch_ecc(1, 8);
 | 
			
		||||
			else if (strncmp(argv[2], "bch16", 5) == 0)
 | 
			
		||||
				omap_nand_switch_ecc(1, 16);
 | 
			
		||||
			else
 | 
			
		||||
				goto usage;
 | 
			
		||||
		}
 | 
			
		||||
| 
						 | 
				
			
			@ -308,8 +310,8 @@ usage:
 | 
			
		|||
U_BOOT_CMD(
 | 
			
		||||
	nandecc, 3, 1,	do_switch_ecc,
 | 
			
		||||
	"switch OMAP3 NAND ECC calculation algorithm",
 | 
			
		||||
	"hw [hamming|bch8] - Switch between NAND hardware 1-bit hamming and"
 | 
			
		||||
	" 8-bit BCH\n"
 | 
			
		||||
	"hw [hamming|bch8|bch16] - Switch between NAND hardware 1-bit hamming"
 | 
			
		||||
	" and 8-bit/16-bit BCH\n"
 | 
			
		||||
	"                           ecc calculation (second parameter may"
 | 
			
		||||
	" be omitted).\n"
 | 
			
		||||
	"nandecc sw               - Switch to NAND software ecc algorithm."
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -12,4 +12,5 @@ obj-y	+= sdram.o
 | 
			
		|||
obj-y	+= prcm-regs.o
 | 
			
		||||
obj-y	+= hw_data.o
 | 
			
		||||
obj-y	+= abb.o
 | 
			
		||||
obj-y	+= fdt.o
 | 
			
		||||
obj-$(CONFIG_IODELAY_RECALIBRATION) += dra7xx_iodelay.o
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -6,8 +6,14 @@
 | 
			
		|||
# SPDX-License-Identifier:	GPL-2.0+
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
include  $(srctree)/$(CPUDIR)/omap-common/config_secure.mk
 | 
			
		||||
 | 
			
		||||
ifdef CONFIG_SPL_BUILD
 | 
			
		||||
ifeq ($(CONFIG_TI_SECURE_DEVICE),y)
 | 
			
		||||
ALL-y	+= u-boot-spl_HS_MLO u-boot-spl_HS_X-LOADER
 | 
			
		||||
else
 | 
			
		||||
ALL-y	+= MLO
 | 
			
		||||
endif
 | 
			
		||||
else
 | 
			
		||||
ALL-y	+= u-boot.img
 | 
			
		||||
endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,184 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Copyright 2016 Texas Instruments, Inc.
 | 
			
		||||
 *
 | 
			
		||||
 * SPDX-License-Identifier: GPL-2.0+
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include <common.h>
 | 
			
		||||
#include <libfdt.h>
 | 
			
		||||
#include <fdt_support.h>
 | 
			
		||||
#include <malloc.h>
 | 
			
		||||
 | 
			
		||||
#include <asm/omap_common.h>
 | 
			
		||||
#include <asm/arch-omap5/sys_proto.h>
 | 
			
		||||
 | 
			
		||||
#ifdef CONFIG_TI_SECURE_DEVICE
 | 
			
		||||
 | 
			
		||||
/* Give zero values if not already defined */
 | 
			
		||||
#ifndef TI_OMAP5_SECURE_BOOT_RESV_SRAM_SZ
 | 
			
		||||
#define TI_OMAP5_SECURE_BOOT_RESV_SRAM_SZ (0)
 | 
			
		||||
#endif
 | 
			
		||||
#ifndef CONFIG_SECURE_RUNTIME_RESV_SRAM_SZ
 | 
			
		||||
#define CONFIG_SECURE_RUNTIME_RESV_SRAM_SZ (0)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
static u32 hs_irq_skip[] = {
 | 
			
		||||
	8,	/* Secure violation reporting interrupt */
 | 
			
		||||
	15,	/* One interrupt for SDMA by secure world */
 | 
			
		||||
	118	/* One interrupt for Crypto DMA by secure world */
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static int ft_hs_fixup_crossbar(void *fdt, bd_t *bd)
 | 
			
		||||
{
 | 
			
		||||
	const char *path;
 | 
			
		||||
	int offs;
 | 
			
		||||
	int ret;
 | 
			
		||||
	int len, i, old_cnt, new_cnt;
 | 
			
		||||
	u32 *temp;
 | 
			
		||||
	const u32 *p_data;
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 * Increase the size of the fdt
 | 
			
		||||
	 * so we have some breathing room
 | 
			
		||||
	 */
 | 
			
		||||
	ret = fdt_increase_size(fdt, 512);
 | 
			
		||||
	if (ret < 0) {
 | 
			
		||||
		printf("Could not increase size of device tree: %s\n",
 | 
			
		||||
		       fdt_strerror(ret));
 | 
			
		||||
		return ret;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/* Reserve IRQs that are used/needed by secure world */
 | 
			
		||||
	path = "/ocp/crossbar";
 | 
			
		||||
	offs = fdt_path_offset(fdt, path);
 | 
			
		||||
	if (offs < 0) {
 | 
			
		||||
		debug("Node %s not found.\n", path);
 | 
			
		||||
		return 0;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/* Get current entries */
 | 
			
		||||
	p_data = fdt_getprop(fdt, offs, "ti,irqs-skip", &len);
 | 
			
		||||
	if (p_data)
 | 
			
		||||
		old_cnt = len / sizeof(u32);
 | 
			
		||||
	else
 | 
			
		||||
		old_cnt = 0;
 | 
			
		||||
 | 
			
		||||
	new_cnt = sizeof(hs_irq_skip) /
 | 
			
		||||
				sizeof(hs_irq_skip[0]);
 | 
			
		||||
 | 
			
		||||
	/* Create new/updated skip list for HS parts */
 | 
			
		||||
	temp = malloc(sizeof(u32) * (old_cnt + new_cnt));
 | 
			
		||||
	for (i = 0; i < new_cnt; i++)
 | 
			
		||||
		temp[i] = cpu_to_fdt32(hs_irq_skip[i]);
 | 
			
		||||
	for (i = 0; i < old_cnt; i++)
 | 
			
		||||
		temp[i + new_cnt] = p_data[i];
 | 
			
		||||
 | 
			
		||||
	/* Blow away old data and set new data */
 | 
			
		||||
	fdt_delprop(fdt, offs, "ti,irqs-skip");
 | 
			
		||||
	ret = fdt_setprop(fdt, offs, "ti,irqs-skip",
 | 
			
		||||
			  temp,
 | 
			
		||||
			  (old_cnt + new_cnt) * sizeof(u32));
 | 
			
		||||
	free(temp);
 | 
			
		||||
 | 
			
		||||
	/* Check if the update worked */
 | 
			
		||||
	if (ret < 0) {
 | 
			
		||||
		printf("Could not add ti,irqs-skip property to node %s: %s\n",
 | 
			
		||||
		       path, fdt_strerror(ret));
 | 
			
		||||
		return ret;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int ft_hs_disable_rng(void *fdt, bd_t *bd)
 | 
			
		||||
{
 | 
			
		||||
	const char *path;
 | 
			
		||||
	int offs;
 | 
			
		||||
	int ret;
 | 
			
		||||
 | 
			
		||||
	/* Make HW RNG reserved for secure world use */
 | 
			
		||||
	path = "/ocp/rng";
 | 
			
		||||
	offs = fdt_path_offset(fdt, path);
 | 
			
		||||
	if (offs < 0) {
 | 
			
		||||
		debug("Node %s not found.\n", path);
 | 
			
		||||
		return 0;
 | 
			
		||||
	}
 | 
			
		||||
	ret = fdt_setprop_string(fdt, offs,
 | 
			
		||||
				 "status", "disabled");
 | 
			
		||||
	if (ret < 0) {
 | 
			
		||||
		printf("Could not add status property to node %s: %s\n",
 | 
			
		||||
		       path, fdt_strerror(ret));
 | 
			
		||||
		return ret;
 | 
			
		||||
	}
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#if ((TI_OMAP5_SECURE_BOOT_RESV_SRAM_SZ != 0) || \
 | 
			
		||||
    (CONFIG_SECURE_RUNTIME_RESV_SRAM_SZ != 0))
 | 
			
		||||
static int ft_hs_fixup_sram(void *fdt, bd_t *bd)
 | 
			
		||||
{
 | 
			
		||||
	const char *path;
 | 
			
		||||
	int offs;
 | 
			
		||||
	int ret;
 | 
			
		||||
	u32 temp[2];
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 * Update SRAM reservations on secure devices. The OCMC RAM
 | 
			
		||||
	 * is always reserved for secure use from the start of that
 | 
			
		||||
	 * memory region
 | 
			
		||||
	 */
 | 
			
		||||
	path = "/ocp/ocmcram@40300000/sram-hs";
 | 
			
		||||
	offs = fdt_path_offset(fdt, path);
 | 
			
		||||
	if (offs < 0) {
 | 
			
		||||
		debug("Node %s not found.\n", path);
 | 
			
		||||
		return 0;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/* relative start offset */
 | 
			
		||||
	temp[0] = cpu_to_fdt32(0);
 | 
			
		||||
	/* reservation size */
 | 
			
		||||
	temp[1] = cpu_to_fdt32(max(TI_OMAP5_SECURE_BOOT_RESV_SRAM_SZ,
 | 
			
		||||
				   CONFIG_SECURE_RUNTIME_RESV_SRAM_SZ));
 | 
			
		||||
	fdt_delprop(fdt, offs, "reg");
 | 
			
		||||
	ret = fdt_setprop(fdt, offs, "reg", temp, 2 * sizeof(u32));
 | 
			
		||||
	if (ret < 0) {
 | 
			
		||||
		printf("Could not add reg property to node %s: %s\n",
 | 
			
		||||
		       path, fdt_strerror(ret));
 | 
			
		||||
		return ret;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
#else
 | 
			
		||||
static int ft_hs_fixup_sram(void *fdt, bd_t *bd) { return 0; }
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
static void ft_hs_fixups(void *fdt, bd_t *bd)
 | 
			
		||||
{
 | 
			
		||||
	/* Check we are running on an HS/EMU device type */
 | 
			
		||||
	if (GP_DEVICE != get_device_type()) {
 | 
			
		||||
		if ((ft_hs_fixup_crossbar(fdt, bd) == 0) &&
 | 
			
		||||
		    (ft_hs_disable_rng(fdt, bd) == 0) &&
 | 
			
		||||
		    (ft_hs_fixup_sram(fdt, bd) == 0))
 | 
			
		||||
			return;
 | 
			
		||||
	} else {
 | 
			
		||||
		printf("ERROR: Incorrect device type (GP) detected!");
 | 
			
		||||
	}
 | 
			
		||||
	/* Fixup failed or wrong device type */
 | 
			
		||||
	hang();
 | 
			
		||||
}
 | 
			
		||||
#else
 | 
			
		||||
static void ft_hs_fixups(void *fdt, bd_t *bd)
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Place for general cpu/SoC FDT fixups. Board specific
 | 
			
		||||
 * fixups should remain in the board files which is where
 | 
			
		||||
 * this function should be called from.
 | 
			
		||||
 */
 | 
			
		||||
void ft_cpu_setup(void *fdt, bd_t *bd)
 | 
			
		||||
{
 | 
			
		||||
	ft_hs_fixups(fdt, bd);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -365,35 +365,35 @@ struct vcores_data omap5430_volts_es2 = {
 | 
			
		|||
};
 | 
			
		||||
 | 
			
		||||
struct vcores_data dra752_volts = {
 | 
			
		||||
	.mpu.value	= VDD_MPU_DRA752,
 | 
			
		||||
	.mpu.efuse.reg	= STD_FUSE_OPP_VMIN_MPU_NOM,
 | 
			
		||||
	.mpu.value	= VDD_MPU_DRA7,
 | 
			
		||||
	.mpu.efuse.reg	= STD_FUSE_OPP_VMIN_MPU,
 | 
			
		||||
	.mpu.efuse.reg_bits	= DRA752_EFUSE_REGBITS,
 | 
			
		||||
	.mpu.addr	= TPS659038_REG_ADDR_SMPS12,
 | 
			
		||||
	.mpu.pmic	= &tps659038,
 | 
			
		||||
	.mpu.abb_tx_done_mask = OMAP_ABB_MPU_TXDONE_MASK,
 | 
			
		||||
 | 
			
		||||
	.eve.value	= VDD_EVE_DRA752,
 | 
			
		||||
	.eve.efuse.reg	= STD_FUSE_OPP_VMIN_DSPEVE_NOM,
 | 
			
		||||
	.eve.value	= VDD_EVE_DRA7,
 | 
			
		||||
	.eve.efuse.reg	= STD_FUSE_OPP_VMIN_DSPEVE,
 | 
			
		||||
	.eve.efuse.reg_bits	= DRA752_EFUSE_REGBITS,
 | 
			
		||||
	.eve.addr	= TPS659038_REG_ADDR_SMPS45,
 | 
			
		||||
	.eve.pmic	= &tps659038,
 | 
			
		||||
	.eve.abb_tx_done_mask = OMAP_ABB_EVE_TXDONE_MASK,
 | 
			
		||||
 | 
			
		||||
	.gpu.value	= VDD_GPU_DRA752,
 | 
			
		||||
	.gpu.efuse.reg	= STD_FUSE_OPP_VMIN_GPU_NOM,
 | 
			
		||||
	.gpu.value	= VDD_GPU_DRA7,
 | 
			
		||||
	.gpu.efuse.reg	= STD_FUSE_OPP_VMIN_GPU,
 | 
			
		||||
	.gpu.efuse.reg_bits	= DRA752_EFUSE_REGBITS,
 | 
			
		||||
	.gpu.addr	= TPS659038_REG_ADDR_SMPS6,
 | 
			
		||||
	.gpu.pmic	= &tps659038,
 | 
			
		||||
	.gpu.abb_tx_done_mask = OMAP_ABB_GPU_TXDONE_MASK,
 | 
			
		||||
 | 
			
		||||
	.core.value	= VDD_CORE_DRA752,
 | 
			
		||||
	.core.efuse.reg	= STD_FUSE_OPP_VMIN_CORE_NOM,
 | 
			
		||||
	.core.value	= VDD_CORE_DRA7,
 | 
			
		||||
	.core.efuse.reg	= STD_FUSE_OPP_VMIN_CORE,
 | 
			
		||||
	.core.efuse.reg_bits = DRA752_EFUSE_REGBITS,
 | 
			
		||||
	.core.addr	= TPS659038_REG_ADDR_SMPS7,
 | 
			
		||||
	.core.pmic	= &tps659038,
 | 
			
		||||
 | 
			
		||||
	.iva.value	= VDD_IVA_DRA752,
 | 
			
		||||
	.iva.efuse.reg	= STD_FUSE_OPP_VMIN_IVA_NOM,
 | 
			
		||||
	.iva.value	= VDD_IVA_DRA7,
 | 
			
		||||
	.iva.efuse.reg	= STD_FUSE_OPP_VMIN_IVA,
 | 
			
		||||
	.iva.efuse.reg_bits	= DRA752_EFUSE_REGBITS,
 | 
			
		||||
	.iva.addr	= TPS659038_REG_ADDR_SMPS8,
 | 
			
		||||
	.iva.pmic	= &tps659038,
 | 
			
		||||
| 
						 | 
				
			
			@ -401,15 +401,15 @@ struct vcores_data dra752_volts = {
 | 
			
		|||
};
 | 
			
		||||
 | 
			
		||||
struct vcores_data dra722_volts = {
 | 
			
		||||
	.mpu.value	= VDD_MPU_DRA72x,
 | 
			
		||||
	.mpu.efuse.reg	= STD_FUSE_OPP_VMIN_MPU_NOM,
 | 
			
		||||
	.mpu.value	= VDD_MPU_DRA7,
 | 
			
		||||
	.mpu.efuse.reg	= STD_FUSE_OPP_VMIN_MPU,
 | 
			
		||||
	.mpu.efuse.reg_bits = DRA752_EFUSE_REGBITS,
 | 
			
		||||
	.mpu.addr	= TPS65917_REG_ADDR_SMPS1,
 | 
			
		||||
	.mpu.pmic	= &tps659038,
 | 
			
		||||
	.mpu.abb_tx_done_mask = OMAP_ABB_MPU_TXDONE_MASK,
 | 
			
		||||
 | 
			
		||||
	.core.value	= VDD_CORE_DRA72x,
 | 
			
		||||
	.core.efuse.reg	= STD_FUSE_OPP_VMIN_CORE_NOM,
 | 
			
		||||
	.core.value	= VDD_CORE_DRA7,
 | 
			
		||||
	.core.efuse.reg	= STD_FUSE_OPP_VMIN_CORE,
 | 
			
		||||
	.core.efuse.reg_bits = DRA752_EFUSE_REGBITS,
 | 
			
		||||
	.core.addr	= TPS65917_REG_ADDR_SMPS2,
 | 
			
		||||
	.core.pmic	= &tps659038,
 | 
			
		||||
| 
						 | 
				
			
			@ -418,22 +418,22 @@ struct vcores_data dra722_volts = {
 | 
			
		|||
	 * The DSPEVE, GPU and IVA rails are usually grouped on DRA72x
 | 
			
		||||
	 * designs and powered by TPS65917 SMPS3, as on the J6Eco EVM.
 | 
			
		||||
	 */
 | 
			
		||||
	.gpu.value	= VDD_GPU_DRA72x,
 | 
			
		||||
	.gpu.efuse.reg	= STD_FUSE_OPP_VMIN_GPU_NOM,
 | 
			
		||||
	.gpu.value	= VDD_GPU_DRA7,
 | 
			
		||||
	.gpu.efuse.reg	= STD_FUSE_OPP_VMIN_GPU,
 | 
			
		||||
	.gpu.efuse.reg_bits = DRA752_EFUSE_REGBITS,
 | 
			
		||||
	.gpu.addr	= TPS65917_REG_ADDR_SMPS3,
 | 
			
		||||
	.gpu.pmic	= &tps659038,
 | 
			
		||||
	.gpu.abb_tx_done_mask = OMAP_ABB_GPU_TXDONE_MASK,
 | 
			
		||||
 | 
			
		||||
	.eve.value	= VDD_EVE_DRA72x,
 | 
			
		||||
	.eve.efuse.reg	= STD_FUSE_OPP_VMIN_DSPEVE_NOM,
 | 
			
		||||
	.eve.value	= VDD_EVE_DRA7,
 | 
			
		||||
	.eve.efuse.reg	= STD_FUSE_OPP_VMIN_DSPEVE,
 | 
			
		||||
	.eve.efuse.reg_bits = DRA752_EFUSE_REGBITS,
 | 
			
		||||
	.eve.addr	= TPS65917_REG_ADDR_SMPS3,
 | 
			
		||||
	.eve.pmic	= &tps659038,
 | 
			
		||||
	.eve.abb_tx_done_mask = OMAP_ABB_EVE_TXDONE_MASK,
 | 
			
		||||
 | 
			
		||||
	.iva.value	= VDD_IVA_DRA72x,
 | 
			
		||||
	.iva.efuse.reg	= STD_FUSE_OPP_VMIN_IVA_NOM,
 | 
			
		||||
	.iva.value	= VDD_IVA_DRA7,
 | 
			
		||||
	.iva.efuse.reg	= STD_FUSE_OPP_VMIN_IVA,
 | 
			
		||||
	.iva.efuse.reg_bits = DRA752_EFUSE_REGBITS,
 | 
			
		||||
	.iva.addr	= TPS65917_REG_ADDR_SMPS3,
 | 
			
		||||
	.iva.pmic	= &tps659038,
 | 
			
		||||
| 
						 | 
				
			
			@ -602,7 +602,7 @@ void disable_edma3_clocks(void)
 | 
			
		|||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef CONFIG_USB_DWC3
 | 
			
		||||
#if defined(CONFIG_USB_DWC3) || defined(CONFIG_USB_XHCI_OMAP)
 | 
			
		||||
void enable_usb_clocks(int index)
 | 
			
		||||
{
 | 
			
		||||
	u32 cm_l3init_usb_otg_ss_clkctrl = 0;
 | 
			
		||||
| 
						 | 
				
			
			@ -614,9 +614,14 @@ void enable_usb_clocks(int index)
 | 
			
		|||
		setbits_le32((*prcm)->cm_l3init_usb_otg_ss1_clkctrl,
 | 
			
		||||
			     OPTFCLKEN_REFCLK960M);
 | 
			
		||||
 | 
			
		||||
		/* Enable 32 KHz clock for dwc3 */
 | 
			
		||||
		/* Enable 32 KHz clock for USB_PHY1 */
 | 
			
		||||
		setbits_le32((*prcm)->cm_coreaon_usb_phy1_core_clkctrl,
 | 
			
		||||
			     USBPHY_CORE_CLKCTRL_OPTFCLKEN_CLK32K);
 | 
			
		||||
 | 
			
		||||
		/* Enable 32 KHz clock for USB_PHY3 */
 | 
			
		||||
		if (is_dra7xx())
 | 
			
		||||
			setbits_le32((*prcm)->cm_coreaon_usb_phy3_core_clkctrl,
 | 
			
		||||
				     USBPHY_CORE_CLKCTRL_OPTFCLKEN_CLK32K);
 | 
			
		||||
	} else if (index == 1) {
 | 
			
		||||
		cm_l3init_usb_otg_ss_clkctrl =
 | 
			
		||||
			(*prcm)->cm_l3init_usb_otg_ss2_clkctrl;
 | 
			
		||||
| 
						 | 
				
			
			@ -664,9 +669,14 @@ void disable_usb_clocks(int index)
 | 
			
		|||
		clrbits_le32((*prcm)->cm_l3init_usb_otg_ss1_clkctrl,
 | 
			
		||||
			     OPTFCLKEN_REFCLK960M);
 | 
			
		||||
 | 
			
		||||
		/* Disable 32 KHz clock for dwc3 */
 | 
			
		||||
		/* Disable 32 KHz clock for USB_PHY1 */
 | 
			
		||||
		clrbits_le32((*prcm)->cm_coreaon_usb_phy1_core_clkctrl,
 | 
			
		||||
			     USBPHY_CORE_CLKCTRL_OPTFCLKEN_CLK32K);
 | 
			
		||||
 | 
			
		||||
		/* Disable 32 KHz clock for USB_PHY3 */
 | 
			
		||||
		if (is_dra7xx())
 | 
			
		||||
			clrbits_le32((*prcm)->cm_coreaon_usb_phy3_core_clkctrl,
 | 
			
		||||
				     USBPHY_CORE_CLKCTRL_OPTFCLKEN_CLK32K);
 | 
			
		||||
	} else if (index == 1) {
 | 
			
		||||
		cm_l3init_usb_otg_ss_clkctrl =
 | 
			
		||||
			(*prcm)->cm_l3init_usb_otg_ss2_clkctrl;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -820,6 +820,7 @@ struct prcm_regs const dra7xx_prcm = {
 | 
			
		|||
	.cm_clkmode_dpll_gmac			= 0x4a0052a8,
 | 
			
		||||
	.cm_coreaon_usb_phy1_core_clkctrl	= 0x4a008640,
 | 
			
		||||
	.cm_coreaon_usb_phy2_core_clkctrl	= 0x4a008688,
 | 
			
		||||
	.cm_coreaon_usb_phy3_core_clkctrl	= 0x4a008698,
 | 
			
		||||
	.cm_coreaon_l3init_60m_gfclk_clkctrl	= 0x4a0086c0,
 | 
			
		||||
 | 
			
		||||
	/* cm1.mpu */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -12,6 +12,9 @@
 | 
			
		|||
#include <asm/io.h>
 | 
			
		||||
#include <asm/arch/pwm.h>
 | 
			
		||||
#include <asm/arch/clk.h>
 | 
			
		||||
 | 
			
		||||
/* Use the old PWM interface for now */
 | 
			
		||||
#undef CONFIG_DM_PWM
 | 
			
		||||
#include <pwm.h>
 | 
			
		||||
 | 
			
		||||
DECLARE_GLOBAL_DATA_PTR;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,15 +14,15 @@
 | 
			
		|||
#include <linux/linkage.h>
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * void __asm_flush_dcache_level(level)
 | 
			
		||||
 * void __asm_dcache_level(level)
 | 
			
		||||
 *
 | 
			
		||||
 * clean and invalidate one level cache.
 | 
			
		||||
 * flush or invalidate one level cache.
 | 
			
		||||
 *
 | 
			
		||||
 * x0: cache level
 | 
			
		||||
 * x1: 0 flush & invalidate, 1 invalidate only
 | 
			
		||||
 * x1: 0 clean & invalidate, 1 invalidate only
 | 
			
		||||
 * x2~x9: clobbered
 | 
			
		||||
 */
 | 
			
		||||
ENTRY(__asm_flush_dcache_level)
 | 
			
		||||
ENTRY(__asm_dcache_level)
 | 
			
		||||
	lsl	x12, x0, #1
 | 
			
		||||
	msr	csselr_el1, x12		/* select cache level */
 | 
			
		||||
	isb				/* sync change of cssidr_el1 */
 | 
			
		||||
| 
						 | 
				
			
			@ -57,14 +57,14 @@ loop_way:
 | 
			
		|||
	b.ge	loop_set
 | 
			
		||||
 | 
			
		||||
	ret
 | 
			
		||||
ENDPROC(__asm_flush_dcache_level)
 | 
			
		||||
ENDPROC(__asm_dcache_level)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * void __asm_flush_dcache_all(int invalidate_only)
 | 
			
		||||
 *
 | 
			
		||||
 * x0: 0 flush & invalidate, 1 invalidate only
 | 
			
		||||
 * x0: 0 clean & invalidate, 1 invalidate only
 | 
			
		||||
 *
 | 
			
		||||
 * clean and invalidate all data cache by SET/WAY.
 | 
			
		||||
 * flush or invalidate all data cache by SET/WAY.
 | 
			
		||||
 */
 | 
			
		||||
ENTRY(__asm_dcache_all)
 | 
			
		||||
	mov	x1, x0
 | 
			
		||||
| 
						 | 
				
			
			@ -87,7 +87,7 @@ loop_level:
 | 
			
		|||
	and	x12, x12, #7		/* x12 <- cache type */
 | 
			
		||||
	cmp	x12, #2
 | 
			
		||||
	b.lt	skip			/* skip if no cache or icache */
 | 
			
		||||
	bl	__asm_flush_dcache_level	/* x1 = 0 flush, 1 invalidate */
 | 
			
		||||
	bl	__asm_dcache_level	/* x1 = 0 flush, 1 invalidate */
 | 
			
		||||
skip:
 | 
			
		||||
	add	x0, x0, #1		/* increment cache level */
 | 
			
		||||
	cmp	x11, x0
 | 
			
		||||
| 
						 | 
				
			
			@ -104,19 +104,13 @@ finished:
 | 
			
		|||
ENDPROC(__asm_dcache_all)
 | 
			
		||||
 | 
			
		||||
ENTRY(__asm_flush_dcache_all)
 | 
			
		||||
	mov	x16, lr
 | 
			
		||||
	mov	x0, #0
 | 
			
		||||
	bl	__asm_dcache_all
 | 
			
		||||
	mov	lr, x16
 | 
			
		||||
	ret
 | 
			
		||||
	b	__asm_dcache_all
 | 
			
		||||
ENDPROC(__asm_flush_dcache_all)
 | 
			
		||||
 | 
			
		||||
ENTRY(__asm_invalidate_dcache_all)
 | 
			
		||||
	mov	x16, lr
 | 
			
		||||
	mov	x0, #0x1
 | 
			
		||||
	bl	__asm_dcache_all
 | 
			
		||||
	mov	lr, x16
 | 
			
		||||
	ret
 | 
			
		||||
	b	__asm_dcache_all
 | 
			
		||||
ENDPROC(__asm_invalidate_dcache_all)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -28,3 +28,7 @@ endif
 | 
			
		|||
ifneq ($(CONFIG_LS1043A),)
 | 
			
		||||
obj-$(CONFIG_SYS_HAS_SERDES) += ls1043a_serdes.o
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
ifneq ($(CONFIG_LS1012A),)
 | 
			
		||||
obj-$(CONFIG_SYS_HAS_SERDES) += ls1012a_serdes.o
 | 
			
		||||
endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -396,9 +396,6 @@ static inline void final_mmu_setup(void)
 | 
			
		|||
	flush_dcache_range((ulong)level0_table,
 | 
			
		||||
			   (ulong)level0_table + gd->arch.tlb_size);
 | 
			
		||||
 | 
			
		||||
#ifdef CONFIG_SYS_DPAA_FMAN
 | 
			
		||||
	flush_dcache_all();
 | 
			
		||||
#endif
 | 
			
		||||
	/* point TTBR to the new table */
 | 
			
		||||
	set_ttbr_tcr_mair(el, (u64)level0_table, LAYERSCAPE_TCR_FINAL,
 | 
			
		||||
			  MEMORY_ATTRIBUTES);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,129 @@
 | 
			
		|||
SoC overview
 | 
			
		||||
 | 
			
		||||
	1. LS1043A
 | 
			
		||||
	2. LS2080A
 | 
			
		||||
	3. LS1012A
 | 
			
		||||
 | 
			
		||||
LS1043A
 | 
			
		||||
---------
 | 
			
		||||
The LS1043A integrated multicore processor combines four ARM Cortex-A53
 | 
			
		||||
processor cores with datapath acceleration optimized for L2/3 packet
 | 
			
		||||
processing, single pass security offload and robust traffic management
 | 
			
		||||
and quality of service.
 | 
			
		||||
 | 
			
		||||
The LS1043A SoC includes the following function and features:
 | 
			
		||||
 - Four 64-bit ARM Cortex-A53 CPUs
 | 
			
		||||
 - 1 MB unified L2 Cache
 | 
			
		||||
 - One 32-bit DDR3L/DDR4 SDRAM memory controllers with ECC and interleaving
 | 
			
		||||
   support
 | 
			
		||||
 - Data Path Acceleration Architecture (DPAA) incorporating acceleration the
 | 
			
		||||
   the following functions:
 | 
			
		||||
   - Packet parsing, classification, and distribution (FMan)
 | 
			
		||||
   - Queue management for scheduling, packet sequencing, and congestion
 | 
			
		||||
     management (QMan)
 | 
			
		||||
   - Hardware buffer management for buffer allocation and de-allocation (BMan)
 | 
			
		||||
   - Cryptography acceleration (SEC)
 | 
			
		||||
 - Ethernet interfaces by FMan
 | 
			
		||||
   - Up to 1 x XFI supporting 10G interface
 | 
			
		||||
   - Up to 1 x QSGMII
 | 
			
		||||
   - Up to 4 x SGMII supporting 1000Mbps
 | 
			
		||||
   - Up to 2 x SGMII supporting 2500Mbps
 | 
			
		||||
   - Up to 2 x RGMII supporting 1000Mbps
 | 
			
		||||
 - High-speed peripheral interfaces
 | 
			
		||||
   - Three PCIe 2.0 controllers, one supporting x4 operation
 | 
			
		||||
   - One serial ATA (SATA 3.0) controllers
 | 
			
		||||
 - Additional peripheral interfaces
 | 
			
		||||
   - Three high-speed USB 3.0 controllers with integrated PHY
 | 
			
		||||
   - Enhanced secure digital host controller (eSDXC/eMMC)
 | 
			
		||||
   - Quad Serial Peripheral Interface (QSPI) Controller
 | 
			
		||||
   - Serial peripheral interface (SPI) controller
 | 
			
		||||
   - Four I2C controllers
 | 
			
		||||
   - Two DUARTs
 | 
			
		||||
   - Integrated flash controller supporting NAND and NOR flash
 | 
			
		||||
 - QorIQ platform's trust architecture 2.1
 | 
			
		||||
 | 
			
		||||
LS2080A
 | 
			
		||||
--------
 | 
			
		||||
The LS2080A integrated multicore processor combines eight ARM Cortex-A57
 | 
			
		||||
processor cores with high-performance data path acceleration logic and network
 | 
			
		||||
and peripheral bus interfaces required for networking, telecom/datacom,
 | 
			
		||||
wireless infrastructure, and mil/aerospace applications.
 | 
			
		||||
 | 
			
		||||
The LS2080A SoC includes the following function and features:
 | 
			
		||||
 | 
			
		||||
 - Eight 64-bit ARM Cortex-A57 CPUs
 | 
			
		||||
 - 1 MB platform cache with ECC
 | 
			
		||||
 - Two 64-bit DDR4 SDRAM memory controllers with ECC and interleaving support
 | 
			
		||||
 - One secondary 32-bit DDR4 SDRAM memory controller, intended for use by
 | 
			
		||||
  the AIOP
 | 
			
		||||
 - Data path acceleration architecture (DPAA2) incorporating acceleration for
 | 
			
		||||
 the following functions:
 | 
			
		||||
   - Packet parsing, classification, and distribution (WRIOP)
 | 
			
		||||
   - Queue and Hardware buffer management for scheduling, packet sequencing, and
 | 
			
		||||
     congestion management, buffer allocation and de-allocation (QBMan)
 | 
			
		||||
   - Cryptography acceleration (SEC) at up to 10 Gbps
 | 
			
		||||
   - RegEx pattern matching acceleration (PME) at up to 10 Gbps
 | 
			
		||||
   - Decompression/compression acceleration (DCE) at up to 20 Gbps
 | 
			
		||||
   - Accelerated I/O processing (AIOP) at up to 20 Gbps
 | 
			
		||||
   - QDMA engine
 | 
			
		||||
 - 16 SerDes lanes at up to 10.3125 GHz
 | 
			
		||||
 - Ethernet interfaces
 | 
			
		||||
   - Up to eight 10 Gbps Ethernet MACs
 | 
			
		||||
   - Up to eight 1 / 2.5 Gbps Ethernet MACs
 | 
			
		||||
 - High-speed peripheral interfaces
 | 
			
		||||
   - Four PCIe 3.0 controllers, one supporting SR-IOV
 | 
			
		||||
 - Additional peripheral interfaces
 | 
			
		||||
   - Two serial ATA (SATA 3.0) controllers
 | 
			
		||||
   - Two high-speed USB 3.0 controllers with integrated PHY
 | 
			
		||||
   - Enhanced secure digital host controller (eSDXC/eMMC)
 | 
			
		||||
   - Serial peripheral interface (SPI) controller
 | 
			
		||||
   - Quad Serial Peripheral Interface (QSPI) Controller
 | 
			
		||||
   - Four I2C controllers
 | 
			
		||||
   - Two DUARTs
 | 
			
		||||
   - Integrated flash controller (IFC 2.0) supporting NAND and NOR flash
 | 
			
		||||
 - Support for hardware virtualization and partitioning enforcement
 | 
			
		||||
 - QorIQ platform's trust architecture 3.0
 | 
			
		||||
 - Service processor (SP) provides pre-boot initialization and secure-boot
 | 
			
		||||
  capabilities
 | 
			
		||||
 | 
			
		||||
LS1012A
 | 
			
		||||
--------
 | 
			
		||||
The LS1012A features an advanced 64-bit ARM v8 Cortex-
 | 
			
		||||
A53 processor, with 32 KB of parity protected L1-I cache,
 | 
			
		||||
32 KB of ECC protected L1-D cache, as well as 256 KB of
 | 
			
		||||
ECC protected L2 cache.
 | 
			
		||||
 | 
			
		||||
The LS1012A SoC includes the following function and features:
 | 
			
		||||
 - One 64-bit ARM v8 Cortex-A53 core with the following capabilities:
 | 
			
		||||
 - ARM v8 cryptography extensions
 | 
			
		||||
 - One 16-bit DDR3L SDRAM memory controller, Up to 1.0 GT/s, Supports
 | 
			
		||||
    16-/8-bit operation (no ECC support)
 | 
			
		||||
 - ARM core-link CCI-400 cache coherent interconnect
 | 
			
		||||
 - Packet Forwarding Engine (PFE)
 | 
			
		||||
 - Cryptography acceleration (SEC)
 | 
			
		||||
 - Ethernet interfaces supported by PFE:
 | 
			
		||||
 - One Configurable x3 SerDes:
 | 
			
		||||
    Two Serdes PLLs supported for usage by any SerDes data lane
 | 
			
		||||
    Support for up to 6 GBaud operation
 | 
			
		||||
 - High-speed peripheral interfaces:
 | 
			
		||||
     - One PCI Express Gen2 controller, supporting x1 operation
 | 
			
		||||
     - One serial ATA (SATA Gen 3.0) controller
 | 
			
		||||
     - One USB 3.0/2.0 controller with integrated PHY
 | 
			
		||||
     - One USB 2.0 controller with ULPI interface. .
 | 
			
		||||
 - Additional peripheral interfaces:
 | 
			
		||||
    - One quad serial peripheral interface (QuadSPI) controller
 | 
			
		||||
    - One serial peripheral interface (SPI) controller
 | 
			
		||||
    - Two enhanced secure digital host controllers
 | 
			
		||||
    - Two I2C controllers
 | 
			
		||||
    - One 16550 compliant DUART (two UART interfaces)
 | 
			
		||||
    - Two general purpose IOs (GPIO)
 | 
			
		||||
    - Two FlexTimers
 | 
			
		||||
    - Five synchronous audio interfaces (SAI)
 | 
			
		||||
    - Pre-boot loader (PBL) provides pre-boot initialization and RCW loading
 | 
			
		||||
    - Single-source clocking solution enabling generation of core, platform,
 | 
			
		||||
    DDR, SerDes, and USB clocks from a single external crystal and internal
 | 
			
		||||
    crystaloscillator
 | 
			
		||||
    - Thermal monitor unit (TMU) with +/- 3C accuracy
 | 
			
		||||
    - Two WatchDog timers
 | 
			
		||||
    - ARM generic timer
 | 
			
		||||
 - QorIQ platform's trust architecture 2.1
 | 
			
		||||
| 
						 | 
				
			
			@ -20,6 +20,8 @@
 | 
			
		|||
#ifdef CONFIG_MP
 | 
			
		||||
#include <asm/arch/mp.h>
 | 
			
		||||
#endif
 | 
			
		||||
#include <fsl_sec.h>
 | 
			
		||||
#include <asm/arch-fsl-layerscape/soc.h>
 | 
			
		||||
 | 
			
		||||
int fdt_fixup_phy_connection(void *blob, int offset, phy_interface_t phyc)
 | 
			
		||||
{
 | 
			
		||||
| 
						 | 
				
			
			@ -75,6 +77,23 @@ void ft_fixup_cpu(void *blob)
 | 
			
		|||
 | 
			
		||||
void ft_cpu_setup(void *blob, bd_t *bd)
 | 
			
		||||
{
 | 
			
		||||
#ifdef CONFIG_FSL_LSCH2
 | 
			
		||||
	struct ccsr_gur __iomem *gur = (void *)(CONFIG_SYS_FSL_GUTS_ADDR);
 | 
			
		||||
	unsigned int svr = in_be32(&gur->svr);
 | 
			
		||||
 | 
			
		||||
	/* delete crypto node if not on an E-processor */
 | 
			
		||||
	if (!IS_E_PROCESSOR(svr))
 | 
			
		||||
		fdt_fixup_crypto_node(blob, 0);
 | 
			
		||||
#if CONFIG_SYS_FSL_SEC_COMPAT >= 4
 | 
			
		||||
	else {
 | 
			
		||||
		ccsr_sec_t __iomem *sec;
 | 
			
		||||
 | 
			
		||||
		sec = (void __iomem *)CONFIG_SYS_FSL_SEC_ADDR;
 | 
			
		||||
		fdt_fixup_crypto_node(blob, sec_in32(&sec->secvid_ms));
 | 
			
		||||
	}
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef CONFIG_MP
 | 
			
		||||
	ft_fixup_cpu(blob);
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -25,7 +25,10 @@ void get_sys_info(struct sys_info *sys_info)
 | 
			
		|||
	struct fsl_ifc ifc_regs = {(void *)CONFIG_SYS_IFC_ADDR, (void *)NULL};
 | 
			
		||||
	u32 ccr;
 | 
			
		||||
#endif
 | 
			
		||||
#if defined(CONFIG_FSL_ESDHC) || defined(CONFIG_SYS_DPAA_FMAN)
 | 
			
		||||
#if (defined(CONFIG_FSL_ESDHC) &&\
 | 
			
		||||
	defined(CONFIG_FSL_ESDHC_USE_PERIPHERAL_CLK)) ||\
 | 
			
		||||
	defined(CONFIG_SYS_DPAA_FMAN)
 | 
			
		||||
 | 
			
		||||
	u32 rcw_tmp;
 | 
			
		||||
#endif
 | 
			
		||||
	struct ccsr_clk *clk = (void *)(CONFIG_SYS_FSL_CLK_ADDR);
 | 
			
		||||
| 
						 | 
				
			
			@ -56,12 +59,18 @@ void get_sys_info(struct sys_info *sys_info)
 | 
			
		|||
	sys_info->freq_ddrbus = sysclk;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef CONFIG_LS1012A
 | 
			
		||||
	sys_info->freq_ddrbus *= (gur_in32(&gur->rcwsr[0]) >>
 | 
			
		||||
			FSL_CHASSIS2_RCWSR0_SYS_PLL_RAT_SHIFT) &
 | 
			
		||||
			FSL_CHASSIS2_RCWSR0_SYS_PLL_RAT_MASK;
 | 
			
		||||
#else
 | 
			
		||||
	sys_info->freq_systembus *= (gur_in32(&gur->rcwsr[0]) >>
 | 
			
		||||
			FSL_CHASSIS2_RCWSR0_SYS_PLL_RAT_SHIFT) &
 | 
			
		||||
			FSL_CHASSIS2_RCWSR0_SYS_PLL_RAT_MASK;
 | 
			
		||||
	sys_info->freq_ddrbus *= (gur_in32(&gur->rcwsr[0]) >>
 | 
			
		||||
			FSL_CHASSIS2_RCWSR0_MEM_PLL_RAT_SHIFT) &
 | 
			
		||||
			FSL_CHASSIS2_RCWSR0_MEM_PLL_RAT_MASK;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	for (i = 0; i < CONFIG_SYS_FSL_NUM_CC_PLLS; i++) {
 | 
			
		||||
		ratio[i] = (in_be32(&clk->pllcgsr[i].pllcngsr) >> 1) & 0xff;
 | 
			
		||||
| 
						 | 
				
			
			@ -80,6 +89,11 @@ void get_sys_info(struct sys_info *sys_info)
 | 
			
		|||
			freq_c_pll[cplx_pll] / core_cplx_pll_div[c_pll_sel];
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
#ifdef CONFIG_LS1012A
 | 
			
		||||
	sys_info->freq_systembus = sys_info->freq_ddrbus / 2;
 | 
			
		||||
	sys_info->freq_ddrbus *= 2;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#define HWA_CGA_M1_CLK_SEL	0xe0000000
 | 
			
		||||
#define HWA_CGA_M1_CLK_SHIFT	29
 | 
			
		||||
#ifdef CONFIG_SYS_DPAA_FMAN
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -94,11 +94,13 @@ ENTRY(lowlevel_init)
 | 
			
		|||
	bl	ccn504_set_qos
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef SMMU_BASE
 | 
			
		||||
	/* Set the SMMU page size in the sACR register */
 | 
			
		||||
	ldr	x1, =SMMU_BASE
 | 
			
		||||
	ldr	w0, [x1, #0x10]
 | 
			
		||||
	orr	w0, w0, #1 << 16  /* set sACR.pagesize to indicate 64K page */
 | 
			
		||||
	str	w0, [x1, #0x10]
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	/* Initialize GIC Secure Bank Status */
 | 
			
		||||
#if defined(CONFIG_GICV2) || defined(CONFIG_GICV3)
 | 
			
		||||
| 
						 | 
				
			
			@ -181,6 +183,7 @@ ENTRY(lowlevel_init)
 | 
			
		|||
	ret
 | 
			
		||||
ENDPROC(lowlevel_init)
 | 
			
		||||
 | 
			
		||||
#ifdef CONFIG_FSL_LSCH3
 | 
			
		||||
hnf_pstate_poll:
 | 
			
		||||
	/* x0 has the desired status, return 0 for success, 1 for timeout
 | 
			
		||||
	 * clobber x1, x2, x3, x4, x6, x7
 | 
			
		||||
| 
						 | 
				
			
			@ -258,6 +261,7 @@ ENTRY(__asm_flush_l3_cache)
 | 
			
		|||
	mov	lr, x29
 | 
			
		||||
	ret
 | 
			
		||||
ENDPROC(__asm_flush_l3_cache)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef CONFIG_MP
 | 
			
		||||
	/* Keep literals not used by the secondary boot code outside it */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,74 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Copyright 2016 Freescale Semiconductor, Inc.
 | 
			
		||||
 *
 | 
			
		||||
 * SPDX-License-Identifier:	GPL-2.0+
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include <common.h>
 | 
			
		||||
#include <asm/arch/fsl_serdes.h>
 | 
			
		||||
#include <asm/arch/immap_lsch2.h>
 | 
			
		||||
 | 
			
		||||
struct serdes_config {
 | 
			
		||||
	u32 protocol;
 | 
			
		||||
	u8 lanes[SRDS_MAX_LANES];
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static struct serdes_config serdes1_cfg_tbl[] = {
 | 
			
		||||
	{0x2208, {SGMII_2500_FM1_DTSEC1, SGMII_2500_FM1_DTSEC2, NONE, SATA1} },
 | 
			
		||||
	{0x0008, {NONE, NONE, NONE, SATA1} },
 | 
			
		||||
	{0x3508, {SGMII_FM1_DTSEC1, PCIE1, NONE, SATA1} },
 | 
			
		||||
	{0x3305, {SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2, NONE, PCIE1} },
 | 
			
		||||
	{0x2205, {SGMII_2500_FM1_DTSEC1, SGMII_2500_FM1_DTSEC2, NONE, PCIE1} },
 | 
			
		||||
	{0x2305, {SGMII_2500_FM1_DTSEC1, SGMII_FM1_DTSEC2, NONE, PCIE1} },
 | 
			
		||||
	{0x9508, {TX_CLK, PCIE1, NONE, SATA1} },
 | 
			
		||||
	{0x3905, {SGMII_FM1_DTSEC1, TX_CLK, NONE, PCIE1} },
 | 
			
		||||
	{0x9305, {TX_CLK, SGMII_FM1_DTSEC2, NONE, PCIE1} },
 | 
			
		||||
	{}
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static struct serdes_config *serdes_cfg_tbl[] = {
 | 
			
		||||
	serdes1_cfg_tbl,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
enum srds_prtcl serdes_get_prtcl(int serdes, int cfg, int lane)
 | 
			
		||||
{
 | 
			
		||||
	struct serdes_config *ptr;
 | 
			
		||||
 | 
			
		||||
	if (serdes >= ARRAY_SIZE(serdes_cfg_tbl))
 | 
			
		||||
		return 0;
 | 
			
		||||
 | 
			
		||||
	ptr = serdes_cfg_tbl[serdes];
 | 
			
		||||
	while (ptr->protocol) {
 | 
			
		||||
		if (ptr->protocol == cfg)
 | 
			
		||||
			return ptr->lanes[lane];
 | 
			
		||||
		ptr++;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int is_serdes_prtcl_valid(int serdes, u32 prtcl)
 | 
			
		||||
{
 | 
			
		||||
	int i;
 | 
			
		||||
	struct serdes_config *ptr;
 | 
			
		||||
 | 
			
		||||
	if (serdes >= ARRAY_SIZE(serdes_cfg_tbl))
 | 
			
		||||
		return 0;
 | 
			
		||||
 | 
			
		||||
	ptr = serdes_cfg_tbl[serdes];
 | 
			
		||||
	while (ptr->protocol) {
 | 
			
		||||
		if (ptr->protocol == prtcl)
 | 
			
		||||
			break;
 | 
			
		||||
		ptr++;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (!ptr->protocol)
 | 
			
		||||
		return 0;
 | 
			
		||||
 | 
			
		||||
	for (i = 0; i < SRDS_MAX_LANES; i++) {
 | 
			
		||||
		if (ptr->lanes[i] != NONE)
 | 
			
		||||
			return 1;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -12,6 +12,10 @@
 | 
			
		|||
#include <asm/io.h>
 | 
			
		||||
#include <asm/global_data.h>
 | 
			
		||||
#include <asm/arch-fsl-layerscape/config.h>
 | 
			
		||||
#ifdef CONFIG_SYS_FSL_DDR
 | 
			
		||||
#include <fsl_ddr_sdram.h>
 | 
			
		||||
#include <fsl_ddr.h>
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef CONFIG_CHAIN_OF_TRUST
 | 
			
		||||
#include <fsl_validate.h>
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			@ -222,7 +226,7 @@ int sata_init(void)
 | 
			
		|||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#elif defined(CONFIG_LS1043A)
 | 
			
		||||
#elif defined(CONFIG_FSL_LSCH2)
 | 
			
		||||
#ifdef CONFIG_SCSI_AHCI_PLAT
 | 
			
		||||
int sata_init(void)
 | 
			
		||||
{
 | 
			
		||||
| 
						 | 
				
			
			@ -271,6 +275,39 @@ static void erratum_a009660(void)
 | 
			
		|||
#endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void erratum_a008850_early(void)
 | 
			
		||||
{
 | 
			
		||||
#ifdef CONFIG_SYS_FSL_ERRATUM_A008850
 | 
			
		||||
	/* part 1 of 2 */
 | 
			
		||||
	struct ccsr_cci400 __iomem *cci = (void *)CONFIG_SYS_CCI400_ADDR;
 | 
			
		||||
	struct ccsr_ddr __iomem *ddr = (void *)CONFIG_SYS_FSL_DDR_ADDR;
 | 
			
		||||
 | 
			
		||||
	/* disables propagation of barrier transactions to DDRC from CCI400 */
 | 
			
		||||
	out_le32(&cci->ctrl_ord, CCI400_CTRLORD_TERM_BARRIER);
 | 
			
		||||
 | 
			
		||||
	/* disable the re-ordering in DDRC */
 | 
			
		||||
	ddr_out32(&ddr->eor, DDR_EOR_RD_REOD_DIS | DDR_EOR_WD_REOD_DIS);
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void erratum_a008850_post(void)
 | 
			
		||||
{
 | 
			
		||||
#ifdef CONFIG_SYS_FSL_ERRATUM_A008850
 | 
			
		||||
	/* part 2 of 2 */
 | 
			
		||||
	struct ccsr_cci400 __iomem *cci = (void *)CONFIG_SYS_CCI400_ADDR;
 | 
			
		||||
	struct ccsr_ddr __iomem *ddr = (void *)CONFIG_SYS_FSL_DDR_ADDR;
 | 
			
		||||
	u32 tmp;
 | 
			
		||||
 | 
			
		||||
	/* enable propagation of barrier transactions to DDRC from CCI400 */
 | 
			
		||||
	out_le32(&cci->ctrl_ord, CCI400_CTRLORD_EN_BARRIER);
 | 
			
		||||
 | 
			
		||||
	/* enable the re-ordering in DDRC */
 | 
			
		||||
	tmp = ddr_in32(&ddr->eor);
 | 
			
		||||
	tmp &= ~(DDR_EOR_RD_REOD_DIS | DDR_EOR_WD_REOD_DIS);
 | 
			
		||||
	ddr_out32(&ddr->eor, tmp);
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void fsl_lsch2_early_init_f(void)
 | 
			
		||||
{
 | 
			
		||||
	struct ccsr_cci400 *cci = (struct ccsr_cci400 *)CONFIG_SYS_CCI400_ADDR;
 | 
			
		||||
| 
						 | 
				
			
			@ -295,6 +332,7 @@ void fsl_lsch2_early_init_f(void)
 | 
			
		|||
		 CCI400_DVM_MESSAGE_REQ_EN | CCI400_SNOOP_REQ_EN);
 | 
			
		||||
 | 
			
		||||
	/* Erratum */
 | 
			
		||||
	erratum_a008850_early(); /* part 1 of 2 */
 | 
			
		||||
	erratum_a009929();
 | 
			
		||||
	erratum_a009660();
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -29,7 +29,7 @@ u32 spl_boot_mode(void)
 | 
			
		|||
	switch (spl_boot_device()) {
 | 
			
		||||
	case BOOT_DEVICE_MMC1:
 | 
			
		||||
#ifdef CONFIG_SPL_FAT_SUPPORT
 | 
			
		||||
		return MMCSD_MODE_FAT;
 | 
			
		||||
		return MMCSD_MODE_FS;
 | 
			
		||||
#else
 | 
			
		||||
		return MMCSD_MODE_RAW;
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			@ -48,9 +48,6 @@ void board_init_f(ulong dummy)
 | 
			
		|||
	memset((void *)gd, 0, sizeof(gd_t));
 | 
			
		||||
#ifdef CONFIG_LS2080A
 | 
			
		||||
	arch_cpu_init();
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef CONFIG_FSL_IFC
 | 
			
		||||
	init_early_memctl_regs();
 | 
			
		||||
#endif
 | 
			
		||||
	board_early_init_f();
 | 
			
		||||
	timer_init();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -8,6 +8,7 @@
 | 
			
		|||
#include <config.h>
 | 
			
		||||
#include <version.h>
 | 
			
		||||
#include <asm/macro.h>
 | 
			
		||||
#include <asm/psci.h>
 | 
			
		||||
#include <asm/system.h>
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
| 
						 | 
				
			
			@ -73,3 +74,18 @@ void smc_call(struct pt_regs *args)
 | 
			
		|||
		  "x8", "x9", "x10", "x11", "x12", "x13", "x14", "x15",
 | 
			
		||||
		  "x16", "x17");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void __noreturn psci_system_reset(bool conduit_smc)
 | 
			
		||||
{
 | 
			
		||||
	struct pt_regs regs;
 | 
			
		||||
 | 
			
		||||
	regs.regs[0] = ARM_PSCI_0_2_FN_SYSTEM_RESET;
 | 
			
		||||
 | 
			
		||||
	if (conduit_smc)
 | 
			
		||||
		smc_call(®s);
 | 
			
		||||
	else
 | 
			
		||||
		hvc_call(®s);
 | 
			
		||||
 | 
			
		||||
	while (1)
 | 
			
		||||
		;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -21,6 +21,16 @@
 | 
			
		|||
_start:
 | 
			
		||||
	b	reset
 | 
			
		||||
 | 
			
		||||
#ifdef CONFIG_ENABLE_ARM_SOC_BOOT0_HOOK
 | 
			
		||||
/*
 | 
			
		||||
 * Various SoCs need something special and SoC-specific up front in
 | 
			
		||||
 * order to boot, allow them to set that in their boot0.h file and then
 | 
			
		||||
 * use it here.
 | 
			
		||||
 */
 | 
			
		||||
#include <asm/arch/boot0.h>
 | 
			
		||||
ARM_SOC_BOOT0_HOOK
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	.align 3
 | 
			
		||||
 | 
			
		||||
.globl	_TEXT_BASE
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -9,3 +9,4 @@ obj-y	+= clk.o
 | 
			
		|||
obj-y	+= cpu.o
 | 
			
		||||
obj-$(CONFIG_MP)	+= mp.o
 | 
			
		||||
obj-y	+= slcr.o
 | 
			
		||||
obj-$(CONFIG_SPL_BUILD) += spl.o
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -63,6 +63,11 @@ static struct mm_region zynqmp_mem_map[] = {
 | 
			
		|||
};
 | 
			
		||||
struct mm_region *mem_map = zynqmp_mem_map;
 | 
			
		||||
 | 
			
		||||
u64 get_page_table_size(void)
 | 
			
		||||
{
 | 
			
		||||
	return 0x14000;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static unsigned int zynqmp_get_silicon_version_secure(void)
 | 
			
		||||
{
 | 
			
		||||
	u32 ver;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,107 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Copyright 2015 - 2016 Xilinx, Inc.
 | 
			
		||||
 *
 | 
			
		||||
 * Michal Simek <michal.simek@xilinx.com>
 | 
			
		||||
 *
 | 
			
		||||
 * SPDX-License-Identifier:	GPL-2.0+
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include <common.h>
 | 
			
		||||
#include <debug_uart.h>
 | 
			
		||||
#include <spl.h>
 | 
			
		||||
 | 
			
		||||
#include <asm/io.h>
 | 
			
		||||
#include <asm/spl.h>
 | 
			
		||||
#include <asm/arch/hardware.h>
 | 
			
		||||
#include <asm/arch/sys_proto.h>
 | 
			
		||||
 | 
			
		||||
void board_init_f(ulong dummy)
 | 
			
		||||
{
 | 
			
		||||
	psu_init();
 | 
			
		||||
	board_early_init_r();
 | 
			
		||||
 | 
			
		||||
#ifdef CONFIG_DEBUG_UART
 | 
			
		||||
	/* Uart debug for sure */
 | 
			
		||||
	debug_uart_init();
 | 
			
		||||
	puts("Debug uart enabled\n"); /* or printch() */
 | 
			
		||||
#endif
 | 
			
		||||
	/* Delay is required for clocks to be propagated */
 | 
			
		||||
	udelay(1000000);
 | 
			
		||||
 | 
			
		||||
	/* Clear the BSS */
 | 
			
		||||
	memset(__bss_start, 0, __bss_end - __bss_start);
 | 
			
		||||
 | 
			
		||||
	/* No need to call timer init - it is empty for ZynqMP */
 | 
			
		||||
	board_init_r(NULL, 0);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifdef CONFIG_SPL_BOARD_INIT
 | 
			
		||||
void spl_board_init(void)
 | 
			
		||||
{
 | 
			
		||||
	preloader_console_init();
 | 
			
		||||
	board_init();
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
u32 spl_boot_device(void)
 | 
			
		||||
{
 | 
			
		||||
	u32 reg = 0;
 | 
			
		||||
	u8 bootmode;
 | 
			
		||||
 | 
			
		||||
	reg = readl(&crlapb_base->boot_mode);
 | 
			
		||||
	bootmode = reg & BOOT_MODES_MASK;
 | 
			
		||||
 | 
			
		||||
	switch (bootmode) {
 | 
			
		||||
	case JTAG_MODE:
 | 
			
		||||
		return BOOT_DEVICE_RAM;
 | 
			
		||||
#ifdef CONFIG_SPL_MMC_SUPPORT
 | 
			
		||||
	case EMMC_MODE:
 | 
			
		||||
	case SD_MODE:
 | 
			
		||||
	case SD_MODE1:
 | 
			
		||||
		return BOOT_DEVICE_MMC1;
 | 
			
		||||
#endif
 | 
			
		||||
	default:
 | 
			
		||||
		printf("Invalid Boot Mode:0x%x\n", bootmode);
 | 
			
		||||
		break;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
u32 spl_boot_mode(void)
 | 
			
		||||
{
 | 
			
		||||
	switch (spl_boot_device()) {
 | 
			
		||||
	case BOOT_DEVICE_RAM:
 | 
			
		||||
		return 0;
 | 
			
		||||
	case BOOT_DEVICE_MMC1:
 | 
			
		||||
		return MMCSD_MODE_FS;
 | 
			
		||||
	default:
 | 
			
		||||
		puts("spl: error: unsupported device\n");
 | 
			
		||||
		hang();
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
__weak void psu_init(void)
 | 
			
		||||
{
 | 
			
		||||
	 /*
 | 
			
		||||
	  * This function is overridden by the one in
 | 
			
		||||
	  * board/xilinx/zynqmp/(platform)/psu_init_gpl.c, if it exists.
 | 
			
		||||
	  */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifdef CONFIG_SPL_OS_BOOT
 | 
			
		||||
int spl_start_uboot(void)
 | 
			
		||||
{
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef CONFIG_SPL_LOAD_FIT
 | 
			
		||||
int board_fit_config_name_match(const char *name)
 | 
			
		||||
{
 | 
			
		||||
	/* Just empty function now - can't decide what to choose */
 | 
			
		||||
	debug("%s: %s\n", __func__, name);
 | 
			
		||||
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			@ -21,11 +21,14 @@ dtb-$(CONFIG_EXYNOS5) += exynos5250-arndale.dtb \
 | 
			
		|||
	exynos5420-peach-pit.dtb \
 | 
			
		||||
	exynos5800-peach-pi.dtb \
 | 
			
		||||
	exynos5422-odroidxu3.dtb
 | 
			
		||||
dtb-$(CONFIG_EXYNOS7420) += exynos7420-espresso7420.dtb
 | 
			
		||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += \
 | 
			
		||||
	rk3288-firefly.dtb \
 | 
			
		||||
	rk3288-jerry.dtb \
 | 
			
		||||
	rk3288-rock2-square.dtb \
 | 
			
		||||
	rk3036-sdk.dtb
 | 
			
		||||
dtb-$(CONFIG_ARCH_MESON) += \
 | 
			
		||||
	meson-gxbb-odroidc2.dtb
 | 
			
		||||
dtb-$(CONFIG_TEGRA) += tegra20-harmony.dtb \
 | 
			
		||||
	tegra20-medcom-wide.dtb \
 | 
			
		||||
	tegra20-paz00.dtb \
 | 
			
		||||
| 
						 | 
				
			
			@ -45,6 +48,7 @@ dtb-$(CONFIG_TEGRA) += tegra20-harmony.dtb \
 | 
			
		|||
	tegra124-jetson-tk1.dtb \
 | 
			
		||||
	tegra124-nyan-big.dtb \
 | 
			
		||||
	tegra124-venice2.dtb \
 | 
			
		||||
	tegra186-p2771-0000.dtb \
 | 
			
		||||
	tegra210-e2220-1170.dtb \
 | 
			
		||||
	tegra210-p2371-0000.dtb \
 | 
			
		||||
	tegra210-p2371-2180.dtb \
 | 
			
		||||
| 
						 | 
				
			
			@ -88,9 +92,15 @@ dtb-$(CONFIG_ARCH_ZYNQMP) += \
 | 
			
		|||
	zynqmp-zcu102-revB.dtb			\
 | 
			
		||||
	zynqmp-zc1751-xm015-dc1.dtb		\
 | 
			
		||||
	zynqmp-zc1751-xm016-dc2.dtb		\
 | 
			
		||||
	zynqmp-zc1751-xm018-dc4.dtb		\
 | 
			
		||||
	zynqmp-zc1751-xm019-dc5.dtb
 | 
			
		||||
dtb-$(CONFIG_AM33XX) += am335x-boneblack.dtb am335x-evm.dtb
 | 
			
		||||
dtb-$(CONFIG_AM43XX) += am437x-gp-evm.dtb am437x-sk-evm.dtb
 | 
			
		||||
dtb-$(CONFIG_AM33XX) += am335x-boneblack.dtb am335x-bone.dtb am335x-evm.dtb \
 | 
			
		||||
	am335x-evmsk.dtb \
 | 
			
		||||
	am335x-bonegreen.dtb \
 | 
			
		||||
	am335x-icev2.dtb
 | 
			
		||||
dtb-$(CONFIG_AM43XX) += am437x-gp-evm.dtb am437x-sk-evm.dtb	\
 | 
			
		||||
	am43x-epos-evm.dtb \
 | 
			
		||||
	am437x-idk-evm.dtb
 | 
			
		||||
dtb-$(CONFIG_THUNDERX) += thunderx-88xx.dtb
 | 
			
		||||
 | 
			
		||||
dtb-$(CONFIG_ARCH_SOCFPGA) +=				\
 | 
			
		||||
| 
						 | 
				
			
			@ -100,7 +110,8 @@ dtb-$(CONFIG_ARCH_SOCFPGA) +=				\
 | 
			
		|||
	socfpga_cyclone5_de0_nano_soc.dtb			\
 | 
			
		||||
	socfpga_cyclone5_sockit.dtb			\
 | 
			
		||||
	socfpga_cyclone5_socrates.dtb			\
 | 
			
		||||
	socfpga_cyclone5_sr1500.dtb
 | 
			
		||||
	socfpga_cyclone5_sr1500.dtb			\
 | 
			
		||||
	socfpga_cyclone5_vining_fpga.dtb
 | 
			
		||||
 | 
			
		||||
dtb-$(CONFIG_TARGET_DRA7XX_EVM) += dra72-evm.dtb dra7-evm.dtb
 | 
			
		||||
dtb-$(CONFIG_TARGET_BEAGLE_X15) += am57xx-beagle-x15.dtb
 | 
			
		||||
| 
						 | 
				
			
			@ -113,7 +124,10 @@ dtb-$(CONFIG_FSL_LSCH3) += fsl-ls2080a-qds.dtb \
 | 
			
		|||
	fsl-ls2080a-rdb.dtb
 | 
			
		||||
dtb-$(CONFIG_FSL_LSCH2) += fsl-ls1043a-qds-duart.dtb \
 | 
			
		||||
	fsl-ls1043a-qds-lpuart.dtb \
 | 
			
		||||
	fsl-ls1043a-rdb.dtb
 | 
			
		||||
	fsl-ls1043a-rdb.dtb \
 | 
			
		||||
	fsl-ls1012a-qds.dtb \
 | 
			
		||||
	fsl-ls1012a-rdb.dtb \
 | 
			
		||||
	fsl-ls1012a-frdm.dtb
 | 
			
		||||
 | 
			
		||||
dtb-$(CONFIG_ARCH_SNAPDRAGON) += dragonboard410c.dtb
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -218,7 +232,8 @@ dtb-$(CONFIG_MACH_SUN8I_H3) += \
 | 
			
		|||
	sun8i-h3-orangepi-pc.dtb \
 | 
			
		||||
	sun8i-h3-orangepi-plus.dtb
 | 
			
		||||
dtb-$(CONFIG_MACH_SUN50I) += \
 | 
			
		||||
	pine64_plus.dtb
 | 
			
		||||
	sun50i-a64-pine64-plus.dtb \
 | 
			
		||||
	sun50i-a64-pine64.dtb
 | 
			
		||||
dtb-$(CONFIG_MACH_SUN9I) += \
 | 
			
		||||
	sun9i-a80-optimus.dtb \
 | 
			
		||||
	sun9i-a80-cubieboard4.dtb
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -13,6 +13,11 @@
 | 
			
		|||
		};
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	chosen {
 | 
			
		||||
		stdout-path = &uart0;
 | 
			
		||||
		tick-timer = &timer2;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	memory {
 | 
			
		||||
		device_type = "memory";
 | 
			
		||||
		reg = <0x80000000 0x10000000>; /* 256 MB */
 | 
			
		||||
| 
						 | 
				
			
			@ -383,8 +388,7 @@
 | 
			
		|||
	bus-width = <0x4>;
 | 
			
		||||
	pinctrl-names = "default";
 | 
			
		||||
	pinctrl-0 = <&mmc1_pins>;
 | 
			
		||||
	cd-gpios = <&gpio0 6 GPIO_ACTIVE_HIGH>;
 | 
			
		||||
	cd-inverted;
 | 
			
		||||
	cd-gpios = <&gpio0 6 GPIO_ACTIVE_LOW>;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&aes {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -13,9 +13,6 @@
 | 
			
		|||
/ {
 | 
			
		||||
	model = "TI AM335x BeagleBone";
 | 
			
		||||
	compatible = "ti,am335x-bone", "ti,am33xx";
 | 
			
		||||
	chosen {
 | 
			
		||||
		stdout-path = &uart0;
 | 
			
		||||
	};
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&ldo3_reg {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,57 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/
 | 
			
		||||
 *
 | 
			
		||||
 * This program is free software; you can redistribute it and/or modify
 | 
			
		||||
 * it under the terms of the GNU General Public License version 2 as
 | 
			
		||||
 * published by the Free Software Foundation.
 | 
			
		||||
 */
 | 
			
		||||
/dts-v1/;
 | 
			
		||||
 | 
			
		||||
#include "am33xx.dtsi"
 | 
			
		||||
#include "am335x-bone-common.dtsi"
 | 
			
		||||
 | 
			
		||||
/ {
 | 
			
		||||
	model = "TI AM335x BeagleBone Green";
 | 
			
		||||
	compatible = "ti,am335x-bone-green", "ti,am335x-bone-black", "ti,am335x-bone", "ti,am33xx";
 | 
			
		||||
	chosen {
 | 
			
		||||
		stdout-path = &uart0;
 | 
			
		||||
		tick-timer = &timer2;
 | 
			
		||||
	};
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&ldo3_reg {
 | 
			
		||||
	regulator-min-microvolt = <1800000>;
 | 
			
		||||
	regulator-max-microvolt = <1800000>;
 | 
			
		||||
	regulator-always-on;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&mmc1 {
 | 
			
		||||
	vmmc-supply = <&vmmcsd_fixed>;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&mmc2 {
 | 
			
		||||
	vmmc-supply = <&vmmcsd_fixed>;
 | 
			
		||||
	pinctrl-names = "default";
 | 
			
		||||
	pinctrl-0 = <&emmc_pins>;
 | 
			
		||||
	bus-width = <8>;
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&am33xx_pinmux {
 | 
			
		||||
	uart2_pins: uart2_pins {
 | 
			
		||||
		pinctrl-single,pins = <
 | 
			
		||||
			AM33XX_IOPAD(0x950, PIN_INPUT | MUX_MODE1)	/* spi0_sclk.uart2_rxd */
 | 
			
		||||
			AM33XX_IOPAD(0x954, PIN_OUTPUT | MUX_MODE1)	/* spi0_d0.uart2_txd */
 | 
			
		||||
		>;
 | 
			
		||||
	};
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&uart2 {
 | 
			
		||||
	pinctrl-names = "default";
 | 
			
		||||
	pinctrl-0 = <&uart2_pins>;
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&rtc {
 | 
			
		||||
	system-power-controller;
 | 
			
		||||
};
 | 
			
		||||
| 
						 | 
				
			
			@ -717,7 +717,7 @@
 | 
			
		|||
	bus-width = <4>;
 | 
			
		||||
	pinctrl-names = "default";
 | 
			
		||||
	pinctrl-0 = <&mmc1_pins>;
 | 
			
		||||
	cd-gpios = <&gpio0 6 GPIO_ACTIVE_HIGH>;
 | 
			
		||||
	cd-gpios = <&gpio0 6 GPIO_ACTIVE_LOW>;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&mmc3 {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,720 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/
 | 
			
		||||
 *
 | 
			
		||||
 * This program is free software; you can redistribute it and/or modify
 | 
			
		||||
 * it under the terms of the GNU General Public License version 2 as
 | 
			
		||||
 * published by the Free Software Foundation.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * AM335x Starter Kit
 | 
			
		||||
 * http://www.ti.com/tool/tmdssk3358
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/dts-v1/;
 | 
			
		||||
 | 
			
		||||
#include "am33xx.dtsi"
 | 
			
		||||
#include <dt-bindings/pwm/pwm.h>
 | 
			
		||||
#include <dt-bindings/interrupt-controller/irq.h>
 | 
			
		||||
 | 
			
		||||
/ {
 | 
			
		||||
	model = "TI AM335x EVM-SK";
 | 
			
		||||
	compatible = "ti,am335x-evmsk", "ti,am33xx";
 | 
			
		||||
 | 
			
		||||
	chosen {
 | 
			
		||||
		stdout-path = &uart0;
 | 
			
		||||
		tick-timer = &timer2;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	cpus {
 | 
			
		||||
		cpu@0 {
 | 
			
		||||
			cpu0-supply = <&vdd1_reg>;
 | 
			
		||||
		};
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	memory {
 | 
			
		||||
		device_type = "memory";
 | 
			
		||||
		reg = <0x80000000 0x10000000>; /* 256 MB */
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	vbat: fixedregulator@0 {
 | 
			
		||||
		compatible = "regulator-fixed";
 | 
			
		||||
		regulator-name = "vbat";
 | 
			
		||||
		regulator-min-microvolt = <5000000>;
 | 
			
		||||
		regulator-max-microvolt = <5000000>;
 | 
			
		||||
		regulator-boot-on;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	lis3_reg: fixedregulator@1 {
 | 
			
		||||
		compatible = "regulator-fixed";
 | 
			
		||||
		regulator-name = "lis3_reg";
 | 
			
		||||
		regulator-boot-on;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	wl12xx_vmmc: fixedregulator@2 {
 | 
			
		||||
		pinctrl-names = "default";
 | 
			
		||||
		pinctrl-0 = <&wl12xx_gpio>;
 | 
			
		||||
		compatible = "regulator-fixed";
 | 
			
		||||
		regulator-name = "vwl1271";
 | 
			
		||||
		regulator-min-microvolt = <1800000>;
 | 
			
		||||
		regulator-max-microvolt = <1800000>;
 | 
			
		||||
		gpio = <&gpio1 29 0>;
 | 
			
		||||
		startup-delay-us = <70000>;
 | 
			
		||||
		enable-active-high;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	vtt_fixed: fixedregulator@3 {
 | 
			
		||||
		compatible = "regulator-fixed";
 | 
			
		||||
		regulator-name = "vtt";
 | 
			
		||||
		regulator-min-microvolt = <1500000>;
 | 
			
		||||
		regulator-max-microvolt = <1500000>;
 | 
			
		||||
		gpio = <&gpio0 7 GPIO_ACTIVE_HIGH>;
 | 
			
		||||
		regulator-always-on;
 | 
			
		||||
		regulator-boot-on;
 | 
			
		||||
		enable-active-high;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	leds {
 | 
			
		||||
		pinctrl-names = "default";
 | 
			
		||||
		pinctrl-0 = <&user_leds_s0>;
 | 
			
		||||
 | 
			
		||||
		compatible = "gpio-leds";
 | 
			
		||||
 | 
			
		||||
		led@1 {
 | 
			
		||||
			label = "evmsk:green:usr0";
 | 
			
		||||
			gpios = <&gpio1 4 GPIO_ACTIVE_HIGH>;
 | 
			
		||||
			default-state = "off";
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		led@2 {
 | 
			
		||||
			label = "evmsk:green:usr1";
 | 
			
		||||
			gpios = <&gpio1 5 GPIO_ACTIVE_HIGH>;
 | 
			
		||||
			default-state = "off";
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		led@3 {
 | 
			
		||||
			label = "evmsk:green:mmc0";
 | 
			
		||||
			gpios = <&gpio1 6 GPIO_ACTIVE_HIGH>;
 | 
			
		||||
			linux,default-trigger = "mmc0";
 | 
			
		||||
			default-state = "off";
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		led@4 {
 | 
			
		||||
			label = "evmsk:green:heartbeat";
 | 
			
		||||
			gpios = <&gpio1 7 GPIO_ACTIVE_HIGH>;
 | 
			
		||||
			linux,default-trigger = "heartbeat";
 | 
			
		||||
			default-state = "off";
 | 
			
		||||
		};
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	gpio_buttons: gpio_buttons@0 {
 | 
			
		||||
		compatible = "gpio-keys";
 | 
			
		||||
		#address-cells = <1>;
 | 
			
		||||
		#size-cells = <0>;
 | 
			
		||||
 | 
			
		||||
		switch@1 {
 | 
			
		||||
			label = "button0";
 | 
			
		||||
			linux,code = <0x100>;
 | 
			
		||||
			gpios = <&gpio2 3 GPIO_ACTIVE_HIGH>;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		switch@2 {
 | 
			
		||||
			label = "button1";
 | 
			
		||||
			linux,code = <0x101>;
 | 
			
		||||
			gpios = <&gpio2 2 GPIO_ACTIVE_HIGH>;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		switch@3 {
 | 
			
		||||
			label = "button2";
 | 
			
		||||
			linux,code = <0x102>;
 | 
			
		||||
			gpios = <&gpio0 30 GPIO_ACTIVE_HIGH>;
 | 
			
		||||
			wakeup-source;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		switch@4 {
 | 
			
		||||
			label = "button3";
 | 
			
		||||
			linux,code = <0x103>;
 | 
			
		||||
			gpios = <&gpio2 5 GPIO_ACTIVE_HIGH>;
 | 
			
		||||
		};
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	backlight {
 | 
			
		||||
		compatible = "pwm-backlight";
 | 
			
		||||
		pwms = <&ecap2 0 50000 PWM_POLARITY_INVERTED>;
 | 
			
		||||
		brightness-levels = <0 58 61 66 75 90 125 170 255>;
 | 
			
		||||
		default-brightness-level = <8>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	sound {
 | 
			
		||||
		compatible = "simple-audio-card";
 | 
			
		||||
		simple-audio-card,name = "AM335x-EVMSK";
 | 
			
		||||
		simple-audio-card,widgets =
 | 
			
		||||
			"Headphone", "Headphone Jack";
 | 
			
		||||
		simple-audio-card,routing =
 | 
			
		||||
			"Headphone Jack",	"HPLOUT",
 | 
			
		||||
			"Headphone Jack",	"HPROUT";
 | 
			
		||||
		simple-audio-card,format = "dsp_b";
 | 
			
		||||
		simple-audio-card,bitclock-master = <&sound_master>;
 | 
			
		||||
		simple-audio-card,frame-master = <&sound_master>;
 | 
			
		||||
		simple-audio-card,bitclock-inversion;
 | 
			
		||||
 | 
			
		||||
		simple-audio-card,cpu {
 | 
			
		||||
			sound-dai = <&mcasp1>;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		sound_master: simple-audio-card,codec {
 | 
			
		||||
			sound-dai = <&tlv320aic3106>;
 | 
			
		||||
			system-clock-frequency = <24000000>;
 | 
			
		||||
		};
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	panel {
 | 
			
		||||
		compatible = "ti,tilcdc,panel";
 | 
			
		||||
		pinctrl-names = "default", "sleep";
 | 
			
		||||
		pinctrl-0 = <&lcd_pins_default>;
 | 
			
		||||
		pinctrl-1 = <&lcd_pins_sleep>;
 | 
			
		||||
		status = "okay";
 | 
			
		||||
		panel-info {
 | 
			
		||||
			ac-bias           = <255>;
 | 
			
		||||
			ac-bias-intrpt    = <0>;
 | 
			
		||||
			dma-burst-sz      = <16>;
 | 
			
		||||
			bpp               = <32>;
 | 
			
		||||
			fdd               = <0x80>;
 | 
			
		||||
			sync-edge         = <0>;
 | 
			
		||||
			sync-ctrl         = <1>;
 | 
			
		||||
			raster-order      = <0>;
 | 
			
		||||
			fifo-th           = <0>;
 | 
			
		||||
		};
 | 
			
		||||
		display-timings {
 | 
			
		||||
			480x272 {
 | 
			
		||||
				hactive         = <480>;
 | 
			
		||||
				vactive         = <272>;
 | 
			
		||||
				hback-porch     = <43>;
 | 
			
		||||
				hfront-porch    = <8>;
 | 
			
		||||
				hsync-len       = <4>;
 | 
			
		||||
				vback-porch     = <12>;
 | 
			
		||||
				vfront-porch    = <4>;
 | 
			
		||||
				vsync-len       = <10>;
 | 
			
		||||
				clock-frequency = <9000000>;
 | 
			
		||||
				hsync-active    = <0>;
 | 
			
		||||
				vsync-active    = <0>;
 | 
			
		||||
			};
 | 
			
		||||
		};
 | 
			
		||||
	};
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&am33xx_pinmux {
 | 
			
		||||
	pinctrl-names = "default";
 | 
			
		||||
	pinctrl-0 = <&gpio_keys_s0 &clkout2_pin>;
 | 
			
		||||
 | 
			
		||||
	lcd_pins_default: lcd_pins_default {
 | 
			
		||||
		pinctrl-single,pins = <
 | 
			
		||||
			AM33XX_IOPAD(0x820, PIN_OUTPUT | MUX_MODE1)	/* gpmc_ad8.lcd_data23 */
 | 
			
		||||
			AM33XX_IOPAD(0x824, PIN_OUTPUT | MUX_MODE1)	/* gpmc_ad9.lcd_data22 */
 | 
			
		||||
			AM33XX_IOPAD(0x828, PIN_OUTPUT | MUX_MODE1)	/* gpmc_ad10.lcd_data21 */
 | 
			
		||||
			AM33XX_IOPAD(0x82c, PIN_OUTPUT | MUX_MODE1)	/* gpmc_ad11.lcd_data20 */
 | 
			
		||||
			AM33XX_IOPAD(0x830, PIN_OUTPUT | MUX_MODE1)	/* gpmc_ad12.lcd_data19 */
 | 
			
		||||
			AM33XX_IOPAD(0x834, PIN_OUTPUT | MUX_MODE1)	/* gpmc_ad13.lcd_data18 */
 | 
			
		||||
			AM33XX_IOPAD(0x838, PIN_OUTPUT | MUX_MODE1)	/* gpmc_ad14.lcd_data17 */
 | 
			
		||||
			AM33XX_IOPAD(0x83c, PIN_OUTPUT | MUX_MODE1)	/* gpmc_ad15.lcd_data16 */
 | 
			
		||||
			AM33XX_IOPAD(0x8a0, PIN_OUTPUT | MUX_MODE0)	/* lcd_data0.lcd_data0 */
 | 
			
		||||
			AM33XX_IOPAD(0x8a4, PIN_OUTPUT | MUX_MODE0)	/* lcd_data1.lcd_data1 */
 | 
			
		||||
			AM33XX_IOPAD(0x8a8, PIN_OUTPUT | MUX_MODE0)	/* lcd_data2.lcd_data2 */
 | 
			
		||||
			AM33XX_IOPAD(0x8ac, PIN_OUTPUT | MUX_MODE0)	/* lcd_data3.lcd_data3 */
 | 
			
		||||
			AM33XX_IOPAD(0x8b0, PIN_OUTPUT | MUX_MODE0)	/* lcd_data4.lcd_data4 */
 | 
			
		||||
			AM33XX_IOPAD(0x8b4, PIN_OUTPUT | MUX_MODE0)	/* lcd_data5.lcd_data5 */
 | 
			
		||||
			AM33XX_IOPAD(0x8b8, PIN_OUTPUT | MUX_MODE0)	/* lcd_data6.lcd_data6 */
 | 
			
		||||
			AM33XX_IOPAD(0x8bc, PIN_OUTPUT | MUX_MODE0)	/* lcd_data7.lcd_data7 */
 | 
			
		||||
			AM33XX_IOPAD(0x8c0, PIN_OUTPUT | MUX_MODE0)	/* lcd_data8.lcd_data8 */
 | 
			
		||||
			AM33XX_IOPAD(0x8c4, PIN_OUTPUT | MUX_MODE0)	/* lcd_data9.lcd_data9 */
 | 
			
		||||
			AM33XX_IOPAD(0x8c8, PIN_OUTPUT | MUX_MODE0)	/* lcd_data10.lcd_data10 */
 | 
			
		||||
			AM33XX_IOPAD(0x8cc, PIN_OUTPUT | MUX_MODE0)	/* lcd_data11.lcd_data11 */
 | 
			
		||||
			AM33XX_IOPAD(0x8d0, PIN_OUTPUT | MUX_MODE0)	/* lcd_data12.lcd_data12 */
 | 
			
		||||
			AM33XX_IOPAD(0x8d4, PIN_OUTPUT | MUX_MODE0)	/* lcd_data13.lcd_data13 */
 | 
			
		||||
			AM33XX_IOPAD(0x8d8, PIN_OUTPUT | MUX_MODE0)	/* lcd_data14.lcd_data14 */
 | 
			
		||||
			AM33XX_IOPAD(0x8dc, PIN_OUTPUT | MUX_MODE0)	/* lcd_data15.lcd_data15 */
 | 
			
		||||
			AM33XX_IOPAD(0x8e0, PIN_OUTPUT | MUX_MODE0)	/* lcd_vsync.lcd_vsync */
 | 
			
		||||
			AM33XX_IOPAD(0x8e4, PIN_OUTPUT | MUX_MODE0)	/* lcd_hsync.lcd_hsync */
 | 
			
		||||
			AM33XX_IOPAD(0x8e8, PIN_OUTPUT | MUX_MODE0)	/* lcd_pclk.lcd_pclk */
 | 
			
		||||
			AM33XX_IOPAD(0x8ec, PIN_OUTPUT | MUX_MODE0)	/* lcd_ac_bias_en.lcd_ac_bias_en */
 | 
			
		||||
		>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	lcd_pins_sleep: lcd_pins_sleep {
 | 
			
		||||
		pinctrl-single,pins = <
 | 
			
		||||
			AM33XX_IOPAD(0x820, PIN_INPUT_PULLDOWN | MUX_MODE7)	/* gpmc_ad8.lcd_data23 */
 | 
			
		||||
			AM33XX_IOPAD(0x824, PIN_INPUT_PULLDOWN | MUX_MODE7)	/* gpmc_ad9.lcd_data22 */
 | 
			
		||||
			AM33XX_IOPAD(0x828, PIN_INPUT_PULLDOWN | MUX_MODE7)	/* gpmc_ad10.lcd_data21 */
 | 
			
		||||
			AM33XX_IOPAD(0x82c, PIN_INPUT_PULLDOWN | MUX_MODE7)	/* gpmc_ad11.lcd_data20 */
 | 
			
		||||
			AM33XX_IOPAD(0x830, PIN_INPUT_PULLDOWN | MUX_MODE7)	/* gpmc_ad12.lcd_data19 */
 | 
			
		||||
			AM33XX_IOPAD(0x834, PIN_INPUT_PULLDOWN | MUX_MODE7)	/* gpmc_ad13.lcd_data18 */
 | 
			
		||||
			AM33XX_IOPAD(0x838, PIN_INPUT_PULLDOWN | MUX_MODE7)	/* gpmc_ad14.lcd_data17 */
 | 
			
		||||
			AM33XX_IOPAD(0x83c, PIN_INPUT_PULLDOWN | MUX_MODE7)	/* gpmc_ad15.lcd_data16 */
 | 
			
		||||
			AM33XX_IOPAD(0x8a0, PULL_DISABLE | MUX_MODE7)	/* lcd_data0.lcd_data0 */
 | 
			
		||||
			AM33XX_IOPAD(0x8a4, PULL_DISABLE | MUX_MODE7)	/* lcd_data1.lcd_data1 */
 | 
			
		||||
			AM33XX_IOPAD(0x8a8, PULL_DISABLE | MUX_MODE7)	/* lcd_data2.lcd_data2 */
 | 
			
		||||
			AM33XX_IOPAD(0x8ac, PULL_DISABLE | MUX_MODE7)	/* lcd_data3.lcd_data3 */
 | 
			
		||||
			AM33XX_IOPAD(0x8b0, PULL_DISABLE | MUX_MODE7)	/* lcd_data4.lcd_data4 */
 | 
			
		||||
			AM33XX_IOPAD(0x8b4, PULL_DISABLE | MUX_MODE7)	/* lcd_data5.lcd_data5 */
 | 
			
		||||
			AM33XX_IOPAD(0x8b8, PULL_DISABLE | MUX_MODE7)	/* lcd_data6.lcd_data6 */
 | 
			
		||||
			AM33XX_IOPAD(0x8bc, PULL_DISABLE | MUX_MODE7)	/* lcd_data7.lcd_data7 */
 | 
			
		||||
			AM33XX_IOPAD(0x8c0, PULL_DISABLE | MUX_MODE7)	/* lcd_data8.lcd_data8 */
 | 
			
		||||
			AM33XX_IOPAD(0x8c4, PULL_DISABLE | MUX_MODE7)	/* lcd_data9.lcd_data9 */
 | 
			
		||||
			AM33XX_IOPAD(0x8c8, PULL_DISABLE | MUX_MODE7)	/* lcd_data10.lcd_data10 */
 | 
			
		||||
			AM33XX_IOPAD(0x8cc, PULL_DISABLE | MUX_MODE7)	/* lcd_data11.lcd_data11 */
 | 
			
		||||
			AM33XX_IOPAD(0x8d0, PULL_DISABLE | MUX_MODE7)	/* lcd_data12.lcd_data12 */
 | 
			
		||||
			AM33XX_IOPAD(0x8d4, PULL_DISABLE | MUX_MODE7)	/* lcd_data13.lcd_data13 */
 | 
			
		||||
			AM33XX_IOPAD(0x8d8, PULL_DISABLE | MUX_MODE7)	/* lcd_data14.lcd_data14 */
 | 
			
		||||
			AM33XX_IOPAD(0x8dc, PULL_DISABLE | MUX_MODE7)	/* lcd_data15.lcd_data15 */
 | 
			
		||||
			AM33XX_IOPAD(0x8e0, PIN_INPUT_PULLDOWN | MUX_MODE7)	/* lcd_vsync.lcd_vsync */
 | 
			
		||||
			AM33XX_IOPAD(0x8e4, PIN_INPUT_PULLDOWN | MUX_MODE7)	/* lcd_hsync.lcd_hsync */
 | 
			
		||||
			AM33XX_IOPAD(0x8e8, PIN_INPUT_PULLDOWN | MUX_MODE7)	/* lcd_pclk.lcd_pclk */
 | 
			
		||||
			AM33XX_IOPAD(0x8ec, PIN_INPUT_PULLDOWN | MUX_MODE7)	/* lcd_ac_bias_en.lcd_ac_bias_en */
 | 
			
		||||
		>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	user_leds_s0: user_leds_s0 {
 | 
			
		||||
		pinctrl-single,pins = <
 | 
			
		||||
			AM33XX_IOPAD(0x810, PIN_OUTPUT_PULLDOWN | MUX_MODE7)	/* gpmc_ad4.gpio1_4 */
 | 
			
		||||
			AM33XX_IOPAD(0x814, PIN_OUTPUT_PULLDOWN | MUX_MODE7)	/* gpmc_ad5.gpio1_5 */
 | 
			
		||||
			AM33XX_IOPAD(0x818, PIN_OUTPUT_PULLDOWN | MUX_MODE7)	/* gpmc_ad6.gpio1_6 */
 | 
			
		||||
			AM33XX_IOPAD(0x81c, PIN_OUTPUT_PULLDOWN | MUX_MODE7)	/* gpmc_ad7.gpio1_7 */
 | 
			
		||||
		>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	gpio_keys_s0: gpio_keys_s0 {
 | 
			
		||||
		pinctrl-single,pins = <
 | 
			
		||||
			AM33XX_IOPAD(0x894, PIN_INPUT_PULLDOWN | MUX_MODE7)	/* gpmc_oen_ren.gpio2_3 */
 | 
			
		||||
			AM33XX_IOPAD(0x890, PIN_INPUT_PULLDOWN | MUX_MODE7)	/* gpmc_advn_ale.gpio2_2 */
 | 
			
		||||
			AM33XX_IOPAD(0x870, PIN_INPUT_PULLDOWN | MUX_MODE7)	/* gpmc_wait0.gpio0_30 */
 | 
			
		||||
			AM33XX_IOPAD(0x89c, PIN_INPUT_PULLDOWN | MUX_MODE7)	/* gpmc_ben0_cle.gpio2_5 */
 | 
			
		||||
		>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	i2c0_pins: pinmux_i2c0_pins {
 | 
			
		||||
		pinctrl-single,pins = <
 | 
			
		||||
			AM33XX_IOPAD(0x988, PIN_INPUT_PULLUP | MUX_MODE0)	/* i2c0_sda.i2c0_sda */
 | 
			
		||||
			AM33XX_IOPAD(0x98c, PIN_INPUT_PULLUP | MUX_MODE0)	/* i2c0_scl.i2c0_scl */
 | 
			
		||||
		>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	uart0_pins: pinmux_uart0_pins {
 | 
			
		||||
		pinctrl-single,pins = <
 | 
			
		||||
			AM33XX_IOPAD(0x970, PIN_INPUT_PULLUP | MUX_MODE0)	/* uart0_rxd.uart0_rxd */
 | 
			
		||||
			AM33XX_IOPAD(0x974, PIN_OUTPUT_PULLDOWN | MUX_MODE0)	/* uart0_txd.uart0_txd */
 | 
			
		||||
		>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	clkout2_pin: pinmux_clkout2_pin {
 | 
			
		||||
		pinctrl-single,pins = <
 | 
			
		||||
			AM33XX_IOPAD(0x9b4, PIN_OUTPUT_PULLDOWN | MUX_MODE3)	/* xdma_event_intr1.clkout2 */
 | 
			
		||||
		>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	ecap2_pins: backlight_pins {
 | 
			
		||||
		pinctrl-single,pins = <
 | 
			
		||||
			AM33XX_IOPAD(0x99c, MUX_MODE4)	/* mcasp0_ahclkr.ecap2_in_pwm2_out */
 | 
			
		||||
		>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	cpsw_default: cpsw_default {
 | 
			
		||||
		pinctrl-single,pins = <
 | 
			
		||||
			/* Slave 1 */
 | 
			
		||||
			AM33XX_IOPAD(0x914, PIN_OUTPUT_PULLDOWN | MUX_MODE2)	/* mii1_txen.rgmii1_tctl */
 | 
			
		||||
			AM33XX_IOPAD(0x918, PIN_INPUT_PULLDOWN | MUX_MODE2)	/* mii1_rxdv.rgmii1_rctl */
 | 
			
		||||
			AM33XX_IOPAD(0x91c, PIN_OUTPUT_PULLDOWN | MUX_MODE2)	/* mii1_txd3.rgmii1_td3 */
 | 
			
		||||
			AM33XX_IOPAD(0x920, PIN_OUTPUT_PULLDOWN | MUX_MODE2)	/* mii1_txd2.rgmii1_td2 */
 | 
			
		||||
			AM33XX_IOPAD(0x924, PIN_OUTPUT_PULLDOWN | MUX_MODE2)	/* mii1_txd1.rgmii1_td1 */
 | 
			
		||||
			AM33XX_IOPAD(0x928, PIN_OUTPUT_PULLDOWN | MUX_MODE2)	/* mii1_txd0.rgmii1_td0 */
 | 
			
		||||
			AM33XX_IOPAD(0x92c, PIN_OUTPUT_PULLDOWN | MUX_MODE2)	/* mii1_txclk.rgmii1_tclk */
 | 
			
		||||
			AM33XX_IOPAD(0x930, PIN_INPUT_PULLDOWN | MUX_MODE2)	/* mii1_rxclk.rgmii1_rclk */
 | 
			
		||||
			AM33XX_IOPAD(0x934, PIN_INPUT_PULLDOWN | MUX_MODE2)	/* mii1_rxd3.rgmii1_rd3 */
 | 
			
		||||
			AM33XX_IOPAD(0x938, PIN_INPUT_PULLDOWN | MUX_MODE2)	/* mii1_rxd2.rgmii1_rd2 */
 | 
			
		||||
			AM33XX_IOPAD(0x93c, PIN_INPUT_PULLDOWN | MUX_MODE2)	/* mii1_rxd1.rgmii1_rd1 */
 | 
			
		||||
			AM33XX_IOPAD(0x940, PIN_INPUT_PULLDOWN | MUX_MODE2)	/* mii1_rxd0.rgmii1_rd0 */
 | 
			
		||||
 | 
			
		||||
			/* Slave 2 */
 | 
			
		||||
			AM33XX_IOPAD(0x840, PIN_OUTPUT_PULLDOWN | MUX_MODE2)	/* gpmc_a0.rgmii2_tctl */
 | 
			
		||||
			AM33XX_IOPAD(0x844, PIN_INPUT_PULLDOWN | MUX_MODE2)	/* gpmc_a1.rgmii2_rctl */
 | 
			
		||||
			AM33XX_IOPAD(0x848, PIN_OUTPUT_PULLDOWN | MUX_MODE2)	/* gpmc_a2.rgmii2_td3 */
 | 
			
		||||
			AM33XX_IOPAD(0x84c, PIN_OUTPUT_PULLDOWN | MUX_MODE2)	/* gpmc_a3.rgmii2_td2 */
 | 
			
		||||
			AM33XX_IOPAD(0x850, PIN_OUTPUT_PULLDOWN | MUX_MODE2)	/* gpmc_a4.rgmii2_td1 */
 | 
			
		||||
			AM33XX_IOPAD(0x854, PIN_OUTPUT_PULLDOWN | MUX_MODE2)	/* gpmc_a5.rgmii2_td0 */
 | 
			
		||||
			AM33XX_IOPAD(0x858, PIN_OUTPUT_PULLDOWN | MUX_MODE2)	/* gpmc_a6.rgmii2_tclk */
 | 
			
		||||
			AM33XX_IOPAD(0x85c, PIN_INPUT_PULLDOWN | MUX_MODE2)	/* gpmc_a7.rgmii2_rclk */
 | 
			
		||||
			AM33XX_IOPAD(0x860, PIN_INPUT_PULLDOWN | MUX_MODE2)	/* gpmc_a8.rgmii2_rd3 */
 | 
			
		||||
			AM33XX_IOPAD(0x864, PIN_INPUT_PULLDOWN | MUX_MODE2)	/* gpmc_a9.rgmii2_rd2 */
 | 
			
		||||
			AM33XX_IOPAD(0x868, PIN_INPUT_PULLDOWN | MUX_MODE2)	/* gpmc_a10.rgmii2_rd1 */
 | 
			
		||||
			AM33XX_IOPAD(0x86c, PIN_INPUT_PULLDOWN | MUX_MODE2)	/* gpmc_a11.rgmii2_rd0 */
 | 
			
		||||
		>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	cpsw_sleep: cpsw_sleep {
 | 
			
		||||
		pinctrl-single,pins = <
 | 
			
		||||
			/* Slave 1 reset value */
 | 
			
		||||
			AM33XX_IOPAD(0x914, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
			AM33XX_IOPAD(0x918, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
			AM33XX_IOPAD(0x91c, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
			AM33XX_IOPAD(0x920, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
			AM33XX_IOPAD(0x924, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
			AM33XX_IOPAD(0x928, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
			AM33XX_IOPAD(0x92c, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
			AM33XX_IOPAD(0x930, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
			AM33XX_IOPAD(0x934, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
			AM33XX_IOPAD(0x938, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
			AM33XX_IOPAD(0x93c, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
			AM33XX_IOPAD(0x940, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
 | 
			
		||||
			/* Slave 2 reset value*/
 | 
			
		||||
			AM33XX_IOPAD(0x840, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
			AM33XX_IOPAD(0x844, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
			AM33XX_IOPAD(0x848, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
			AM33XX_IOPAD(0x84c, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
			AM33XX_IOPAD(0x850, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
			AM33XX_IOPAD(0x854, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
			AM33XX_IOPAD(0x858, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
			AM33XX_IOPAD(0x85c, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
			AM33XX_IOPAD(0x860, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
			AM33XX_IOPAD(0x864, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
			AM33XX_IOPAD(0x868, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
			AM33XX_IOPAD(0x86c, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
		>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	davinci_mdio_default: davinci_mdio_default {
 | 
			
		||||
		pinctrl-single,pins = <
 | 
			
		||||
			/* MDIO */
 | 
			
		||||
			AM33XX_IOPAD(0x948, PIN_INPUT_PULLUP | SLEWCTRL_FAST | MUX_MODE0)	/* mdio_data.mdio_data */
 | 
			
		||||
			AM33XX_IOPAD(0x94c, PIN_OUTPUT_PULLUP | MUX_MODE0)			/* mdio_clk.mdio_clk */
 | 
			
		||||
		>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	davinci_mdio_sleep: davinci_mdio_sleep {
 | 
			
		||||
		pinctrl-single,pins = <
 | 
			
		||||
			/* MDIO reset value */
 | 
			
		||||
			AM33XX_IOPAD(0x948, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
			AM33XX_IOPAD(0x94c, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
		>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	mmc1_pins: pinmux_mmc1_pins {
 | 
			
		||||
		pinctrl-single,pins = <
 | 
			
		||||
			AM33XX_IOPAD(0x960, PIN_INPUT | MUX_MODE7) /* spi0_cs1.gpio0_6 */
 | 
			
		||||
		>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	mcasp1_pins: mcasp1_pins {
 | 
			
		||||
		pinctrl-single,pins = <
 | 
			
		||||
			AM33XX_IOPAD(0x90c, PIN_INPUT_PULLDOWN | MUX_MODE4) /* mii1_crs.mcasp1_aclkx */
 | 
			
		||||
			AM33XX_IOPAD(0x910, PIN_INPUT_PULLDOWN | MUX_MODE4) /* mii1_rxerr.mcasp1_fsx */
 | 
			
		||||
			AM33XX_IOPAD(0x908, PIN_OUTPUT_PULLDOWN | MUX_MODE4) /* mii1_col.mcasp1_axr2 */
 | 
			
		||||
			AM33XX_IOPAD(0x944, PIN_INPUT_PULLDOWN | MUX_MODE4) /* rmii1_ref_clk.mcasp1_axr3 */
 | 
			
		||||
		>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	mcasp1_pins_sleep: mcasp1_pins_sleep {
 | 
			
		||||
		pinctrl-single,pins = <
 | 
			
		||||
			AM33XX_IOPAD(0x90c, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
			AM33XX_IOPAD(0x910, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
			AM33XX_IOPAD(0x908, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
			AM33XX_IOPAD(0x944, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
		>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	mmc2_pins: pinmux_mmc2_pins {
 | 
			
		||||
		pinctrl-single,pins = <
 | 
			
		||||
			AM33XX_IOPAD(0x874, PIN_INPUT_PULLUP | MUX_MODE7) /* gpmc_wpn.gpio0_31 */
 | 
			
		||||
			AM33XX_IOPAD(0x880, PIN_INPUT_PULLUP | MUX_MODE2) /* gpmc_csn1.mmc1_clk */
 | 
			
		||||
			AM33XX_IOPAD(0x884, PIN_INPUT_PULLUP | MUX_MODE2) /* gpmc_csn2.mmc1_cmd */
 | 
			
		||||
			AM33XX_IOPAD(0x800, PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_ad0.mmc1_dat0 */
 | 
			
		||||
			AM33XX_IOPAD(0x804, PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_ad1.mmc1_dat1 */
 | 
			
		||||
			AM33XX_IOPAD(0x808, PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_ad2.mmc1_dat2 */
 | 
			
		||||
			AM33XX_IOPAD(0x80c, PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_ad3.mmc1_dat3 */
 | 
			
		||||
		>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	wl12xx_gpio: pinmux_wl12xx_gpio {
 | 
			
		||||
		pinctrl-single,pins = <
 | 
			
		||||
			AM33XX_IOPAD(0x87c, PIN_OUTPUT_PULLUP | MUX_MODE7) /* gpmc_csn0.gpio1_29 */
 | 
			
		||||
		>;
 | 
			
		||||
	};
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&uart0 {
 | 
			
		||||
	pinctrl-names = "default";
 | 
			
		||||
	pinctrl-0 = <&uart0_pins>;
 | 
			
		||||
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&i2c0 {
 | 
			
		||||
	pinctrl-names = "default";
 | 
			
		||||
	pinctrl-0 = <&i2c0_pins>;
 | 
			
		||||
 | 
			
		||||
	status = "okay";
 | 
			
		||||
	clock-frequency = <400000>;
 | 
			
		||||
 | 
			
		||||
	tps: tps@2d {
 | 
			
		||||
		reg = <0x2d>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	lis331dlh: lis331dlh@18 {
 | 
			
		||||
		compatible = "st,lis331dlh", "st,lis3lv02d";
 | 
			
		||||
		reg = <0x18>;
 | 
			
		||||
		Vdd-supply = <&lis3_reg>;
 | 
			
		||||
		Vdd_IO-supply = <&lis3_reg>;
 | 
			
		||||
 | 
			
		||||
		st,click-single-x;
 | 
			
		||||
		st,click-single-y;
 | 
			
		||||
		st,click-single-z;
 | 
			
		||||
		st,click-thresh-x = <10>;
 | 
			
		||||
		st,click-thresh-y = <10>;
 | 
			
		||||
		st,click-thresh-z = <10>;
 | 
			
		||||
		st,irq1-click;
 | 
			
		||||
		st,irq2-click;
 | 
			
		||||
		st,wakeup-x-lo;
 | 
			
		||||
		st,wakeup-x-hi;
 | 
			
		||||
		st,wakeup-y-lo;
 | 
			
		||||
		st,wakeup-y-hi;
 | 
			
		||||
		st,wakeup-z-lo;
 | 
			
		||||
		st,wakeup-z-hi;
 | 
			
		||||
		st,min-limit-x = <120>;
 | 
			
		||||
		st,min-limit-y = <120>;
 | 
			
		||||
		st,min-limit-z = <140>;
 | 
			
		||||
		st,max-limit-x = <550>;
 | 
			
		||||
		st,max-limit-y = <550>;
 | 
			
		||||
		st,max-limit-z = <750>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	tlv320aic3106: tlv320aic3106@1b {
 | 
			
		||||
		#sound-dai-cells = <0>;
 | 
			
		||||
		compatible = "ti,tlv320aic3106";
 | 
			
		||||
		reg = <0x1b>;
 | 
			
		||||
		status = "okay";
 | 
			
		||||
 | 
			
		||||
		/* Regulators */
 | 
			
		||||
		AVDD-supply = <&vaux2_reg>;
 | 
			
		||||
		IOVDD-supply = <&vaux2_reg>;
 | 
			
		||||
		DRVDD-supply = <&vaux2_reg>;
 | 
			
		||||
		DVDD-supply = <&vbat>;
 | 
			
		||||
	};
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&usb {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&usb_ctrl_mod {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&usb0_phy {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&usb1_phy {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&usb0 {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&usb1 {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
	dr_mode = "host";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&cppi41dma  {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&epwmss2 {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
 | 
			
		||||
	ecap2: ecap@48304100 {
 | 
			
		||||
		status = "okay";
 | 
			
		||||
		pinctrl-names = "default";
 | 
			
		||||
		pinctrl-0 = <&ecap2_pins>;
 | 
			
		||||
	};
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#include "tps65910.dtsi"
 | 
			
		||||
 | 
			
		||||
&tps {
 | 
			
		||||
	vcc1-supply = <&vbat>;
 | 
			
		||||
	vcc2-supply = <&vbat>;
 | 
			
		||||
	vcc3-supply = <&vbat>;
 | 
			
		||||
	vcc4-supply = <&vbat>;
 | 
			
		||||
	vcc5-supply = <&vbat>;
 | 
			
		||||
	vcc6-supply = <&vbat>;
 | 
			
		||||
	vcc7-supply = <&vbat>;
 | 
			
		||||
	vccio-supply = <&vbat>;
 | 
			
		||||
 | 
			
		||||
	regulators {
 | 
			
		||||
		vrtc_reg: regulator@0 {
 | 
			
		||||
			regulator-always-on;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		vio_reg: regulator@1 {
 | 
			
		||||
			regulator-always-on;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		vdd1_reg: regulator@2 {
 | 
			
		||||
			/* VDD_MPU voltage limits 0.95V - 1.26V with +/-4% tolerance */
 | 
			
		||||
			regulator-name = "vdd_mpu";
 | 
			
		||||
			regulator-min-microvolt = <912500>;
 | 
			
		||||
			regulator-max-microvolt = <1312500>;
 | 
			
		||||
			regulator-boot-on;
 | 
			
		||||
			regulator-always-on;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		vdd2_reg: regulator@3 {
 | 
			
		||||
			/* VDD_CORE voltage limits 0.95V - 1.1V with +/-4% tolerance */
 | 
			
		||||
			regulator-name = "vdd_core";
 | 
			
		||||
			regulator-min-microvolt = <912500>;
 | 
			
		||||
			regulator-max-microvolt = <1150000>;
 | 
			
		||||
			regulator-boot-on;
 | 
			
		||||
			regulator-always-on;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		vdd3_reg: regulator@4 {
 | 
			
		||||
			regulator-always-on;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		vdig1_reg: regulator@5 {
 | 
			
		||||
			regulator-always-on;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		vdig2_reg: regulator@6 {
 | 
			
		||||
			regulator-always-on;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		vpll_reg: regulator@7 {
 | 
			
		||||
			regulator-always-on;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		vdac_reg: regulator@8 {
 | 
			
		||||
			regulator-always-on;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		vaux1_reg: regulator@9 {
 | 
			
		||||
			regulator-always-on;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		vaux2_reg: regulator@10 {
 | 
			
		||||
			regulator-always-on;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		vaux33_reg: regulator@11 {
 | 
			
		||||
			regulator-always-on;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		vmmc_reg: regulator@12 {
 | 
			
		||||
			regulator-min-microvolt = <1800000>;
 | 
			
		||||
			regulator-max-microvolt = <3300000>;
 | 
			
		||||
			regulator-always-on;
 | 
			
		||||
		};
 | 
			
		||||
	};
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&mac {
 | 
			
		||||
	pinctrl-names = "default", "sleep";
 | 
			
		||||
	pinctrl-0 = <&cpsw_default>;
 | 
			
		||||
	pinctrl-1 = <&cpsw_sleep>;
 | 
			
		||||
	dual_emac = <1>;
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&davinci_mdio {
 | 
			
		||||
	pinctrl-names = "default", "sleep";
 | 
			
		||||
	pinctrl-0 = <&davinci_mdio_default>;
 | 
			
		||||
	pinctrl-1 = <&davinci_mdio_sleep>;
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&cpsw_emac0 {
 | 
			
		||||
	phy_id = <&davinci_mdio>, <0>;
 | 
			
		||||
	phy-mode = "rgmii-txid";
 | 
			
		||||
	dual_emac_res_vlan = <1>;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&cpsw_emac1 {
 | 
			
		||||
	phy_id = <&davinci_mdio>, <1>;
 | 
			
		||||
	phy-mode = "rgmii-txid";
 | 
			
		||||
	dual_emac_res_vlan = <2>;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&mmc1 {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
	vmmc-supply = <&vmmc_reg>;
 | 
			
		||||
	bus-width = <4>;
 | 
			
		||||
	pinctrl-names = "default";
 | 
			
		||||
	pinctrl-0 = <&mmc1_pins>;
 | 
			
		||||
	cd-gpios = <&gpio0 6 GPIO_ACTIVE_LOW>;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&sham {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&aes {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&gpio0 {
 | 
			
		||||
	ti,no-reset-on-init;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&mmc2 {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
	vmmc-supply = <&wl12xx_vmmc>;
 | 
			
		||||
	ti,non-removable;
 | 
			
		||||
	bus-width = <4>;
 | 
			
		||||
	cap-power-off-card;
 | 
			
		||||
	pinctrl-names = "default";
 | 
			
		||||
	pinctrl-0 = <&mmc2_pins>;
 | 
			
		||||
 | 
			
		||||
	#address-cells = <1>;
 | 
			
		||||
	#size-cells = <0>;
 | 
			
		||||
	wlcore: wlcore@2 {
 | 
			
		||||
		compatible = "ti,wl1271";
 | 
			
		||||
		reg = <2>;
 | 
			
		||||
		interrupt-parent = <&gpio0>;
 | 
			
		||||
		interrupts = <31 IRQ_TYPE_LEVEL_HIGH>; /* gpio 31 */
 | 
			
		||||
		ref-clock-frequency = <38400000>;
 | 
			
		||||
	};
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&mcasp1 {
 | 
			
		||||
	#sound-dai-cells = <0>;
 | 
			
		||||
	pinctrl-names = "default", "sleep";
 | 
			
		||||
	pinctrl-0 = <&mcasp1_pins>;
 | 
			
		||||
	pinctrl-1 = <&mcasp1_pins_sleep>;
 | 
			
		||||
 | 
			
		||||
	status = "okay";
 | 
			
		||||
 | 
			
		||||
	op-mode = <0>;          /* MCASP_IIS_MODE */
 | 
			
		||||
	tdm-slots = <2>;
 | 
			
		||||
	/* 4 serializers */
 | 
			
		||||
	serial-dir = <  /* 0: INACTIVE, 1: TX, 2: RX */
 | 
			
		||||
		0 0 1 2
 | 
			
		||||
	>;
 | 
			
		||||
	tx-num-evt = <32>;
 | 
			
		||||
	rx-num-evt = <32>;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&tscadc {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
	tsc {
 | 
			
		||||
		ti,wires = <4>;
 | 
			
		||||
		ti,x-plate-resistance = <200>;
 | 
			
		||||
		ti,coordinate-readouts = <5>;
 | 
			
		||||
		ti,wire-config = <0x00 0x11 0x22 0x33>;
 | 
			
		||||
	};
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&lcdc {
 | 
			
		||||
      status = "okay";
 | 
			
		||||
};
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,430 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Copyright (C) 2016 Texas Instruments Incorporated - http://www.ti.com/
 | 
			
		||||
 *
 | 
			
		||||
 * This program is free software; you can redistribute it and/or modify
 | 
			
		||||
 * it under the terms of the GNU General Public License version 2 as
 | 
			
		||||
 * published by the Free Software Foundation.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * AM335x ICE V2 board
 | 
			
		||||
 * http://www.ti.com/tool/tmdsice3359
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/dts-v1/;
 | 
			
		||||
 | 
			
		||||
#include "am33xx.dtsi"
 | 
			
		||||
 | 
			
		||||
/ {
 | 
			
		||||
	model = "TI AM3359 ICE-V2";
 | 
			
		||||
	compatible = "ti,am3359-icev2", "ti,am33xx";
 | 
			
		||||
 | 
			
		||||
	chosen {
 | 
			
		||||
		stdout-path = &uart3;
 | 
			
		||||
		tick-timer = &timer2;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	memory {
 | 
			
		||||
		device_type = "memory";
 | 
			
		||||
		reg = <0x80000000 0x10000000>; /* 256 MB */
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	vbat: fixedregulator@0 {
 | 
			
		||||
		compatible = "regulator-fixed";
 | 
			
		||||
		regulator-name = "vbat";
 | 
			
		||||
		regulator-min-microvolt = <5000000>;
 | 
			
		||||
		regulator-max-microvolt = <5000000>;
 | 
			
		||||
		regulator-boot-on;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	vtt_fixed: fixedregulator@1 {
 | 
			
		||||
		compatible = "regulator-fixed";
 | 
			
		||||
		regulator-name = "vtt";
 | 
			
		||||
		regulator-min-microvolt = <1500000>;
 | 
			
		||||
		regulator-max-microvolt = <1500000>;
 | 
			
		||||
		gpio = <&gpio0 18 GPIO_ACTIVE_HIGH>;
 | 
			
		||||
		regulator-always-on;
 | 
			
		||||
		regulator-boot-on;
 | 
			
		||||
		enable-active-high;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	leds@0 {
 | 
			
		||||
		compatible = "gpio-leds";
 | 
			
		||||
 | 
			
		||||
		led@0 {
 | 
			
		||||
			label = "out0";
 | 
			
		||||
			gpios = <&tpic2810 0 GPIO_ACTIVE_HIGH>;
 | 
			
		||||
			default-state = "off";
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		led@1 {
 | 
			
		||||
			label = "out1";
 | 
			
		||||
			gpios = <&tpic2810 1 GPIO_ACTIVE_HIGH>;
 | 
			
		||||
			default-state = "off";
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		led@2 {
 | 
			
		||||
			label = "out2";
 | 
			
		||||
			gpios = <&tpic2810 2 GPIO_ACTIVE_HIGH>;
 | 
			
		||||
			default-state = "off";
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		led@3 {
 | 
			
		||||
			label = "out3";
 | 
			
		||||
			gpios = <&tpic2810 3 GPIO_ACTIVE_HIGH>;
 | 
			
		||||
			default-state = "off";
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		led@4 {
 | 
			
		||||
			label = "out4";
 | 
			
		||||
			gpios = <&tpic2810 4 GPIO_ACTIVE_HIGH>;
 | 
			
		||||
			default-state = "off";
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		led@5 {
 | 
			
		||||
			label = "out5";
 | 
			
		||||
			gpios = <&tpic2810 5 GPIO_ACTIVE_HIGH>;
 | 
			
		||||
			default-state = "off";
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		led@6 {
 | 
			
		||||
			label = "out6";
 | 
			
		||||
			gpios = <&tpic2810 6 GPIO_ACTIVE_HIGH>;
 | 
			
		||||
			default-state = "off";
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		led@7 {
 | 
			
		||||
			label = "out7";
 | 
			
		||||
			gpios = <&tpic2810 7 GPIO_ACTIVE_HIGH>;
 | 
			
		||||
			default-state = "off";
 | 
			
		||||
		};
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	/* Tricolor status LEDs */
 | 
			
		||||
	leds@1 {
 | 
			
		||||
		compatible = "gpio-leds";
 | 
			
		||||
		pinctrl-names = "default";
 | 
			
		||||
		pinctrl-0 = <&user_leds>;
 | 
			
		||||
 | 
			
		||||
		led@0 {
 | 
			
		||||
			label = "status0:red:cpu0";
 | 
			
		||||
			gpios = <&gpio0 17 GPIO_ACTIVE_HIGH>;
 | 
			
		||||
			default-state = "off";
 | 
			
		||||
			linux,default-trigger = "cpu0";
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		led@1 {
 | 
			
		||||
			label = "status0:green:usr";
 | 
			
		||||
			gpios = <&gpio0 16 GPIO_ACTIVE_HIGH>;
 | 
			
		||||
			default-state = "off";
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		led@2 {
 | 
			
		||||
			label = "status0:yellow:usr";
 | 
			
		||||
			gpios = <&gpio3 9 GPIO_ACTIVE_HIGH>;
 | 
			
		||||
			default-state = "off";
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		led@3 {
 | 
			
		||||
			label = "status1:red:mmc0";
 | 
			
		||||
			gpios = <&gpio1 30 GPIO_ACTIVE_HIGH>;
 | 
			
		||||
			default-state = "off";
 | 
			
		||||
			linux,default-trigger = "mmc0";
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		led@4 {
 | 
			
		||||
			label = "status1:green:usr";
 | 
			
		||||
			gpios = <&gpio0 20 GPIO_ACTIVE_HIGH>;
 | 
			
		||||
			default-state = "off";
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		led@5 {
 | 
			
		||||
			label = "status1:yellow:usr";
 | 
			
		||||
			gpios = <&gpio0 19 GPIO_ACTIVE_HIGH>;
 | 
			
		||||
			default-state = "off";
 | 
			
		||||
		};
 | 
			
		||||
	};
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&am33xx_pinmux {
 | 
			
		||||
	user_leds: user_leds {
 | 
			
		||||
		pinctrl-single,pins = <
 | 
			
		||||
			AM33XX_IOPAD(0x91c, PIN_OUTPUT | MUX_MODE7) /* (J18) gmii1_txd3.gpio0[16] */
 | 
			
		||||
			AM33XX_IOPAD(0x920, PIN_OUTPUT | MUX_MODE7) /* (K15) gmii1_txd2.gpio0[17] */
 | 
			
		||||
			AM33XX_IOPAD(0x9b0, PIN_OUTPUT | MUX_MODE7) /* (A15) xdma_event_intr0.gpio0[19] */
 | 
			
		||||
			AM33XX_IOPAD(0x9b4, PIN_OUTPUT | MUX_MODE7) /* (D14) xdma_event_intr1.gpio0[20] */
 | 
			
		||||
			AM33XX_IOPAD(0x880, PIN_OUTPUT | MUX_MODE7) /* (U9) gpmc_csn1.gpio1[30] */
 | 
			
		||||
			AM33XX_IOPAD(0x92c, PIN_OUTPUT | MUX_MODE7) /* (K18) gmii1_txclk.gpio3[9] */
 | 
			
		||||
		>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	mmc0_pins_default: mmc0_pins_default {
 | 
			
		||||
		pinctrl-single,pins = <
 | 
			
		||||
			AM33XX_IOPAD(0x8f0, PIN_INPUT_PULLUP | MUX_MODE0) /* (F17) mmc0_dat3.mmc0_dat3 */
 | 
			
		||||
			AM33XX_IOPAD(0x8f4, PIN_INPUT_PULLUP | MUX_MODE0) /* (F18) mmc0_dat2.mmc0_dat2 */
 | 
			
		||||
			AM33XX_IOPAD(0x8f8, PIN_INPUT_PULLUP | MUX_MODE0) /* (G15) mmc0_dat1.mmc0_dat1 */
 | 
			
		||||
			AM33XX_IOPAD(0x8fc, PIN_INPUT_PULLUP | MUX_MODE0) /* (G16) mmc0_dat0.mmc0_dat0 */
 | 
			
		||||
			AM33XX_IOPAD(0x900, PIN_INPUT_PULLUP | MUX_MODE0) /* (G17) mmc0_clk.mmc0_clk */
 | 
			
		||||
			AM33XX_IOPAD(0x904, PIN_INPUT_PULLUP | MUX_MODE0) /* (G18) mmc0_cmd.mmc0_cmd */
 | 
			
		||||
			AM33XX_IOPAD(0x960, PIN_INPUT_PULLUP | MUX_MODE5) /* (C15) spi0_cs1.mmc0_sdcd */
 | 
			
		||||
		>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	i2c0_pins_default: i2c0_pins_default {
 | 
			
		||||
		pinctrl-single,pins = <
 | 
			
		||||
			AM33XX_IOPAD(0x988, PIN_INPUT | MUX_MODE0) /* (C17) I2C0_SDA.I2C0_SDA */
 | 
			
		||||
			AM33XX_IOPAD(0x98c, PIN_INPUT | MUX_MODE0) /* (C16) I2C0_SCL.I2C0_SCL */
 | 
			
		||||
		>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	spi0_pins_default: spi0_pins_default {
 | 
			
		||||
		pinctrl-single,pins = <
 | 
			
		||||
			AM33XX_IOPAD(0x950, PIN_INPUT_PULLUP | MUX_MODE0) /* (A17) spi0_sclk.spi0_sclk */
 | 
			
		||||
			AM33XX_IOPAD(0x954, PIN_INPUT_PULLUP | MUX_MODE0) /* (B17) spi0_d0.spi0_d0 */
 | 
			
		||||
			AM33XX_IOPAD(0x958, PIN_INPUT_PULLUP | MUX_MODE0) /* (B16) spi0_d1.spi0_d1 */
 | 
			
		||||
			AM33XX_IOPAD(0x95c, PIN_INPUT_PULLUP | MUX_MODE0) /* (A16) spi0_cs0.spi0_cs0 */
 | 
			
		||||
		>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	uart3_pins_default: uart3_pins_default {
 | 
			
		||||
		pinctrl-single,pins = <
 | 
			
		||||
			AM33XX_IOPAD(0x934, PIN_INPUT_PULLUP | MUX_MODE1) /* (L17) gmii1_rxd3.uart3_rxd */
 | 
			
		||||
			AM33XX_IOPAD(0x938, PIN_OUTPUT_PULLUP | MUX_MODE1) /* (L16) gmii1_rxd2.uart3_txd */
 | 
			
		||||
		>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	cpsw_default: cpsw_default {
 | 
			
		||||
		pinctrl-single,pins = <
 | 
			
		||||
			/* Slave 1, RMII mode */
 | 
			
		||||
			AM33XX_IOPAD(0x90c, (PIN_INPUT_PULLUP | MUX_MODE1))	/* mii1_crs.rmii1_crs_dv */
 | 
			
		||||
			AM33XX_IOPAD(0x944, (PIN_INPUT_PULLUP | MUX_MODE0))	/* rmii1_refclk.rmii1_refclk */
 | 
			
		||||
			AM33XX_IOPAD(0x940, (PIN_INPUT_PULLUP | MUX_MODE1))	/* mii1_rxd0.rmii1_rxd0 */
 | 
			
		||||
			AM33XX_IOPAD(0x93c, (PIN_INPUT_PULLUP | MUX_MODE1))	/* mii1_rxd1.rmii1_rxd1 */
 | 
			
		||||
			AM33XX_IOPAD(0x910, (PIN_INPUT_PULLUP | MUX_MODE1))	/* mii1_rxerr.rmii1_rxerr */
 | 
			
		||||
			AM33XX_IOPAD(0x928, (PIN_OUTPUT_PULLDOWN | MUX_MODE1))	/* mii1_txd0.rmii1_txd0 */
 | 
			
		||||
			AM33XX_IOPAD(0x924, (PIN_OUTPUT_PULLDOWN | MUX_MODE1))	/* mii1_txd1.rmii1_txd1 */
 | 
			
		||||
			AM33XX_IOPAD(0x914, (PIN_OUTPUT_PULLDOWN | MUX_MODE1))	/* mii1_txen.rmii1_txen */
 | 
			
		||||
			/* Slave 2, RMII mode */
 | 
			
		||||
			AM33XX_IOPAD(0x870, (PIN_INPUT_PULLUP | MUX_MODE3))	/* gpmc_wait0.rmii2_crs_dv */
 | 
			
		||||
			AM33XX_IOPAD(0x908, (PIN_INPUT_PULLUP | MUX_MODE1))	/* mii1_col.rmii2_refclk */
 | 
			
		||||
			AM33XX_IOPAD(0x86c, (PIN_INPUT_PULLUP | MUX_MODE3))	/* gpmc_a11.rmii2_rxd0 */
 | 
			
		||||
			AM33XX_IOPAD(0x868, (PIN_INPUT_PULLUP | MUX_MODE3))	/* gpmc_a10.rmii2_rxd1 */
 | 
			
		||||
			AM33XX_IOPAD(0x874, (PIN_INPUT_PULLUP | MUX_MODE3))	/* gpmc_wpn.rmii2_rxerr */
 | 
			
		||||
			AM33XX_IOPAD(0x854, (PIN_OUTPUT_PULLDOWN | MUX_MODE3))	/* gpmc_a5.rmii2_txd0 */
 | 
			
		||||
			AM33XX_IOPAD(0x850, (PIN_OUTPUT_PULLDOWN | MUX_MODE3))	/* gpmc_a4.rmii2_txd1 */
 | 
			
		||||
			AM33XX_IOPAD(0x840, (PIN_OUTPUT_PULLDOWN | MUX_MODE3))	/* gpmc_a0.rmii2_txen */
 | 
			
		||||
		>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	cpsw_sleep: cpsw_sleep {
 | 
			
		||||
		pinctrl-single,pins = <
 | 
			
		||||
			/* Slave 1 reset value */
 | 
			
		||||
			AM33XX_IOPAD(0x90c, (PIN_INPUT_PULLDOWN | MUX_MODE7))
 | 
			
		||||
			AM33XX_IOPAD(0x944, (PIN_INPUT_PULLDOWN | MUX_MODE7))
 | 
			
		||||
			AM33XX_IOPAD(0x940, (PIN_INPUT_PULLDOWN | MUX_MODE7))
 | 
			
		||||
			AM33XX_IOPAD(0x93c, (PIN_INPUT_PULLDOWN | MUX_MODE7))
 | 
			
		||||
			AM33XX_IOPAD(0x910, (PIN_INPUT_PULLDOWN | MUX_MODE7))
 | 
			
		||||
			AM33XX_IOPAD(0x928, (PIN_INPUT_PULLDOWN | MUX_MODE7))
 | 
			
		||||
			AM33XX_IOPAD(0x924, (PIN_INPUT_PULLDOWN | MUX_MODE7))
 | 
			
		||||
			AM33XX_IOPAD(0x914, (PIN_INPUT_PULLDOWN | MUX_MODE7))
 | 
			
		||||
 | 
			
		||||
			/* Slave 2 reset value */
 | 
			
		||||
			AM33XX_IOPAD(0x870, (PIN_INPUT_PULLDOWN | MUX_MODE7))
 | 
			
		||||
			AM33XX_IOPAD(0x908, (PIN_INPUT_PULLDOWN | MUX_MODE7))
 | 
			
		||||
			AM33XX_IOPAD(0x86c, (PIN_INPUT_PULLDOWN | MUX_MODE7))
 | 
			
		||||
			AM33XX_IOPAD(0x868, (PIN_INPUT_PULLDOWN | MUX_MODE7))
 | 
			
		||||
			AM33XX_IOPAD(0x874, (PIN_INPUT_PULLDOWN | MUX_MODE7))
 | 
			
		||||
			AM33XX_IOPAD(0x854, (PIN_INPUT_PULLDOWN | MUX_MODE7))
 | 
			
		||||
			AM33XX_IOPAD(0x850, (PIN_INPUT_PULLDOWN | MUX_MODE7))
 | 
			
		||||
			AM33XX_IOPAD(0x840, (PIN_INPUT_PULLDOWN | MUX_MODE7))
 | 
			
		||||
		>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	davinci_mdio_default: davinci_mdio_default {
 | 
			
		||||
		pinctrl-single,pins = <
 | 
			
		||||
			/* MDIO */
 | 
			
		||||
			AM33XX_IOPAD(0x948, (PIN_INPUT_PULLUP | SLEWCTRL_FAST | MUX_MODE0))	/* mdio_data.mdio_data */
 | 
			
		||||
			AM33XX_IOPAD(0x94c, (PIN_OUTPUT_PULLUP | MUX_MODE0))			/* mdio_clk.mdio_clk */
 | 
			
		||||
		>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	davinci_mdio_sleep: davinci_mdio_sleep {
 | 
			
		||||
		pinctrl-single,pins = <
 | 
			
		||||
			/* MDIO reset value */
 | 
			
		||||
			AM33XX_IOPAD(0x948, (PIN_INPUT_PULLDOWN | MUX_MODE7))
 | 
			
		||||
			AM33XX_IOPAD(0x94c, (PIN_INPUT_PULLDOWN | MUX_MODE7))
 | 
			
		||||
		>;
 | 
			
		||||
	};
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&i2c0 {
 | 
			
		||||
	pinctrl-names = "default";
 | 
			
		||||
	pinctrl-0 = <&i2c0_pins_default>;
 | 
			
		||||
 | 
			
		||||
	status = "okay";
 | 
			
		||||
	clock-frequency = <400000>;
 | 
			
		||||
 | 
			
		||||
	tps: power-controller@2d {
 | 
			
		||||
		reg = <0x2d>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	tpic2810: gpio@60 {
 | 
			
		||||
		compatible = "ti,tpic2810";
 | 
			
		||||
		reg = <0x60>;
 | 
			
		||||
		gpio-controller;
 | 
			
		||||
		#gpio-cells = <2>;
 | 
			
		||||
	};
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#include "tps65910.dtsi"
 | 
			
		||||
 | 
			
		||||
&tps {
 | 
			
		||||
	vcc1-supply = <&vbat>;
 | 
			
		||||
	vcc2-supply = <&vbat>;
 | 
			
		||||
	vcc3-supply = <&vbat>;
 | 
			
		||||
	vcc4-supply = <&vbat>;
 | 
			
		||||
	vcc5-supply = <&vbat>;
 | 
			
		||||
	vcc6-supply = <&vbat>;
 | 
			
		||||
	vcc7-supply = <&vbat>;
 | 
			
		||||
	vccio-supply = <&vbat>;
 | 
			
		||||
 | 
			
		||||
	regulators {
 | 
			
		||||
		vrtc_reg: regulator@0 {
 | 
			
		||||
			regulator-always-on;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		vio_reg: regulator@1 {
 | 
			
		||||
			regulator-always-on;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		vdd1_reg: regulator@2 {
 | 
			
		||||
			regulator-name = "vdd_mpu";
 | 
			
		||||
			regulator-min-microvolt = <912500>;
 | 
			
		||||
			regulator-max-microvolt = <1326000>;
 | 
			
		||||
			regulator-boot-on;
 | 
			
		||||
			regulator-always-on;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		vdd2_reg: regulator@3 {
 | 
			
		||||
			regulator-name = "vdd_core";
 | 
			
		||||
			regulator-min-microvolt = <912500>;
 | 
			
		||||
			regulator-max-microvolt = <1144000>;
 | 
			
		||||
			regulator-boot-on;
 | 
			
		||||
			regulator-always-on;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		vdd3_reg: regulator@4 {
 | 
			
		||||
			regulator-always-on;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		vdig1_reg: regulator@5 {
 | 
			
		||||
			regulator-always-on;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		vdig2_reg: regulator@6 {
 | 
			
		||||
			regulator-always-on;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		vpll_reg: regulator@7 {
 | 
			
		||||
			regulator-always-on;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		vdac_reg: regulator@8 {
 | 
			
		||||
			regulator-always-on;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		vaux1_reg: regulator@9 {
 | 
			
		||||
			regulator-always-on;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		vaux2_reg: regulator@10 {
 | 
			
		||||
			regulator-always-on;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		vaux33_reg: regulator@11 {
 | 
			
		||||
			regulator-always-on;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		vmmc_reg: regulator@12 {
 | 
			
		||||
			regulator-min-microvolt = <1800000>;
 | 
			
		||||
			regulator-max-microvolt = <3300000>;
 | 
			
		||||
			regulator-always-on;
 | 
			
		||||
		};
 | 
			
		||||
	};
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&mmc1 {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
	vmmc-supply = <&vmmc_reg>;
 | 
			
		||||
	bus-width = <4>;
 | 
			
		||||
	pinctrl-names = "default";
 | 
			
		||||
	pinctrl-0 = <&mmc0_pins_default>;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&gpio0 {
 | 
			
		||||
	/* Do not idle the GPIO used for holding the VTT regulator */
 | 
			
		||||
	ti,no-reset-on-init;
 | 
			
		||||
	ti,no-idle-on-init;
 | 
			
		||||
 | 
			
		||||
	p7 {
 | 
			
		||||
		gpio-hog;
 | 
			
		||||
		gpios = <7 GPIO_ACTIVE_HIGH>;
 | 
			
		||||
		output-high;
 | 
			
		||||
		line-name = "FET_SWITCH_CTRL";
 | 
			
		||||
	};
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&uart3 {
 | 
			
		||||
	pinctrl-names = "default";
 | 
			
		||||
	pinctrl-0 = <&uart3_pins_default>;
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&gpio3 {
 | 
			
		||||
	p4 {
 | 
			
		||||
		gpio-hog;
 | 
			
		||||
		gpios = <4 GPIO_ACTIVE_HIGH>;
 | 
			
		||||
		output-high;
 | 
			
		||||
		line-name = "PR1_MII_CTRL";
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	p10 {
 | 
			
		||||
		gpio-hog;
 | 
			
		||||
		gpios = <10 GPIO_ACTIVE_HIGH>;
 | 
			
		||||
		output-high;
 | 
			
		||||
		line-name = "MUX_MII_CTRL";
 | 
			
		||||
	};
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&cpsw_emac0 {
 | 
			
		||||
	phy_id = <&davinci_mdio>, <1>;
 | 
			
		||||
	phy-mode = "rmii";
 | 
			
		||||
	dual_emac_res_vlan = <1>;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&cpsw_emac1 {
 | 
			
		||||
	phy_id = <&davinci_mdio>, <3>;
 | 
			
		||||
	phy-mode = "rmii";
 | 
			
		||||
	dual_emac_res_vlan = <2>;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&mac {
 | 
			
		||||
	pinctrl-names = "default", "sleep";
 | 
			
		||||
	pinctrl-0 = <&cpsw_default>;
 | 
			
		||||
	pinctrl-1 = <&cpsw_sleep>;
 | 
			
		||||
	status = "okay";
 | 
			
		||||
	dual_emac;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&phy_sel {
 | 
			
		||||
	rmii-clock-ext;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&davinci_mdio {
 | 
			
		||||
	pinctrl-names = "default", "sleep";
 | 
			
		||||
	pinctrl-0 = <&davinci_mdio_default>;
 | 
			
		||||
	pinctrl-1 = <&davinci_mdio_sleep>;
 | 
			
		||||
	status = "okay";
 | 
			
		||||
	reset-gpios = <&gpio2 5 GPIO_ACTIVE_LOW>;
 | 
			
		||||
	reset-delay-us = <2>;   /* PHY datasheet states 1uS min */
 | 
			
		||||
};
 | 
			
		||||
| 
						 | 
				
			
			@ -547,6 +547,7 @@
 | 
			
		|||
			active_slave = <0>;
 | 
			
		||||
			cpts_clock_mult = <0x80000000>;
 | 
			
		||||
			cpts_clock_shift = <29>;
 | 
			
		||||
			syscon = <&scm_conf>;
 | 
			
		||||
			ranges;
 | 
			
		||||
 | 
			
		||||
			davinci_mdio: mdio@4a101000 {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,420 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Copyright (C) 2014 Texas Instruments Incorporated - http://www.ti.com/
 | 
			
		||||
 *
 | 
			
		||||
 * This program is free software; you can redistribute it and/or modify
 | 
			
		||||
 * it under the terms of the GNU General Public License version 2 as
 | 
			
		||||
 * published by the Free Software Foundation.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/dts-v1/;
 | 
			
		||||
 | 
			
		||||
#include "am4372.dtsi"
 | 
			
		||||
#include <dt-bindings/pinctrl/am43xx.h>
 | 
			
		||||
#include <dt-bindings/pwm/pwm.h>
 | 
			
		||||
#include <dt-bindings/gpio/gpio.h>
 | 
			
		||||
#include <dt-bindings/input/input.h>
 | 
			
		||||
 | 
			
		||||
/ {
 | 
			
		||||
	model = "TI AM437x Industrial Development Kit";
 | 
			
		||||
	compatible = "ti,am437x-idk-evm","ti,am4372","ti,am43";
 | 
			
		||||
 | 
			
		||||
	chosen {
 | 
			
		||||
		stdout-path = &uart0;
 | 
			
		||||
		tick-timer = &timer2;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	v24_0d: fixed-regulator-v24_0d {
 | 
			
		||||
		compatible = "regulator-fixed";
 | 
			
		||||
		regulator-name = "V24_0D";
 | 
			
		||||
		regulator-min-microvolt = <24000000>;
 | 
			
		||||
		regulator-max-microvolt = <24000000>;
 | 
			
		||||
		regulator-always-on;
 | 
			
		||||
		regulator-boot-on;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	v3_3d: fixed-regulator-v3_3d {
 | 
			
		||||
		compatible = "regulator-fixed";
 | 
			
		||||
		regulator-name = "V3_3D";
 | 
			
		||||
		regulator-min-microvolt = <3300000>;
 | 
			
		||||
		regulator-max-microvolt = <3300000>;
 | 
			
		||||
		regulator-always-on;
 | 
			
		||||
		regulator-boot-on;
 | 
			
		||||
		vin-supply = <&v24_0d>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	vdd_corereg: fixed-regulator-vdd_corereg {
 | 
			
		||||
		compatible = "regulator-fixed";
 | 
			
		||||
		regulator-name = "VDD_COREREG";
 | 
			
		||||
		regulator-min-microvolt = <1100000>;
 | 
			
		||||
		regulator-max-microvolt = <1100000>;
 | 
			
		||||
		regulator-always-on;
 | 
			
		||||
		regulator-boot-on;
 | 
			
		||||
		vin-supply = <&v24_0d>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	vdd_core: fixed-regulator-vdd_core {
 | 
			
		||||
		compatible = "regulator-fixed";
 | 
			
		||||
		regulator-name = "VDD_CORE";
 | 
			
		||||
		regulator-min-microvolt = <1100000>;
 | 
			
		||||
		regulator-max-microvolt = <1100000>;
 | 
			
		||||
		regulator-always-on;
 | 
			
		||||
		regulator-boot-on;
 | 
			
		||||
		vin-supply = <&vdd_corereg>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	v1_8dreg: fixed-regulator-v1_8dreg{
 | 
			
		||||
		compatible = "regulator-fixed";
 | 
			
		||||
		regulator-name = "V1_8DREG";
 | 
			
		||||
		regulator-min-microvolt = <1800000>;
 | 
			
		||||
		regulator-max-microvolt = <1800000>;
 | 
			
		||||
		regulator-always-on;
 | 
			
		||||
		regulator-boot-on;
 | 
			
		||||
		vin-supply = <&v24_0d>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	v1_8d: fixed-regulator-v1_8d{
 | 
			
		||||
		compatible = "regulator-fixed";
 | 
			
		||||
		regulator-name = "V1_8D";
 | 
			
		||||
		regulator-min-microvolt = <1800000>;
 | 
			
		||||
		regulator-max-microvolt = <1800000>;
 | 
			
		||||
		regulator-always-on;
 | 
			
		||||
		regulator-boot-on;
 | 
			
		||||
		vin-supply = <&v1_8dreg>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	v1_5dreg: fixed-regulator-v1_5dreg{
 | 
			
		||||
		compatible = "regulator-fixed";
 | 
			
		||||
		regulator-name = "V1_5DREG";
 | 
			
		||||
		regulator-min-microvolt = <1500000>;
 | 
			
		||||
		regulator-max-microvolt = <1500000>;
 | 
			
		||||
		regulator-always-on;
 | 
			
		||||
		regulator-boot-on;
 | 
			
		||||
		vin-supply = <&v24_0d>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	v1_5d: fixed-regulator-v1_5d{
 | 
			
		||||
		compatible = "regulator-fixed";
 | 
			
		||||
		regulator-name = "V1_5D";
 | 
			
		||||
		regulator-min-microvolt = <1500000>;
 | 
			
		||||
		regulator-max-microvolt = <1500000>;
 | 
			
		||||
		regulator-always-on;
 | 
			
		||||
		regulator-boot-on;
 | 
			
		||||
		vin-supply = <&v1_5dreg>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	gpio_keys: gpio_keys {
 | 
			
		||||
		compatible = "gpio-keys";
 | 
			
		||||
		pinctrl-names = "default";
 | 
			
		||||
		pinctrl-0 = <&gpio_keys_pins_default>;
 | 
			
		||||
		#address-cells = <1>;
 | 
			
		||||
		#size-cells = <0>;
 | 
			
		||||
 | 
			
		||||
		switch@0 {
 | 
			
		||||
			label = "power-button";
 | 
			
		||||
			linux,code = <KEY_POWER>;
 | 
			
		||||
			gpios = <&gpio4 2 GPIO_ACTIVE_LOW>;
 | 
			
		||||
		};
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	/* fixed 32k external oscillator clock */
 | 
			
		||||
	clk_32k_rtc: clk_32k_rtc {
 | 
			
		||||
		#clock-cells = <0>;
 | 
			
		||||
		compatible = "fixed-clock";
 | 
			
		||||
		clock-frequency = <32768>;
 | 
			
		||||
	};
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&am43xx_pinmux {
 | 
			
		||||
	gpio_keys_pins_default: gpio_keys_pins_default {
 | 
			
		||||
		pinctrl-single,pins = <
 | 
			
		||||
			AM4372_IOPAD(0x9b8, PIN_INPUT | MUX_MODE7)	/* cam0_field.gpio4_2 */
 | 
			
		||||
		>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	i2c0_pins_default: i2c0_pins_default {
 | 
			
		||||
		pinctrl-single,pins = <
 | 
			
		||||
			AM4372_IOPAD(0x988, PIN_INPUT | SLEWCTRL_FAST | MUX_MODE0) /* i2c0_sda.i2c0_sda */
 | 
			
		||||
			AM4372_IOPAD(0x98c, PIN_INPUT | SLEWCTRL_FAST | MUX_MODE0) /* i2c0_scl.i2c0_scl */
 | 
			
		||||
		>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	i2c0_pins_sleep: i2c0_pins_sleep {
 | 
			
		||||
		pinctrl-single,pins = <
 | 
			
		||||
			AM4372_IOPAD(0x988, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
			AM4372_IOPAD(0x98c, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
		>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	i2c2_pins_default: i2c2_pins_default {
 | 
			
		||||
		pinctrl-single,pins = <
 | 
			
		||||
			AM4372_IOPAD(0x9e8, PIN_INPUT | SLEWCTRL_FAST | MUX_MODE3) /* cam1_data1.i2c2_scl */
 | 
			
		||||
			AM4372_IOPAD(0x9ec, PIN_INPUT | SLEWCTRL_FAST | MUX_MODE3) /* cam1_data0.i2c2_sda */
 | 
			
		||||
		>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	i2c2_pins_sleep: i2c2_pins_sleep {
 | 
			
		||||
		pinctrl-single,pins = <
 | 
			
		||||
			AM4372_IOPAD(0x9e8, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
			AM4372_IOPAD(0x9ec, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
		>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	mmc1_pins_default: pinmux_mmc1_pins_default {
 | 
			
		||||
		pinctrl-single,pins = <
 | 
			
		||||
			AM4372_IOPAD(0x900, PIN_INPUT | MUX_MODE0) /* mmc0_clk.mmc0_clk */
 | 
			
		||||
			AM4372_IOPAD(0x904, PIN_INPUT | MUX_MODE0) /* mmc0_cmd.mmc0_cmd */
 | 
			
		||||
			AM4372_IOPAD(0x9f0, PIN_INPUT | MUX_MODE0) /* mmc0_dat3.mmc0_dat3 */
 | 
			
		||||
			AM4372_IOPAD(0x9f4, PIN_INPUT | MUX_MODE0) /* mmc0_dat2.mmc0_dat2 */
 | 
			
		||||
			AM4372_IOPAD(0x9f8, PIN_INPUT | MUX_MODE0) /* mmc0_dat1.mmc0_dat1 */
 | 
			
		||||
			AM4372_IOPAD(0x9fc, PIN_INPUT | MUX_MODE0) /* mmc0_dat0.mmc0_dat0 */
 | 
			
		||||
			AM4372_IOPAD(0x960, PIN_INPUT | MUX_MODE7) /* spi0_cs1.gpio0_6 */
 | 
			
		||||
		>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	mmc1_pins_sleep: pinmux_mmc1_pins_sleep {
 | 
			
		||||
		pinctrl-single,pins = <
 | 
			
		||||
			AM4372_IOPAD(0x900, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
			AM4372_IOPAD(0x904, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
			AM4372_IOPAD(0x9f0, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
			AM4372_IOPAD(0x9f4, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
			AM4372_IOPAD(0x9f8, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
			AM4372_IOPAD(0x9fc, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
			AM4372_IOPAD(0x960, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
		>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	ecap0_pins_default: backlight_pins_default {
 | 
			
		||||
		pinctrl-single,pins = <
 | 
			
		||||
			AM4372_IOPAD(0x964, PIN_OUTPUT | MUX_MODE0) /* ecap0_in_pwm0_out.ecap0_in_pwm0_out */
 | 
			
		||||
		>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	cpsw_default: cpsw_default {
 | 
			
		||||
		pinctrl-single,pins = <
 | 
			
		||||
			AM4372_IOPAD(0x92c, PIN_OUTPUT_PULLDOWN | MUX_MODE2)	/* mii1_txclk.rgmii1_tclk */
 | 
			
		||||
			AM4372_IOPAD(0x914, PIN_OUTPUT_PULLDOWN | MUX_MODE2)	/* mii1_txen.rgmii1_tctl */
 | 
			
		||||
			AM4372_IOPAD(0x928, PIN_OUTPUT_PULLDOWN | MUX_MODE2)	/* mii1_txd0.rgmii1_td0 */
 | 
			
		||||
			AM4372_IOPAD(0x924, PIN_OUTPUT_PULLDOWN | MUX_MODE2)	/* mii1_txd1.rgmii1_td1 */
 | 
			
		||||
			AM4372_IOPAD(0x920, PIN_OUTPUT_PULLDOWN | MUX_MODE2)	/* mii1_txd0.rgmii1_td2 */
 | 
			
		||||
			AM4372_IOPAD(0x91c, PIN_OUTPUT_PULLDOWN | MUX_MODE2)	/* mii1_txd1.rgmii1_td3 */
 | 
			
		||||
			AM4372_IOPAD(0x930, PIN_INPUT_PULLDOWN | MUX_MODE2)	/* mii1_rxclk.rmii1_rclk */
 | 
			
		||||
			AM4372_IOPAD(0x918, PIN_INPUT_PULLDOWN | MUX_MODE2)	/* mii1_rxdv.rgmii1_rctl */
 | 
			
		||||
			AM4372_IOPAD(0x940, PIN_INPUT_PULLDOWN | MUX_MODE2)	/* mii1_rxd0.rgmii1_rd0 */
 | 
			
		||||
			AM4372_IOPAD(0x93c, PIN_INPUT_PULLDOWN | MUX_MODE2)	/* mii1_rxd1.rgmii1_rd1 */
 | 
			
		||||
			AM4372_IOPAD(0x938, PIN_INPUT_PULLDOWN | MUX_MODE2)	/* mii1_rxd0.rgmii1_rd2 */
 | 
			
		||||
			AM4372_IOPAD(0x934, PIN_INPUT_PULLDOWN | MUX_MODE2)	/* mii1_rxd1.rgmii1_rd3 */
 | 
			
		||||
		>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	cpsw_sleep: cpsw_sleep {
 | 
			
		||||
		pinctrl-single,pins = <
 | 
			
		||||
			AM4372_IOPAD(0x92c, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
			AM4372_IOPAD(0x914, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
			AM4372_IOPAD(0x928, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
			AM4372_IOPAD(0x924, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
			AM4372_IOPAD(0x920, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
			AM4372_IOPAD(0x91c, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
			AM4372_IOPAD(0x930, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
			AM4372_IOPAD(0x918, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
			AM4372_IOPAD(0x940, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
			AM4372_IOPAD(0x93c, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
			AM4372_IOPAD(0x938, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
			AM4372_IOPAD(0x934, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
		>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	davinci_mdio_default: davinci_mdio_default {
 | 
			
		||||
		pinctrl-single,pins = <
 | 
			
		||||
			/* MDIO */
 | 
			
		||||
			AM4372_IOPAD(0x948, PIN_INPUT_PULLUP | SLEWCTRL_FAST | MUX_MODE0)	/* mdio_data.mdio_data */
 | 
			
		||||
			AM4372_IOPAD(0x94c, PIN_OUTPUT_PULLUP | MUX_MODE0)			/* mdio_clk.mdio_clk */
 | 
			
		||||
		>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	davinci_mdio_sleep: davinci_mdio_sleep {
 | 
			
		||||
		pinctrl-single,pins = <
 | 
			
		||||
			/* MDIO reset value */
 | 
			
		||||
			AM4372_IOPAD(0x948, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
			AM4372_IOPAD(0x94c, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
		>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	qspi_pins_default: qspi_pins_default {
 | 
			
		||||
		pinctrl-single,pins = <
 | 
			
		||||
			AM4372_IOPAD(0x87c, PIN_OUTPUT_PULLUP | MUX_MODE3)	/* gpmc_csn0.qspi_csn */
 | 
			
		||||
			AM4372_IOPAD(0x888, PIN_OUTPUT | MUX_MODE2)		/* gpmc_csn3.qspi_clk */
 | 
			
		||||
			AM4372_IOPAD(0x890, PIN_INPUT_PULLUP | MUX_MODE3)	/* gpmc_advn_ale.qspi_d0 */
 | 
			
		||||
			AM4372_IOPAD(0x894, PIN_INPUT_PULLUP | MUX_MODE3)	/* gpmc_oen_ren.qspi_d1 */
 | 
			
		||||
			AM4372_IOPAD(0x898, PIN_INPUT_PULLUP | MUX_MODE3)	/* gpmc_wen.qspi_d2 */
 | 
			
		||||
			AM4372_IOPAD(0x89c, PIN_INPUT_PULLUP | MUX_MODE3)	/* gpmc_be0n_cle.qspi_d3 */
 | 
			
		||||
		>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	qspi_pins_sleep: qspi_pins_sleep{
 | 
			
		||||
		pinctrl-single,pins = <
 | 
			
		||||
			AM4372_IOPAD(0x87c, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
			AM4372_IOPAD(0x888, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
			AM4372_IOPAD(0x890, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
			AM4372_IOPAD(0x894, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
			AM4372_IOPAD(0x898, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
			AM4372_IOPAD(0x89c, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
		>;
 | 
			
		||||
	};
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&i2c0 {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
	pinctrl-names = "default", "sleep";
 | 
			
		||||
	pinctrl-0 = <&i2c0_pins_default>;
 | 
			
		||||
	pinctrl-1 = <&i2c0_pins_sleep>;
 | 
			
		||||
	clock-frequency = <400000>;
 | 
			
		||||
 | 
			
		||||
	at24@50 {
 | 
			
		||||
		compatible = "at24,24c256";
 | 
			
		||||
		pagesize = <64>;
 | 
			
		||||
		reg = <0x50>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	tps: tps62362@60 {
 | 
			
		||||
		compatible = "ti,tps62362";
 | 
			
		||||
		reg = <0x60>;
 | 
			
		||||
		regulator-name = "VDD_MPU";
 | 
			
		||||
		regulator-min-microvolt = <950000>;
 | 
			
		||||
		regulator-max-microvolt = <1330000>;
 | 
			
		||||
		regulator-boot-on;
 | 
			
		||||
		regulator-always-on;
 | 
			
		||||
		ti,vsel0-state-high;
 | 
			
		||||
		ti,vsel1-state-high;
 | 
			
		||||
		vin-supply = <&v3_3d>;
 | 
			
		||||
	};
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&i2c2 {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
	pinctrl-names = "default", "sleep";
 | 
			
		||||
	pinctrl-0 = <&i2c2_pins_default>;
 | 
			
		||||
	pinctrl-1 = <&i2c2_pins_sleep>;
 | 
			
		||||
	clock-frequency = <100000>;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&epwmss0 {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&ecap0 {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
	pinctrl-names = "default";
 | 
			
		||||
	pinctrl-0 = <&ecap0_pins_default>;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&gpio0 {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&gpio1 {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&gpio4 {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&gpio5 {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&mmc1 {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
	pinctrl-names = "default", "sleep";
 | 
			
		||||
	pinctrl-0 = <&mmc1_pins_default>;
 | 
			
		||||
	pinctrl-1 = <&mmc1_pins_sleep>;
 | 
			
		||||
	vmmc-supply = <&v3_3d>;
 | 
			
		||||
	bus-width = <4>;
 | 
			
		||||
	cd-gpios = <&gpio0 6 GPIO_ACTIVE_LOW>;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&qspi {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
	pinctrl-names = "default", "sleep";
 | 
			
		||||
	pinctrl-0 = <&qspi_pins_default>;
 | 
			
		||||
	pinctrl-1 = <&qspi_pins_sleep>;
 | 
			
		||||
 | 
			
		||||
	spi-max-frequency = <48000000>;
 | 
			
		||||
	m25p80@0 {
 | 
			
		||||
		compatible = "mx66l51235l";
 | 
			
		||||
		spi-max-frequency = <48000000>;
 | 
			
		||||
		reg = <0>;
 | 
			
		||||
		spi-cpol;
 | 
			
		||||
		spi-cpha;
 | 
			
		||||
		spi-tx-bus-width = <1>;
 | 
			
		||||
		spi-rx-bus-width = <4>;
 | 
			
		||||
		#address-cells = <1>;
 | 
			
		||||
		#size-cells = <1>;
 | 
			
		||||
 | 
			
		||||
		/*
 | 
			
		||||
		 * MTD partition table.  The ROM checks the first 512KiB for a
 | 
			
		||||
		 * valid file to boot(XIP).
 | 
			
		||||
		 */
 | 
			
		||||
		partition@0 {
 | 
			
		||||
			label = "QSPI.U_BOOT";
 | 
			
		||||
			reg = <0x00000000 0x000080000>;
 | 
			
		||||
		};
 | 
			
		||||
		partition@1 {
 | 
			
		||||
			label = "QSPI.U_BOOT.backup";
 | 
			
		||||
			reg = <0x00080000 0x00080000>;
 | 
			
		||||
		};
 | 
			
		||||
		partition@2 {
 | 
			
		||||
			label = "QSPI.U-BOOT-SPL_OS";
 | 
			
		||||
			reg = <0x00100000 0x00010000>;
 | 
			
		||||
		};
 | 
			
		||||
		partition@3 {
 | 
			
		||||
			label = "QSPI.U_BOOT_ENV";
 | 
			
		||||
			reg = <0x00110000 0x00010000>;
 | 
			
		||||
		};
 | 
			
		||||
		partition@4 {
 | 
			
		||||
			label = "QSPI.U-BOOT-ENV.backup";
 | 
			
		||||
			reg = <0x00120000 0x00010000>;
 | 
			
		||||
		};
 | 
			
		||||
		partition@5 {
 | 
			
		||||
			label = "QSPI.KERNEL";
 | 
			
		||||
			reg = <0x00130000 0x0800000>;
 | 
			
		||||
		};
 | 
			
		||||
		partition@6 {
 | 
			
		||||
			label = "QSPI.FILESYSTEM";
 | 
			
		||||
			reg = <0x00930000 0x36D0000>;
 | 
			
		||||
		};
 | 
			
		||||
	};
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&mac {
 | 
			
		||||
	pinctrl-names = "default", "sleep";
 | 
			
		||||
	pinctrl-0 = <&cpsw_default>;
 | 
			
		||||
	pinctrl-1 = <&cpsw_sleep>;
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&davinci_mdio {
 | 
			
		||||
	pinctrl-names = "default", "sleep";
 | 
			
		||||
	pinctrl-0 = <&davinci_mdio_default>;
 | 
			
		||||
	pinctrl-1 = <&davinci_mdio_sleep>;
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&cpsw_emac0 {
 | 
			
		||||
	phy_id = <&davinci_mdio>, <0>;
 | 
			
		||||
	phy-mode = "rgmii";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&rtc {
 | 
			
		||||
	clocks = <&clk_32k_rtc>, <&clk_32768_ck>;
 | 
			
		||||
	clock-names = "ext-clk", "int-clk";
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&wdt {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&cpu {
 | 
			
		||||
	cpu0-supply = <&tps>;
 | 
			
		||||
};
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,806 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com/
 | 
			
		||||
 *
 | 
			
		||||
 * This program is free software; you can redistribute it and/or modify
 | 
			
		||||
 * it under the terms of the GNU General Public License version 2 as
 | 
			
		||||
 * published by the Free Software Foundation.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* AM43x EPOS EVM */
 | 
			
		||||
 | 
			
		||||
/dts-v1/;
 | 
			
		||||
 | 
			
		||||
#include "am4372.dtsi"
 | 
			
		||||
#include <dt-bindings/pinctrl/am43xx.h>
 | 
			
		||||
#include <dt-bindings/gpio/gpio.h>
 | 
			
		||||
#include <dt-bindings/pwm/pwm.h>
 | 
			
		||||
#include <dt-bindings/sound/tlv320aic31xx-micbias.h>
 | 
			
		||||
 | 
			
		||||
/ {
 | 
			
		||||
	model = "TI AM43x EPOS EVM";
 | 
			
		||||
	compatible = "ti,am43x-epos-evm","ti,am438x","ti,am43";
 | 
			
		||||
 | 
			
		||||
	aliases {
 | 
			
		||||
		display0 = &lcd0;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	chosen {
 | 
			
		||||
		stdout-path = &uart0;
 | 
			
		||||
		tick-timer = &timer2;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	vmmcsd_fixed: fixedregulator-sd {
 | 
			
		||||
		compatible = "regulator-fixed";
 | 
			
		||||
		regulator-name = "vmmcsd_fixed";
 | 
			
		||||
		regulator-min-microvolt = <3300000>;
 | 
			
		||||
		regulator-max-microvolt = <3300000>;
 | 
			
		||||
		enable-active-high;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	vbat: fixedregulator@0 {
 | 
			
		||||
		compatible = "regulator-fixed";
 | 
			
		||||
		regulator-name = "vbat";
 | 
			
		||||
		regulator-min-microvolt = <5000000>;
 | 
			
		||||
		regulator-max-microvolt = <5000000>;
 | 
			
		||||
		regulator-boot-on;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	lcd0: display {
 | 
			
		||||
		compatible = "osddisplays,osd057T0559-34ts", "panel-dpi";
 | 
			
		||||
		label = "lcd";
 | 
			
		||||
 | 
			
		||||
		panel-timing {
 | 
			
		||||
			clock-frequency = <33000000>;
 | 
			
		||||
			hactive = <800>;
 | 
			
		||||
			vactive = <480>;
 | 
			
		||||
			hfront-porch = <210>;
 | 
			
		||||
			hback-porch = <16>;
 | 
			
		||||
			hsync-len = <30>;
 | 
			
		||||
			vback-porch = <10>;
 | 
			
		||||
			vfront-porch = <22>;
 | 
			
		||||
			vsync-len = <13>;
 | 
			
		||||
			hsync-active = <0>;
 | 
			
		||||
			vsync-active = <0>;
 | 
			
		||||
			de-active = <1>;
 | 
			
		||||
			pixelclk-active = <1>;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		port {
 | 
			
		||||
			lcd_in: endpoint {
 | 
			
		||||
				remote-endpoint = <&dpi_out>;
 | 
			
		||||
			};
 | 
			
		||||
		};
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	matrix_keypad: matrix_keypad@0 {
 | 
			
		||||
		compatible = "gpio-matrix-keypad";
 | 
			
		||||
		debounce-delay-ms = <5>;
 | 
			
		||||
		col-scan-delay-us = <2>;
 | 
			
		||||
 | 
			
		||||
		row-gpios = <&gpio0 12 GPIO_ACTIVE_HIGH		/* Bank0, pin12 */
 | 
			
		||||
			     &gpio0 13 GPIO_ACTIVE_HIGH		/* Bank0, pin13 */
 | 
			
		||||
			     &gpio0 14 GPIO_ACTIVE_HIGH		/* Bank0, pin14 */
 | 
			
		||||
			     &gpio0 15 GPIO_ACTIVE_HIGH>;	/* Bank0, pin15 */
 | 
			
		||||
 | 
			
		||||
		col-gpios = <&gpio3 9 GPIO_ACTIVE_HIGH		/* Bank3, pin9 */
 | 
			
		||||
			     &gpio3 10 GPIO_ACTIVE_HIGH		/* Bank3, pin10 */
 | 
			
		||||
			     &gpio2 18 GPIO_ACTIVE_HIGH		/* Bank2, pin18 */
 | 
			
		||||
			     &gpio2 19 GPIO_ACTIVE_HIGH>;	/* Bank2, pin19 */
 | 
			
		||||
 | 
			
		||||
		linux,keymap = <0x00000201	/* P1 */
 | 
			
		||||
			0x01000204	/* P4 */
 | 
			
		||||
			0x02000207	/* P7 */
 | 
			
		||||
			0x0300020a	/* NUMERIC_STAR */
 | 
			
		||||
			0x00010202	/* P2 */
 | 
			
		||||
			0x01010205	/* P5 */
 | 
			
		||||
			0x02010208	/* P8 */
 | 
			
		||||
			0x03010200	/* P0 */
 | 
			
		||||
			0x00020203	/* P3 */
 | 
			
		||||
			0x01020206	/* P6 */
 | 
			
		||||
			0x02020209	/* P9 */
 | 
			
		||||
			0x0302020b	/* NUMERIC_POUND */
 | 
			
		||||
			0x00030067	/* UP */
 | 
			
		||||
			0x0103006a	/* RIGHT */
 | 
			
		||||
			0x0203006c	/* DOWN */
 | 
			
		||||
			0x03030069>;	/* LEFT */
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	backlight {
 | 
			
		||||
		compatible = "pwm-backlight";
 | 
			
		||||
		pwms = <&ecap0 0 50000 PWM_POLARITY_INVERTED>;
 | 
			
		||||
		brightness-levels = <0 51 53 56 62 75 101 152 255>;
 | 
			
		||||
		default-brightness-level = <8>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	sound0: sound@0 {
 | 
			
		||||
		compatible = "simple-audio-card";
 | 
			
		||||
		simple-audio-card,name = "AM43-EPOS-EVM";
 | 
			
		||||
		simple-audio-card,widgets =
 | 
			
		||||
			"Microphone", "Microphone Jack",
 | 
			
		||||
			"Headphone", "Headphone Jack",
 | 
			
		||||
			"Speaker", "Speaker";
 | 
			
		||||
		simple-audio-card,routing =
 | 
			
		||||
			"MIC1LP", "Microphone Jack",
 | 
			
		||||
			"MIC1RP", "Microphone Jack",
 | 
			
		||||
			"MIC1LP", "MICBIAS",
 | 
			
		||||
			"MIC1RP", "MICBIAS",
 | 
			
		||||
			"Headphone Jack", "HPL",
 | 
			
		||||
			"Headphone Jack", "HPR",
 | 
			
		||||
			"Speaker", "SPL",
 | 
			
		||||
			"Speaker", "SPR";
 | 
			
		||||
		simple-audio-card,format = "dsp_b";
 | 
			
		||||
		simple-audio-card,bitclock-master = <&sound0_master>;
 | 
			
		||||
		simple-audio-card,frame-master = <&sound0_master>;
 | 
			
		||||
		simple-audio-card,bitclock-inversion;
 | 
			
		||||
 | 
			
		||||
		simple-audio-card,cpu {
 | 
			
		||||
			sound-dai = <&mcasp1>;
 | 
			
		||||
			system-clock-frequency = <12000000>;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		sound0_master: simple-audio-card,codec {
 | 
			
		||||
			sound-dai = <&tlv320aic3111>;
 | 
			
		||||
			system-clock-frequency = <12000000>;
 | 
			
		||||
		};
 | 
			
		||||
	};
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&am43xx_pinmux {
 | 
			
		||||
		cpsw_default: cpsw_default {
 | 
			
		||||
			pinctrl-single,pins = <
 | 
			
		||||
				/* Slave 1 */
 | 
			
		||||
				AM4372_IOPAD(0x90c, PIN_INPUT_PULLDOWN | MUX_MODE1)	/* mii1_crs.rmii1_crs */
 | 
			
		||||
				AM4372_IOPAD(0x910, PIN_INPUT_PULLDOWN | MUX_MODE1)	/* mii1_rxerr.rmii1_rxerr */
 | 
			
		||||
				AM4372_IOPAD(0x914, PIN_OUTPUT_PULLDOWN | MUX_MODE1)	/* mii1_txen.rmii1_txen */
 | 
			
		||||
				AM4372_IOPAD(0x918, PIN_INPUT_PULLDOWN | MUX_MODE1)	/* mii1_rxdv.rmii1_rxdv */
 | 
			
		||||
				AM4372_IOPAD(0x924, PIN_OUTPUT_PULLDOWN | MUX_MODE1)	/* mii1_txd1.rmii1_txd1 */
 | 
			
		||||
				AM4372_IOPAD(0x928, PIN_OUTPUT_PULLDOWN | MUX_MODE1)	/* mii1_txd0.rmii1_txd0 */
 | 
			
		||||
				AM4372_IOPAD(0x93c, PIN_INPUT_PULLDOWN | MUX_MODE1)	/* mii1_rxd1.rmii1_rxd1 */
 | 
			
		||||
				AM4372_IOPAD(0x940, PIN_INPUT_PULLDOWN | MUX_MODE1)	/* mii1_rxd0.rmii1_rxd0 */
 | 
			
		||||
				AM4372_IOPAD(0x944, PIN_INPUT_PULLDOWN | MUX_MODE0)	/* rmii1_refclk.rmii1_refclk */
 | 
			
		||||
			>;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		cpsw_sleep: cpsw_sleep {
 | 
			
		||||
			pinctrl-single,pins = <
 | 
			
		||||
				/* Slave 1 reset value */
 | 
			
		||||
				AM4372_IOPAD(0x90c, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
				AM4372_IOPAD(0x910, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
				AM4372_IOPAD(0x914, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
				AM4372_IOPAD(0x918, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
				AM4372_IOPAD(0x924, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
				AM4372_IOPAD(0x928, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
				AM4372_IOPAD(0x93c, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
				AM4372_IOPAD(0x940, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
				AM4372_IOPAD(0x944, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
			>;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		davinci_mdio_default: davinci_mdio_default {
 | 
			
		||||
			pinctrl-single,pins = <
 | 
			
		||||
				/* MDIO */
 | 
			
		||||
				AM4372_IOPAD(0x948, PIN_INPUT_PULLUP | SLEWCTRL_FAST | MUX_MODE0)	/* mdio_data.mdio_data */
 | 
			
		||||
				AM4372_IOPAD(0x94c, PIN_OUTPUT_PULLUP | MUX_MODE0)			/* mdio_clk.mdio_clk */
 | 
			
		||||
			>;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		davinci_mdio_sleep: davinci_mdio_sleep {
 | 
			
		||||
			pinctrl-single,pins = <
 | 
			
		||||
				/* MDIO reset value */
 | 
			
		||||
				AM4372_IOPAD(0x948, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
				AM4372_IOPAD(0x94c, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
			>;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		i2c0_pins: pinmux_i2c0_pins {
 | 
			
		||||
			pinctrl-single,pins = <
 | 
			
		||||
				AM4372_IOPAD(0x988, PIN_INPUT_PULLUP | SLEWCTRL_FAST | MUX_MODE0)	/* i2c0_sda.i2c0_sda */
 | 
			
		||||
				AM4372_IOPAD(0x98c, PIN_INPUT_PULLUP | SLEWCTRL_FAST | MUX_MODE0)	/* i2c0_scl.i2c0_scl */
 | 
			
		||||
			>;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		nand_flash_x8: nand_flash_x8 {
 | 
			
		||||
			pinctrl-single,pins = <
 | 
			
		||||
				AM4372_IOPAD(0x840, PIN_OUTPUT_PULLDOWN | MUX_MODE7)	/* gpmc_a0.SELQSPIorNAND/GPIO */
 | 
			
		||||
				AM4372_IOPAD(0x800, PIN_INPUT_PULLDOWN | MUX_MODE0)	/* gpmc_ad0.gpmc_ad0 */
 | 
			
		||||
				AM4372_IOPAD(0x804, PIN_INPUT_PULLDOWN | MUX_MODE0)	/* gpmc_ad1.gpmc_ad1 */
 | 
			
		||||
				AM4372_IOPAD(0x808, PIN_INPUT_PULLDOWN | MUX_MODE0)	/* gpmc_ad2.gpmc_ad2 */
 | 
			
		||||
				AM4372_IOPAD(0x80c, PIN_INPUT_PULLDOWN | MUX_MODE0)	/* gpmc_ad3.gpmc_ad3 */
 | 
			
		||||
				AM4372_IOPAD(0x810, PIN_INPUT_PULLDOWN | MUX_MODE0)	/* gpmc_ad4.gpmc_ad4 */
 | 
			
		||||
				AM4372_IOPAD(0x814, PIN_INPUT_PULLDOWN | MUX_MODE0)	/* gpmc_ad5.gpmc_ad5 */
 | 
			
		||||
				AM4372_IOPAD(0x818, PIN_INPUT_PULLDOWN | MUX_MODE0)	/* gpmc_ad6.gpmc_ad6 */
 | 
			
		||||
				AM4372_IOPAD(0x81c, PIN_INPUT_PULLDOWN | MUX_MODE0)	/* gpmc_ad7.gpmc_ad7 */
 | 
			
		||||
				AM4372_IOPAD(0x870, PIN_INPUT_PULLUP | MUX_MODE0)	/* gpmc_wait0.gpmc_wait0 */
 | 
			
		||||
				AM4372_IOPAD(0x874, PIN_OUTPUT_PULLUP | MUX_MODE7)	/* gpmc_wpn.gpmc_wpn */
 | 
			
		||||
				AM4372_IOPAD(0x87c, PIN_OUTPUT | MUX_MODE0)		/* gpmc_csn0.gpmc_csn0  */
 | 
			
		||||
				AM4372_IOPAD(0x890, PIN_OUTPUT | MUX_MODE0)		/* gpmc_advn_ale.gpmc_advn_ale */
 | 
			
		||||
				AM4372_IOPAD(0x894, PIN_OUTPUT | MUX_MODE0)		/* gpmc_oen_ren.gpmc_oen_ren */
 | 
			
		||||
				AM4372_IOPAD(0x898, PIN_OUTPUT | MUX_MODE0)		/* gpmc_wen.gpmc_wen */
 | 
			
		||||
				AM4372_IOPAD(0x89c, PIN_OUTPUT | MUX_MODE0)		/* gpmc_be0n_cle.gpmc_be0n_cle */
 | 
			
		||||
			>;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		ecap0_pins: backlight_pins {
 | 
			
		||||
			pinctrl-single,pins = <
 | 
			
		||||
				AM4372_IOPAD(0x964, MUX_MODE0)         /* eCAP0_in_PWM0_out.eCAP0_in_PWM0_out MODE0 */
 | 
			
		||||
			>;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		i2c2_pins: pinmux_i2c2_pins {
 | 
			
		||||
			pinctrl-single,pins = <
 | 
			
		||||
				AM4372_IOPAD(0x9c0, PIN_INPUT_PULLUP | SLEWCTRL_FAST | MUX_MODE8)    /* i2c2_sda.i2c2_sda */
 | 
			
		||||
				AM4372_IOPAD(0x9c4, PIN_INPUT_PULLUP | SLEWCTRL_FAST | MUX_MODE8)    /* i2c2_scl.i2c2_scl */
 | 
			
		||||
			>;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		spi0_pins: pinmux_spi0_pins {
 | 
			
		||||
			pinctrl-single,pins = <
 | 
			
		||||
				AM4372_IOPAD(0x950, PIN_INPUT | MUX_MODE0)           /* spi0_clk.spi0_clk */
 | 
			
		||||
				AM4372_IOPAD(0x954, PIN_OUTPUT | MUX_MODE0)           /* spi0_d0.spi0_d0 */
 | 
			
		||||
				AM4372_IOPAD(0x958, PIN_INPUT | MUX_MODE0)           /* spi0_d1.spi0_d1 */
 | 
			
		||||
				AM4372_IOPAD(0x95c, PIN_OUTPUT | MUX_MODE0)          /* spi0_cs0.spi0_cs0 */
 | 
			
		||||
			>;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		spi1_pins: pinmux_spi1_pins {
 | 
			
		||||
			pinctrl-single,pins = <
 | 
			
		||||
				AM4372_IOPAD(0x990, PIN_INPUT | MUX_MODE3)           /* mcasp0_aclkx.spi1_clk */
 | 
			
		||||
				AM4372_IOPAD(0x994, PIN_OUTPUT | MUX_MODE3)           /* mcasp0_fsx.spi1_d0 */
 | 
			
		||||
				AM4372_IOPAD(0x998, PIN_INPUT | MUX_MODE3)           /* mcasp0_axr0.spi1_d1 */
 | 
			
		||||
				AM4372_IOPAD(0x99c, PIN_OUTPUT | MUX_MODE3)          /* mcasp0_ahclkr.spi1_cs0 */
 | 
			
		||||
			>;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		mmc1_pins: pinmux_mmc1_pins {
 | 
			
		||||
			pinctrl-single,pins = <
 | 
			
		||||
				AM4372_IOPAD(0x960, PIN_INPUT | MUX_MODE7) /* spi0_cs1.gpio0_6 */
 | 
			
		||||
			>;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		qspi1_default: qspi1_default {
 | 
			
		||||
			pinctrl-single,pins = <
 | 
			
		||||
				AM4372_IOPAD(0x87c, PIN_INPUT_PULLUP | MUX_MODE3)
 | 
			
		||||
				AM4372_IOPAD(0x888, PIN_INPUT_PULLUP | MUX_MODE2)
 | 
			
		||||
				AM4372_IOPAD(0x890, PIN_INPUT_PULLUP | MUX_MODE3)
 | 
			
		||||
				AM4372_IOPAD(0x894, PIN_INPUT_PULLUP | MUX_MODE3)
 | 
			
		||||
				AM4372_IOPAD(0x898, PIN_INPUT_PULLUP | MUX_MODE3)
 | 
			
		||||
				AM4372_IOPAD(0x89c, PIN_INPUT_PULLUP | MUX_MODE3)
 | 
			
		||||
			>;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		pixcir_ts_pins: pixcir_ts_pins {
 | 
			
		||||
			pinctrl-single,pins = <
 | 
			
		||||
				AM4372_IOPAD(0x844, PIN_INPUT_PULLUP | MUX_MODE7)	/* gpmc_a1.gpio1_17 */
 | 
			
		||||
			>;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		hdq_pins: pinmux_hdq_pins {
 | 
			
		||||
			pinctrl-single,pins = <
 | 
			
		||||
				AM4372_IOPAD(0xa34, PIN_INPUT_PULLUP | MUX_MODE1)    /* cam1_wen.hdq_gpio */
 | 
			
		||||
			>;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		dss_pins: dss_pins {
 | 
			
		||||
			pinctrl-single,pins = <
 | 
			
		||||
				AM4372_IOPAD(0x820, PIN_OUTPUT_PULLUP | MUX_MODE1) /*gpmc ad 8 -> DSS DATA 23 */
 | 
			
		||||
				AM4372_IOPAD(0x824, PIN_OUTPUT_PULLUP | MUX_MODE1)
 | 
			
		||||
				AM4372_IOPAD(0x828, PIN_OUTPUT_PULLUP | MUX_MODE1)
 | 
			
		||||
				AM4372_IOPAD(0x82c, PIN_OUTPUT_PULLUP | MUX_MODE1)
 | 
			
		||||
				AM4372_IOPAD(0x830, PIN_OUTPUT_PULLUP | MUX_MODE1)
 | 
			
		||||
				AM4372_IOPAD(0x834, PIN_OUTPUT_PULLUP | MUX_MODE1)
 | 
			
		||||
				AM4372_IOPAD(0x838, PIN_OUTPUT_PULLUP | MUX_MODE1)
 | 
			
		||||
				AM4372_IOPAD(0x83c, PIN_OUTPUT_PULLUP | MUX_MODE1) /*gpmc ad 15 -> DSS DATA 16 */
 | 
			
		||||
				AM4372_IOPAD(0x8a0, PIN_OUTPUT_PULLUP | MUX_MODE0) /* DSS DATA 0 */
 | 
			
		||||
				AM4372_IOPAD(0x8a4, PIN_OUTPUT_PULLUP | MUX_MODE0)
 | 
			
		||||
				AM4372_IOPAD(0x8a8, PIN_OUTPUT_PULLUP | MUX_MODE0)
 | 
			
		||||
				AM4372_IOPAD(0x8ac, PIN_OUTPUT_PULLUP | MUX_MODE0)
 | 
			
		||||
				AM4372_IOPAD(0x8b0, PIN_OUTPUT_PULLUP | MUX_MODE0)
 | 
			
		||||
				AM4372_IOPAD(0x8b4, PIN_OUTPUT_PULLUP | MUX_MODE0)
 | 
			
		||||
				AM4372_IOPAD(0x8B8, PIN_OUTPUT_PULLUP | MUX_MODE0)
 | 
			
		||||
				AM4372_IOPAD(0x8bc, PIN_OUTPUT_PULLUP | MUX_MODE0)
 | 
			
		||||
				AM4372_IOPAD(0x8c0, PIN_OUTPUT_PULLUP | MUX_MODE0)
 | 
			
		||||
				AM4372_IOPAD(0x8c4, PIN_OUTPUT_PULLUP | MUX_MODE0)
 | 
			
		||||
				AM4372_IOPAD(0x8c8, PIN_OUTPUT_PULLUP | MUX_MODE0)
 | 
			
		||||
				AM4372_IOPAD(0x8cc, PIN_OUTPUT_PULLUP | MUX_MODE0)
 | 
			
		||||
				AM4372_IOPAD(0x8d0, PIN_OUTPUT_PULLUP | MUX_MODE0)
 | 
			
		||||
				AM4372_IOPAD(0x8d4, PIN_OUTPUT_PULLUP | MUX_MODE0)
 | 
			
		||||
				AM4372_IOPAD(0x8d8, PIN_OUTPUT_PULLUP | MUX_MODE0)
 | 
			
		||||
				AM4372_IOPAD(0x8dc, PIN_OUTPUT_PULLUP | MUX_MODE0) /* DSS DATA 15 */
 | 
			
		||||
				AM4372_IOPAD(0x8e0, PIN_OUTPUT_PULLUP | MUX_MODE0) /* DSS VSYNC */
 | 
			
		||||
				AM4372_IOPAD(0x8e4, PIN_OUTPUT_PULLUP | MUX_MODE0) /* DSS HSYNC */
 | 
			
		||||
				AM4372_IOPAD(0x8e8, PIN_OUTPUT_PULLUP | MUX_MODE0) /* DSS PCLK */
 | 
			
		||||
				AM4372_IOPAD(0x8ec, PIN_OUTPUT_PULLUP | MUX_MODE0) /* DSS AC BIAS EN */
 | 
			
		||||
			>;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		display_mux_pins: display_mux_pins {
 | 
			
		||||
			pinctrl-single,pins = <
 | 
			
		||||
				/* GPMC CLK -> GPIO 2_1 to select LCD / HDMI */
 | 
			
		||||
				AM4372_IOPAD(0x88C, PIN_OUTPUT_PULLUP | MUX_MODE7)
 | 
			
		||||
			>;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		vpfe1_pins_default: vpfe1_pins_default {
 | 
			
		||||
			pinctrl-single,pins = <
 | 
			
		||||
				AM4372_IOPAD(0x9cc, PIN_INPUT_PULLUP | MUX_MODE0)  /* cam1_data9 mode 0 */
 | 
			
		||||
				AM4372_IOPAD(0x9d0, PIN_INPUT_PULLUP | MUX_MODE0)  /* cam1_data8 mode 0 */
 | 
			
		||||
				AM4372_IOPAD(0x9d4, PIN_INPUT_PULLUP | MUX_MODE0)  /* cam1_hd mode 0 */
 | 
			
		||||
				AM4372_IOPAD(0x9d8, PIN_INPUT_PULLUP | MUX_MODE0)  /* cam1_vd mode 0 */
 | 
			
		||||
				AM4372_IOPAD(0x9dc, PIN_INPUT_PULLUP | MUX_MODE0)  /* cam1_pclk mode 0 */
 | 
			
		||||
				AM4372_IOPAD(0x9e8, PIN_INPUT_PULLUP | MUX_MODE0)  /* cam1_data0 mode 0 */
 | 
			
		||||
				AM4372_IOPAD(0x9ec, PIN_INPUT_PULLUP | MUX_MODE0)  /* cam1_data1 mode 0 */
 | 
			
		||||
				AM4372_IOPAD(0x9f0, PIN_INPUT_PULLUP | MUX_MODE0)  /* cam1_data2 mode 0 */
 | 
			
		||||
				AM4372_IOPAD(0x9f4, PIN_INPUT_PULLUP | MUX_MODE0)  /* cam1_data3 mode 0 */
 | 
			
		||||
				AM4372_IOPAD(0x9f8, PIN_INPUT_PULLUP | MUX_MODE0)  /* cam1_data4 mode 0 */
 | 
			
		||||
				AM4372_IOPAD(0x9fc, PIN_INPUT_PULLUP | MUX_MODE0)  /* cam1_data5 mode 0 */
 | 
			
		||||
				AM4372_IOPAD(0xa00, PIN_INPUT_PULLUP | MUX_MODE0)  /* cam1_data6 mode 0 */
 | 
			
		||||
				AM4372_IOPAD(0xa04, PIN_INPUT_PULLUP | MUX_MODE0)  /* cam1_data7 mode 0 */
 | 
			
		||||
			>;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		vpfe1_pins_sleep: vpfe1_pins_sleep {
 | 
			
		||||
			pinctrl-single,pins = <
 | 
			
		||||
				AM4372_IOPAD(0x9cc, DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7)
 | 
			
		||||
				AM4372_IOPAD(0x9d0, DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7)
 | 
			
		||||
				AM4372_IOPAD(0x9d4, DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7)
 | 
			
		||||
				AM4372_IOPAD(0x9d8, DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7)
 | 
			
		||||
				AM4372_IOPAD(0x9dc, DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7)
 | 
			
		||||
				AM4372_IOPAD(0x9e8, DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7)
 | 
			
		||||
				AM4372_IOPAD(0x9ec, DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7)
 | 
			
		||||
				AM4372_IOPAD(0x9f0, DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7)
 | 
			
		||||
				AM4372_IOPAD(0x9f4, DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7)
 | 
			
		||||
				AM4372_IOPAD(0x9f8, DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7)
 | 
			
		||||
				AM4372_IOPAD(0x9fc, DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7)
 | 
			
		||||
				AM4372_IOPAD(0xa00, DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7)
 | 
			
		||||
				AM4372_IOPAD(0xa04, DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7)
 | 
			
		||||
			>;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		mcasp1_pins: mcasp1_pins {
 | 
			
		||||
			pinctrl-single,pins = <
 | 
			
		||||
				AM4372_IOPAD(0x9a0, PIN_INPUT_PULLDOWN | MUX_MODE3) /* MCASP0_ACLKR/MCASP1_ACLKX */
 | 
			
		||||
				AM4372_IOPAD(0x9a4, PIN_INPUT_PULLDOWN | MUX_MODE3) /* MCASP0_FSR/MCASP1_FSX */
 | 
			
		||||
				AM4372_IOPAD(0x9a8, PIN_OUTPUT_PULLDOWN | MUX_MODE3)/* MCASP0_AXR1/MCASP1_AXR0 */
 | 
			
		||||
				AM4372_IOPAD(0x9ac, PIN_INPUT_PULLDOWN | MUX_MODE3) /* MCASP0_AHCLKX/MCASP1_AXR1 */
 | 
			
		||||
			>;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		mcasp1_sleep_pins: mcasp1_sleep_pins {
 | 
			
		||||
			pinctrl-single,pins = <
 | 
			
		||||
				AM4372_IOPAD(0x9a0, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
				AM4372_IOPAD(0x9a4, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
				AM4372_IOPAD(0x9a8, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
				AM4372_IOPAD(0x9ac, PIN_INPUT_PULLDOWN | MUX_MODE7)
 | 
			
		||||
			>;
 | 
			
		||||
		};
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&mmc1 {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
	vmmc-supply = <&vmmcsd_fixed>;
 | 
			
		||||
	bus-width = <4>;
 | 
			
		||||
	pinctrl-names = "default";
 | 
			
		||||
	pinctrl-0 = <&mmc1_pins>;
 | 
			
		||||
	cd-gpios = <&gpio0 6 GPIO_ACTIVE_LOW>;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&mac {
 | 
			
		||||
	pinctrl-names = "default", "sleep";
 | 
			
		||||
	pinctrl-0 = <&cpsw_default>;
 | 
			
		||||
	pinctrl-1 = <&cpsw_sleep>;
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&davinci_mdio {
 | 
			
		||||
	pinctrl-names = "default", "sleep";
 | 
			
		||||
	pinctrl-0 = <&davinci_mdio_default>;
 | 
			
		||||
	pinctrl-1 = <&davinci_mdio_sleep>;
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&cpsw_emac0 {
 | 
			
		||||
	phy_id = <&davinci_mdio>, <16>;
 | 
			
		||||
	phy-mode = "rmii";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&cpsw_emac1 {
 | 
			
		||||
	phy_id = <&davinci_mdio>, <1>;
 | 
			
		||||
	phy-mode = "rmii";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&phy_sel {
 | 
			
		||||
	rmii-clock-ext;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&i2c0 {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
	pinctrl-names = "default";
 | 
			
		||||
	pinctrl-0 = <&i2c0_pins>;
 | 
			
		||||
	clock-frequency = <400000>;
 | 
			
		||||
 | 
			
		||||
	tps65218: tps65218@24 {
 | 
			
		||||
		reg = <0x24>;
 | 
			
		||||
		compatible = "ti,tps65218";
 | 
			
		||||
		interrupts = <GIC_SPI 7 IRQ_TYPE_NONE>; /* NMIn */
 | 
			
		||||
		interrupt-controller;
 | 
			
		||||
		#interrupt-cells = <2>;
 | 
			
		||||
 | 
			
		||||
		dcdc1: regulator-dcdc1 {
 | 
			
		||||
			compatible = "ti,tps65218-dcdc1";
 | 
			
		||||
			regulator-name = "vdd_core";
 | 
			
		||||
			regulator-min-microvolt = <912000>;
 | 
			
		||||
			regulator-max-microvolt = <1144000>;
 | 
			
		||||
			regulator-boot-on;
 | 
			
		||||
			regulator-always-on;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		dcdc2: regulator-dcdc2 {
 | 
			
		||||
			compatible = "ti,tps65218-dcdc2";
 | 
			
		||||
			regulator-name = "vdd_mpu";
 | 
			
		||||
			regulator-min-microvolt = <912000>;
 | 
			
		||||
			regulator-max-microvolt = <1378000>;
 | 
			
		||||
			regulator-boot-on;
 | 
			
		||||
			regulator-always-on;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		dcdc3: regulator-dcdc3 {
 | 
			
		||||
			compatible = "ti,tps65218-dcdc3";
 | 
			
		||||
			regulator-name = "vdcdc3";
 | 
			
		||||
			regulator-min-microvolt = <1500000>;
 | 
			
		||||
			regulator-max-microvolt = <1500000>;
 | 
			
		||||
			regulator-boot-on;
 | 
			
		||||
			regulator-always-on;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		dcdc4: regulator-dcdc4 {
 | 
			
		||||
			compatible = "ti,tps65218-dcdc4";
 | 
			
		||||
			regulator-name = "vdcdc4";
 | 
			
		||||
			regulator-min-microvolt = <3300000>;
 | 
			
		||||
			regulator-max-microvolt = <3300000>;
 | 
			
		||||
			regulator-boot-on;
 | 
			
		||||
			regulator-always-on;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		dcdc5: regulator-dcdc5 {
 | 
			
		||||
			compatible = "ti,tps65218-dcdc5";
 | 
			
		||||
			regulator-name = "v1_0bat";
 | 
			
		||||
			regulator-min-microvolt = <1000000>;
 | 
			
		||||
			regulator-max-microvolt = <1000000>;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		dcdc6: regulator-dcdc6 {
 | 
			
		||||
			compatible = "ti,tps65218-dcdc6";
 | 
			
		||||
			regulator-name = "v1_8bat";
 | 
			
		||||
			regulator-min-microvolt = <1800000>;
 | 
			
		||||
			regulator-max-microvolt = <1800000>;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		ldo1: regulator-ldo1 {
 | 
			
		||||
			compatible = "ti,tps65218-ldo1";
 | 
			
		||||
			regulator-min-microvolt = <1800000>;
 | 
			
		||||
			regulator-max-microvolt = <1800000>;
 | 
			
		||||
			regulator-boot-on;
 | 
			
		||||
			regulator-always-on;
 | 
			
		||||
		};
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	at24@50 {
 | 
			
		||||
		compatible = "at24,24c256";
 | 
			
		||||
		pagesize = <64>;
 | 
			
		||||
		reg = <0x50>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	pixcir_ts@5c {
 | 
			
		||||
		compatible = "pixcir,pixcir_tangoc";
 | 
			
		||||
		pinctrl-names = "default";
 | 
			
		||||
		pinctrl-0 = <&pixcir_ts_pins>;
 | 
			
		||||
		reg = <0x5c>;
 | 
			
		||||
		interrupt-parent = <&gpio1>;
 | 
			
		||||
		interrupts = <17 IRQ_TYPE_EDGE_FALLING>;
 | 
			
		||||
 | 
			
		||||
		attb-gpio = <&gpio1 17 GPIO_ACTIVE_HIGH>;
 | 
			
		||||
 | 
			
		||||
		touchscreen-size-x = <1024>;
 | 
			
		||||
		touchscreen-size-y = <600>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	tlv320aic3111: tlv320aic3111@18 {
 | 
			
		||||
		#sound-dai-cells = <0>;
 | 
			
		||||
		compatible = "ti,tlv320aic3111";
 | 
			
		||||
		reg = <0x18>;
 | 
			
		||||
		status = "okay";
 | 
			
		||||
 | 
			
		||||
		ai31xx-micbias-vg = <MICBIAS_2_0V>;
 | 
			
		||||
 | 
			
		||||
		/* Regulators */
 | 
			
		||||
		HPVDD-supply = <&dcdc4>; /* v3_3AUD -> V3_3D -> DCDC4 */
 | 
			
		||||
		SPRVDD-supply = <&vbat>; /* vbat */
 | 
			
		||||
		SPLVDD-supply = <&vbat>; /* vbat */
 | 
			
		||||
		AVDD-supply = <&dcdc4>; /* v3_3AUD -> V3_3D -> DCDC4 */
 | 
			
		||||
		IOVDD-supply = <&dcdc4>; /* V3_3D -> DCDC4 */
 | 
			
		||||
		DVDD-supply = <&ldo1>; /* V1_8AUD -> V1_8D -> LDO1 */
 | 
			
		||||
	};
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&i2c2 {
 | 
			
		||||
	pinctrl-names = "default";
 | 
			
		||||
	pinctrl-0 = <&i2c2_pins>;
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&gpio0 {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&gpio1 {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&gpio2 {
 | 
			
		||||
	pinctrl-names = "default";
 | 
			
		||||
	pinctrl-0 = <&display_mux_pins>;
 | 
			
		||||
	status = "okay";
 | 
			
		||||
 | 
			
		||||
	p1 {
 | 
			
		||||
		/*
 | 
			
		||||
		 * SelLCDorHDMI selects between display and audio paths:
 | 
			
		||||
		 * Low: HDMI display with audio via HDMI
 | 
			
		||||
		 * High: LCD display with analog audio via aic3111 codec
 | 
			
		||||
		 */
 | 
			
		||||
		gpio-hog;
 | 
			
		||||
		gpios = <1 GPIO_ACTIVE_HIGH>;
 | 
			
		||||
		output-high;
 | 
			
		||||
		line-name = "SelLCDorHDMI";
 | 
			
		||||
	};
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&gpio3 {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&elm {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&gpmc {
 | 
			
		||||
	status = "okay";	/* Disable QSPI when enabling GPMC (NAND) */
 | 
			
		||||
	pinctrl-names = "default";
 | 
			
		||||
	pinctrl-0 = <&nand_flash_x8>;
 | 
			
		||||
	ranges = <0 0 0x08000000 0x01000000>;	/* CS0 space. Min partition = 16MB */
 | 
			
		||||
	nand@0,0 {
 | 
			
		||||
		compatible = "ti,omap2-nand";
 | 
			
		||||
		reg = <0 0 4>; /* CS0, offset 0, IO size 4 */
 | 
			
		||||
		interrupt-parent = <&gpmc>;
 | 
			
		||||
		interrupts = <0 IRQ_TYPE_NONE>, /* fifoevent */
 | 
			
		||||
			     <1 IRQ_TYPE_NONE>;	/* termcount */
 | 
			
		||||
		ti,nand-ecc-opt = "bch16";
 | 
			
		||||
		ti,elm-id = <&elm>;
 | 
			
		||||
		nand-bus-width = <8>;
 | 
			
		||||
		gpmc,device-width = <1>;
 | 
			
		||||
		gpmc,sync-clk-ps = <0>;
 | 
			
		||||
		gpmc,cs-on-ns = <0>;
 | 
			
		||||
		gpmc,cs-rd-off-ns = <40>; /* tCEA + tCHZ + 1 */
 | 
			
		||||
		gpmc,cs-wr-off-ns = <40>;
 | 
			
		||||
		gpmc,adv-on-ns = <0>;  /* cs-on-ns */
 | 
			
		||||
		gpmc,adv-rd-off-ns = <25>; /* min( tALH + tALS + 1) */
 | 
			
		||||
		gpmc,adv-wr-off-ns = <25>; /* min( tALH + tALS + 1) */
 | 
			
		||||
		gpmc,we-on-ns = <0>;   /* cs-on-ns */
 | 
			
		||||
		gpmc,we-off-ns = <20>; /* we-on-time + tWP + 2 */
 | 
			
		||||
		gpmc,oe-on-ns = <3>;  /* cs-on-ns + tRR + 2 */
 | 
			
		||||
		gpmc,oe-off-ns = <30>; /* oe-on-ns + tRP + 2 */
 | 
			
		||||
		gpmc,access-ns = <30>; /* tCEA + 4*/
 | 
			
		||||
		gpmc,rd-cycle-ns = <40>;
 | 
			
		||||
		gpmc,wr-cycle-ns = <40>;
 | 
			
		||||
		gpmc,bus-turnaround-ns = <0>;
 | 
			
		||||
		gpmc,cycle2cycle-delay-ns = <0>;
 | 
			
		||||
		gpmc,clk-activation-ns = <0>;
 | 
			
		||||
		gpmc,wr-access-ns = <40>;
 | 
			
		||||
		gpmc,wr-data-mux-bus-ns = <0>;
 | 
			
		||||
		/* MTD partition table */
 | 
			
		||||
		/* All SPL-* partitions are sized to minimal length
 | 
			
		||||
		 * which can be independently programmable. For
 | 
			
		||||
		 * NAND flash this is equal to size of erase-block */
 | 
			
		||||
		#address-cells = <1>;
 | 
			
		||||
		#size-cells = <1>;
 | 
			
		||||
		partition@0 {
 | 
			
		||||
			label = "NAND.SPL";
 | 
			
		||||
			reg = <0x00000000 0x00040000>;
 | 
			
		||||
		};
 | 
			
		||||
		partition@1 {
 | 
			
		||||
			label = "NAND.SPL.backup1";
 | 
			
		||||
			reg = <0x00040000 0x00040000>;
 | 
			
		||||
		};
 | 
			
		||||
		partition@2 {
 | 
			
		||||
			label = "NAND.SPL.backup2";
 | 
			
		||||
			reg = <0x00080000 0x00040000>;
 | 
			
		||||
		};
 | 
			
		||||
		partition@3 {
 | 
			
		||||
			label = "NAND.SPL.backup3";
 | 
			
		||||
			reg = <0x000C0000 0x00040000>;
 | 
			
		||||
		};
 | 
			
		||||
		partition@4 {
 | 
			
		||||
			label = "NAND.u-boot-spl-os";
 | 
			
		||||
			reg = <0x00100000 0x00080000>;
 | 
			
		||||
		};
 | 
			
		||||
		partition@5 {
 | 
			
		||||
			label = "NAND.u-boot";
 | 
			
		||||
			reg = <0x00180000 0x00100000>;
 | 
			
		||||
		};
 | 
			
		||||
		partition@6 {
 | 
			
		||||
			label = "NAND.u-boot-env";
 | 
			
		||||
			reg = <0x00280000 0x00040000>;
 | 
			
		||||
		};
 | 
			
		||||
		partition@7 {
 | 
			
		||||
			label = "NAND.u-boot-env.backup1";
 | 
			
		||||
			reg = <0x002C0000 0x00040000>;
 | 
			
		||||
		};
 | 
			
		||||
		partition@8 {
 | 
			
		||||
			label = "NAND.kernel";
 | 
			
		||||
			reg = <0x00300000 0x00700000>;
 | 
			
		||||
		};
 | 
			
		||||
		partition@9 {
 | 
			
		||||
			label = "NAND.file-system";
 | 
			
		||||
			reg = <0x00a00000 0x1f600000>;
 | 
			
		||||
		};
 | 
			
		||||
	};
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&epwmss0 {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&tscadc {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
 | 
			
		||||
	adc {
 | 
			
		||||
		ti,adc-channels = <0 1 2 3 4 5 6 7>;
 | 
			
		||||
	};
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&ecap0 {
 | 
			
		||||
		status = "okay";
 | 
			
		||||
		pinctrl-names = "default";
 | 
			
		||||
		pinctrl-0 = <&ecap0_pins>;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&spi0 {
 | 
			
		||||
	pinctrl-names = "default";
 | 
			
		||||
	pinctrl-0 = <&spi0_pins>;
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&spi1 {
 | 
			
		||||
	pinctrl-names = "default";
 | 
			
		||||
	pinctrl-0 = <&spi1_pins>;
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&usb2_phy1 {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&usb1 {
 | 
			
		||||
	dr_mode = "peripheral";
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&usb2_phy2 {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&usb2 {
 | 
			
		||||
	dr_mode = "host";
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&qspi {
 | 
			
		||||
	status = "disabled";	/* Disable GPMC (NAND) when enabling QSPI */
 | 
			
		||||
	pinctrl-names = "default";
 | 
			
		||||
	pinctrl-0 = <&qspi1_default>;
 | 
			
		||||
 | 
			
		||||
	spi-max-frequency = <48000000>;
 | 
			
		||||
	m25p80@0 {
 | 
			
		||||
		compatible = "mx66l51235l";
 | 
			
		||||
		spi-max-frequency = <48000000>;
 | 
			
		||||
		reg = <0>;
 | 
			
		||||
		spi-cpol;
 | 
			
		||||
		spi-cpha;
 | 
			
		||||
		spi-tx-bus-width = <1>;
 | 
			
		||||
		spi-rx-bus-width = <4>;
 | 
			
		||||
		#address-cells = <1>;
 | 
			
		||||
		#size-cells = <1>;
 | 
			
		||||
 | 
			
		||||
		/* MTD partition table.
 | 
			
		||||
		 * The ROM checks the first 512KiB
 | 
			
		||||
		 * for a valid file to boot(XIP).
 | 
			
		||||
		 */
 | 
			
		||||
		partition@0 {
 | 
			
		||||
			label = "QSPI.U_BOOT";
 | 
			
		||||
			reg = <0x00000000 0x000080000>;
 | 
			
		||||
		};
 | 
			
		||||
		partition@1 {
 | 
			
		||||
			label = "QSPI.U_BOOT.backup";
 | 
			
		||||
			reg = <0x00080000 0x00080000>;
 | 
			
		||||
		};
 | 
			
		||||
		partition@2 {
 | 
			
		||||
			label = "QSPI.U-BOOT-SPL_OS";
 | 
			
		||||
			reg = <0x00100000 0x00010000>;
 | 
			
		||||
		};
 | 
			
		||||
		partition@3 {
 | 
			
		||||
			label = "QSPI.U_BOOT_ENV";
 | 
			
		||||
			reg = <0x00110000 0x00010000>;
 | 
			
		||||
		};
 | 
			
		||||
		partition@4 {
 | 
			
		||||
			label = "QSPI.U-BOOT-ENV.backup";
 | 
			
		||||
			reg = <0x00120000 0x00010000>;
 | 
			
		||||
		};
 | 
			
		||||
		partition@5 {
 | 
			
		||||
			label = "QSPI.KERNEL";
 | 
			
		||||
			reg = <0x00130000 0x0800000>;
 | 
			
		||||
		};
 | 
			
		||||
		partition@6 {
 | 
			
		||||
			label = "QSPI.FILESYSTEM";
 | 
			
		||||
			reg = <0x00930000 0x36D0000>;
 | 
			
		||||
		};
 | 
			
		||||
	};
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&hdq {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
	pinctrl-names = "default";
 | 
			
		||||
	pinctrl-0 = <&hdq_pins>;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&dss {
 | 
			
		||||
	status = "ok";
 | 
			
		||||
 | 
			
		||||
	pinctrl-names = "default";
 | 
			
		||||
	pinctrl-0 = <&dss_pins>;
 | 
			
		||||
 | 
			
		||||
	port {
 | 
			
		||||
		dpi_out: endpoint@0 {
 | 
			
		||||
			remote-endpoint = <&lcd_in>;
 | 
			
		||||
			data-lines = <24>;
 | 
			
		||||
		};
 | 
			
		||||
	};
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&vpfe1 {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
	pinctrl-names = "default", "sleep";
 | 
			
		||||
	pinctrl-0 = <&vpfe1_pins_default>;
 | 
			
		||||
	pinctrl-1 = <&vpfe1_pins_sleep>;
 | 
			
		||||
 | 
			
		||||
	port {
 | 
			
		||||
		vpfe1_ep: endpoint {
 | 
			
		||||
			/* remote-endpoint = <&sensor>; add once we have it */
 | 
			
		||||
			ti,am437x-vpfe-interface = <0>;
 | 
			
		||||
			bus-width = <8>;
 | 
			
		||||
			hsync-active = <0>;
 | 
			
		||||
			vsync-active = <0>;
 | 
			
		||||
		};
 | 
			
		||||
	};
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&mcasp1 {
 | 
			
		||||
	#sound-dai-cells = <0>;
 | 
			
		||||
	pinctrl-names = "default", "sleep";
 | 
			
		||||
	pinctrl-0 = <&mcasp1_pins>;
 | 
			
		||||
	pinctrl-1 = <&mcasp1_sleep_pins>;
 | 
			
		||||
 | 
			
		||||
	status = "okay";
 | 
			
		||||
 | 
			
		||||
	op-mode = <0>;          /* MCASP_IIS_MODE */
 | 
			
		||||
	tdm-slots = <2>;
 | 
			
		||||
	/* 4 serializer */
 | 
			
		||||
	serial-dir = <  /* 0: INACTIVE, 1: TX, 2: RX */
 | 
			
		||||
		1 2 0 0
 | 
			
		||||
	>;
 | 
			
		||||
	tx-num-evt = <32>;
 | 
			
		||||
	rx-num-evt = <32>;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&synctimer_32kclk {
 | 
			
		||||
	assigned-clocks = <&mux_synctimer32k_ck>;
 | 
			
		||||
	assigned-clock-parents = <&clkdiv32k_ick>;
 | 
			
		||||
};
 | 
			
		||||
| 
						 | 
				
			
			@ -1411,7 +1411,7 @@
 | 
			
		|||
			ti,irqs-safe-map = <0>;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		mac: ethernet@4a100000 {
 | 
			
		||||
		mac: ethernet@48484000 {
 | 
			
		||||
			compatible = "ti,cpsw";
 | 
			
		||||
			ti,hwmods = "gmac";
 | 
			
		||||
			clocks = <&dpll_gmac_ck>, <&gmac_gmii_ref_clk_div>;
 | 
			
		||||
| 
						 | 
				
			
			@ -1426,6 +1426,7 @@
 | 
			
		|||
			active_slave = <0>;
 | 
			
		||||
			cpts_clock_mult = <0x80000000>;
 | 
			
		||||
			cpts_clock_shift = <29>;
 | 
			
		||||
			syscon = <&scm_conf>;
 | 
			
		||||
			reg = <0x48484000 0x1000
 | 
			
		||||
			       0x48485200 0x2E00>;
 | 
			
		||||
			#address-cells = <1>;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -163,13 +163,14 @@
 | 
			
		|||
	};
 | 
			
		||||
 | 
			
		||||
	fimd@14400000 {
 | 
			
		||||
		u-boot,dm-pre-reloc;
 | 
			
		||||
		compatible = "samsung,exynos-fimd";
 | 
			
		||||
		reg = <0x14400000 0x10000>;
 | 
			
		||||
		#address-cells = <1>;
 | 
			
		||||
		#size-cells = <1>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	dp@145b0000 {
 | 
			
		||||
	dp: dp@145b0000 {
 | 
			
		||||
		compatible = "samsung,exynos5-dp";
 | 
			
		||||
		reg = <0x145b0000 0x1000>;
 | 
			
		||||
		#address-cells = <1>;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -198,6 +198,20 @@
 | 
			
		|||
			reset-gpios = <&gpx1 5 GPIO_ACTIVE_LOW>;
 | 
			
		||||
			hotplug-gpios = <&gpx0 7 GPIO_ACTIVE_HIGH>;
 | 
			
		||||
			edid-emulation = <5>;
 | 
			
		||||
 | 
			
		||||
			ports {
 | 
			
		||||
				port@0 {
 | 
			
		||||
					bridge_out: endpoint {
 | 
			
		||||
						remote-endpoint = <&panel_in>;
 | 
			
		||||
					};
 | 
			
		||||
				};
 | 
			
		||||
 | 
			
		||||
				port@1 {
 | 
			
		||||
					bridge_in: endpoint {
 | 
			
		||||
						remote-endpoint = <&dp_out>;
 | 
			
		||||
					};
 | 
			
		||||
				};
 | 
			
		||||
			};
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		soundcodec@22 {
 | 
			
		||||
| 
						 | 
				
			
			@ -223,6 +237,27 @@
 | 
			
		|||
		};
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	backlight: backlight {
 | 
			
		||||
		compatible = "pwm-backlight";
 | 
			
		||||
		pwms = <&pwm 0 1000000 0>;
 | 
			
		||||
		brightness-levels = <0 100 500 1000 1500 2000 2500 2800>;
 | 
			
		||||
		default-brightness-level = <7>;
 | 
			
		||||
		enable-gpios = <&gpx3 0 GPIO_ACTIVE_HIGH>;
 | 
			
		||||
		power-supply = <&fet1>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	panel: panel {
 | 
			
		||||
		compatible = "auo,b116xw03";
 | 
			
		||||
		power-supply = <&fet6>;
 | 
			
		||||
		backlight = <&backlight>;
 | 
			
		||||
 | 
			
		||||
		port {
 | 
			
		||||
			panel_in: endpoint {
 | 
			
		||||
				remote-endpoint = <&bridge_out>;
 | 
			
		||||
			};
 | 
			
		||||
		};
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	spi@131b0000 {
 | 
			
		||||
		spi-max-frequency = <1000000>;
 | 
			
		||||
		spi-deactivate-delay = <100>;
 | 
			
		||||
| 
						 | 
				
			
			@ -337,6 +372,15 @@
 | 
			
		|||
		samsung,dynamic-range = <0>;
 | 
			
		||||
		samsung,ycbcr-coeff = <0>;
 | 
			
		||||
		samsung,color-depth = <1>;
 | 
			
		||||
		samsung,hpd-gpio = <&gpx0 7 GPIO_ACTIVE_HIGH>;
 | 
			
		||||
 | 
			
		||||
		ports {
 | 
			
		||||
			port@0 {
 | 
			
		||||
				dp_out: endpoint {
 | 
			
		||||
					remote-endpoint = <&bridge_in>;
 | 
			
		||||
				};
 | 
			
		||||
			};
 | 
			
		||||
		};
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -158,6 +158,27 @@
 | 
			
		|||
		samsung,ycbcr-coeff = <0>;
 | 
			
		||||
		samsung,color-depth = <1>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	backlight: backlight {
 | 
			
		||||
		compatible = "pwm-backlight";
 | 
			
		||||
		pwms = <&pwm 0 1000000 0>;
 | 
			
		||||
		brightness-levels = <0 100 500 1000 1500 2000 2500 2800>;
 | 
			
		||||
		default-brightness-level = <1>;
 | 
			
		||||
		enable-gpios = <&gpx3 0 GPIO_ACTIVE_HIGH>;
 | 
			
		||||
		power-supply = <&fet1>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	panel: panel {
 | 
			
		||||
		compatible = "auo,b116xw03";
 | 
			
		||||
		power-supply = <&fet6>;
 | 
			
		||||
		backlight = <&backlight>;
 | 
			
		||||
 | 
			
		||||
		port {
 | 
			
		||||
			panel_in: endpoint {
 | 
			
		||||
				remote-endpoint = <&bridge_out>;
 | 
			
		||||
			};
 | 
			
		||||
		};
 | 
			
		||||
	};
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&i2c_0 {
 | 
			
		||||
| 
						 | 
				
			
			@ -385,6 +406,25 @@
 | 
			
		|||
	};
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&dp {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
	samsung,color-space = <0>;
 | 
			
		||||
	samsung,dynamic-range = <0>;
 | 
			
		||||
	samsung,ycbcr-coeff = <0>;
 | 
			
		||||
	samsung,color-depth = <1>;
 | 
			
		||||
	samsung,link-rate = <0x0a>;
 | 
			
		||||
	samsung,lane-count = <1>;
 | 
			
		||||
	samsung,hpd-gpio = <&gpc3 0 GPIO_ACTIVE_HIGH>;
 | 
			
		||||
 | 
			
		||||
	ports {
 | 
			
		||||
		port@0 {
 | 
			
		||||
			dp_out: endpoint {
 | 
			
		||||
				remote-endpoint = <&bridge_in>;
 | 
			
		||||
			};
 | 
			
		||||
		};
 | 
			
		||||
	};
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&i2c_1 {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
	samsung,i2c-sda-delay = <100>;
 | 
			
		||||
| 
						 | 
				
			
			@ -585,6 +625,19 @@
 | 
			
		|||
			0x04 0x59 0x60 /* MPU Clock source: LC => RCO */
 | 
			
		||||
			0x04 0x54 0x14 /* LC -> RCO */
 | 
			
		||||
			0x02 0xa1 0x91>; /* HPD high */
 | 
			
		||||
		ports {
 | 
			
		||||
			port@0 {
 | 
			
		||||
				bridge_out: endpoint {
 | 
			
		||||
					remote-endpoint = <&panel_in>;
 | 
			
		||||
				};
 | 
			
		||||
			};
 | 
			
		||||
 | 
			
		||||
			port@1 {
 | 
			
		||||
				bridge_in: endpoint {
 | 
			
		||||
					remote-endpoint = <&dp_out>;
 | 
			
		||||
				};
 | 
			
		||||
			};
 | 
			
		||||
		};
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	soundcodec@20 {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -116,4 +116,11 @@
 | 
			
		|||
		};
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	pwm: pwm@12dd0000 {
 | 
			
		||||
		compatible = "samsung,exynos4210-pwm";
 | 
			
		||||
		reg = <0x12dd0000 0x100>;
 | 
			
		||||
		samsung,pwm-outputs = <0>, <1>, <2>, <3>;
 | 
			
		||||
		#pwm-cells = <3>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -9,6 +9,8 @@
 | 
			
		|||
 | 
			
		||||
/dts-v1/;
 | 
			
		||||
#include "exynos54xx.dtsi"
 | 
			
		||||
#include <dt-bindings/clock/maxim,max77802.h>
 | 
			
		||||
#include <dt-bindings/regulator/maxim,max77802.h>
 | 
			
		||||
 | 
			
		||||
/ {
 | 
			
		||||
	model = "Samsung/Google Peach Pit board based on Exynos5420";
 | 
			
		||||
| 
						 | 
				
			
			@ -29,6 +31,14 @@
 | 
			
		|||
		i2c104 = &i2c_tunnel;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	backlight: backlight {
 | 
			
		||||
		compatible = "pwm-backlight";
 | 
			
		||||
		pwms = <&pwm 0 1000000 0>;
 | 
			
		||||
		brightness-levels = <0 100 500 1000 1500 2000 2500 2800>;
 | 
			
		||||
		default-brightness-level = <7>;
 | 
			
		||||
		power-supply = <&tps65090_fet1>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	dmc {
 | 
			
		||||
		mem-manuf = "samsung";
 | 
			
		||||
		mem-type = "ddr3";
 | 
			
		||||
| 
						 | 
				
			
			@ -188,6 +198,20 @@
 | 
			
		|||
				0x04 0x59 0x60
 | 
			
		||||
				0x04 0x54 0x14  /* LC -> RCO */
 | 
			
		||||
				0x02 0xa1 0x91>;  /* HPD high */
 | 
			
		||||
 | 
			
		||||
			ports {
 | 
			
		||||
				port@0 {
 | 
			
		||||
					bridge_out: endpoint {
 | 
			
		||||
						remote-endpoint = <&panel_in>;
 | 
			
		||||
					};
 | 
			
		||||
				};
 | 
			
		||||
 | 
			
		||||
				port@1 {
 | 
			
		||||
					bridge_in: endpoint {
 | 
			
		||||
						remote-endpoint = <&dp_out>;
 | 
			
		||||
					};
 | 
			
		||||
				};
 | 
			
		||||
			};
 | 
			
		||||
	        };
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -203,6 +227,18 @@
 | 
			
		|||
		};
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	panel: panel {
 | 
			
		||||
		compatible = "auo,b116xw03";
 | 
			
		||||
		power-supply = <&tps65090_fet6>;
 | 
			
		||||
		backlight = <&backlight>;
 | 
			
		||||
 | 
			
		||||
		port {
 | 
			
		||||
			panel_in: endpoint {
 | 
			
		||||
				remote-endpoint = <&bridge_out>;
 | 
			
		||||
			};
 | 
			
		||||
		};
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	spi@12d30000 { /* spi1 */
 | 
			
		||||
		spi-max-frequency = <50000000>;
 | 
			
		||||
		firmware_storage_spi: flash@0 {
 | 
			
		||||
| 
						 | 
				
			
			@ -254,6 +290,25 @@
 | 
			
		|||
	};
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&dp {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
	samsung,color-space = <0>;
 | 
			
		||||
	samsung,dynamic-range = <0>;
 | 
			
		||||
	samsung,ycbcr-coeff = <0>;
 | 
			
		||||
	samsung,color-depth = <1>;
 | 
			
		||||
	samsung,link-rate = <0x06>;
 | 
			
		||||
	samsung,lane-count = <2>;
 | 
			
		||||
	samsung,hpd-gpio = <&gpx2 6 GPIO_ACTIVE_HIGH>;
 | 
			
		||||
 | 
			
		||||
	ports {
 | 
			
		||||
		port@0 {
 | 
			
		||||
			dp_out: endpoint {
 | 
			
		||||
				remote-endpoint = <&bridge_in>;
 | 
			
		||||
			};
 | 
			
		||||
		};
 | 
			
		||||
	};
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&spi_2 {
 | 
			
		||||
	spi-max-frequency = <3125000>;
 | 
			
		||||
	spi-deactivate-delay = <200>;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -49,7 +49,7 @@
 | 
			
		|||
		status = "disabled";
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	i2c@12CA0000 {
 | 
			
		||||
	hsi2c_4: i2c@12CA0000 {
 | 
			
		||||
		#address-cells = <1>;
 | 
			
		||||
		#size-cells = <0>;
 | 
			
		||||
		compatible = "samsung,exynos5-hsi2c";
 | 
			
		||||
| 
						 | 
				
			
			@ -178,7 +178,7 @@
 | 
			
		|||
		samsung,pwm-out-gpio = <&gpb2 0 GPIO_ACTIVE_HIGH>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	dp@145b0000 {
 | 
			
		||||
	dp: dp@145b0000 {
 | 
			
		||||
		samsung,lt-status = <0>;
 | 
			
		||||
 | 
			
		||||
		samsung,master-mode = <0>;
 | 
			
		||||
| 
						 | 
				
			
			@ -197,6 +197,13 @@
 | 
			
		|||
		mem-type = "ddr3";
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	pwm: pwm@12dd0000 {
 | 
			
		||||
		compatible = "samsung,exynos4210-pwm";
 | 
			
		||||
		reg = <0x12dd0000 0x100>;
 | 
			
		||||
		samsung,pwm-outputs = <0>, <1>, <2>, <3>;
 | 
			
		||||
		#pwm-cells = <3>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	xhci1: xhci@12400000 {
 | 
			
		||||
		compatible = "samsung,exynos5250-xhci";
 | 
			
		||||
		reg = <0x12400000 0x10000>;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -30,6 +30,27 @@
 | 
			
		|||
		i2c104 = &i2c_tunnel;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	backlight: backlight {
 | 
			
		||||
		compatible = "pwm-backlight";
 | 
			
		||||
		pwms = <&pwm 0 1000000 0>;
 | 
			
		||||
		brightness-levels = <0 100 500 1000 1500 2000 2500 2800>;
 | 
			
		||||
		default-brightness-level = <7>;
 | 
			
		||||
		enable-gpios = <&gpx2 2 GPIO_ACTIVE_HIGH>;
 | 
			
		||||
		power-supply = <&tps65090_fet1>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	panel: panel {
 | 
			
		||||
		compatible = "auo,b133htn01";
 | 
			
		||||
		power-supply = <&tps65090_fet6>;
 | 
			
		||||
		backlight = <&backlight>;
 | 
			
		||||
 | 
			
		||||
		port {
 | 
			
		||||
			panel_in: endpoint {
 | 
			
		||||
				remote-endpoint = <&dp_out>;
 | 
			
		||||
			};
 | 
			
		||||
		};
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	dmc {
 | 
			
		||||
		mem-manuf = "samsung";
 | 
			
		||||
		mem-type = "ddr3";
 | 
			
		||||
| 
						 | 
				
			
			@ -132,6 +153,25 @@
 | 
			
		|||
	};
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&dp {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
	samsung,color-space = <0>;
 | 
			
		||||
	samsung,dynamic-range = <0>;
 | 
			
		||||
	samsung,ycbcr-coeff = <0>;
 | 
			
		||||
	samsung,color-depth = <1>;
 | 
			
		||||
	samsung,link-rate = <0x0a>;
 | 
			
		||||
	samsung,lane-count = <2>;
 | 
			
		||||
	samsung,hpd-gpio = <&gpx2 6 GPIO_ACTIVE_HIGH>;
 | 
			
		||||
 | 
			
		||||
	ports {
 | 
			
		||||
		port {
 | 
			
		||||
			dp_out: endpoint {
 | 
			
		||||
				remote-endpoint = <&panel_in>;
 | 
			
		||||
			};
 | 
			
		||||
		};
 | 
			
		||||
	};
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&spi_2 {
 | 
			
		||||
	spi-max-frequency = <3125000>;
 | 
			
		||||
	spi-deactivate-delay = <200>;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,24 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Samsung Espresso7420 board device tree source
 | 
			
		||||
 *
 | 
			
		||||
 * Copyright (c) 2016 Samsung Electronics Co., Ltd.
 | 
			
		||||
 *		http://www.samsung.com
 | 
			
		||||
 *
 | 
			
		||||
 * SPDX-License-Identifier:	GPL-2.0+
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include "exynos7420.dtsi"
 | 
			
		||||
/ {
 | 
			
		||||
	model = "Samsung Espresso7420 board based on Exynos7420";
 | 
			
		||||
	compatible = "samsung,espresso7420", "samsung,exynos7420";
 | 
			
		||||
 | 
			
		||||
	aliases {
 | 
			
		||||
		serial2 = "/serial@14C30000";
 | 
			
		||||
		console = "/serial@14C30000";
 | 
			
		||||
		pinctrl0 = "/pinctrl@13470000";
 | 
			
		||||
	};
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&fin_pll {
 | 
			
		||||
	clock-frequency = <24000000>;
 | 
			
		||||
};
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,83 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Samsung Exynos7420 SoC device tree source
 | 
			
		||||
 *
 | 
			
		||||
 * Copyright (c) 2016 Samsung Electronics Co., Ltd.
 | 
			
		||||
 *		http://www.samsung.com
 | 
			
		||||
 *
 | 
			
		||||
 * SPDX-License-Identifier:	GPL-2.0+
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/dts-v1/;
 | 
			
		||||
#include "skeleton.dtsi"
 | 
			
		||||
#include <dt-bindings/clock/exynos7420-clk.h>
 | 
			
		||||
/ {
 | 
			
		||||
	compatible = "samsung,exynos7420";
 | 
			
		||||
 | 
			
		||||
	fin_pll: xxti {
 | 
			
		||||
		compatible = "fixed-clock";
 | 
			
		||||
		clock-output-names = "fin_pll";
 | 
			
		||||
		u-boot,dm-pre-reloc;
 | 
			
		||||
		#clock-cells = <0>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	clock_topc: clock-controller@10570000 {
 | 
			
		||||
		compatible = "samsung,exynos7-clock-topc";
 | 
			
		||||
		reg = <0x10570000 0x10000>;
 | 
			
		||||
		u-boot,dm-pre-reloc;
 | 
			
		||||
		#clock-cells = <1>;
 | 
			
		||||
		clocks = <&fin_pll>;
 | 
			
		||||
		clock-names = "fin_pll";
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	clock_top0: clock-controller@105d0000 {
 | 
			
		||||
		compatible = "samsung,exynos7-clock-top0";
 | 
			
		||||
		reg = <0x105d0000 0xb000>;
 | 
			
		||||
		u-boot,dm-pre-reloc;
 | 
			
		||||
		#clock-cells = <1>;
 | 
			
		||||
		clocks = <&fin_pll>, <&clock_topc DOUT_SCLK_BUS0_PLL>,
 | 
			
		||||
			 <&clock_topc DOUT_SCLK_BUS1_PLL>,
 | 
			
		||||
			 <&clock_topc DOUT_SCLK_CC_PLL>,
 | 
			
		||||
			 <&clock_topc DOUT_SCLK_MFC_PLL>;
 | 
			
		||||
		clock-names = "fin_pll", "dout_sclk_bus0_pll",
 | 
			
		||||
			      "dout_sclk_bus1_pll", "dout_sclk_cc_pll",
 | 
			
		||||
			      "dout_sclk_mfc_pll";
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	clock_peric1: clock-controller@14c80000 {
 | 
			
		||||
		compatible = "samsung,exynos7-clock-peric1";
 | 
			
		||||
		reg = <0x14c80000 0xd00>;
 | 
			
		||||
		u-boot,dm-pre-reloc;
 | 
			
		||||
		#clock-cells = <1>;
 | 
			
		||||
		clocks = <&fin_pll>, <&clock_top0 DOUT_ACLK_PERIC1>,
 | 
			
		||||
			 <&clock_top0 CLK_SCLK_UART1>,
 | 
			
		||||
			 <&clock_top0 CLK_SCLK_UART2>,
 | 
			
		||||
			 <&clock_top0 CLK_SCLK_UART3>;
 | 
			
		||||
		clock-names = "fin_pll", "dout_aclk_peric1_66",
 | 
			
		||||
			      "sclk_uart1", "sclk_uart2", "sclk_uart3";
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	pinctrl@13470000 {
 | 
			
		||||
		compatible = "samsung,exynos7420-pinctrl";
 | 
			
		||||
		reg = <0x13470000 0x1000>;
 | 
			
		||||
		u-boot,dm-pre-reloc;
 | 
			
		||||
 | 
			
		||||
		serial2_bus: serial2-bus {
 | 
			
		||||
			samsung,pins = "gpd1-4", "gpd1-5";
 | 
			
		||||
			samsung,pin-function = <2>;
 | 
			
		||||
			samsung,pin-pud = <3>;
 | 
			
		||||
			samsung,pin-drv = <0>;
 | 
			
		||||
			u-boot,dm-pre-reloc;
 | 
			
		||||
		};
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	serial@14C30000 {
 | 
			
		||||
		compatible = "samsung,exynos4210-uart";
 | 
			
		||||
		reg = <0x14C30000 0x100>;
 | 
			
		||||
		u-boot,dm-pre-reloc;
 | 
			
		||||
		clocks = <&clock_peric1 PCLK_UART2>,
 | 
			
		||||
			 <&clock_peric1 SCLK_UART2>;
 | 
			
		||||
		clock-names = "uart", "clk_uart_baud0";
 | 
			
		||||
		pinctrl-names = "default";
 | 
			
		||||
		pinctrl-0 = <&serial2_bus>;
 | 
			
		||||
	};
 | 
			
		||||
};
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,16 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Device Tree file for Freescale Layerscape-1012A family SoC.
 | 
			
		||||
 *
 | 
			
		||||
 * Copyright 2016, Freescale Semiconductor
 | 
			
		||||
 *
 | 
			
		||||
 * SPDX-License-Identifier:	GPL-2.0+
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/dts-v1/;
 | 
			
		||||
#include "fsl-ls1012a-frdm.dtsi"
 | 
			
		||||
 | 
			
		||||
/ {
 | 
			
		||||
	chosen {
 | 
			
		||||
		stdout-path = &duart0;
 | 
			
		||||
	};
 | 
			
		||||
};
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,37 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Device Tree file for Freescale Layerscape-1012A family SoC.
 | 
			
		||||
 *
 | 
			
		||||
 * Copyright 2016, Freescale Semiconductor
 | 
			
		||||
 *
 | 
			
		||||
 * SPDX-License-Identifier:	GPL-2.0+
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/include/ "fsl-ls1012a.dtsi"
 | 
			
		||||
 | 
			
		||||
/ {
 | 
			
		||||
	model = "LS1012A FREEDOM Board";
 | 
			
		||||
	aliases {
 | 
			
		||||
		spi0 = &qspi;
 | 
			
		||||
	};
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&qspi {
 | 
			
		||||
	bus-num = <0>;
 | 
			
		||||
	status = "okay";
 | 
			
		||||
 | 
			
		||||
	qflash0: s25fl128s@0 {
 | 
			
		||||
		#address-cells = <1>;
 | 
			
		||||
		#size-cells = <1>;
 | 
			
		||||
		compatible = "spi-flash";
 | 
			
		||||
		spi-max-frequency = <20000000>;
 | 
			
		||||
		reg = <0>;
 | 
			
		||||
	};
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&i2c0 {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&duart0 {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,14 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Copyright 2016 Freescale Semiconductor
 | 
			
		||||
 *
 | 
			
		||||
 * SPDX-License-Identifier:	GPL-2.0+
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/dts-v1/;
 | 
			
		||||
#include "fsl-ls1012a-qds.dtsi"
 | 
			
		||||
 | 
			
		||||
/ {
 | 
			
		||||
       chosen {
 | 
			
		||||
               stdout-path = &duart0;
 | 
			
		||||
       };
 | 
			
		||||
};
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,123 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Copyright 2016 Freescale Semiconductor
 | 
			
		||||
 *
 | 
			
		||||
 * SPDX-License-Identifier:	GPL-2.0+
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/include/ "fsl-ls1012a.dtsi"
 | 
			
		||||
 | 
			
		||||
/ {
 | 
			
		||||
	model = "LS1012A QDS Board";
 | 
			
		||||
	aliases {
 | 
			
		||||
		spi0 = &qspi;
 | 
			
		||||
		spi1 = &dspi0;
 | 
			
		||||
	};
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&dspi0 {
 | 
			
		||||
	bus-num = <0>;
 | 
			
		||||
	status = "okay";
 | 
			
		||||
 | 
			
		||||
	dflash0: n25q128a {
 | 
			
		||||
		#address-cells = <1>;
 | 
			
		||||
		#size-cells = <1>;
 | 
			
		||||
		compatible = "spi-flash";
 | 
			
		||||
		reg = <0>;
 | 
			
		||||
		spi-max-frequency = <1000000>; /* input clock */
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	dflash1: sst25wf040b {
 | 
			
		||||
		#address-cells = <1>;
 | 
			
		||||
		#size-cells = <1>;
 | 
			
		||||
		compatible = "spi-flash";
 | 
			
		||||
		spi-max-frequency = <3500000>;
 | 
			
		||||
		reg = <1>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	dflash2: en25s64 {
 | 
			
		||||
		#address-cells = <1>;
 | 
			
		||||
		#size-cells = <1>;
 | 
			
		||||
		compatible = "spi-flash";
 | 
			
		||||
		spi-max-frequency = <3500000>;
 | 
			
		||||
		reg = <2>;
 | 
			
		||||
	};
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&qspi {
 | 
			
		||||
	bus-num = <0>;
 | 
			
		||||
	status = "okay";
 | 
			
		||||
 | 
			
		||||
	qflash0: s25fl128s@0 {
 | 
			
		||||
		#address-cells = <1>;
 | 
			
		||||
		#size-cells = <1>;
 | 
			
		||||
		compatible = "spi-flash";
 | 
			
		||||
		spi-max-frequency = <20000000>;
 | 
			
		||||
		reg = <0>;
 | 
			
		||||
	};
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&i2c0 {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
	pca9547@77 {
 | 
			
		||||
		compatible = "philips,pca9547";
 | 
			
		||||
		reg = <0x77>;
 | 
			
		||||
		#address-cells = <1>;
 | 
			
		||||
		#size-cells = <0>;
 | 
			
		||||
 | 
			
		||||
		i2c@0 {
 | 
			
		||||
			#address-cells = <1>;
 | 
			
		||||
			#size-cells = <0>;
 | 
			
		||||
			reg = <0x0>;
 | 
			
		||||
 | 
			
		||||
			rtc@68 {
 | 
			
		||||
				compatible = "dallas,ds3232";
 | 
			
		||||
				reg = <0x68>;
 | 
			
		||||
				/* IRQ10_B */
 | 
			
		||||
				interrupts = <0 150 0x4>;
 | 
			
		||||
			};
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		i2c@2 {
 | 
			
		||||
			#address-cells = <1>;
 | 
			
		||||
			#size-cells = <0>;
 | 
			
		||||
			reg = <0x2>;
 | 
			
		||||
 | 
			
		||||
			ina220@40 {
 | 
			
		||||
				compatible = "ti,ina220";
 | 
			
		||||
				reg = <0x40>;
 | 
			
		||||
				shunt-resistor = <1000>;
 | 
			
		||||
			};
 | 
			
		||||
 | 
			
		||||
			ina220@41 {
 | 
			
		||||
				compatible = "ti,ina220";
 | 
			
		||||
				reg = <0x41>;
 | 
			
		||||
				shunt-resistor = <1000>;
 | 
			
		||||
			};
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		i2c@3 {
 | 
			
		||||
			#address-cells = <1>;
 | 
			
		||||
			#size-cells = <0>;
 | 
			
		||||
			reg = <0x3>;
 | 
			
		||||
 | 
			
		||||
			eeprom@56 {
 | 
			
		||||
				compatible = "at24,24c512";
 | 
			
		||||
				reg = <0x56>;
 | 
			
		||||
			};
 | 
			
		||||
 | 
			
		||||
			eeprom@57 {
 | 
			
		||||
				compatible = "at24,24c512";
 | 
			
		||||
				reg = <0x57>;
 | 
			
		||||
			};
 | 
			
		||||
 | 
			
		||||
			adt7461a@4c {
 | 
			
		||||
				compatible = "adt7461a";
 | 
			
		||||
				reg = <0x4c>;
 | 
			
		||||
			};
 | 
			
		||||
		};
 | 
			
		||||
	};
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&duart0 {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,16 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Device Tree file for Freescale Layerscape-1012A family SoC.
 | 
			
		||||
 *
 | 
			
		||||
 * Copyright 2016, Freescale Semiconductor
 | 
			
		||||
 *
 | 
			
		||||
 * SPDX-License-Identifier:	GPL-2.0+
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/dts-v1/;
 | 
			
		||||
#include "fsl-ls1012a-rdb.dtsi"
 | 
			
		||||
 | 
			
		||||
/ {
 | 
			
		||||
       chosen {
 | 
			
		||||
               stdout-path = &duart0;
 | 
			
		||||
       };
 | 
			
		||||
};
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,39 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Device Tree Include file for Freescale Layerscape-1012A family SoC.
 | 
			
		||||
 *
 | 
			
		||||
 * Copyright 2016, Freescale Semiconductor
 | 
			
		||||
 *
 | 
			
		||||
 * This file is licensed under the terms of the GNU General Public
 | 
			
		||||
 * License version 2.  This program is licensed "as is" without any
 | 
			
		||||
 * warranty of any kind, whether express or implied.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/include/ "fsl-ls1012a.dtsi"
 | 
			
		||||
 | 
			
		||||
/ {
 | 
			
		||||
	model = "LS1012A RDB Board";
 | 
			
		||||
	aliases {
 | 
			
		||||
		spi0 = &qspi;
 | 
			
		||||
	};
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&qspi {
 | 
			
		||||
	bus-num = <0>;
 | 
			
		||||
	status = "okay";
 | 
			
		||||
 | 
			
		||||
	qflash0: s25fl128s@0 {
 | 
			
		||||
		#address-cells = <1>;
 | 
			
		||||
		#size-cells = <1>;
 | 
			
		||||
		compatible = "spi-flash";
 | 
			
		||||
		spi-max-frequency = <20000000>;
 | 
			
		||||
		reg = <0>;
 | 
			
		||||
	};
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&i2c0 {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&duart0 {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,119 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Copyright 2016 Freescale Semiconductor
 | 
			
		||||
 *
 | 
			
		||||
 * SPDX-License-Identifier:	GPL-2.0+
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/include/ "skeleton64.dtsi"
 | 
			
		||||
 | 
			
		||||
/ {
 | 
			
		||||
	compatible = "fsl,ls1012a";
 | 
			
		||||
	interrupt-parent = <&gic>;
 | 
			
		||||
	cpus {
 | 
			
		||||
		#address-cells = <2>;
 | 
			
		||||
		#size-cells = <0>;
 | 
			
		||||
 | 
			
		||||
		cpu0: cpu@0 {
 | 
			
		||||
			device_type = "cpu";
 | 
			
		||||
			compatible = "arm,cortex-a53";
 | 
			
		||||
			reg = <0x0 0x0>;
 | 
			
		||||
			clocks = <&clockgen 1 0>;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	sysclk: sysclk {
 | 
			
		||||
		compatible = "fixed-clock";
 | 
			
		||||
		#clock-cells = <0>;
 | 
			
		||||
		clock-frequency = <100000000>;
 | 
			
		||||
		clock-output-names = "sysclk";
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	gic: interrupt-controller@1400000 {
 | 
			
		||||
		compatible = "arm,gic-400";
 | 
			
		||||
		#interrupt-cells = <3>;
 | 
			
		||||
		interrupt-controller;
 | 
			
		||||
		reg = <0x0 0x1401000 0 0x1000>, /* GICD */
 | 
			
		||||
		      <0x0 0x1402000 0 0x2000>, /* GICC */
 | 
			
		||||
		      <0x0 0x1404000 0 0x2000>, /* GICH */
 | 
			
		||||
		      <0x0 0x1406000 0 0x2000>; /* GICV */
 | 
			
		||||
		interrupts = <1 9 0xf08>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	soc {
 | 
			
		||||
		compatible = "simple-bus";
 | 
			
		||||
		#address-cells = <2>;
 | 
			
		||||
		#size-cells = <2>;
 | 
			
		||||
		ranges;
 | 
			
		||||
 | 
			
		||||
		clockgen: clocking@1ee1000 {
 | 
			
		||||
			compatible = "fsl,ls1012a-clockgen";
 | 
			
		||||
			reg = <0x0 0x1ee1000 0x0 0x1000>;
 | 
			
		||||
			#clock-cells = <2>;
 | 
			
		||||
			clocks = <&sysclk>;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		dspi0: dspi@2100000 {
 | 
			
		||||
			compatible = "fsl,vf610-dspi";
 | 
			
		||||
			#address-cells = <1>;
 | 
			
		||||
			#size-cells = <0>;
 | 
			
		||||
			reg = <0x0 0x2100000 0x0 0x10000>;
 | 
			
		||||
			interrupts = <0 64 0x4>;
 | 
			
		||||
			clock-names = "dspi";
 | 
			
		||||
			clocks = <&clockgen 4 0>;
 | 
			
		||||
			num-cs = <6>;
 | 
			
		||||
			big-endian;
 | 
			
		||||
			status = "disabled";
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		i2c0: i2c@2180000 {
 | 
			
		||||
			compatible = "fsl,vf610-i2c";
 | 
			
		||||
			#address-cells = <1>;
 | 
			
		||||
			#size-cells = <0>;
 | 
			
		||||
			reg = <0x0 0x2180000 0x0 0x10000>;
 | 
			
		||||
			interrupts = <0 56 0x4>;
 | 
			
		||||
			clock-names = "i2c";
 | 
			
		||||
			clocks = <&clockgen 4 0>;
 | 
			
		||||
			status = "disabled";
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		i2c1: i2c@2190000 {
 | 
			
		||||
			compatible = "fsl,vf610-i2c";
 | 
			
		||||
			#address-cells = <1>;
 | 
			
		||||
			#size-cells = <0>;
 | 
			
		||||
			reg = <0x0 0x2190000 0x0 0x10000>;
 | 
			
		||||
			interrupts = <0 57 0x4>;
 | 
			
		||||
			clock-names = "i2c";
 | 
			
		||||
			clocks = <&clockgen 4 0>;
 | 
			
		||||
			status = "disabled";
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		duart0: serial@21c0500 {
 | 
			
		||||
			compatible = "fsl,ns16550", "ns16550a";
 | 
			
		||||
			reg = <0x00 0x21c0500 0x0 0x100>;
 | 
			
		||||
			interrupts = <0 54 0x4>;
 | 
			
		||||
			clocks = <&clockgen 4 0>;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		duart1: serial@21c0600 {
 | 
			
		||||
			compatible = "fsl,ns16550", "ns16550a";
 | 
			
		||||
			reg = <0x00 0x21c0600 0x0 0x100>;
 | 
			
		||||
			interrupts = <0 54 0x4>;
 | 
			
		||||
			clocks = <&clockgen 4 0>;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		qspi: quadspi@1550000 {
 | 
			
		||||
			compatible = "fsl,vf610-qspi";
 | 
			
		||||
			#address-cells = <1>;
 | 
			
		||||
			#size-cells = <0>;
 | 
			
		||||
			reg = <0x0 0x1550000 0x0 0x10000>,
 | 
			
		||||
				<0x0 0x40000000 0x0 0x4000000>;
 | 
			
		||||
			reg-names = "QuadSPI", "QuadSPI-memory";
 | 
			
		||||
			num-cs = <2>;
 | 
			
		||||
			big-endian;
 | 
			
		||||
			status = "disabled";
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
	};
 | 
			
		||||
};
 | 
			
		||||
| 
						 | 
				
			
			@ -240,8 +240,9 @@
 | 
			
		|||
			compatible = "fsl,vf610-qspi";
 | 
			
		||||
			#address-cells = <1>;
 | 
			
		||||
			#size-cells = <0>;
 | 
			
		||||
			reg = <0x1550000 0x10000>,
 | 
			
		||||
				<0x40000000 0x4000000>;
 | 
			
		||||
			reg = <0x0 0x1550000 0x0 0x10000>,
 | 
			
		||||
				<0x0 0x40000000 0x0 0x4000000>;
 | 
			
		||||
			reg-names = "QuadSPI", "QuadSPI-memory";
 | 
			
		||||
			num-cs = <2>;
 | 
			
		||||
			big-endian;
 | 
			
		||||
			status = "disabled";
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,69 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Copyright (c) 2016 Andreas Färber
 | 
			
		||||
 * Copyright (c) 2016 BayLibre, Inc.
 | 
			
		||||
 * Author: Kevin Hilman <khilman@kernel.org>
 | 
			
		||||
 *
 | 
			
		||||
 * This file is dual-licensed: you can use it either under the terms
 | 
			
		||||
 * of the GPL or the X11 license, at your option. Note that this dual
 | 
			
		||||
 * licensing only applies to this file, and not this project as a
 | 
			
		||||
 * whole.
 | 
			
		||||
 *
 | 
			
		||||
 *  a) This library is free software; you can redistribute it and/or
 | 
			
		||||
 *     modify it under the terms of the GNU General Public License as
 | 
			
		||||
 *     published by the Free Software Foundation; either version 2 of the
 | 
			
		||||
 *     License, or (at your option) any later version.
 | 
			
		||||
 *
 | 
			
		||||
 *     This library is distributed in the hope that it will be useful,
 | 
			
		||||
 *     but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
 *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
 *     GNU General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * Or, alternatively,
 | 
			
		||||
 *
 | 
			
		||||
 *  b) Permission is hereby granted, free of charge, to any person
 | 
			
		||||
 *     obtaining a copy of this software and associated documentation
 | 
			
		||||
 *     files (the "Software"), to deal in the Software without
 | 
			
		||||
 *     restriction, including without limitation the rights to use,
 | 
			
		||||
 *     copy, modify, merge, publish, distribute, sublicense, and/or
 | 
			
		||||
 *     sell copies of the Software, and to permit persons to whom the
 | 
			
		||||
 *     Software is furnished to do so, subject to the following
 | 
			
		||||
 *     conditions:
 | 
			
		||||
 *
 | 
			
		||||
 *     The above copyright notice and this permission notice shall be
 | 
			
		||||
 *     included in all copies or substantial portions of the Software.
 | 
			
		||||
 *
 | 
			
		||||
 *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 | 
			
		||||
 *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
 | 
			
		||||
 *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 | 
			
		||||
 *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 | 
			
		||||
 *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
 | 
			
		||||
 *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 | 
			
		||||
 *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 | 
			
		||||
 *     OTHER DEALINGS IN THE SOFTWARE.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/dts-v1/;
 | 
			
		||||
 | 
			
		||||
#include "meson-gxbb.dtsi"
 | 
			
		||||
 | 
			
		||||
/ {
 | 
			
		||||
	compatible = "hardkernel,odroid-c2", "amlogic,meson-gxbb";
 | 
			
		||||
	model = "Hardkernel ODROID-C2";
 | 
			
		||||
 | 
			
		||||
	aliases {
 | 
			
		||||
		serial0 = &uart_AO;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	chosen {
 | 
			
		||||
		stdout-path = "serial0:115200n8";
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	memory@0 {
 | 
			
		||||
		device_type = "memory";
 | 
			
		||||
		reg = <0x0 0x0 0x0 0x80000000>;
 | 
			
		||||
	};
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&uart_AO {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,178 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Copyright (c) 2016 Andreas Färber
 | 
			
		||||
 *
 | 
			
		||||
 * This file is dual-licensed: you can use it either under the terms
 | 
			
		||||
 * of the GPL or the X11 license, at your option. Note that this dual
 | 
			
		||||
 * licensing only applies to this file, and not this project as a
 | 
			
		||||
 * whole.
 | 
			
		||||
 *
 | 
			
		||||
 *  a) This library is free software; you can redistribute it and/or
 | 
			
		||||
 *     modify it under the terms of the GNU General Public License as
 | 
			
		||||
 *     published by the Free Software Foundation; either version 2 of the
 | 
			
		||||
 *     License, or (at your option) any later version.
 | 
			
		||||
 *
 | 
			
		||||
 *     This library is distributed in the hope that it will be useful,
 | 
			
		||||
 *     but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
 *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
 *     GNU General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * Or, alternatively,
 | 
			
		||||
 *
 | 
			
		||||
 *  b) Permission is hereby granted, free of charge, to any person
 | 
			
		||||
 *     obtaining a copy of this software and associated documentation
 | 
			
		||||
 *     files (the "Software"), to deal in the Software without
 | 
			
		||||
 *     restriction, including without limitation the rights to use,
 | 
			
		||||
 *     copy, modify, merge, publish, distribute, sublicense, and/or
 | 
			
		||||
 *     sell copies of the Software, and to permit persons to whom the
 | 
			
		||||
 *     Software is furnished to do so, subject to the following
 | 
			
		||||
 *     conditions:
 | 
			
		||||
 *
 | 
			
		||||
 *     The above copyright notice and this permission notice shall be
 | 
			
		||||
 *     included in all copies or substantial portions of the Software.
 | 
			
		||||
 *
 | 
			
		||||
 *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 | 
			
		||||
 *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
 | 
			
		||||
 *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 | 
			
		||||
 *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 | 
			
		||||
 *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
 | 
			
		||||
 *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 | 
			
		||||
 *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 | 
			
		||||
 *     OTHER DEALINGS IN THE SOFTWARE.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include <dt-bindings/gpio/gpio.h>
 | 
			
		||||
#include <dt-bindings/interrupt-controller/irq.h>
 | 
			
		||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
 | 
			
		||||
 | 
			
		||||
/ {
 | 
			
		||||
	compatible = "amlogic,meson-gxbb";
 | 
			
		||||
	interrupt-parent = <&gic>;
 | 
			
		||||
	#address-cells = <2>;
 | 
			
		||||
	#size-cells = <2>;
 | 
			
		||||
 | 
			
		||||
	cpus {
 | 
			
		||||
		#address-cells = <0x2>;
 | 
			
		||||
		#size-cells = <0x0>;
 | 
			
		||||
 | 
			
		||||
		cpu0: cpu@0 {
 | 
			
		||||
			device_type = "cpu";
 | 
			
		||||
			compatible = "arm,cortex-a53", "arm,armv8";
 | 
			
		||||
			reg = <0x0 0x0>;
 | 
			
		||||
			enable-method = "psci";
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		cpu1: cpu@1 {
 | 
			
		||||
			device_type = "cpu";
 | 
			
		||||
			compatible = "arm,cortex-a53", "arm,armv8";
 | 
			
		||||
			reg = <0x0 0x1>;
 | 
			
		||||
			enable-method = "psci";
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		cpu2: cpu@2 {
 | 
			
		||||
			device_type = "cpu";
 | 
			
		||||
			compatible = "arm,cortex-a53", "arm,armv8";
 | 
			
		||||
			reg = <0x0 0x2>;
 | 
			
		||||
			enable-method = "psci";
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		cpu3: cpu@3 {
 | 
			
		||||
			device_type = "cpu";
 | 
			
		||||
			compatible = "arm,cortex-a53", "arm,armv8";
 | 
			
		||||
			reg = <0x0 0x3>;
 | 
			
		||||
			enable-method = "psci";
 | 
			
		||||
		};
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	arm-pmu {
 | 
			
		||||
		compatible = "arm,cortex-a53-pmu";
 | 
			
		||||
		interrupts = <GIC_SPI 137 IRQ_TYPE_LEVEL_HIGH>,
 | 
			
		||||
			     <GIC_SPI 138 IRQ_TYPE_LEVEL_HIGH>,
 | 
			
		||||
			     <GIC_SPI 153 IRQ_TYPE_LEVEL_HIGH>,
 | 
			
		||||
			     <GIC_SPI 154 IRQ_TYPE_LEVEL_HIGH>;
 | 
			
		||||
		interrupt-affinity = <&cpu0>, <&cpu1>, <&cpu2>, <&cpu3>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	psci {
 | 
			
		||||
		compatible = "arm,psci-0.2";
 | 
			
		||||
		method = "smc";
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	timer {
 | 
			
		||||
		compatible = "arm,armv8-timer";
 | 
			
		||||
		interrupts = <GIC_PPI 13
 | 
			
		||||
			(GIC_CPU_MASK_RAW(0xff) | IRQ_TYPE_EDGE_RISING)>,
 | 
			
		||||
			     <GIC_PPI 14
 | 
			
		||||
			(GIC_CPU_MASK_RAW(0xff) | IRQ_TYPE_EDGE_RISING)>,
 | 
			
		||||
			     <GIC_PPI 11
 | 
			
		||||
			(GIC_CPU_MASK_RAW(0xff) | IRQ_TYPE_EDGE_RISING)>,
 | 
			
		||||
			     <GIC_PPI 10
 | 
			
		||||
			(GIC_CPU_MASK_RAW(0xff) | IRQ_TYPE_EDGE_RISING)>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	xtal: xtal-clk {
 | 
			
		||||
		compatible = "fixed-clock";
 | 
			
		||||
		clock-frequency = <24000000>;
 | 
			
		||||
		clock-output-names = "xtal";
 | 
			
		||||
		#clock-cells = <0>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	soc {
 | 
			
		||||
		compatible = "simple-bus";
 | 
			
		||||
		#address-cells = <2>;
 | 
			
		||||
		#size-cells = <2>;
 | 
			
		||||
		ranges;
 | 
			
		||||
 | 
			
		||||
		cbus: cbus@c1100000 {
 | 
			
		||||
			compatible = "simple-bus";
 | 
			
		||||
			reg = <0x0 0xc1100000 0x0 0x100000>;
 | 
			
		||||
			#address-cells = <2>;
 | 
			
		||||
			#size-cells = <2>;
 | 
			
		||||
			ranges = <0x0 0x0 0x0 0xc1100000 0x0 0x100000>;
 | 
			
		||||
 | 
			
		||||
			uart_A: serial@84c0 {
 | 
			
		||||
				compatible = "amlogic,meson-uart";
 | 
			
		||||
				reg = <0x0 0x084c0 0x0 0x14>;
 | 
			
		||||
				interrupts = <GIC_SPI 26 IRQ_TYPE_EDGE_RISING>;
 | 
			
		||||
				clocks = <&xtal>;
 | 
			
		||||
				status = "disabled";
 | 
			
		||||
			};
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		gic: interrupt-controller@c4301000 {
 | 
			
		||||
			compatible = "arm,gic-400";
 | 
			
		||||
			reg = <0x0 0xc4301000 0 0x1000>,
 | 
			
		||||
			      <0x0 0xc4302000 0 0x2000>,
 | 
			
		||||
			      <0x0 0xc4304000 0 0x2000>,
 | 
			
		||||
			      <0x0 0xc4306000 0 0x2000>;
 | 
			
		||||
			interrupt-controller;
 | 
			
		||||
			interrupts = <GIC_PPI 9
 | 
			
		||||
				(GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_HIGH)>;
 | 
			
		||||
			#interrupt-cells = <3>;
 | 
			
		||||
			#address-cells = <0>;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		aobus: aobus@c8100000 {
 | 
			
		||||
			compatible = "simple-bus";
 | 
			
		||||
			reg = <0x0 0xc8100000 0x0 0x100000>;
 | 
			
		||||
			#address-cells = <2>;
 | 
			
		||||
			#size-cells = <2>;
 | 
			
		||||
			ranges = <0x0 0x0 0x0 0xc8100000 0x0 0x100000>;
 | 
			
		||||
 | 
			
		||||
			uart_AO: serial@4c0 {
 | 
			
		||||
				compatible = "amlogic,meson-uart";
 | 
			
		||||
				reg = <0x0 0x004c0 0x0 0x14>;
 | 
			
		||||
				interrupts = <GIC_SPI 193 IRQ_TYPE_EDGE_RISING>;
 | 
			
		||||
				clocks = <&xtal>;
 | 
			
		||||
				status = "disabled";
 | 
			
		||||
			};
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		apb: apb@d0000000 {
 | 
			
		||||
			compatible = "simple-bus";
 | 
			
		||||
			reg = <0x0 0xd0000000 0x0 0x200000>;
 | 
			
		||||
			#address-cells = <2>;
 | 
			
		||||
			#size-cells = <2>;
 | 
			
		||||
			ranges = <0x0 0x0 0x0 0xd0000000 0x0 0x200000>;
 | 
			
		||||
		};
 | 
			
		||||
	};
 | 
			
		||||
};
 | 
			
		||||
| 
						 | 
				
			
			@ -146,6 +146,22 @@
 | 
			
		|||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&gmac {
 | 
			
		||||
	assigned-clocks = <&cru SCLK_MAC>;
 | 
			
		||||
	assigned-clock-parents = <&ext_gmac>;
 | 
			
		||||
	clock_in_out = "input";
 | 
			
		||||
	pinctrl-names = "default";
 | 
			
		||||
	pinctrl-0 = <&rgmii_pins>, <&phy_rst>, <&phy_pmeb>, <&phy_int>;
 | 
			
		||||
	phy-supply = <&vcc_lan>;
 | 
			
		||||
	phy-mode = "rgmii";
 | 
			
		||||
	snps,reset-active-low;
 | 
			
		||||
	snps,reset-delays-us = <0 10000 1000000>;
 | 
			
		||||
	snps,reset-gpio = <&gpio4 8 GPIO_ACTIVE_LOW>;
 | 
			
		||||
	tx_delay = <0x30>;
 | 
			
		||||
	rx_delay = <0x10>;
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&hdmi {
 | 
			
		||||
	ddc-i2c-bus = <&i2c5>;
 | 
			
		||||
	status = "okay";
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -111,7 +111,7 @@
 | 
			
		|||
};
 | 
			
		||||
 | 
			
		||||
&gmac {
 | 
			
		||||
	status = "ok";
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&hdmi {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,113 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Copyright (C) 2015 Marek Vasut <marex@denx.de>
 | 
			
		||||
 *
 | 
			
		||||
 * SPDX-License-Identifier:	GPL-2.0+
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include "socfpga_cyclone5.dtsi"
 | 
			
		||||
 | 
			
		||||
/ {
 | 
			
		||||
	model = "samtec VIN|ING FPGA";
 | 
			
		||||
	compatible = "altr,socfpga-cyclone5", "altr,socfpga";
 | 
			
		||||
 | 
			
		||||
	chosen {
 | 
			
		||||
		bootargs = "console=ttyS0,115200";
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	aliases {
 | 
			
		||||
		ethernet0 = &gmac1;
 | 
			
		||||
		udc0 = &usb0;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	memory {
 | 
			
		||||
		name = "memory";
 | 
			
		||||
		device_type = "memory";
 | 
			
		||||
		reg = <0x0 0x40000000>; /* 1GB */
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	soc {
 | 
			
		||||
		u-boot,dm-pre-reloc;
 | 
			
		||||
	};
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&gmac1 {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
	phy-mode = "rgmii";
 | 
			
		||||
 | 
			
		||||
	rxd0-skew-ps = <0>;
 | 
			
		||||
	rxd1-skew-ps = <0>;
 | 
			
		||||
	rxd2-skew-ps = <0>;
 | 
			
		||||
	rxd3-skew-ps = <0>;
 | 
			
		||||
	txen-skew-ps = <0>;
 | 
			
		||||
	txc-skew-ps = <2600>;
 | 
			
		||||
	rxdv-skew-ps = <0>;
 | 
			
		||||
	rxc-skew-ps = <2000>;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&gpio0 {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&gpio1 {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&gpio2 {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&i2c0 {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
 | 
			
		||||
	rtc: rtc@68 {
 | 
			
		||||
		compatible = "stm,m41t82";
 | 
			
		||||
		reg = <0x68>;
 | 
			
		||||
	};
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&qspi {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
	u-boot,dm-pre-reloc;
 | 
			
		||||
 | 
			
		||||
	flash0: n25q128@0 {
 | 
			
		||||
		u-boot,dm-pre-reloc;
 | 
			
		||||
		#address-cells = <1>;
 | 
			
		||||
		#size-cells = <1>;
 | 
			
		||||
		compatible = "n25q128", "spi-flash";
 | 
			
		||||
		reg = <0>;      /* chip select */
 | 
			
		||||
		spi-max-frequency = <50000000>;
 | 
			
		||||
		m25p,fast-read;
 | 
			
		||||
		page-size = <256>;
 | 
			
		||||
		block-size = <16>; /* 2^16, 64KB */
 | 
			
		||||
		read-delay = <4>;  /* delay value in read data capture register */
 | 
			
		||||
		tshsl-ns = <50>;
 | 
			
		||||
		tsd2d-ns = <50>;
 | 
			
		||||
		tchsh-ns = <4>;
 | 
			
		||||
		tslch-ns = <4>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	flash1: n25q00@1 {
 | 
			
		||||
		u-boot,dm-pre-reloc;
 | 
			
		||||
		#address-cells = <1>;
 | 
			
		||||
		#size-cells = <1>;
 | 
			
		||||
		compatible = "n25q00", "spi-flash";
 | 
			
		||||
		reg = <1>;      /* chip select */
 | 
			
		||||
		spi-max-frequency = <50000000>;
 | 
			
		||||
		m25p,fast-read;
 | 
			
		||||
		page-size = <256>;
 | 
			
		||||
		block-size = <16>; /* 2^16, 64KB */
 | 
			
		||||
		read-delay = <4>;  /* delay value in read data capture register */
 | 
			
		||||
		tshsl-ns = <50>;
 | 
			
		||||
		tsd2d-ns = <50>;
 | 
			
		||||
		tchsh-ns = <4>;
 | 
			
		||||
		tslch-ns = <4>;
 | 
			
		||||
	};
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&usb0 {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&usb1 {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
| 
						 | 
				
			
			@ -40,7 +40,23 @@
 | 
			
		|||
 *     OTHER DEALINGS IN THE SOFTWARE.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include "a64.dtsi"
 | 
			
		||||
#include "sun50i-a64.dtsi"
 | 
			
		||||
 | 
			
		||||
/ {
 | 
			
		||||
 | 
			
		||||
	aliases {
 | 
			
		||||
		serial0 = &uart0;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	soc {
 | 
			
		||||
		reg_vcc3v3: vcc3v3 {
 | 
			
		||||
			compatible = "regulator-fixed";
 | 
			
		||||
			regulator-name = "vcc3v3";
 | 
			
		||||
			regulator-min-microvolt = <3300000>;
 | 
			
		||||
			regulator-max-microvolt = <3300000>;
 | 
			
		||||
		};
 | 
			
		||||
	};
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&mmc0 {
 | 
			
		||||
	pinctrl-names = "default";
 | 
			
		||||
| 
						 | 
				
			
			@ -57,20 +73,8 @@
 | 
			
		|||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&uart2 {
 | 
			
		||||
&i2c1 {
 | 
			
		||||
	pinctrl-names = "default";
 | 
			
		||||
	pinctrl-0 = <&uart2_pins>;
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&uart3 {
 | 
			
		||||
	pinctrl-names = "default";
 | 
			
		||||
	pinctrl-0 = <&uart3_pins_a>;
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&uart4 {
 | 
			
		||||
	pinctrl-names = "default";
 | 
			
		||||
	pinctrl-0 = <&uart4_pins>;
 | 
			
		||||
	pinctrl-0 = <&i2c1_pins>;
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
| 
						 | 
				
			
			@ -42,15 +42,11 @@
 | 
			
		|||
 | 
			
		||||
/dts-v1/;
 | 
			
		||||
 | 
			
		||||
/memreserve/ 0x45000000 0x00200000;
 | 
			
		||||
/memreserve/ 0x41010000 0x00010800;
 | 
			
		||||
/memreserve/ 0x40100000 0x00006000;
 | 
			
		||||
 | 
			
		||||
#include "pine64_common.dtsi"
 | 
			
		||||
#include "sun50i-a64-pine64-common.dtsi"
 | 
			
		||||
 | 
			
		||||
/ {
 | 
			
		||||
	model = "Pine64+";
 | 
			
		||||
	compatible = "pine64,pine64_plus", "allwinner,a64";
 | 
			
		||||
	compatible = "pine64,pine64-plus", "allwinner,sun50i-a64";
 | 
			
		||||
 | 
			
		||||
	chosen {
 | 
			
		||||
		stdout-path = "serial0:115200n8";
 | 
			
		||||
| 
						 | 
				
			
			@ -42,15 +42,11 @@
 | 
			
		|||
 | 
			
		||||
/dts-v1/;
 | 
			
		||||
 | 
			
		||||
/memreserve/ 0x45000000 0x00200000;
 | 
			
		||||
/memreserve/ 0x41010000 0x00010800;
 | 
			
		||||
/memreserve/ 0x40100000 0x00006000;
 | 
			
		||||
 | 
			
		||||
#include "pine64_common.dtsi"
 | 
			
		||||
#include "sun50i-a64-pine64-common.dtsi"
 | 
			
		||||
 | 
			
		||||
/ {
 | 
			
		||||
	model = "Pine64";
 | 
			
		||||
	compatible = "pine64,pine64", "allwinner,a64";
 | 
			
		||||
	compatible = "pine64,pine64", "allwinner,sun50i-a64";
 | 
			
		||||
 | 
			
		||||
	chosen {
 | 
			
		||||
		stdout-path = "serial0:115200n8";
 | 
			
		||||
| 
						 | 
				
			
			@ -1,7 +1,7 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Copyright (C) 2016 ARM Ltd.
 | 
			
		||||
 * based on the Allwinner H3 dtsi:
 | 
			
		||||
 * 	Copyright (C) 2015 Jens Kuske <jenskuske@gmail.com>
 | 
			
		||||
 *    Copyright (C) 2015 Jens Kuske <jenskuske@gmail.com>
 | 
			
		||||
 *
 | 
			
		||||
 * This file is dual-licensed: you can use it either under the terms
 | 
			
		||||
 * of the GPL or the X11 license, at your option. Note that this dual
 | 
			
		||||
| 
						 | 
				
			
			@ -46,19 +46,10 @@
 | 
			
		|||
#include <dt-bindings/pinctrl/sun4i-a10.h>
 | 
			
		||||
 | 
			
		||||
/ {
 | 
			
		||||
	compatible = "allwinner,a64";
 | 
			
		||||
	interrupt-parent = <&gic>;
 | 
			
		||||
	#address-cells = <1>;
 | 
			
		||||
	#size-cells = <1>;
 | 
			
		||||
 | 
			
		||||
	aliases {
 | 
			
		||||
		serial0 = &uart0;
 | 
			
		||||
		serial1 = &uart1;
 | 
			
		||||
		serial2 = &uart2;
 | 
			
		||||
		serial3 = &uart3;
 | 
			
		||||
		serial4 = &uart4;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	cpus {
 | 
			
		||||
		#address-cells = <1>;
 | 
			
		||||
		#size-cells = <0>;
 | 
			
		||||
| 
						 | 
				
			
			@ -93,18 +84,29 @@
 | 
			
		|||
	};
 | 
			
		||||
 | 
			
		||||
	psci {
 | 
			
		||||
		compatible = "arm,psci-0.2", "arm,psci";
 | 
			
		||||
		compatible = "arm,psci-0.2";
 | 
			
		||||
		method = "smc";
 | 
			
		||||
		cpu_suspend = <0xc4000001>;
 | 
			
		||||
		cpu_off = <0x84000002>;
 | 
			
		||||
		cpu_on = <0xc4000003>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
        memory {
 | 
			
		||||
	memory {
 | 
			
		||||
		device_type = "memory";
 | 
			
		||||
		reg = <0x40000000 0>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	gic: interrupt-controller@1c81000 {
 | 
			
		||||
		compatible = "arm,gic-400";
 | 
			
		||||
		interrupt-controller;
 | 
			
		||||
		#interrupt-cells = <3>;
 | 
			
		||||
		#address-cells = <0>;
 | 
			
		||||
 | 
			
		||||
		reg = <0x01c81000 0x1000>,
 | 
			
		||||
		      <0x01c82000 0x2000>,
 | 
			
		||||
		      <0x01c84000 0x2000>,
 | 
			
		||||
		      <0x01c86000 0x2000>;
 | 
			
		||||
		interrupts = <GIC_PPI 9
 | 
			
		||||
		      (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	timer {
 | 
			
		||||
		compatible = "arm,armv8-timer";
 | 
			
		||||
		interrupts = <GIC_PPI 13
 | 
			
		||||
| 
						 | 
				
			
			@ -136,7 +138,7 @@
 | 
			
		|||
			clock-output-names = "osc32k";
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		pll1: clk@01c20000 {
 | 
			
		||||
		pll1: pll1_clk@1c20000 {
 | 
			
		||||
			#clock-cells = <0>;
 | 
			
		||||
			compatible = "allwinner,sun8i-a23-pll1-clk";
 | 
			
		||||
			reg = <0x01c20000 0x4>;
 | 
			
		||||
| 
						 | 
				
			
			@ -144,7 +146,7 @@
 | 
			
		|||
			clock-output-names = "pll1";
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		pll6: clk@01c20028 {
 | 
			
		||||
		pll6: pll6_clk@1c20028 {
 | 
			
		||||
			#clock-cells = <1>;
 | 
			
		||||
			compatible = "allwinner,sun6i-a31-pll6-clk";
 | 
			
		||||
			reg = <0x01c20028 0x4>;
 | 
			
		||||
| 
						 | 
				
			
			@ -161,23 +163,24 @@
 | 
			
		|||
			clock-output-names = "pll6d2";
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		/* dummy clock until pll6 can be reused */
 | 
			
		||||
		pll8: pll8_clk {
 | 
			
		||||
			#clock-cells = <0>;
 | 
			
		||||
			compatible = "fixed-clock";
 | 
			
		||||
			clock-frequency = <1>;
 | 
			
		||||
			clock-output-names = "pll8";
 | 
			
		||||
		pll7: pll7_clk@1c2002c {
 | 
			
		||||
			#clock-cells = <1>;
 | 
			
		||||
			compatible = "allwinner,sun6i-a31-pll6-clk";
 | 
			
		||||
			reg = <0x01c2002c 0x4>;
 | 
			
		||||
			clocks = <&osc24M>;
 | 
			
		||||
			clock-output-names = "pll7", "pll7x2";
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		cpu: cpu_clk@01c20050 {
 | 
			
		||||
		cpu: cpu_clk@1c20050 {
 | 
			
		||||
			#clock-cells = <0>;
 | 
			
		||||
			compatible = "allwinner,sun4i-a10-cpu-clk";
 | 
			
		||||
			reg = <0x01c20050 0x4>;
 | 
			
		||||
			clocks = <&osc32k>, <&osc24M>, <&pll1>, <&pll1>;
 | 
			
		||||
			clock-output-names = "cpu";
 | 
			
		||||
			critical-clocks = <0>;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		axi: axi_clk@01c20050 {
 | 
			
		||||
		axi: axi_clk@1c20050 {
 | 
			
		||||
			#clock-cells = <0>;
 | 
			
		||||
			compatible = "allwinner,sun4i-a10-axi-clk";
 | 
			
		||||
			reg = <0x01c20050 0x4>;
 | 
			
		||||
| 
						 | 
				
			
			@ -185,7 +188,7 @@
 | 
			
		|||
			clock-output-names = "axi";
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		ahb1: ahb1_clk@01c20054 {
 | 
			
		||||
		ahb1: ahb1_clk@1c20054 {
 | 
			
		||||
			#clock-cells = <0>;
 | 
			
		||||
			compatible = "allwinner,sun6i-a31-ahb1-clk";
 | 
			
		||||
			reg = <0x01c20054 0x4>;
 | 
			
		||||
| 
						 | 
				
			
			@ -193,7 +196,7 @@
 | 
			
		|||
			clock-output-names = "ahb1";
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		ahb2: ahb2_clk@01c2005c {
 | 
			
		||||
		ahb2: ahb2_clk@1c2005c {
 | 
			
		||||
			#clock-cells = <0>;
 | 
			
		||||
			compatible = "allwinner,sun8i-h3-ahb2-clk";
 | 
			
		||||
			reg = <0x01c2005c 0x4>;
 | 
			
		||||
| 
						 | 
				
			
			@ -201,7 +204,7 @@
 | 
			
		|||
			clock-output-names = "ahb2";
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		apb1: apb1_clk@01c20054 {
 | 
			
		||||
		apb1: apb1_clk@1c20054 {
 | 
			
		||||
			#clock-cells = <0>;
 | 
			
		||||
			compatible = "allwinner,sun4i-a10-apb0-clk";
 | 
			
		||||
			reg = <0x01c20054 0x4>;
 | 
			
		||||
| 
						 | 
				
			
			@ -209,7 +212,7 @@
 | 
			
		|||
			clock-output-names = "apb1";
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		apb2: apb2_clk@01c20058 {
 | 
			
		||||
		apb2: apb2_clk@1c20058 {
 | 
			
		||||
			#clock-cells = <0>;
 | 
			
		||||
			compatible = "allwinner,sun4i-a10-apb1-clk";
 | 
			
		||||
			reg = <0x01c20058 0x4>;
 | 
			
		||||
| 
						 | 
				
			
			@ -217,92 +220,95 @@
 | 
			
		|||
			clock-output-names = "apb2";
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		bus_gates: clk@01c20060 {
 | 
			
		||||
		bus_gates: bus_gates_clk@1c20060 {
 | 
			
		||||
			#clock-cells = <1>;
 | 
			
		||||
			compatible = "allwinner,a64-bus-gates-clk",
 | 
			
		||||
				     "allwinner,sun8i-h3-bus-gates-clk";
 | 
			
		||||
			compatible = "allwinner,sun50i-a64-bus-gates-clk",
 | 
			
		||||
				     "allwinner,sunxi-multi-bus-gates-clk";
 | 
			
		||||
			reg = <0x01c20060 0x14>;
 | 
			
		||||
			clocks = <&ahb1>, <&ahb2>, <&apb1>, <&apb2>;
 | 
			
		||||
			clock-names = "ahb1", "ahb2", "apb1", "apb2";
 | 
			
		||||
			clock-indices = <1>,
 | 
			
		||||
					<5>, <6>, <8>,
 | 
			
		||||
					<9>, <10>, <13>,
 | 
			
		||||
					<14>, <17>, <18>,
 | 
			
		||||
					<19>, <20>,
 | 
			
		||||
					<21>, <23>,
 | 
			
		||||
					<24>, <25>,
 | 
			
		||||
					<28>, <29>,
 | 
			
		||||
					<32>, <35>,
 | 
			
		||||
					<36>, <37>,
 | 
			
		||||
					<40>, <43>,
 | 
			
		||||
					<44>, <52>, <53>,
 | 
			
		||||
					<54>, <64>,
 | 
			
		||||
					<65>, <69>, <72>,
 | 
			
		||||
					<76>, <77>, <78>,
 | 
			
		||||
					<96>, <97>, <98>,
 | 
			
		||||
					<101>,
 | 
			
		||||
					<112>, <113>,
 | 
			
		||||
					<114>, <115>,
 | 
			
		||||
					<116>, <135>;
 | 
			
		||||
			clock-output-names = "bus_mipidsi",
 | 
			
		||||
					     "bus_ce", "bus_dma", "bus_mmc0",
 | 
			
		||||
					     "bus_mmc1", "bus_mmc2", "bus_nand",
 | 
			
		||||
					     "bus_sdram", "bus_gmac", "bus_ts",
 | 
			
		||||
					     "bus_hstimer", "bus_spi0",
 | 
			
		||||
					     "bus_spi1", "bus_otg",
 | 
			
		||||
					     "bus_otg_ehci0", "bus_ehci0",
 | 
			
		||||
					     "bus_otg_ohci0", "bus_ohci0",
 | 
			
		||||
					     "bus_ve", "bus_lcd0",
 | 
			
		||||
					     "bus_lcd1", "bus_deint",
 | 
			
		||||
					     "bus_csi", "bus_hdmi",
 | 
			
		||||
					     "bus_de", "bus_gpu", "bus_msgbox",
 | 
			
		||||
					     "bus_spinlock", "bus_codec",
 | 
			
		||||
					     "bus_spdif", "bus_pio", "bus_ths",
 | 
			
		||||
					     "bus_i2s0", "bus_i2s1", "bus_i2s2",
 | 
			
		||||
					     "bus_i2c0", "bus_i2c1", "bus_i2c2",
 | 
			
		||||
					     "bus_scr",
 | 
			
		||||
					     "bus_uart0", "bus_uart1",
 | 
			
		||||
					     "bus_uart2", "bus_uart3",
 | 
			
		||||
					     "bus_uart4", "bus_dbg";
 | 
			
		||||
			ahb1_parent {
 | 
			
		||||
				clocks = <&ahb1>;
 | 
			
		||||
				clock-indices = <1>, <5>,
 | 
			
		||||
						<6>, <8>,
 | 
			
		||||
						<9>, <10>,
 | 
			
		||||
						<13>, <14>,
 | 
			
		||||
						<18>, <19>,
 | 
			
		||||
						<20>, <21>,
 | 
			
		||||
						<23>, <24>,
 | 
			
		||||
						<25>, <28>,
 | 
			
		||||
						<32>, <35>,
 | 
			
		||||
						<36>, <37>,
 | 
			
		||||
						<40>, <43>,
 | 
			
		||||
						<44>, <52>,
 | 
			
		||||
						<53>, <54>,
 | 
			
		||||
						<135>;
 | 
			
		||||
				clock-output-names = "bus_mipidsi", "bus_ce",
 | 
			
		||||
						"bus_dma", "bus_mmc0",
 | 
			
		||||
						"bus_mmc1", "bus_mmc2",
 | 
			
		||||
						"bus_nand", "bus_sdram",
 | 
			
		||||
						"bus_ts", "bus_hstimer",
 | 
			
		||||
						"bus_spi0", "bus_spi1",
 | 
			
		||||
						"bus_otg", "bus_otg_ehci0",
 | 
			
		||||
						"bus_ehci0", "bus_otg_ohci0",
 | 
			
		||||
						"bus_ve", "bus_lcd0",
 | 
			
		||||
						"bus_lcd1", "bus_deint",
 | 
			
		||||
						"bus_csi", "bus_hdmi",
 | 
			
		||||
						"bus_de", "bus_gpu",
 | 
			
		||||
						"bus_msgbox", "bus_spinlock",
 | 
			
		||||
						"bus_dbg";
 | 
			
		||||
			};
 | 
			
		||||
			ahb2_parent {
 | 
			
		||||
				clocks = <&ahb2>;
 | 
			
		||||
				clock-indices = <17>, <29>;
 | 
			
		||||
				clock-output-names = "bus_gmac", "bus_ohci0";
 | 
			
		||||
			};
 | 
			
		||||
			apb1_parent {
 | 
			
		||||
				clocks = <&apb1>;
 | 
			
		||||
				clock-indices = <64>, <65>,
 | 
			
		||||
						<69>, <72>,
 | 
			
		||||
						<76>, <77>,
 | 
			
		||||
						<78>;
 | 
			
		||||
				clock-output-names = "bus_codec", "bus_spdif",
 | 
			
		||||
						"bus_pio", "bus_ths",
 | 
			
		||||
						"bus_i2s0", "bus_i2s1",
 | 
			
		||||
						"bus_i2s2";
 | 
			
		||||
			};
 | 
			
		||||
			abp2_parent {
 | 
			
		||||
				clocks = <&apb2>;
 | 
			
		||||
				clock-indices = <96>, <97>,
 | 
			
		||||
						<98>, <101>,
 | 
			
		||||
						<112>, <113>,
 | 
			
		||||
						<114>, <115>,
 | 
			
		||||
						<116>;
 | 
			
		||||
				clock-output-names = "bus_i2c0", "bus_i2c1",
 | 
			
		||||
						"bus_i2c2", "bus_scr",
 | 
			
		||||
						"bus_uart0", "bus_uart1",
 | 
			
		||||
						"bus_uart2", "bus_uart3",
 | 
			
		||||
						"bus_uart4";
 | 
			
		||||
			};
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		mmc0_clk: clk@01c20088 {
 | 
			
		||||
			#clock-cells = <1>;
 | 
			
		||||
			compatible = "allwinner,sun4i-a10-mmc-clk";
 | 
			
		||||
		mmc0_clk: mmc0_clk@1c20088 {
 | 
			
		||||
			#clock-cells = <0>;
 | 
			
		||||
			compatible = "allwinner,sun4i-a10-mod0-clk";
 | 
			
		||||
			reg = <0x01c20088 0x4>;
 | 
			
		||||
			clocks = <&osc24M>, <&pll6 0>, <&pll8>;
 | 
			
		||||
			clock-output-names = "mmc0",
 | 
			
		||||
					     "mmc0_output",
 | 
			
		||||
					     "mmc0_sample";
 | 
			
		||||
		};
 | 
			
		||||
			clocks = <&osc24M>, <&pll6 1>, <&pll7 1>;
 | 
			
		||||
			clock-output-names = "mmc0";
 | 
			
		||||
                };
 | 
			
		||||
 | 
			
		||||
		mmc1_clk: clk@01c2008c {
 | 
			
		||||
			#clock-cells = <1>;
 | 
			
		||||
			compatible = "allwinner,sun4i-a10-mmc-clk";
 | 
			
		||||
		mmc1_clk: mmc1_clk@1c2008c {
 | 
			
		||||
			#clock-cells = <0>;
 | 
			
		||||
			compatible = "allwinner,sun4i-a10-mod0-clk";
 | 
			
		||||
			reg = <0x01c2008c 0x4>;
 | 
			
		||||
			clocks = <&osc24M>, <&pll6 0>, <&pll8>;
 | 
			
		||||
			clock-output-names = "mmc1",
 | 
			
		||||
					     "mmc1_output",
 | 
			
		||||
					     "mmc1_sample";
 | 
			
		||||
			clocks = <&osc24M>, <&pll6 1>, <&pll7 1>;
 | 
			
		||||
			clock-output-names = "mmc1";
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		mmc2_clk: clk@01c20090 {
 | 
			
		||||
			#clock-cells = <1>;
 | 
			
		||||
			compatible = "allwinner,sun4i-a10-mmc-clk";
 | 
			
		||||
		mmc2_clk: mmc2_clk@1c20090 {
 | 
			
		||||
			#clock-cells = <0>;
 | 
			
		||||
			compatible = "allwinner,sun4i-a10-mod0-clk";
 | 
			
		||||
			reg = <0x01c20090 0x4>;
 | 
			
		||||
			clocks = <&osc24M>, <&pll6 0>, <&pll8>;
 | 
			
		||||
			clock-output-names = "mmc2",
 | 
			
		||||
					     "mmc2_output",
 | 
			
		||||
					     "mmc2_sample";
 | 
			
		||||
		};
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	regulators {
 | 
			
		||||
		reg_vcc3v3: vcc3v3 {
 | 
			
		||||
			compatible = "regulator-fixed";
 | 
			
		||||
			regulator-name = "vcc3v3";
 | 
			
		||||
			regulator-min-microvolt = <3300000>;
 | 
			
		||||
			regulator-max-microvolt = <3300000>;
 | 
			
		||||
			clocks = <&osc24M>, <&pll6 1>, <&pll7 1>;
 | 
			
		||||
			clock-output-names = "mmc2";
 | 
			
		||||
		};
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -312,17 +318,14 @@
 | 
			
		|||
		#size-cells = <1>;
 | 
			
		||||
		ranges;
 | 
			
		||||
 | 
			
		||||
		mmc0: mmc@01c0f000 {
 | 
			
		||||
			compatible = "allwinner,sun5i-a13-mmc";
 | 
			
		||||
		mmc0: mmc@1c0f000 {
 | 
			
		||||
			compatible = "allwinner,sun50i-a64-mmc",
 | 
			
		||||
				     "allwinner,sun5i-a13-mmc";
 | 
			
		||||
			reg = <0x01c0f000 0x1000>;
 | 
			
		||||
			clocks = <&bus_gates 8>,
 | 
			
		||||
				 <&mmc0_clk 0>,
 | 
			
		||||
				 <&mmc0_clk 1>,
 | 
			
		||||
				 <&mmc0_clk 2>;
 | 
			
		||||
			clock-names = "ahb",
 | 
			
		||||
				      "mmc",
 | 
			
		||||
				      "output",
 | 
			
		||||
				      "sample";
 | 
			
		||||
			clocks = <&bus_gates 8>, <&mmc0_clk>,
 | 
			
		||||
				 <&mmc0_clk>, <&mmc0_clk>;
 | 
			
		||||
			clock-names = "ahb", "mmc",
 | 
			
		||||
				      "output", "sample";
 | 
			
		||||
			resets = <&ahb_rst 8>;
 | 
			
		||||
			reset-names = "ahb";
 | 
			
		||||
			interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>;
 | 
			
		||||
| 
						 | 
				
			
			@ -331,17 +334,14 @@
 | 
			
		|||
			#size-cells = <0>;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		mmc1: mmc@01c10000 {
 | 
			
		||||
			compatible = "allwinner,sun5i-a13-mmc";
 | 
			
		||||
		mmc1: mmc@1c10000 {
 | 
			
		||||
			compatible = "allwinner,sun50i-a64-mmc",
 | 
			
		||||
				     "allwinner,sun5i-a13-mmc";
 | 
			
		||||
			reg = <0x01c10000 0x1000>;
 | 
			
		||||
			clocks = <&bus_gates 9>,
 | 
			
		||||
				 <&mmc1_clk 0>,
 | 
			
		||||
				 <&mmc1_clk 1>,
 | 
			
		||||
				 <&mmc1_clk 2>;
 | 
			
		||||
			clock-names = "ahb",
 | 
			
		||||
				      "mmc",
 | 
			
		||||
				      "output",
 | 
			
		||||
				      "sample";
 | 
			
		||||
			clocks = <&bus_gates 9>, <&mmc1_clk>,
 | 
			
		||||
				 <&mmc1_clk>, <&mmc1_clk>;
 | 
			
		||||
			clock-names = "ahb", "mmc",
 | 
			
		||||
				      "output", "sample";
 | 
			
		||||
			resets = <&ahb_rst 9>;
 | 
			
		||||
			reset-names = "ahb";
 | 
			
		||||
			interrupts = <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>;
 | 
			
		||||
| 
						 | 
				
			
			@ -350,17 +350,14 @@
 | 
			
		|||
			#size-cells = <0>;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		mmc2: mmc@01c11000 {
 | 
			
		||||
			compatible = "allwinner,sun5i-a13-mmc";
 | 
			
		||||
		mmc2: mmc@1c11000 {
 | 
			
		||||
			compatible = "allwinner,sun50i-a64-mmc",
 | 
			
		||||
				     "allwinner,sun5i-a13-mmc";
 | 
			
		||||
			reg = <0x01c11000 0x1000>;
 | 
			
		||||
			clocks = <&bus_gates 10>,
 | 
			
		||||
				 <&mmc2_clk 0>,
 | 
			
		||||
				 <&mmc2_clk 1>,
 | 
			
		||||
				 <&mmc2_clk 2>;
 | 
			
		||||
			clock-names = "ahb",
 | 
			
		||||
				      "mmc",
 | 
			
		||||
				      "output",
 | 
			
		||||
				      "sample";
 | 
			
		||||
			clocks = <&bus_gates 10>, <&mmc2_clk>,
 | 
			
		||||
				 <&mmc2_clk>, <&mmc2_clk>;
 | 
			
		||||
			clock-names = "ahb", "mmc",
 | 
			
		||||
				      "output", "sample";
 | 
			
		||||
			resets = <&ahb_rst 10>;
 | 
			
		||||
			reset-names = "ahb";
 | 
			
		||||
			interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>;
 | 
			
		||||
| 
						 | 
				
			
			@ -369,8 +366,8 @@
 | 
			
		|||
			#size-cells = <0>;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		pio: pinctrl@01c20800 {
 | 
			
		||||
			compatible = "allwinner,a64-pinctrl";
 | 
			
		||||
		pio: pinctrl@1c20800 {
 | 
			
		||||
			compatible = "allwinner,sun50i-a64-pinctrl";
 | 
			
		||||
			reg = <0x01c20800 0x400>;
 | 
			
		||||
			interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>,
 | 
			
		||||
				     <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>,
 | 
			
		||||
| 
						 | 
				
			
			@ -395,14 +392,28 @@
 | 
			
		|||
				allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
 | 
			
		||||
			};
 | 
			
		||||
 | 
			
		||||
			uart1_pins: uart1@0 {
 | 
			
		||||
			uart1_2pins: uart1_2@0 {
 | 
			
		||||
				allwinner,pins = "PG6", "PG7";
 | 
			
		||||
				allwinner,function = "uart1";
 | 
			
		||||
				allwinner,drive = <SUN4I_PINCTRL_10_MA>;
 | 
			
		||||
				allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
 | 
			
		||||
			};
 | 
			
		||||
 | 
			
		||||
			uart1_4pins: uart1_4@0 {
 | 
			
		||||
				allwinner,pins = "PG6", "PG7", "PG8", "PG9";
 | 
			
		||||
				allwinner,function = "uart1";
 | 
			
		||||
				allwinner,drive = <SUN4I_PINCTRL_10_MA>;
 | 
			
		||||
				allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
 | 
			
		||||
			};
 | 
			
		||||
 | 
			
		||||
			uart2_pins: uart2@0 {
 | 
			
		||||
			uart2_2pins: uart2_2@0 {
 | 
			
		||||
				allwinner,pins = "PB0", "PB1";
 | 
			
		||||
				allwinner,function = "uart2";
 | 
			
		||||
				allwinner,drive = <SUN4I_PINCTRL_10_MA>;
 | 
			
		||||
				allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
 | 
			
		||||
			};
 | 
			
		||||
 | 
			
		||||
			uart2_4pins: uart2_4@0 {
 | 
			
		||||
				allwinner,pins = "PB0", "PB1", "PB2", "PB3";
 | 
			
		||||
				allwinner,function = "uart2";
 | 
			
		||||
				allwinner,drive = <SUN4I_PINCTRL_10_MA>;
 | 
			
		||||
| 
						 | 
				
			
			@ -416,14 +427,28 @@
 | 
			
		|||
				allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
 | 
			
		||||
			};
 | 
			
		||||
 | 
			
		||||
			uart3_pins_b: uart3@1 {
 | 
			
		||||
			uart3_2pins_b: uart3_2@1 {
 | 
			
		||||
				allwinner,pins = "PH4", "PH5";
 | 
			
		||||
				allwinner,function = "uart3";
 | 
			
		||||
				allwinner,drive = <SUN4I_PINCTRL_10_MA>;
 | 
			
		||||
				allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
 | 
			
		||||
			};
 | 
			
		||||
 | 
			
		||||
			uart3_4pins_b: uart3_4@1 {
 | 
			
		||||
				allwinner,pins = "PH4", "PH5", "PH6", "PH7";
 | 
			
		||||
				allwinner,function = "uart3";
 | 
			
		||||
				allwinner,drive = <SUN4I_PINCTRL_10_MA>;
 | 
			
		||||
				allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
 | 
			
		||||
			};
 | 
			
		||||
 | 
			
		||||
			uart4_pins: uart4@0 {
 | 
			
		||||
			uart4_2pins: uart4_2@0 {
 | 
			
		||||
				allwinner,pins = "PD2", "PD3";
 | 
			
		||||
				allwinner,function = "uart4";
 | 
			
		||||
				allwinner,drive = <SUN4I_PINCTRL_10_MA>;
 | 
			
		||||
				allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
 | 
			
		||||
			};
 | 
			
		||||
 | 
			
		||||
			uart4_4pins: uart4_4@0 {
 | 
			
		||||
				allwinner,pins = "PD2", "PD3", "PD4", "PD5";
 | 
			
		||||
				allwinner,function = "uart4";
 | 
			
		||||
				allwinner,drive = <SUN4I_PINCTRL_10_MA>;
 | 
			
		||||
| 
						 | 
				
			
			@ -460,27 +485,48 @@
 | 
			
		|||
				allwinner,drive = <SUN4I_PINCTRL_30_MA>;
 | 
			
		||||
				allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
 | 
			
		||||
			};
 | 
			
		||||
 | 
			
		||||
			i2c0_pins: i2c0_pins {
 | 
			
		||||
				allwinner,pins = "PH0", "PH1";
 | 
			
		||||
				allwinner,function = "i2c0";
 | 
			
		||||
				allwinner,drive = <SUN4I_PINCTRL_10_MA>;
 | 
			
		||||
				allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
 | 
			
		||||
			};
 | 
			
		||||
 | 
			
		||||
			i2c1_pins: i2c1_pins {
 | 
			
		||||
				allwinner,pins = "PH2", "PH3";
 | 
			
		||||
				allwinner,function = "i2c1";
 | 
			
		||||
				allwinner,drive = <SUN4I_PINCTRL_10_MA>;
 | 
			
		||||
				allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
 | 
			
		||||
			};
 | 
			
		||||
 | 
			
		||||
			i2c2_pins: i2c2_pins {
 | 
			
		||||
				allwinner,pins = "PE14", "PE15";
 | 
			
		||||
				allwinner,function = "i2c2";
 | 
			
		||||
				allwinner,drive = <SUN4I_PINCTRL_10_MA>;
 | 
			
		||||
				allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
 | 
			
		||||
			};
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		ahb_rst: reset@01c202c0 {
 | 
			
		||||
		ahb_rst: reset@1c202c0 {
 | 
			
		||||
			#reset-cells = <1>;
 | 
			
		||||
			compatible = "allwinner,sun6i-a31-ahb1-reset";
 | 
			
		||||
			compatible = "allwinner,sun6i-a31-clock-reset";
 | 
			
		||||
			reg = <0x01c202c0 0xc>;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		apb1_rst: reset@01c202d0 {
 | 
			
		||||
		apb1_rst: reset@1c202d0 {
 | 
			
		||||
			#reset-cells = <1>;
 | 
			
		||||
			compatible = "allwinner,sun6i-a31-clock-reset";
 | 
			
		||||
			reg = <0x01c202d0 0x4>;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		apb2_rst: reset@01c202d8 {
 | 
			
		||||
		apb2_rst: reset@1c202d8 {
 | 
			
		||||
			#reset-cells = <1>;
 | 
			
		||||
			compatible = "allwinner,sun6i-a31-clock-reset";
 | 
			
		||||
			reg = <0x01c202d8 0x4>;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		uart0: serial@01c28000 {
 | 
			
		||||
		uart0: serial@1c28000 {
 | 
			
		||||
			compatible = "snps,dw-apb-uart";
 | 
			
		||||
			reg = <0x01c28000 0x400>;
 | 
			
		||||
			interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>;
 | 
			
		||||
| 
						 | 
				
			
			@ -488,11 +534,10 @@
 | 
			
		|||
			reg-io-width = <4>;
 | 
			
		||||
			clocks = <&bus_gates 112>;
 | 
			
		||||
			resets = <&apb2_rst 16>;
 | 
			
		||||
			reset-names = "apb2";
 | 
			
		||||
			status = "disabled";
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		uart1: serial@01c28400 {
 | 
			
		||||
		uart1: serial@1c28400 {
 | 
			
		||||
			compatible = "snps,dw-apb-uart";
 | 
			
		||||
			reg = <0x01c28400 0x400>;
 | 
			
		||||
			interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
 | 
			
		||||
| 
						 | 
				
			
			@ -500,11 +545,10 @@
 | 
			
		|||
			reg-io-width = <4>;
 | 
			
		||||
			clocks = <&bus_gates 113>;
 | 
			
		||||
			resets = <&apb2_rst 17>;
 | 
			
		||||
			reset-names = "apb2";
 | 
			
		||||
			status = "disabled";
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		uart2: serial@01c28800 {
 | 
			
		||||
		uart2: serial@1c28800 {
 | 
			
		||||
			compatible = "snps,dw-apb-uart";
 | 
			
		||||
			reg = <0x01c28800 0x400>;
 | 
			
		||||
			interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
 | 
			
		||||
| 
						 | 
				
			
			@ -512,11 +556,10 @@
 | 
			
		|||
			reg-io-width = <4>;
 | 
			
		||||
			clocks = <&bus_gates 114>;
 | 
			
		||||
			resets = <&apb2_rst 18>;
 | 
			
		||||
			reset-names = "apb2";
 | 
			
		||||
			status = "disabled";
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		uart3: serial@01c28c00 {
 | 
			
		||||
		uart3: serial@1c28c00 {
 | 
			
		||||
			compatible = "snps,dw-apb-uart";
 | 
			
		||||
			reg = <0x01c28c00 0x400>;
 | 
			
		||||
			interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
 | 
			
		||||
| 
						 | 
				
			
			@ -524,11 +567,10 @@
 | 
			
		|||
			reg-io-width = <4>;
 | 
			
		||||
			clocks = <&bus_gates 115>;
 | 
			
		||||
			resets = <&apb2_rst 19>;
 | 
			
		||||
			reset-names = "apb2";
 | 
			
		||||
			status = "disabled";
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		uart4: serial@01c29000 {
 | 
			
		||||
		uart4: serial@1c29000 {
 | 
			
		||||
			compatible = "snps,dw-apb-uart";
 | 
			
		||||
			reg = <0x01c29000 0x400>;
 | 
			
		||||
			interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
 | 
			
		||||
| 
						 | 
				
			
			@ -536,29 +578,47 @@
 | 
			
		|||
			reg-io-width = <4>;
 | 
			
		||||
			clocks = <&bus_gates 116>;
 | 
			
		||||
			resets = <&apb2_rst 20>;
 | 
			
		||||
			reset-names = "apb2";
 | 
			
		||||
			status = "disabled";
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		rtc: rtc@01f00000 {
 | 
			
		||||
		rtc: rtc@1f00000 {
 | 
			
		||||
			compatible = "allwinner,sun6i-a31-rtc";
 | 
			
		||||
			reg = <0x01f00000 0x54>;
 | 
			
		||||
			interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>,
 | 
			
		||||
				     <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
 | 
			
		||||
		};
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	gic: interrupt-controller@{
 | 
			
		||||
		compatible = "arm,gic-400";
 | 
			
		||||
		interrupt-controller;
 | 
			
		||||
		#interrupt-cells = <3>;
 | 
			
		||||
		#address-cells = <0>;
 | 
			
		||||
		i2c0: i2c@1c2ac00 {
 | 
			
		||||
			compatible = "allwinner,sun6i-a31-i2c";
 | 
			
		||||
			reg = <0x01c2ac00 0x400>;
 | 
			
		||||
			interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
 | 
			
		||||
			clocks = <&bus_gates 96>;
 | 
			
		||||
			resets = <&apb2_rst 0>;
 | 
			
		||||
			status = "disabled";
 | 
			
		||||
			#address-cells = <1>;
 | 
			
		||||
			#size-cells = <0>;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		reg = <0x01C81000 0x1000>,
 | 
			
		||||
		      <0x01C82000 0x2000>,
 | 
			
		||||
		      <0x01C84000 0x2000>,
 | 
			
		||||
		      <0x01C86000 0x2000>;
 | 
			
		||||
		interrupts = <GIC_PPI 9
 | 
			
		||||
		      (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
 | 
			
		||||
		i2c1: i2c@1c2b000 {
 | 
			
		||||
			compatible = "allwinner,sun6i-a31-i2c";
 | 
			
		||||
			reg = <0x01c2b000 0x400>;
 | 
			
		||||
			interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
 | 
			
		||||
			clocks = <&bus_gates 97>;
 | 
			
		||||
			resets = <&apb2_rst 1>;
 | 
			
		||||
			status = "disabled";
 | 
			
		||||
			#address-cells = <1>;
 | 
			
		||||
			#size-cells = <0>;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		i2c2: i2c@1c2b400 {
 | 
			
		||||
			compatible = "allwinner,sun6i-a31-i2c";
 | 
			
		||||
			reg = <0x01c2b400 0x400>;
 | 
			
		||||
			interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
 | 
			
		||||
			clocks = <&bus_gates 98>;
 | 
			
		||||
			resets = <&apb2_rst 2>;
 | 
			
		||||
			status = "disabled";
 | 
			
		||||
			#address-cells = <1>;
 | 
			
		||||
			#size-cells = <0>;
 | 
			
		||||
		};
 | 
			
		||||
	};
 | 
			
		||||
};
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,25 @@
 | 
			
		|||
/dts-v1/;
 | 
			
		||||
 | 
			
		||||
#include "tegra186.dtsi"
 | 
			
		||||
 | 
			
		||||
/ {
 | 
			
		||||
	model = "NVIDIA P2771-0000";
 | 
			
		||||
	compatible = "nvidia,p2771-0000", "nvidia,tegra186";
 | 
			
		||||
 | 
			
		||||
	chosen {
 | 
			
		||||
		stdout-path = &uarta;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	aliases {
 | 
			
		||||
		sdhci0 = "/sdhci@3460000";
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	memory {
 | 
			
		||||
		reg = <0x0 0x80000000 0x0 0x60000000>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	sdhci@3460000 {
 | 
			
		||||
		status = "okay";
 | 
			
		||||
		bus-width = <8>;
 | 
			
		||||
	};
 | 
			
		||||
};
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,56 @@
 | 
			
		|||
#include "skeleton.dtsi"
 | 
			
		||||
#include <dt-bindings/gpio/tegra-gpio.h>
 | 
			
		||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
 | 
			
		||||
 | 
			
		||||
/ {
 | 
			
		||||
	compatible = "nvidia,tegra186";
 | 
			
		||||
	#address-cells = <2>;
 | 
			
		||||
	#size-cells = <2>;
 | 
			
		||||
 | 
			
		||||
	gpio@2200000 {
 | 
			
		||||
		compatible = "nvidia,tegra186-gpio";
 | 
			
		||||
		reg-names = "security", "gpio";
 | 
			
		||||
		reg =
 | 
			
		||||
			<0x0 0x2200000 0x0 0x10000>,
 | 
			
		||||
			<0x0 0x2210000 0x0 0x10000>;
 | 
			
		||||
		interrupts =
 | 
			
		||||
			<GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>,
 | 
			
		||||
			<GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>,
 | 
			
		||||
			<GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>,
 | 
			
		||||
			<GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>,
 | 
			
		||||
			<GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH>,
 | 
			
		||||
			<GIC_SPI 180 IRQ_TYPE_LEVEL_HIGH>;
 | 
			
		||||
		gpio-controller;
 | 
			
		||||
		#gpio-cells = <2>;
 | 
			
		||||
		interrupt-controller;
 | 
			
		||||
		#interrupt-cells = <2>;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	uarta: serial@3100000 {
 | 
			
		||||
		compatible = "nvidia,tegra186-uart", "nvidia,tegra20-uart";
 | 
			
		||||
		reg = <0x0 0x03100000 0x0 0x10000>;
 | 
			
		||||
		reg-shift = <2>;
 | 
			
		||||
		status = "disabled";
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	sdhci@3460000 {
 | 
			
		||||
		compatible = "nvidia,tegra186-sdhci";
 | 
			
		||||
		reg = <0x0 0x03460000 0x0 0x200>;
 | 
			
		||||
		interrupts = <GIC_SPI 31 0x04>;
 | 
			
		||||
		status = "disabled";
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	gpio@c2f0000 {
 | 
			
		||||
		compatible = "nvidia,tegra186-gpio-aon";
 | 
			
		||||
		reg-names = "security", "gpio";
 | 
			
		||||
		reg =
 | 
			
		||||
			<0x0 0xc2f0000 0x0 0x1000>,
 | 
			
		||||
			<0x0 0xc2f1000 0x0 0x1000>;
 | 
			
		||||
		interrupts =
 | 
			
		||||
			<GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>;
 | 
			
		||||
		gpio-controller;
 | 
			
		||||
		#gpio-cells = <2>;
 | 
			
		||||
		interrupt-controller;
 | 
			
		||||
		#interrupt-cells = <2>;
 | 
			
		||||
	};
 | 
			
		||||
};
 | 
			
		||||
| 
						 | 
				
			
			@ -49,6 +49,18 @@
 | 
			
		|||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&usb0 {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&usb1 {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&usb2 {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* for U-Boot only */
 | 
			
		||||
/ {
 | 
			
		||||
	soc {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -190,6 +190,42 @@
 | 
			
		|||
			reg = <0x59801000 0x400>;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		usb0: usb@5a800100 {
 | 
			
		||||
			compatible = "socionext,uniphier-ehci", "generic-ehci";
 | 
			
		||||
			status = "disabled";
 | 
			
		||||
			reg = <0x5a800100 0x100>;
 | 
			
		||||
			interrupts = <0 243 4>;
 | 
			
		||||
			pinctrl-names = "default";
 | 
			
		||||
			pinctrl-0 = <&pinctrl_usb0>;
 | 
			
		||||
			clocks = <&mio 3>, <&mio 6>;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		usb1: usb@5a810100 {
 | 
			
		||||
			compatible = "socionext,uniphier-ehci", "generic-ehci";
 | 
			
		||||
			status = "disabled";
 | 
			
		||||
			reg = <0x5a810100 0x100>;
 | 
			
		||||
			interrupts = <0 244 4>;
 | 
			
		||||
			pinctrl-names = "default";
 | 
			
		||||
			pinctrl-0 = <&pinctrl_usb1>;
 | 
			
		||||
			clocks = <&mio 4>, <&mio 6>;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		usb2: usb@5a820100 {
 | 
			
		||||
			compatible = "socionext,uniphier-ehci", "generic-ehci";
 | 
			
		||||
			status = "disabled";
 | 
			
		||||
			reg = <0x5a820100 0x100>;
 | 
			
		||||
			interrupts = <0 245 4>;
 | 
			
		||||
			pinctrl-names = "default";
 | 
			
		||||
			pinctrl-0 = <&pinctrl_usb2>;
 | 
			
		||||
			clocks = <&mio 5>, <&mio 6>;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		mio: mioctrl@5b3e0000 {
 | 
			
		||||
			compatible = "socionext,ph1-ld11-mioctrl";
 | 
			
		||||
			reg = <0x5b3e0000 0x800>;
 | 
			
		||||
			#clock-cells = <1>;
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		pinctrl: pinctrl@5f801000 {
 | 
			
		||||
			compatible = "socionext,ph1-ld11-pinctrl", "syscon";
 | 
			
		||||
			reg = <0x5f801000 0xe00>;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -251,7 +251,7 @@
 | 
			
		|||
		slcr: slcr@f8000000 {
 | 
			
		||||
			#address-cells = <1>;
 | 
			
		||||
			#size-cells = <1>;
 | 
			
		||||
			compatible = "xlnx,zynq-slcr", "syscon", "simple-bus";
 | 
			
		||||
			compatible = "xlnx,zynq-slcr", "syscon", "simple-mfd";
 | 
			
		||||
			reg = <0xF8000000 0x1000>;
 | 
			
		||||
			ranges;
 | 
			
		||||
			clkc: clkc@100 {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,212 @@
 | 
			
		|||
/*
 | 
			
		||||
 * dts file for Xilinx ZynqMP zc1751-xm018-dc4
 | 
			
		||||
 *
 | 
			
		||||
 * (C) Copyright 2015 - 2016, Xilinx, Inc.
 | 
			
		||||
 *
 | 
			
		||||
 * Michal Simek <michal.simek@xilinx.com>
 | 
			
		||||
 *
 | 
			
		||||
 * This program is free software; you can redistribute it and/or
 | 
			
		||||
 * modify it under the terms of the GNU General Public License as
 | 
			
		||||
 * published by the Free Software Foundation; either version 2 of
 | 
			
		||||
 * the License, or (at your option) any later version.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/dts-v1/;
 | 
			
		||||
 | 
			
		||||
#include "zynqmp.dtsi"
 | 
			
		||||
#include "zynqmp-clk.dtsi"
 | 
			
		||||
 | 
			
		||||
/ {
 | 
			
		||||
	model = "ZynqMP zc1751-xm018-dc4";
 | 
			
		||||
	compatible = "xlnx,zynqmp-zc1751", "xlnx,zynqmp";
 | 
			
		||||
 | 
			
		||||
	aliases {
 | 
			
		||||
		can0 = &can0;
 | 
			
		||||
		can1 = &can1;
 | 
			
		||||
		ethernet0 = &gem0;
 | 
			
		||||
		ethernet1 = &gem1;
 | 
			
		||||
		ethernet2 = &gem2;
 | 
			
		||||
		ethernet3 = &gem3;
 | 
			
		||||
		gpio0 = &gpio;
 | 
			
		||||
		i2c0 = &i2c0;
 | 
			
		||||
		i2c1 = &i2c1;
 | 
			
		||||
		rtc0 = &rtc;
 | 
			
		||||
		serial0 = &uart0;
 | 
			
		||||
		serial1 = &uart1;
 | 
			
		||||
		spi0 = &qspi;
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	chosen {
 | 
			
		||||
		bootargs = "earlycon";
 | 
			
		||||
		stdout-path = "serial0:115200n8";
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	memory {
 | 
			
		||||
		device_type = "memory";
 | 
			
		||||
		reg = <0x0 0x0 0x0 0x80000000>, <0x8 0x00000000 0x0 0x80000000>;
 | 
			
		||||
	};
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&can0 {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&can1 {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* fpd_dma clk 667MHz, lpd_dma 500MHz */
 | 
			
		||||
&fpd_dma_chan1 {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
	xlnx,include-sg; /* for testing purpose */
 | 
			
		||||
	xlnx,overfetch; /* for testing purpose */
 | 
			
		||||
	xlnx,ratectrl = <0>; /* for testing purpose */
 | 
			
		||||
	xlnx,src-issue = <31>;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&fpd_dma_chan2 {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
	xlnx,ratectrl = <100>; /* for testing purpose */
 | 
			
		||||
	xlnx,src-issue = <4>; /* for testing purpose */
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&fpd_dma_chan3 {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&fpd_dma_chan4 {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
	xlnx,include-sg; /* for testing purpose */
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&fpd_dma_chan5 {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&fpd_dma_chan6 {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
	xlnx,include-sg; /* for testing purpose */
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&fpd_dma_chan7 {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&fpd_dma_chan8 {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
	xlnx,include-sg; /* for testing purpose */
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&lpd_dma_chan1 {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&lpd_dma_chan2 {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&lpd_dma_chan3 {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&lpd_dma_chan4 {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&lpd_dma_chan5 {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&lpd_dma_chan6 {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&lpd_dma_chan7 {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&lpd_dma_chan8 {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&xlnx_dp {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&xlnx_dpdma {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&gem0 {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
	local-mac-address = [00 0a 35 00 02 90];
 | 
			
		||||
	phy-mode = "rgmii-id";
 | 
			
		||||
	phy-handle = <ðernet_phy0>;
 | 
			
		||||
	ethernet_phy0: ethernet-phy@0 { /* Marvell 88e1512 */
 | 
			
		||||
		reg = <0>;
 | 
			
		||||
	};
 | 
			
		||||
	ethernet_phy7: ethernet-phy@7 { /* Vitesse VSC8211 */
 | 
			
		||||
		reg = <7>;
 | 
			
		||||
	};
 | 
			
		||||
	ethernet_phy3: ethernet-phy@3 { /* Realtek RTL8211DN */
 | 
			
		||||
		reg = <3>;
 | 
			
		||||
	};
 | 
			
		||||
	ethernet_phy8: ethernet-phy@8 { /* Vitesse VSC8211 */
 | 
			
		||||
		reg = <8>;
 | 
			
		||||
	};
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&gem1 {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
	local-mac-address = [00 0a 35 00 02 91];
 | 
			
		||||
	phy-mode = "rgmii-id";
 | 
			
		||||
	phy-handle = <ðernet_phy7>;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&gem2 {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
	local-mac-address = [00 0a 35 00 02 92];
 | 
			
		||||
	phy-mode = "rgmii-id";
 | 
			
		||||
	phy-handle = <ðernet_phy3>;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&gem3 {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
	local-mac-address = [00 0a 35 00 02 93];
 | 
			
		||||
	phy-mode = "rgmii-id";
 | 
			
		||||
	phy-handle = <ðernet_phy8>;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&gpio {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&gpu {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&i2c0 {
 | 
			
		||||
	clock-frequency = <400000>;
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&i2c1 {
 | 
			
		||||
	clock-frequency = <400000>;
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&rtc {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&uart0 {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&uart1 {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
&watchdog0 {
 | 
			
		||||
	status = "okay";
 | 
			
		||||
};
 | 
			
		||||
| 
						 | 
				
			
			@ -253,9 +253,9 @@
 | 
			
		|||
			compatible = "arm,gic-400", "arm,cortex-a15-gic";
 | 
			
		||||
			#interrupt-cells = <3>;
 | 
			
		||||
			reg = <0x0 0xf9010000 0x10000>,
 | 
			
		||||
			      <0x0 0xf902f000 0x2000>,
 | 
			
		||||
			      <0x0 0xf9020000 0x20000>,
 | 
			
		||||
			      <0x0 0xf9040000 0x20000>,
 | 
			
		||||
			      <0x0 0xf906f000 0x2000>;
 | 
			
		||||
			      <0x0 0xf9060000 0x20000>;
 | 
			
		||||
			interrupt-controller;
 | 
			
		||||
			interrupt-parent = <&gic>;
 | 
			
		||||
			interrupts = <1 9 0xf04>;
 | 
			
		||||
| 
						 | 
				
			
			@ -264,6 +264,7 @@
 | 
			
		|||
 | 
			
		||||
	amba: amba {
 | 
			
		||||
		compatible = "simple-bus";
 | 
			
		||||
		u-boot,dm-pre-reloc;
 | 
			
		||||
		#address-cells = <2>;
 | 
			
		||||
		#size-cells = <1>;
 | 
			
		||||
		ranges = <0 0 0 0 0xffffffff>;
 | 
			
		||||
| 
						 | 
				
			
			@ -674,6 +675,7 @@
 | 
			
		|||
		};
 | 
			
		||||
 | 
			
		||||
		sdhci0: sdhci@ff160000 {
 | 
			
		||||
			u-boot,dm-pre-reloc;
 | 
			
		||||
			compatible = "arasan,sdhci-8.9a";
 | 
			
		||||
			status = "disabled";
 | 
			
		||||
			interrupt-parent = <&gic>;
 | 
			
		||||
| 
						 | 
				
			
			@ -685,6 +687,7 @@
 | 
			
		|||
		};
 | 
			
		||||
 | 
			
		||||
		sdhci1: sdhci@ff170000 {
 | 
			
		||||
			u-boot,dm-pre-reloc;
 | 
			
		||||
			compatible = "arasan,sdhci-8.9a";
 | 
			
		||||
			status = "disabled";
 | 
			
		||||
			interrupt-parent = <&gic>;
 | 
			
		||||
| 
						 | 
				
			
			@ -776,6 +779,7 @@
 | 
			
		|||
		};
 | 
			
		||||
 | 
			
		||||
		uart0: serial@ff000000 {
 | 
			
		||||
			u-boot,dm-pre-reloc;
 | 
			
		||||
			compatible = "cdns,uart-r1p12", "xlnx,xuartps";
 | 
			
		||||
			status = "disabled";
 | 
			
		||||
			interrupt-parent = <&gic>;
 | 
			
		||||
| 
						 | 
				
			
			@ -786,6 +790,7 @@
 | 
			
		|||
		};
 | 
			
		||||
 | 
			
		||||
		uart1: serial@ff010000 {
 | 
			
		||||
			u-boot,dm-pre-reloc;
 | 
			
		||||
			compatible = "cdns,uart-r1p12", "xlnx,xuartps";
 | 
			
		||||
			status = "disabled";
 | 
			
		||||
			interrupt-parent = <&gic>;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,43 @@
 | 
			
		|||
/*
 | 
			
		||||
 * clk-synthesizer.h
 | 
			
		||||
 *
 | 
			
		||||
 * Clock synthesizer header
 | 
			
		||||
 *
 | 
			
		||||
 * Copyright (C) 2016, Texas Instruments, Incorporated - http://www.ti.com/
 | 
			
		||||
 *
 | 
			
		||||
 * SPDX-License-Identifier:	GPL-2.0+
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef __CLK_SYNTHESIZER_H
 | 
			
		||||
#define __CLK_SYNTHESIZER_H
 | 
			
		||||
 | 
			
		||||
#include <common.h>
 | 
			
		||||
 | 
			
		||||
#define CLK_SYNTHESIZER_ID_REG		0x0
 | 
			
		||||
#define CLK_SYNTHESIZER_XCSEL		0x05
 | 
			
		||||
#define CLK_SYNTHESIZER_MUX_REG		0x14
 | 
			
		||||
#define CLK_SYNTHESIZER_PDIV2_REG	0x16
 | 
			
		||||
#define CLK_SYNTHESIZER_PDIV3_REG	0x17
 | 
			
		||||
 | 
			
		||||
#define CLK_SYNTHESIZER_BYTE_MODE	0x80
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * struct clk_synth: This structure holds data neeed for configuring
 | 
			
		||||
 *		     for clock synthesizer.
 | 
			
		||||
 * @id: The id of synthesizer
 | 
			
		||||
 * @capacitor: value of the capacitor attached
 | 
			
		||||
 * @mux: mux settings.
 | 
			
		||||
 * @pdiv2: Div to be applied to second output
 | 
			
		||||
 * @pdiv3: Div to be applied to third output
 | 
			
		||||
 */
 | 
			
		||||
struct clk_synth {
 | 
			
		||||
	u32 id;
 | 
			
		||||
	u32 capacitor;
 | 
			
		||||
	u32 mux;
 | 
			
		||||
	u32 pdiv2;
 | 
			
		||||
	u32 pdiv3;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
int setup_clock_synthesizer(struct clk_synth *data);
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			@ -44,6 +44,9 @@
 | 
			
		|||
/* CM_CLKMODE_DPLL */
 | 
			
		||||
#define CM_CLKMODE_DPLL_SSC_EN_SHIFT		12
 | 
			
		||||
#define CM_CLKMODE_DPLL_SSC_EN_MASK		(1 << 12)
 | 
			
		||||
#define CM_CLKMODE_DPLL_SSC_ACK_MASK		(1 << 13)
 | 
			
		||||
#define CM_CLKMODE_DPLL_SSC_DOWNSPREAD_MASK	(1 << 14)
 | 
			
		||||
#define CM_CLKMODE_DPLL_SSC_TYPE_MASK		(1 << 15)
 | 
			
		||||
#define CM_CLKMODE_DPLL_REGM4XEN_SHIFT		11
 | 
			
		||||
#define CM_CLKMODE_DPLL_REGM4XEN_MASK		(1 << 11)
 | 
			
		||||
#define CM_CLKMODE_DPLL_LPMODE_EN_SHIFT		10
 | 
			
		||||
| 
						 | 
				
			
			@ -114,4 +117,5 @@ void enable_basic_clocks(void);
 | 
			
		|||
void do_enable_clocks(u32 *const *, u32 *const *, u8);
 | 
			
		||||
void do_disable_clocks(u32 *const *, u32 *const *, u8);
 | 
			
		||||
 | 
			
		||||
void set_mpu_spreadspectrum(int permille);
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -99,7 +99,8 @@ struct cm_wkuppll {
 | 
			
		|||
	unsigned int timer0clkctrl;	/* offset 0x10 */
 | 
			
		||||
	unsigned int resv2[3];
 | 
			
		||||
	unsigned int idlestdpllmpu;	/* offset 0x20 */
 | 
			
		||||
	unsigned int resv3[2];
 | 
			
		||||
	unsigned int sscdeltamstepdllmpu; /* off  0x24 */
 | 
			
		||||
	unsigned int sscmodfreqdivdpllmpu; /* off 0x28 */
 | 
			
		||||
	unsigned int clkseldpllmpu;	/* offset 0x2c */
 | 
			
		||||
	unsigned int resv4[1];
 | 
			
		||||
	unsigned int idlestdpllddr;	/* offset 0x34 */
 | 
			
		||||
| 
						 | 
				
			
			@ -497,6 +498,8 @@ struct ctrl_stat {
 | 
			
		|||
#define OMAP_GPIO_SYSSTATUS		0x0114
 | 
			
		||||
#define OMAP_GPIO_IRQSTATUS1		0x002c
 | 
			
		||||
#define OMAP_GPIO_IRQSTATUS2		0x0030
 | 
			
		||||
#define OMAP_GPIO_IRQSTATUS_SET_0	0x0034
 | 
			
		||||
#define OMAP_GPIO_IRQSTATUS_SET_1	0x0038
 | 
			
		||||
#define OMAP_GPIO_CTRL			0x0130
 | 
			
		||||
#define OMAP_GPIO_OE			0x0134
 | 
			
		||||
#define OMAP_GPIO_DATAIN		0x0138
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -54,6 +54,21 @@
 | 
			
		|||
#define MT41J128MJT125_PHY_FIFO_WE		0x100
 | 
			
		||||
#define MT41J128MJT125_IOCTRL_VALUE		0x18B
 | 
			
		||||
 | 
			
		||||
/* Micron MT41J128M16JT-125 at 400MHz*/
 | 
			
		||||
#define MT41J128MJT125_EMIF_READ_LATENCY_400MHz	0x100007
 | 
			
		||||
#define MT41J128MJT125_EMIF_TIM1_400MHz		0x0AAAD4DB
 | 
			
		||||
#define MT41J128MJT125_EMIF_TIM2_400MHz		0x26437FDA
 | 
			
		||||
#define MT41J128MJT125_EMIF_TIM3_400MHz		0x501F83FF
 | 
			
		||||
#define MT41J128MJT125_EMIF_SDCFG_400MHz	0x61C052B2
 | 
			
		||||
#define MT41J128MJT125_EMIF_SDREF_400MHz	0x00000C30
 | 
			
		||||
#define MT41J128MJT125_ZQ_CFG_400MHz		0x50074BE4
 | 
			
		||||
#define MT41J128MJT125_RATIO_400MHz		0x80
 | 
			
		||||
#define MT41J128MJT125_INVERT_CLKOUT_400MHz	0x0
 | 
			
		||||
#define MT41J128MJT125_RD_DQS_400MHz		0x3A
 | 
			
		||||
#define MT41J128MJT125_WR_DQS_400MHz		0x3B
 | 
			
		||||
#define MT41J128MJT125_PHY_WR_DATA_400MHz	0x76
 | 
			
		||||
#define MT41J128MJT125_PHY_FIFO_WE_400MHz	0x96
 | 
			
		||||
 | 
			
		||||
/* Micron MT41K128M16JT-187E */
 | 
			
		||||
#define MT41K128MJT187E_EMIF_READ_LATENCY	0x06
 | 
			
		||||
#define MT41K128MJT187E_EMIF_TIM1		0x0888B3DB
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,15 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Copyright 2016 Broadcom Corporation.
 | 
			
		||||
 *
 | 
			
		||||
 * SPDX-License-Identifier:	GPL-2.0+
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef __BOOT0_H
 | 
			
		||||
#define __BOOT0_H
 | 
			
		||||
 | 
			
		||||
/* BOOT0 header information */
 | 
			
		||||
#define ARM_SOC_BOOT0_HOOK	\
 | 
			
		||||
	.word	0xbabeface;	\
 | 
			
		||||
	.word	_end - _start
 | 
			
		||||
 | 
			
		||||
#endif /* __BOOT0_H */
 | 
			
		||||
| 
						 | 
				
			
			@ -14,8 +14,11 @@
 | 
			
		|||
#else
 | 
			
		||||
#define CONFIG_SYS_FSL_DDRC_ARM_GEN3	/* Enable Freescale ARM DDR3 driver */
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef CONFIG_LS1012A
 | 
			
		||||
#define CONFIG_SYS_FSL_DDR		/* Freescale DDR driver */
 | 
			
		||||
#define CONFIG_SYS_FSL_DDR_VER		FSL_DDR_VER_5_0
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Reserve secure memory
 | 
			
		||||
| 
						 | 
				
			
			@ -134,8 +137,10 @@
 | 
			
		|||
#define CONFIG_SYS_FSL_ERRATUM_A008751
 | 
			
		||||
#define CONFIG_SYS_FSL_ERRATUM_A009635
 | 
			
		||||
#define CONFIG_SYS_FSL_ERRATUM_A009663
 | 
			
		||||
#define CONFIG_SYS_FSL_ERRATUM_A009801
 | 
			
		||||
#define CONFIG_SYS_FSL_ERRATUM_A009803
 | 
			
		||||
#define CONFIG_SYS_FSL_ERRATUM_A009942
 | 
			
		||||
#define CONFIG_SYS_FSL_ERRATUM_A010165
 | 
			
		||||
 | 
			
		||||
/* ARM A57 CORE ERRATA */
 | 
			
		||||
#define CONFIG_ARM_ERRATA_826974
 | 
			
		||||
| 
						 | 
				
			
			@ -143,6 +148,7 @@
 | 
			
		|||
#define CONFIG_ARM_ERRATA_829520
 | 
			
		||||
#define CONFIG_ARM_ERRATA_833471
 | 
			
		||||
 | 
			
		||||
#define CONFIG_SYS_FSL_MAX_NUM_OF_SEC		1
 | 
			
		||||
#elif defined(CONFIG_LS1043A)
 | 
			
		||||
#define CONFIG_MAX_CPUS				4
 | 
			
		||||
#define CONFIG_SYS_CACHELINE_SIZE		64
 | 
			
		||||
| 
						 | 
				
			
			@ -191,10 +197,38 @@
 | 
			
		|||
#define GICD_BASE		0x01401000
 | 
			
		||||
#define GICC_BASE		0x01402000
 | 
			
		||||
 | 
			
		||||
#define CONFIG_SYS_FSL_ERRATUM_A008850
 | 
			
		||||
#define CONFIG_SYS_FSL_ERRATUM_A009663
 | 
			
		||||
#define CONFIG_SYS_FSL_ERRATUM_A009929
 | 
			
		||||
#define CONFIG_SYS_FSL_ERRATUM_A009942
 | 
			
		||||
#define CONFIG_SYS_FSL_ERRATUM_A009660
 | 
			
		||||
#define CONFIG_SYS_FSL_MAX_NUM_OF_SEC		1
 | 
			
		||||
#elif defined(CONFIG_LS1012A)
 | 
			
		||||
#define CONFIG_MAX_CPUS                         1
 | 
			
		||||
#define CONFIG_SYS_CACHELINE_SIZE		64
 | 
			
		||||
#define CONFIG_NUM_DDR_CONTROLLERS		1
 | 
			
		||||
#define CONFIG_SYS_CCSRBAR_DEFAULT		0x01000000
 | 
			
		||||
#define CONFIG_SYS_FSL_SEC_COMPAT		5
 | 
			
		||||
#undef	CONFIG_SYS_FSL_DDRC_ARM_GEN3
 | 
			
		||||
 | 
			
		||||
#define CONFIG_SYS_FSL_OCRAM_BASE		0x10000000 /* initial RAM */
 | 
			
		||||
#define CONFIG_SYS_FSL_OCRAM_SIZE		0x200000 /* 2 MiB */
 | 
			
		||||
 | 
			
		||||
#define GICD_BASE		0x01401000
 | 
			
		||||
#define GICC_BASE		0x01402000
 | 
			
		||||
 | 
			
		||||
#define CONFIG_SYS_FSL_CCSR_GUR_BE
 | 
			
		||||
#define CONFIG_SYS_FSL_CCSR_SCFG_BE
 | 
			
		||||
#define CONFIG_SYS_FSL_ESDHC_BE
 | 
			
		||||
#define CONFIG_SYS_FSL_WDOG_BE
 | 
			
		||||
#define CONFIG_SYS_FSL_DSPI_BE
 | 
			
		||||
#define CONFIG_SYS_FSL_QSPI_BE
 | 
			
		||||
#define CONFIG_SYS_FSL_PEX_LUT_BE
 | 
			
		||||
 | 
			
		||||
#define SRDS_MAX_LANES		4
 | 
			
		||||
#define CONFIG_SYS_FSL_SRDS_1
 | 
			
		||||
#define CONFIG_SYS_FSL_PCIE_COMPAT		"fsl,qoriq-pcie-v2.4"
 | 
			
		||||
#define CONFIG_SYS_FSL_SEC_BE
 | 
			
		||||
#else
 | 
			
		||||
#error SoC not defined
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,6 +14,7 @@ static struct cpu_type cpu_type_list[] = {
 | 
			
		|||
	CPU_TYPE_ENTRY(LS1043, LS1043, 4),
 | 
			
		||||
	CPU_TYPE_ENTRY(LS1023, LS1023, 2),
 | 
			
		||||
	CPU_TYPE_ENTRY(LS2040, LS2040, 4),
 | 
			
		||||
	CPU_TYPE_ENTRY(LS1012, LS1012, 1),
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#ifndef CONFIG_SYS_DCACHE_OFF
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -55,7 +55,7 @@ enum srds {
 | 
			
		|||
	FSL_SRDS_1  = 0,
 | 
			
		||||
	FSL_SRDS_2  = 1,
 | 
			
		||||
};
 | 
			
		||||
#elif defined(CONFIG_LS1043A)
 | 
			
		||||
#elif defined(CONFIG_FSL_LSCH2)
 | 
			
		||||
enum srds_prtcl {
 | 
			
		||||
	NONE = 0,
 | 
			
		||||
	PCIE1,
 | 
			
		||||
| 
						 | 
				
			
			@ -134,6 +134,7 @@ enum srds_prtcl {
 | 
			
		|||
	SGMII_2500_FM2_DTSEC6,
 | 
			
		||||
	SGMII_2500_FM2_DTSEC9,
 | 
			
		||||
	SGMII_2500_FM2_DTSEC10,
 | 
			
		||||
	TX_CLK,
 | 
			
		||||
	SERDES_PRCTL_COUNT
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -37,8 +37,6 @@
 | 
			
		|||
#define CONFIG_SYS_PCIE1_ADDR			(CONFIG_SYS_IMMR + 0x2400000)
 | 
			
		||||
#define CONFIG_SYS_PCIE2_ADDR			(CONFIG_SYS_IMMR + 0x2500000)
 | 
			
		||||
#define CONFIG_SYS_PCIE3_ADDR			(CONFIG_SYS_IMMR + 0x2600000)
 | 
			
		||||
#define CONFIG_SYS_FSL_SEC_ADDR			(CONFIG_SYS_IMMR + 0x700000)
 | 
			
		||||
#define CONFIG_SYS_FSL_JR0_ADDR			(CONFIG_SYS_IMMR + 0x710000)
 | 
			
		||||
#define CONFIG_SYS_SEC_MON_ADDR			(CONFIG_SYS_IMMR + 0xe90000)
 | 
			
		||||
#define CONFIG_SYS_SFP_ADDR			(CONFIG_SYS_IMMR + 0xe80200)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -62,7 +60,11 @@
 | 
			
		|||
#define CONFIG_SYS_PCIE2_PHYS_ADDR		0x4800000000ULL
 | 
			
		||||
#define CONFIG_SYS_PCIE3_PHYS_ADDR		0x5000000000ULL
 | 
			
		||||
/* LUT registers */
 | 
			
		||||
#ifdef CONFIG_LS1012A
 | 
			
		||||
#define PCIE_LUT_BASE				0xC0000
 | 
			
		||||
#else
 | 
			
		||||
#define PCIE_LUT_BASE				0x10000
 | 
			
		||||
#endif
 | 
			
		||||
#define PCIE_LUT_LCTRL0				0x7F8
 | 
			
		||||
#define PCIE_LUT_DBG				0x7FC
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -157,6 +159,13 @@ struct sys_info {
 | 
			
		|||
#define CONFIG_SYS_FSL_FM1_DTSEC1_ADDR		\
 | 
			
		||||
		(CONFIG_SYS_IMMR + CONFIG_SYS_FSL_FM1_DTSEC1_OFFSET)
 | 
			
		||||
 | 
			
		||||
#define CONFIG_SYS_FSL_SEC_OFFSET		0x700000ull
 | 
			
		||||
#define CONFIG_SYS_FSL_JR0_OFFSET		0x710000ull
 | 
			
		||||
#define CONFIG_SYS_FSL_SEC_ADDR \
 | 
			
		||||
	(CONFIG_SYS_IMMR + CONFIG_SYS_FSL_SEC_OFFSET)
 | 
			
		||||
#define CONFIG_SYS_FSL_JR0_ADDR \
 | 
			
		||||
	(CONFIG_SYS_IMMR + CONFIG_SYS_FSL_JR0_OFFSET)
 | 
			
		||||
 | 
			
		||||
/* Device Configuration and Pin Control */
 | 
			
		||||
struct ccsr_gur {
 | 
			
		||||
	u32     porsr1;         /* POR status 1 */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -77,8 +77,12 @@
 | 
			
		|||
#define CONFIG_SYS_SFP_ADDR		(CONFIG_SYS_IMMR + 0x00e80200)
 | 
			
		||||
 | 
			
		||||
/* SEC */
 | 
			
		||||
#define CONFIG_SYS_FSL_SEC_ADDR		(CONFIG_SYS_IMMR + 0x07000000)
 | 
			
		||||
#define CONFIG_SYS_FSL_JR0_ADDR		(CONFIG_SYS_IMMR + 0x07010000)
 | 
			
		||||
#define CONFIG_SYS_FSL_SEC_OFFSET		0x07000000ull
 | 
			
		||||
#define CONFIG_SYS_FSL_JR0_OFFSET		0x07010000ull
 | 
			
		||||
#define CONFIG_SYS_FSL_SEC_ADDR \
 | 
			
		||||
	(CONFIG_SYS_IMMR + CONFIG_SYS_FSL_SEC_OFFSET)
 | 
			
		||||
#define CONFIG_SYS_FSL_JR0_ADDR \
 | 
			
		||||
	(CONFIG_SYS_IMMR + CONFIG_SYS_FSL_JR0_OFFSET)
 | 
			
		||||
 | 
			
		||||
/* Security Monitor */
 | 
			
		||||
#define CONFIG_SYS_SEC_MON_ADDR		(CONFIG_SYS_IMMR + 0x00e90000)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -69,7 +69,12 @@ enum csu_cslx_ind {
 | 
			
		|||
	CSU_CSLX_IIC4 = 77,
 | 
			
		||||
	CSU_CSLX_WDT4,
 | 
			
		||||
	CSU_CSLX_WDT3,
 | 
			
		||||
	CSU_CSLX_ESDHC2 = 80,
 | 
			
		||||
	CSU_CSLX_WDT5 = 81,
 | 
			
		||||
	CSU_CSLX_SAI2,
 | 
			
		||||
	CSU_CSLX_SAI1,
 | 
			
		||||
	CSU_CSLX_SAI4,
 | 
			
		||||
	CSU_CSLX_SAI3,
 | 
			
		||||
	CSU_CSLX_FTM2 = 86,
 | 
			
		||||
	CSU_CSLX_FTM1,
 | 
			
		||||
	CSU_CSLX_FTM4,
 | 
			
		||||
| 
						 | 
				
			
			@ -143,7 +148,12 @@ static struct csu_ns_dev ns_dev[] = {
 | 
			
		|||
	 {CSU_CSLX_IIC4, CSU_ALL_RW},
 | 
			
		||||
	 {CSU_CSLX_WDT4, CSU_ALL_RW},
 | 
			
		||||
	 {CSU_CSLX_WDT3, CSU_ALL_RW},
 | 
			
		||||
	 {CSU_CSLX_ESDHC2, CSU_ALL_RW},
 | 
			
		||||
	 {CSU_CSLX_WDT5, CSU_ALL_RW},
 | 
			
		||||
	 {CSU_CSLX_SAI2, CSU_ALL_RW},
 | 
			
		||||
	 {CSU_CSLX_SAI1, CSU_ALL_RW},
 | 
			
		||||
	 {CSU_CSLX_SAI4, CSU_ALL_RW},
 | 
			
		||||
	 {CSU_CSLX_SAI3, CSU_ALL_RW},
 | 
			
		||||
	 {CSU_CSLX_FTM2, CSU_ALL_RW},
 | 
			
		||||
	 {CSU_CSLX_FTM1, CSU_ALL_RW},
 | 
			
		||||
	 {CSU_CSLX_FTM4, CSU_ALL_RW},
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -41,6 +41,7 @@ struct cpu_type {
 | 
			
		|||
	{ .name = #n, .soc_ver = SVR_##v, .num_cores = (nc)}
 | 
			
		||||
 | 
			
		||||
#define SVR_WO_E		0xFFFFFE
 | 
			
		||||
#define SVR_LS1012		0x870400
 | 
			
		||||
#define SVR_LS1043		0x879200
 | 
			
		||||
#define SVR_LS1023		0x879208
 | 
			
		||||
#define SVR_LS2045		0x870120
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -40,6 +40,7 @@
 | 
			
		|||
	(CONFIG_SYS_IMMR + CONFIG_SYS_LS102XA_USB1_OFFSET)
 | 
			
		||||
 | 
			
		||||
#define CONFIG_SYS_FSL_SEC_OFFSET		0x00700000
 | 
			
		||||
#define CONFIG_SYS_FSL_JR0_OFFSET		0x00710000
 | 
			
		||||
#define CONFIG_SYS_LS102XA_USB1_OFFSET		0x07600000
 | 
			
		||||
#define CONFIG_SYS_TSEC1_OFFSET			0x01d10000
 | 
			
		||||
#define CONFIG_SYS_TSEC2_OFFSET			0x01d50000
 | 
			
		||||
| 
						 | 
				
			
			@ -131,6 +132,7 @@
 | 
			
		|||
#define CONFIG_USB_MAX_CONTROLLER_COUNT		1
 | 
			
		||||
#define CONFIG_SYS_FSL_ERRATUM_A008378
 | 
			
		||||
#define CONFIG_SYS_FSL_ERRATUM_A009663
 | 
			
		||||
#define CONFIG_SYS_FSL_MAX_NUM_OF_SEC		1
 | 
			
		||||
#else
 | 
			
		||||
#error SoC not defined
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
Some files were not shown because too many files have changed in this diff Show More
		Loading…
	
		Reference in New Issue