mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 15:14:43 +00:00
Merge branch 'next'
Signed-off-by: Tom Rini <trini@konsulko.com>
This commit is contained in:
commit
fe04d885fb
1624 changed files with 25243 additions and 10873 deletions
|
@ -49,6 +49,33 @@ jobs:
|
|||
-j$(sysctl -n hw.logicalcpu)
|
||||
displayName: 'Perform tools-only build'
|
||||
|
||||
- job: check_for_migrated_symbols_in_board_header
|
||||
displayName: 'Check for migrated symbols in board header'
|
||||
pool:
|
||||
vmImage: $(ubuntu_vm)
|
||||
container:
|
||||
image: $(ci_runner_image)
|
||||
options: $(container_option)
|
||||
steps:
|
||||
- script: |
|
||||
KSYMLST=`mktemp`
|
||||
KUSEDLST=`mktemp`
|
||||
cat `find . -name "Kconfig*"` | \
|
||||
sed -n -e 's/^\s*config *\([A-Za-z0-9_]*\).*$/CONFIG_\1/p' \
|
||||
-e 's/^\s*menuconfig *\([A-Za-z0-9_]*\).*$/CONFIG_\1/p' \
|
||||
| sort -u > $KSYMLST
|
||||
for CFG in `find include/configs -name "*.h"`; do
|
||||
grep '#define[[:blank:]]CONFIG_' $CFG | \
|
||||
sed -n 's/#define.\(CONFIG_[A-Za-z0-9_]*\).*/\1/p' | \
|
||||
sort -u > ${KUSEDLST} || true
|
||||
NUM=`comm -12 --total --output-delimiter=, ${KSYMLST} ${KUSEDLST} | \
|
||||
cut -d , -f 3`
|
||||
if [[ $NUM -ne 0 ]]; then
|
||||
echo "Unmigrated symbols found in $CFG"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
- job: cppcheck
|
||||
displayName: 'Static code analysis with cppcheck'
|
||||
pool:
|
||||
|
|
1
.gitattributes
vendored
1
.gitattributes
vendored
|
@ -3,3 +3,4 @@
|
|||
# Denote all files that are truly binary and should not be modified
|
||||
*.bmp binary
|
||||
*.ttf binary
|
||||
*.gz binary
|
||||
|
|
|
@ -105,6 +105,27 @@ build all other platforms:
|
|||
exit $ret;
|
||||
fi;
|
||||
|
||||
check for migrated symbols in board header:
|
||||
stage: testsuites
|
||||
script:
|
||||
- KSYMLST=`mktemp`;
|
||||
KUSEDLST=`mktemp`;
|
||||
cat `find . -name "Kconfig*"` |
|
||||
sed -n -e 's/^\s*config *\([A-Za-z0-9_]*\).*$/CONFIG_\1/p'
|
||||
-e 's/^\s*menuconfig *\([A-Za-z0-9_]*\).*$/CONFIG_\1/p'
|
||||
| sort -u > $KSYMLST;
|
||||
for CFG in `find include/configs -name "*.h"`; do
|
||||
grep '#define[[:blank:]]CONFIG_' $CFG |
|
||||
sed -n 's/#define.\(CONFIG_[A-Za-z0-9_]*\).*/\1/p' |
|
||||
sort -u > ${KUSEDLST} || true;
|
||||
NUM=`comm -12 --total --output-delimiter=, ${KSYMLST} ${KUSEDLST} |
|
||||
cut -d , -f 3`;
|
||||
if [[ $NUM -ne 0 ]]; then
|
||||
echo "Unmigrated symbols found in $CFG";
|
||||
exit 1;
|
||||
fi;
|
||||
done
|
||||
|
||||
# QA jobs for code analytics
|
||||
# static code analysis with cppcheck (we can add --enable=all later)
|
||||
cppcheck:
|
||||
|
|
24
MAINTAINERS
24
MAINTAINERS
|
@ -115,6 +115,7 @@ F: arch/arm/include/asm/arch-m1/
|
|||
F: arch/arm/mach-apple/
|
||||
F: configs/apple_m1_defconfig
|
||||
F: drivers/iommu/apple_dart.c
|
||||
F: drivers/pinctrl/pinctrl-apple.c
|
||||
F: include/configs/apple.h
|
||||
|
||||
ARM
|
||||
|
@ -273,10 +274,24 @@ F: drivers/ata/ahci_mvebu.c
|
|||
F: drivers/ddr/marvell/
|
||||
F: drivers/gpio/mvebu_gpio.c
|
||||
F: drivers/spi/kirkwood_spi.c
|
||||
F: drivers/pci/pci_mvebu.c
|
||||
F: drivers/pci/pcie_dw_mvebu.c
|
||||
F: drivers/watchdog/orion_wdt.c
|
||||
|
||||
ARM MARVELL PCIE CONTROLLER DRIVERS
|
||||
M: Pali Rohár <pali@kernel.org>
|
||||
M: Stefan Roese <sr@denx.de>
|
||||
S: Maintained
|
||||
T: git https://source.denx.de/u-boot/custodians/u-boot-marvell.git
|
||||
F: drivers/pci/pci-aardvark.c
|
||||
F: drivers/pci/pci_mvebu.c
|
||||
|
||||
ARM MARVELL SERIAL DRIVERS
|
||||
M: Pali Rohár <pali@kernel.org>
|
||||
M: Stefan Roese <sr@denx.de>
|
||||
S: Maintained
|
||||
T: git https://source.denx.de/u-boot/custodians/u-boot-marvell.git
|
||||
F: drivers/serial/serial_mvebu_a3700.c
|
||||
|
||||
ARM MARVELL PXA
|
||||
M: Marek Vasut <marex@denx.de>
|
||||
S: Maintained
|
||||
|
@ -764,6 +779,13 @@ F: test/env/
|
|||
F: tools/env*
|
||||
F: tools/mkenvimage.c
|
||||
|
||||
ENVIRONMENT AS TEXT
|
||||
M: Simon Glass <sjg@chromium.org>
|
||||
R: Wolfgang Denk <wd@denx.de>
|
||||
S: Maintained
|
||||
F: doc/usage/environment.rst
|
||||
F: scripts/env2string.awk
|
||||
|
||||
FASTBOOT
|
||||
S: Orphaned
|
||||
F: cmd/fastboot.c
|
||||
|
|
85
Makefile
85
Makefile
|
@ -517,6 +517,7 @@ version_h := include/generated/version_autogenerated.h
|
|||
timestamp_h := include/generated/timestamp_autogenerated.h
|
||||
defaultenv_h := include/generated/defaultenv_autogenerated.h
|
||||
dt_h := include/generated/dt.h
|
||||
env_h := include/generated/environment.h
|
||||
|
||||
no-dot-config-targets := clean clobber mrproper distclean \
|
||||
help %docs check% coccicheck \
|
||||
|
@ -943,8 +944,9 @@ INPUTS-$(CONFIG_SPL_FRAMEWORK) += u-boot.img
|
|||
endif
|
||||
endif
|
||||
INPUTS-$(CONFIG_TPL) += tpl/u-boot-tpl.bin
|
||||
INPUTS-$(CONFIG_OF_SEPARATE) += u-boot.dtb
|
||||
INPUTS-$(CONFIG_BINMAN_STANDALONE_FDT) += u-boot.dtb
|
||||
|
||||
# Allow omitting the .dtb output if it is not normally used
|
||||
INPUTS-$(CONFIG_OF_SEPARATE) += $(if $(CONFIG_OF_OMIT_DTB),dts/dt.dtb,u-boot.dtb)
|
||||
ifeq ($(CONFIG_SPL_FRAMEWORK),y)
|
||||
INPUTS-$(CONFIG_OF_SEPARATE) += u-boot-dtb.img
|
||||
endif
|
||||
|
@ -1053,6 +1055,10 @@ quiet_cmd_cfgcheck = CFGCHK $2
|
|||
cmd_cfgcheck = $(srctree)/scripts/check-config.sh $2 \
|
||||
$(srctree)/scripts/config_whitelist.txt $(srctree)
|
||||
|
||||
quiet_cmd_ofcheck = OFCHK $2
|
||||
cmd_ofcheck = $(srctree)/scripts/check-of.sh $2 \
|
||||
$(srctree)/scripts/of_allowlist.txt
|
||||
|
||||
# Concat the value of all the CONFIGs (result is 'y' or 'yy', etc. )
|
||||
got = $(foreach cfg,$(1),$($(cfg)))
|
||||
|
||||
|
@ -1122,10 +1128,14 @@ endif
|
|||
$(CONFIG_WATCHDOG)$(CONFIG_HW_WATCHDOG))
|
||||
$(call deprecated,CONFIG_DM_ETH,Ethernet drivers,v2020.07,$(CONFIG_NET))
|
||||
$(call deprecated,CONFIG_DM_I2C,I2C drivers,v2022.04,$(CONFIG_SYS_I2C_LEGACY))
|
||||
$(call deprecated,CONFIG_DM_KEYBOARD,Keyboard drivers,v2022.10,$(CONFIG_KEYBOARD))
|
||||
@# Check that this build does not use CONFIG options that we do not
|
||||
@# know about unless they are in Kconfig. All the existing CONFIG
|
||||
@# options are whitelisted, so new ones should not be added.
|
||||
$(call cmd,cfgcheck,u-boot.cfg)
|
||||
@# Check that this build does not override OF_HAS_PRIOR_STAGE by
|
||||
@# disabling OF_BOARD.
|
||||
$(call cmd,ofcheck,$(KCONFIG_CONFIG))
|
||||
|
||||
PHONY += dtbs
|
||||
dtbs: dts/dt.dtb
|
||||
|
@ -1179,7 +1189,7 @@ u-boot.bin: u-boot-fit-dtb.bin FORCE
|
|||
u-boot-dtb.bin: u-boot-nodtb.bin dts/dt.dtb FORCE
|
||||
$(call if_changed,cat)
|
||||
|
||||
else ifeq ($(CONFIG_OF_SEPARATE),y)
|
||||
else ifeq ($(CONFIG_OF_SEPARATE).$(CONFIG_OF_OMIT_DTB),y.)
|
||||
u-boot-dtb.bin: u-boot-nodtb.bin dts/dt.dtb FORCE
|
||||
$(call if_changed,cat)
|
||||
|
||||
|
@ -1302,11 +1312,13 @@ default_dt := $(if $(DEVICE_TREE),$(DEVICE_TREE),$(CONFIG_DEFAULT_DEVICE_TREE))
|
|||
|
||||
quiet_cmd_binman = BINMAN $@
|
||||
cmd_binman = $(srctree)/tools/binman/binman $(if $(BINMAN_DEBUG),-D) \
|
||||
$(foreach f,$(BINMAN_TOOLPATHS),--toolpath $(f)) \
|
||||
--toolpath $(objtree)/tools \
|
||||
$(if $(BINMAN_VERBOSE),-v$(BINMAN_VERBOSE)) \
|
||||
build -u -d u-boot.dtb -O . -m --allow-missing \
|
||||
-I . -I $(srctree) -I $(srctree)/board/$(BOARDDIR) \
|
||||
-I arch/$(ARCH)/dts -a of-list=$(CONFIG_OF_LIST) \
|
||||
$(foreach f,$(BINMAN_INDIRS),-I $(f)) \
|
||||
-a atf-bl31-path=${BL31} \
|
||||
-a opensbi-path=${OPENSBI} \
|
||||
-a default-dt=$(default_dt) \
|
||||
|
@ -1412,7 +1424,7 @@ u-boot-lzma.img: u-boot.bin.lzma FORCE
|
|||
|
||||
u-boot-dtb.img u-boot.img u-boot.kwb u-boot.pbl u-boot-ivt.img: \
|
||||
$(if $(CONFIG_SPL_LOAD_FIT),u-boot-nodtb.bin \
|
||||
$(if $(CONFIG_OF_SEPARATE)$(CONFIG_OF_EMBED)$(CONFIG_SANDBOX)$(CONFIG_BINMAN_STANDALONE_FDT),dts/dt.dtb) \
|
||||
$(if $(CONFIG_OF_SEPARATE)$(CONFIG_OF_EMBED)$(CONFIG_SANDBOX),dts/dt.dtb) \
|
||||
,$(UBOOT_BIN)) FORCE
|
||||
$(call if_changed,mkimage)
|
||||
$(BOARD_SIZE_CHECK)
|
||||
|
@ -1795,6 +1807,69 @@ quiet_cmd_sym ?= SYM $@
|
|||
u-boot.sym: u-boot FORCE
|
||||
$(call if_changed,sym)
|
||||
|
||||
# Environment processing
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
# Directory where we expect the .env file, if it exists
|
||||
ENV_DIR := $(srctree)/board/$(BOARDDIR)
|
||||
|
||||
# Basename of .env file, stripping quotes
|
||||
ENV_SOURCE_FILE := $(CONFIG_ENV_SOURCE_FILE:"%"=%)
|
||||
|
||||
# Filename of .env file
|
||||
ENV_FILE_CFG := $(ENV_DIR)/$(ENV_SOURCE_FILE).env
|
||||
|
||||
# Default filename, if CONFIG_ENV_SOURCE_FILE is empty
|
||||
ENV_FILE_BOARD := $(ENV_DIR)/$(CONFIG_SYS_BOARD:"%"=%).env
|
||||
|
||||
# Select between the CONFIG_ENV_SOURCE_FILE and the default one
|
||||
ENV_FILE := $(if $(ENV_SOURCE_FILE),$(ENV_FILE_CFG),$(wildcard $(ENV_FILE_BOARD)))
|
||||
|
||||
# Run the environment text file through the preprocessor, but only if it is
|
||||
# non-empty, to save time and possible build errors if something is wonky with
|
||||
# the board
|
||||
quiet_cmd_gen_envp = ENVP $@
|
||||
cmd_gen_envp = \
|
||||
if [ -s "$(ENV_FILE)" ]; then \
|
||||
$(CPP) -P $(CFLAGS) -x assembler-with-cpp -D__ASSEMBLY__ \
|
||||
-D__UBOOT_CONFIG__ \
|
||||
-I . -I include -I $(srctree)/include \
|
||||
-include linux/kconfig.h -include include/config.h \
|
||||
-I$(srctree)/arch/$(ARCH)/include \
|
||||
$< -o $@; \
|
||||
else \
|
||||
echo -n >$@ ; \
|
||||
fi
|
||||
include/generated/env.in: include/generated/env.txt FORCE
|
||||
$(call cmd,gen_envp)
|
||||
|
||||
# Regenerate the environment if it changes
|
||||
# We use 'wildcard' since the file is not required to exist (at present), in
|
||||
# which case we don't want this dependency, but instead should create an empty
|
||||
# file
|
||||
# This rule is useful since it shows the source file for the environment
|
||||
quiet_cmd_envc = ENVC $@
|
||||
cmd_envc = \
|
||||
if [ -f "$<" ]; then \
|
||||
cat $< > $@; \
|
||||
elif [ -n "$(ENV_SOURCE_FILE)" ]; then \
|
||||
echo "Missing file $(ENV_FILE_CFG)"; \
|
||||
else \
|
||||
echo -n >$@ ; \
|
||||
fi
|
||||
|
||||
include/generated/env.txt: $(wildcard $(ENV_FILE)) FORCE
|
||||
$(call cmd,envc)
|
||||
|
||||
# Write out the resulting environment, converted to a C string
|
||||
quiet_cmd_gen_envt = ENVT $@
|
||||
cmd_gen_envt = \
|
||||
awk -f $(srctree)/scripts/env2string.awk $< >$@
|
||||
$(env_h): include/generated/env.in
|
||||
$(call cmd,gen_envt)
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
# The actual objects are generated when descending,
|
||||
# make sure no implicit rule kicks in
|
||||
$(sort $(u-boot-init) $(u-boot-main)): $(u-boot-dirs) ;
|
||||
|
@ -1850,7 +1925,7 @@ endif
|
|||
# prepare2 creates a makefile if using a separate output directory
|
||||
prepare2: prepare3 outputmakefile cfg
|
||||
|
||||
prepare1: prepare2 $(version_h) $(timestamp_h) $(dt_h) \
|
||||
prepare1: prepare2 $(version_h) $(timestamp_h) $(dt_h) $(env_h) \
|
||||
include/config/auto.conf
|
||||
ifeq ($(wildcard $(LDSCRIPT)),)
|
||||
@echo >&2 " Could not find linker script."
|
||||
|
|
447
README
447
README
|
@ -565,11 +565,6 @@ The following options need to be configured:
|
|||
boards with QUICC Engines require OF_QE to set UCC MAC
|
||||
addresses
|
||||
|
||||
CONFIG_OF_BOARD_SETUP
|
||||
|
||||
Board code has addition modification that it wants to make
|
||||
to the flat device tree before handing it off to the kernel
|
||||
|
||||
CONFIG_OF_SYSTEM_SETUP
|
||||
|
||||
Other code has addition modification that it wants to make
|
||||
|
@ -596,9 +591,6 @@ The following options need to be configured:
|
|||
Note: If a "bootargs" environment is defined, it will override
|
||||
the defaults discussed just above.
|
||||
|
||||
- Cache Configuration:
|
||||
CONFIG_SYS_L2CACHE_OFF- Do not enable L2 cache in U-Boot
|
||||
|
||||
- Cache Configuration for ARM:
|
||||
CONFIG_SYS_L2_PL310 - Enable support for ARM PL310 L2 cache
|
||||
controller
|
||||
|
@ -622,19 +614,6 @@ The following options need to be configured:
|
|||
Define this variable to enable hw flow control in serial driver.
|
||||
Current user of this option is drivers/serial/nsl16550.c driver
|
||||
|
||||
- Autoboot Command:
|
||||
CONFIG_BOOTCOMMAND
|
||||
Only needed when CONFIG_BOOTDELAY is enabled;
|
||||
define a command string that is automatically executed
|
||||
when no character is read on the console interface
|
||||
within "Boot Delay" after reset.
|
||||
|
||||
CONFIG_RAMBOOT and CONFIG_NFSBOOT
|
||||
The value of these goes into the environment as
|
||||
"ramboot" and "nfsboot" respectively, and can be used
|
||||
as a convenience, when switching between booting from
|
||||
RAM and NFS.
|
||||
|
||||
- Serial Download Echo Mode:
|
||||
CONFIG_LOADS_ECHO
|
||||
If defined to 1, all characters received during a
|
||||
|
@ -659,50 +638,7 @@ The following options need to be configured:
|
|||
which adds regex support to some commands, as for
|
||||
example "env grep" and "setexpr".
|
||||
|
||||
- Device tree:
|
||||
CONFIG_OF_CONTROL
|
||||
If this variable is defined, U-Boot will use a device tree
|
||||
to configure its devices, instead of relying on statically
|
||||
compiled #defines in the board file. This option is
|
||||
experimental and only available on a few boards. The device
|
||||
tree is available in the global data as gd->fdt_blob.
|
||||
|
||||
U-Boot needs to get its device tree from somewhere. This can
|
||||
be done using one of the three options below:
|
||||
|
||||
CONFIG_OF_SEPARATE
|
||||
If this variable is defined, U-Boot will build a device tree
|
||||
binary. It will be called u-boot.dtb. Architecture-specific
|
||||
code will locate it at run-time. Generally this works by:
|
||||
|
||||
cat u-boot.bin u-boot.dtb >image.bin
|
||||
|
||||
and in fact, U-Boot does this for you, creating a file called
|
||||
u-boot-dtb.bin which is useful in the common case. You can
|
||||
still use the individual files if you need something more
|
||||
exotic.
|
||||
|
||||
CONFIG_OF_BOARD
|
||||
If this variable is defined, U-Boot will use the device tree
|
||||
provided by the board at runtime instead of embedding one with
|
||||
the image. Only boards defining board_fdt_blob_setup() support
|
||||
this option (see include/fdtdec.h file).
|
||||
|
||||
- Watchdog:
|
||||
CONFIG_WATCHDOG
|
||||
If this variable is defined, it enables watchdog
|
||||
support for the SoC. There must be support in the SoC
|
||||
specific code for a watchdog. For the 8xx
|
||||
CPUs, the SIU Watchdog feature is enabled in the SYPCR
|
||||
register. When supported for a specific SoC is
|
||||
available, then no further board specific code should
|
||||
be needed to use it.
|
||||
|
||||
CONFIG_HW_WATCHDOG
|
||||
When using a watchdog circuitry external to the used
|
||||
SoC, then define this variable and provide board
|
||||
specific code for the "hw_watchdog_reset" function.
|
||||
|
||||
CONFIG_SYS_WATCHDOG_FREQ
|
||||
Some platforms automatically call WATCHDOG_RESET()
|
||||
from the timer interrupt handler every
|
||||
|
@ -785,9 +721,6 @@ The following options need to be configured:
|
|||
least one non-MTD partition type as well.
|
||||
|
||||
- IDE Reset method:
|
||||
CONFIG_IDE_RESET_ROUTINE - this is defined in several
|
||||
board configurations files but used nowhere!
|
||||
|
||||
CONFIG_IDE_RESET - is this is defined, IDE Reset will
|
||||
be performed by calling the function
|
||||
ide_set_reset(int reset)
|
||||
|
@ -1066,9 +999,6 @@ The following options need to be configured:
|
|||
sending again an USB request to the device.
|
||||
|
||||
- Journaling Flash filesystem support:
|
||||
CONFIG_JFFS2_NAND
|
||||
Define these for a default partition on a NAND device
|
||||
|
||||
CONFIG_SYS_JFFS2_FIRST_SECTOR,
|
||||
CONFIG_SYS_JFFS2_FIRST_BANK, CONFIG_SYS_JFFS2_NUM_BANKS
|
||||
Define these for a default partition on a NOR device
|
||||
|
@ -1076,14 +1006,6 @@ The following options need to be configured:
|
|||
- Keyboard Support:
|
||||
See Kconfig help for available keyboard drivers.
|
||||
|
||||
CONFIG_KEYBOARD
|
||||
|
||||
Define this to enable a custom keyboard support.
|
||||
This simply calls drv_keyboard_init() which must be
|
||||
defined in your board-specific files. This option is deprecated
|
||||
and is only used by novena. For new boards, use driver model
|
||||
instead.
|
||||
|
||||
- Video support:
|
||||
CONFIG_FSL_DIU_FB
|
||||
Enable the Freescale DIU video driver. Reference boards for
|
||||
|
@ -1095,7 +1017,6 @@ The following options need to be configured:
|
|||
CONFIG_CFB_CONSOLE
|
||||
CONFIG_VIDEO_SW_CURSOR
|
||||
CONFIG_VGA_AS_SINGLE_DEVICE
|
||||
CONFIG_VIDEO_LOGO
|
||||
CONFIG_VIDEO_BMP_LOGO
|
||||
|
||||
The DIU driver will look for the 'video-mode' environment
|
||||
|
@ -1573,16 +1494,6 @@ The following options need to be configured:
|
|||
SPI EEPROM, also an instance works with Crystal A/D and
|
||||
D/As on the SACSng board)
|
||||
|
||||
CONFIG_SOFT_SPI
|
||||
|
||||
Enables a software (bit-bang) SPI driver rather than
|
||||
using hardware support. This is a general purpose
|
||||
driver that only requires three general I/O port pins
|
||||
(two outputs, one input) to function. If this is
|
||||
defined, the board configuration must define several
|
||||
SPI configuration items (port pins to use, etc). For
|
||||
an example, see include/configs/sacsng.h.
|
||||
|
||||
CONFIG_SYS_SPI_MXC_WAIT
|
||||
Timeout for waiting until spi transfer completed.
|
||||
default: (CONFIG_SYS_HZ/100) /* 10 ms */
|
||||
|
@ -1648,13 +1559,6 @@ The following options need to be configured:
|
|||
Time to wait after FPGA configuration. The default is
|
||||
200 ms.
|
||||
|
||||
- Configuration Management:
|
||||
|
||||
CONFIG_IDENT_STRING
|
||||
|
||||
If defined, this string will be added to the U-Boot
|
||||
version information (U_BOOT_VERSION)
|
||||
|
||||
- Vendor Parameter Protection:
|
||||
|
||||
U-Boot considers the values of the environment
|
||||
|
@ -1716,14 +1620,6 @@ The following options need to be configured:
|
|||
HERMES, IP860, RPXlite, LWMON,
|
||||
FLAGADM
|
||||
|
||||
- Access to physical memory region (> 4GB)
|
||||
Some basic support is provided for operations on memory not
|
||||
normally accessible to U-Boot - e.g. some architectures
|
||||
support access to more than 4GB of memory on 32-bit
|
||||
machines using physical address extension or similar.
|
||||
Define CONFIG_PHYSMEM to access this basic support, which
|
||||
currently only supports clearing the memory.
|
||||
|
||||
- Error Recovery:
|
||||
CONFIG_NET_RETRY_COUNT
|
||||
|
||||
|
@ -1983,10 +1879,6 @@ The following options need to be configured:
|
|||
CONFIG_SPL_INIT_MINIMAL
|
||||
Arch init code should be built for a very small image
|
||||
|
||||
CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION
|
||||
Partition on the MMC to load U-Boot from when the MMC is being
|
||||
used in raw mode
|
||||
|
||||
CONFIG_SYS_MMCSD_RAW_MODE_KERNEL_SECTOR
|
||||
Sector to load kernel uImage from when MMC is being
|
||||
used in raw mode (for Falcon mode)
|
||||
|
@ -2567,17 +2459,6 @@ Low Level (hardware related) configuration options:
|
|||
- CONFIG_SYS_MAMR_PTA:
|
||||
periodic timer for refresh
|
||||
|
||||
- FLASH_BASE0_PRELIM, FLASH_BASE1_PRELIM, CONFIG_SYS_REMAP_OR_AM,
|
||||
CONFIG_SYS_PRELIM_OR_AM, CONFIG_SYS_OR_TIMING_FLASH, CONFIG_SYS_OR0_REMAP,
|
||||
CONFIG_SYS_OR0_PRELIM, CONFIG_SYS_BR0_PRELIM, CONFIG_SYS_OR1_REMAP, CONFIG_SYS_OR1_PRELIM,
|
||||
CONFIG_SYS_BR1_PRELIM:
|
||||
Memory Controller Definitions: BR0/1 and OR0/1 (FLASH)
|
||||
|
||||
- SDRAM_BASE2_PRELIM, SDRAM_BASE3_PRELIM, SDRAM_MAX_SIZE,
|
||||
CONFIG_SYS_OR_TIMING_SDRAM, CONFIG_SYS_OR2_PRELIM, CONFIG_SYS_BR2_PRELIM,
|
||||
CONFIG_SYS_OR3_PRELIM, CONFIG_SYS_BR3_PRELIM:
|
||||
Memory Controller Definitions: BR2/3 and OR2/3 (SDRAM)
|
||||
|
||||
- CONFIG_SYS_SRIO:
|
||||
Chip has SRIO or not
|
||||
|
||||
|
@ -2966,334 +2847,6 @@ TODO.
|
|||
For now: just type "help <command>".
|
||||
|
||||
|
||||
Environment Variables:
|
||||
======================
|
||||
|
||||
U-Boot supports user configuration using Environment Variables which
|
||||
can be made persistent by saving to Flash memory.
|
||||
|
||||
Environment Variables are set using "setenv", printed using
|
||||
"printenv", and saved to Flash using "saveenv". Using "setenv"
|
||||
without a value can be used to delete a variable from the
|
||||
environment. As long as you don't save the environment you are
|
||||
working with an in-memory copy. In case the Flash area containing the
|
||||
environment is erased by accident, a default environment is provided.
|
||||
|
||||
Some configuration options can be set using Environment Variables.
|
||||
|
||||
List of environment variables (most likely not complete):
|
||||
|
||||
baudrate - see CONFIG_BAUDRATE
|
||||
|
||||
bootdelay - see CONFIG_BOOTDELAY
|
||||
|
||||
bootcmd - see CONFIG_BOOTCOMMAND
|
||||
|
||||
bootargs - Boot arguments when booting an RTOS image
|
||||
|
||||
bootfile - Name of the image to load with TFTP
|
||||
|
||||
bootm_low - Memory range available for image processing in the bootm
|
||||
command can be restricted. This variable is given as
|
||||
a hexadecimal number and defines lowest address allowed
|
||||
for use by the bootm command. See also "bootm_size"
|
||||
environment variable. Address defined by "bootm_low" is
|
||||
also the base of the initial memory mapping for the Linux
|
||||
kernel -- see the description of CONFIG_SYS_BOOTMAPSZ and
|
||||
bootm_mapsize.
|
||||
|
||||
bootm_mapsize - Size of the initial memory mapping for the Linux kernel.
|
||||
This variable is given as a hexadecimal number and it
|
||||
defines the size of the memory region starting at base
|
||||
address bootm_low that is accessible by the Linux kernel
|
||||
during early boot. If unset, CONFIG_SYS_BOOTMAPSZ is used
|
||||
as the default value if it is defined, and bootm_size is
|
||||
used otherwise.
|
||||
|
||||
bootm_size - Memory range available for image processing in the bootm
|
||||
command can be restricted. This variable is given as
|
||||
a hexadecimal number and defines the size of the region
|
||||
allowed for use by the bootm command. See also "bootm_low"
|
||||
environment variable.
|
||||
|
||||
bootstopkeysha256, bootdelaykey, bootstopkey - See README.autoboot
|
||||
|
||||
updatefile - Location of the software update file on a TFTP server, used
|
||||
by the automatic software update feature. Please refer to
|
||||
documentation in doc/README.update for more details.
|
||||
|
||||
autoload - if set to "no" (any string beginning with 'n'),
|
||||
"bootp" will just load perform a lookup of the
|
||||
configuration from the BOOTP server, but not try to
|
||||
load any image using TFTP
|
||||
|
||||
autostart - if set to "yes", an image loaded using the "bootp",
|
||||
"rarpboot", "tftpboot" or "diskboot" commands will
|
||||
be automatically started (by internally calling
|
||||
"bootm")
|
||||
|
||||
If set to "no", a standalone image passed to the
|
||||
"bootm" command will be copied to the load address
|
||||
(and eventually uncompressed), but NOT be started.
|
||||
This can be used to load and uncompress arbitrary
|
||||
data.
|
||||
|
||||
fdt_high - if set this restricts the maximum address that the
|
||||
flattened device tree will be copied into upon boot.
|
||||
For example, if you have a system with 1 GB memory
|
||||
at physical address 0x10000000, while Linux kernel
|
||||
only recognizes the first 704 MB as low memory, you
|
||||
may need to set fdt_high as 0x3C000000 to have the
|
||||
device tree blob be copied to the maximum address
|
||||
of the 704 MB low memory, so that Linux kernel can
|
||||
access it during the boot procedure.
|
||||
|
||||
If this is set to the special value 0xFFFFFFFF then
|
||||
the fdt will not be copied at all on boot. For this
|
||||
to work it must reside in writable memory, have
|
||||
sufficient padding on the end of it for u-boot to
|
||||
add the information it needs into it, and the memory
|
||||
must be accessible by the kernel.
|
||||
|
||||
fdtcontroladdr- if set this is the address of the control flattened
|
||||
device tree used by U-Boot when CONFIG_OF_CONTROL is
|
||||
defined.
|
||||
|
||||
i2cfast - (PPC405GP|PPC405EP only)
|
||||
if set to 'y' configures Linux I2C driver for fast
|
||||
mode (400kHZ). This environment variable is used in
|
||||
initialization code. So, for changes to be effective
|
||||
it must be saved and board must be reset.
|
||||
|
||||
initrd_high - restrict positioning of initrd images:
|
||||
If this variable is not set, initrd images will be
|
||||
copied to the highest possible address in RAM; this
|
||||
is usually what you want since it allows for
|
||||
maximum initrd size. If for some reason you want to
|
||||
make sure that the initrd image is loaded below the
|
||||
CONFIG_SYS_BOOTMAPSZ limit, you can set this environment
|
||||
variable to a value of "no" or "off" or "0".
|
||||
Alternatively, you can set it to a maximum upper
|
||||
address to use (U-Boot will still check that it
|
||||
does not overwrite the U-Boot stack and data).
|
||||
|
||||
For instance, when you have a system with 16 MB
|
||||
RAM, and want to reserve 4 MB from use by Linux,
|
||||
you can do this by adding "mem=12M" to the value of
|
||||
the "bootargs" variable. However, now you must make
|
||||
sure that the initrd image is placed in the first
|
||||
12 MB as well - this can be done with
|
||||
|
||||
setenv initrd_high 00c00000
|
||||
|
||||
If you set initrd_high to 0xFFFFFFFF, this is an
|
||||
indication to U-Boot that all addresses are legal
|
||||
for the Linux kernel, including addresses in flash
|
||||
memory. In this case U-Boot will NOT COPY the
|
||||
ramdisk at all. This may be useful to reduce the
|
||||
boot time on your system, but requires that this
|
||||
feature is supported by your Linux kernel.
|
||||
|
||||
ipaddr - IP address; needed for tftpboot command
|
||||
|
||||
loadaddr - Default load address for commands like "bootp",
|
||||
"rarpboot", "tftpboot", "loadb" or "diskboot"
|
||||
|
||||
loads_echo - see CONFIG_LOADS_ECHO
|
||||
|
||||
serverip - TFTP server IP address; needed for tftpboot command
|
||||
|
||||
bootretry - see CONFIG_BOOT_RETRY_TIME
|
||||
|
||||
bootdelaykey - see CONFIG_AUTOBOOT_DELAY_STR
|
||||
|
||||
bootstopkey - see CONFIG_AUTOBOOT_STOP_STR
|
||||
|
||||
ethprime - controls which interface is used first.
|
||||
|
||||
ethact - controls which interface is currently active.
|
||||
For example you can do the following
|
||||
|
||||
=> setenv ethact FEC
|
||||
=> ping 192.168.0.1 # traffic sent on FEC
|
||||
=> setenv ethact SCC
|
||||
=> ping 10.0.0.1 # traffic sent on SCC
|
||||
|
||||
ethrotate - When set to "no" U-Boot does not go through all
|
||||
available network interfaces.
|
||||
It just stays at the currently selected interface.
|
||||
|
||||
netretry - When set to "no" each network operation will
|
||||
either succeed or fail without retrying.
|
||||
When set to "once" the network operation will
|
||||
fail when all the available network interfaces
|
||||
are tried once without success.
|
||||
Useful on scripts which control the retry operation
|
||||
themselves.
|
||||
|
||||
npe_ucode - set load address for the NPE microcode
|
||||
|
||||
silent_linux - If set then Linux will be told to boot silently, by
|
||||
changing the console to be empty. If "yes" it will be
|
||||
made silent. If "no" it will not be made silent. If
|
||||
unset, then it will be made silent if the U-Boot console
|
||||
is silent.
|
||||
|
||||
tftpsrcp - If this is set, the value is used for TFTP's
|
||||
UDP source port.
|
||||
|
||||
tftpdstp - If this is set, the value is used for TFTP's UDP
|
||||
destination port instead of the Well Know Port 69.
|
||||
|
||||
tftpblocksize - Block size to use for TFTP transfers; if not set,
|
||||
we use the TFTP server's default block size
|
||||
|
||||
tftptimeout - Retransmission timeout for TFTP packets (in milli-
|
||||
seconds, minimum value is 1000 = 1 second). Defines
|
||||
when a packet is considered to be lost so it has to
|
||||
be retransmitted. The default is 5000 = 5 seconds.
|
||||
Lowering this value may make downloads succeed
|
||||
faster in networks with high packet loss rates or
|
||||
with unreliable TFTP servers.
|
||||
|
||||
tftptimeoutcountmax - maximum count of TFTP timeouts (no
|
||||
unit, minimum value = 0). Defines how many timeouts
|
||||
can happen during a single file transfer before that
|
||||
transfer is aborted. The default is 10, and 0 means
|
||||
'no timeouts allowed'. Increasing this value may help
|
||||
downloads succeed with high packet loss rates, or with
|
||||
unreliable TFTP servers or client hardware.
|
||||
|
||||
tftpwindowsize - if this is set, the value is used for TFTP's
|
||||
window size as described by RFC 7440.
|
||||
This means the count of blocks we can receive before
|
||||
sending ack to server.
|
||||
|
||||
vlan - When set to a value < 4095 the traffic over
|
||||
Ethernet is encapsulated/received over 802.1q
|
||||
VLAN tagged frames.
|
||||
|
||||
bootpretryperiod - Period during which BOOTP/DHCP sends retries.
|
||||
Unsigned value, in milliseconds. If not set, the period will
|
||||
be either the default (28000), or a value based on
|
||||
CONFIG_NET_RETRY_COUNT, if defined. This value has
|
||||
precedence over the valu based on CONFIG_NET_RETRY_COUNT.
|
||||
|
||||
memmatches - Number of matches found by the last 'ms' command, in hex
|
||||
|
||||
memaddr - Address of the last match found by the 'ms' command, in hex,
|
||||
or 0 if none
|
||||
|
||||
mempos - Index position of the last match found by the 'ms' command,
|
||||
in units of the size (.b, .w, .l) of the search
|
||||
|
||||
zbootbase - (x86 only) Base address of the bzImage 'setup' block
|
||||
|
||||
zbootaddr - (x86 only) Address of the loaded bzImage, typically
|
||||
BZIMAGE_LOAD_ADDR which is 0x100000
|
||||
|
||||
The following image location variables contain the location of images
|
||||
used in booting. The "Image" column gives the role of the image and is
|
||||
not an environment variable name. The other columns are environment
|
||||
variable names. "File Name" gives the name of the file on a TFTP
|
||||
server, "RAM Address" gives the location in RAM the image will be
|
||||
loaded to, and "Flash Location" gives the image's address in NOR
|
||||
flash or offset in NAND flash.
|
||||
|
||||
*Note* - these variables don't have to be defined for all boards, some
|
||||
boards currently use other variables for these purposes, and some
|
||||
boards use these variables for other purposes.
|
||||
|
||||
Image File Name RAM Address Flash Location
|
||||
----- --------- ----------- --------------
|
||||
u-boot u-boot u-boot_addr_r u-boot_addr
|
||||
Linux kernel bootfile kernel_addr_r kernel_addr
|
||||
device tree blob fdtfile fdt_addr_r fdt_addr
|
||||
ramdisk ramdiskfile ramdisk_addr_r ramdisk_addr
|
||||
|
||||
The following environment variables may be used and automatically
|
||||
updated by the network boot commands ("bootp" and "rarpboot"),
|
||||
depending the information provided by your boot server:
|
||||
|
||||
bootfile - see above
|
||||
dnsip - IP address of your Domain Name Server
|
||||
dnsip2 - IP address of your secondary Domain Name Server
|
||||
gatewayip - IP address of the Gateway (Router) to use
|
||||
hostname - Target hostname
|
||||
ipaddr - see above
|
||||
netmask - Subnet Mask
|
||||
rootpath - Pathname of the root filesystem on the NFS server
|
||||
serverip - see above
|
||||
|
||||
|
||||
There are two special Environment Variables:
|
||||
|
||||
serial# - contains hardware identification information such
|
||||
as type string and/or serial number
|
||||
ethaddr - Ethernet address
|
||||
|
||||
These variables can be set only once (usually during manufacturing of
|
||||
the board). U-Boot refuses to delete or overwrite these variables
|
||||
once they have been set once.
|
||||
|
||||
|
||||
Further special Environment Variables:
|
||||
|
||||
ver - Contains the U-Boot version string as printed
|
||||
with the "version" command. This variable is
|
||||
readonly (see CONFIG_VERSION_VARIABLE).
|
||||
|
||||
|
||||
Please note that changes to some configuration parameters may take
|
||||
only effect after the next boot (yes, that's just like Windoze :-).
|
||||
|
||||
|
||||
Callback functions for environment variables:
|
||||
---------------------------------------------
|
||||
|
||||
For some environment variables, the behavior of u-boot needs to change
|
||||
when their values are changed. This functionality allows functions to
|
||||
be associated with arbitrary variables. On creation, overwrite, or
|
||||
deletion, the callback will provide the opportunity for some side
|
||||
effect to happen or for the change to be rejected.
|
||||
|
||||
The callbacks are named and associated with a function using the
|
||||
U_BOOT_ENV_CALLBACK macro in your board or driver code.
|
||||
|
||||
These callbacks are associated with variables in one of two ways. The
|
||||
static list can be added to by defining CONFIG_ENV_CALLBACK_LIST_STATIC
|
||||
in the board configuration to a string that defines a list of
|
||||
associations. The list must be in the following format:
|
||||
|
||||
entry = variable_name[:callback_name]
|
||||
list = entry[,list]
|
||||
|
||||
If the callback name is not specified, then the callback is deleted.
|
||||
Spaces are also allowed anywhere in the list.
|
||||
|
||||
Callbacks can also be associated by defining the ".callbacks" variable
|
||||
with the same list format above. Any association in ".callbacks" will
|
||||
override any association in the static list. You can define
|
||||
CONFIG_ENV_CALLBACK_LIST_DEFAULT to a list (string) to define the
|
||||
".callbacks" environment variable in the default or embedded environment.
|
||||
|
||||
If CONFIG_REGEX is defined, the variable_name above is evaluated as a
|
||||
regular expression. This allows multiple variables to be connected to
|
||||
the same callback without explicitly listing them all out.
|
||||
|
||||
The signature of the callback functions is:
|
||||
|
||||
int callback(const char *name, const char *value, enum env_op op, int flags)
|
||||
|
||||
* name - changed environment variable
|
||||
* value - new value of the environment variable
|
||||
* op - operation (create, overwrite, or delete)
|
||||
* flags - attributes of the environment variable change, see flags H_* in
|
||||
include/search.h
|
||||
|
||||
The return value is 0 if the variable change is accepted and 1 otherwise.
|
||||
|
||||
|
||||
Note for Redundant Ethernet Interfaces:
|
||||
=======================================
|
||||
|
||||
|
|
19
arch/Kconfig
19
arch/Kconfig
|
@ -1,3 +1,7 @@
|
|||
config ARCH_MAP_SYSMEM
|
||||
depends on SANDBOX || NDS32
|
||||
def_bool y
|
||||
|
||||
config CREATE_ARCH_SYMLINK
|
||||
bool
|
||||
|
||||
|
@ -194,6 +198,8 @@ config SANDBOX
|
|||
imply PHY_FIXED
|
||||
imply DM_DSA
|
||||
imply CMD_EXTENSION
|
||||
imply KEYBOARD
|
||||
imply PHYSMEM
|
||||
|
||||
config SH
|
||||
bool "SuperH architecture"
|
||||
|
@ -245,6 +251,7 @@ config X86
|
|||
imply USB_ETHER_SMSC95XX
|
||||
imply USB_HOST_ETHER
|
||||
imply PCH
|
||||
imply PHYSMEM
|
||||
imply RTC_MC146818
|
||||
imply ACPIGEN if !QEMU
|
||||
imply SYSINFO if GENERATE_SMBIOS_TABLE
|
||||
|
@ -350,6 +357,18 @@ config SYS_DISABLE_DCACHE_OPS
|
|||
Note that, its up to the individual architectures to implement
|
||||
this functionality.
|
||||
|
||||
config SYS_IMMR
|
||||
hex
|
||||
depends on PPC || FSL_LSCH2 || FSL_LSCH3 || ARCH_LS1021A
|
||||
default 0xFF000000 if MPC8xx
|
||||
default 0xF0000000 if ARCH_MPC8313
|
||||
default 0xE0000000 if MPC83xx && !ARCH_MPC8313
|
||||
default 0x01000000 if ARCH_LS1021A || FSL_LSCH2 || FSL_LSCH3
|
||||
default SYS_CCSRBAR_DEFAULT
|
||||
help
|
||||
Address for the Internal Memory-Mapped Registers (IMMR) window used
|
||||
to configure the features of many Freescale / NXP SoCs.
|
||||
|
||||
config SKIP_LOWLEVEL_INIT
|
||||
bool "Skip the calls to certain low level initialization functions"
|
||||
depends on ARM || NDS32 || MIPS || RISCV
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
*/
|
||||
|
||||
#include <common.h>
|
||||
#include <clock_legacy.h>
|
||||
#include <init.h>
|
||||
#include <malloc.h>
|
||||
#include <vsprintf.h>
|
||||
|
@ -18,7 +19,7 @@ int arch_cpu_init(void)
|
|||
{
|
||||
timer_init();
|
||||
|
||||
gd->cpu_clk = CONFIG_SYS_CLK_FREQ;
|
||||
gd->cpu_clk = get_board_sys_clk();
|
||||
gd->ram_size = CONFIG_SYS_SDRAM_SIZE;
|
||||
|
||||
cache_init();
|
||||
|
|
|
@ -311,6 +311,10 @@ config CPU_PXA
|
|||
select SYS_CACHE_SHIFT_5
|
||||
imply SYS_ARM_MMU
|
||||
|
||||
config CPU_PXA27X
|
||||
bool
|
||||
select CPU_PXA
|
||||
|
||||
config CPU_SA1100
|
||||
bool
|
||||
select SYS_CACHE_SHIFT_5
|
||||
|
@ -635,6 +639,7 @@ config ARCH_BCMSTB
|
|||
select GPIO_EXTRA_HEADER
|
||||
select OF_CONTROL
|
||||
imply CMD_DM
|
||||
imply OF_HAS_PRIOR_STAGE
|
||||
help
|
||||
This enables support for Broadcom ARM-based set-top box
|
||||
chipsets, including the 7445 family of chips.
|
||||
|
@ -707,12 +712,12 @@ config ARCH_HIGHBANK
|
|||
select DM
|
||||
select DM_SERIAL
|
||||
select OF_CONTROL
|
||||
select OF_BOARD
|
||||
select CLK
|
||||
select CLK_CCF
|
||||
select AHCI
|
||||
select DM_ETH
|
||||
select PHYS_64BIT
|
||||
imply OF_HAS_PRIOR_STAGE
|
||||
|
||||
config ARCH_INTEGRATOR
|
||||
bool "ARM Ltd. Integrator family"
|
||||
|
@ -927,6 +932,7 @@ config ARCH_APPLE
|
|||
select CLK
|
||||
select CMD_USB
|
||||
select DM
|
||||
select DM_GPIO
|
||||
select DM_KEYBOARD
|
||||
select DM_SERIAL
|
||||
select DM_USB
|
||||
|
@ -934,12 +940,13 @@ config ARCH_APPLE
|
|||
select IOMMU
|
||||
select LINUX_KERNEL_IMAGE_HEADER
|
||||
select OF_CONTROL
|
||||
select OF_BOARD
|
||||
select PINCTRL
|
||||
select POSITION_INDEPENDENT
|
||||
select USB
|
||||
imply CMD_DM
|
||||
imply CMD_GPT
|
||||
imply DISTRO_DEFAULTS
|
||||
imply OF_HAS_PRIOR_STAGE
|
||||
|
||||
config ARCH_OWL
|
||||
bool "Actions Semi OWL SoCs"
|
||||
|
@ -964,6 +971,7 @@ config ARCH_QEMU
|
|||
imply DM_RNG
|
||||
imply DM_RTC
|
||||
imply RTC_PL031
|
||||
imply OF_HAS_PRIOR_STAGE
|
||||
|
||||
config ARCH_RMOBILE
|
||||
bool "Renesas ARM SoCs"
|
||||
|
@ -1241,7 +1249,6 @@ config TARGET_VEXPRESS64_JUNO
|
|||
select PL01X_SERIAL
|
||||
select DM
|
||||
select OF_CONTROL
|
||||
select OF_BOARD
|
||||
select CLK
|
||||
select DM_SERIAL
|
||||
select ARM_PSCI_FW
|
||||
|
@ -1249,6 +1256,7 @@ config TARGET_VEXPRESS64_JUNO
|
|||
select DM_ETH
|
||||
select BLK
|
||||
select USB
|
||||
imply OF_HAS_PRIOR_STAGE
|
||||
|
||||
config TARGET_TOTAL_COMPUTE
|
||||
bool "Support Total Compute Platform"
|
||||
|
@ -1763,7 +1771,7 @@ config TARGET_SL28
|
|||
|
||||
config TARGET_COLIBRI_PXA270
|
||||
bool "Support colibri_pxa270"
|
||||
select CPU_PXA
|
||||
select CPU_PXA27X
|
||||
select GPIO_EXTRA_HEADER
|
||||
|
||||
config ARCH_UNIPHIER
|
||||
|
@ -1905,6 +1913,8 @@ config ARCH_OCTEONTX
|
|||
select OF_LIVE
|
||||
select BOARD_LATE_INIT
|
||||
select SYS_CACHE_SHIFT_7
|
||||
select SYS_PCI_64BIT if PCI
|
||||
imply OF_HAS_PRIOR_STAGE
|
||||
|
||||
config ARCH_OCTEONTX2
|
||||
bool "Support OcteonTX2 SoCs"
|
||||
|
@ -1916,6 +1926,8 @@ config ARCH_OCTEONTX2
|
|||
select OF_LIVE
|
||||
select BOARD_LATE_INIT
|
||||
select SYS_CACHE_SHIFT_7
|
||||
select SYS_PCI_64BIT if PCI
|
||||
imply OF_HAS_PRIOR_STAGE
|
||||
|
||||
config TARGET_THUNDERX_88XX
|
||||
bool "Support ThunderX 88xx"
|
||||
|
@ -1952,6 +1964,8 @@ config TARGET_XENGUEST_ARM64
|
|||
select LINUX_KERNEL_IMAGE_HEADER
|
||||
select XEN_SERIAL
|
||||
select SSCANF
|
||||
imply OF_HAS_PRIOR_STAGE
|
||||
|
||||
endchoice
|
||||
|
||||
config SUPPORT_PASSING_ATAGS
|
||||
|
@ -2038,6 +2052,14 @@ config ISW_ENTRY_ADDR
|
|||
image headers.
|
||||
endif
|
||||
|
||||
config SYS_KWD_CONFIG
|
||||
string "kwbimage config file path"
|
||||
depends on ARCH_KIRKWOOD || ARCH_MVEBU
|
||||
default "arch/arm/mach-mvebu/kwbimage.cfg"
|
||||
help
|
||||
Path within the source directory to the kwbimage.cfg file to use
|
||||
when packaging the U-Boot image for use.
|
||||
|
||||
source "arch/arm/mach-apple/Kconfig"
|
||||
|
||||
source "arch/arm/mach-aspeed/Kconfig"
|
||||
|
|
|
@ -6,12 +6,13 @@
|
|||
*/
|
||||
|
||||
#include <common.h>
|
||||
#include <clock_legacy.h>
|
||||
#include <asm/arch/ep93xx.h>
|
||||
#include <asm/io.h>
|
||||
#include <div64.h>
|
||||
|
||||
/*
|
||||
* CONFIG_SYS_CLK_FREQ should be defined as the input frequency of the PLL.
|
||||
* get_board_sys_clk() should be defined as the input frequency of the PLL.
|
||||
*
|
||||
* get_FCLK(), get_HCLK(), get_PCLK() and get_UCLK() return the clock of
|
||||
* the specified bus in HZ.
|
||||
|
@ -20,14 +21,14 @@
|
|||
/*
|
||||
* return the PLL output frequency
|
||||
*
|
||||
* PLL rate = CONFIG_SYS_CLK_FREQ * (X1FBD + 1) * (X2FBD + 1)
|
||||
* PLL rate = get_board_sys_clk() * (X1FBD + 1) * (X2FBD + 1)
|
||||
* / (X2IPD + 1) / 2^PS
|
||||
*/
|
||||
static ulong get_PLLCLK(uint32_t *pllreg)
|
||||
{
|
||||
uint8_t i;
|
||||
const uint32_t clkset = readl(pllreg);
|
||||
uint64_t rate = CONFIG_SYS_CLK_FREQ;
|
||||
uint64_t rate = get_board_sys_clk();
|
||||
rate *= ((clkset >> SYSCON_CLKSET_PLL_X1FBD1_SHIFT) & 0x1f) + 1;
|
||||
rate *= ((clkset >> SYSCON_CLKSET_PLL_X2FBD2_SHIFT) & 0x3f) + 1;
|
||||
do_div(rate, (clkset & 0x1f) + 1); /* X2IPD */
|
||||
|
@ -87,9 +88,9 @@ ulong get_UCLK(void)
|
|||
|
||||
const uint32_t value = readl(&syscon->pwrcnt);
|
||||
if (value & SYSCON_PWRCNT_UART_BAUD)
|
||||
uclk_rate = CONFIG_SYS_CLK_FREQ;
|
||||
uclk_rate = get_board_sys_clk();
|
||||
else
|
||||
uclk_rate = CONFIG_SYS_CLK_FREQ / 2;
|
||||
uclk_rate = get_board_sys_clk() / 2;
|
||||
|
||||
return uclk_rate;
|
||||
}
|
||||
|
|
|
@ -7,13 +7,14 @@
|
|||
|
||||
#include <common.h>
|
||||
#if defined (CONFIG_IMX)
|
||||
#include <clock_legacy.h>
|
||||
|
||||
#include <asm/arch/imx-regs.h>
|
||||
|
||||
/* ------------------------------------------------------------------------- */
|
||||
/* NOTE: This describes the proper use of this file.
|
||||
*
|
||||
* CONFIG_SYS_CLK_FREQ should be defined as the input frequency of the PLL.
|
||||
* get_board_sys_clk() should be defined as the input frequency of the PLL.
|
||||
* SH FIXME: 16780000 in our case
|
||||
* get_FCLK(), get_HCLK(), get_PCLK() and get_UCLK() return the clock of
|
||||
* the specified bus in HZ.
|
||||
|
@ -45,7 +46,7 @@ ulong get_mcuPLLCLK(void)
|
|||
|
||||
mfi = mfi<=5 ? 5 : mfi;
|
||||
|
||||
return (2*(CONFIG_SYS_CLK_FREQ>>10)*( (mfi<<10) + (mfn<<10)/(mfd+1)))/(pd+1);
|
||||
return (2*(get_board_sys_clk()>>10)*( (mfi<<10) + (mfn<<10)/(mfd+1)))/(pd+1);
|
||||
}
|
||||
|
||||
ulong get_FCLK(void)
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
config ARCH_LS1021A
|
||||
bool
|
||||
select FSL_IFC if !QSPI_BOOT && !SD_BOOT_QSPI
|
||||
select SYS_FSL_DDR_BE if SYS_FSL_DDR
|
||||
select SYS_FSL_DDR_VER_50 if SYS_FSL_DDR
|
||||
select SYS_FSL_ERRATUM_A008378
|
||||
|
|
|
@ -39,7 +39,7 @@ void get_sys_info(struct sys_info *sys_info)
|
|||
uint i;
|
||||
uint freq_c_pll[CONFIG_SYS_FSL_NUM_CC_PLLS];
|
||||
uint ratio[CONFIG_SYS_FSL_NUM_CC_PLLS];
|
||||
unsigned long sysclk = CONFIG_SYS_CLK_FREQ;
|
||||
unsigned long sysclk = get_board_sys_clk();
|
||||
|
||||
sys_info->freq_systembus = sysclk;
|
||||
#if defined(CONFIG_DYNAMIC_DDR_CLK_FREQ) || defined(CONFIG_STATIC_DDR_CLK_FREQ)
|
||||
|
|
|
@ -131,9 +131,9 @@ void ft_cpu_setup(void *blob, struct bd_info *bd)
|
|||
sysclk_path = fdt_get_alias(blob, "sysclk");
|
||||
if (sysclk_path)
|
||||
do_fixup_by_path_u32(blob, sysclk_path, "clock-frequency",
|
||||
CONFIG_SYS_CLK_FREQ, 1);
|
||||
get_board_sys_clk(), 1);
|
||||
do_fixup_by_compat_u32(blob, "fsl,qoriq-sysclk-2.0",
|
||||
"clock-frequency", CONFIG_SYS_CLK_FREQ, 1);
|
||||
"clock-frequency", get_board_sys_clk(), 1);
|
||||
|
||||
#if defined(CONFIG_DEEP_SLEEP) && defined(CONFIG_SD_BOOT)
|
||||
#define UBOOT_HEAD_LEN 0x1000
|
||||
|
@ -184,13 +184,13 @@ void ft_cpu_setup(void *blob, struct bd_info *bd)
|
|||
#if defined(CONFIG_QSPI_BOOT) || defined(CONFIG_SD_BOOT_QSPI)
|
||||
off = fdt_node_offset_by_compat_reg(blob, FSL_IFC_COMPAT,
|
||||
CONFIG_SYS_IFC_ADDR);
|
||||
fdt_set_node_status(blob, off, FDT_STATUS_DISABLED, 0);
|
||||
fdt_set_node_status(blob, off, FDT_STATUS_DISABLED);
|
||||
#else
|
||||
off = fdt_node_offset_by_compat_reg(blob, FSL_QSPI_COMPAT,
|
||||
QSPI0_BASE_ADDR);
|
||||
fdt_set_node_status(blob, off, FDT_STATUS_DISABLED, 0);
|
||||
fdt_set_node_status(blob, off, FDT_STATUS_DISABLED);
|
||||
off = fdt_node_offset_by_compat_reg(blob, FSL_DSPI_COMPAT,
|
||||
DSPI1_BASE_ADDR);
|
||||
fdt_set_node_status(blob, off, FDT_STATUS_DISABLED, 0);
|
||||
fdt_set_node_status(blob, off, FDT_STATUS_DISABLED);
|
||||
#endif
|
||||
}
|
||||
|
|
|
@ -41,6 +41,7 @@ config ARCH_LS1028A
|
|||
select SYS_FSL_SEC_COMPAT_5
|
||||
select SYS_FSL_SEC_LE
|
||||
select FSL_TZASC_1
|
||||
select FSL_TZPC_BP147
|
||||
select ARCH_EARLY_INIT_R
|
||||
select BOARD_EARLY_INIT_F
|
||||
select SYS_I2C_MXC
|
||||
|
@ -59,6 +60,7 @@ config ARCH_LS1043A
|
|||
bool
|
||||
select ARMV8_SET_SMPEN
|
||||
select ARM_ERRATA_855873 if !TFABOOT
|
||||
select FSL_IFC if TFABOOT || (!QSPI_BOOT && !SD_BOOT_QSPI)
|
||||
select FSL_LAYERSCAPE
|
||||
select FSL_LSCH2
|
||||
select GICV2
|
||||
|
@ -94,6 +96,7 @@ config ARCH_LS1043A
|
|||
config ARCH_LS1046A
|
||||
bool
|
||||
select ARMV8_SET_SMPEN
|
||||
select FSL_IFC if TFABOOT || (!QSPI_BOOT && !SD_BOOT_QSPI)
|
||||
select FSL_LAYERSCAPE
|
||||
select FSL_LSCH2
|
||||
select GICV2
|
||||
|
@ -134,6 +137,7 @@ config ARCH_LS1088A
|
|||
bool
|
||||
select ARMV8_SET_SMPEN
|
||||
select ARM_ERRATA_855873 if !TFABOOT
|
||||
select FSL_IFC
|
||||
select FSL_LAYERSCAPE
|
||||
select FSL_LSCH3
|
||||
select GICV3
|
||||
|
@ -182,6 +186,7 @@ config ARCH_LS2080A
|
|||
select ARM_ERRATA_828024
|
||||
select ARM_ERRATA_829520
|
||||
select ARM_ERRATA_833471
|
||||
select FSL_IFC
|
||||
select FSL_LAYERSCAPE
|
||||
select FSL_LSCH3
|
||||
select GICV3
|
||||
|
@ -233,8 +238,11 @@ config ARCH_LS2080A
|
|||
config ARCH_LX2162A
|
||||
bool
|
||||
select ARMV8_SET_SMPEN
|
||||
select FSL_DDR_BIST
|
||||
select FSL_DDR_INTERACTIVE
|
||||
select FSL_LAYERSCAPE
|
||||
select FSL_LSCH3
|
||||
select FSL_TZPC_BP147
|
||||
select GICV3
|
||||
select NXP_LSCH3_2
|
||||
select SYS_HAS_SERDES
|
||||
|
@ -254,6 +262,7 @@ config ARCH_LX2162A
|
|||
select SYS_FSL_HAS_DDR4
|
||||
select SYS_FSL_SEC_COMPAT_5
|
||||
select SYS_FSL_SEC_LE
|
||||
select SYS_PCI_64BIT if PCI
|
||||
select ARCH_EARLY_INIT_R
|
||||
select BOARD_EARLY_INIT_F
|
||||
select SYS_I2C_MXC
|
||||
|
@ -267,8 +276,11 @@ config ARCH_LX2162A
|
|||
config ARCH_LX2160A
|
||||
bool
|
||||
select ARMV8_SET_SMPEN
|
||||
select FSL_DDR_BIST
|
||||
select FSL_DDR_INTERACTIVE
|
||||
select FSL_LAYERSCAPE
|
||||
select FSL_LSCH3
|
||||
select FSL_TZPC_BP147
|
||||
select GICV3
|
||||
select HAS_FSL_XHCI_USB if USB_HOST
|
||||
select NXP_LSCH3_2
|
||||
|
@ -290,6 +302,7 @@ config ARCH_LX2160A
|
|||
select SYS_FSL_HAS_DDR4
|
||||
select SYS_FSL_SEC_COMPAT_5
|
||||
select SYS_FSL_SEC_LE
|
||||
select SYS_PCI_64BIT if PCI
|
||||
select ARCH_EARLY_INIT_R
|
||||
select BOARD_EARLY_INIT_F
|
||||
select SYS_I2C_MXC
|
||||
|
@ -517,10 +530,6 @@ endmenu
|
|||
menu "Layerscape clock tree configuration"
|
||||
depends on FSL_LSCH2 || FSL_LSCH3
|
||||
|
||||
config SYS_FSL_CLK
|
||||
bool "Enable clock tree initialization"
|
||||
default y
|
||||
|
||||
config CLUSTER_CLK_FREQ
|
||||
int "Reference clock of core cluster"
|
||||
depends on ARCH_LS1012A
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
*/
|
||||
|
||||
#include <common.h>
|
||||
#include <clock_legacy.h>
|
||||
#include <cpu_func.h>
|
||||
#include <env.h>
|
||||
#include <fsl_ddr_sdram.h>
|
||||
|
|
|
@ -161,7 +161,7 @@ void fsl_fdt_disable_usb(void *blob)
|
|||
* controller is used, SYSCLK must meet the additional requirement
|
||||
* of 100 MHz.
|
||||
*/
|
||||
if (CONFIG_SYS_CLK_FREQ != 100000000) {
|
||||
if (get_board_sys_clk() != 100000000) {
|
||||
off = fdt_node_offset_by_compatible(blob, -1, "snps,dwc3");
|
||||
while (off != -FDT_ERR_NOTFOUND) {
|
||||
fdt_status_disabled(blob, off);
|
||||
|
@ -655,7 +655,7 @@ void ft_cpu_setup(void *blob, struct bd_info *bd)
|
|||
#endif
|
||||
|
||||
do_fixup_by_path_u32(blob, "/sysclk", "clock-frequency",
|
||||
CONFIG_SYS_CLK_FREQ, 1);
|
||||
get_board_sys_clk(), 1);
|
||||
|
||||
#ifdef CONFIG_GIC_V3_ITS
|
||||
ls_gic_rd_tables_init(blob);
|
||||
|
|
|
@ -52,12 +52,12 @@ void get_sys_info(struct sys_info *sys_info)
|
|||
uint i, cluster;
|
||||
uint freq_c_pll[CONFIG_SYS_FSL_NUM_CC_PLLS];
|
||||
uint ratio[CONFIG_SYS_FSL_NUM_CC_PLLS];
|
||||
unsigned long sysclk = CONFIG_SYS_CLK_FREQ;
|
||||
unsigned long sysclk = get_board_sys_clk();
|
||||
unsigned long cluster_clk;
|
||||
|
||||
sys_info->freq_systembus = sysclk;
|
||||
#ifndef CONFIG_CLUSTER_CLK_FREQ
|
||||
#define CONFIG_CLUSTER_CLK_FREQ CONFIG_SYS_CLK_FREQ
|
||||
#define CONFIG_CLUSTER_CLK_FREQ get_board_sys_clk()
|
||||
#endif
|
||||
cluster_clk = CONFIG_CLUSTER_CLK_FREQ;
|
||||
|
||||
|
|
|
@ -72,7 +72,7 @@ void get_sys_info(struct sys_info *sys_info)
|
|||
#endif
|
||||
uint freq_c_pll[CONFIG_SYS_FSL_NUM_CC_PLLS];
|
||||
uint ratio[CONFIG_SYS_FSL_NUM_CC_PLLS];
|
||||
unsigned long sysclk = CONFIG_SYS_CLK_FREQ;
|
||||
unsigned long sysclk = get_board_sys_clk();
|
||||
int cc_group[12] = CONFIG_SYS_FSL_CLUSTER_CLOCKS;
|
||||
u32 c_pll_sel, cplx_pll;
|
||||
void *offset;
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
*/
|
||||
|
||||
#include <common.h>
|
||||
#include <clock_legacy.h>
|
||||
#include <cpu_func.h>
|
||||
#include <image.h>
|
||||
#include <log.h>
|
||||
|
|
|
@ -93,7 +93,9 @@ void board_init_f(ulong dummy)
|
|||
i2c_init_all();
|
||||
#endif
|
||||
#endif
|
||||
#ifdef CONFIG_VID
|
||||
#if defined(CONFIG_VID) && (defined(CONFIG_ARCH_LS1088A) || \
|
||||
defined(CONFIG_ARCH_LX2160A) || \
|
||||
defined(CONFIG_ARCH_LX2162A))
|
||||
init_func_vid();
|
||||
#endif
|
||||
dram_init();
|
||||
|
|
|
@ -361,7 +361,8 @@ dtb-$(CONFIG_ARCH_ZYNQMP) += \
|
|||
dtb-$(CONFIG_ARCH_VERSAL) += \
|
||||
versal-mini.dtb \
|
||||
versal-mini-emmc0.dtb \
|
||||
versal-mini-emmc1.dtb
|
||||
versal-mini-emmc1.dtb \
|
||||
xilinx-versal-virt.dtb
|
||||
dtb-$(CONFIG_ARCH_ZYNQMP_R5) += \
|
||||
zynqmp-r5.dtb
|
||||
dtb-$(CONFIG_AM33XX) += \
|
||||
|
@ -871,6 +872,8 @@ dtb-$(CONFIG_MX7) += imx7d-sdb.dtb \
|
|||
dtb-$(CONFIG_ARCH_MX7ULP) += imx7ulp-com.dtb \
|
||||
imx7ulp-evk.dtb
|
||||
|
||||
dtb-$(CONFIG_ARCH_HIGHBANK) += highbank.dtb
|
||||
|
||||
dtb-$(CONFIG_ARCH_IMX8) += \
|
||||
fsl-imx8qm-apalis.dtb \
|
||||
fsl-imx8qm-mek.dtb \
|
||||
|
@ -1078,7 +1081,8 @@ dtb-$(CONFIG_ARCH_BCM283X) += \
|
|||
bcm2837-rpi-3-a-plus.dtb \
|
||||
bcm2837-rpi-3-b.dtb \
|
||||
bcm2837-rpi-3-b-plus.dtb \
|
||||
bcm2837-rpi-cm3-io3.dtb
|
||||
bcm2837-rpi-cm3-io3.dtb \
|
||||
bcm2711-rpi-4-b.dtb
|
||||
|
||||
dtb-$(CONFIG_ARCH_BCM63158) += \
|
||||
bcm963158.dtb
|
||||
|
@ -1091,6 +1095,8 @@ dtb-$(CONFIG_ARCH_BCM6858) += \
|
|||
|
||||
dtb-$(CONFIG_TARGET_BCMNS3) += ns3-board.dtb
|
||||
|
||||
dtb-$(CONFIG_ARCH_BCMSTB) += bcm7xxx.dtb
|
||||
|
||||
dtb-$(CONFIG_ASPEED_AST2500) += ast2500-evb.dtb
|
||||
dtb-$(CONFIG_ASPEED_AST2600) += ast2600-evb.dtb
|
||||
|
||||
|
@ -1140,6 +1146,11 @@ dtb-$(CONFIG_ARCH_MEDIATEK) += \
|
|||
mt8516-pumpkin.dtb \
|
||||
mt8518-ap1-emmc.dtb
|
||||
|
||||
dtb-$(CONFIG_XEN) += xenguest-arm64.dtb
|
||||
|
||||
dtb-$(CONFIG_ARCH_OCTEONTX) += octeontx.dtb
|
||||
dtb-$(CONFIG_ARCH_OCTEONTX2) += octeontx.dtb
|
||||
|
||||
dtb-$(CONFIG_TARGET_GE_BX50V3) += \
|
||||
imx6q-bx50v3.dtb \
|
||||
imx6q-b850v3.dtb \
|
||||
|
@ -1149,7 +1160,10 @@ dtb-$(CONFIG_TARGET_GE_BX50V3) += \
|
|||
dtb-$(CONFIG_TARGET_GE_B1X5V2) += imx6dl-b1x5v2.dtb
|
||||
dtb-$(CONFIG_TARGET_MX53PPD) += imx53-ppd.dtb
|
||||
|
||||
# TODO(Linus Walleij <linus.walleij@linaro.org>): Should us a single vexpress
|
||||
# Kconfig option to build all of these. See examples above.
|
||||
dtb-$(CONFIG_TARGET_VEXPRESS_CA9X4) += vexpress-v2p-ca9.dtb
|
||||
dtb-$(CONFIG_TARGET_VEXPRESS64_JUNO) += juno-r2.dtb
|
||||
|
||||
dtb-$(CONFIG_TARGET_TOTAL_COMPUTE) += total_compute.dtb
|
||||
|
||||
|
@ -1163,6 +1177,8 @@ dtb-$(CONFIG_TARGET_IMX8MM_CL_IOT_GATE_OPTEE) += imx8mm-cl-iot-gate-optee.dtb
|
|||
|
||||
dtb-$(CONFIG_TARGET_EA_LPC3250DEVKITV2) += lpc3250-ea3250.dtb
|
||||
|
||||
dtb-$(CONFIG_ARCH_QEMU) += qemu-arm.dtb qemu-arm64.dtb
|
||||
|
||||
targets += $(dtb-y)
|
||||
|
||||
# Add any required device tree compiler flags here
|
||||
|
|
|
@ -80,24 +80,6 @@
|
|||
};
|
||||
};
|
||||
|
||||
&comphy {
|
||||
max-lanes = <3>;
|
||||
phy0 {
|
||||
phy-type = <COMPHY_TYPE_USB3_HOST0>;
|
||||
phy-speed = <COMPHY_SPEED_5G>;
|
||||
};
|
||||
|
||||
phy1 {
|
||||
phy-type = <COMPHY_TYPE_PEX0>;
|
||||
phy-speed = <COMPHY_SPEED_2_5G>;
|
||||
};
|
||||
|
||||
phy2 {
|
||||
phy-type = <COMPHY_TYPE_SATA0>;
|
||||
phy-speed = <COMPHY_SPEED_5G>;
|
||||
};
|
||||
};
|
||||
|
||||
ð0 {
|
||||
status = "okay";
|
||||
pinctrl-names = "default";
|
||||
|
@ -119,6 +101,7 @@
|
|||
/* CON3 */
|
||||
&sata {
|
||||
status = "okay";
|
||||
phys = <&comphy2 0>;
|
||||
};
|
||||
|
||||
&sdhci0 {
|
||||
|
@ -200,6 +183,7 @@
|
|||
/* CON31 */
|
||||
&usb3 {
|
||||
status = "okay";
|
||||
phys = <&comphy0 0>;
|
||||
};
|
||||
|
||||
&pcie0 {
|
||||
|
@ -207,4 +191,5 @@
|
|||
pinctrl-0 = <&pcie_pins>;
|
||||
reset-gpios = <&gpiosb 3 GPIO_ACTIVE_LOW>;
|
||||
status = "okay";
|
||||
phys = <&comphy1 0>;
|
||||
};
|
||||
|
|
|
@ -94,24 +94,6 @@
|
|||
};
|
||||
};
|
||||
|
||||
&comphy {
|
||||
max-lanes = <3>;
|
||||
phy0 {
|
||||
phy-type = <COMPHY_TYPE_SGMII1>;
|
||||
phy-speed = <COMPHY_SPEED_3_125G>;
|
||||
};
|
||||
|
||||
phy1 {
|
||||
phy-type = <COMPHY_TYPE_PEX0>;
|
||||
phy-speed = <COMPHY_SPEED_5G>;
|
||||
};
|
||||
|
||||
phy2 {
|
||||
phy-type = <COMPHY_TYPE_USB3_HOST0>;
|
||||
phy-speed = <COMPHY_SPEED_5G>;
|
||||
};
|
||||
};
|
||||
|
||||
ð0 {
|
||||
status = "okay";
|
||||
pinctrl-names = "default";
|
||||
|
@ -120,6 +102,11 @@
|
|||
phy = <ð_phy1>;
|
||||
};
|
||||
|
||||
ð1 {
|
||||
phy-mode = "2500base-x";
|
||||
phys = <&comphy0 1>;
|
||||
};
|
||||
|
||||
&i2c0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2c1_pins>;
|
||||
|
@ -222,6 +209,7 @@
|
|||
&usb3 {
|
||||
vbus-supply = <®_usb3_vbus>;
|
||||
status = "okay";
|
||||
phys = <&comphy2 0>;
|
||||
};
|
||||
|
||||
&pcie0 {
|
||||
|
@ -229,4 +217,5 @@
|
|||
pinctrl-0 = <&pcie_pins>;
|
||||
reset-gpios = <&gpiosb 3 GPIO_ACTIVE_LOW>;
|
||||
status = "disabled";
|
||||
phys = <&comphy1 0>;
|
||||
};
|
||||
|
|
|
@ -106,36 +106,21 @@
|
|||
};
|
||||
};
|
||||
|
||||
&comphy {
|
||||
phy0 {
|
||||
phy-type = <COMPHY_TYPE_SGMII1>;
|
||||
phy-speed = <COMPHY_SPEED_1_25G>;
|
||||
};
|
||||
|
||||
phy1 {
|
||||
phy-type = <COMPHY_TYPE_SGMII0>;
|
||||
phy-speed = <COMPHY_SPEED_1_25G>;
|
||||
};
|
||||
|
||||
phy2 {
|
||||
phy-type = <COMPHY_TYPE_USB3_HOST1>;
|
||||
phy-speed = <COMPHY_SPEED_5G>;
|
||||
};
|
||||
};
|
||||
|
||||
ð0 {
|
||||
pinctrl-0 = <&pcie_pins>;
|
||||
status = "okay";
|
||||
phy-mode = "2500base-x";
|
||||
phy-mode = "sgmii";
|
||||
managed = "in-band-status";
|
||||
phy = <ðphy0>;
|
||||
phys = <&comphy1 0>;
|
||||
};
|
||||
|
||||
ð1 {
|
||||
status = "okay";
|
||||
phy-mode = "2500base-x";
|
||||
phy-mode = "sgmii";
|
||||
managed = "in-band-status";
|
||||
phy = <ðphy1>;
|
||||
phys = <&comphy0 1>;
|
||||
};
|
||||
|
||||
&i2c0 {
|
||||
|
|
|
@ -316,9 +316,23 @@
|
|||
compatible = "marvell,mvebu-comphy", "marvell,comphy-armada-3700";
|
||||
reg = <0x18300 0x28>,
|
||||
<0x1f300 0x3d000>;
|
||||
mux-bitcount = <4>;
|
||||
mux-lane-order = <1 0 2>;
|
||||
max-lanes = <3>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
comphy0: phy@0 {
|
||||
reg = <0>;
|
||||
#phy-cells = <1>;
|
||||
};
|
||||
|
||||
comphy1: phy@1 {
|
||||
reg = <1>;
|
||||
#phy-cells = <1>;
|
||||
};
|
||||
|
||||
comphy2: phy@2 {
|
||||
reg = <2>;
|
||||
#phy-cells = <1>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
@ -71,6 +71,8 @@
|
|||
spi0 = &spi0;
|
||||
spi1 = &spi1;
|
||||
ethernet0 = ð0;
|
||||
i2c0 = &i2c0;
|
||||
i2c1 = &i2c1;
|
||||
};
|
||||
|
||||
memory {
|
||||
|
@ -156,6 +158,16 @@
|
|||
};
|
||||
};
|
||||
|
||||
&i2c0 {
|
||||
status = "okay";
|
||||
clock-frequency = <100000>;
|
||||
};
|
||||
|
||||
&i2c1 {
|
||||
status = "okay";
|
||||
clock-frequency = <100000>;
|
||||
};
|
||||
|
||||
&spi0 {
|
||||
status = "okay";
|
||||
u-boot,dm-pre-reloc;
|
||||
|
|
|
@ -177,3 +177,13 @@
|
|||
0x08 0x04
|
||||
0x08 0x04>;
|
||||
};
|
||||
|
||||
&hace {
|
||||
u-boot,dm-pre-reloc;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&acry {
|
||||
u-boot,dm-pre-reloc;
|
||||
status = "okay";
|
||||
};
|
||||
|
|
|
@ -187,6 +187,23 @@
|
|||
};
|
||||
};
|
||||
|
||||
hace: hace@1e6d0000 {
|
||||
compatible = "aspeed,ast2600-hace";
|
||||
reg = <0x1e6d0000 0x200>;
|
||||
interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&scu ASPEED_CLK_GATE_YCLK>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
acry: acry@1e6fa000 {
|
||||
compatible = "aspeed,ast2600-acry";
|
||||
reg = <0x1e6fa000 0x1000>,
|
||||
<0x1e710000 0x10000>;
|
||||
interrupts = <GIC_SPI 160 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&scu ASPEED_CLK_GATE_RSACLK>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
edac: sdram@1e6e0000 {
|
||||
compatible = "aspeed,ast2600-sdram-edac";
|
||||
reg = <0x1e6e0000 0x174>;
|
||||
|
|
262
arch/arm/dts/bcm2711-rpi-4-b.dts
Normal file
262
arch/arm/dts/bcm2711-rpi-4-b.dts
Normal file
|
@ -0,0 +1,262 @@
|
|||
// SPDX-License-Identifier: GPL-2.0
|
||||
/dts-v1/;
|
||||
#include "bcm2711.dtsi"
|
||||
#include "bcm2711-rpi.dtsi"
|
||||
#include "bcm283x-rpi-usb-peripheral.dtsi"
|
||||
|
||||
/ {
|
||||
compatible = "raspberrypi,4-model-b", "brcm,bcm2711";
|
||||
model = "Raspberry Pi 4 Model B";
|
||||
|
||||
chosen {
|
||||
/* 8250 auxiliary UART instead of pl011 */
|
||||
stdout-path = "serial1:115200n8";
|
||||
};
|
||||
|
||||
leds {
|
||||
led-act {
|
||||
gpios = <&gpio 42 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
led-pwr {
|
||||
label = "PWR";
|
||||
gpios = <&expgpio 2 GPIO_ACTIVE_LOW>;
|
||||
default-state = "keep";
|
||||
linux,default-trigger = "default-on";
|
||||
};
|
||||
};
|
||||
|
||||
wifi_pwrseq: wifi-pwrseq {
|
||||
compatible = "mmc-pwrseq-simple";
|
||||
reset-gpios = <&expgpio 1 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
sd_io_1v8_reg: sd_io_1v8_reg {
|
||||
compatible = "regulator-gpio";
|
||||
regulator-name = "vdd-sd-io";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
regulator-settling-time-us = <5000>;
|
||||
gpios = <&expgpio 4 GPIO_ACTIVE_HIGH>;
|
||||
states = <1800000 0x1>,
|
||||
<3300000 0x0>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
sd_vcc_reg: sd_vcc_reg {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vcc-sd";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-boot-on;
|
||||
enable-active-high;
|
||||
gpio = <&expgpio 6 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
};
|
||||
|
||||
&ddc0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&ddc1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&expgpio {
|
||||
gpio-line-names = "BT_ON",
|
||||
"WL_ON",
|
||||
"PWR_LED_OFF",
|
||||
"GLOBAL_RESET",
|
||||
"VDD_SD_IO_SEL",
|
||||
"CAM_GPIO",
|
||||
"SD_PWR_ON",
|
||||
"";
|
||||
};
|
||||
|
||||
&gpio {
|
||||
/*
|
||||
* Parts taken from rpi_SCH_4b_4p0_reduced.pdf and
|
||||
* the official GPU firmware DT blob.
|
||||
*
|
||||
* Legend:
|
||||
* "FOO" = GPIO line named "FOO" on the schematic
|
||||
* "FOO_N" = GPIO line named "FOO" on schematic, active low
|
||||
*/
|
||||
gpio-line-names = "ID_SDA",
|
||||
"ID_SCL",
|
||||
"SDA1",
|
||||
"SCL1",
|
||||
"GPIO_GCLK",
|
||||
"GPIO5",
|
||||
"GPIO6",
|
||||
"SPI_CE1_N",
|
||||
"SPI_CE0_N",
|
||||
"SPI_MISO",
|
||||
"SPI_MOSI",
|
||||
"SPI_SCLK",
|
||||
"GPIO12",
|
||||
"GPIO13",
|
||||
/* Serial port */
|
||||
"TXD1",
|
||||
"RXD1",
|
||||
"GPIO16",
|
||||
"GPIO17",
|
||||
"GPIO18",
|
||||
"GPIO19",
|
||||
"GPIO20",
|
||||
"GPIO21",
|
||||
"GPIO22",
|
||||
"GPIO23",
|
||||
"GPIO24",
|
||||
"GPIO25",
|
||||
"GPIO26",
|
||||
"GPIO27",
|
||||
"RGMII_MDIO",
|
||||
"RGMIO_MDC",
|
||||
/* Used by BT module */
|
||||
"CTS0",
|
||||
"RTS0",
|
||||
"TXD0",
|
||||
"RXD0",
|
||||
/* Used by Wifi */
|
||||
"SD1_CLK",
|
||||
"SD1_CMD",
|
||||
"SD1_DATA0",
|
||||
"SD1_DATA1",
|
||||
"SD1_DATA2",
|
||||
"SD1_DATA3",
|
||||
/* Shared with SPI flash */
|
||||
"PWM0_MISO",
|
||||
"PWM1_MOSI",
|
||||
"STATUS_LED_G_CLK",
|
||||
"SPIFLASH_CE_N",
|
||||
"SDA0",
|
||||
"SCL0",
|
||||
"RGMII_RXCLK",
|
||||
"RGMII_RXCTL",
|
||||
"RGMII_RXD0",
|
||||
"RGMII_RXD1",
|
||||
"RGMII_RXD2",
|
||||
"RGMII_RXD3",
|
||||
"RGMII_TXCLK",
|
||||
"RGMII_TXCTL",
|
||||
"RGMII_TXD0",
|
||||
"RGMII_TXD1",
|
||||
"RGMII_TXD2",
|
||||
"RGMII_TXD3";
|
||||
};
|
||||
|
||||
&hdmi0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&hdmi1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pixelvalve0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pixelvalve1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pixelvalve2 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pixelvalve4 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pwm1 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pwm1_0_gpio40 &pwm1_1_gpio41>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
/* SDHCI is used to control the SDIO for wireless */
|
||||
&sdhci {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&emmc_gpio34>;
|
||||
bus-width = <4>;
|
||||
non-removable;
|
||||
mmc-pwrseq = <&wifi_pwrseq>;
|
||||
status = "okay";
|
||||
|
||||
brcmf: wifi@1 {
|
||||
reg = <1>;
|
||||
compatible = "brcm,bcm4329-fmac";
|
||||
};
|
||||
};
|
||||
|
||||
/* EMMC2 is used to drive the SD card */
|
||||
&emmc2 {
|
||||
vqmmc-supply = <&sd_io_1v8_reg>;
|
||||
vmmc-supply = <&sd_vcc_reg>;
|
||||
broken-cd;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&genet {
|
||||
phy-handle = <&phy1>;
|
||||
phy-mode = "rgmii-rxid";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&genet_mdio {
|
||||
phy1: ethernet-phy@1 {
|
||||
/* No PHY interrupt */
|
||||
reg = <0x1>;
|
||||
};
|
||||
};
|
||||
|
||||
&pcie0 {
|
||||
pci@0,0 {
|
||||
device_type = "pci";
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
ranges;
|
||||
|
||||
reg = <0 0 0 0 0>;
|
||||
|
||||
usb@0,0 {
|
||||
reg = <0 0 0 0 0>;
|
||||
resets = <&reset RASPBERRYPI_FIRMWARE_RESET_ID_USB>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
/* uart0 communicates with the BT module */
|
||||
&uart0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&uart0_ctsrts_gpio30 &uart0_gpio32>;
|
||||
uart-has-rtscts;
|
||||
status = "okay";
|
||||
|
||||
bluetooth {
|
||||
compatible = "brcm,bcm43438-bt";
|
||||
max-speed = <2000000>;
|
||||
shutdown-gpios = <&expgpio 0 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
};
|
||||
|
||||
/* uart1 is mapped to the pin header */
|
||||
&uart1 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&uart1_gpio14>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&vc4 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&vec {
|
||||
status = "disabled";
|
||||
};
|
74
arch/arm/dts/bcm2711-rpi.dtsi
Normal file
74
arch/arm/dts/bcm2711-rpi.dtsi
Normal file
|
@ -0,0 +1,74 @@
|
|||
// SPDX-License-Identifier: GPL-2.0
|
||||
#include "bcm2835-rpi.dtsi"
|
||||
|
||||
#include <dt-bindings/reset/raspberrypi,firmware-reset.h>
|
||||
|
||||
/ {
|
||||
/* Will be filled by the bootloader */
|
||||
memory@0 {
|
||||
device_type = "memory";
|
||||
reg = <0 0 0>;
|
||||
};
|
||||
|
||||
aliases {
|
||||
emmc2bus = &emmc2bus;
|
||||
ethernet0 = &genet;
|
||||
pcie0 = &pcie0;
|
||||
blconfig = &blconfig;
|
||||
};
|
||||
};
|
||||
|
||||
&firmware {
|
||||
firmware_clocks: clocks {
|
||||
compatible = "raspberrypi,firmware-clocks";
|
||||
#clock-cells = <1>;
|
||||
};
|
||||
|
||||
expgpio: gpio {
|
||||
compatible = "raspberrypi,firmware-gpio";
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
reset: reset {
|
||||
compatible = "raspberrypi,firmware-reset";
|
||||
#reset-cells = <1>;
|
||||
};
|
||||
};
|
||||
|
||||
&hdmi0 {
|
||||
clocks = <&firmware_clocks 13>, <&firmware_clocks 14>, <&dvp 0>, <&clk_27MHz>;
|
||||
clock-names = "hdmi", "bvb", "audio", "cec";
|
||||
wifi-2.4ghz-coexistence;
|
||||
};
|
||||
|
||||
&hdmi1 {
|
||||
clocks = <&firmware_clocks 13>, <&firmware_clocks 14>, <&dvp 1>, <&clk_27MHz>;
|
||||
clock-names = "hdmi", "bvb", "audio", "cec";
|
||||
wifi-2.4ghz-coexistence;
|
||||
};
|
||||
|
||||
&hvs {
|
||||
clocks = <&firmware_clocks 4>;
|
||||
};
|
||||
|
||||
&rmem {
|
||||
/*
|
||||
* RPi4's co-processor will copy the board's bootloader configuration
|
||||
* into memory for the OS to consume. It'll also update this node with
|
||||
* its placement information.
|
||||
*/
|
||||
blconfig: nvram@0 {
|
||||
compatible = "raspberrypi,bootloader-config", "nvmem-rmem";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
reg = <0x0 0x0 0x0>;
|
||||
no-map;
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
|
||||
&vchiq {
|
||||
interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
|
||||
};
|
1100
arch/arm/dts/bcm2711.dtsi
Normal file
1100
arch/arm/dts/bcm2711.dtsi
Normal file
File diff suppressed because it is too large
Load diff
207
arch/arm/dts/bcm2835-common.dtsi
Normal file
207
arch/arm/dts/bcm2835-common.dtsi
Normal file
|
@ -0,0 +1,207 @@
|
|||
// SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
/* This include file covers the common peripherals and configuration between
|
||||
* bcm2835, bcm2836 and bcm2837 implementations.
|
||||
*/
|
||||
|
||||
/ {
|
||||
interrupt-parent = <&intc>;
|
||||
|
||||
soc {
|
||||
dma: dma@7e007000 {
|
||||
compatible = "brcm,bcm2835-dma";
|
||||
reg = <0x7e007000 0xf00>;
|
||||
interrupts = <1 16>,
|
||||
<1 17>,
|
||||
<1 18>,
|
||||
<1 19>,
|
||||
<1 20>,
|
||||
<1 21>,
|
||||
<1 22>,
|
||||
<1 23>,
|
||||
<1 24>,
|
||||
<1 25>,
|
||||
<1 26>,
|
||||
/* dma channel 11-14 share one irq */
|
||||
<1 27>,
|
||||
<1 27>,
|
||||
<1 27>,
|
||||
<1 27>,
|
||||
/* unused shared irq for all channels */
|
||||
<1 28>;
|
||||
interrupt-names = "dma0",
|
||||
"dma1",
|
||||
"dma2",
|
||||
"dma3",
|
||||
"dma4",
|
||||
"dma5",
|
||||
"dma6",
|
||||
"dma7",
|
||||
"dma8",
|
||||
"dma9",
|
||||
"dma10",
|
||||
"dma11",
|
||||
"dma12",
|
||||
"dma13",
|
||||
"dma14",
|
||||
"dma-shared-all";
|
||||
#dma-cells = <1>;
|
||||
brcm,dma-channel-mask = <0x7f35>;
|
||||
};
|
||||
|
||||
intc: interrupt-controller@7e00b200 {
|
||||
compatible = "brcm,bcm2835-armctrl-ic";
|
||||
reg = <0x7e00b200 0x200>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
||||
|
||||
pm: watchdog@7e100000 {
|
||||
compatible = "brcm,bcm2835-pm", "brcm,bcm2835-pm-wdt";
|
||||
#power-domain-cells = <1>;
|
||||
#reset-cells = <1>;
|
||||
reg = <0x7e100000 0x114>,
|
||||
<0x7e00a000 0x24>;
|
||||
clocks = <&clocks BCM2835_CLOCK_V3D>,
|
||||
<&clocks BCM2835_CLOCK_PERI_IMAGE>,
|
||||
<&clocks BCM2835_CLOCK_H264>,
|
||||
<&clocks BCM2835_CLOCK_ISP>;
|
||||
clock-names = "v3d", "peri_image", "h264", "isp";
|
||||
system-power-controller;
|
||||
};
|
||||
|
||||
rng@7e104000 {
|
||||
compatible = "brcm,bcm2835-rng";
|
||||
reg = <0x7e104000 0x10>;
|
||||
interrupts = <2 29>;
|
||||
};
|
||||
|
||||
pixelvalve@7e206000 {
|
||||
compatible = "brcm,bcm2835-pixelvalve0";
|
||||
reg = <0x7e206000 0x100>;
|
||||
interrupts = <2 13>; /* pwa0 */
|
||||
};
|
||||
|
||||
pixelvalve@7e207000 {
|
||||
compatible = "brcm,bcm2835-pixelvalve1";
|
||||
reg = <0x7e207000 0x100>;
|
||||
interrupts = <2 14>; /* pwa1 */
|
||||
};
|
||||
|
||||
thermal: thermal@7e212000 {
|
||||
compatible = "brcm,bcm2835-thermal";
|
||||
reg = <0x7e212000 0x8>;
|
||||
clocks = <&clocks BCM2835_CLOCK_TSENS>;
|
||||
#thermal-sensor-cells = <0>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c2: i2c@7e805000 {
|
||||
compatible = "brcm,bcm2835-i2c";
|
||||
reg = <0x7e805000 0x1000>;
|
||||
interrupts = <2 21>;
|
||||
clocks = <&clocks BCM2835_CLOCK_VPU>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
vec: vec@7e806000 {
|
||||
compatible = "brcm,bcm2835-vec";
|
||||
reg = <0x7e806000 0x1000>;
|
||||
clocks = <&clocks BCM2835_CLOCK_VEC>;
|
||||
interrupts = <2 27>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
pixelvalve@7e807000 {
|
||||
compatible = "brcm,bcm2835-pixelvalve2";
|
||||
reg = <0x7e807000 0x100>;
|
||||
interrupts = <2 10>; /* pixelvalve */
|
||||
};
|
||||
|
||||
hdmi: hdmi@7e902000 {
|
||||
compatible = "brcm,bcm2835-hdmi";
|
||||
reg = <0x7e902000 0x600>,
|
||||
<0x7e808000 0x100>;
|
||||
interrupts = <2 8>, <2 9>;
|
||||
ddc = <&i2c2>;
|
||||
clocks = <&clocks BCM2835_PLLH_PIX>,
|
||||
<&clocks BCM2835_CLOCK_HSM>;
|
||||
clock-names = "pixel", "hdmi";
|
||||
dmas = <&dma 17>;
|
||||
dma-names = "audio-rx";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
v3d: v3d@7ec00000 {
|
||||
compatible = "brcm,bcm2835-v3d";
|
||||
reg = <0x7ec00000 0x1000>;
|
||||
interrupts = <1 10>;
|
||||
};
|
||||
|
||||
vc4: gpu {
|
||||
compatible = "brcm,bcm2835-vc4";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&cpu_thermal {
|
||||
thermal-sensors = <&thermal>;
|
||||
};
|
||||
|
||||
&gpio {
|
||||
i2c_slave_gpio18: i2c_slave_gpio18 {
|
||||
brcm,pins = <18 19 20 21>;
|
||||
brcm,function = <BCM2835_FSEL_ALT3>;
|
||||
};
|
||||
|
||||
jtag_gpio4: jtag_gpio4 {
|
||||
brcm,pins = <4 5 6 12 13>;
|
||||
brcm,function = <BCM2835_FSEL_ALT5>;
|
||||
};
|
||||
|
||||
pwm0_gpio12: pwm0_gpio12 {
|
||||
brcm,pins = <12>;
|
||||
brcm,function = <BCM2835_FSEL_ALT0>;
|
||||
};
|
||||
pwm0_gpio18: pwm0_gpio18 {
|
||||
brcm,pins = <18>;
|
||||
brcm,function = <BCM2835_FSEL_ALT5>;
|
||||
};
|
||||
pwm0_gpio40: pwm0_gpio40 {
|
||||
brcm,pins = <40>;
|
||||
brcm,function = <BCM2835_FSEL_ALT0>;
|
||||
};
|
||||
pwm1_gpio13: pwm1_gpio13 {
|
||||
brcm,pins = <13>;
|
||||
brcm,function = <BCM2835_FSEL_ALT0>;
|
||||
};
|
||||
pwm1_gpio19: pwm1_gpio19 {
|
||||
brcm,pins = <19>;
|
||||
brcm,function = <BCM2835_FSEL_ALT5>;
|
||||
};
|
||||
pwm1_gpio41: pwm1_gpio41 {
|
||||
brcm,pins = <41>;
|
||||
brcm,function = <BCM2835_FSEL_ALT0>;
|
||||
};
|
||||
pwm1_gpio45: pwm1_gpio45 {
|
||||
brcm,pins = <45>;
|
||||
brcm,function = <BCM2835_FSEL_ALT0>;
|
||||
};
|
||||
};
|
||||
|
||||
&i2s {
|
||||
dmas = <&dma 2>, <&dma 3>;
|
||||
dma-names = "tx", "rx";
|
||||
};
|
||||
|
||||
&sdhost {
|
||||
dmas = <&dma 13>;
|
||||
dma-names = "rx-tx";
|
||||
};
|
||||
|
||||
&spi {
|
||||
dmas = <&dma 6>, <&dma 7>;
|
||||
dma-names = "tx", "rx";
|
||||
};
|
|
@ -8,12 +8,17 @@
|
|||
compatible = "raspberrypi,model-a-plus", "brcm,bcm2835";
|
||||
model = "Raspberry Pi Model A+";
|
||||
|
||||
memory@0 {
|
||||
device_type = "memory";
|
||||
reg = <0 0x10000000>;
|
||||
};
|
||||
|
||||
leds {
|
||||
act {
|
||||
led-act {
|
||||
gpios = <&gpio 47 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
pwr {
|
||||
led-pwr {
|
||||
label = "PWR";
|
||||
gpios = <&gpio 35 GPIO_ACTIVE_HIGH>;
|
||||
default-state = "keep";
|
||||
|
@ -99,6 +104,8 @@
|
|||
|
||||
&hdmi {
|
||||
hpd-gpios = <&gpio 46 GPIO_ACTIVE_LOW>;
|
||||
power-domains = <&power RPI_POWER_DOMAIN_HDMI>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pwm {
|
||||
|
@ -107,6 +114,13 @@
|
|||
status = "okay";
|
||||
};
|
||||
|
||||
&sdhost {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&sdhost_gpio48>;
|
||||
bus-width = <4>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&uart0_gpio14>;
|
||||
|
|
|
@ -8,8 +8,13 @@
|
|||
compatible = "raspberrypi,model-a", "brcm,bcm2835";
|
||||
model = "Raspberry Pi Model A";
|
||||
|
||||
memory@0 {
|
||||
device_type = "memory";
|
||||
reg = <0 0x10000000>;
|
||||
};
|
||||
|
||||
leds {
|
||||
act {
|
||||
led-act {
|
||||
gpios = <&gpio 16 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
};
|
||||
|
@ -94,6 +99,8 @@
|
|||
|
||||
&hdmi {
|
||||
hpd-gpios = <&gpio 46 GPIO_ACTIVE_HIGH>;
|
||||
power-domains = <&power RPI_POWER_DOMAIN_HDMI>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pwm {
|
||||
|
@ -102,6 +109,13 @@
|
|||
status = "okay";
|
||||
};
|
||||
|
||||
&sdhost {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&sdhost_gpio48>;
|
||||
bus-width = <4>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&uart0_gpio14>;
|
||||
|
|
|
@ -9,12 +9,17 @@
|
|||
compatible = "raspberrypi,model-b-plus", "brcm,bcm2835";
|
||||
model = "Raspberry Pi Model B+";
|
||||
|
||||
memory@0 {
|
||||
device_type = "memory";
|
||||
reg = <0 0x20000000>;
|
||||
};
|
||||
|
||||
leds {
|
||||
act {
|
||||
led-act {
|
||||
gpios = <&gpio 47 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
pwr {
|
||||
led-pwr {
|
||||
label = "PWR";
|
||||
gpios = <&gpio 35 GPIO_ACTIVE_HIGH>;
|
||||
default-state = "keep";
|
||||
|
@ -101,6 +106,8 @@
|
|||
|
||||
&hdmi {
|
||||
hpd-gpios = <&gpio 46 GPIO_ACTIVE_LOW>;
|
||||
power-domains = <&power RPI_POWER_DOMAIN_HDMI>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pwm {
|
||||
|
@ -109,6 +116,13 @@
|
|||
status = "okay";
|
||||
};
|
||||
|
||||
&sdhost {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&sdhost_gpio48>;
|
||||
bus-width = <4>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&uart0_gpio14>;
|
||||
|
|
|
@ -9,8 +9,13 @@
|
|||
compatible = "raspberrypi,model-b-rev2", "brcm,bcm2835";
|
||||
model = "Raspberry Pi Model B rev2";
|
||||
|
||||
memory@0 {
|
||||
device_type = "memory";
|
||||
reg = <0 0x10000000>;
|
||||
};
|
||||
|
||||
leds {
|
||||
act {
|
||||
led-act {
|
||||
gpios = <&gpio 16 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
};
|
||||
|
@ -94,6 +99,8 @@
|
|||
|
||||
&hdmi {
|
||||
hpd-gpios = <&gpio 46 GPIO_ACTIVE_HIGH>;
|
||||
power-domains = <&power RPI_POWER_DOMAIN_HDMI>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pwm {
|
||||
|
@ -102,6 +109,13 @@
|
|||
status = "okay";
|
||||
};
|
||||
|
||||
&sdhost {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&sdhost_gpio48>;
|
||||
bus-width = <4>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&uart0_gpio14>;
|
||||
|
|
|
@ -9,8 +9,13 @@
|
|||
compatible = "raspberrypi,model-b", "brcm,bcm2835";
|
||||
model = "Raspberry Pi Model B";
|
||||
|
||||
memory@0 {
|
||||
device_type = "memory";
|
||||
reg = <0 0x10000000>;
|
||||
};
|
||||
|
||||
leds {
|
||||
act {
|
||||
led-act {
|
||||
gpios = <&gpio 16 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
};
|
||||
|
@ -89,6 +94,8 @@
|
|||
|
||||
&hdmi {
|
||||
hpd-gpios = <&gpio 46 GPIO_ACTIVE_HIGH>;
|
||||
power-domains = <&power RPI_POWER_DOMAIN_HDMI>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pwm {
|
||||
|
@ -97,6 +104,13 @@
|
|||
status = "okay";
|
||||
};
|
||||
|
||||
&sdhost {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&sdhost_gpio48>;
|
||||
bus-width = <4>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&uart0_gpio14>;
|
||||
|
|
|
@ -79,6 +79,15 @@
|
|||
|
||||
&hdmi {
|
||||
hpd-gpios = <&gpio 46 GPIO_ACTIVE_LOW>;
|
||||
power-domains = <&power RPI_POWER_DOMAIN_HDMI>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&sdhost {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&sdhost_gpio48>;
|
||||
bus-width = <4>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart0 {
|
||||
|
|
|
@ -5,11 +5,16 @@
|
|||
|
||||
/ {
|
||||
leds {
|
||||
act {
|
||||
led-act {
|
||||
gpios = <&gpio 47 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
};
|
||||
|
||||
memory@0 {
|
||||
device_type = "memory";
|
||||
reg = <0 0x20000000>;
|
||||
};
|
||||
|
||||
reg_3v3: fixed-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "3V3";
|
||||
|
|
12
arch/arm/dts/bcm2835-rpi-common.dtsi
Normal file
12
arch/arm/dts/bcm2835-rpi-common.dtsi
Normal file
|
@ -0,0 +1,12 @@
|
|||
// SPDX-License-Identifier: GPL-2.0
|
||||
/*
|
||||
* This include file covers the common peripherals and configuration between
|
||||
* bcm2835, bcm2836 and bcm2837 implementations that interact with RPi's
|
||||
* firmware interface.
|
||||
*/
|
||||
|
||||
#include <dt-bindings/power/raspberrypi-power.h>
|
||||
|
||||
&v3d {
|
||||
power-domains = <&power RPI_POWER_DOMAIN_V3D>;
|
||||
};
|
|
@ -12,14 +12,19 @@
|
|||
compatible = "raspberrypi,model-zero-w", "brcm,bcm2835";
|
||||
model = "Raspberry Pi Zero W";
|
||||
|
||||
memory@0 {
|
||||
device_type = "memory";
|
||||
reg = <0 0x20000000>;
|
||||
};
|
||||
|
||||
chosen {
|
||||
/* 8250 auxiliary UART instead of pl011 */
|
||||
stdout-path = "serial1:115200n8";
|
||||
};
|
||||
|
||||
leds {
|
||||
act {
|
||||
gpios = <&gpio 47 GPIO_ACTIVE_HIGH>;
|
||||
led-act {
|
||||
gpios = <&gpio 47 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -100,12 +105,16 @@
|
|||
|
||||
&hdmi {
|
||||
hpd-gpios = <&gpio 46 GPIO_ACTIVE_LOW>;
|
||||
power-domains = <&power RPI_POWER_DOMAIN_HDMI>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&sdhci {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&emmc_gpio34 &gpclk2_gpio43>;
|
||||
bus-width = <4>;
|
||||
mmc-pwrseq = <&wifi_pwrseq>;
|
||||
non-removable;
|
||||
status = "okay";
|
||||
|
@ -116,6 +125,13 @@
|
|||
};
|
||||
};
|
||||
|
||||
&sdhost {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&sdhost_gpio48>;
|
||||
bus-width = <4>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&uart0_gpio32 &uart0_ctsrts_gpio30>;
|
||||
|
|
|
@ -12,8 +12,13 @@
|
|||
compatible = "raspberrypi,model-zero", "brcm,bcm2835";
|
||||
model = "Raspberry Pi Zero";
|
||||
|
||||
memory@0 {
|
||||
device_type = "memory";
|
||||
reg = <0 0x20000000>;
|
||||
};
|
||||
|
||||
leds {
|
||||
act {
|
||||
led-act {
|
||||
gpios = <&gpio 47 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
};
|
||||
|
@ -96,6 +101,15 @@
|
|||
|
||||
&hdmi {
|
||||
hpd-gpios = <&gpio 46 GPIO_ACTIVE_LOW>;
|
||||
power-domains = <&power RPI_POWER_DOMAIN_HDMI>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&sdhost {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&sdhost_gpio48>;
|
||||
bus-width = <4>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart0 {
|
||||
|
|
|
@ -1,15 +1,10 @@
|
|||
#include <dt-bindings/power/raspberrypi-power.h>
|
||||
|
||||
/ {
|
||||
memory@0 {
|
||||
device_type = "memory";
|
||||
reg = <0 0x10000000>;
|
||||
};
|
||||
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
|
||||
act {
|
||||
led-act {
|
||||
label = "ACT";
|
||||
default-state = "keep";
|
||||
linux,default-trigger = "heartbeat";
|
||||
|
@ -18,8 +13,12 @@
|
|||
|
||||
soc {
|
||||
firmware: firmware {
|
||||
compatible = "raspberrypi,bcm2835-firmware", "simple-bus";
|
||||
compatible = "raspberrypi,bcm2835-firmware", "simple-mfd";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
mboxes = <&mailbox>;
|
||||
dma-ranges;
|
||||
};
|
||||
|
||||
power: power {
|
||||
|
@ -64,32 +63,10 @@
|
|||
clock-frequency = <100000>;
|
||||
};
|
||||
|
||||
&i2c2 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&sdhci {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&emmc_gpio48>;
|
||||
bus-width = <4>;
|
||||
};
|
||||
|
||||
&sdhost {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&sdhost_gpio48>;
|
||||
status = "okay";
|
||||
bus-width = <4>;
|
||||
};
|
||||
|
||||
&usb {
|
||||
power-domains = <&power RPI_POWER_DOMAIN_USB>;
|
||||
};
|
||||
|
||||
&hdmi {
|
||||
power-domains = <&power RPI_POWER_DOMAIN_HDMI>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&vec {
|
||||
power-domains = <&power RPI_POWER_DOMAIN_VEC>;
|
||||
status = "okay";
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
// SPDX-License-Identifier: GPL-2.0
|
||||
#include "bcm283x.dtsi"
|
||||
#include "bcm2835-common.dtsi"
|
||||
#include "bcm2835-rpi-common.dtsi"
|
||||
|
||||
/ {
|
||||
compatible = "brcm,bcm2835";
|
||||
|
|
|
@ -10,15 +10,16 @@
|
|||
model = "Raspberry Pi 2 Model B";
|
||||
|
||||
memory@0 {
|
||||
device_type = "memory";
|
||||
reg = <0 0x40000000>;
|
||||
};
|
||||
|
||||
leds {
|
||||
act {
|
||||
led-act {
|
||||
gpios = <&gpio 47 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
pwr {
|
||||
led-pwr {
|
||||
label = "PWR";
|
||||
gpios = <&gpio 35 GPIO_ACTIVE_HIGH>;
|
||||
default-state = "keep";
|
||||
|
@ -105,6 +106,8 @@
|
|||
|
||||
&hdmi {
|
||||
hpd-gpios = <&gpio 46 GPIO_ACTIVE_LOW>;
|
||||
power-domains = <&power RPI_POWER_DOMAIN_HDMI>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pwm {
|
||||
|
@ -113,6 +116,13 @@
|
|||
status = "okay";
|
||||
};
|
||||
|
||||
&sdhost {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&sdhost_gpio48>;
|
||||
bus-width = <4>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&uart0_gpio14>;
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
// SPDX-License-Identifier: GPL-2.0
|
||||
#include "bcm283x.dtsi"
|
||||
#include "bcm2835-common.dtsi"
|
||||
#include "bcm2835-rpi-common.dtsi"
|
||||
|
||||
/ {
|
||||
compatible = "brcm,bcm2836";
|
||||
|
|
|
@ -14,17 +14,20 @@
|
|||
};
|
||||
|
||||
memory@0 {
|
||||
device_type = "memory";
|
||||
reg = <0 0x20000000>;
|
||||
};
|
||||
|
||||
leds {
|
||||
act {
|
||||
led-act {
|
||||
gpios = <&gpio 29 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
pwr {
|
||||
led-pwr {
|
||||
label = "PWR";
|
||||
gpios = <&expgpio 2 GPIO_ACTIVE_LOW>;
|
||||
default-state = "keep";
|
||||
linux,default-trigger = "default-on";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -117,6 +120,8 @@
|
|||
|
||||
&hdmi {
|
||||
hpd-gpios = <&gpio 28 GPIO_ACTIVE_LOW>;
|
||||
power-domains = <&power RPI_POWER_DOMAIN_HDMI>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pwm {
|
||||
|
|
|
@ -15,17 +15,20 @@
|
|||
};
|
||||
|
||||
memory@0 {
|
||||
device_type = "memory";
|
||||
reg = <0 0x40000000>;
|
||||
};
|
||||
|
||||
leds {
|
||||
act {
|
||||
led-act {
|
||||
gpios = <&gpio 29 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
pwr {
|
||||
led-pwr {
|
||||
label = "PWR";
|
||||
gpios = <&expgpio 2 GPIO_ACTIVE_LOW>;
|
||||
default-state = "keep";
|
||||
linux,default-trigger = "default-on";
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -124,6 +127,8 @@
|
|||
|
||||
&hdmi {
|
||||
hpd-gpios = <&gpio 28 GPIO_ACTIVE_LOW>;
|
||||
power-domains = <&power RPI_POWER_DOMAIN_HDMI>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pwm {
|
||||
|
|
|
@ -15,11 +15,12 @@
|
|||
};
|
||||
|
||||
memory@0 {
|
||||
device_type = "memory";
|
||||
reg = <0 0x40000000>;
|
||||
};
|
||||
|
||||
leds {
|
||||
act {
|
||||
led-act {
|
||||
gpios = <&expgpio 2 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
};
|
||||
|
@ -125,6 +126,8 @@
|
|||
|
||||
&hdmi {
|
||||
hpd-gpios = <&expgpio 4 GPIO_ACTIVE_LOW>;
|
||||
power-domains = <&power RPI_POWER_DOMAIN_HDMI>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
/* uart0 communicates with the BT module */
|
||||
|
|
|
@ -78,6 +78,15 @@
|
|||
|
||||
&hdmi {
|
||||
hpd-gpios = <&expgpio 1 GPIO_ACTIVE_LOW>;
|
||||
power-domains = <&power RPI_POWER_DOMAIN_HDMI>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&sdhost {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&sdhost_gpio48>;
|
||||
bus-width = <4>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart0 {
|
||||
|
|
|
@ -5,9 +5,18 @@
|
|||
|
||||
/ {
|
||||
memory@0 {
|
||||
device_type = "memory";
|
||||
reg = <0 0x40000000>;
|
||||
};
|
||||
|
||||
leds {
|
||||
/*
|
||||
* Since there is no upstream GPIO driver yet,
|
||||
* remove the incomplete node.
|
||||
*/
|
||||
/delete-node/ led-act;
|
||||
};
|
||||
|
||||
reg_3v3: fixed-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "3V3";
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
#include "bcm283x.dtsi"
|
||||
#include "bcm2835-common.dtsi"
|
||||
#include "bcm2835-rpi-common.dtsi"
|
||||
|
||||
/ {
|
||||
compatible = "brcm,bcm2837";
|
||||
|
|
7
arch/arm/dts/bcm283x-rpi-usb-peripheral.dtsi
Normal file
7
arch/arm/dts/bcm283x-rpi-usb-peripheral.dtsi
Normal file
|
@ -0,0 +1,7 @@
|
|||
// SPDX-License-Identifier: GPL-2.0
|
||||
&usb {
|
||||
dr_mode = "peripheral";
|
||||
g-rx-fifo-size = <256>;
|
||||
g-np-tx-fifo-size = <32>;
|
||||
g-tx-fifo-size = <256 256 512 512 512 768 768>;
|
||||
};
|
|
@ -18,7 +18,6 @@
|
|||
/ {
|
||||
compatible = "brcm,bcm2835";
|
||||
model = "BCM2835";
|
||||
interrupt-parent = <&intc>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
|
@ -31,16 +30,27 @@
|
|||
stdout-path = "serial0:115200n8";
|
||||
};
|
||||
|
||||
rmem: reserved-memory {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges;
|
||||
|
||||
cma: linux,cma {
|
||||
compatible = "shared-dma-pool";
|
||||
size = <0x4000000>; /* 64MB */
|
||||
reusable;
|
||||
linux,cma-default;
|
||||
};
|
||||
};
|
||||
|
||||
thermal-zones {
|
||||
cpu_thermal: cpu-thermal {
|
||||
polling-delay-passive = <0>;
|
||||
polling-delay = <1000>;
|
||||
|
||||
thermal-sensors = <&thermal>;
|
||||
|
||||
trips {
|
||||
cpu-crit {
|
||||
temperature = <80000>;
|
||||
temperature = <90000>;
|
||||
hysteresis = <0>;
|
||||
type = "critical";
|
||||
};
|
||||
|
@ -56,7 +66,7 @@
|
|||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
timer@7e003000 {
|
||||
system_timer: timer@7e003000 {
|
||||
compatible = "brcm,bcm2835-system-timer";
|
||||
reg = <0x7e003000 0x1000>;
|
||||
interrupts = <1 0>, <1 1>, <1 2>, <1 3>;
|
||||
|
@ -67,74 +77,12 @@
|
|||
clock-frequency = <1000000>;
|
||||
};
|
||||
|
||||
txp@7e004000 {
|
||||
txp: txp@7e004000 {
|
||||
compatible = "brcm,bcm2835-txp";
|
||||
reg = <0x7e004000 0x20>;
|
||||
interrupts = <1 11>;
|
||||
};
|
||||
|
||||
dma: dma@7e007000 {
|
||||
compatible = "brcm,bcm2835-dma";
|
||||
reg = <0x7e007000 0xf00>;
|
||||
interrupts = <1 16>,
|
||||
<1 17>,
|
||||
<1 18>,
|
||||
<1 19>,
|
||||
<1 20>,
|
||||
<1 21>,
|
||||
<1 22>,
|
||||
<1 23>,
|
||||
<1 24>,
|
||||
<1 25>,
|
||||
<1 26>,
|
||||
/* dma channel 11-14 share one irq */
|
||||
<1 27>,
|
||||
<1 27>,
|
||||
<1 27>,
|
||||
<1 27>,
|
||||
/* unused shared irq for all channels */
|
||||
<1 28>;
|
||||
interrupt-names = "dma0",
|
||||
"dma1",
|
||||
"dma2",
|
||||
"dma3",
|
||||
"dma4",
|
||||
"dma5",
|
||||
"dma6",
|
||||
"dma7",
|
||||
"dma8",
|
||||
"dma9",
|
||||
"dma10",
|
||||
"dma11",
|
||||
"dma12",
|
||||
"dma13",
|
||||
"dma14",
|
||||
"dma-shared-all";
|
||||
#dma-cells = <1>;
|
||||
brcm,dma-channel-mask = <0x7f35>;
|
||||
};
|
||||
|
||||
intc: interrupt-controller@7e00b200 {
|
||||
compatible = "brcm,bcm2835-armctrl-ic";
|
||||
reg = <0x7e00b200 0x200>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
||||
|
||||
pm: watchdog@7e100000 {
|
||||
compatible = "brcm,bcm2835-pm", "brcm,bcm2835-pm-wdt";
|
||||
#power-domain-cells = <1>;
|
||||
#reset-cells = <1>;
|
||||
reg = <0x7e100000 0x114>,
|
||||
<0x7e00a000 0x24>;
|
||||
clocks = <&clocks BCM2835_CLOCK_V3D>,
|
||||
<&clocks BCM2835_CLOCK_PERI_IMAGE>,
|
||||
<&clocks BCM2835_CLOCK_H264>,
|
||||
<&clocks BCM2835_CLOCK_ISP>;
|
||||
clock-names = "v3d", "peri_image", "h264", "isp";
|
||||
system-power-controller;
|
||||
};
|
||||
|
||||
clocks: cprman@7e101000 {
|
||||
compatible = "brcm,bcm2835-cprman";
|
||||
#clock-cells = <1>;
|
||||
|
@ -149,12 +97,6 @@
|
|||
<&dsi1 0>, <&dsi1 1>, <&dsi1 2>;
|
||||
};
|
||||
|
||||
rng@7e104000 {
|
||||
compatible = "brcm,bcm2835-rng";
|
||||
reg = <0x7e104000 0x10>;
|
||||
interrupts = <2 29>;
|
||||
};
|
||||
|
||||
mailbox: mailbox@7e00b880 {
|
||||
compatible = "brcm,bcm2835-mbox";
|
||||
reg = <0x7e00b880 0x40>;
|
||||
|
@ -184,8 +126,7 @@
|
|||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
|
||||
/* Defines pin muxing groups according to
|
||||
* BCM2835-ARM-Peripherals.pdf page 102.
|
||||
/* Defines common pin muxing groups
|
||||
*
|
||||
* While each pin can have its mux selected
|
||||
* for various functions individually, some
|
||||
|
@ -263,15 +204,7 @@
|
|||
brcm,pins = <44 45>;
|
||||
brcm,function = <BCM2835_FSEL_ALT2>;
|
||||
};
|
||||
i2c_slave_gpio18: i2c_slave_gpio18 {
|
||||
brcm,pins = <18 19 20 21>;
|
||||
brcm,function = <BCM2835_FSEL_ALT3>;
|
||||
};
|
||||
|
||||
jtag_gpio4: jtag_gpio4 {
|
||||
brcm,pins = <4 5 6 12 13>;
|
||||
brcm,function = <BCM2835_FSEL_ALT5>;
|
||||
};
|
||||
jtag_gpio22: jtag_gpio22 {
|
||||
brcm,pins = <22 23 24 25 26 27>;
|
||||
brcm,function = <BCM2835_FSEL_ALT4>;
|
||||
|
@ -286,35 +219,6 @@
|
|||
brcm,function = <BCM2835_FSEL_ALT2>;
|
||||
};
|
||||
|
||||
pwm0_gpio12: pwm0_gpio12 {
|
||||
brcm,pins = <12>;
|
||||
brcm,function = <BCM2835_FSEL_ALT0>;
|
||||
};
|
||||
pwm0_gpio18: pwm0_gpio18 {
|
||||
brcm,pins = <18>;
|
||||
brcm,function = <BCM2835_FSEL_ALT5>;
|
||||
};
|
||||
pwm0_gpio40: pwm0_gpio40 {
|
||||
brcm,pins = <40>;
|
||||
brcm,function = <BCM2835_FSEL_ALT0>;
|
||||
};
|
||||
pwm1_gpio13: pwm1_gpio13 {
|
||||
brcm,pins = <13>;
|
||||
brcm,function = <BCM2835_FSEL_ALT0>;
|
||||
};
|
||||
pwm1_gpio19: pwm1_gpio19 {
|
||||
brcm,pins = <19>;
|
||||
brcm,function = <BCM2835_FSEL_ALT5>;
|
||||
};
|
||||
pwm1_gpio41: pwm1_gpio41 {
|
||||
brcm,pins = <41>;
|
||||
brcm,function = <BCM2835_FSEL_ALT0>;
|
||||
};
|
||||
pwm1_gpio45: pwm1_gpio45 {
|
||||
brcm,pins = <45>;
|
||||
brcm,function = <BCM2835_FSEL_ALT0>;
|
||||
};
|
||||
|
||||
sdhost_gpio48: sdhost_gpio48 {
|
||||
brcm,pins = <48 49 50 51 52 53>;
|
||||
brcm,function = <BCM2835_FSEL_ALT0>;
|
||||
|
@ -396,8 +300,8 @@
|
|||
};
|
||||
|
||||
uart0: serial@7e201000 {
|
||||
compatible = "brcm,bcm2835-pl011", "arm,pl011", "arm,primecell";
|
||||
reg = <0x7e201000 0x1000>;
|
||||
compatible = "arm,pl011", "arm,primecell";
|
||||
reg = <0x7e201000 0x200>;
|
||||
interrupts = <2 25>;
|
||||
clocks = <&clocks BCM2835_CLOCK_UART>,
|
||||
<&clocks BCM2835_CLOCK_VPU>;
|
||||
|
@ -410,8 +314,6 @@
|
|||
reg = <0x7e202000 0x100>;
|
||||
interrupts = <2 24>;
|
||||
clocks = <&clocks BCM2835_CLOCK_VPU>;
|
||||
dmas = <&dma 13>;
|
||||
dma-names = "rx-tx";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
|
@ -419,16 +321,12 @@
|
|||
compatible = "brcm,bcm2835-i2s";
|
||||
reg = <0x7e203000 0x24>;
|
||||
clocks = <&clocks BCM2835_CLOCK_PCM>;
|
||||
|
||||
dmas = <&dma 2>,
|
||||
<&dma 3>;
|
||||
dma-names = "tx", "rx";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
spi: spi@7e204000 {
|
||||
compatible = "brcm,bcm2835-spi";
|
||||
reg = <0x7e204000 0x1000>;
|
||||
reg = <0x7e204000 0x200>;
|
||||
interrupts = <2 22>;
|
||||
clocks = <&clocks BCM2835_CLOCK_VPU>;
|
||||
#address-cells = <1>;
|
||||
|
@ -438,7 +336,7 @@
|
|||
|
||||
i2c0: i2c@7e205000 {
|
||||
compatible = "brcm,bcm2835-i2c";
|
||||
reg = <0x7e205000 0x1000>;
|
||||
reg = <0x7e205000 0x200>;
|
||||
interrupts = <2 21>;
|
||||
clocks = <&clocks BCM2835_CLOCK_VPU>;
|
||||
#address-cells = <1>;
|
||||
|
@ -446,18 +344,6 @@
|
|||
status = "disabled";
|
||||
};
|
||||
|
||||
pixelvalve@7e206000 {
|
||||
compatible = "brcm,bcm2835-pixelvalve0";
|
||||
reg = <0x7e206000 0x100>;
|
||||
interrupts = <2 13>; /* pwa0 */
|
||||
};
|
||||
|
||||
pixelvalve@7e207000 {
|
||||
compatible = "brcm,bcm2835-pixelvalve1";
|
||||
reg = <0x7e207000 0x100>;
|
||||
interrupts = <2 14>; /* pwa1 */
|
||||
};
|
||||
|
||||
dpi: dpi@7e208000 {
|
||||
compatible = "brcm,bcm2835-dpi";
|
||||
reg = <0x7e208000 0x8c>;
|
||||
|
@ -486,13 +372,6 @@
|
|||
"dsi0_ddr2",
|
||||
"dsi0_ddr";
|
||||
|
||||
};
|
||||
|
||||
thermal: thermal@7e212000 {
|
||||
compatible = "brcm,bcm2835-thermal";
|
||||
reg = <0x7e212000 0x8>;
|
||||
clocks = <&clocks BCM2835_CLOCK_TSENS>;
|
||||
#thermal-sensor-cells = <0>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
|
@ -541,7 +420,7 @@
|
|||
status = "disabled";
|
||||
};
|
||||
|
||||
sdhci: sdhci@7e300000 {
|
||||
sdhci: mmc@7e300000 {
|
||||
compatible = "brcm,bcm2835-sdhci";
|
||||
reg = <0x7e300000 0x100>;
|
||||
interrupts = <2 30>;
|
||||
|
@ -585,44 +464,6 @@
|
|||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c2: i2c@7e805000 {
|
||||
compatible = "brcm,bcm2835-i2c";
|
||||
reg = <0x7e805000 0x1000>;
|
||||
interrupts = <2 21>;
|
||||
clocks = <&clocks BCM2835_CLOCK_VPU>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
vec: vec@7e806000 {
|
||||
compatible = "brcm,bcm2835-vec";
|
||||
reg = <0x7e806000 0x1000>;
|
||||
clocks = <&clocks BCM2835_CLOCK_VEC>;
|
||||
interrupts = <2 27>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
pixelvalve@7e807000 {
|
||||
compatible = "brcm,bcm2835-pixelvalve2";
|
||||
reg = <0x7e807000 0x100>;
|
||||
interrupts = <2 10>; /* pixelvalve */
|
||||
};
|
||||
|
||||
hdmi: hdmi@7e902000 {
|
||||
compatible = "brcm,bcm2835-hdmi";
|
||||
reg = <0x7e902000 0x600>,
|
||||
<0x7e808000 0x100>;
|
||||
interrupts = <2 8>, <2 9>;
|
||||
ddc = <&i2c2>;
|
||||
clocks = <&clocks BCM2835_PLLH_PIX>,
|
||||
<&clocks BCM2835_CLOCK_HSM>;
|
||||
clock-names = "pixel", "hdmi";
|
||||
dmas = <&dma 17>;
|
||||
dma-names = "audio-rx";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
usb: usb@7e980000 {
|
||||
compatible = "brcm,bcm2835-usb";
|
||||
reg = <0x7e980000 0x10000>;
|
||||
|
@ -634,36 +475,19 @@
|
|||
phys = <&usbphy>;
|
||||
phy-names = "usb2-phy";
|
||||
};
|
||||
|
||||
v3d: v3d@7ec00000 {
|
||||
compatible = "brcm,bcm2835-v3d";
|
||||
reg = <0x7ec00000 0x1000>;
|
||||
interrupts = <1 10>;
|
||||
power-domains = <&pm BCM2835_POWER_DOMAIN_GRAFX_V3D>;
|
||||
};
|
||||
|
||||
vc4: gpu {
|
||||
compatible = "brcm,bcm2835-vc4";
|
||||
};
|
||||
};
|
||||
|
||||
clocks {
|
||||
compatible = "simple-bus";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
/* The oscillator is the root of the clock tree. */
|
||||
clk_osc: clock@3 {
|
||||
clk_osc: clk-osc {
|
||||
compatible = "fixed-clock";
|
||||
reg = <3>;
|
||||
#clock-cells = <0>;
|
||||
clock-output-names = "osc";
|
||||
clock-frequency = <19200000>;
|
||||
};
|
||||
|
||||
clk_usb: clock@4 {
|
||||
clk_usb: clk-usb {
|
||||
compatible = "fixed-clock";
|
||||
reg = <4>;
|
||||
#clock-cells = <0>;
|
||||
clock-output-names = "otg";
|
||||
clock-frequency = <480000000>;
|
||||
|
|
15
arch/arm/dts/bcm7xxx.dts
Normal file
15
arch/arm/dts/bcm7xxx.dts
Normal file
|
@ -0,0 +1,15 @@
|
|||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* Empty devicetre file for bcm7260 board
|
||||
*
|
||||
* This is required to make the board build with CONFIG OF_SEPARATE
|
||||
* In-tree document explains how to obtain a real devicetree using 'bolt' but
|
||||
* I did not attempt this.
|
||||
*
|
||||
* Copyright 2021 Google LLC
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
|
||||
/ {
|
||||
};
|
9
arch/arm/dts/highbank.dts
Normal file
9
arch/arm/dts/highbank.dts
Normal file
|
@ -0,0 +1,9 @@
|
|||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* Empty devicetree for highbank/midway
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
|
||||
/ {
|
||||
};
|
831
arch/arm/dts/juno-base.dtsi
Normal file
831
arch/arm/dts/juno-base.dtsi
Normal file
|
@ -0,0 +1,831 @@
|
|||
// SPDX-License-Identifier: GPL-2.0
|
||||
#include "juno-clocks.dtsi"
|
||||
#include "juno-motherboard.dtsi"
|
||||
|
||||
/ {
|
||||
/*
|
||||
* Devices shared by all Juno boards
|
||||
*/
|
||||
|
||||
memtimer: timer@2a810000 {
|
||||
compatible = "arm,armv7-timer-mem";
|
||||
reg = <0x0 0x2a810000 0x0 0x10000>;
|
||||
clock-frequency = <50000000>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges = <0 0x0 0x2a820000 0x20000>;
|
||||
status = "disabled";
|
||||
frame@2a830000 {
|
||||
frame-number = <1>;
|
||||
interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>;
|
||||
reg = <0x10000 0x10000>;
|
||||
};
|
||||
};
|
||||
|
||||
mailbox: mhu@2b1f0000 {
|
||||
compatible = "arm,mhu", "arm,primecell";
|
||||
reg = <0x0 0x2b1f0000 0x0 0x1000>;
|
||||
interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#mbox-cells = <1>;
|
||||
clocks = <&soc_refclk100mhz>;
|
||||
clock-names = "apb_pclk";
|
||||
};
|
||||
|
||||
smmu_gpu: iommu@2b400000 {
|
||||
compatible = "arm,mmu-400", "arm,smmu-v1";
|
||||
reg = <0x0 0x2b400000 0x0 0x10000>;
|
||||
interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#iommu-cells = <1>;
|
||||
#global-interrupts = <1>;
|
||||
power-domains = <&scpi_devpd 1>;
|
||||
dma-coherent;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
smmu_pcie: iommu@2b500000 {
|
||||
compatible = "arm,mmu-401", "arm,smmu-v1";
|
||||
reg = <0x0 0x2b500000 0x0 0x10000>;
|
||||
interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#iommu-cells = <1>;
|
||||
#global-interrupts = <1>;
|
||||
dma-coherent;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
smmu_etr: iommu@2b600000 {
|
||||
compatible = "arm,mmu-401", "arm,smmu-v1";
|
||||
reg = <0x0 0x2b600000 0x0 0x10000>;
|
||||
interrupts = <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#iommu-cells = <1>;
|
||||
#global-interrupts = <1>;
|
||||
dma-coherent;
|
||||
power-domains = <&scpi_devpd 0>;
|
||||
};
|
||||
|
||||
gic: interrupt-controller@2c010000 {
|
||||
compatible = "arm,gic-400", "arm,cortex-a15-gic";
|
||||
reg = <0x0 0x2c010000 0 0x1000>,
|
||||
<0x0 0x2c02f000 0 0x2000>,
|
||||
<0x0 0x2c04f000 0 0x2000>,
|
||||
<0x0 0x2c06f000 0 0x2000>;
|
||||
#address-cells = <1>;
|
||||
#interrupt-cells = <3>;
|
||||
#size-cells = <1>;
|
||||
interrupt-controller;
|
||||
interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(6) | IRQ_TYPE_LEVEL_HIGH)>;
|
||||
ranges = <0 0 0x2c1c0000 0x40000>;
|
||||
|
||||
v2m_0: v2m@0 {
|
||||
compatible = "arm,gic-v2m-frame";
|
||||
msi-controller;
|
||||
reg = <0 0x10000>;
|
||||
};
|
||||
|
||||
v2m@10000 {
|
||||
compatible = "arm,gic-v2m-frame";
|
||||
msi-controller;
|
||||
reg = <0x10000 0x10000>;
|
||||
};
|
||||
|
||||
v2m@20000 {
|
||||
compatible = "arm,gic-v2m-frame";
|
||||
msi-controller;
|
||||
reg = <0x20000 0x10000>;
|
||||
};
|
||||
|
||||
v2m@30000 {
|
||||
compatible = "arm,gic-v2m-frame";
|
||||
msi-controller;
|
||||
reg = <0x30000 0x10000>;
|
||||
};
|
||||
};
|
||||
|
||||
timer {
|
||||
compatible = "arm,armv8-timer";
|
||||
interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(6) | IRQ_TYPE_LEVEL_LOW)>,
|
||||
<GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(6) | IRQ_TYPE_LEVEL_LOW)>,
|
||||
<GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(6) | IRQ_TYPE_LEVEL_LOW)>,
|
||||
<GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(6) | IRQ_TYPE_LEVEL_LOW)>;
|
||||
};
|
||||
|
||||
/*
|
||||
* Juno TRMs specify the size for these coresight components as 64K.
|
||||
* The actual size is just 4K though 64K is reserved. Access to the
|
||||
* unmapped reserved region results in a DECERR response.
|
||||
*/
|
||||
etf@20010000 { /* etf0 */
|
||||
compatible = "arm,coresight-tmc", "arm,primecell";
|
||||
reg = <0 0x20010000 0 0x1000>;
|
||||
|
||||
clocks = <&soc_smc50mhz>;
|
||||
clock-names = "apb_pclk";
|
||||
power-domains = <&scpi_devpd 0>;
|
||||
|
||||
in-ports {
|
||||
port {
|
||||
etf0_in_port: endpoint {
|
||||
remote-endpoint = <&main_funnel_out_port>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
out-ports {
|
||||
port {
|
||||
etf0_out_port: endpoint {
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
tpiu@20030000 {
|
||||
compatible = "arm,coresight-tpiu", "arm,primecell";
|
||||
reg = <0 0x20030000 0 0x1000>;
|
||||
|
||||
clocks = <&soc_smc50mhz>;
|
||||
clock-names = "apb_pclk";
|
||||
power-domains = <&scpi_devpd 0>;
|
||||
in-ports {
|
||||
port {
|
||||
tpiu_in_port: endpoint {
|
||||
remote-endpoint = <&replicator_out_port0>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
/* main funnel on Juno r0, cssys0 funnel on Juno r1/r2 as per TRM*/
|
||||
main_funnel: funnel@20040000 {
|
||||
compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
|
||||
reg = <0 0x20040000 0 0x1000>;
|
||||
|
||||
clocks = <&soc_smc50mhz>;
|
||||
clock-names = "apb_pclk";
|
||||
power-domains = <&scpi_devpd 0>;
|
||||
|
||||
out-ports {
|
||||
port {
|
||||
main_funnel_out_port: endpoint {
|
||||
remote-endpoint = <&etf0_in_port>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
main_funnel_in_ports: in-ports {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
port@0 {
|
||||
reg = <0>;
|
||||
main_funnel_in_port0: endpoint {
|
||||
remote-endpoint = <&cluster0_funnel_out_port>;
|
||||
};
|
||||
};
|
||||
|
||||
port@1 {
|
||||
reg = <1>;
|
||||
main_funnel_in_port1: endpoint {
|
||||
remote-endpoint = <&cluster1_funnel_out_port>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
etr@20070000 {
|
||||
compatible = "arm,coresight-tmc", "arm,primecell";
|
||||
reg = <0 0x20070000 0 0x1000>;
|
||||
iommus = <&smmu_etr 0>;
|
||||
|
||||
clocks = <&soc_smc50mhz>;
|
||||
clock-names = "apb_pclk";
|
||||
power-domains = <&scpi_devpd 0>;
|
||||
arm,scatter-gather;
|
||||
in-ports {
|
||||
port {
|
||||
etr_in_port: endpoint {
|
||||
remote-endpoint = <&replicator_out_port1>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
stm@20100000 {
|
||||
compatible = "arm,coresight-stm", "arm,primecell";
|
||||
reg = <0 0x20100000 0 0x1000>,
|
||||
<0 0x28000000 0 0x1000000>;
|
||||
reg-names = "stm-base", "stm-stimulus-base";
|
||||
|
||||
clocks = <&soc_smc50mhz>;
|
||||
clock-names = "apb_pclk";
|
||||
power-domains = <&scpi_devpd 0>;
|
||||
out-ports {
|
||||
port {
|
||||
stm_out_port: endpoint {
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
replicator@20120000 {
|
||||
compatible = "arm,coresight-dynamic-replicator", "arm,primecell";
|
||||
reg = <0 0x20120000 0 0x1000>;
|
||||
|
||||
clocks = <&soc_smc50mhz>;
|
||||
clock-names = "apb_pclk";
|
||||
power-domains = <&scpi_devpd 0>;
|
||||
|
||||
out-ports {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
/* replicator output ports */
|
||||
port@0 {
|
||||
reg = <0>;
|
||||
replicator_out_port0: endpoint {
|
||||
remote-endpoint = <&tpiu_in_port>;
|
||||
};
|
||||
};
|
||||
|
||||
port@1 {
|
||||
reg = <1>;
|
||||
replicator_out_port1: endpoint {
|
||||
remote-endpoint = <&etr_in_port>;
|
||||
};
|
||||
};
|
||||
};
|
||||
in-ports {
|
||||
port {
|
||||
replicator_in_port0: endpoint {
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
cpu_debug0: cpu-debug@22010000 {
|
||||
compatible = "arm,coresight-cpu-debug", "arm,primecell";
|
||||
reg = <0x0 0x22010000 0x0 0x1000>;
|
||||
|
||||
clocks = <&soc_smc50mhz>;
|
||||
clock-names = "apb_pclk";
|
||||
power-domains = <&scpi_devpd 0>;
|
||||
};
|
||||
|
||||
etm0: etm@22040000 {
|
||||
compatible = "arm,coresight-etm4x", "arm,primecell";
|
||||
reg = <0 0x22040000 0 0x1000>;
|
||||
|
||||
clocks = <&soc_smc50mhz>;
|
||||
clock-names = "apb_pclk";
|
||||
power-domains = <&scpi_devpd 0>;
|
||||
out-ports {
|
||||
port {
|
||||
cluster0_etm0_out_port: endpoint {
|
||||
remote-endpoint = <&cluster0_funnel_in_port0>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
funnel@220c0000 { /* cluster0 funnel */
|
||||
compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
|
||||
reg = <0 0x220c0000 0 0x1000>;
|
||||
|
||||
clocks = <&soc_smc50mhz>;
|
||||
clock-names = "apb_pclk";
|
||||
power-domains = <&scpi_devpd 0>;
|
||||
out-ports {
|
||||
port {
|
||||
cluster0_funnel_out_port: endpoint {
|
||||
remote-endpoint = <&main_funnel_in_port0>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
in-ports {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
port@0 {
|
||||
reg = <0>;
|
||||
cluster0_funnel_in_port0: endpoint {
|
||||
remote-endpoint = <&cluster0_etm0_out_port>;
|
||||
};
|
||||
};
|
||||
|
||||
port@1 {
|
||||
reg = <1>;
|
||||
cluster0_funnel_in_port1: endpoint {
|
||||
remote-endpoint = <&cluster0_etm1_out_port>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
cpu_debug1: cpu-debug@22110000 {
|
||||
compatible = "arm,coresight-cpu-debug", "arm,primecell";
|
||||
reg = <0x0 0x22110000 0x0 0x1000>;
|
||||
|
||||
clocks = <&soc_smc50mhz>;
|
||||
clock-names = "apb_pclk";
|
||||
power-domains = <&scpi_devpd 0>;
|
||||
};
|
||||
|
||||
etm1: etm@22140000 {
|
||||
compatible = "arm,coresight-etm4x", "arm,primecell";
|
||||
reg = <0 0x22140000 0 0x1000>;
|
||||
|
||||
clocks = <&soc_smc50mhz>;
|
||||
clock-names = "apb_pclk";
|
||||
power-domains = <&scpi_devpd 0>;
|
||||
out-ports {
|
||||
port {
|
||||
cluster0_etm1_out_port: endpoint {
|
||||
remote-endpoint = <&cluster0_funnel_in_port1>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
cpu_debug2: cpu-debug@23010000 {
|
||||
compatible = "arm,coresight-cpu-debug", "arm,primecell";
|
||||
reg = <0x0 0x23010000 0x0 0x1000>;
|
||||
|
||||
clocks = <&soc_smc50mhz>;
|
||||
clock-names = "apb_pclk";
|
||||
power-domains = <&scpi_devpd 0>;
|
||||
};
|
||||
|
||||
etm2: etm@23040000 {
|
||||
compatible = "arm,coresight-etm4x", "arm,primecell";
|
||||
reg = <0 0x23040000 0 0x1000>;
|
||||
|
||||
clocks = <&soc_smc50mhz>;
|
||||
clock-names = "apb_pclk";
|
||||
power-domains = <&scpi_devpd 0>;
|
||||
out-ports {
|
||||
port {
|
||||
cluster1_etm0_out_port: endpoint {
|
||||
remote-endpoint = <&cluster1_funnel_in_port0>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
funnel@230c0000 { /* cluster1 funnel */
|
||||
compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
|
||||
reg = <0 0x230c0000 0 0x1000>;
|
||||
|
||||
clocks = <&soc_smc50mhz>;
|
||||
clock-names = "apb_pclk";
|
||||
power-domains = <&scpi_devpd 0>;
|
||||
out-ports {
|
||||
port {
|
||||
cluster1_funnel_out_port: endpoint {
|
||||
remote-endpoint = <&main_funnel_in_port1>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
in-ports {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
port@0 {
|
||||
reg = <0>;
|
||||
cluster1_funnel_in_port0: endpoint {
|
||||
remote-endpoint = <&cluster1_etm0_out_port>;
|
||||
};
|
||||
};
|
||||
|
||||
port@1 {
|
||||
reg = <1>;
|
||||
cluster1_funnel_in_port1: endpoint {
|
||||
remote-endpoint = <&cluster1_etm1_out_port>;
|
||||
};
|
||||
};
|
||||
port@2 {
|
||||
reg = <2>;
|
||||
cluster1_funnel_in_port2: endpoint {
|
||||
remote-endpoint = <&cluster1_etm2_out_port>;
|
||||
};
|
||||
};
|
||||
port@3 {
|
||||
reg = <3>;
|
||||
cluster1_funnel_in_port3: endpoint {
|
||||
remote-endpoint = <&cluster1_etm3_out_port>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
cpu_debug3: cpu-debug@23110000 {
|
||||
compatible = "arm,coresight-cpu-debug", "arm,primecell";
|
||||
reg = <0x0 0x23110000 0x0 0x1000>;
|
||||
|
||||
clocks = <&soc_smc50mhz>;
|
||||
clock-names = "apb_pclk";
|
||||
power-domains = <&scpi_devpd 0>;
|
||||
};
|
||||
|
||||
etm3: etm@23140000 {
|
||||
compatible = "arm,coresight-etm4x", "arm,primecell";
|
||||
reg = <0 0x23140000 0 0x1000>;
|
||||
|
||||
clocks = <&soc_smc50mhz>;
|
||||
clock-names = "apb_pclk";
|
||||
power-domains = <&scpi_devpd 0>;
|
||||
out-ports {
|
||||
port {
|
||||
cluster1_etm1_out_port: endpoint {
|
||||
remote-endpoint = <&cluster1_funnel_in_port1>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
cpu_debug4: cpu-debug@23210000 {
|
||||
compatible = "arm,coresight-cpu-debug", "arm,primecell";
|
||||
reg = <0x0 0x23210000 0x0 0x1000>;
|
||||
|
||||
clocks = <&soc_smc50mhz>;
|
||||
clock-names = "apb_pclk";
|
||||
power-domains = <&scpi_devpd 0>;
|
||||
};
|
||||
|
||||
etm4: etm@23240000 {
|
||||
compatible = "arm,coresight-etm4x", "arm,primecell";
|
||||
reg = <0 0x23240000 0 0x1000>;
|
||||
|
||||
clocks = <&soc_smc50mhz>;
|
||||
clock-names = "apb_pclk";
|
||||
power-domains = <&scpi_devpd 0>;
|
||||
out-ports {
|
||||
port {
|
||||
cluster1_etm2_out_port: endpoint {
|
||||
remote-endpoint = <&cluster1_funnel_in_port2>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
cpu_debug5: cpu-debug@23310000 {
|
||||
compatible = "arm,coresight-cpu-debug", "arm,primecell";
|
||||
reg = <0x0 0x23310000 0x0 0x1000>;
|
||||
|
||||
clocks = <&soc_smc50mhz>;
|
||||
clock-names = "apb_pclk";
|
||||
power-domains = <&scpi_devpd 0>;
|
||||
};
|
||||
|
||||
etm5: etm@23340000 {
|
||||
compatible = "arm,coresight-etm4x", "arm,primecell";
|
||||
reg = <0 0x23340000 0 0x1000>;
|
||||
|
||||
clocks = <&soc_smc50mhz>;
|
||||
clock-names = "apb_pclk";
|
||||
power-domains = <&scpi_devpd 0>;
|
||||
out-ports {
|
||||
port {
|
||||
cluster1_etm3_out_port: endpoint {
|
||||
remote-endpoint = <&cluster1_funnel_in_port3>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
gpu: gpu@2d000000 {
|
||||
compatible = "arm,juno-mali", "arm,mali-t624";
|
||||
reg = <0 0x2d000000 0 0x10000>;
|
||||
interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupt-names = "job", "mmu", "gpu";
|
||||
clocks = <&scpi_dvfs 2>;
|
||||
power-domains = <&scpi_devpd 1>;
|
||||
dma-coherent;
|
||||
/* The SMMU is only really of interest to bare-metal hypervisors */
|
||||
/* iommus = <&smmu_gpu 0>; */
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
sram: sram@2e000000 {
|
||||
compatible = "arm,juno-sram-ns", "mmio-sram";
|
||||
reg = <0x0 0x2e000000 0x0 0x8000>;
|
||||
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges = <0 0x0 0x2e000000 0x8000>;
|
||||
|
||||
cpu_scp_lpri: scp-sram@0 {
|
||||
compatible = "arm,juno-scp-shmem";
|
||||
reg = <0x0 0x200>;
|
||||
};
|
||||
|
||||
cpu_scp_hpri: scp-sram@200 {
|
||||
compatible = "arm,juno-scp-shmem";
|
||||
reg = <0x200 0x200>;
|
||||
};
|
||||
};
|
||||
|
||||
pcie_ctlr: pcie@40000000 {
|
||||
compatible = "arm,juno-r1-pcie", "plda,xpressrich3-axi", "pci-host-ecam-generic";
|
||||
device_type = "pci";
|
||||
reg = <0 0x40000000 0 0x10000000>; /* ECAM config space */
|
||||
bus-range = <0 255>;
|
||||
linux,pci-domain = <0>;
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
dma-coherent;
|
||||
ranges = <0x01000000 0x00 0x00000000 0x00 0x5f800000 0x0 0x00800000>,
|
||||
<0x02000000 0x00 0x50000000 0x00 0x50000000 0x0 0x08000000>,
|
||||
<0x42000000 0x40 0x00000000 0x40 0x00000000 0x1 0x00000000>;
|
||||
/* Standard AXI Translation entries as programmed by EDK2 */
|
||||
dma-ranges = <0x02000000 0x0 0x2c1c0000 0x0 0x2c1c0000 0x0 0x00040000>,
|
||||
<0x02000000 0x0 0x80000000 0x0 0x80000000 0x0 0x80000000>,
|
||||
<0x43000000 0x8 0x00000000 0x8 0x00000000 0x2 0x00000000>;
|
||||
#interrupt-cells = <1>;
|
||||
interrupt-map-mask = <0 0 0 7>;
|
||||
interrupt-map = <0 0 0 1 &gic 0 GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 0 0 2 &gic 0 GIC_SPI 137 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 0 0 3 &gic 0 GIC_SPI 138 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 0 0 4 &gic 0 GIC_SPI 139 IRQ_TYPE_LEVEL_HIGH>;
|
||||
msi-parent = <&v2m_0>;
|
||||
status = "disabled";
|
||||
iommu-map-mask = <0x0>; /* RC has no means to output PCI RID */
|
||||
iommu-map = <0x0 &smmu_pcie 0x0 0x1>;
|
||||
};
|
||||
|
||||
scpi {
|
||||
compatible = "arm,scpi";
|
||||
mboxes = <&mailbox 1>;
|
||||
shmem = <&cpu_scp_hpri>;
|
||||
|
||||
clocks {
|
||||
compatible = "arm,scpi-clocks";
|
||||
|
||||
scpi_dvfs: clocks-0 {
|
||||
compatible = "arm,scpi-dvfs-clocks";
|
||||
#clock-cells = <1>;
|
||||
clock-indices = <0>, <1>, <2>;
|
||||
clock-output-names = "atlclk", "aplclk","gpuclk";
|
||||
};
|
||||
scpi_clk: clocks-1 {
|
||||
compatible = "arm,scpi-variable-clocks";
|
||||
#clock-cells = <1>;
|
||||
clock-indices = <3>;
|
||||
clock-output-names = "pxlclk";
|
||||
};
|
||||
};
|
||||
|
||||
scpi_devpd: power-controller {
|
||||
compatible = "arm,scpi-power-domains";
|
||||
num-domains = <2>;
|
||||
#power-domain-cells = <1>;
|
||||
};
|
||||
|
||||
scpi_sensors0: sensors {
|
||||
compatible = "arm,scpi-sensors";
|
||||
#thermal-sensor-cells = <1>;
|
||||
};
|
||||
};
|
||||
|
||||
thermal-zones {
|
||||
pmic {
|
||||
polling-delay = <1000>;
|
||||
polling-delay-passive = <100>;
|
||||
thermal-sensors = <&scpi_sensors0 0>;
|
||||
};
|
||||
|
||||
soc {
|
||||
polling-delay = <1000>;
|
||||
polling-delay-passive = <100>;
|
||||
thermal-sensors = <&scpi_sensors0 3>;
|
||||
};
|
||||
|
||||
big_cluster_thermal_zone: big-cluster {
|
||||
polling-delay = <1000>;
|
||||
polling-delay-passive = <100>;
|
||||
thermal-sensors = <&scpi_sensors0 21>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
little_cluster_thermal_zone: little-cluster {
|
||||
polling-delay = <1000>;
|
||||
polling-delay-passive = <100>;
|
||||
thermal-sensors = <&scpi_sensors0 22>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
gpu0_thermal_zone: gpu0 {
|
||||
polling-delay = <1000>;
|
||||
polling-delay-passive = <100>;
|
||||
thermal-sensors = <&scpi_sensors0 23>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
gpu1_thermal_zone: gpu1 {
|
||||
polling-delay = <1000>;
|
||||
polling-delay-passive = <100>;
|
||||
thermal-sensors = <&scpi_sensors0 24>;
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
|
||||
smmu_dma: iommu@7fb00000 {
|
||||
compatible = "arm,mmu-401", "arm,smmu-v1";
|
||||
reg = <0x0 0x7fb00000 0x0 0x10000>;
|
||||
interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#iommu-cells = <1>;
|
||||
#global-interrupts = <1>;
|
||||
dma-coherent;
|
||||
};
|
||||
|
||||
smmu_hdlcd1: iommu@7fb10000 {
|
||||
compatible = "arm,mmu-401", "arm,smmu-v1";
|
||||
reg = <0x0 0x7fb10000 0x0 0x10000>;
|
||||
interrupts = <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#iommu-cells = <1>;
|
||||
#global-interrupts = <1>;
|
||||
};
|
||||
|
||||
smmu_hdlcd0: iommu@7fb20000 {
|
||||
compatible = "arm,mmu-401", "arm,smmu-v1";
|
||||
reg = <0x0 0x7fb20000 0x0 0x10000>;
|
||||
interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#iommu-cells = <1>;
|
||||
#global-interrupts = <1>;
|
||||
};
|
||||
|
||||
smmu_usb: iommu@7fb30000 {
|
||||
compatible = "arm,mmu-401", "arm,smmu-v1";
|
||||
reg = <0x0 0x7fb30000 0x0 0x10000>;
|
||||
interrupts = <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#iommu-cells = <1>;
|
||||
#global-interrupts = <1>;
|
||||
dma-coherent;
|
||||
};
|
||||
|
||||
dma@7ff00000 {
|
||||
compatible = "arm,pl330", "arm,primecell";
|
||||
reg = <0x0 0x7ff00000 0 0x1000>;
|
||||
#dma-cells = <1>;
|
||||
#dma-channels = <8>;
|
||||
#dma-requests = <32>;
|
||||
interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>;
|
||||
iommus = <&smmu_dma 0>,
|
||||
<&smmu_dma 1>,
|
||||
<&smmu_dma 2>,
|
||||
<&smmu_dma 3>,
|
||||
<&smmu_dma 4>,
|
||||
<&smmu_dma 5>,
|
||||
<&smmu_dma 6>,
|
||||
<&smmu_dma 7>,
|
||||
<&smmu_dma 8>;
|
||||
clocks = <&soc_faxiclk>;
|
||||
clock-names = "apb_pclk";
|
||||
};
|
||||
|
||||
hdlcd@7ff50000 {
|
||||
compatible = "arm,hdlcd";
|
||||
reg = <0 0x7ff50000 0 0x1000>;
|
||||
interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>;
|
||||
iommus = <&smmu_hdlcd1 0>;
|
||||
clocks = <&scpi_clk 3>;
|
||||
clock-names = "pxlclk";
|
||||
|
||||
port {
|
||||
hdlcd1_output: endpoint {
|
||||
remote-endpoint = <&tda998x_1_input>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
hdlcd@7ff60000 {
|
||||
compatible = "arm,hdlcd";
|
||||
reg = <0 0x7ff60000 0 0x1000>;
|
||||
interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
|
||||
iommus = <&smmu_hdlcd0 0>;
|
||||
clocks = <&scpi_clk 3>;
|
||||
clock-names = "pxlclk";
|
||||
|
||||
port {
|
||||
hdlcd0_output: endpoint {
|
||||
remote-endpoint = <&tda998x_0_input>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
soc_uart0: serial@7ff80000 {
|
||||
compatible = "arm,pl011", "arm,primecell";
|
||||
reg = <0x0 0x7ff80000 0x0 0x1000>;
|
||||
interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&soc_uartclk>, <&soc_refclk100mhz>;
|
||||
clock-names = "uartclk", "apb_pclk";
|
||||
};
|
||||
|
||||
i2c@7ffa0000 {
|
||||
compatible = "snps,designware-i2c";
|
||||
reg = <0x0 0x7ffa0000 0x0 0x1000>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
interrupts = <GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clock-frequency = <400000>;
|
||||
i2c-sda-hold-time-ns = <500>;
|
||||
clocks = <&soc_smc50mhz>;
|
||||
|
||||
hdmi-transmitter@70 {
|
||||
compatible = "nxp,tda998x";
|
||||
reg = <0x70>;
|
||||
port {
|
||||
tda998x_0_input: endpoint {
|
||||
remote-endpoint = <&hdlcd0_output>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
hdmi-transmitter@71 {
|
||||
compatible = "nxp,tda998x";
|
||||
reg = <0x71>;
|
||||
port {
|
||||
tda998x_1_input: endpoint {
|
||||
remote-endpoint = <&hdlcd1_output>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
usb@7ffb0000 {
|
||||
compatible = "generic-ohci";
|
||||
reg = <0x0 0x7ffb0000 0x0 0x10000>;
|
||||
interrupts = <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>;
|
||||
iommus = <&smmu_usb 0>;
|
||||
clocks = <&soc_usb48mhz>;
|
||||
};
|
||||
|
||||
usb@7ffc0000 {
|
||||
compatible = "generic-ehci";
|
||||
reg = <0x0 0x7ffc0000 0x0 0x10000>;
|
||||
interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
|
||||
iommus = <&smmu_usb 0>;
|
||||
clocks = <&soc_usb48mhz>;
|
||||
};
|
||||
|
||||
memory-controller@7ffd0000 {
|
||||
compatible = "arm,pl354", "arm,primecell";
|
||||
reg = <0 0x7ffd0000 0 0x1000>;
|
||||
interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&soc_smc50mhz>;
|
||||
clock-names = "apb_pclk";
|
||||
};
|
||||
|
||||
memory@80000000 {
|
||||
device_type = "memory";
|
||||
/* last 16MB of the first memory area is reserved for secure world use by firmware */
|
||||
reg = <0x00000000 0x80000000 0x0 0x7f000000>,
|
||||
<0x00000008 0x80000000 0x1 0x80000000>;
|
||||
};
|
||||
|
||||
bus@8000000 {
|
||||
#interrupt-cells = <1>;
|
||||
interrupt-map-mask = <0 0 15>;
|
||||
interrupt-map = <0 0 0 &gic 0 GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 0 1 &gic 0 GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 0 2 &gic 0 GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 0 3 &gic 0 GIC_SPI 160 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 0 4 &gic 0 GIC_SPI 161 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 0 5 &gic 0 GIC_SPI 162 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 0 6 &gic 0 GIC_SPI 163 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 0 7 &gic 0 GIC_SPI 164 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 0 8 &gic 0 GIC_SPI 165 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 0 9 &gic 0 GIC_SPI 166 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 0 10 &gic 0 GIC_SPI 167 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 0 11 &gic 0 GIC_SPI 168 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 0 12 &gic 0 GIC_SPI 169 IRQ_TYPE_LEVEL_HIGH>;
|
||||
};
|
||||
|
||||
site2: tlx-bus@60000000 {
|
||||
compatible = "simple-bus";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges = <0 0 0x60000000 0x10000000>;
|
||||
#interrupt-cells = <1>;
|
||||
interrupt-map-mask = <0 0>;
|
||||
interrupt-map = <0 0 &gic 0 GIC_SPI 168 IRQ_TYPE_LEVEL_HIGH>;
|
||||
};
|
||||
};
|
46
arch/arm/dts/juno-clocks.dtsi
Normal file
46
arch/arm/dts/juno-clocks.dtsi
Normal file
|
@ -0,0 +1,46 @@
|
|||
// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
|
||||
/*
|
||||
* ARM Juno Platform clocks
|
||||
*
|
||||
* Copyright (c) 2013-2014 ARM Ltd
|
||||
*
|
||||
* This file is licensed under a dual GPLv2 or BSD license.
|
||||
*
|
||||
*/
|
||||
/ {
|
||||
/* SoC fixed clocks */
|
||||
soc_uartclk: refclk7372800hz {
|
||||
compatible = "fixed-clock";
|
||||
#clock-cells = <0>;
|
||||
clock-frequency = <7372800>;
|
||||
clock-output-names = "juno:uartclk";
|
||||
};
|
||||
|
||||
soc_usb48mhz: clk48mhz {
|
||||
compatible = "fixed-clock";
|
||||
#clock-cells = <0>;
|
||||
clock-frequency = <48000000>;
|
||||
clock-output-names = "clk48mhz";
|
||||
};
|
||||
|
||||
soc_smc50mhz: clk50mhz {
|
||||
compatible = "fixed-clock";
|
||||
#clock-cells = <0>;
|
||||
clock-frequency = <50000000>;
|
||||
clock-output-names = "smc_clk";
|
||||
};
|
||||
|
||||
soc_refclk100mhz: refclk100mhz {
|
||||
compatible = "fixed-clock";
|
||||
#clock-cells = <0>;
|
||||
clock-frequency = <100000000>;
|
||||
clock-output-names = "apb_pclk";
|
||||
};
|
||||
|
||||
soc_faxiclk: refclk400mhz {
|
||||
compatible = "fixed-clock";
|
||||
#clock-cells = <0>;
|
||||
clock-frequency = <400000000>;
|
||||
clock-output-names = "faxi_clk";
|
||||
};
|
||||
};
|
85
arch/arm/dts/juno-cs-r1r2.dtsi
Normal file
85
arch/arm/dts/juno-cs-r1r2.dtsi
Normal file
|
@ -0,0 +1,85 @@
|
|||
// SPDX-License-Identifier: GPL-2.0
|
||||
/ {
|
||||
funnel@20130000 { /* cssys1 */
|
||||
compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
|
||||
reg = <0 0x20130000 0 0x1000>;
|
||||
|
||||
clocks = <&soc_smc50mhz>;
|
||||
clock-names = "apb_pclk";
|
||||
power-domains = <&scpi_devpd 0>;
|
||||
out-ports {
|
||||
port {
|
||||
csys1_funnel_out_port: endpoint {
|
||||
remote-endpoint = <&etf1_in_port>;
|
||||
};
|
||||
};
|
||||
};
|
||||
in-ports {
|
||||
port {
|
||||
csys1_funnel_in_port0: endpoint {
|
||||
};
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
etf@20140000 { /* etf1 */
|
||||
compatible = "arm,coresight-tmc", "arm,primecell";
|
||||
reg = <0 0x20140000 0 0x1000>;
|
||||
|
||||
clocks = <&soc_smc50mhz>;
|
||||
clock-names = "apb_pclk";
|
||||
power-domains = <&scpi_devpd 0>;
|
||||
in-ports {
|
||||
port {
|
||||
etf1_in_port: endpoint {
|
||||
remote-endpoint = <&csys1_funnel_out_port>;
|
||||
};
|
||||
};
|
||||
};
|
||||
out-ports {
|
||||
port {
|
||||
etf1_out_port: endpoint {
|
||||
remote-endpoint = <&csys2_funnel_in_port1>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
funnel@20150000 { /* cssys2 */
|
||||
compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
|
||||
reg = <0 0x20150000 0 0x1000>;
|
||||
|
||||
clocks = <&soc_smc50mhz>;
|
||||
clock-names = "apb_pclk";
|
||||
power-domains = <&scpi_devpd 0>;
|
||||
out-ports {
|
||||
port {
|
||||
csys2_funnel_out_port: endpoint {
|
||||
remote-endpoint = <&replicator_in_port0>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
in-ports {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
port@0 {
|
||||
reg = <0>;
|
||||
csys2_funnel_in_port0: endpoint {
|
||||
slave-mode;
|
||||
remote-endpoint = <&etf0_out_port>;
|
||||
};
|
||||
};
|
||||
|
||||
port@1 {
|
||||
reg = <1>;
|
||||
csys2_funnel_in_port1: endpoint {
|
||||
slave-mode;
|
||||
remote-endpoint = <&etf1_out_port>;
|
||||
};
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
};
|
303
arch/arm/dts/juno-motherboard.dtsi
Normal file
303
arch/arm/dts/juno-motherboard.dtsi
Normal file
|
@ -0,0 +1,303 @@
|
|||
// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
|
||||
/*
|
||||
* ARM Juno Platform motherboard peripherals
|
||||
*
|
||||
* Copyright (c) 2013-2014 ARM Ltd
|
||||
*
|
||||
* This file is licensed under a dual GPLv2 or BSD license.
|
||||
*
|
||||
*/
|
||||
|
||||
/ {
|
||||
mb_clk24mhz: clk24mhz {
|
||||
compatible = "fixed-clock";
|
||||
#clock-cells = <0>;
|
||||
clock-frequency = <24000000>;
|
||||
clock-output-names = "juno_mb:clk24mhz";
|
||||
};
|
||||
|
||||
mb_clk25mhz: clk25mhz {
|
||||
compatible = "fixed-clock";
|
||||
#clock-cells = <0>;
|
||||
clock-frequency = <25000000>;
|
||||
clock-output-names = "juno_mb:clk25mhz";
|
||||
};
|
||||
|
||||
v2m_refclk1mhz: refclk1mhz {
|
||||
compatible = "fixed-clock";
|
||||
#clock-cells = <0>;
|
||||
clock-frequency = <1000000>;
|
||||
clock-output-names = "juno_mb:refclk1mhz";
|
||||
};
|
||||
|
||||
v2m_refclk32khz: refclk32khz {
|
||||
compatible = "fixed-clock";
|
||||
#clock-cells = <0>;
|
||||
clock-frequency = <32768>;
|
||||
clock-output-names = "juno_mb:refclk32khz";
|
||||
};
|
||||
|
||||
mb_fixed_3v3: mcc-sb-3v3 {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "MCC_SB_3V3";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
gpio-keys {
|
||||
compatible = "gpio-keys";
|
||||
|
||||
power-button {
|
||||
debounce-interval = <50>;
|
||||
wakeup-source;
|
||||
linux,code = <116>;
|
||||
label = "POWER";
|
||||
gpios = <&iofpga_gpio0 0 0x4>;
|
||||
};
|
||||
home-button {
|
||||
debounce-interval = <50>;
|
||||
wakeup-source;
|
||||
linux,code = <102>;
|
||||
label = "HOME";
|
||||
gpios = <&iofpga_gpio0 1 0x4>;
|
||||
};
|
||||
rlock-button {
|
||||
debounce-interval = <50>;
|
||||
wakeup-source;
|
||||
linux,code = <152>;
|
||||
label = "RLOCK";
|
||||
gpios = <&iofpga_gpio0 2 0x4>;
|
||||
};
|
||||
vol-up-button {
|
||||
debounce-interval = <50>;
|
||||
wakeup-source;
|
||||
linux,code = <115>;
|
||||
label = "VOL+";
|
||||
gpios = <&iofpga_gpio0 3 0x4>;
|
||||
};
|
||||
vol-down-button {
|
||||
debounce-interval = <50>;
|
||||
wakeup-source;
|
||||
linux,code = <114>;
|
||||
label = "VOL-";
|
||||
gpios = <&iofpga_gpio0 4 0x4>;
|
||||
};
|
||||
nmi-button {
|
||||
debounce-interval = <50>;
|
||||
wakeup-source;
|
||||
linux,code = <99>;
|
||||
label = "NMI";
|
||||
gpios = <&iofpga_gpio0 5 0x4>;
|
||||
};
|
||||
};
|
||||
|
||||
bus@8000000 {
|
||||
compatible = "simple-bus";
|
||||
#address-cells = <2>;
|
||||
#size-cells = <1>;
|
||||
ranges = <0 0x8000000 0 0x8000000 0x18000000>;
|
||||
|
||||
motherboard-bus@8000000 {
|
||||
compatible = "arm,vexpress,v2p-p1", "simple-bus";
|
||||
#address-cells = <2>; /* SMB chipselect number and offset */
|
||||
#size-cells = <1>;
|
||||
ranges = <0 0 0 0x08000000 0x04000000>,
|
||||
<1 0 0 0x14000000 0x04000000>,
|
||||
<2 0 0 0x18000000 0x04000000>,
|
||||
<3 0 0 0x1c000000 0x04000000>,
|
||||
<4 0 0 0x0c000000 0x04000000>,
|
||||
<5 0 0 0x10000000 0x04000000>;
|
||||
arm,hbi = <0x252>;
|
||||
arm,vexpress,site = <0>;
|
||||
|
||||
flash@0 {
|
||||
/* 2 * 32MiB NOR Flash memory mounted on CS0 */
|
||||
compatible = "arm,vexpress-flash", "cfi-flash";
|
||||
reg = <0 0x00000000 0x04000000>;
|
||||
bank-width = <4>;
|
||||
/*
|
||||
* Unfortunately, accessing the flash disturbs
|
||||
* the CPU idle states (suspend) and CPU
|
||||
* hotplug of the platform. For this reason,
|
||||
* flash hardware access is disabled by default.
|
||||
*/
|
||||
status = "disabled";
|
||||
partitions {
|
||||
compatible = "arm,arm-firmware-suite";
|
||||
};
|
||||
};
|
||||
|
||||
ethernet@200000000 {
|
||||
compatible = "smsc,lan9118", "smsc,lan9115";
|
||||
reg = <2 0x00000000 0x10000>;
|
||||
interrupts = <3>;
|
||||
phy-mode = "mii";
|
||||
reg-io-width = <4>;
|
||||
smsc,irq-active-high;
|
||||
smsc,irq-push-pull;
|
||||
clocks = <&mb_clk25mhz>;
|
||||
vdd33a-supply = <&mb_fixed_3v3>;
|
||||
vddvario-supply = <&mb_fixed_3v3>;
|
||||
};
|
||||
|
||||
iofpga-bus@300000000 {
|
||||
compatible = "simple-bus";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges = <0 3 0 0x200000>;
|
||||
|
||||
v2m_sysctl: sysctl@20000 {
|
||||
compatible = "arm,sp810", "arm,primecell";
|
||||
reg = <0x020000 0x1000>;
|
||||
clocks = <&v2m_refclk32khz>, <&v2m_refclk1mhz>, <&mb_clk24mhz>;
|
||||
clock-names = "refclk", "timclk", "apb_pclk";
|
||||
#clock-cells = <1>;
|
||||
clock-output-names = "timerclken0", "timerclken1", "timerclken2", "timerclken3";
|
||||
assigned-clocks = <&v2m_sysctl 0>, <&v2m_sysctl 1>, <&v2m_sysctl 3>, <&v2m_sysctl 3>;
|
||||
assigned-clock-parents = <&v2m_refclk1mhz>, <&v2m_refclk1mhz>, <&v2m_refclk1mhz>, <&v2m_refclk1mhz>;
|
||||
};
|
||||
|
||||
apbregs@10000 {
|
||||
compatible = "syscon", "simple-mfd";
|
||||
reg = <0x010000 0x1000>;
|
||||
|
||||
led0 {
|
||||
compatible = "register-bit-led";
|
||||
offset = <0x08>;
|
||||
mask = <0x01>;
|
||||
label = "vexpress:0";
|
||||
linux,default-trigger = "heartbeat";
|
||||
default-state = "on";
|
||||
};
|
||||
led1 {
|
||||
compatible = "register-bit-led";
|
||||
offset = <0x08>;
|
||||
mask = <0x02>;
|
||||
label = "vexpress:1";
|
||||
linux,default-trigger = "mmc0";
|
||||
default-state = "off";
|
||||
};
|
||||
led2 {
|
||||
compatible = "register-bit-led";
|
||||
offset = <0x08>;
|
||||
mask = <0x04>;
|
||||
label = "vexpress:2";
|
||||
linux,default-trigger = "cpu0";
|
||||
default-state = "off";
|
||||
};
|
||||
led3 {
|
||||
compatible = "register-bit-led";
|
||||
offset = <0x08>;
|
||||
mask = <0x08>;
|
||||
label = "vexpress:3";
|
||||
linux,default-trigger = "cpu1";
|
||||
default-state = "off";
|
||||
};
|
||||
led4 {
|
||||
compatible = "register-bit-led";
|
||||
offset = <0x08>;
|
||||
mask = <0x10>;
|
||||
label = "vexpress:4";
|
||||
linux,default-trigger = "cpu2";
|
||||
default-state = "off";
|
||||
};
|
||||
led5 {
|
||||
compatible = "register-bit-led";
|
||||
offset = <0x08>;
|
||||
mask = <0x20>;
|
||||
label = "vexpress:5";
|
||||
linux,default-trigger = "cpu3";
|
||||
default-state = "off";
|
||||
};
|
||||
led6 {
|
||||
compatible = "register-bit-led";
|
||||
offset = <0x08>;
|
||||
mask = <0x40>;
|
||||
label = "vexpress:6";
|
||||
default-state = "off";
|
||||
};
|
||||
led7 {
|
||||
compatible = "register-bit-led";
|
||||
offset = <0x08>;
|
||||
mask = <0x80>;
|
||||
label = "vexpress:7";
|
||||
default-state = "off";
|
||||
};
|
||||
};
|
||||
|
||||
mmc@50000 {
|
||||
compatible = "arm,pl180", "arm,primecell";
|
||||
reg = <0x050000 0x1000>;
|
||||
interrupts = <5>;
|
||||
/* cd-gpios = <&v2m_mmc_gpios 0 0>;
|
||||
wp-gpios = <&v2m_mmc_gpios 1 0>; */
|
||||
max-frequency = <12000000>;
|
||||
vmmc-supply = <&mb_fixed_3v3>;
|
||||
clocks = <&mb_clk24mhz>, <&soc_smc50mhz>;
|
||||
clock-names = "mclk", "apb_pclk";
|
||||
};
|
||||
|
||||
kmi@60000 {
|
||||
compatible = "arm,pl050", "arm,primecell";
|
||||
reg = <0x060000 0x1000>;
|
||||
interrupts = <8>;
|
||||
clocks = <&mb_clk24mhz>, <&soc_smc50mhz>;
|
||||
clock-names = "KMIREFCLK", "apb_pclk";
|
||||
};
|
||||
|
||||
kmi@70000 {
|
||||
compatible = "arm,pl050", "arm,primecell";
|
||||
reg = <0x070000 0x1000>;
|
||||
interrupts = <8>;
|
||||
clocks = <&mb_clk24mhz>, <&soc_smc50mhz>;
|
||||
clock-names = "KMIREFCLK", "apb_pclk";
|
||||
};
|
||||
|
||||
watchdog@f0000 {
|
||||
compatible = "arm,sp805", "arm,primecell";
|
||||
reg = <0x0f0000 0x10000>;
|
||||
interrupts = <7>;
|
||||
clocks = <&mb_clk24mhz>, <&soc_smc50mhz>;
|
||||
clock-names = "wdog_clk", "apb_pclk";
|
||||
};
|
||||
|
||||
v2m_timer01: timer@110000 {
|
||||
compatible = "arm,sp804", "arm,primecell";
|
||||
reg = <0x110000 0x10000>;
|
||||
interrupts = <9>;
|
||||
clocks = <&v2m_sysctl 0>, <&v2m_sysctl 1>, <&mb_clk24mhz>;
|
||||
clock-names = "timclken1", "timclken2", "apb_pclk";
|
||||
};
|
||||
|
||||
v2m_timer23: timer@120000 {
|
||||
compatible = "arm,sp804", "arm,primecell";
|
||||
reg = <0x120000 0x10000>;
|
||||
interrupts = <9>;
|
||||
clocks = <&v2m_sysctl 2>, <&v2m_sysctl 3>, <&mb_clk24mhz>;
|
||||
clock-names = "timclken1", "timclken2", "apb_pclk";
|
||||
};
|
||||
|
||||
rtc@170000 {
|
||||
compatible = "arm,pl031", "arm,primecell";
|
||||
reg = <0x170000 0x10000>;
|
||||
interrupts = <0>;
|
||||
clocks = <&soc_smc50mhz>;
|
||||
clock-names = "apb_pclk";
|
||||
};
|
||||
|
||||
iofpga_gpio0: gpio@1d0000 {
|
||||
compatible = "arm,pl061", "arm,primecell";
|
||||
reg = <0x1d0000 0x1000>;
|
||||
interrupts = <6>;
|
||||
clocks = <&soc_smc50mhz>;
|
||||
clock-names = "apb_pclk";
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
20
arch/arm/dts/juno-r2-u-boot.dtsi
Normal file
20
arch/arm/dts/juno-r2-u-boot.dtsi
Normal file
|
@ -0,0 +1,20 @@
|
|||
// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
|
||||
/*
|
||||
* ARM Juno Platform additions for U-Boot
|
||||
*/
|
||||
|
||||
/ {
|
||||
bus@8000000 {
|
||||
motherboard-bus@8000000 {
|
||||
/*
|
||||
* This should not be marked "disabled" in U-Boot. The
|
||||
* boot loader is not using some CPU idle states and
|
||||
* hotplug but may be very interested in accessing the
|
||||
* flash.
|
||||
*/
|
||||
flash@0 {
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
322
arch/arm/dts/juno-r2.dts
Normal file
322
arch/arm/dts/juno-r2.dts
Normal file
|
@ -0,0 +1,322 @@
|
|||
// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
|
||||
/*
|
||||
* ARM Ltd. Juno Platform
|
||||
*
|
||||
* Copyright (c) 2015 ARM Ltd.
|
||||
*
|
||||
* This file is licensed under a dual GPLv2 or BSD license.
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
#include "juno-base.dtsi"
|
||||
#include "juno-cs-r1r2.dtsi"
|
||||
|
||||
/ {
|
||||
model = "ARM Juno development board (r2)";
|
||||
compatible = "arm,juno-r2", "arm,juno", "arm,vexpress";
|
||||
interrupt-parent = <&gic>;
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
|
||||
aliases {
|
||||
serial0 = &soc_uart0;
|
||||
};
|
||||
|
||||
chosen {
|
||||
stdout-path = "serial0:115200n8";
|
||||
};
|
||||
|
||||
psci {
|
||||
compatible = "arm,psci-0.2";
|
||||
method = "smc";
|
||||
};
|
||||
|
||||
cpus {
|
||||
#address-cells = <2>;
|
||||
#size-cells = <0>;
|
||||
|
||||
cpu-map {
|
||||
cluster0 {
|
||||
core0 {
|
||||
cpu = <&A72_0>;
|
||||
};
|
||||
core1 {
|
||||
cpu = <&A72_1>;
|
||||
};
|
||||
};
|
||||
|
||||
cluster1 {
|
||||
core0 {
|
||||
cpu = <&A53_0>;
|
||||
};
|
||||
core1 {
|
||||
cpu = <&A53_1>;
|
||||
};
|
||||
core2 {
|
||||
cpu = <&A53_2>;
|
||||
};
|
||||
core3 {
|
||||
cpu = <&A53_3>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
idle-states {
|
||||
entry-method = "psci";
|
||||
|
||||
CPU_SLEEP_0: cpu-sleep-0 {
|
||||
compatible = "arm,idle-state";
|
||||
arm,psci-suspend-param = <0x0010000>;
|
||||
local-timer-stop;
|
||||
entry-latency-us = <300>;
|
||||
exit-latency-us = <1200>;
|
||||
min-residency-us = <2000>;
|
||||
};
|
||||
|
||||
CLUSTER_SLEEP_0: cluster-sleep-0 {
|
||||
compatible = "arm,idle-state";
|
||||
arm,psci-suspend-param = <0x1010000>;
|
||||
local-timer-stop;
|
||||
entry-latency-us = <400>;
|
||||
exit-latency-us = <1200>;
|
||||
min-residency-us = <2500>;
|
||||
};
|
||||
};
|
||||
|
||||
A72_0: cpu@0 {
|
||||
compatible = "arm,cortex-a72";
|
||||
reg = <0x0 0x0>;
|
||||
device_type = "cpu";
|
||||
enable-method = "psci";
|
||||
i-cache-size = <0xc000>;
|
||||
i-cache-line-size = <64>;
|
||||
i-cache-sets = <256>;
|
||||
d-cache-size = <0x8000>;
|
||||
d-cache-line-size = <64>;
|
||||
d-cache-sets = <256>;
|
||||
next-level-cache = <&A72_L2>;
|
||||
clocks = <&scpi_dvfs 0>;
|
||||
cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
|
||||
capacity-dmips-mhz = <1024>;
|
||||
dynamic-power-coefficient = <450>;
|
||||
};
|
||||
|
||||
A72_1: cpu@1 {
|
||||
compatible = "arm,cortex-a72";
|
||||
reg = <0x0 0x1>;
|
||||
device_type = "cpu";
|
||||
enable-method = "psci";
|
||||
i-cache-size = <0xc000>;
|
||||
i-cache-line-size = <64>;
|
||||
i-cache-sets = <256>;
|
||||
d-cache-size = <0x8000>;
|
||||
d-cache-line-size = <64>;
|
||||
d-cache-sets = <256>;
|
||||
next-level-cache = <&A72_L2>;
|
||||
clocks = <&scpi_dvfs 0>;
|
||||
cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
|
||||
capacity-dmips-mhz = <1024>;
|
||||
dynamic-power-coefficient = <450>;
|
||||
};
|
||||
|
||||
A53_0: cpu@100 {
|
||||
compatible = "arm,cortex-a53";
|
||||
reg = <0x0 0x100>;
|
||||
device_type = "cpu";
|
||||
enable-method = "psci";
|
||||
i-cache-size = <0x8000>;
|
||||
i-cache-line-size = <64>;
|
||||
i-cache-sets = <256>;
|
||||
d-cache-size = <0x8000>;
|
||||
d-cache-line-size = <64>;
|
||||
d-cache-sets = <128>;
|
||||
next-level-cache = <&A53_L2>;
|
||||
clocks = <&scpi_dvfs 1>;
|
||||
cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
|
||||
capacity-dmips-mhz = <485>;
|
||||
dynamic-power-coefficient = <140>;
|
||||
};
|
||||
|
||||
A53_1: cpu@101 {
|
||||
compatible = "arm,cortex-a53";
|
||||
reg = <0x0 0x101>;
|
||||
device_type = "cpu";
|
||||
enable-method = "psci";
|
||||
i-cache-size = <0x8000>;
|
||||
i-cache-line-size = <64>;
|
||||
i-cache-sets = <256>;
|
||||
d-cache-size = <0x8000>;
|
||||
d-cache-line-size = <64>;
|
||||
d-cache-sets = <128>;
|
||||
next-level-cache = <&A53_L2>;
|
||||
clocks = <&scpi_dvfs 1>;
|
||||
cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
|
||||
capacity-dmips-mhz = <485>;
|
||||
dynamic-power-coefficient = <140>;
|
||||
};
|
||||
|
||||
A53_2: cpu@102 {
|
||||
compatible = "arm,cortex-a53";
|
||||
reg = <0x0 0x102>;
|
||||
device_type = "cpu";
|
||||
enable-method = "psci";
|
||||
i-cache-size = <0x8000>;
|
||||
i-cache-line-size = <64>;
|
||||
i-cache-sets = <256>;
|
||||
d-cache-size = <0x8000>;
|
||||
d-cache-line-size = <64>;
|
||||
d-cache-sets = <128>;
|
||||
next-level-cache = <&A53_L2>;
|
||||
clocks = <&scpi_dvfs 1>;
|
||||
cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
|
||||
capacity-dmips-mhz = <485>;
|
||||
dynamic-power-coefficient = <140>;
|
||||
};
|
||||
|
||||
A53_3: cpu@103 {
|
||||
compatible = "arm,cortex-a53";
|
||||
reg = <0x0 0x103>;
|
||||
device_type = "cpu";
|
||||
enable-method = "psci";
|
||||
i-cache-size = <0x8000>;
|
||||
i-cache-line-size = <64>;
|
||||
i-cache-sets = <256>;
|
||||
d-cache-size = <0x8000>;
|
||||
d-cache-line-size = <64>;
|
||||
d-cache-sets = <128>;
|
||||
next-level-cache = <&A53_L2>;
|
||||
clocks = <&scpi_dvfs 1>;
|
||||
cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
|
||||
capacity-dmips-mhz = <485>;
|
||||
dynamic-power-coefficient = <140>;
|
||||
};
|
||||
|
||||
A72_L2: l2-cache0 {
|
||||
compatible = "cache";
|
||||
cache-size = <0x200000>;
|
||||
cache-line-size = <64>;
|
||||
cache-sets = <2048>;
|
||||
};
|
||||
|
||||
A53_L2: l2-cache1 {
|
||||
compatible = "cache";
|
||||
cache-size = <0x100000>;
|
||||
cache-line-size = <64>;
|
||||
cache-sets = <1024>;
|
||||
};
|
||||
};
|
||||
|
||||
pmu-a72 {
|
||||
compatible = "arm,cortex-a72-pmu";
|
||||
interrupts = <GIC_SPI 02 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 06 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupt-affinity = <&A72_0>,
|
||||
<&A72_1>;
|
||||
};
|
||||
|
||||
pmu-a53 {
|
||||
compatible = "arm,cortex-a53-pmu";
|
||||
interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupt-affinity = <&A53_0>,
|
||||
<&A53_1>,
|
||||
<&A53_2>,
|
||||
<&A53_3>;
|
||||
};
|
||||
};
|
||||
|
||||
&memtimer {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pcie_ctlr {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&smmu_pcie {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&etm0 {
|
||||
cpu = <&A72_0>;
|
||||
};
|
||||
|
||||
&etm1 {
|
||||
cpu = <&A72_1>;
|
||||
};
|
||||
|
||||
&etm2 {
|
||||
cpu = <&A53_0>;
|
||||
};
|
||||
|
||||
&etm3 {
|
||||
cpu = <&A53_1>;
|
||||
};
|
||||
|
||||
&etm4 {
|
||||
cpu = <&A53_2>;
|
||||
};
|
||||
|
||||
&etm5 {
|
||||
cpu = <&A53_3>;
|
||||
};
|
||||
|
||||
&big_cluster_thermal_zone {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&little_cluster_thermal_zone {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&gpu0_thermal_zone {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&gpu1_thermal_zone {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&etf0_out_port {
|
||||
remote-endpoint = <&csys2_funnel_in_port0>;
|
||||
};
|
||||
|
||||
&replicator_in_port0 {
|
||||
remote-endpoint = <&csys2_funnel_out_port>;
|
||||
};
|
||||
|
||||
&csys1_funnel_in_port0 {
|
||||
remote-endpoint = <&stm_out_port>;
|
||||
};
|
||||
|
||||
&stm_out_port {
|
||||
remote-endpoint = <&csys1_funnel_in_port0>;
|
||||
};
|
||||
|
||||
&cpu_debug0 {
|
||||
cpu = <&A72_0>;
|
||||
};
|
||||
|
||||
&cpu_debug1 {
|
||||
cpu = <&A72_1>;
|
||||
};
|
||||
|
||||
&cpu_debug2 {
|
||||
cpu = <&A53_0>;
|
||||
};
|
||||
|
||||
&cpu_debug3 {
|
||||
cpu = <&A53_1>;
|
||||
};
|
||||
|
||||
&cpu_debug4 {
|
||||
cpu = <&A53_2>;
|
||||
};
|
||||
|
||||
&cpu_debug5 {
|
||||
cpu = <&A53_3>;
|
||||
};
|
|
@ -5,6 +5,8 @@
|
|||
|
||||
/dts-v1/;
|
||||
|
||||
#include <dt-bindings/mux/ti-serdes.h>
|
||||
#include <dt-bindings/phy/phy.h>
|
||||
#include "k3-am642.dtsi"
|
||||
#include "k3-am64-sk-lp4-1333MTs.dtsi"
|
||||
#include "k3-am64-ddr.dtsi"
|
||||
|
@ -107,6 +109,13 @@
|
|||
AM64X_IOPAD(0x029c, PIN_INPUT_PULLUP, 0) /* (C20) MMC1_SDWP */
|
||||
>;
|
||||
};
|
||||
|
||||
main_usb0_pins_default: main-usb0-pins-default {
|
||||
u-boot,dm-spl;
|
||||
pinctrl-single,pins = <
|
||||
AM64X_IOPAD(0x02a8, PIN_OUTPUT, 0) /* (E19) USB0_DRVVBUS */
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
||||
&dmsc {
|
||||
|
@ -142,4 +151,35 @@
|
|||
pinctrl-0 = <&main_mmc1_pins_default>;
|
||||
};
|
||||
|
||||
&serdes_ln_ctrl {
|
||||
idle-states = <AM64_SERDES0_LANE0_USB>;
|
||||
};
|
||||
|
||||
&serdes_wiz0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&serdes0 {
|
||||
serdes0_usb_link: link@0 {
|
||||
reg = <0>;
|
||||
cdns,num-lanes = <1>;
|
||||
#phy-cells = <0>;
|
||||
cdns,phy-type = <PHY_TYPE_USB3>;
|
||||
resets = <&serdes_wiz0 1>;
|
||||
};
|
||||
};
|
||||
|
||||
&usbss0 {
|
||||
ti,vbus-divider;
|
||||
};
|
||||
|
||||
&usb0 {
|
||||
dr_mode = "host";
|
||||
maximum-speed = "super-speed";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&main_usb0_pins_default>;
|
||||
phys = <&serdes0_usb_link>;
|
||||
phy-names = "cdns3,usb3-phy";
|
||||
};
|
||||
|
||||
#include "k3-am642-sk-u-boot.dtsi"
|
||||
|
|
|
@ -110,3 +110,36 @@
|
|||
&cpsw_port2 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&main_usb0_pins_default {
|
||||
u-boot,dm-spl;
|
||||
};
|
||||
|
||||
&serdes_ln_ctrl {
|
||||
u-boot,mux-autoprobe;
|
||||
};
|
||||
|
||||
&usbss0 {
|
||||
u-boot,dm-spl;
|
||||
};
|
||||
|
||||
&usb0 {
|
||||
dr_mode = "host";
|
||||
u-boot,dm-spl;
|
||||
};
|
||||
|
||||
&serdes_wiz0 {
|
||||
u-boot,dm-spl;
|
||||
};
|
||||
|
||||
&serdes0_usb_link {
|
||||
u-boot,dm-spl;
|
||||
};
|
||||
|
||||
&serdes0 {
|
||||
u-boot,dm-spl;
|
||||
};
|
||||
|
||||
&serdes_refclk {
|
||||
u-boot,dm-spl;
|
||||
};
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
blob-ext@0x000000 {
|
||||
offset = <0x000000>;
|
||||
filename = "tiboot3.bin";
|
||||
missing-msg = "iot2050-seboot";
|
||||
};
|
||||
|
||||
blob@0x080000 {
|
||||
|
@ -153,21 +154,25 @@
|
|||
blob-ext@0x6c0000 {
|
||||
offset = <0x6c0000>;
|
||||
filename = "sysfw.itb";
|
||||
missing-msg = "iot2050-sysfw";
|
||||
};
|
||||
/* PG1 sysfw, advanced variant */
|
||||
blob-ext@0x740000 {
|
||||
offset = <0x740000>;
|
||||
filename = "sysfw.itb_HS";
|
||||
missing-msg = "iot2050-sysfw";
|
||||
};
|
||||
/* PG2 sysfw, basic variant */
|
||||
blob-ext@0x7c0000 {
|
||||
offset = <0x7c0000>;
|
||||
filename = "sysfw_sr2.itb";
|
||||
missing-msg = "iot2050-sysfw";
|
||||
};
|
||||
/* PG2 sysfw, advanced variant */
|
||||
blob-ext@0x840000 {
|
||||
offset = <0x840000>;
|
||||
filename = "sysfw_sr2.itb_HS";
|
||||
missing-msg = "iot2050-sysfw";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
|
@ -14,6 +14,81 @@
|
|||
enet1-sgmii-phy = &sgmii_phy1;
|
||||
spi0 = &qspi;
|
||||
spi1 = &dspi1;
|
||||
ethernet0 = &enet0;
|
||||
ethernet1 = &enet1;
|
||||
ethernet2 = &enet2;
|
||||
ethernet3 = &swp2;
|
||||
ethernet4 = &swp3;
|
||||
ethernet5 = &swp4;
|
||||
ethernet6 = &swp5;
|
||||
};
|
||||
};
|
||||
|
||||
&dspi0 {
|
||||
bus-num = <0>;
|
||||
status = "okay";
|
||||
|
||||
sja1105: ethernet-switch@1 {
|
||||
reg = <0x1>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "nxp,sja1105t";
|
||||
/* 12 MHz */
|
||||
spi-max-frequency = <12000000>;
|
||||
/* Sample data on trailing clock edge */
|
||||
spi-cpha;
|
||||
/* SPI controller settings for SJA1105 timing requirements */
|
||||
fsl,spi-cs-sck-delay = <1000>;
|
||||
fsl,spi-sck-cs-delay = <1000>;
|
||||
|
||||
ports {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
swp5: port@0 {
|
||||
/* ETH5 written on chassis */
|
||||
label = "swp5";
|
||||
phy-handle = <&rgmii_phy6>;
|
||||
phy-mode = "rgmii-id";
|
||||
reg = <0>;
|
||||
};
|
||||
|
||||
swp2: port@1 {
|
||||
/* ETH2 written on chassis */
|
||||
label = "swp2";
|
||||
phy-handle = <&rgmii_phy3>;
|
||||
phy-mode = "rgmii-id";
|
||||
reg = <1>;
|
||||
};
|
||||
|
||||
swp3: port@2 {
|
||||
/* ETH3 written on chassis */
|
||||
label = "swp3";
|
||||
phy-handle = <&rgmii_phy4>;
|
||||
phy-mode = "rgmii-id";
|
||||
reg = <2>;
|
||||
};
|
||||
|
||||
swp4: port@3 {
|
||||
/* ETH4 written on chassis */
|
||||
label = "swp4";
|
||||
phy-handle = <&rgmii_phy5>;
|
||||
phy-mode = "rgmii-id";
|
||||
reg = <3>;
|
||||
};
|
||||
|
||||
port@4 {
|
||||
/* Internal port connected to eth2 */
|
||||
ethernet = <&enet2>;
|
||||
phy-mode = "rgmii";
|
||||
reg = <4>;
|
||||
|
||||
fixed-link {
|
||||
speed = <1000>;
|
||||
full-duplex;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -31,6 +106,17 @@
|
|||
status = "okay";
|
||||
};
|
||||
|
||||
/* RGMII delays added via PCB traces */
|
||||
&enet2 {
|
||||
phy-mode = "rgmii";
|
||||
status = "okay";
|
||||
|
||||
fixed-link {
|
||||
speed = <1000>;
|
||||
full-duplex;
|
||||
};
|
||||
};
|
||||
|
||||
&i2c0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
@ -46,6 +132,23 @@
|
|||
reg = <0x2>;
|
||||
};
|
||||
|
||||
/* BCM5464 quad PHY */
|
||||
rgmii_phy3: ethernet-phy@3 {
|
||||
reg = <0x3>;
|
||||
};
|
||||
|
||||
rgmii_phy4: ethernet-phy@4 {
|
||||
reg = <0x4>;
|
||||
};
|
||||
|
||||
rgmii_phy5: ethernet-phy@5 {
|
||||
reg = <0x5>;
|
||||
};
|
||||
|
||||
rgmii_phy6: ethernet-phy@6 {
|
||||
reg = <0x6>;
|
||||
};
|
||||
|
||||
/* SGMII PCS for enet0 */
|
||||
tbi0: tbi-phy@1f {
|
||||
reg = <0x1f>;
|
||||
|
|
14
arch/arm/dts/octeontx.dts
Normal file
14
arch/arm/dts/octeontx.dts
Normal file
|
@ -0,0 +1,14 @@
|
|||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* Dummy devicetre file for octeontx2 boards
|
||||
*
|
||||
* This is required to make the board build with CONFIG OF_SEPARATE
|
||||
* I could not find any in-tree documentation at all so this is a dummy file.
|
||||
*
|
||||
* Copyright 2021 Google LLC
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
|
||||
/ {
|
||||
};
|
11
arch/arm/dts/qemu-arm.dts
Normal file
11
arch/arm/dts/qemu-arm.dts
Normal file
|
@ -0,0 +1,11 @@
|
|||
// SPDX-License-Identifier: GPL-2.0+ OR MIT
|
||||
/*
|
||||
* Empty device tree for qemu_arm
|
||||
|
||||
* Copyright 2021 Google LLC
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
|
||||
/ {
|
||||
};
|
11
arch/arm/dts/qemu-arm64.dts
Normal file
11
arch/arm/dts/qemu-arm64.dts
Normal file
|
@ -0,0 +1,11 @@
|
|||
// SPDX-License-Identifier: GPL-2.0+ OR MIT
|
||||
/*
|
||||
* Empty device tree for qemu_arm64
|
||||
|
||||
* Copyright 2021 Google LLC
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
|
||||
/ {
|
||||
};
|
|
@ -22,6 +22,7 @@
|
|||
serial0 = &dbgu;
|
||||
gpio0 = &pioA;
|
||||
gpio1 = &pioB;
|
||||
gpio2 = &pioC;
|
||||
gpio3 = &pioD;
|
||||
spi0 = &qspi;
|
||||
};
|
||||
|
@ -197,6 +198,14 @@
|
|||
clocks = <&pmc PMC_TYPE_PERIPHERAL 3>;
|
||||
};
|
||||
|
||||
pioC: gpio@fffff800 {
|
||||
compatible = "atmel,at91sam9x5-gpio", "atmel,at91rm9200-gpio";
|
||||
reg = <0xfffff800 0x200>;
|
||||
#gpio-cells = <2>;
|
||||
gpio-controller;
|
||||
clocks = <&pmc PMC_TYPE_PERIPHERAL 4>;
|
||||
};
|
||||
|
||||
pioD: gpio@fffffa00 {
|
||||
compatible = "atmel,at91sam9x5-gpio", "atmel,at91rm9200-gpio";
|
||||
reg = <0xfffffa00 0x200>;
|
||||
|
|
|
@ -765,7 +765,7 @@
|
|||
#define PIN_PD20__PCK0 PINMUX_PIN(PIN_PD20, 1, 3)
|
||||
#define PIN_PD20__FLEXCOM2_IO3 PINMUX_PIN(PIN_PD20, 2, 2)
|
||||
#define PIN_PD20__PWMH3 PINMUX_PIN(PIN_PD20, 3, 4)
|
||||
#define PIN_PD20__CANTX4 PINMUX_PIN(PIN_PD20, 5, 2)
|
||||
#define PIN_PD20__CANTX4 PINMUX_PIN(PIN_PD20, 4, 2)
|
||||
#define PIN_PD20__FLEXCOM5_IO0 PINMUX_PIN(PIN_PD20, 6, 5)
|
||||
#define PIN_PD21 117
|
||||
#define PIN_PD21__GPIO PINMUX_PIN(PIN_PD21, 0, 0)
|
||||
|
|
|
@ -91,6 +91,32 @@
|
|||
#clock-cells = <1>;
|
||||
};
|
||||
|
||||
qspi0: spi@e080c000 {
|
||||
compatible = "microchip,sama7g5-ospi";
|
||||
reg = <0xe080c000 0x400>, <0x20000000 0x10000000>;
|
||||
reg-names = "qspi_base", "qspi_mmap";
|
||||
clocks = <&pmc PMC_TYPE_PERIPHERAL 78>, <&pmc PMC_TYPE_GCK 78>;
|
||||
clock-names = "pclk", "gclk";
|
||||
assigned-clocks = <&pmc PMC_TYPE_GCK 78>;
|
||||
assigned-clock-parents = <&pmc PMC_TYPE_CORE 10>; /* sys pll div. */
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
qspi1: spi@e0810000 {
|
||||
compatible = "microchip,sama7g5-qspi";
|
||||
reg = <0xe0810000 0x400>, <0x30000000 0x10000000>;
|
||||
reg-names = "qspi_base", "qspi_mmap";
|
||||
clocks = <&pmc PMC_TYPE_PERIPHERAL 79>, <&pmc PMC_TYPE_GCK 79>;
|
||||
clock-names = "pclk", "gclk";
|
||||
assigned-clocks = <&pmc PMC_TYPE_GCK 78>;
|
||||
assigned-clock-parents = <&pmc PMC_TYPE_CORE 10>; /* sys pll div. */
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
sdmmc0: sdio-host@e1204000 {
|
||||
compatible = "microchip,sama7g5-sdhci";
|
||||
reg = <0xe1204000 0x300>;
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
#include <dt-bindings/mfd/atmel-flexcom.h>
|
||||
#include "sama7g5.dtsi"
|
||||
#include "sama7g5-pinfunc.h"
|
||||
#include <dt-bindings/pinctrl/at91.h>
|
||||
|
||||
/ {
|
||||
model = "Microchip SAMA7G5 Evaluation Kit";
|
||||
|
@ -64,6 +65,24 @@
|
|||
};
|
||||
};
|
||||
|
||||
&qspi0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_qspi>;
|
||||
status = "okay";
|
||||
|
||||
flash@0 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
compatible = "jedec,spi-nor";
|
||||
reg = <0>;
|
||||
spi-max-frequency = <133000000>;
|
||||
spi-tx-bus-width = <8>;
|
||||
spi-rx-bus-width = <8>;
|
||||
m25p,fast-read;
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
&flx1 {
|
||||
atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_TWI>;
|
||||
status = "okay";
|
||||
|
@ -126,6 +145,25 @@
|
|||
bias-pull-up;
|
||||
};
|
||||
|
||||
pinctrl_qspi: qspi {
|
||||
pinmux = <PIN_PB12__QSPI0_IO0>,
|
||||
<PIN_PB11__QSPI0_IO1>,
|
||||
<PIN_PB10__QSPI0_IO2>,
|
||||
<PIN_PB9__QSPI0_IO3>,
|
||||
<PIN_PB16__QSPI0_IO4>,
|
||||
<PIN_PB17__QSPI0_IO5>,
|
||||
<PIN_PB18__QSPI0_IO6>,
|
||||
<PIN_PB19__QSPI0_IO7>,
|
||||
<PIN_PB13__QSPI0_CS>,
|
||||
<PIN_PB14__QSPI0_SCK>,
|
||||
<PIN_PB15__QSPI0_SCKN>,
|
||||
<PIN_PB20__QSPI0_DQS>,
|
||||
<PIN_PB21__QSPI0_INT>;
|
||||
bias-disable;
|
||||
slew-rate = <0>;
|
||||
atmel,drive-strength = <ATMEL_PIO_DRVSTR_HI>;
|
||||
};
|
||||
|
||||
pinctrl_sdmmc0_cmd_data_default: sdmmc0_cmd_data_default {
|
||||
pinmux = <PIN_PA1__SDMMC0_CMD>,
|
||||
<PIN_PA3__SDMMC0_DAT0>,
|
||||
|
|
|
@ -33,7 +33,7 @@
|
|||
|
||||
fmc: fmc@A0000000 {
|
||||
compatible = "st,stm32-fmc";
|
||||
reg = <0xA0000000 0x1000>;
|
||||
reg = <0xa0000000 0x1000>;
|
||||
clocks = <&rcc 0 STM32F4_AHB3_CLOCK(FMC)>;
|
||||
st,syscfg = <&syscfg>;
|
||||
pinctrl-0 = <&fmc_pins_d32>;
|
||||
|
|
|
@ -177,7 +177,7 @@
|
|||
};
|
||||
|
||||
&qspi {
|
||||
reg = <0xA0001000 0x1000>, <0x90000000 0x4000000>;
|
||||
reg = <0xa0001000 0x1000>, <0x90000000 0x4000000>;
|
||||
qflash0: n25q512a@0 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
|
|
@ -33,7 +33,7 @@
|
|||
|
||||
fmc: fmc@A0000000 {
|
||||
compatible = "st,stm32-fmc";
|
||||
reg = <0xA0000000 0x1000>;
|
||||
reg = <0xa0000000 0x1000>;
|
||||
clocks = <&rcc 0 STM32F4_AHB3_CLOCK(FMC)>;
|
||||
pinctrl-0 = <&fmc_pins>;
|
||||
pinctrl-names = "default";
|
||||
|
|
|
@ -34,7 +34,7 @@
|
|||
|
||||
fmc: fmc@A0000000 {
|
||||
compatible = "st,stm32-fmc";
|
||||
reg = <0xA0000000 0x1000>;
|
||||
reg = <0xa0000000 0x1000>;
|
||||
clocks = <&rcc 0 STM32F4_AHB3_CLOCK(FMC)>;
|
||||
st,syscfg = <&syscfg>;
|
||||
pinctrl-0 = <&fmc_pins_d32>;
|
||||
|
@ -70,7 +70,7 @@
|
|||
compatible = "st,stm32f469-qspi";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
reg = <0xA0001000 0x1000>, <0x90000000 0x10000000>;
|
||||
reg = <0xa0001000 0x1000>, <0x90000000 0x10000000>;
|
||||
reg-names = "qspi", "qspi_mm";
|
||||
interrupts = <91>;
|
||||
spi-max-frequency = <108000000>;
|
||||
|
@ -236,7 +236,7 @@
|
|||
};
|
||||
|
||||
&qspi {
|
||||
reg = <0xA0001000 0x1000>, <0x90000000 0x1000000>;
|
||||
reg = <0xa0001000 0x1000>, <0x90000000 0x1000000>;
|
||||
flash0: n25q128a@0 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
|
||||
fmc: fmc@A0000000 {
|
||||
compatible = "st,stm32-fmc";
|
||||
reg = <0xA0000000 0x1000>;
|
||||
reg = <0xa0000000 0x1000>;
|
||||
clocks = <&rcc 0 STM32F7_AHB3_CLOCK(FMC)>;
|
||||
pinctrl-0 = <&fmc_pins>;
|
||||
pinctrl-names = "default";
|
||||
|
@ -46,7 +46,7 @@
|
|||
compatible = "st,stm32f469-qspi";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
reg = <0xA0001000 0x1000>, <0x90000000 0x10000000>;
|
||||
reg = <0xa0001000 0x1000>, <0x90000000 0x10000000>;
|
||||
reg-names = "qspi", "qspi_mm";
|
||||
interrupts = <92>;
|
||||
spi-max-frequency = <108000000>;
|
||||
|
|
|
@ -228,7 +228,7 @@
|
|||
};
|
||||
|
||||
&qspi {
|
||||
reg = <0xA0001000 0x1000>, <0x90000000 0x1000000>;
|
||||
reg = <0xa0001000 0x1000>, <0x90000000 0x1000000>;
|
||||
qflash0: n25q128a@0 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
|
|
@ -53,9 +53,9 @@
|
|||
soc {
|
||||
dsi: dsi@40016c00 {
|
||||
compatible = "st,stm32-dsi";
|
||||
reg = <0x40016C00 0x800>;
|
||||
reg = <0x40016c00 0x800>;
|
||||
resets = <&rcc STM32F7_APB2_RESET(DSI)>;
|
||||
clocks = <&rcc 0 STM32F7_APB2_CLOCK(DSI)>,
|
||||
clocks = <&rcc 0 STM32F7_APB2_CLOCK(DSI)>,
|
||||
<&rcc 0 STM32F7_APB2_CLOCK(LTDC)>,
|
||||
<&clk_hse>;
|
||||
clock-names = "pclk", "px_clk", "ref";
|
||||
|
@ -227,7 +227,7 @@
|
|||
};
|
||||
|
||||
&qspi {
|
||||
reg = <0xA0001000 0x1000>, <0x90000000 0x4000000>;
|
||||
reg = <0xa0001000 0x1000>, <0x90000000 0x4000000>;
|
||||
flash0: mx66l51235l@0 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
|
|
@ -116,24 +116,6 @@
|
|||
DDR_MR3
|
||||
>;
|
||||
|
||||
#ifdef DDR_PHY_CAL_SKIP
|
||||
st,phy-cal = <
|
||||
DDR_DX0DLLCR
|
||||
DDR_DX0DQTR
|
||||
DDR_DX0DQSTR
|
||||
DDR_DX1DLLCR
|
||||
DDR_DX1DQTR
|
||||
DDR_DX1DQSTR
|
||||
DDR_DX2DLLCR
|
||||
DDR_DX2DQTR
|
||||
DDR_DX2DQSTR
|
||||
DDR_DX3DLLCR
|
||||
DDR_DX3DQTR
|
||||
DDR_DX3DQSTR
|
||||
>;
|
||||
|
||||
#endif
|
||||
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
@ -224,18 +206,6 @@
|
|||
#undef DDR_ODTCR
|
||||
#undef DDR_ZQ0CR1
|
||||
#undef DDR_DX0GCR
|
||||
#undef DDR_DX0DLLCR
|
||||
#undef DDR_DX0DQTR
|
||||
#undef DDR_DX0DQSTR
|
||||
#undef DDR_DX1GCR
|
||||
#undef DDR_DX1DLLCR
|
||||
#undef DDR_DX1DQTR
|
||||
#undef DDR_DX1DQSTR
|
||||
#undef DDR_DX2GCR
|
||||
#undef DDR_DX2DLLCR
|
||||
#undef DDR_DX2DQTR
|
||||
#undef DDR_DX2DQSTR
|
||||
#undef DDR_DX3GCR
|
||||
#undef DDR_DX3DLLCR
|
||||
#undef DDR_DX3DQTR
|
||||
#undef DDR_DX3DQSTR
|
||||
|
|
|
@ -100,20 +100,8 @@
|
|||
#define DDR_ODTCR 0x00010000
|
||||
#define DDR_ZQ0CR1 0x00000038
|
||||
#define DDR_DX0GCR 0x0000CE81
|
||||
#define DDR_DX0DLLCR 0x40000000
|
||||
#define DDR_DX0DQTR 0xFFFFFFFF
|
||||
#define DDR_DX0DQSTR 0x3DB02000
|
||||
#define DDR_DX1GCR 0x0000CE81
|
||||
#define DDR_DX1DLLCR 0x40000000
|
||||
#define DDR_DX1DQTR 0xFFFFFFFF
|
||||
#define DDR_DX1DQSTR 0x3DB02000
|
||||
#define DDR_DX2GCR 0x0000CE80
|
||||
#define DDR_DX2DLLCR 0x40000000
|
||||
#define DDR_DX2DQTR 0xFFFFFFFF
|
||||
#define DDR_DX2DQSTR 0x3DB02000
|
||||
#define DDR_DX3GCR 0x0000CE80
|
||||
#define DDR_DX3DLLCR 0x40000000
|
||||
#define DDR_DX3DQTR 0xFFFFFFFF
|
||||
#define DDR_DX3DQSTR 0x3DB02000
|
||||
|
||||
#include "stm32mp15-ddr.dtsi"
|
||||
|
|
|
@ -100,20 +100,8 @@
|
|||
#define DDR_ODTCR 0x00010000
|
||||
#define DDR_ZQ0CR1 0x00000038
|
||||
#define DDR_DX0GCR 0x0000CE81
|
||||
#define DDR_DX0DLLCR 0x40000000
|
||||
#define DDR_DX0DQTR 0xFFFFFFFF
|
||||
#define DDR_DX0DQSTR 0x3DB02000
|
||||
#define DDR_DX1GCR 0x0000CE81
|
||||
#define DDR_DX1DLLCR 0x40000000
|
||||
#define DDR_DX1DQTR 0xFFFFFFFF
|
||||
#define DDR_DX1DQSTR 0x3DB02000
|
||||
#define DDR_DX2GCR 0x0000CE81
|
||||
#define DDR_DX2DLLCR 0x40000000
|
||||
#define DDR_DX2DQTR 0xFFFFFFFF
|
||||
#define DDR_DX2DQSTR 0x3DB02000
|
||||
#define DDR_DX3GCR 0x0000CE81
|
||||
#define DDR_DX3DLLCR 0x40000000
|
||||
#define DDR_DX3DQTR 0xFFFFFFFF
|
||||
#define DDR_DX3DQSTR 0x3DB02000
|
||||
|
||||
#include "stm32mp15-ddr.dtsi"
|
||||
|
|
|
@ -101,20 +101,8 @@
|
|||
#define DDR_ODTCR 0x00010000
|
||||
#define DDR_ZQ0CR1 0x00000038
|
||||
#define DDR_DX0GCR 0x0000CE81
|
||||
#define DDR_DX0DLLCR 0x40000000
|
||||
#define DDR_DX0DQTR 0xFFFFFFFF
|
||||
#define DDR_DX0DQSTR 0x3DB02000
|
||||
#define DDR_DX1GCR 0x0000CE81
|
||||
#define DDR_DX1DLLCR 0x40000000
|
||||
#define DDR_DX1DQTR 0xFFFFFFFF
|
||||
#define DDR_DX1DQSTR 0x3DB02000
|
||||
#define DDR_DX2GCR 0x0000CE81
|
||||
#define DDR_DX2DLLCR 0x40000000
|
||||
#define DDR_DX2DQTR 0xFFFFFFFF
|
||||
#define DDR_DX2DQSTR 0x3DB02000
|
||||
#define DDR_DX3GCR 0x0000CE81
|
||||
#define DDR_DX3DLLCR 0x40000000
|
||||
#define DDR_DX3DQTR 0xFFFFFFFF
|
||||
#define DDR_DX3DQSTR 0x3DB02000
|
||||
|
||||
#include "stm32mp15-ddr.dtsi"
|
||||
|
|
|
@ -101,20 +101,8 @@
|
|||
#define DDR_ODTCR 0x00010000
|
||||
#define DDR_ZQ0CR1 0x00000038
|
||||
#define DDR_DX0GCR 0x0000CE81
|
||||
#define DDR_DX0DLLCR 0x40000000
|
||||
#define DDR_DX0DQTR 0xFFFFFFFF
|
||||
#define DDR_DX0DQSTR 0x3DB02000
|
||||
#define DDR_DX1GCR 0x0000CE81
|
||||
#define DDR_DX1DLLCR 0x40000000
|
||||
#define DDR_DX1DQTR 0xFFFFFFFF
|
||||
#define DDR_DX1DQSTR 0x3DB02000
|
||||
#define DDR_DX2GCR 0x0000CE81
|
||||
#define DDR_DX2DLLCR 0x40000000
|
||||
#define DDR_DX2DQTR 0xFFFFFFFF
|
||||
#define DDR_DX2DQSTR 0x3DB02000
|
||||
#define DDR_DX3GCR 0x0000CE81
|
||||
#define DDR_DX3DLLCR 0x40000000
|
||||
#define DDR_DX3DQTR 0xFFFFFFFF
|
||||
#define DDR_DX3DQSTR 0x3DB02000
|
||||
|
||||
#include "stm32mp15-ddr.dtsi"
|
||||
|
|
|
@ -101,20 +101,8 @@
|
|||
#define DDR_ODTCR 0x00010000
|
||||
#define DDR_ZQ0CR1 0x00000038
|
||||
#define DDR_DX0GCR 0x0000CE81
|
||||
#define DDR_DX0DLLCR 0x40000000
|
||||
#define DDR_DX0DQTR 0xFFFFFFFF
|
||||
#define DDR_DX0DQSTR 0x3DB02000
|
||||
#define DDR_DX1GCR 0x0000CE81
|
||||
#define DDR_DX1DLLCR 0x40000000
|
||||
#define DDR_DX1DQTR 0xFFFFFFFF
|
||||
#define DDR_DX1DQSTR 0x3DB02000
|
||||
#define DDR_DX2GCR 0x0000CE81
|
||||
#define DDR_DX2DLLCR 0x40000000
|
||||
#define DDR_DX2DQTR 0xFFFFFFFF
|
||||
#define DDR_DX2DQSTR 0x3DB02000
|
||||
#define DDR_DX3GCR 0x0000CE81
|
||||
#define DDR_DX3DLLCR 0x40000000
|
||||
#define DDR_DX3DQTR 0xFFFFFFFF
|
||||
#define DDR_DX3DQSTR 0x3DB02000
|
||||
|
||||
#include "stm32mp15-ddr.dtsi"
|
||||
|
|
|
@ -100,20 +100,8 @@
|
|||
#define DDR_ODTCR 0x00010000
|
||||
#define DDR_ZQ0CR1 0x00000038
|
||||
#define DDR_DX0GCR 0x0000CE81
|
||||
#define DDR_DX0DLLCR 0x40000000
|
||||
#define DDR_DX0DQTR 0xFFFFFFFF
|
||||
#define DDR_DX0DQSTR 0x3DB02000
|
||||
#define DDR_DX1GCR 0x0000CE81
|
||||
#define DDR_DX1DLLCR 0x40000000
|
||||
#define DDR_DX1DQTR 0xFFFFFFFF
|
||||
#define DDR_DX1DQSTR 0x3DB02000
|
||||
#define DDR_DX2GCR 0x0000CE81
|
||||
#define DDR_DX2DLLCR 0x40000000
|
||||
#define DDR_DX2DQTR 0xFFFFFFFF
|
||||
#define DDR_DX2DQSTR 0x3DB02000
|
||||
#define DDR_DX3GCR 0x0000CE81
|
||||
#define DDR_DX3DLLCR 0x40000000
|
||||
#define DDR_DX3DQTR 0xFFFFFFFF
|
||||
#define DDR_DX3DQSTR 0x3DB02000
|
||||
|
||||
#include "stm32mp15-ddr.dtsi"
|
||||
|
|
|
@ -50,8 +50,8 @@
|
|||
|
||||
compatible = "st,stm32mp1-ddr";
|
||||
|
||||
reg = <0x5A003000 0x550
|
||||
0x5A004000 0x234>;
|
||||
reg = <0x5a003000 0x550
|
||||
0x5a004000 0x234>;
|
||||
|
||||
clocks = <&rcc AXIDCG>,
|
||||
<&rcc DDRC1>,
|
||||
|
@ -237,7 +237,7 @@
|
|||
u-boot-stm32 {
|
||||
filename = "u-boot.stm32";
|
||||
mkimage {
|
||||
args = "-T stm32image -a 0xC0100000 -e 0xC0100000";
|
||||
args = "-T stm32image -a 0xc0100000 -e 0xc0100000";
|
||||
u-boot {
|
||||
};
|
||||
};
|
||||
|
@ -250,7 +250,7 @@
|
|||
spl-stm32 {
|
||||
filename = "u-boot-spl.stm32";
|
||||
mkimage {
|
||||
args = "-T stm32image -a 0x2FFC2500 -e 0x2FFC2500";
|
||||
args = "-T stm32image -a 0x2ffc2500 -e 0x2ffc2500";
|
||||
u-boot-spl {
|
||||
};
|
||||
};
|
||||
|
|
|
@ -216,6 +216,10 @@
|
|||
|
||||
&sdmmc1 {
|
||||
u-boot,dm-spl;
|
||||
st,use-ckin;
|
||||
st,cmd-gpios = <&gpiod 2 0>;
|
||||
st,ck-gpios = <&gpioc 12 0>;
|
||||
st,ckin-gpios = <&gpioe 4 0>;
|
||||
};
|
||||
|
||||
&sdmmc1_b4_pins_a {
|
||||
|
|
|
@ -32,6 +32,10 @@
|
|||
|
||||
&sdmmc1 {
|
||||
u-boot,dm-spl;
|
||||
st,use-ckin;
|
||||
st,cmd-gpios = <&gpiod 2 0>;
|
||||
st,ck-gpios = <&gpioc 12 0>;
|
||||
st,ckin-gpios = <&gpioe 4 0>;
|
||||
};
|
||||
|
||||
&sdmmc1_b4_pins_a {
|
||||
|
|
15
arch/arm/dts/xenguest-arm64.dts
Normal file
15
arch/arm/dts/xenguest-arm64.dts
Normal file
|
@ -0,0 +1,15 @@
|
|||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* Empty devicetree file for xenguest_arm64
|
||||
*
|
||||
* This is required to make the board build with CONFIG OF_SEPARATE
|
||||
* Build instructions at xenguest_arm64.rst are inadequate for obtaining a real
|
||||
* devicetree.
|
||||
*
|
||||
* Copyright 2021 Google LLC
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
|
||||
/ {
|
||||
};
|
11
arch/arm/dts/xilinx-versal-virt.dts
Normal file
11
arch/arm/dts/xilinx-versal-virt.dts
Normal file
|
@ -0,0 +1,11 @@
|
|||
// SPDX-License-Identifier: GPL-2.0+ OR MIT
|
||||
/*
|
||||
* Empty device tree for versal-virt board
|
||||
*
|
||||
* Copyright 2021 Google LLC
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
|
||||
/ {
|
||||
};
|
|
@ -17,7 +17,7 @@
|
|||
#define ASPEED_MAC_COUNT 4
|
||||
#define ASPEED_DRAM_BASE 0x80000000
|
||||
#define ASPEED_SRAM_BASE 0x10000000
|
||||
#define ASPEED_SRAM_SIZE 0x10000
|
||||
#define ASPEED_SRAM_SIZE 0x16000
|
||||
#else
|
||||
#err "Unrecognized Aspeed platform."
|
||||
#endif
|
||||
|
|
|
@ -8,10 +8,12 @@
|
|||
#define SCU_UNLOCK_KEY 0x1688a8a8
|
||||
|
||||
#define SCU_CLKGATE1_EMMC BIT(27)
|
||||
#define SCU_CLKGATE1_ACRY BIT(24)
|
||||
#define SCU_CLKGATE1_MAC2 BIT(21)
|
||||
#define SCU_CLKGATE1_MAC1 BIT(20)
|
||||
#define SCU_CLKGATE1_USB_HUB BIT(14)
|
||||
#define SCU_CLKGATE1_USB_HOST2 BIT(7)
|
||||
#define SCU_CLKGATE1_USB_HUB BIT(14)
|
||||
#define SCU_CLKGATE1_HACE BIT(13)
|
||||
#define SCU_CLKGATE1_USB_HOST2 BIT(7)
|
||||
|
||||
#define SCU_CLKGATE2_FSI BIT(30)
|
||||
#define SCU_CLKGATE2_MAC4 BIT(21)
|
||||
|
|
|
@ -234,7 +234,6 @@
|
|||
#elif defined(CONFIG_ARCH_LS1028A)
|
||||
#define CONFIG_SYS_FSL_NUM_CC_PLLS 3
|
||||
#define CONFIG_SYS_FSL_CLUSTER_CLOCKS { 1, 1 }
|
||||
#define CONFIG_FSL_TZPC_BP147
|
||||
#define CONFIG_FSL_TZASC_400
|
||||
|
||||
/* TZ Protection Controller Definitions */
|
||||
|
|
|
@ -11,7 +11,6 @@
|
|||
#include <linux/bitops.h>
|
||||
#endif
|
||||
|
||||
#define CONFIG_SYS_IMMR 0x01000000
|
||||
#define CONFIG_SYS_DCSRBAR 0x20000000
|
||||
#define CONFIG_SYS_DCSR_DCFG_ADDR (CONFIG_SYS_DCSRBAR + 0x00140000)
|
||||
#define CONFIG_SYS_DCSR_COP_CCP_ADDR (CONFIG_SYS_DCSRBAR + 0x02008040)
|
||||
|
|
|
@ -9,7 +9,6 @@
|
|||
#ifndef __ARCH_FSL_LSCH3_IMMAP_H_
|
||||
#define __ARCH_FSL_LSCH3_IMMAP_H_
|
||||
|
||||
#define CONFIG_SYS_IMMR 0x01000000
|
||||
#define CONFIG_SYS_FSL_DDR_ADDR (CONFIG_SYS_IMMR + 0x00080000)
|
||||
#define CONFIG_SYS_FSL_DDR2_ADDR (CONFIG_SYS_IMMR + 0x00090000)
|
||||
#define CONFIG_SYS_FSL_DDR3_ADDR 0x08210000
|
||||
|
|
|
@ -11,7 +11,6 @@
|
|||
#define OCRAM_BASE_S_ADDR 0x10010000
|
||||
#define OCRAM_S_SIZE 0x00010000
|
||||
|
||||
#define CONFIG_SYS_IMMR 0x01000000
|
||||
#define CONFIG_SYS_DCSRBAR 0x20000000
|
||||
|
||||
#define CONFIG_SYS_DCSR_DCFG_ADDR (CONFIG_SYS_DCSRBAR + 0x00220000)
|
||||
|
|
|
@ -109,6 +109,10 @@ ENTRY(_main)
|
|||
mov r9, r0
|
||||
bl board_init_f_init_reserve
|
||||
|
||||
#if defined(CONFIG_DEBUG_UART) && CONFIG_IS_ENABLED(SERIAL)
|
||||
bl debug_uart_init
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_SPL_BUILD) && defined(CONFIG_SPL_EARLY_BSS)
|
||||
CLEAR_BSS
|
||||
#endif
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue