mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-28 15:41:40 +00:00
Merge branch 'next'
Signed-off-by: Tom Rini <trini@konsulko.com>
This commit is contained in:
commit
01f1ab67f3
1656 changed files with 20285 additions and 16165 deletions
|
@ -2,7 +2,7 @@ variables:
|
|||
windows_vm: windows-2019
|
||||
ubuntu_vm: ubuntu-18.04
|
||||
macos_vm: macOS-10.15
|
||||
ci_runner_image: trini/u-boot-gitlab-ci-runner:focal-20220113-03Feb2022
|
||||
ci_runner_image: trini/u-boot-gitlab-ci-runner:focal-20220302-15Mar2022
|
||||
# Add '-u 0' options for Azure pipelines, otherwise we get "permission
|
||||
# denied" error when it tries to "useradd -m -u 1001 vsts_azpcontainer",
|
||||
# since our $(ci_runner_image) user is not root.
|
||||
|
@ -68,10 +68,12 @@ stages:
|
|||
-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' | \
|
||||
(grep '#define[[:blank:]]CONFIG_' $CFG | \
|
||||
sed -n 's/#define.\(CONFIG_[A-Za-z0-9_]*\).*/\1/p' ; \
|
||||
grep '#undef[[:blank:]]CONFIG_' $CFG | \
|
||||
sed -n 's/#undef.\(CONFIG_[A-Za-z0-9_]*\).*/\1/p') | \
|
||||
sort -u > ${KUSEDLST} || true
|
||||
NUM=`comm -12 --total --output-delimiter=, ${KSYMLST} ${KUSEDLST} | \
|
||||
NUM=`comm -123 --total --output-delimiter=, ${KSYMLST} ${KUSEDLST} | \
|
||||
cut -d , -f 3`
|
||||
if [[ $NUM -ne 0 ]]; then
|
||||
echo "Unmigrated symbols found in $CFG"
|
||||
|
@ -202,6 +204,28 @@ stages:
|
|||
export PATH=/opt/gcc-11.1.0-nolibc/arm-linux-gnueabi/bin:$PATH
|
||||
test/nokia_rx51_test.sh
|
||||
|
||||
- job: pylint
|
||||
displayName: Check for any pylint regressions
|
||||
pool:
|
||||
vmImage: $(ubuntu_vm)
|
||||
container:
|
||||
image: $(ci_runner_image)
|
||||
options: $(container_option)
|
||||
steps:
|
||||
- script: |
|
||||
cd ${WORK_DIR}
|
||||
export USER=azure
|
||||
pip install -r test/py/requirements.txt
|
||||
pip install asteval pylint==2.12.2 pyopenssl
|
||||
export PATH=${PATH}:~/.local/bin
|
||||
echo "[MASTER]" >> .pylintrc
|
||||
echo "load-plugins=pylint.extensions.docparams" >> .pylintrc
|
||||
export UBOOT_TRAVIS_BUILD_DIR=/tmp/sandbox_spl
|
||||
./tools/buildman/buildman -T0 -o ${UBOOT_TRAVIS_BUILD_DIR} -w --board sandbox_spl
|
||||
pylint --version
|
||||
export PYTHONPATH=${UBOOT_TRAVIS_BUILD_DIR}/scripts/dtc/pylibfdt
|
||||
make pylint_err
|
||||
|
||||
- stage: test_py
|
||||
jobs:
|
||||
- job: test_py
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
# Grab our configured image. The source for this is found at:
|
||||
# https://source.denx.de/u-boot/gitlab-ci-runner
|
||||
image: trini/u-boot-gitlab-ci-runner:focal-20220113-03Feb2022
|
||||
image: trini/u-boot-gitlab-ci-runner:focal-20220302-15Mar2022
|
||||
|
||||
# We run some tests in different order, to catch some failures quicker.
|
||||
stages:
|
||||
|
@ -129,10 +129,12 @@ check for migrated symbols in board header:
|
|||
-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' |
|
||||
(grep '#define[[:blank:]]CONFIG_' $CFG |
|
||||
sed -n 's/#define.\(CONFIG_[A-Za-z0-9_]*\).*/\1/p' ;
|
||||
grep '#undef[[:blank:]]CONFIG_' $CFG |
|
||||
sed -n 's/#undef.\(CONFIG_[A-Za-z0-9_]*\).*/\1/p') |
|
||||
sort -u > ${KUSEDLST} || true;
|
||||
NUM=`comm -12 --total --output-delimiter=, ${KSYMLST} ${KUSEDLST} |
|
||||
NUM=`comm -123 --total --output-delimiter=, ${KSYMLST} ${KUSEDLST} |
|
||||
cut -d , -f 3`;
|
||||
if [[ $NUM -ne 0 ]]; then
|
||||
echo "Unmigrated symbols found in $CFG";
|
||||
|
@ -215,6 +217,22 @@ Run tests for Nokia RX-51 (aka N900):
|
|||
- export PATH=/opt/gcc-11.1.0-nolibc/arm-linux-gnueabi/bin:$PATH;
|
||||
test/nokia_rx51_test.sh
|
||||
|
||||
# Check for any pylint regressions
|
||||
Run pylint:
|
||||
stage: testsuites
|
||||
script:
|
||||
- pip install -r test/py/requirements.txt
|
||||
- pip install asteval pylint==2.12.2 pyopenssl
|
||||
- export PATH=${PATH}:~/.local/bin
|
||||
- echo "[MASTER]" >> .pylintrc
|
||||
- echo "load-plugins=pylint.extensions.docparams" >> .pylintrc
|
||||
- export UBOOT_TRAVIS_BUILD_DIR=/tmp/sandbox_spl
|
||||
- ./tools/buildman/buildman -T0 -o ${UBOOT_TRAVIS_BUILD_DIR} -w
|
||||
--board sandbox_spl
|
||||
- pylint --version
|
||||
- export PYTHONPATH="${UBOOT_TRAVIS_BUILD_DIR}/scripts/dtc/pylibfdt"
|
||||
- make pylint_err
|
||||
|
||||
# Test sandbox with test.py
|
||||
sandbox test.py:
|
||||
variables:
|
||||
|
|
23
Kconfig
23
Kconfig
|
@ -72,15 +72,32 @@ config CLANG_VERSION
|
|||
int
|
||||
default $(shell,$(srctree)/scripts/clang-version.sh $(CC))
|
||||
|
||||
choice
|
||||
prompt "Optimization level"
|
||||
default CC_OPTIMIZE_FOR_SIZE
|
||||
|
||||
config CC_OPTIMIZE_FOR_SIZE
|
||||
bool "Optimize for size"
|
||||
default y
|
||||
help
|
||||
Enabling this option will pass "-Os" instead of "-O2" to gcc
|
||||
resulting in a smaller U-Boot image.
|
||||
Enabling this option will pass "-Os" to gcc, resulting in a smaller
|
||||
U-Boot image.
|
||||
|
||||
This option is enabled by default for U-Boot.
|
||||
|
||||
config CC_OPTIMIZE_FOR_SPEED
|
||||
bool "Optimize for speed"
|
||||
help
|
||||
Enabling this option will pass "-O2" to gcc, resulting in a faster
|
||||
U-Boot image.
|
||||
|
||||
config CC_OPTIMIZE_FOR_DEBUG
|
||||
bool "Optimize for debugging"
|
||||
help
|
||||
Enabling this option will pass "-Og" to gcc, enabling optimizations
|
||||
which don't interfere with debugging.
|
||||
|
||||
endchoice
|
||||
|
||||
config OPTIMIZE_INLINING
|
||||
bool "Allow compiler to uninline functions marked 'inline' in full U-Boot"
|
||||
help
|
||||
|
|
29
MAINTAINERS
29
MAINTAINERS
|
@ -352,6 +352,7 @@ F: arch/arm/mach-at91/
|
|||
F: board/atmel/
|
||||
F: drivers/cpu/at91_cpu.c
|
||||
F: drivers/misc/microchip_flexcom.c
|
||||
F: drivers/timer/atmel_tcb_timer.c
|
||||
F: include/dt-bindings/mfd/atmel-flexcom.h
|
||||
F: drivers/timer/mchp-pit64b-timer.c
|
||||
|
||||
|
@ -621,8 +622,10 @@ F: drivers/i2c/muxes/pca954x.c
|
|||
F: drivers/i2c/zynq_i2c.c
|
||||
F: drivers/mmc/zynq_sdhci.c
|
||||
F: drivers/mtd/nand/raw/zynq_nand.c
|
||||
F: drivers/net/phy/ethernet_id.c
|
||||
F: drivers/net/phy/xilinx_phy.c
|
||||
F: drivers/net/zynq_gem.c
|
||||
F: drivers/pinctrl/pinctrl-zynqmp.c
|
||||
F: drivers/serial/serial_zynq.c
|
||||
F: drivers/spi/zynq_qspi.c
|
||||
F: drivers/spi/zynq_spi.c
|
||||
|
@ -640,6 +643,7 @@ F: arch/arm/mach-zynqmp/
|
|||
F: drivers/clk/clk_zynqmp.c
|
||||
F: driver/firmware/firmware-zynqmp.c
|
||||
F: drivers/fpga/zynqpl.c
|
||||
F: drivers/gpio/gpio_slg7xl45106.c
|
||||
F: drivers/gpio/zynq_gpio.c
|
||||
F: drivers/gpio/zynqmp_gpio_modepin.c
|
||||
F: drivers/i2c/i2c-cdns.c
|
||||
|
@ -659,7 +663,6 @@ F: drivers/soc/soc_xilinx_zynqmp.c
|
|||
F: drivers/spi/zynq_qspi.c
|
||||
F: drivers/spi/zynq_spi.c
|
||||
F: drivers/timer/cadence-ttc.c
|
||||
F: drivers/usb/host/ehci-zynq.c
|
||||
F: drivers/video/seps525.c
|
||||
F: drivers/watchdog/cdns_wdt.c
|
||||
F: include/zynqmppl.h
|
||||
|
@ -813,6 +816,25 @@ S: Maintained
|
|||
F: doc/usage/environment.rst
|
||||
F: scripts/env2string.awk
|
||||
|
||||
EROFS
|
||||
M: Huang Jianan <jnhuang95@gmail.com>
|
||||
L: linux-erofs@lists.ozlabs.org
|
||||
S: Maintained
|
||||
F: cmd/erofs.c
|
||||
F: fs/erofs/
|
||||
F: include/erofs.h
|
||||
F: test/py/tests/test_fs/test_erofs.py
|
||||
|
||||
EVENTS
|
||||
M: Simon Glass <sjg@chromium.org>
|
||||
S: Maintained
|
||||
F: cmd/event.c
|
||||
F: common/event.c
|
||||
F: include/event.h
|
||||
F: scripts/event_dump.py
|
||||
F: test/common/event.c
|
||||
F: test/py/tests/test_event_dump.py
|
||||
|
||||
FASTBOOT
|
||||
S: Orphaned
|
||||
F: cmd/fastboot.c
|
||||
|
@ -1152,6 +1174,11 @@ F: arch/sandbox/
|
|||
F: doc/arch/sandbox.rst
|
||||
F: include/dt-bindings/*/sandbox*.h
|
||||
|
||||
SEMIHOSTING
|
||||
R: Sean Anderson <sean.anderson@seco.com>
|
||||
S: Orphaned
|
||||
N: semihosting
|
||||
|
||||
SETEXPR
|
||||
M: Roland Gaudig <roland.gaudig@weidmueller.com>
|
||||
S: Maintained
|
||||
|
|
19
Makefile
19
Makefile
|
@ -521,7 +521,8 @@ env_h := include/generated/environment.h
|
|||
|
||||
no-dot-config-targets := clean clobber mrproper distclean \
|
||||
help %docs check% coccicheck \
|
||||
ubootversion backup tests check qcheck tcheck pylint
|
||||
ubootversion backup tests check qcheck tcheck pylint \
|
||||
pylint_err
|
||||
|
||||
config-targets := 0
|
||||
mixed-targets := 0
|
||||
|
@ -682,10 +683,16 @@ endif
|
|||
|
||||
ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE
|
||||
KBUILD_CFLAGS += -Os
|
||||
else
|
||||
endif
|
||||
|
||||
ifdef CONFIG_CC_OPTIMIZE_FOR_SPEED
|
||||
KBUILD_CFLAGS += -O2
|
||||
endif
|
||||
|
||||
ifdef CONFIG_CC_OPTIMIZE_FOR_DEBUG
|
||||
KBUILD_CFLAGS += -Og
|
||||
endif
|
||||
|
||||
LTO_CFLAGS :=
|
||||
LTO_FINAL_LDFLAGS :=
|
||||
export LTO_CFLAGS LTO_FINAL_LDFLAGS
|
||||
|
@ -1335,6 +1342,7 @@ cmd_binman = $(srctree)/tools/binman/binman $(if $(BINMAN_DEBUG),-D) \
|
|||
-a tpl-bss-pad=$(if $(CONFIG_TPL_SEPARATE_BSS),,1) \
|
||||
-a spl-dtb=$(CONFIG_SPL_OF_REAL) \
|
||||
-a tpl-dtb=$(CONFIG_TPL_OF_REAL) \
|
||||
-a pre-load-key-path=${PRE_LOAD_KEY_PATH} \
|
||||
$(BINMAN_$(@F))
|
||||
|
||||
OBJCOPYFLAGS_u-boot.ldr.hex := -I binary -O ihex
|
||||
|
@ -2265,7 +2273,7 @@ distclean: mrproper
|
|||
@rm -f boards.cfg CHANGELOG
|
||||
|
||||
# See doc/develop/python_cq.rst
|
||||
PHONY += pylint
|
||||
PHONY += pylint pylint_err
|
||||
PYLINT_BASE := scripts/pylint.base
|
||||
PYLINT_CUR := pylint.cur
|
||||
PYLINT_DIFF := pylint.diff
|
||||
|
@ -2307,6 +2315,11 @@ pylint:
|
|||
echo "No pylint regressions"; \
|
||||
fi
|
||||
|
||||
# Check for errors only
|
||||
pylint_err:
|
||||
$(Q)pylint -E -j 0 --ignore-imports=yes \
|
||||
$(shell find tools test -name "*.py")
|
||||
|
||||
backup:
|
||||
F=`basename $(srctree)` ; cd .. ; \
|
||||
gtar --force-local -zcvf `LC_ALL=C date "+$$F-%Y-%m-%d-%T.tar.gz"` $$F
|
||||
|
|
144
README
144
README
|
@ -374,14 +374,6 @@ The following options need to be configured:
|
|||
See Freescale App Note 4493 for more information about
|
||||
this erratum.
|
||||
|
||||
CONFIG_A003399_NOR_WORKAROUND
|
||||
Enables a workaround for IFC erratum A003399. It is only
|
||||
required during NOR boot.
|
||||
|
||||
CONFIG_A008044_WORKAROUND
|
||||
Enables a workaround for T1040/T1042 erratum A008044. It is only
|
||||
required during NAND boot and valid for Rev 1.0 SoC revision
|
||||
|
||||
CONFIG_SYS_FSL_CORENET_SNOOPVEC_COREONLY
|
||||
|
||||
This is the value to write into CCSR offset 0x18600
|
||||
|
@ -411,10 +403,6 @@ The following options need to be configured:
|
|||
This CONFIG is defined when the CPC is configured as SRAM at the
|
||||
time of U-Boot entry and is required to be re-initialized.
|
||||
|
||||
CONFIG_DEEP_SLEEP
|
||||
Indicates this SoC supports deep sleep feature. If deep sleep is
|
||||
supported, core will start to execute uboot when wakes up.
|
||||
|
||||
- Generic CPU options:
|
||||
CONFIG_SYS_BIG_ENDIAN, CONFIG_SYS_LITTLE_ENDIAN
|
||||
|
||||
|
@ -565,13 +553,6 @@ The following options need to be configured:
|
|||
boards with QUICC Engines require OF_QE to set UCC MAC
|
||||
addresses
|
||||
|
||||
CONFIG_OF_SYSTEM_SETUP
|
||||
|
||||
Other code has addition modification that it wants to make
|
||||
to the flat device tree before handing it off to the kernel.
|
||||
This causes ft_system_setup() to be called before booting
|
||||
the kernel.
|
||||
|
||||
CONFIG_OF_IDE_FIXUP
|
||||
|
||||
U-Boot can detect if an IDE device is present or not.
|
||||
|
@ -985,34 +966,12 @@ The following options need to be configured:
|
|||
- Keyboard Support:
|
||||
See Kconfig help for available keyboard drivers.
|
||||
|
||||
- Video support:
|
||||
CONFIG_FSL_DIU_FB
|
||||
Enable the Freescale DIU video driver. Reference boards for
|
||||
SOCs that have a DIU should define this macro to enable DIU
|
||||
support, and should also define these other macros:
|
||||
|
||||
CONFIG_SYS_DIU_ADDR
|
||||
CONFIG_VIDEO
|
||||
CONFIG_CFB_CONSOLE
|
||||
CONFIG_VIDEO_SW_CURSOR
|
||||
CONFIG_VGA_AS_SINGLE_DEVICE
|
||||
CONFIG_VIDEO_BMP_LOGO
|
||||
|
||||
The DIU driver will look for the 'video-mode' environment
|
||||
variable, and if defined, enable the DIU as a console during
|
||||
boot. See the documentation file doc/README.video for a
|
||||
description of this variable.
|
||||
|
||||
- LCD Support: CONFIG_LCD
|
||||
|
||||
Define this to enable LCD support (for output to LCD
|
||||
display); also select one of the supported displays
|
||||
by defining one of these:
|
||||
|
||||
CONFIG_ATMEL_LCD:
|
||||
|
||||
HITACHI TX09D70VM1CCA, 3.5", 240x320.
|
||||
|
||||
CONFIG_NEC_NL6448AC33:
|
||||
|
||||
NEC NL6448AC33-18. Active, color, single scan.
|
||||
|
@ -1081,22 +1040,11 @@ The following options need to be configured:
|
|||
If CONFIG_LCD_ROTATION is not defined, the console will be
|
||||
initialized with 0degree rotation.
|
||||
|
||||
CONFIG_LCD_BMP_RLE8
|
||||
|
||||
Support drawing of RLE8-compressed bitmaps on the LCD.
|
||||
|
||||
- MII/PHY support:
|
||||
CONFIG_PHY_CLOCK_FREQ (ppc4xx)
|
||||
|
||||
The clock frequency of the MII bus
|
||||
|
||||
CONFIG_PHY_RESET_DELAY
|
||||
|
||||
Some PHY like Intel LXT971A need extra delay after
|
||||
reset before any MII register access is possible.
|
||||
For such PHY, set this option to the usec delay
|
||||
required. (minimum 300usec for LXT971A)
|
||||
|
||||
CONFIG_PHY_CMD_DELAY (ppc4xx)
|
||||
|
||||
Some PHY like Intel LXT971A need extra delay after
|
||||
|
@ -1172,35 +1120,6 @@ The following options need to be configured:
|
|||
from a BOOTP client in networks with unusually high latency.
|
||||
|
||||
- DHCP Advanced Options:
|
||||
You can fine tune the DHCP functionality by defining
|
||||
CONFIG_BOOTP_* symbols:
|
||||
|
||||
CONFIG_BOOTP_NISDOMAIN
|
||||
CONFIG_BOOTP_BOOTFILESIZE
|
||||
CONFIG_BOOTP_NTPSERVER
|
||||
CONFIG_BOOTP_TIMEOFFSET
|
||||
CONFIG_BOOTP_VENDOREX
|
||||
CONFIG_BOOTP_MAY_FAIL
|
||||
|
||||
CONFIG_BOOTP_MAY_FAIL - If the DHCP server is not found
|
||||
after the configured retry count, the call will fail
|
||||
instead of starting over. This can be used to fail over
|
||||
to Link-local IP address configuration if the DHCP server
|
||||
is not available.
|
||||
|
||||
CONFIG_BOOTP_DHCP_REQUEST_DELAY
|
||||
|
||||
A 32bit value in microseconds for a delay between
|
||||
receiving a "DHCP Offer" and sending the "DHCP Request".
|
||||
This fixes a problem with certain DHCP servers that don't
|
||||
respond 100% of the time to a "DHCP request". E.g. On an
|
||||
AT91RM9200 processor running at 180MHz, this delay needed
|
||||
to be *at least* 15,000 usec before a Windows Server 2003
|
||||
DHCP server would reply 100% of the time. I recommend at
|
||||
least 50,000 usec to be safe. The alternative is to hope
|
||||
that one of the retries will be successful but note that
|
||||
the DHCP timeout and retry process takes a longer than
|
||||
this delay.
|
||||
|
||||
- Link-local IP address negotiation:
|
||||
Negotiate with other link-local clients on the local network
|
||||
|
@ -1592,24 +1511,6 @@ The following options need to be configured:
|
|||
FLAGADM
|
||||
|
||||
- Error Recovery:
|
||||
CONFIG_NET_RETRY_COUNT
|
||||
|
||||
This variable defines the number of retries for
|
||||
network operations like ARP, RARP, TFTP, or BOOTP
|
||||
before giving up the operation. If not defined, a
|
||||
default value of 5 is used.
|
||||
|
||||
CONFIG_ARP_TIMEOUT
|
||||
|
||||
Timeout waiting for an ARP reply in milliseconds.
|
||||
|
||||
CONFIG_NFS_TIMEOUT
|
||||
|
||||
Timeout in milliseconds used in NFS protocol.
|
||||
If you encounter "ERROR: Cannot umount" in nfs command,
|
||||
try longer timeout such as
|
||||
#define CONFIG_NFS_TIMEOUT 10000UL
|
||||
|
||||
Note:
|
||||
|
||||
In the current implementation, the local variables
|
||||
|
@ -1674,26 +1575,6 @@ The following options need to be configured:
|
|||
this is instead controlled by the value of
|
||||
/config/load-environment.
|
||||
|
||||
- TFTP Fixed UDP Port:
|
||||
CONFIG_TFTP_PORT
|
||||
|
||||
If this is defined, the environment variable tftpsrcp
|
||||
is used to supply the TFTP UDP source port value.
|
||||
If tftpsrcp isn't defined, the normal pseudo-random port
|
||||
number generator is used.
|
||||
|
||||
Also, the environment variable tftpdstp is used to supply
|
||||
the TFTP UDP destination port value. If tftpdstp isn't
|
||||
defined, the normal port 69 is used.
|
||||
|
||||
The purpose for tftpsrcp is to allow a TFTP server to
|
||||
blindly start the TFTP transfer using the pre-configured
|
||||
target IP address and UDP port. This has the effect of
|
||||
"punching through" the (Windows XP) firewall, allowing
|
||||
the remainder of the TFTP transfer to proceed normally.
|
||||
A better solution is to properly configure the firewall,
|
||||
but sometimes that is not allowed.
|
||||
|
||||
CONFIG_STANDALONE_LOAD_ADDR
|
||||
|
||||
This option defines a board specific value for the
|
||||
|
@ -1876,10 +1757,6 @@ The following options need to be configured:
|
|||
CONFIG_SPL_SKIP_RELOCATE
|
||||
Avoid SPL relocation
|
||||
|
||||
CONFIG_SPL_NAND_IDENT
|
||||
SPL uses the chip ID list to identify the NAND flash.
|
||||
Requires CONFIG_SPL_NAND_BASE.
|
||||
|
||||
CONFIG_SPL_UBI
|
||||
Support for a lightweight UBI (fastmap) scanner and
|
||||
loader
|
||||
|
@ -1972,7 +1849,6 @@ typically in board_init_f() and board_init_r().
|
|||
- CONFIG_BOARD_EARLY_INIT_F: Call board_early_init_f()
|
||||
- CONFIG_BOARD_EARLY_INIT_R: Call board_early_init_r()
|
||||
- CONFIG_BOARD_LATE_INIT: Call board_late_init()
|
||||
- CONFIG_BOARD_POSTCLK_INIT: Call board_postclk_init()
|
||||
|
||||
Configuration Settings:
|
||||
-----------------------
|
||||
|
@ -2041,12 +1917,6 @@ Configuration Settings:
|
|||
- CONFIG_SYS_FLASH_BASE:
|
||||
Physical start address of Flash memory.
|
||||
|
||||
- CONFIG_SYS_MONITOR_BASE:
|
||||
Physical start address of boot monitor code (set by
|
||||
make config files to be same as the text base address
|
||||
(CONFIG_SYS_TEXT_BASE) used when linking) - same as
|
||||
CONFIG_SYS_FLASH_BASE when booting from flash.
|
||||
|
||||
- CONFIG_SYS_MONITOR_LEN:
|
||||
Size of memory reserved for monitor code, used to
|
||||
determine _at_compile_time_ (!) if the environment is
|
||||
|
@ -2196,14 +2066,6 @@ Configuration Settings:
|
|||
while unprotecting/erasing/programming. Please only enable
|
||||
this option if you really know what you are doing.
|
||||
|
||||
- CONFIG_SYS_RX_ETH_BUFFER:
|
||||
Defines the number of Ethernet receive buffers. On some
|
||||
Ethernet controllers it is recommended to set this value
|
||||
to 8 or even higher (EEPRO100 or 405 EMAC), since all
|
||||
buffers can be full shortly after enabling the interface
|
||||
on high Ethernet traffic.
|
||||
Defaults to 4 if not defined.
|
||||
|
||||
- CONFIG_ENV_MAX_ENTRIES
|
||||
|
||||
Maximum number of entries in the hash table that is used
|
||||
|
@ -2301,12 +2163,6 @@ Note: once the monitor has been relocated, then it will complain if
|
|||
the default environment is used; a new CRC is computed as soon as you
|
||||
use the "saveenv" command to store a valid environment.
|
||||
|
||||
- CONFIG_SYS_FAULT_ECHO_LINK_DOWN:
|
||||
Echo the inverted Ethernet link state to the fault LED.
|
||||
|
||||
Note: If this option is active, then CONFIG_SYS_FAULT_MII_ADDR
|
||||
also needs to be defined.
|
||||
|
||||
- CONFIG_SYS_FAULT_MII_ADDR:
|
||||
MII address of the PHY to check for the Ethernet link state.
|
||||
|
||||
|
|
|
@ -94,6 +94,7 @@ config NIOS2
|
|||
bool "Nios II architecture"
|
||||
select CPU
|
||||
select DM
|
||||
imply DM_EVENT
|
||||
select OF_CONTROL
|
||||
select SUPPORT_OF_CONTROL
|
||||
imply CMD_DM
|
||||
|
@ -113,6 +114,7 @@ config RISCV
|
|||
select DM
|
||||
imply DM_SERIAL
|
||||
imply DM_ETH
|
||||
imply DM_EVENT
|
||||
imply DM_MMC
|
||||
imply DM_SPI
|
||||
imply DM_SPI_FLASH
|
||||
|
@ -203,6 +205,7 @@ config SANDBOX
|
|||
imply KEYBOARD
|
||||
imply PHYSMEM
|
||||
imply GENERATE_ACPI_TABLE
|
||||
imply BINMAN
|
||||
|
||||
config SH
|
||||
bool "SuperH architecture"
|
||||
|
@ -238,6 +241,7 @@ config X86
|
|||
imply CMD_SF_TEST
|
||||
imply CMD_ZBOOT
|
||||
imply DM_ETH
|
||||
imply DM_EVENT
|
||||
imply DM_GPIO
|
||||
imply DM_KEYBOARD
|
||||
imply DM_MMC
|
||||
|
@ -444,3 +448,5 @@ source "arch/sh/Kconfig"
|
|||
source "arch/x86/Kconfig"
|
||||
source "arch/xtensa/Kconfig"
|
||||
source "arch/riscv/Kconfig"
|
||||
|
||||
source "board/keymile/Kconfig"
|
||||
|
|
113
arch/arm/Kconfig
113
arch/arm/Kconfig
|
@ -403,11 +403,50 @@ config ARM_SMCCC
|
|||
firmware (for example, PSCI) according to SMCCC.
|
||||
|
||||
config SEMIHOSTING
|
||||
bool "support boot from semihosting"
|
||||
bool "Support ARM semihosting"
|
||||
help
|
||||
In emulated environments, semihosting is a way for
|
||||
the hosted environment to call out to the emulator to
|
||||
retrieve files from the host machine.
|
||||
Semihosting is a method for a target to communicate with a host
|
||||
debugger. It uses special instructions which the debugger will trap
|
||||
on and interpret. This allows U-Boot to read/write files, print to
|
||||
the console, and execute arbitrary commands on the host system.
|
||||
|
||||
Enabling this option will add support for reading and writing files
|
||||
on the host system. If you don't have a debugger attached then trying
|
||||
to do this will likely cause U-Boot to hang. Say 'n' if you are unsure.
|
||||
|
||||
config SEMIHOSTING_FALLBACK
|
||||
bool "Recover gracefully when semihosting fails"
|
||||
depends on SEMIHOSTING && ARM64
|
||||
default y
|
||||
help
|
||||
Normally, if U-Boot makes a semihosting call and no debugger is
|
||||
attached, then it will panic due to a synchronous abort
|
||||
exception. This config adds an exception handler which will allow
|
||||
U-Boot to recover. Say 'y' if unsure.
|
||||
|
||||
config SPL_SEMIHOSTING
|
||||
bool "Support ARM semihosting in SPL"
|
||||
depends on SPL
|
||||
help
|
||||
Semihosting is a method for a target to communicate with a host
|
||||
debugger. It uses special instructions which the debugger will trap
|
||||
on and interpret. This allows U-Boot to read/write files, print to
|
||||
the console, and execute arbitrary commands on the host system.
|
||||
|
||||
Enabling this option will add support for reading and writing files
|
||||
on the host system. If you don't have a debugger attached then trying
|
||||
to do this will likely cause U-Boot to hang. Say 'n' if you are unsure.
|
||||
|
||||
config SPL_SEMIHOSTING_FALLBACK
|
||||
bool "Recover gracefully when semihosting fails in SPL"
|
||||
depends on SPL_SEMIHOSTING && ARM64
|
||||
select ARMV8_SPL_EXCEPTION_VECTORS
|
||||
default y
|
||||
help
|
||||
Normally, if U-Boot makes a semihosting call and no debugger is
|
||||
attached, then it will panic due to a synchronous abort
|
||||
exception. This config adds an exception handler which will allow
|
||||
U-Boot to recover. Say 'y' if unsure.
|
||||
|
||||
config SYS_THUMB_BUILD
|
||||
bool "Build U-Boot using the Thumb instruction set"
|
||||
|
@ -617,6 +656,13 @@ config ARCH_BCM63158
|
|||
select OF_CONTROL
|
||||
imply CMD_DM
|
||||
|
||||
config ARCH_BCM6753
|
||||
bool "Broadcom BCM6753 family"
|
||||
select CPU_V7A
|
||||
select DM
|
||||
select OF_CONTROL
|
||||
imply CMD_DM
|
||||
|
||||
config ARCH_BCM68360
|
||||
bool "Broadcom BCM68360 family"
|
||||
select DM
|
||||
|
@ -767,6 +813,7 @@ config ARCH_OMAP2PLUS
|
|||
select SUPPORT_SPL
|
||||
imply TI_SYSC if DM && OF_CONTROL
|
||||
imply FIT
|
||||
imply DM_EVENT
|
||||
|
||||
config ARCH_MESON
|
||||
bool "Amlogic Meson"
|
||||
|
@ -811,6 +858,7 @@ config ARCH_IMX8
|
|||
select MACH_IMX
|
||||
select OF_CONTROL
|
||||
select ENABLE_ARM_SOC_BOOT0_HOOK
|
||||
imply DM_EVENT
|
||||
|
||||
config ARCH_IMX8M
|
||||
bool "NXP i.MX8M platform"
|
||||
|
@ -824,6 +872,7 @@ config ARCH_IMX8M
|
|||
select DM
|
||||
select SUPPORT_SPL
|
||||
imply CMD_DM
|
||||
imply DM_EVENT
|
||||
|
||||
config ARCH_IMX8ULP
|
||||
bool "NXP i.MX8ULP platform"
|
||||
|
@ -834,6 +883,7 @@ config ARCH_IMX8ULP
|
|||
select SUPPORT_SPL
|
||||
select GPIO_EXTRA_HEADER
|
||||
imply CMD_DM
|
||||
imply DM_EVENT
|
||||
|
||||
config ARCH_IMXRT
|
||||
bool "NXP i.MXRT platform"
|
||||
|
@ -869,6 +919,7 @@ config ARCH_MX31
|
|||
|
||||
config ARCH_MX7ULP
|
||||
bool "NXP MX7ULP"
|
||||
select BOARD_POSTCLK_INIT
|
||||
select CPU_V7A
|
||||
select GPIO_EXTRA_HEADER
|
||||
select MACH_IMX
|
||||
|
@ -894,6 +945,7 @@ config ARCH_MX7
|
|||
|
||||
config ARCH_MX6
|
||||
bool "Freescale MX6"
|
||||
select BOARD_POSTCLK_INIT
|
||||
select CPU_V7A
|
||||
select GPIO_EXTRA_HEADER
|
||||
select MACH_IMX
|
||||
|
@ -1237,34 +1289,19 @@ config ARCH_TEGRA
|
|||
imply DISTRO_DEFAULTS
|
||||
imply FAT_WRITE
|
||||
|
||||
config TARGET_VEXPRESS64_AEMV8A
|
||||
bool "Support vexpress_aemv8a"
|
||||
config ARCH_VEXPRESS64
|
||||
bool "Support ARMv8 Arm Ltd. VExpress based boards and models"
|
||||
select ARM64
|
||||
select GPIO_EXTRA_HEADER
|
||||
select PL01X_SERIAL
|
||||
|
||||
config TARGET_VEXPRESS64_BASE_FVP
|
||||
bool "Support Versatile Express ARMv8a FVP BASE model"
|
||||
select ARM64
|
||||
select GPIO_EXTRA_HEADER
|
||||
select PL01X_SERIAL
|
||||
select SEMIHOSTING
|
||||
|
||||
config TARGET_VEXPRESS64_JUNO
|
||||
bool "Support Versatile Express Juno Development Platform"
|
||||
select ARM64
|
||||
select GPIO_EXTRA_HEADER
|
||||
select PL01X_SERIAL
|
||||
select DM
|
||||
select DM_SERIAL
|
||||
select PL01X_SERIAL
|
||||
select OF_CONTROL
|
||||
select CLK
|
||||
select DM_SERIAL
|
||||
select ARM_PSCI_FW
|
||||
select PSCI_RESET
|
||||
select DM_ETH
|
||||
select BLK
|
||||
select USB
|
||||
imply OF_HAS_PRIOR_STAGE
|
||||
select MTD_NOR_FLASH if MTD
|
||||
select FLASH_CFI_DRIVER if MTD
|
||||
select ENV_IS_IN_FLASH if MTD
|
||||
imply DISTRO_DEFAULTS
|
||||
|
||||
config TARGET_TOTAL_COMPUTE
|
||||
bool "Support Total Compute Platform"
|
||||
|
@ -1975,6 +2012,25 @@ config TARGET_DURIAN
|
|||
Support for durian platform.
|
||||
It has 2GB Sdram, uart and pcie.
|
||||
|
||||
config TARGET_POMELO
|
||||
bool "Support Phytium Pomelo Platform"
|
||||
select ARM64
|
||||
select DM
|
||||
select AHCI
|
||||
select SCSI_AHCI
|
||||
select AHCI_PCI
|
||||
select BLK
|
||||
select PCI
|
||||
select DM_PCI
|
||||
select SCSI
|
||||
select DM_SCSI
|
||||
select DM_SERIAL
|
||||
select DM_ETH if NET
|
||||
imply CMD_PCI
|
||||
help
|
||||
Support for pomelo platform.
|
||||
It has 8GB Sdram, uart and pcie.
|
||||
|
||||
config TARGET_PRESIDIO_ASIC
|
||||
bool "Support Cortina Presidio ASIC Platform"
|
||||
select ARM64
|
||||
|
@ -2206,6 +2262,7 @@ source "board/armltd/vexpress/Kconfig"
|
|||
source "board/armltd/vexpress64/Kconfig"
|
||||
source "board/cortina/presidio-asic/Kconfig"
|
||||
source "board/broadcom/bcm963158/Kconfig"
|
||||
source "board/broadcom/bcm96753ref/Kconfig"
|
||||
source "board/broadcom/bcm968360bg/Kconfig"
|
||||
source "board/broadcom/bcm968580xref/Kconfig"
|
||||
source "board/broadcom/bcmns3/Kconfig"
|
||||
|
@ -2245,8 +2302,8 @@ source "board/traverse/ten64/Kconfig"
|
|||
source "board/variscite/dart_6ul/Kconfig"
|
||||
source "board/vscom/baltos/Kconfig"
|
||||
source "board/phytium/durian/Kconfig"
|
||||
source "board/phytium/pomelo/Kconfig"
|
||||
source "board/xen/xenguest_arm64/Kconfig"
|
||||
source "board/keymile/Kconfig"
|
||||
|
||||
source "arch/arm/Kconfig.debug"
|
||||
|
||||
|
|
|
@ -27,6 +27,37 @@ config ARMV7_BOOT_SEC_DEFAULT
|
|||
This can be overridden at run-time by setting the bootm_boot_mode env.
|
||||
variable to "sec" or "nonsec".
|
||||
|
||||
config HAS_ARMV7_SECURE_BASE
|
||||
bool "Enable support for a ahardware secure memory area"
|
||||
default y if ARCH_LS1021A || ARCH_MX7 || ARCH_MX7ULP || ARCH_STM32MP \
|
||||
|| MACH_SUN6I || MACH_SUN7I || MACH_SUN8I || TEGRA124
|
||||
|
||||
config ARMV7_SECURE_BASE
|
||||
hex "Base address for secure mode memory"
|
||||
depends on HAS_ARMV7_SECURE_BASE
|
||||
default 0xfff00000 if TEGRA124
|
||||
default 0x2ffc0000 if ARCH_STM32MP
|
||||
default 0x2f000000 if ARCH_MX7ULP
|
||||
default 0x10010000 if ARCH_LS1021A
|
||||
default 0x00900000 if ARCH_MX7
|
||||
default 0x00044000 if MACH_SUN8I
|
||||
default 0x00020000 if MACH_SUN6I || MACH_SUN7I
|
||||
|
||||
config ARMV7_SECURE_RESERVE_SIZE
|
||||
hex
|
||||
depends on TEGRA124 && HAS_ARMV7_SECURE_BASE
|
||||
default 0x100000
|
||||
help
|
||||
Reserve top 1M for secure RAM
|
||||
|
||||
config ARMV7_SECURE_MAX_SIZE
|
||||
hex
|
||||
depends on ARMV7_SECURE_BASE && ARCH_STM32MP || MACH_SUN6I \
|
||||
|| MACH_SUN7I || MACH_SUN8I
|
||||
default 0xbc00 if MACH_SUN8I && !MACH_SUN8I_H3
|
||||
default 0x3c00 if MACH_SUN8I && MACH_SUN8I_H3
|
||||
default 0x10000
|
||||
|
||||
config ARMV7_VIRT
|
||||
bool "Enable support for hardware virtualization" if EXPERT
|
||||
depends on CPU_V7_HAS_VIRT && ARMV7_NONSEC
|
||||
|
|
|
@ -5,7 +5,7 @@ config ARCH_LS1021A
|
|||
select SYS_FSL_DDR_VER_50 if SYS_FSL_DDR
|
||||
select SYS_FSL_ERRATUM_A008378
|
||||
select SYS_FSL_ERRATUM_A008407
|
||||
select SYS_FSL_ERRATUM_A008850
|
||||
select SYS_FSL_ERRATUM_A008850 if SYS_FSL_DDR
|
||||
select SYS_FSL_ERRATUM_A008997 if USB
|
||||
select SYS_FSL_ERRATUM_A009007 if USB
|
||||
select SYS_FSL_ERRATUM_A009008 if USB
|
||||
|
|
|
@ -12,7 +12,9 @@
|
|||
#include <asm/arch/ls102xa_soc.h>
|
||||
#include <asm/arch/ls102xa_stream_id.h>
|
||||
#include <fsl_csu.h>
|
||||
#ifdef CONFIG_SYS_FSL_ERRATUM_A008850
|
||||
#include <fsl_ddr_sdram.h>
|
||||
#endif
|
||||
|
||||
struct liodn_id_table sec_liodn_tbl[] = {
|
||||
SET_SEC_JR_LIODN_ENTRY(0, 0x10, 0x10),
|
||||
|
@ -172,10 +174,6 @@ int arch_soc_init(void)
|
|||
out_be32(&scfg->qspi_cfg, SCFG_QSPI_CLKSEL);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_VIDEO_FSL_DCU_FB
|
||||
out_be32(&scfg->pixclkcr, SCFG_PIXCLKCR_PXCKEN);
|
||||
#endif
|
||||
|
||||
/* Configure Little endian for SAI, ASRC and SPDIF */
|
||||
out_be32(&scfg->endiancr, SCFG_ENDIANCR_LE);
|
||||
|
||||
|
|
|
@ -31,6 +31,12 @@ config ARMV8_SET_SMPEN
|
|||
it can be safely enabled when EL2/EL3 initialized SMPEN bit
|
||||
or when CPU implementation doesn't include that register.
|
||||
|
||||
config ARMV8_SWITCH_TO_EL1
|
||||
bool "Enable switching to running in EL1"
|
||||
help
|
||||
In some circumstances we need to switch to running in EL1.
|
||||
Enable this option to have U-Boot switch to EL1.
|
||||
|
||||
config ARMV8_SPIN_TABLE
|
||||
bool "Support spin-table enable method"
|
||||
depends on ARMV8_MULTIENTRY && OF_LIBFDT
|
||||
|
|
|
@ -77,14 +77,18 @@ _save_el_regs:
|
|||
switch_el x11, 3f, 2f, 1f
|
||||
3: mrs x1, esr_el3
|
||||
mrs x2, elr_el3
|
||||
mrs x3, spsr_el3
|
||||
b 0f
|
||||
2: mrs x1, esr_el2
|
||||
mrs x2, elr_el2
|
||||
mrs x3, spsr_el2
|
||||
b 0f
|
||||
1: mrs x1, esr_el1
|
||||
mrs x2, elr_el1
|
||||
mrs x3, spsr_el1
|
||||
0:
|
||||
stp x2, x0, [sp, #-16]!
|
||||
stp x1, x0, [sp, #-16]!
|
||||
stp x3, x2, [sp, #-16]!
|
||||
mov x0, sp
|
||||
ret
|
||||
|
||||
|
@ -98,7 +102,7 @@ _save_el_regs:
|
|||
* This is the first part of the shared routine called into from all entries.
|
||||
*/
|
||||
exception_exit:
|
||||
ldp x2, x0, [sp],#16
|
||||
ldp xzr, x2, [sp],#16
|
||||
switch_el x11, 3f, 2f, 1f
|
||||
3: msr elr_el3, x2
|
||||
b _restore_regs
|
||||
|
@ -118,6 +122,7 @@ exception_exit:
|
|||
* This is the second part of the shared routine called into from all entries.
|
||||
*/
|
||||
_restore_regs:
|
||||
ldp xzr, x0, [sp],#16
|
||||
ldp x1, x2, [sp],#16
|
||||
ldp x3, x4, [sp],#16
|
||||
ldp x5, x6, [sp],#16
|
||||
|
|
|
@ -8,7 +8,6 @@
|
|||
#include <clock_legacy.h>
|
||||
#include <cpu_func.h>
|
||||
#include <env.h>
|
||||
#include <fsl_ddr_sdram.h>
|
||||
#include <init.h>
|
||||
#include <hang.h>
|
||||
#include <log.h>
|
||||
|
@ -36,6 +35,7 @@
|
|||
#endif
|
||||
#include <asm/armv8/sec_firmware.h>
|
||||
#ifdef CONFIG_SYS_FSL_DDR
|
||||
#include <fsl_ddr_sdram.h>
|
||||
#include <fsl_ddr.h>
|
||||
#endif
|
||||
#include <asm/arch/clock.h>
|
||||
|
@ -1632,11 +1632,13 @@ void update_early_mmu_table(void)
|
|||
|
||||
__weak int dram_init(void)
|
||||
{
|
||||
#ifdef CONFIG_SYS_FSL_DDR
|
||||
fsl_initdram();
|
||||
#if (!defined(CONFIG_SPL) && !defined(CONFIG_TFABOOT)) || \
|
||||
defined(CONFIG_SPL_BUILD)
|
||||
/* This will break-before-make MMU for DDR */
|
||||
update_early_mmu_table();
|
||||
#endif
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -74,15 +74,6 @@ ENDPROC(smp_kick_all_cpus)
|
|||
ENTRY(lowlevel_init)
|
||||
mov x29, lr /* Save LR */
|
||||
|
||||
/* unmask SError and abort */
|
||||
msr daifclr, #4
|
||||
|
||||
/* Set HCR_EL2[AMO] so SError @EL2 is taken */
|
||||
mrs x0, hcr_el2
|
||||
orr x0, x0, #0x20 /* AMO */
|
||||
msr hcr_el2, x0
|
||||
isb
|
||||
|
||||
switch_el x1, 1f, 100f, 100f /* skip if not in EL3 */
|
||||
1:
|
||||
|
||||
|
@ -209,7 +200,7 @@ ENTRY(lowlevel_init)
|
|||
#endif
|
||||
|
||||
100:
|
||||
branch_if_master x0, x1, 2f
|
||||
branch_if_master x0, 2f
|
||||
|
||||
#if defined(CONFIG_MP) && defined(CONFIG_ARMV8_MULTIENTRY)
|
||||
/*
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
#include <image.h>
|
||||
#include <init.h>
|
||||
#include <log.h>
|
||||
#include <semihosting.h>
|
||||
#include <spl.h>
|
||||
#include <asm/cache.h>
|
||||
#include <asm/global_data.h>
|
||||
|
@ -27,6 +28,8 @@ DECLARE_GLOBAL_DATA_PTR;
|
|||
|
||||
u32 spl_boot_device(void)
|
||||
{
|
||||
if (semihosting_enabled())
|
||||
return BOOT_DEVICE_SMH;
|
||||
#ifdef CONFIG_SPL_MMC
|
||||
return BOOT_DEVICE_MMC1;
|
||||
#endif
|
||||
|
|
|
@ -126,6 +126,8 @@ pie_fixup_done:
|
|||
b 0f
|
||||
2: mrs x1, hcr_el2
|
||||
tbnz x1, #34, 1f /* HCR_EL2.E2H */
|
||||
orr x1, x1, #HCR_EL2_AMO_EL2 /* Route SErrors to EL2 */
|
||||
msr hcr_el2, x1
|
||||
set_vbar vbar_el2, x0
|
||||
mov x0, #0x33ff
|
||||
msr cptr_el2, x0 /* Enable FP/SIMD */
|
||||
|
@ -134,6 +136,7 @@ pie_fixup_done:
|
|||
mov x0, #3 << 20
|
||||
msr cpacr_el1, x0 /* Enable FP/SIMD */
|
||||
0:
|
||||
msr daifclr, #0x4 /* Unmask SError interrupts */
|
||||
|
||||
#ifdef COUNTER_FREQUENCY
|
||||
branch_if_not_highest_el x0, 4f
|
||||
|
@ -172,11 +175,11 @@ pie_fixup_done:
|
|||
bl lowlevel_init
|
||||
|
||||
#if defined(CONFIG_ARMV8_SPIN_TABLE) && !defined(CONFIG_SPL_BUILD)
|
||||
branch_if_master x0, x1, master_cpu
|
||||
branch_if_master x0, master_cpu
|
||||
b spin_table_secondary_jump
|
||||
/* never return */
|
||||
#elif defined(CONFIG_ARMV8_MULTIENTRY)
|
||||
branch_if_master x0, x1, master_cpu
|
||||
branch_if_master x0, master_cpu
|
||||
|
||||
/*
|
||||
* Slave CPUs
|
||||
|
@ -189,6 +192,7 @@ slave_cpu:
|
|||
br x0 /* branch to the given address */
|
||||
#endif /* CONFIG_ARMV8_MULTIENTRY */
|
||||
master_cpu:
|
||||
msr SPSel, #1 /* make sure we use SP_ELx */
|
||||
bl _main
|
||||
|
||||
/*-----------------------------------------------------------------------*/
|
||||
|
@ -301,7 +305,7 @@ WEAK(lowlevel_init)
|
|||
#endif
|
||||
|
||||
#ifdef CONFIG_ARMV8_MULTIENTRY
|
||||
branch_if_master x0, x1, 2f
|
||||
branch_if_master x0, 2f
|
||||
|
||||
/*
|
||||
* Slave should wait for master clearing spin table.
|
||||
|
|
|
@ -350,6 +350,7 @@ dtb-$(CONFIG_ARCH_ZYNQMP) += \
|
|||
zynqmp-zcu104-revA.dtb \
|
||||
zynqmp-zcu104-revC.dtb \
|
||||
zynqmp-zcu106-revA.dtb \
|
||||
zynqmp-zcu106-rev1.0.dtb \
|
||||
zynqmp-zcu111-revA.dtb \
|
||||
zynqmp-zcu1275-revA.dtb \
|
||||
zynqmp-zcu1275-revB.dtb \
|
||||
|
@ -1045,7 +1046,7 @@ dtb-$(CONFIG_TARGET_OMAP5_UEVM) += \
|
|||
omap5-uevm.dtb
|
||||
|
||||
dtb-$(CONFIG_TARGET_SAMA7G5EK) += \
|
||||
sama7g5ek.dtb
|
||||
at91-sama7g5ek.dtb
|
||||
|
||||
dtb-$(CONFIG_TARGET_SAMA5D2_PTC_EK) += \
|
||||
at91-sama5d2_ptc_ek.dtb
|
||||
|
@ -1105,6 +1106,9 @@ dtb-$(CONFIG_ARCH_BCM63158) += \
|
|||
dtb-$(CONFIG_ARCH_BCM68360) += \
|
||||
bcm968360bg.dtb
|
||||
|
||||
dtb-$(CONFIG_ARCH_BCM6753) += \
|
||||
bcm96753ref.dtb
|
||||
|
||||
dtb-$(CONFIG_ARCH_BCM6858) += \
|
||||
bcm968580xref.dtb
|
||||
|
||||
|
@ -1181,11 +1185,14 @@ 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_BASE_FVP) += fvp-base-revc.dtb
|
||||
dtb-$(CONFIG_TARGET_VEXPRESS64_BASER_FVP) += arm_fvp.dtb
|
||||
dtb-$(CONFIG_TARGET_VEXPRESS64_JUNO) += juno-r2.dtb
|
||||
|
||||
dtb-$(CONFIG_TARGET_TOTAL_COMPUTE) += total_compute.dtb
|
||||
|
||||
dtb-$(CONFIG_TARGET_DURIAN) += phytium-durian.dtb
|
||||
dtb-$(CONFIG_TARGET_POMELO) += phytium-pomelo.dtb
|
||||
|
||||
dtb-$(CONFIG_TARGET_PRESIDIO_ASIC) += ca-presidio-engboard.dtb
|
||||
|
||||
|
|
|
@ -40,6 +40,9 @@
|
|||
ethernet1 = &cpsw_emac1;
|
||||
spi0 = &spi0;
|
||||
spi1 = &spi1;
|
||||
mmc0 = &mmc1;
|
||||
mmc1 = &mmc2;
|
||||
mmc2 = &mmc3;
|
||||
};
|
||||
|
||||
cpus {
|
||||
|
@ -301,6 +304,35 @@
|
|||
};
|
||||
};
|
||||
|
||||
target-module@47810000 {
|
||||
compatible = "ti,sysc-omap2", "ti,sysc";
|
||||
reg = <0x478102fc 0x4>,
|
||||
<0x47810110 0x4>,
|
||||
<0x47810114 0x4>;
|
||||
reg-names = "rev", "sysc", "syss";
|
||||
ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
|
||||
SYSC_OMAP2_ENAWAKEUP |
|
||||
SYSC_OMAP2_SOFTRESET |
|
||||
SYSC_OMAP2_AUTOIDLE)>;
|
||||
ti,sysc-sidle = <SYSC_IDLE_FORCE>,
|
||||
<SYSC_IDLE_NO>,
|
||||
<SYSC_IDLE_SMART>;
|
||||
ti,syss-mask = <1>;
|
||||
clocks = <&l3s_clkctrl AM3_L3S_MMC3_CLKCTRL 0>;
|
||||
clock-names = "fck";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges = <0x0 0x47810000 0x1000>;
|
||||
|
||||
mmc3: mmc@0 {
|
||||
compatible = "ti,am335-sdhci";
|
||||
ti,needs-special-reset;
|
||||
interrupts = <29>;
|
||||
reg = <0x0 0x1000>;
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
|
||||
i2c0: i2c@44e0b000 {
|
||||
compatible = "ti,omap4-i2c";
|
||||
#address-cells = <1>;
|
||||
|
@ -357,15 +389,6 @@
|
|||
status = "disabled";
|
||||
};
|
||||
|
||||
mmc3: mmc@47810000 {
|
||||
compatible = "ti,omap4-hsmmc";
|
||||
ti,hwmods = "mmc3";
|
||||
ti,needs-special-reset;
|
||||
interrupts = <29>;
|
||||
reg = <0x47810000 0x1000>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
wdt2: wdt@44e35000 {
|
||||
compatible = "ti,omap3-wdt";
|
||||
ti,hwmods = "wd_timer2";
|
||||
|
|
|
@ -37,7 +37,18 @@
|
|||
/delete-property/ u-boot,dm-spl;
|
||||
};
|
||||
|
||||
/delete-node/ &uart1;
|
||||
/delete-node/ &uart2;
|
||||
/delete-node/ &mmc2;
|
||||
/delete-node/ &mmc3;
|
||||
&mmc2 {
|
||||
/delete-property/ u-boot,dm-spl;
|
||||
};
|
||||
|
||||
&mmc3 {
|
||||
/delete-property/ u-boot,dm-spl;
|
||||
};
|
||||
|
||||
&uart1 {
|
||||
/delete-property/ u-boot,dm-spl;
|
||||
};
|
||||
|
||||
&uart2 {
|
||||
/delete-property/ u-boot,dm-spl;
|
||||
};
|
||||
|
|
|
@ -1,9 +1,6 @@
|
|||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* Copyright (C) 2018 Logic PD, Inc - http://www.logicpd.com/
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
* Copyright (C) 2018 Logic PD, Inc - https://www.logicpd.com/
|
||||
*/
|
||||
|
||||
#include <dt-bindings/input/input.h>
|
||||
|
|
|
@ -1,9 +1,6 @@
|
|||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
* Copyright (C) 2011 Texas Instruments Incorporated - https://www.ti.com/
|
||||
*/
|
||||
/dts-v1/;
|
||||
|
||||
|
@ -127,10 +124,11 @@
|
|||
};
|
||||
|
||||
lcd0: display@0 {
|
||||
compatible = "panel-dpi";
|
||||
/* This isn't the exact LCD, but the timings meet spec */
|
||||
/* To make it work, set CONFIG_OMAP2_DSS_MIN_FCK_PER_PCK=4 */
|
||||
compatible = "newhaven,nhd-4.3-480272ef-atxl";
|
||||
label = "15";
|
||||
status = "okay";
|
||||
pinctrl-names = "default";
|
||||
backlight = <&bl>;
|
||||
enable-gpios = <&gpio6 16 GPIO_ACTIVE_HIGH>; /* gpio176, lcd INI */
|
||||
vcc-supply = <&vdd_io_reg>;
|
||||
|
||||
|
@ -139,22 +137,6 @@
|
|||
remote-endpoint = <&dpi_out>;
|
||||
};
|
||||
};
|
||||
|
||||
panel-timing {
|
||||
clock-frequency = <9000000>;
|
||||
hactive = <480>;
|
||||
vactive = <272>;
|
||||
hfront-porch = <3>;
|
||||
hback-porch = <2>;
|
||||
hsync-len = <42>;
|
||||
vback-porch = <3>;
|
||||
vfront-porch = <4>;
|
||||
vsync-len = <11>;
|
||||
hsync-active = <0>;
|
||||
vsync-active = <0>;
|
||||
de-active = <1>;
|
||||
pixelclk-active = <1>;
|
||||
};
|
||||
};
|
||||
|
||||
bl: backlight {
|
||||
|
@ -174,10 +156,13 @@
|
|||
pinctrl-0 = <&pwm_pins>;
|
||||
ti,timers = <&timer11>;
|
||||
#pwm-cells = <3>;
|
||||
ti,clock-source = <0x01>;
|
||||
};
|
||||
|
||||
/* HS USB Host PHY on PORT 1 */
|
||||
hsusb1_phy: hsusb1_phy {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&hsusb1_rst_pins>;
|
||||
compatible = "usb-nop-xceiv";
|
||||
reset-gpios = <&gpio2 25 GPIO_ACTIVE_LOW>; /* gpio_57 */
|
||||
#phy-cells = <0>;
|
||||
|
@ -185,7 +170,9 @@
|
|||
};
|
||||
|
||||
&davinci_emac {
|
||||
status = "okay";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <ðernet_pins>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&davinci_mdio {
|
||||
|
@ -240,6 +227,8 @@
|
|||
};
|
||||
|
||||
&usbhshost {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&hsusb1_pins>;
|
||||
port1-mode = "ehci-phy";
|
||||
};
|
||||
|
||||
|
@ -248,8 +237,21 @@
|
|||
};
|
||||
|
||||
&omap3_pmx_core {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&hsusb1_rst_pins>;
|
||||
|
||||
ethernet_pins: pinmux_ethernet_pins {
|
||||
pinctrl-single,pins = <
|
||||
OMAP3_CORE1_IOPAD(0x21fe, PIN_INPUT | MUX_MODE0) /* rmii_mdio_data */
|
||||
OMAP3_CORE1_IOPAD(0x2200, MUX_MODE0) /* rmii_mdio_clk */
|
||||
OMAP3_CORE1_IOPAD(0x2202, PIN_INPUT_PULLDOWN | MUX_MODE0) /* rmii_rxd0 */
|
||||
OMAP3_CORE1_IOPAD(0x2204, PIN_INPUT_PULLDOWN | MUX_MODE0) /* rmii_rxd1 */
|
||||
OMAP3_CORE1_IOPAD(0x2206, PIN_INPUT_PULLDOWN | MUX_MODE0) /* rmii_crs_dv */
|
||||
OMAP3_CORE1_IOPAD(0x2208, PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* rmii_rxer */
|
||||
OMAP3_CORE1_IOPAD(0x220a, PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* rmii_txd0 */
|
||||
OMAP3_CORE1_IOPAD(0x220c, PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* rmii_txd1 */
|
||||
OMAP3_CORE1_IOPAD(0x220e, PIN_OUTPUT_PULLDOWN |MUX_MODE0) /* rmii_txen */
|
||||
OMAP3_CORE1_IOPAD(0x2210, PIN_INPUT_PULLDOWN | MUX_MODE0) /* rmii_50mhz_clk */
|
||||
>;
|
||||
};
|
||||
|
||||
leds_pins: pinmux_leds_pins {
|
||||
pinctrl-single,pins = <
|
||||
|
@ -317,8 +319,6 @@
|
|||
};
|
||||
|
||||
&omap3_pmx_core2 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&hsusb1_pins>;
|
||||
|
||||
hsusb1_pins: pinmux_hsusb1_pins {
|
||||
pinctrl-single,pins = <
|
||||
|
|
|
@ -1,11 +1,8 @@
|
|||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* Copyright (C) 2016 Derald D. Woods <woods.technical@gmail.com>
|
||||
*
|
||||
* Based on am3517-evm.dts
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
|
||||
/ {
|
||||
|
|
11
arch/arm/dts/arm_fvp.dts
Normal file
11
arch/arm/dts/arm_fvp.dts
Normal file
|
@ -0,0 +1,11 @@
|
|||
// SPDX-License-Identifier: GPL-2.0+ OR MIT
|
||||
/*
|
||||
* Empty device tree for the Arm Ltd FVP platform model
|
||||
|
||||
* Copyright 2022 Arm Ltd.
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
|
||||
/ {
|
||||
};
|
|
@ -214,6 +214,7 @@
|
|||
reg = <0x1e780000 0x1000>;
|
||||
interrupts = <20>;
|
||||
gpio-ranges = <&pinctrl 0 0 220>;
|
||||
ngpios = <228>;
|
||||
interrupt-controller;
|
||||
};
|
||||
|
||||
|
|
|
@ -37,6 +37,26 @@
|
|||
};
|
||||
};
|
||||
|
||||
&pwm {
|
||||
status = "okay";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_pwm0_default
|
||||
&pinctrl_pwm1_default
|
||||
&pinctrl_pwm2_default
|
||||
&pinctrl_pwm3_default
|
||||
&pinctrl_pwm4_default
|
||||
&pinctrl_pwm5_default
|
||||
&pinctrl_pwm6_default
|
||||
&pinctrl_pwm7_default
|
||||
&pinctrl_pwm8g1_default
|
||||
&pinctrl_pwm9g1_default
|
||||
&pinctrl_pwm10g1_default
|
||||
&pinctrl_pwm11g1_default
|
||||
&pinctrl_pwm12g1_default
|
||||
&pinctrl_pwm13g1_default
|
||||
&pinctrl_pwm14g1_default>;
|
||||
};
|
||||
|
||||
&uart5 {
|
||||
u-boot,dm-pre-reloc;
|
||||
status = "okay";
|
||||
|
|
|
@ -113,6 +113,21 @@
|
|||
reg = < 0x1e600000 0x100>;
|
||||
};
|
||||
|
||||
pwm_tach: pwm_tach@1e610000 {
|
||||
compatible = "aspeed,ast2600-pwm-tach", "simple-mfd", "syscon";
|
||||
reg = <0x1e610000 0x100>;
|
||||
clocks = <&scu ASPEED_CLK_AHB>;
|
||||
resets = <&rst ASPEED_RESET_PWM>;
|
||||
|
||||
pwm: pwm {
|
||||
compatible = "aspeed,ast2600-pwm";
|
||||
#pwm-cells = <3>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
|
||||
fmc: flash-controller@1e620000 {
|
||||
reg = < 0x1e620000 0xc4
|
||||
0x20000000 0x10000000 >;
|
||||
|
@ -1626,6 +1641,86 @@
|
|||
groups = "PWM7";
|
||||
};
|
||||
|
||||
pinctrl_pwm8g0_default: pwm8g0_default {
|
||||
function = "PWM8G0";
|
||||
groups = "PWM8G0";
|
||||
};
|
||||
|
||||
pinctrl_pwm8g1_default: pwm8g1_default {
|
||||
function = "PWM8G1";
|
||||
groups = "PWM8G1";
|
||||
};
|
||||
|
||||
pinctrl_pwm9g0_default: pwm9g0_default {
|
||||
function = "PWM9G0";
|
||||
groups = "PWM9G0";
|
||||
};
|
||||
|
||||
pinctrl_pwm9g1_default: pwm9g1_default {
|
||||
function = "PWM9G1";
|
||||
groups = "PWM9G1";
|
||||
};
|
||||
|
||||
pinctrl_pwm10g0_default: pwm10g0_default {
|
||||
function = "PWM10G0";
|
||||
groups = "PWM10G0";
|
||||
};
|
||||
|
||||
pinctrl_pwm10g1_default: pwm10g1_default {
|
||||
function = "PWM10G1";
|
||||
groups = "PWM10G1";
|
||||
};
|
||||
|
||||
pinctrl_pwm11g0_default: pwm11g0_default {
|
||||
function = "PWM11G0";
|
||||
groups = "PWM11G0";
|
||||
};
|
||||
|
||||
pinctrl_pwm11g1_default: pwm11g1_default {
|
||||
function = "PWM11G1";
|
||||
groups = "PWM11G1";
|
||||
};
|
||||
|
||||
pinctrl_pwm12g0_default: pwm12g0_default {
|
||||
function = "PWM12G0";
|
||||
groups = "PWM12G0";
|
||||
};
|
||||
|
||||
pinctrl_pwm12g1_default: pwm12g1_default {
|
||||
function = "PWM12G1";
|
||||
groups = "PWM12G1";
|
||||
};
|
||||
|
||||
pinctrl_pwm13g0_default: pwm13g0_default {
|
||||
function = "PWM13G0";
|
||||
groups = "PWM13G0";
|
||||
};
|
||||
|
||||
pinctrl_pwm13g1_default: pwm13g1_default {
|
||||
function = "PWM13G1";
|
||||
groups = "PWM13G1";
|
||||
};
|
||||
|
||||
pinctrl_pwm14g0_default: pwm14g0_default {
|
||||
function = "PWM14G0";
|
||||
groups = "PWM14G0";
|
||||
};
|
||||
|
||||
pinctrl_pwm14g1_default: pwm14g1_default {
|
||||
function = "PWM14G1";
|
||||
groups = "PWM14G1";
|
||||
};
|
||||
|
||||
pinctrl_pwm15g0_default: pwm15g0_default {
|
||||
function = "PWM15G0";
|
||||
groups = "PWM15G0";
|
||||
};
|
||||
|
||||
pinctrl_pwm15g1_default: pwm15g1_default {
|
||||
function = "PWM15G1";
|
||||
groups = "PWM15G1";
|
||||
};
|
||||
|
||||
pinctrl_rgmii1_default: rgmii1_default {
|
||||
function = "RGMII1";
|
||||
groups = "RGMII1";
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
||||
/*
|
||||
* sama7g5ek-u-boot.dts - Device Tree file for SAMA7G5 SoC u-boot properties.
|
||||
* at91-sama7g5ek-u-boot.dtsi - Device Tree file for SAMA7G5 SoC u-boot
|
||||
* properties.
|
||||
*
|
||||
* Copyright (C) 2020 Microchip Technology Inc. and its subsidiaries
|
||||
* Copyright (c) 2020 Microchip Technology Inc. and its subsidiaries
|
||||
*
|
||||
* Author: Eugen Hristev <eugen.hristev@microchip.com>
|
||||
* Author: Claudiu Beznea <claudiu.beznea@microchip.com>
|
||||
* Author: Eugen Hristev <eugen.hristev@microchip.com>
|
||||
* Author: Claudiu Beznea <claudiu.beznea@microchip.com>
|
||||
*
|
||||
*/
|
||||
|
||||
|
@ -14,12 +15,8 @@
|
|||
u-boot,dm-pre-reloc;
|
||||
};
|
||||
|
||||
ahb {
|
||||
soc {
|
||||
u-boot,dm-pre-reloc;
|
||||
|
||||
apb {
|
||||
u-boot,dm-pre-reloc;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -31,18 +28,18 @@
|
|||
u-boot,dm-pre-reloc;
|
||||
};
|
||||
|
||||
&pioA {
|
||||
&pinctrl {
|
||||
u-boot,dm-pre-reloc;
|
||||
|
||||
pinctrl {
|
||||
u-boot,dm-pre-reloc;
|
||||
};
|
||||
};
|
||||
|
||||
&pinctrl_flx3_default {
|
||||
u-boot,dm-pre-reloc;
|
||||
};
|
||||
|
||||
&pioA {
|
||||
u-boot,dm-pre-reloc;
|
||||
};
|
||||
|
||||
&pit64b0 {
|
||||
u-boot,dm-pre-reloc;
|
||||
};
|
||||
|
@ -59,7 +56,7 @@
|
|||
u-boot,dm-pre-reloc;
|
||||
};
|
||||
|
||||
&uart0 {
|
||||
&uart3 {
|
||||
u-boot,dm-pre-reloc;
|
||||
};
|
||||
|
804
arch/arm/dts/at91-sama7g5ek.dts
Normal file
804
arch/arm/dts/at91-sama7g5ek.dts
Normal file
|
@ -0,0 +1,804 @@
|
|||
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
||||
/*
|
||||
* at91-sama7g5ek.dts - Device Tree file for SAMA7G5-EK board
|
||||
*
|
||||
* Copyright (c) 2020 Microchip Technology Inc. and its subsidiaries
|
||||
*
|
||||
* Author: Eugen Hristev <eugen.hristev@microchip.com>
|
||||
* Author: Claudiu Beznea <claudiu.beznea@microchip.com>
|
||||
*
|
||||
*/
|
||||
/dts-v1/;
|
||||
#include "sama7g5-pinfunc.h"
|
||||
#include "sama7g5.dtsi"
|
||||
#include <dt-bindings/mfd/atmel-flexcom.h>
|
||||
#include <dt-bindings/input/input.h>
|
||||
#include <dt-bindings/pinctrl/at91.h>
|
||||
|
||||
/ {
|
||||
model = "Microchip SAMA7G5-EK";
|
||||
compatible = "microchip,sama7g5ek", "microchip,sama7g5", "microchip,sama7";
|
||||
|
||||
chosen {
|
||||
bootargs = "rw root=/dev/mmcblk1p2 rootfstype=ext4 rootwait";
|
||||
stdout-path = "serial0:115200n8";
|
||||
};
|
||||
|
||||
aliases {
|
||||
serial0 = &uart3;
|
||||
serial1 = &uart4;
|
||||
serial2 = &uart7;
|
||||
serial3 = &uart0;
|
||||
i2c0 = &i2c1;
|
||||
i2c1 = &i2c8;
|
||||
i2c2 = &i2c9;
|
||||
};
|
||||
|
||||
clocks {
|
||||
slow_xtal {
|
||||
clock-frequency = <32768>;
|
||||
};
|
||||
|
||||
main_xtal {
|
||||
clock-frequency = <24000000>;
|
||||
};
|
||||
};
|
||||
|
||||
gpio_keys {
|
||||
compatible = "gpio-keys";
|
||||
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_key_gpio_default>;
|
||||
|
||||
bp1 {
|
||||
label = "PB_USER";
|
||||
gpios = <&pioA PIN_PA12 GPIO_ACTIVE_LOW>;
|
||||
linux,code = <KEY_PROG1>;
|
||||
wakeup-source;
|
||||
};
|
||||
};
|
||||
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_led_gpio_default>;
|
||||
status = "okay"; /* Conflict with pwm. */
|
||||
|
||||
red_led {
|
||||
label = "red";
|
||||
gpios = <&pioA PIN_PB8 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
green_led {
|
||||
label = "green";
|
||||
gpios = <&pioA PIN_PA13 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
blue_led {
|
||||
label = "blue";
|
||||
gpios = <&pioA PIN_PD20 GPIO_ACTIVE_HIGH>;
|
||||
linux,default-trigger = "heartbeat";
|
||||
};
|
||||
};
|
||||
|
||||
/* 512 M */
|
||||
memory@60000000 {
|
||||
device_type = "memory";
|
||||
reg = <0x60000000 0x20000000>;
|
||||
};
|
||||
|
||||
sound: sound {
|
||||
compatible = "simple-audio-card";
|
||||
simple-audio-card,name = "sama7g5ek audio";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
simple-audio-card,dai-link@0 {
|
||||
reg = <0>;
|
||||
cpu {
|
||||
sound-dai = <&spdiftx>;
|
||||
};
|
||||
codec {
|
||||
sound-dai = <&spdif_out>;
|
||||
};
|
||||
};
|
||||
simple-audio-card,dai-link@1 {
|
||||
reg = <1>;
|
||||
cpu {
|
||||
sound-dai = <&spdifrx>;
|
||||
};
|
||||
codec {
|
||||
sound-dai = <&spdif_in>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
spdif_in: spdif-in {
|
||||
#sound-dai-cells = <0>;
|
||||
compatible = "linux,spdif-dir";
|
||||
};
|
||||
|
||||
spdif_out: spdif-out {
|
||||
#sound-dai-cells = <0>;
|
||||
compatible = "linux,spdif-dit";
|
||||
};
|
||||
};
|
||||
|
||||
&adc {
|
||||
vddana-supply = <&vddout25>;
|
||||
vref-supply = <&vddout25>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_mikrobus1_an_default &pinctrl_mikrobus2_an_default>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&can0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_can0_default>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&can1 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_can1_default>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&cpu0 {
|
||||
cpu-supply = <&vddcpu>;
|
||||
};
|
||||
|
||||
&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;
|
||||
|
||||
at91bootstrap@0 {
|
||||
label = "ospi: at91bootstrap";
|
||||
reg = <0x0 0x40000>;
|
||||
};
|
||||
|
||||
bootloader@40000 {
|
||||
label = "ospi: bootloader";
|
||||
reg = <0x40000 0xc0000>;
|
||||
};
|
||||
|
||||
bootloaderenvred@100000 {
|
||||
label = "ospi: bootloader env redundant";
|
||||
reg = <0x100000 0x40000>;
|
||||
};
|
||||
|
||||
bootloaderenv@140000 {
|
||||
label = "ospi: bootloader env";
|
||||
reg = <0x140000 0x40000>;
|
||||
};
|
||||
|
||||
dtb@180000 {
|
||||
label = "ospi: device tree";
|
||||
reg = <0x180000 0x80000>;
|
||||
};
|
||||
|
||||
kernel@200000 {
|
||||
label = "ospi: kernel";
|
||||
reg = <0x200000 0x600000>;
|
||||
};
|
||||
|
||||
rootfs@800000 {
|
||||
label = "ospi: rootfs";
|
||||
reg = <0x800000 0x7800000>;
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
&dma0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&dma1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&dma2 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&flx0 {
|
||||
atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_USART>;
|
||||
status = "disabled";
|
||||
|
||||
uart0: serial@200 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_flx0_default>;
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
|
||||
&flx1 {
|
||||
atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_TWI>;
|
||||
status = "okay";
|
||||
|
||||
i2c1: i2c@600 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_i2c1_default>;
|
||||
i2c-analog-filter;
|
||||
i2c-digital-filter;
|
||||
i2c-digital-filter-width-ns = <35>;
|
||||
status = "okay";
|
||||
|
||||
mcp16502@5b {
|
||||
compatible = "microchip,mcp16502";
|
||||
reg = <0x5b>;
|
||||
status = "okay";
|
||||
|
||||
regulators {
|
||||
vdd_3v3: VDD_IO {
|
||||
regulator-name = "VDD_IO";
|
||||
regulator-min-microvolt = <1200000>;
|
||||
regulator-max-microvolt = <3700000>;
|
||||
regulator-initial-mode = <2>;
|
||||
regulator-allowed-modes = <2>, <4>;
|
||||
regulator-always-on;
|
||||
|
||||
regulator-state-standby {
|
||||
regulator-on-in-suspend;
|
||||
regulator-suspend-microvolt = <3300000>;
|
||||
regulator-mode = <4>;
|
||||
};
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
regulator-mode = <4>;
|
||||
};
|
||||
};
|
||||
|
||||
vddioddr: VDD_DDR {
|
||||
regulator-name = "VDD_DDR";
|
||||
regulator-min-microvolt = <1300000>;
|
||||
regulator-max-microvolt = <1450000>;
|
||||
regulator-initial-mode = <2>;
|
||||
regulator-allowed-modes = <2>, <4>;
|
||||
regulator-always-on;
|
||||
|
||||
regulator-state-standby {
|
||||
regulator-on-in-suspend;
|
||||
regulator-suspend-microvolt = <1350000>;
|
||||
regulator-mode = <4>;
|
||||
};
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
regulator-suspend-microvolt = <1350000>;
|
||||
regulator-mode = <4>;
|
||||
};
|
||||
};
|
||||
|
||||
vddcore: VDD_CORE {
|
||||
regulator-name = "VDD_CORE";
|
||||
regulator-min-microvolt = <1100000>;
|
||||
regulator-max-microvolt = <1850000>;
|
||||
regulator-initial-mode = <2>;
|
||||
regulator-allowed-modes = <2>, <4>;
|
||||
regulator-always-on;
|
||||
|
||||
regulator-state-standby {
|
||||
regulator-on-in-suspend;
|
||||
regulator-suspend-voltage = <1150000>;
|
||||
regulator-mode = <4>;
|
||||
};
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
regulator-mode = <4>;
|
||||
};
|
||||
};
|
||||
|
||||
vddcpu: VDD_OTHER {
|
||||
regulator-name = "VDD_OTHER";
|
||||
regulator-min-microvolt = <1050000>;
|
||||
regulator-max-microvolt = <1850000>;
|
||||
regulator-initial-mode = <2>;
|
||||
regulator-allowed-modes = <2>, <4>;
|
||||
regulator-ramp-delay = <3125>;
|
||||
regulator-always-on;
|
||||
|
||||
regulator-state-standby {
|
||||
regulator-on-in-suspend;
|
||||
regulator-suspend-voltage = <1050000>;
|
||||
regulator-mode = <4>;
|
||||
};
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
regulator-mode = <4>;
|
||||
};
|
||||
};
|
||||
|
||||
vldo1: LDO1 {
|
||||
regulator-name = "LDO1";
|
||||
regulator-min-microvolt = <1200000>;
|
||||
regulator-max-microvolt = <3700000>;
|
||||
regulator-always-on;
|
||||
|
||||
regulator-state-standby {
|
||||
regulator-suspend-voltage = <1800000>;
|
||||
regulator-on-in-suspend;
|
||||
};
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vldo2: LDO2 {
|
||||
regulator-name = "LDO2";
|
||||
regulator-min-microvolt = <1200000>;
|
||||
regulator-max-microvolt = <3700000>;
|
||||
|
||||
regulator-state-standby {
|
||||
regulator-suspend-voltage = <1800000>;
|
||||
regulator-on-in-suspend;
|
||||
};
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&flx3 {
|
||||
atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_USART>;
|
||||
status = "okay";
|
||||
|
||||
uart3: serial@200 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_flx3_default>;
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
&flx4 {
|
||||
atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_USART>;
|
||||
status = "okay";
|
||||
|
||||
uart4: serial@200 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_flx4_default>;
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
&flx7 {
|
||||
atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_USART>;
|
||||
status = "okay";
|
||||
|
||||
uart7: serial@200 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_flx7_default>;
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
&flx8 {
|
||||
atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_TWI>;
|
||||
status = "okay";
|
||||
|
||||
i2c8: i2c@600 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_i2c8_default>;
|
||||
i2c-analog-filter;
|
||||
i2c-digital-filter;
|
||||
i2c-digital-filter-width-ns = <35>;
|
||||
status = "okay";
|
||||
|
||||
eeprom@52 {
|
||||
compatible = "microchip,24aa02e48";
|
||||
reg = <0x52>;
|
||||
pagesize = <16>;
|
||||
};
|
||||
|
||||
eeprom@53 {
|
||||
compatible = "microchip,24aa02e48";
|
||||
reg = <0x53>;
|
||||
pagesize = <16>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&flx9 {
|
||||
atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_TWI>;
|
||||
status = "okay";
|
||||
|
||||
i2c9: i2c@600 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_i2c9_default>;
|
||||
i2c-analog-filter;
|
||||
i2c-digital-filter;
|
||||
i2c-digital-filter-width-ns = <35>;
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
&flx11 {
|
||||
atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_SPI>;
|
||||
status = "okay";
|
||||
|
||||
spi11: spi@400 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_mikrobus1_spi &pinctrl_mikrobus1_spi_cs>;
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
&gmac0 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_gmac0_default
|
||||
&pinctrl_gmac0_mdio_default
|
||||
&pinctrl_gmac0_txck_default
|
||||
&pinctrl_gmac0_phy_irq>;
|
||||
phy-mode = "rgmii-id";
|
||||
status = "okay";
|
||||
|
||||
ethernet-phy@7 {
|
||||
reg = <0x7>;
|
||||
interrupt-parent = <&pioA>;
|
||||
interrupts = <PIN_PA31 IRQ_TYPE_LEVEL_LOW>;
|
||||
};
|
||||
};
|
||||
|
||||
&gmac1 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_gmac1_default
|
||||
&pinctrl_gmac1_mdio_default
|
||||
&pinctrl_gmac1_phy_irq>;
|
||||
phy-mode = "rmii";
|
||||
status = "okay";
|
||||
|
||||
ethernet-phy@0 {
|
||||
reg = <0x0>;
|
||||
interrupt-parent = <&pioA>;
|
||||
interrupts = <PIN_PA21 IRQ_TYPE_LEVEL_LOW>;
|
||||
};
|
||||
};
|
||||
|
||||
&i2s0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_i2s0_default>;
|
||||
};
|
||||
|
||||
&pioA {
|
||||
|
||||
pinctrl_can0_default: can0_default {
|
||||
pinmux = <PIN_PD12__CANTX0>,
|
||||
<PIN_PD13__CANRX0 >;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
pinctrl_can1_default: can1_default {
|
||||
pinmux = <PIN_PD14__CANTX1>,
|
||||
<PIN_PD15__CANRX1 >;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
pinctrl_flx0_default: flx0_default {
|
||||
pinmux = <PIN_PE3__FLEXCOM0_IO0>,
|
||||
<PIN_PE4__FLEXCOM0_IO1>,
|
||||
<PIN_PE6__FLEXCOM0_IO3>,
|
||||
<PIN_PE7__FLEXCOM0_IO4>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
pinctrl_flx3_default: flx3_default {
|
||||
pinmux = <PIN_PD16__FLEXCOM3_IO0>,
|
||||
<PIN_PD17__FLEXCOM3_IO1>;
|
||||
bias-pull-up;
|
||||
};
|
||||
|
||||
pinctrl_flx4_default: flx4_default {
|
||||
pinmux = <PIN_PD18__FLEXCOM4_IO0>,
|
||||
<PIN_PD19__FLEXCOM4_IO1>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
pinctrl_flx7_default: flx7_default {
|
||||
pinmux = <PIN_PC23__FLEXCOM7_IO0>,
|
||||
<PIN_PC24__FLEXCOM7_IO1>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
pinctrl_gmac0_default: gmac0_default {
|
||||
pinmux = <PIN_PA16__G0_TX0>,
|
||||
<PIN_PA17__G0_TX1>,
|
||||
<PIN_PA26__G0_TX2>,
|
||||
<PIN_PA27__G0_TX3>,
|
||||
<PIN_PA19__G0_RX0>,
|
||||
<PIN_PA20__G0_RX1>,
|
||||
<PIN_PA28__G0_RX2>,
|
||||
<PIN_PA29__G0_RX3>,
|
||||
<PIN_PA15__G0_TXEN>,
|
||||
<PIN_PA30__G0_RXCK>,
|
||||
<PIN_PA18__G0_RXDV>,
|
||||
<PIN_PA25__G0_125CK>;
|
||||
slew-rate = <0>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
pinctrl_gmac0_mdio_default: gmac0_mdio_default {
|
||||
pinmux = <PIN_PA22__G0_MDC>,
|
||||
<PIN_PA23__G0_MDIO>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
pinctrl_gmac0_txck_default: gmac0_txck_default {
|
||||
pinmux = <PIN_PA24__G0_TXCK>;
|
||||
slew-rate = <0>;
|
||||
bias-pull-up;
|
||||
};
|
||||
|
||||
pinctrl_gmac0_phy_irq: gmac0_phy_irq {
|
||||
pinmux = <PIN_PA31__GPIO>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
pinctrl_gmac1_default: gmac1_default {
|
||||
pinmux = <PIN_PD30__G1_TXCK>,
|
||||
<PIN_PD22__G1_TX0>,
|
||||
<PIN_PD23__G1_TX1>,
|
||||
<PIN_PD21__G1_TXEN>,
|
||||
<PIN_PD25__G1_RX0>,
|
||||
<PIN_PD26__G1_RX1>,
|
||||
<PIN_PD27__G1_RXER>,
|
||||
<PIN_PD24__G1_RXDV>;
|
||||
slew-rate = <0>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
pinctrl_gmac1_mdio_default: gmac1_mdio_default {
|
||||
pinmux = <PIN_PD28__G1_MDC>,
|
||||
<PIN_PD29__G1_MDIO>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
pinctrl_gmac1_phy_irq: gmac1_phy_irq {
|
||||
pinmux = <PIN_PA21__GPIO>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
pinctrl_i2c1_default: i2c1_default {
|
||||
pinmux = <PIN_PC9__FLEXCOM1_IO0>,
|
||||
<PIN_PC10__FLEXCOM1_IO1>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
pinctrl_i2c8_default: i2c8_default {
|
||||
pinmux = <PIN_PC14__FLEXCOM8_IO0>,
|
||||
<PIN_PC13__FLEXCOM8_IO1>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
pinctrl_i2c9_default: i2c9_default {
|
||||
pinmux = <PIN_PC18__FLEXCOM9_IO0>,
|
||||
<PIN_PC19__FLEXCOM9_IO1>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
pinctrl_i2s0_default: i2s0_default {
|
||||
pinmux = <PIN_PB23__I2SMCC0_CK>,
|
||||
<PIN_PB24__I2SMCC0_WS>,
|
||||
<PIN_PB25__I2SMCC0_DOUT1>,
|
||||
<PIN_PB26__I2SMCC0_DOUT0>,
|
||||
<PIN_PB27__I2SMCC0_MCK>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
pinctrl_key_gpio_default: key_gpio_default {
|
||||
pinmux = <PIN_PA12__GPIO>;
|
||||
bias-pull-up;
|
||||
};
|
||||
|
||||
pinctrl_led_gpio_default: led_gpio_default {
|
||||
pinmux = <PIN_PA13__GPIO>,
|
||||
<PIN_PB8__GPIO>,
|
||||
<PIN_PD20__GPIO>;
|
||||
bias-pull-up;
|
||||
};
|
||||
|
||||
pinctrl_mikrobus1_an_default: mikrobus1_an_default {
|
||||
pinmux = <PIN_PD0__GPIO>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
pinctrl_mikrobus2_an_default: mikrobus2_an_default {
|
||||
pinmux = <PIN_PD1__GPIO>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
pinctrl_mikrobus1_pwm2_default: mikrobus1_pwm2_default {
|
||||
pinmux = <PIN_PA13__PWMH2>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
pinctrl_mikrobus2_pwm3_default: mikrobus2_pwm3_default {
|
||||
pinmux = <PIN_PD20__PWMH3>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
pinctrl_mikrobus1_spi_cs: mikrobus1_spi_cs {
|
||||
pinmux = <PIN_PB6__FLEXCOM11_IO3>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
pinctrl_mikrobus1_spi: mikrobus1_spi {
|
||||
pinmux = <PIN_PB3__FLEXCOM11_IO0>,
|
||||
<PIN_PB4__FLEXCOM11_IO1>,
|
||||
<PIN_PB5__FLEXCOM11_IO2>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
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_default: sdmmc0_default {
|
||||
pinmux = <PIN_PA1__SDMMC0_CMD>,
|
||||
<PIN_PA3__SDMMC0_DAT0>,
|
||||
<PIN_PA4__SDMMC0_DAT1>,
|
||||
<PIN_PA5__SDMMC0_DAT2>,
|
||||
<PIN_PA6__SDMMC0_DAT3>,
|
||||
<PIN_PA7__SDMMC0_DAT4>,
|
||||
<PIN_PA8__SDMMC0_DAT5>,
|
||||
<PIN_PA9__SDMMC0_DAT6>,
|
||||
<PIN_PA10__SDMMC0_DAT7>,
|
||||
<PIN_PA0__SDMMC0_CK>,
|
||||
<PIN_PA2__SDMMC0_RSTN>,
|
||||
<PIN_PA14__SDMMC0_CD>,
|
||||
<PIN_PA11__SDMMC0_DS>;
|
||||
slew-rate = <0>;
|
||||
bias-pull-up;
|
||||
};
|
||||
|
||||
pinctrl_sdmmc1_default: sdmmc1_default {
|
||||
pinmux = <PIN_PB29__SDMMC1_CMD>,
|
||||
<PIN_PB31__SDMMC1_DAT0>,
|
||||
<PIN_PC0__SDMMC1_DAT1>,
|
||||
<PIN_PC1__SDMMC1_DAT2>,
|
||||
<PIN_PC2__SDMMC1_DAT3>,
|
||||
<PIN_PB30__SDMMC1_CK>,
|
||||
<PIN_PB28__SDMMC1_RSTN>,
|
||||
<PIN_PC5__SDMMC1_1V8SEL>,
|
||||
<PIN_PC4__SDMMC1_CD>;
|
||||
slew-rate = <0>;
|
||||
bias-pull-up;
|
||||
};
|
||||
|
||||
pinctrl_sdmmc2_default: sdmmc2_default {
|
||||
pinmux = <PIN_PD3__SDMMC2_CMD>,
|
||||
<PIN_PD5__SDMMC2_DAT0>,
|
||||
<PIN_PD6__SDMMC2_DAT1>,
|
||||
<PIN_PD7__SDMMC2_DAT2>,
|
||||
<PIN_PD8__SDMMC2_DAT3>,
|
||||
<PIN_PD4__SDMMC2_CK>;
|
||||
slew-rate = <0>;
|
||||
bias-pull-up;
|
||||
};
|
||||
|
||||
pinctrl_spdifrx_default: spdifrx_default {
|
||||
pinmux = <PIN_PB0__SPDIF_RX>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
pinctrl_spdiftx_default: spdiftx_default {
|
||||
pinmux = <PIN_PB1__SPDIF_TX>;
|
||||
bias-disable;
|
||||
};
|
||||
};
|
||||
|
||||
&pwm {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_mikrobus1_pwm2_default &pinctrl_mikrobus2_pwm3_default>;
|
||||
status = "disabled"; /* Conflict with leds. */
|
||||
};
|
||||
|
||||
&rtt {
|
||||
atmel,rtt-rtc-time-reg = <&gpbr 0x0>;
|
||||
};
|
||||
|
||||
&sdmmc0 {
|
||||
bus-width = <8>;
|
||||
non-removable;
|
||||
no-1-8-v;
|
||||
sdhci-caps-mask = <0x0 0x00200000>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_sdmmc0_default>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&sdmmc1 {
|
||||
bus-width = <4>;
|
||||
no-1-8-v;
|
||||
sdhci-caps-mask = <0x0 0x00200000>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_sdmmc1_default>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&sdmmc2 {
|
||||
bus-width = <4>;
|
||||
no-1-8-v;
|
||||
sdhci-caps-mask = <0x0 0x00200000>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_sdmmc2_default>;
|
||||
};
|
||||
|
||||
&shdwc {
|
||||
atmel,shdwc-debouncer = <976>;
|
||||
status = "okay";
|
||||
|
||||
input@0 {
|
||||
reg = <0>;
|
||||
};
|
||||
};
|
||||
|
||||
&spdifrx {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_spdifrx_default>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&spdiftx {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_spdiftx_default>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&tcb0 {
|
||||
timer0: timer@0 {
|
||||
compatible = "atmel,tcb-timer";
|
||||
reg = <0>;
|
||||
};
|
||||
|
||||
timer1: timer@1 {
|
||||
compatible = "atmel,tcb-timer";
|
||||
reg = <1>;
|
||||
};
|
||||
};
|
||||
|
||||
&trng {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&vddout25 {
|
||||
vin-supply = <&vdd_3v3>;
|
||||
status = "okay";
|
||||
};
|
208
arch/arm/dts/bcm6753.dtsi
Normal file
208
arch/arm/dts/bcm6753.dtsi
Normal file
|
@ -0,0 +1,208 @@
|
|||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* Copyright (C) 2022 Philippe Reynes <philippe.reynes@softathome.com>
|
||||
*/
|
||||
|
||||
#include "skeleton.dtsi"
|
||||
|
||||
/ {
|
||||
compatible = "brcm,bcm6753";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
cpus {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
u-boot,dm-pre-reloc;
|
||||
|
||||
cpu0: cpu@0 {
|
||||
compatible = "arm,cortex-a7";
|
||||
device_type = "cpu";
|
||||
reg = <0x0>;
|
||||
next-level-cache = <&l2>;
|
||||
u-boot,dm-pre-reloc;
|
||||
};
|
||||
|
||||
cpu1: cpu@1 {
|
||||
compatible = "arm,cortex-a7";
|
||||
device_type = "cpu";
|
||||
reg = <0x1>;
|
||||
next-level-cache = <&l2>;
|
||||
u-boot,dm-pre-reloc;
|
||||
};
|
||||
|
||||
cpu2: cpu@2 {
|
||||
compatible = "arm,cortex-a7";
|
||||
device_type = "cpu";
|
||||
reg = <0x2>;
|
||||
next-level-cache = <&l2>;
|
||||
u-boot,dm-pre-reloc;
|
||||
};
|
||||
|
||||
l2: l2-cache0 {
|
||||
compatible = "cache";
|
||||
u-boot,dm-pre-reloc;
|
||||
};
|
||||
};
|
||||
|
||||
clocks {
|
||||
compatible = "simple-bus";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges;
|
||||
u-boot,dm-pre-reloc;
|
||||
|
||||
periph_osc: periph-osc {
|
||||
compatible = "fixed-clock";
|
||||
#clock-cells = <0>;
|
||||
clock-frequency = <200000000>;
|
||||
u-boot,dm-pre-reloc;
|
||||
};
|
||||
|
||||
hsspi_pll: hsspi-pll {
|
||||
compatible = "fixed-factor-clock";
|
||||
#clock-cells = <0>;
|
||||
clocks = <&periph_osc>;
|
||||
clock-mult = <2>;
|
||||
clock-div = <1>;
|
||||
};
|
||||
|
||||
refclk50mhz: refclk50mhz {
|
||||
compatible = "fixed-clock";
|
||||
#clock-cells = <0>;
|
||||
clock-frequency = <50000000>;
|
||||
};
|
||||
};
|
||||
|
||||
ubus {
|
||||
compatible = "simple-bus";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
u-boot,dm-pre-reloc;
|
||||
|
||||
uart0: serial@ff812000 {
|
||||
compatible = "arm,pl011", "arm,primecell";
|
||||
reg = <0xff812000 0x1000>;
|
||||
clock = <50000000>;
|
||||
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
wdt1: watchdog@ff800480 {
|
||||
compatible = "brcm,bcm6345-wdt";
|
||||
reg = <0xff800480 0x14>;
|
||||
clocks = <&refclk50mhz>;
|
||||
};
|
||||
|
||||
wdt2: watchdog@ff8004c0 {
|
||||
compatible = "brcm,bcm6345-wdt";
|
||||
reg = <0xff8004c0 0x14>;
|
||||
clocks = <&refclk50mhz>;
|
||||
};
|
||||
|
||||
wdt-reboot {
|
||||
compatible = "wdt-reboot";
|
||||
wdt = <&wdt1>;
|
||||
};
|
||||
|
||||
gpio0: gpio-controller@0xff800500 {
|
||||
compatible = "brcm,bcm6345-gpio";
|
||||
reg = <0xff800500 0x4>,
|
||||
<0xff800520 0x4>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
gpio1: gpio-controller@0xff800504 {
|
||||
compatible = "brcm,bcm6345-gpio";
|
||||
reg = <0xff800504 0x4>,
|
||||
<0xff800524 0x4>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
gpio2: gpio-controller@0xff800508 {
|
||||
compatible = "brcm,bcm6345-gpio";
|
||||
reg = <0xff800508 0x4>,
|
||||
<0xff800528 0x4>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
gpio3: gpio-controller@0xff80050c {
|
||||
compatible = "brcm,bcm6345-gpio";
|
||||
reg = <0xff80050c 0x4>,
|
||||
<0xff80052c 0x4>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
gpio4: gpio-controller@0xff800510 {
|
||||
compatible = "brcm,bcm6345-gpio";
|
||||
reg = <0xff800510 0x4>,
|
||||
<0xff800530 0x4>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
gpio5: gpio-controller@0xff800514 {
|
||||
compatible = "brcm,bcm6345-gpio";
|
||||
reg = <0xff800514 0x4>,
|
||||
<0xff800534 0x4>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
gpio6: gpio-controller@0xff800518 {
|
||||
compatible = "brcm,bcm6345-gpio";
|
||||
reg = <0xff800518 0x4>,
|
||||
<0xff800538 0x4>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
gpio7: gpio-controller@0xff80051c {
|
||||
compatible = "brcm,bcm6345-gpio";
|
||||
reg = <0xff80051c 0x4>,
|
||||
<0xff80053c 0x4>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
nand: nand-controller@ff801800 {
|
||||
compatible = "brcm,nand-bcm6753",
|
||||
"brcm,brcmnand-v5.0",
|
||||
"brcm,brcmnand";
|
||||
reg-names = "nand", "nand-int-base", "nand-cache";
|
||||
reg = <0xff801800 0x180>,
|
||||
<0xff802000 0x10>,
|
||||
<0xff801c00 0x200>;
|
||||
parameter-page-big-endian = <0>;
|
||||
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
leds: led-controller@ff803000 {
|
||||
compatible = "brcm,bcm6753-leds";
|
||||
reg = <0xff803000 0x3480>;
|
||||
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
};
|
98
arch/arm/dts/bcm96753ref.dts
Normal file
98
arch/arm/dts/bcm96753ref.dts
Normal file
|
@ -0,0 +1,98 @@
|
|||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* Copyright (C) 2022 Philippe Reynes <philippe.reynes@softathome.com>
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
|
||||
#include "bcm6753.dtsi"
|
||||
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
|
||||
/ {
|
||||
model = "Broadcom bcm6753ref";
|
||||
compatible = "broadcom,bcm6753ref", "brcm,bcm6753";
|
||||
|
||||
aliases {
|
||||
serial0 = &uart0;
|
||||
};
|
||||
|
||||
chosen {
|
||||
stdout-path = "serial0:115200n8";
|
||||
};
|
||||
|
||||
memory {
|
||||
device_type = "memory";
|
||||
reg = <0x0 0x40000000>;
|
||||
};
|
||||
};
|
||||
|
||||
&uart0 {
|
||||
u-boot,dm-pre-reloc;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&gpio0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&gpio1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&gpio2 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&gpio3 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&gpio4 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&gpio5 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&gpio6 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&gpio7 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&nand {
|
||||
status = "okay";
|
||||
write-protect = <0>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
nandcs@0 {
|
||||
compatible = "brcm,nandcs";
|
||||
reg = <0>;
|
||||
nand-ecc-strength = <4>;
|
||||
nand-ecc-step-size = <512>;
|
||||
brcm,nand-oob-sector-size = <16>;
|
||||
};
|
||||
};
|
||||
|
||||
&leds {
|
||||
status = "okay";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
brcm,serial-led-en-pol;
|
||||
brcm,serial-led-data-ppol;
|
||||
|
||||
led@0 {
|
||||
reg = <0>;
|
||||
label = "led_red";
|
||||
};
|
||||
|
||||
led@1 {
|
||||
reg = <1>;
|
||||
label = "led_green";
|
||||
};
|
||||
};
|
|
@ -50,7 +50,7 @@
|
|||
ps-clk-frequency = <33333333>;
|
||||
};
|
||||
|
||||
&nand0 {
|
||||
&nfc0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
|
|
246
arch/arm/dts/fvp-base-revc.dts
Normal file
246
arch/arm/dts/fvp-base-revc.dts
Normal file
|
@ -0,0 +1,246 @@
|
|||
// SPDX-License-Identifier: GPL-2.0
|
||||
/*
|
||||
* ARM Ltd. Fast Models
|
||||
*
|
||||
* Architecture Envelope Model (AEM) ARMv8-A
|
||||
* ARMAEMv8AMPCT
|
||||
*
|
||||
* FVP Base RevC
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
|
||||
/memreserve/ 0x80000000 0x00010000;
|
||||
|
||||
#include "rtsm_ve-motherboard.dtsi"
|
||||
#include "rtsm_ve-motherboard-rs2.dtsi"
|
||||
|
||||
/ {
|
||||
model = "FVP Base RevC";
|
||||
compatible = "arm,fvp-base-revc", "arm,vexpress";
|
||||
interrupt-parent = <&gic>;
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
|
||||
chosen { };
|
||||
|
||||
aliases {
|
||||
serial0 = &v2m_serial0;
|
||||
serial1 = &v2m_serial1;
|
||||
serial2 = &v2m_serial2;
|
||||
serial3 = &v2m_serial3;
|
||||
};
|
||||
|
||||
psci {
|
||||
compatible = "arm,psci-0.2";
|
||||
method = "smc";
|
||||
};
|
||||
|
||||
cpus {
|
||||
#address-cells = <2>;
|
||||
#size-cells = <0>;
|
||||
|
||||
cpu0: cpu@0 {
|
||||
device_type = "cpu";
|
||||
compatible = "arm,armv8";
|
||||
reg = <0x0 0x000>;
|
||||
enable-method = "psci";
|
||||
};
|
||||
cpu1: cpu@100 {
|
||||
device_type = "cpu";
|
||||
compatible = "arm,armv8";
|
||||
reg = <0x0 0x100>;
|
||||
enable-method = "psci";
|
||||
};
|
||||
cpu2: cpu@200 {
|
||||
device_type = "cpu";
|
||||
compatible = "arm,armv8";
|
||||
reg = <0x0 0x200>;
|
||||
enable-method = "psci";
|
||||
};
|
||||
cpu3: cpu@300 {
|
||||
device_type = "cpu";
|
||||
compatible = "arm,armv8";
|
||||
reg = <0x0 0x300>;
|
||||
enable-method = "psci";
|
||||
};
|
||||
cpu4: cpu@10000 {
|
||||
device_type = "cpu";
|
||||
compatible = "arm,armv8";
|
||||
reg = <0x0 0x10000>;
|
||||
enable-method = "psci";
|
||||
};
|
||||
cpu5: cpu@10100 {
|
||||
device_type = "cpu";
|
||||
compatible = "arm,armv8";
|
||||
reg = <0x0 0x10100>;
|
||||
enable-method = "psci";
|
||||
};
|
||||
cpu6: cpu@10200 {
|
||||
device_type = "cpu";
|
||||
compatible = "arm,armv8";
|
||||
reg = <0x0 0x10200>;
|
||||
enable-method = "psci";
|
||||
};
|
||||
cpu7: cpu@10300 {
|
||||
device_type = "cpu";
|
||||
compatible = "arm,armv8";
|
||||
reg = <0x0 0x10300>;
|
||||
enable-method = "psci";
|
||||
};
|
||||
};
|
||||
|
||||
memory@80000000 {
|
||||
device_type = "memory";
|
||||
reg = <0x00000000 0x80000000 0 0x80000000>,
|
||||
<0x00000008 0x80000000 0 0x80000000>;
|
||||
};
|
||||
|
||||
reserved-memory {
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
ranges;
|
||||
|
||||
/* Chipselect 2,00000000 is physically at 0x18000000 */
|
||||
vram: vram@18000000 {
|
||||
/* 8 MB of designated video RAM */
|
||||
compatible = "shared-dma-pool";
|
||||
reg = <0x00000000 0x18000000 0 0x00800000>;
|
||||
no-map;
|
||||
};
|
||||
};
|
||||
|
||||
gic: interrupt-controller@2f000000 {
|
||||
compatible = "arm,gic-v3";
|
||||
#interrupt-cells = <3>;
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
ranges;
|
||||
interrupt-controller;
|
||||
reg = <0x0 0x2f000000 0 0x10000>, // GICD
|
||||
<0x0 0x2f100000 0 0x200000>, // GICR
|
||||
<0x0 0x2c000000 0 0x2000>, // GICC
|
||||
<0x0 0x2c010000 0 0x2000>, // GICH
|
||||
<0x0 0x2c02f000 0 0x2000>; // GICV
|
||||
interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
|
||||
|
||||
its: msi-controller@2f020000 {
|
||||
#msi-cells = <1>;
|
||||
compatible = "arm,gic-v3-its";
|
||||
reg = <0x0 0x2f020000 0x0 0x20000>; // GITS
|
||||
msi-controller;
|
||||
};
|
||||
};
|
||||
|
||||
timer {
|
||||
compatible = "arm,armv8-timer";
|
||||
interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>,
|
||||
<GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>,
|
||||
<GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>,
|
||||
<GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>;
|
||||
};
|
||||
|
||||
pmu {
|
||||
compatible = "arm,armv8-pmuv3";
|
||||
interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH>;
|
||||
};
|
||||
|
||||
spe-pmu {
|
||||
compatible = "arm,statistical-profiling-extension-v1";
|
||||
interrupts = <GIC_PPI 5 IRQ_TYPE_LEVEL_HIGH>;
|
||||
};
|
||||
|
||||
pci: pci@40000000 {
|
||||
#address-cells = <0x3>;
|
||||
#size-cells = <0x2>;
|
||||
#interrupt-cells = <0x1>;
|
||||
compatible = "pci-host-ecam-generic";
|
||||
device_type = "pci";
|
||||
bus-range = <0x0 0x1>;
|
||||
reg = <0x0 0x40000000 0x0 0x10000000>;
|
||||
ranges = <0x2000000 0x0 0x50000000 0x0 0x50000000 0x0 0x10000000>;
|
||||
interrupt-map = <0 0 0 1 &gic 0 0 GIC_SPI 168 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 0 0 2 &gic 0 0 GIC_SPI 169 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 0 0 3 &gic 0 0 GIC_SPI 170 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 0 0 4 &gic 0 0 GIC_SPI 171 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupt-map-mask = <0x0 0x0 0x0 0x7>;
|
||||
msi-map = <0x0 &its 0x0 0x10000>;
|
||||
iommu-map = <0x0 &smmu 0x0 0x10000>;
|
||||
|
||||
dma-coherent;
|
||||
};
|
||||
|
||||
smmu: iommu@2b400000 {
|
||||
compatible = "arm,smmu-v3";
|
||||
reg = <0x0 0x2b400000 0x0 0x100000>;
|
||||
interrupts = <GIC_SPI 74 IRQ_TYPE_EDGE_RISING>,
|
||||
<GIC_SPI 79 IRQ_TYPE_EDGE_RISING>,
|
||||
<GIC_SPI 75 IRQ_TYPE_EDGE_RISING>,
|
||||
<GIC_SPI 77 IRQ_TYPE_EDGE_RISING>;
|
||||
interrupt-names = "eventq", "gerror", "priq", "cmdq-sync";
|
||||
dma-coherent;
|
||||
#iommu-cells = <1>;
|
||||
msi-parent = <&its 0x10000>;
|
||||
};
|
||||
|
||||
panel {
|
||||
compatible = "arm,rtsm-display", "panel-dpi";
|
||||
port {
|
||||
panel_in: endpoint {
|
||||
remote-endpoint = <&clcd_pads>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
bus@8000000 {
|
||||
#interrupt-cells = <1>;
|
||||
interrupt-map-mask = <0 0 63>;
|
||||
interrupt-map = <0 0 0 &gic 0 0 GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 0 1 &gic 0 0 GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 0 2 &gic 0 0 GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 0 3 &gic 0 0 GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 0 4 &gic 0 0 GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 0 5 &gic 0 0 GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 0 6 &gic 0 0 GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 0 7 &gic 0 0 GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 0 8 &gic 0 0 GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 0 9 &gic 0 0 GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 0 10 &gic 0 0 GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 0 11 &gic 0 0 GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 0 12 &gic 0 0 GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 0 13 &gic 0 0 GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 0 14 &gic 0 0 GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 0 15 &gic 0 0 GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 0 16 &gic 0 0 GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 0 17 &gic 0 0 GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 0 18 &gic 0 0 GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 0 19 &gic 0 0 GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 0 20 &gic 0 0 GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 0 21 &gic 0 0 GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 0 22 &gic 0 0 GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 0 23 &gic 0 0 GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 0 24 &gic 0 0 GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 0 25 &gic 0 0 GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 0 26 &gic 0 0 GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 0 27 &gic 0 0 GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 0 28 &gic 0 0 GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 0 29 &gic 0 0 GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 0 30 &gic 0 0 GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 0 31 &gic 0 0 GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 0 32 &gic 0 0 GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 0 33 &gic 0 0 GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 0 34 &gic 0 0 GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 0 35 &gic 0 0 GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 0 36 &gic 0 0 GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 0 37 &gic 0 0 GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 0 38 &gic 0 0 GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 0 39 &gic 0 0 GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 0 40 &gic 0 0 GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 0 41 &gic 0 0 GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 0 42 &gic 0 0 GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 0 43 &gic 0 0 GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<0 0 44 &gic 0 0 GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
|
||||
};
|
||||
};
|
|
@ -9,5 +9,19 @@
|
|||
|
||||
/ {
|
||||
model = "LogicPD Zoom OMAP35xx SOM-LV Development Kit";
|
||||
compatible = "logicpd,dm3730-som-lv-devkit", "ti,omap3";
|
||||
compatible = "logicpd,dm3730-som-lv-devkit", "ti,omap3430", "ti,omap3";
|
||||
};
|
||||
|
||||
&omap3_pmx_core2 {
|
||||
|
||||
hsusb2_2_pins: pinmux_hsusb2_2_pins {
|
||||
pinctrl-single,pins = <
|
||||
OMAP3430_CORE2_IOPAD(0x25f0, PIN_OUTPUT | MUX_MODE3) /* etk_d10.hsusb2_clk */
|
||||
OMAP3430_CORE2_IOPAD(0x25f2, PIN_OUTPUT | MUX_MODE3) /* etk_d11.hsusb2_stp */
|
||||
OMAP3430_CORE2_IOPAD(0x25f4, PIN_INPUT_PULLDOWN | MUX_MODE3) /* etk_d12.hsusb2_dir */
|
||||
OMAP3430_CORE2_IOPAD(0x25f6, PIN_INPUT_PULLDOWN | MUX_MODE3) /* etk_d13.hsusb2_nxt */
|
||||
OMAP3430_CORE2_IOPAD(0x25f8, PIN_INPUT_PULLDOWN | MUX_MODE3) /* etk_d14.hsusb2_data0 */
|
||||
OMAP3430_CORE2_IOPAD(0x25fa, PIN_INPUT_PULLDOWN | MUX_MODE3) /* etk_d15.hsusb2_data1 */
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
|
|
@ -11,3 +11,17 @@
|
|||
model = "LogicPD Zoom DM3730 SOM-LV Development Kit";
|
||||
compatible = "logicpd,dm3730-som-lv-devkit", "ti,omap3630", "ti,omap3";
|
||||
};
|
||||
|
||||
&omap3_pmx_core2 {
|
||||
|
||||
hsusb2_2_pins: pinmux_hsusb2_2_pins {
|
||||
pinctrl-single,pins = <
|
||||
OMAP3630_CORE2_IOPAD(0x25f0, PIN_OUTPUT | MUX_MODE3) /* etk_d10.hsusb2_clk */
|
||||
OMAP3630_CORE2_IOPAD(0x25f2, PIN_OUTPUT | MUX_MODE3) /* etk_d11.hsusb2_stp */
|
||||
OMAP3630_CORE2_IOPAD(0x25f4, PIN_INPUT_PULLDOWN | MUX_MODE3) /* etk_d12.hsusb2_dir */
|
||||
OMAP3630_CORE2_IOPAD(0x25f6, PIN_INPUT_PULLDOWN | MUX_MODE3) /* etk_d13.hsusb2_nxt */
|
||||
OMAP3630_CORE2_IOPAD(0x25f8, PIN_INPUT_PULLDOWN | MUX_MODE3) /* etk_d14.hsusb2_data0 */
|
||||
OMAP3630_CORE2_IOPAD(0x25fa, PIN_INPUT_PULLDOWN | MUX_MODE3) /* etk_d15.hsusb2_data1 */
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
|
|
@ -51,6 +51,8 @@
|
|||
|
||||
&mcbsp2 {
|
||||
status = "okay";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&mcbsp2_pins>;
|
||||
};
|
||||
|
||||
&charger {
|
||||
|
@ -77,7 +79,7 @@
|
|||
};
|
||||
|
||||
&dss {
|
||||
status = "ok";
|
||||
status = "okay";
|
||||
vdds_dsi-supply = <&vpll2>;
|
||||
vdda_video-supply = <&video_reg>;
|
||||
pinctrl-names = "default";
|
||||
|
@ -102,35 +104,18 @@
|
|||
regulator-max-microvolt = <3300000>;
|
||||
};
|
||||
|
||||
lcd0: display@0 {
|
||||
compatible = "panel-dpi";
|
||||
label = "28";
|
||||
status = "okay";
|
||||
/* default-on; */
|
||||
lcd0: display {
|
||||
/* This isn't the exact LCD, but the timings meet spec */
|
||||
compatible = "logicpd,type28";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&lcd_enable_pin>;
|
||||
enable-gpios = <&gpio5 27 GPIO_ACTIVE_HIGH>; /* gpio155, lcd INI */
|
||||
backlight = <&bl>;
|
||||
enable-gpios = <&gpio5 27 GPIO_ACTIVE_HIGH>;
|
||||
port {
|
||||
lcd_in: endpoint {
|
||||
remote-endpoint = <&dpi_out>;
|
||||
};
|
||||
};
|
||||
|
||||
panel-timing {
|
||||
clock-frequency = <9000000>;
|
||||
hactive = <480>;
|
||||
vactive = <272>;
|
||||
hfront-porch = <3>;
|
||||
hback-porch = <2>;
|
||||
hsync-len = <42>;
|
||||
vback-porch = <3>;
|
||||
vfront-porch = <2>;
|
||||
vsync-len = <11>;
|
||||
hsync-active = <1>;
|
||||
vsync-active = <1>;
|
||||
de-active = <1>;
|
||||
pixelclk-active = <0>;
|
||||
};
|
||||
};
|
||||
|
||||
bl: backlight {
|
||||
|
|
|
@ -27,6 +27,8 @@
|
|||
|
||||
/* HS USB Host PHY on PORT 1 */
|
||||
hsusb2_phy: hsusb2_phy {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&hsusb2_reset_pin>;
|
||||
compatible = "usb-nop-xceiv";
|
||||
reset-gpios = <&gpio1 4 GPIO_ACTIVE_LOW>; /* gpio_4 */
|
||||
#phy-cells = <0>;
|
||||
|
@ -144,6 +146,8 @@
|
|||
};
|
||||
|
||||
&usbhshost {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&hsusb2_pins>, <&hsusb2_2_pins>;
|
||||
port2-mode = "ehci-phy";
|
||||
};
|
||||
|
||||
|
@ -153,8 +157,6 @@
|
|||
|
||||
|
||||
&omap3_pmx_core {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&hsusb2_pins>;
|
||||
|
||||
mmc3_pins: pinmux_mm3_pins {
|
||||
pinctrl-single,pins = <
|
||||
|
@ -166,6 +168,7 @@
|
|||
OMAP3_CORE1_IOPAD(0x21d2, PIN_INPUT_PULLUP | MUX_MODE3) /* mcspi1_cs2.sdmmc_clk */
|
||||
>;
|
||||
};
|
||||
|
||||
mcbsp2_pins: pinmux_mcbsp2_pins {
|
||||
pinctrl-single,pins = <
|
||||
OMAP3_CORE1_IOPAD(0x213c, PIN_INPUT | MUX_MODE0) /* mcbsp2_fsx */
|
||||
|
@ -183,6 +186,7 @@
|
|||
OMAP3_CORE1_IOPAD(0x2198, PIN_OUTPUT | MUX_MODE4) /* GPIO_162,BT_EN */
|
||||
>;
|
||||
};
|
||||
|
||||
mcspi1_pins: pinmux_mcspi1_pins {
|
||||
pinctrl-single,pins = <
|
||||
OMAP3_CORE1_IOPAD(0x21c8, PIN_INPUT | MUX_MODE0) /* mcspi1_clk.mcspi1_clk */
|
||||
|
@ -250,13 +254,13 @@
|
|||
};
|
||||
|
||||
&omap3_pmx_wkup {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&hsusb2_reset_pin>;
|
||||
|
||||
hsusb2_reset_pin: pinmux_hsusb1_reset_pin {
|
||||
pinctrl-single,pins = <
|
||||
OMAP3_WKUP_IOPAD(0x2a0e, PIN_OUTPUT | MUX_MODE4) /* sys_boot2.gpio_4 */
|
||||
>;
|
||||
};
|
||||
|
||||
wl127x_gpio: pinmux_wl127x_gpio_pin {
|
||||
pinctrl-single,pins = <
|
||||
OMAP3_WKUP_IOPAD(0x2a0a, PIN_INPUT | MUX_MODE4) /* sys_boot0.gpio_2 */
|
||||
|
@ -265,21 +269,6 @@
|
|||
};
|
||||
};
|
||||
|
||||
&omap3_pmx_core2 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&hsusb2_2_pins>;
|
||||
hsusb2_2_pins: pinmux_hsusb2_2_pins {
|
||||
pinctrl-single,pins = <
|
||||
OMAP3630_CORE2_IOPAD(0x25f0, PIN_OUTPUT | MUX_MODE3) /* etk_d10.hsusb2_clk */
|
||||
OMAP3630_CORE2_IOPAD(0x25f2, PIN_OUTPUT | MUX_MODE3) /* etk_d11.hsusb2_stp */
|
||||
OMAP3630_CORE2_IOPAD(0x25f4, PIN_INPUT_PULLDOWN | MUX_MODE3) /* etk_d12.hsusb2_dir */
|
||||
OMAP3630_CORE2_IOPAD(0x25f6, PIN_INPUT_PULLDOWN | MUX_MODE3) /* etk_d13.hsusb2_nxt */
|
||||
OMAP3630_CORE2_IOPAD(0x25f8, PIN_INPUT_PULLDOWN | MUX_MODE3) /* etk_d14.hsusb2_data0 */
|
||||
OMAP3630_CORE2_IOPAD(0x25fa, PIN_INPUT_PULLDOWN | MUX_MODE3) /* etk_d15.hsusb2_data1 */
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
||||
&uart2 {
|
||||
interrupts-extended = <&intc 73 &omap3_pmx_core OMAP3_UART2_RX>;
|
||||
pinctrl-names = "default";
|
||||
|
|
|
@ -9,5 +9,13 @@
|
|||
|
||||
/ {
|
||||
model = "LogicPD Zoom OMAP35xx Torpedo Development Kit";
|
||||
compatible = "logicpd,dm3730-torpedo-devkit", "ti,omap3";
|
||||
compatible = "logicpd,dm3730-torpedo-devkit", "ti,omap3430", "ti,omap3";
|
||||
};
|
||||
|
||||
&omap3_pmx_core {
|
||||
isp1763_pins: pinmux_isp1763_pins {
|
||||
pinctrl-single,pins = <
|
||||
OMAP3_CORE1_IOPAD(0x2154, PIN_INPUT_PULLUP | MUX_MODE4) /* sdmmc1_dat6.gpio_128 */
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
|
|
@ -50,6 +50,20 @@
|
|||
};
|
||||
};
|
||||
|
||||
&uart2 {
|
||||
/delete-property/dma-names;
|
||||
bluetooth {
|
||||
compatible = "ti,wl1283-st";
|
||||
enable-gpios = <&gpio6 2 GPIO_ACTIVE_HIGH>; /* gpio 162 */
|
||||
max-speed = <3000000>;
|
||||
};
|
||||
};
|
||||
|
||||
/* The DM3730 has a faster L3 than OMAP35, so increase pixel clock */
|
||||
&mt9p031_out {
|
||||
pixel-clock-frequency = <90000000>;
|
||||
};
|
||||
|
||||
&omap3_pmx_core {
|
||||
mmc3_pins: pinmux_mm3_pins {
|
||||
pinctrl-single,pins = <
|
||||
|
@ -71,3 +85,12 @@
|
|||
>;
|
||||
};
|
||||
};
|
||||
|
||||
/* The gpio muxing between omap3530 and dm3730 is different for GPIO_128 */
|
||||
&omap3_pmx_wkup {
|
||||
isp1763_pins: pinmux_isp1763_pins {
|
||||
pinctrl-single,pins = <
|
||||
OMAP3_WKUP_IOPAD(0x2a58, PIN_INPUT_PULLUP | MUX_MODE4) /* reserved.gpio_128 */
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
|
|
@ -65,6 +65,7 @@
|
|||
pinctrl-0 = <&pwm_pins>;
|
||||
ti,timers = <&timer10>;
|
||||
#pwm-cells = <3>;
|
||||
ti,clock-source = <0x01>;
|
||||
};
|
||||
|
||||
};
|
||||
|
@ -80,6 +81,8 @@
|
|||
};
|
||||
|
||||
&mcbsp2 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&mcbsp2_pins>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
|
@ -90,7 +93,8 @@
|
|||
|
||||
&gpmc {
|
||||
ranges = <0 0 0x30000000 0x1000000 /* CS0: 16MB for NAND */
|
||||
1 0 0x2c000000 0x1000000>; /* CS1: 16MB for LAN9221 */
|
||||
1 0 0x2c000000 0x1000000 /* CS1: 16MB for LAN9221 */
|
||||
6 0 0x28000000 0x1000000>; /* CS6: 16MB for ISP1763 */
|
||||
|
||||
ethernet@gpmc {
|
||||
pinctrl-names = "default";
|
||||
|
@ -99,16 +103,60 @@
|
|||
interrupts = <1 IRQ_TYPE_LEVEL_LOW>; /* gpio129 */
|
||||
reg = <1 0 0xff>;
|
||||
};
|
||||
|
||||
usb@6,0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&isp1763_pins>;
|
||||
compatible = "nxp,usb-isp1763";
|
||||
reg = <0x6 0x0 0xff>;
|
||||
interrupt-parent = <&gpio5>;
|
||||
interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-names = "host";
|
||||
bus-width = <16>;
|
||||
dr_mode = "host";
|
||||
gpmc,mux-add-data = <0>;
|
||||
gpmc,device-width = <2>;
|
||||
gpmc,wait-pin = <0>;
|
||||
gpmc,burst-length = <4>;
|
||||
gpmc,cycle2cycle-samecsen = <1>;
|
||||
gpmc,cycle2cycle-diffcsen = <1>;
|
||||
gpmc,cs-on-ns = <0>;
|
||||
gpmc,cs-rd-off-ns = <45>;
|
||||
gpmc,cs-wr-off-ns = <45>;
|
||||
gpmc,adv-on-ns = <0>;
|
||||
gpmc,adv-rd-off-ns = <0>;
|
||||
gpmc,adv-wr-off-ns = <0>;
|
||||
gpmc,oe-on-ns = <0>;
|
||||
gpmc,oe-off-ns = <45>;
|
||||
gpmc,we-on-ns = <0>;
|
||||
gpmc,we-off-ns = <25>;
|
||||
gpmc,rd-cycle-ns = <60>;
|
||||
gpmc,wr-cycle-ns = <45>;
|
||||
gpmc,access-ns = <35>;
|
||||
gpmc,page-burst-access-ns = <0>;
|
||||
gpmc,bus-turnaround-ns = <0>;
|
||||
gpmc,cycle2cycle-delay-ns = <60>;
|
||||
gpmc,wait-monitoring-ns = <0>;
|
||||
gpmc,clk-activation-ns = <0>;
|
||||
gpmc,wr-data-mux-bus-ns = <5>;
|
||||
gpmc,wr-access-ns = <20>;
|
||||
};
|
||||
};
|
||||
|
||||
&hdqw1w {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&hdq_pins>;
|
||||
};
|
||||
|
||||
|
||||
&vpll2 {
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
&dss {
|
||||
status = "ok";
|
||||
status = "okay";
|
||||
vdds_dsi-supply = <&vpll2>;
|
||||
vdda_video-supply = <&video_reg>;
|
||||
vdda_video-supply = <&vpll2>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&dss_dpi_pins1>;
|
||||
port {
|
||||
|
@ -124,44 +172,19 @@
|
|||
display0 = &lcd0;
|
||||
};
|
||||
|
||||
video_reg: video_reg {
|
||||
lcd0: display {
|
||||
/* This isn't the exact LCD, but the timings meet spec */
|
||||
compatible = "newhaven,nhd-4.3-480272ef-atxl";
|
||||
label = "15";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&panel_pwr_pins>;
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "fixed-supply";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
gpio = <&gpio5 27 GPIO_ACTIVE_HIGH>; /* gpio155, lcd INI */
|
||||
};
|
||||
|
||||
lcd0: display {
|
||||
compatible = "panel-dpi";
|
||||
label = "15";
|
||||
status = "okay";
|
||||
/* default-on; */
|
||||
pinctrl-names = "default";
|
||||
|
||||
backlight = <&bl>;
|
||||
enable-gpios = <&gpio5 27 GPIO_ACTIVE_HIGH>;
|
||||
port {
|
||||
lcd_in: endpoint {
|
||||
remote-endpoint = <&dpi_out>;
|
||||
};
|
||||
};
|
||||
|
||||
panel-timing {
|
||||
clock-frequency = <9000000>;
|
||||
hactive = <480>;
|
||||
vactive = <272>;
|
||||
hfront-porch = <3>;
|
||||
hback-porch = <2>;
|
||||
hsync-len = <42>;
|
||||
vback-porch = <3>;
|
||||
vfront-porch = <4>;
|
||||
vsync-len = <11>;
|
||||
hsync-active = <0>;
|
||||
vsync-active = <0>;
|
||||
de-active = <1>;
|
||||
pixelclk-active = <1>;
|
||||
};
|
||||
};
|
||||
|
||||
bl: backlight {
|
||||
|
@ -193,6 +216,12 @@
|
|||
>;
|
||||
};
|
||||
|
||||
hdq_pins: hdq_pins {
|
||||
pinctrl-single,pins = <
|
||||
OMAP3_CORE1_IOPAD(0x21c6, PIN_INPUT_PULLUP | MUX_MODE0) /* hdq_sio */
|
||||
>;
|
||||
};
|
||||
|
||||
pwm_pins: pinmux_pwm_pins {
|
||||
pinctrl-single,pins = <
|
||||
OMAP3_CORE1_IOPAD(0x20B8, PIN_OUTPUT | PIN_OFF_OUTPUT_LOW | MUX_MODE3) /* gpmc_ncs5.gpt_10_pwm_evt */
|
||||
|
|
|
@ -35,6 +35,11 @@
|
|||
};
|
||||
};
|
||||
|
||||
/* The Torpedo doesn't route the USB host pins */
|
||||
&usbhshost {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&gpmc {
|
||||
ranges = <0 0 0x30000000 0x1000000>; /* CS0: 16MB for NAND */
|
||||
|
||||
|
@ -192,3 +197,7 @@
|
|||
&twl_gpio {
|
||||
ti,use-leds;
|
||||
};
|
||||
|
||||
&twl_keypad {
|
||||
status = "disabled";
|
||||
};
|
||||
|
|
50
arch/arm/dts/phytium-pomelo.dts
Normal file
50
arch/arm/dts/phytium-pomelo.dts
Normal file
|
@ -0,0 +1,50 @@
|
|||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* dts file for Phytium Pomelo board
|
||||
* Copyright (C) 2021, Phytium Ltd.
|
||||
* lixinde <lixinde@phytium.com.cn>
|
||||
* weichangzheng <weichangzheng@phytium.com.cn>
|
||||
*/
|
||||
/dts-v1/;
|
||||
|
||||
/ {
|
||||
model = "Phytium Pomelo Board";
|
||||
compatible = "phytium,d2000-pomelo", "phytium,d2000";
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
|
||||
aliases {
|
||||
serial0 = &uart0;
|
||||
};
|
||||
|
||||
sysclk_48mhz: clk48mhz {
|
||||
compatible = "fixed-clock";
|
||||
#clock-cells = <0x0>;
|
||||
clock-frequency = <48000000>;
|
||||
clock-output-names = "sysclk_48mhz";
|
||||
};
|
||||
|
||||
soc {
|
||||
compatible = "simple-bus";
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
ranges;
|
||||
|
||||
uart0: serial@28001000 {
|
||||
compatible = "arm,pl011", "arm,primecell";
|
||||
reg = <0x0 0x28001000 0x0 0x1000>;
|
||||
clocks = <&sysclk_48mhz>;
|
||||
};
|
||||
|
||||
pcie@40000000 {
|
||||
compatible = "pci-host-ecam-generic";
|
||||
device_type = "pci";
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
reg = <0x0 0x40000000 0x0 0x10000000>;
|
||||
ranges = <0x01000000 0x00 0x00000000 0x0 0x50000000 0x0 0x00F00000>,
|
||||
<0x02000000 0x00 0x58000000 0x0 0x58000000 0x0 0x28000000>,
|
||||
<0x43000000 0x10 0x00000000 0x10 0x00000000 0x10 0x00000000>;
|
||||
};
|
||||
};
|
||||
};
|
27
arch/arm/dts/rtsm_ve-motherboard-rs2.dtsi
Normal file
27
arch/arm/dts/rtsm_ve-motherboard-rs2.dtsi
Normal file
|
@ -0,0 +1,27 @@
|
|||
// SPDX-License-Identifier: GPL-2.0
|
||||
/*
|
||||
* ARM Ltd. Fast Models
|
||||
*
|
||||
* "rs2" extension for the v2m motherboard
|
||||
*/
|
||||
/ {
|
||||
bus@8000000 {
|
||||
motherboard-bus@8000000 {
|
||||
arm,v2m-memory-map = "rs2";
|
||||
|
||||
iofpga-bus@300000000 {
|
||||
virtio-p9@140000 {
|
||||
compatible = "virtio,mmio";
|
||||
reg = <0x140000 0x200>;
|
||||
interrupts = <43>;
|
||||
};
|
||||
|
||||
virtio-net@150000 {
|
||||
compatible = "virtio,mmio";
|
||||
reg = <0x150000 0x200>;
|
||||
interrupts = <44>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
258
arch/arm/dts/rtsm_ve-motherboard.dtsi
Normal file
258
arch/arm/dts/rtsm_ve-motherboard.dtsi
Normal file
|
@ -0,0 +1,258 @@
|
|||
// SPDX-License-Identifier: GPL-2.0
|
||||
/*
|
||||
* ARM Ltd. Fast Models
|
||||
*
|
||||
* Versatile Express (VE) system model
|
||||
* Motherboard component
|
||||
*
|
||||
* VEMotherBoard.lisa
|
||||
*/
|
||||
/ {
|
||||
v2m_clk24mhz: clk24mhz {
|
||||
compatible = "fixed-clock";
|
||||
#clock-cells = <0>;
|
||||
clock-frequency = <24000000>;
|
||||
clock-output-names = "v2m:clk24mhz";
|
||||
};
|
||||
|
||||
v2m_refclk1mhz: refclk1mhz {
|
||||
compatible = "fixed-clock";
|
||||
#clock-cells = <0>;
|
||||
clock-frequency = <1000000>;
|
||||
clock-output-names = "v2m:refclk1mhz";
|
||||
};
|
||||
|
||||
v2m_refclk32khz: refclk32khz {
|
||||
compatible = "fixed-clock";
|
||||
#clock-cells = <0>;
|
||||
clock-frequency = <32768>;
|
||||
clock-output-names = "v2m:refclk32khz";
|
||||
};
|
||||
|
||||
v2m_fixed_3v3: v2m-3v3 {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "3V3";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
mcc {
|
||||
compatible = "arm,vexpress,config-bus";
|
||||
arm,vexpress,config-bridge = <&v2m_sysreg>;
|
||||
|
||||
v2m_oscclk1: oscclk1 {
|
||||
/* CLCD clock */
|
||||
compatible = "arm,vexpress-osc";
|
||||
arm,vexpress-sysreg,func = <1 1>;
|
||||
freq-range = <23750000 63500000>;
|
||||
#clock-cells = <0>;
|
||||
clock-output-names = "v2m:oscclk1";
|
||||
};
|
||||
|
||||
reset {
|
||||
compatible = "arm,vexpress-reset";
|
||||
arm,vexpress-sysreg,func = <5 0>;
|
||||
};
|
||||
|
||||
muxfpga {
|
||||
compatible = "arm,vexpress-muxfpga";
|
||||
arm,vexpress-sysreg,func = <7 0>;
|
||||
};
|
||||
|
||||
shutdown {
|
||||
compatible = "arm,vexpress-shutdown";
|
||||
arm,vexpress-sysreg,func = <8 0>;
|
||||
};
|
||||
|
||||
reboot {
|
||||
compatible = "arm,vexpress-reboot";
|
||||
arm,vexpress-sysreg,func = <9 0>;
|
||||
};
|
||||
|
||||
dvimode {
|
||||
compatible = "arm,vexpress-dvimode";
|
||||
arm,vexpress-sysreg,func = <11 0>;
|
||||
};
|
||||
};
|
||||
|
||||
bus@8000000 {
|
||||
compatible = "simple-bus";
|
||||
#address-cells = <2>;
|
||||
#size-cells = <1>;
|
||||
ranges = <0 0x8000000 0 0x8000000 0x18000000>;
|
||||
|
||||
motherboard-bus@8000000 {
|
||||
compatible = "arm,vexpress,v2m-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>;
|
||||
|
||||
flash@0 {
|
||||
compatible = "arm,vexpress-flash", "cfi-flash";
|
||||
reg = <0 0x00000000 0x04000000>,
|
||||
<4 0x00000000 0x04000000>;
|
||||
bank-width = <4>;
|
||||
};
|
||||
|
||||
ethernet@202000000 {
|
||||
compatible = "smsc,lan91c111";
|
||||
reg = <2 0x02000000 0x10000>;
|
||||
interrupts = <15>;
|
||||
};
|
||||
|
||||
iofpga-bus@300000000 {
|
||||
compatible = "simple-bus";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges = <0 3 0 0x200000>;
|
||||
|
||||
v2m_sysreg: sysreg@10000 {
|
||||
compatible = "arm,vexpress-sysreg";
|
||||
reg = <0x010000 0x1000>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
v2m_sysctl: sysctl@20000 {
|
||||
compatible = "arm,sp810", "arm,primecell";
|
||||
reg = <0x020000 0x1000>;
|
||||
clocks = <&v2m_refclk32khz>, <&v2m_refclk1mhz>, <&v2m_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>;
|
||||
};
|
||||
|
||||
aaci@40000 {
|
||||
compatible = "arm,pl041", "arm,primecell";
|
||||
reg = <0x040000 0x1000>;
|
||||
interrupts = <11>;
|
||||
clocks = <&v2m_clk24mhz>;
|
||||
clock-names = "apb_pclk";
|
||||
};
|
||||
|
||||
mmc@50000 {
|
||||
compatible = "arm,pl180", "arm,primecell";
|
||||
reg = <0x050000 0x1000>;
|
||||
interrupts = <9>, <10>;
|
||||
cd-gpios = <&v2m_sysreg 0 0>;
|
||||
wp-gpios = <&v2m_sysreg 1 0>;
|
||||
max-frequency = <12000000>;
|
||||
vmmc-supply = <&v2m_fixed_3v3>;
|
||||
clocks = <&v2m_clk24mhz>, <&v2m_clk24mhz>;
|
||||
clock-names = "mclk", "apb_pclk";
|
||||
};
|
||||
|
||||
kmi@60000 {
|
||||
compatible = "arm,pl050", "arm,primecell";
|
||||
reg = <0x060000 0x1000>;
|
||||
interrupts = <12>;
|
||||
clocks = <&v2m_clk24mhz>, <&v2m_clk24mhz>;
|
||||
clock-names = "KMIREFCLK", "apb_pclk";
|
||||
};
|
||||
|
||||
kmi@70000 {
|
||||
compatible = "arm,pl050", "arm,primecell";
|
||||
reg = <0x070000 0x1000>;
|
||||
interrupts = <13>;
|
||||
clocks = <&v2m_clk24mhz>, <&v2m_clk24mhz>;
|
||||
clock-names = "KMIREFCLK", "apb_pclk";
|
||||
};
|
||||
|
||||
v2m_serial0: serial@90000 {
|
||||
compatible = "arm,pl011", "arm,primecell";
|
||||
reg = <0x090000 0x1000>;
|
||||
interrupts = <5>;
|
||||
clocks = <&v2m_clk24mhz>, <&v2m_clk24mhz>;
|
||||
clock-names = "uartclk", "apb_pclk";
|
||||
};
|
||||
|
||||
v2m_serial1: serial@a0000 {
|
||||
compatible = "arm,pl011", "arm,primecell";
|
||||
reg = <0x0a0000 0x1000>;
|
||||
interrupts = <6>;
|
||||
clocks = <&v2m_clk24mhz>, <&v2m_clk24mhz>;
|
||||
clock-names = "uartclk", "apb_pclk";
|
||||
};
|
||||
|
||||
v2m_serial2: serial@b0000 {
|
||||
compatible = "arm,pl011", "arm,primecell";
|
||||
reg = <0x0b0000 0x1000>;
|
||||
interrupts = <7>;
|
||||
clocks = <&v2m_clk24mhz>, <&v2m_clk24mhz>;
|
||||
clock-names = "uartclk", "apb_pclk";
|
||||
};
|
||||
|
||||
v2m_serial3: serial@c0000 {
|
||||
compatible = "arm,pl011", "arm,primecell";
|
||||
reg = <0x0c0000 0x1000>;
|
||||
interrupts = <8>;
|
||||
clocks = <&v2m_clk24mhz>, <&v2m_clk24mhz>;
|
||||
clock-names = "uartclk", "apb_pclk";
|
||||
};
|
||||
|
||||
watchdog@f0000 {
|
||||
compatible = "arm,sp805", "arm,primecell";
|
||||
reg = <0x0f0000 0x1000>;
|
||||
interrupts = <0>;
|
||||
clocks = <&v2m_refclk32khz>, <&v2m_clk24mhz>;
|
||||
clock-names = "wdog_clk", "apb_pclk";
|
||||
};
|
||||
|
||||
v2m_timer01: timer@110000 {
|
||||
compatible = "arm,sp804", "arm,primecell";
|
||||
reg = <0x110000 0x1000>;
|
||||
interrupts = <2>;
|
||||
clocks = <&v2m_sysctl 0>, <&v2m_sysctl 1>, <&v2m_clk24mhz>;
|
||||
clock-names = "timclken1", "timclken2", "apb_pclk";
|
||||
};
|
||||
|
||||
v2m_timer23: timer@120000 {
|
||||
compatible = "arm,sp804", "arm,primecell";
|
||||
reg = <0x120000 0x1000>;
|
||||
interrupts = <3>;
|
||||
clocks = <&v2m_sysctl 2>, <&v2m_sysctl 3>, <&v2m_clk24mhz>;
|
||||
clock-names = "timclken1", "timclken2", "apb_pclk";
|
||||
};
|
||||
|
||||
virtio-block@130000 {
|
||||
compatible = "virtio,mmio";
|
||||
reg = <0x130000 0x200>;
|
||||
interrupts = <42>;
|
||||
};
|
||||
|
||||
rtc@170000 {
|
||||
compatible = "arm,pl031", "arm,primecell";
|
||||
reg = <0x170000 0x1000>;
|
||||
interrupts = <4>;
|
||||
clocks = <&v2m_clk24mhz>;
|
||||
clock-names = "apb_pclk";
|
||||
};
|
||||
|
||||
clcd@1f0000 {
|
||||
compatible = "arm,pl111", "arm,primecell";
|
||||
reg = <0x1f0000 0x1000>;
|
||||
interrupt-names = "combined";
|
||||
interrupts = <14>;
|
||||
clocks = <&v2m_oscclk1>, <&v2m_clk24mhz>;
|
||||
clock-names = "clcdclk", "apb_pclk";
|
||||
memory-region = <&vram>;
|
||||
|
||||
port {
|
||||
clcd_pads: endpoint {
|
||||
remote-endpoint = <&panel_in>;
|
||||
arm,pl11x,tft-r0g0b0-pads = <0 8 16>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
|
@ -1,8 +1,10 @@
|
|||
#include "skeleton.dtsi"
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
|
||||
/ {
|
||||
model = "Atmel SAMA5D2 family SoC";
|
||||
compatible = "atmel,sama5d2";
|
||||
interrupt-parent = <&aic>;
|
||||
|
||||
aliases {
|
||||
spi0 = &spi0;
|
||||
|
@ -361,6 +363,7 @@
|
|||
#clock-cells = <0>;
|
||||
reg = <35>;
|
||||
atmel,clk-output-range = <0 83000000>;
|
||||
u-boot,dm-pre-reloc;
|
||||
};
|
||||
|
||||
tcb1_clk: tcb1_clk@36 {
|
||||
|
@ -638,6 +641,23 @@
|
|||
status = "disabled";
|
||||
};
|
||||
|
||||
tcb0: timer@f800c000 {
|
||||
compatible = "atmel,sama5d2-tcb", "simple-mfd", "syscon";
|
||||
reg = <0xf800c000 0x100>;
|
||||
interrupts = <35 IRQ_TYPE_LEVEL_HIGH 0>;
|
||||
clocks = <&tcb0_clk>, <&tcb0_gclk>, <&clk32k>;
|
||||
clock-names = "t0_clk", "gclk", "slow_clk";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
u-boot,dm-pre-reloc;
|
||||
|
||||
timer0: timer@0 {
|
||||
compatible = "atmel,tcb-timer";
|
||||
reg = <0>, <1>;
|
||||
u-boot,dm-pre-reloc;
|
||||
};
|
||||
};
|
||||
|
||||
uart0: serial@f801c000 {
|
||||
compatible = "atmel,at91sam9260-usart";
|
||||
reg = <0xf801c000 0x100>;
|
||||
|
@ -762,6 +782,14 @@
|
|||
status = "disabled";
|
||||
};
|
||||
|
||||
aic: interrupt-controller@fc020000 {
|
||||
#interrupt-cells = <3>;
|
||||
compatible = "atmel,sama5d2-aic";
|
||||
interrupt-controller;
|
||||
reg = <0xfc020000 0x200>;
|
||||
atmel,external-irqs = <49>;
|
||||
};
|
||||
|
||||
i2c1: i2c@fc028000 {
|
||||
compatible = "atmel,sama5d2-i2c";
|
||||
reg = <0xfc028000 0x100>;
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,275 +0,0 @@
|
|||
// SPDX-License-Identifier: GPL-2.0+ OR MIT
|
||||
/*
|
||||
* sama7g5ek.dts - Device Tree file for SAMA7G5 EK
|
||||
* SAMA7G5 Evaluation Kit
|
||||
*
|
||||
* Copyright (c) 2020, Microchip Technology Inc.
|
||||
* 2020, Eugen Hristev <eugen.hristev@microchip.com>
|
||||
* 2020, Claudiu Beznea <claudiu.beznea@microchip.com>
|
||||
*/
|
||||
/dts-v1/;
|
||||
#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";
|
||||
compatible = "microchip,sama7g5ek", "microchip,sama7g54", "microchip,sama7g5", "microchip,sama7";
|
||||
|
||||
aliases {
|
||||
serial0 = &uart0;
|
||||
i2c0 = &i2c1;
|
||||
i2c1 = &i2c8;
|
||||
};
|
||||
|
||||
chosen {
|
||||
stdout-path = "serial0:115200n8";
|
||||
};
|
||||
|
||||
clocks {
|
||||
slow_xtal: slow_xtal {
|
||||
clock-frequency = <32768>;
|
||||
};
|
||||
|
||||
main_xtal: main_xtal {
|
||||
clock-frequency = <24000000>;
|
||||
};
|
||||
};
|
||||
|
||||
ahb {
|
||||
|
||||
apb {
|
||||
sdmmc0: sdio-host@e1204000 {
|
||||
bus-width = <8>;
|
||||
non-removable;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_sdmmc0_cmd_data_default
|
||||
&pinctrl_sdmmc0_ck_rstn_ds_cd_default>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
sdmmc1: sdio-host@e1208000 {
|
||||
bus-width = <4>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_sdmmc1_cmd_data_default
|
||||
&pinctrl_sdmmc1_ck_cd_rstn_vddsel_default>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
uart0: serial@e1824200 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_flx3_default>;
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&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";
|
||||
};
|
||||
|
||||
&i2c1 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_flx1_default>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&flx8 {
|
||||
atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_TWI>;
|
||||
status = "okay";
|
||||
|
||||
i2c8: i2c@600 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_i2c8_default>;
|
||||
i2c-analog-filter;
|
||||
i2c-digital-filter;
|
||||
i2c-digital-filter-width-ns = <35>;
|
||||
status = "okay";
|
||||
|
||||
eeprom@52 {
|
||||
compatible = "microchip,24aa02e48";
|
||||
reg = <0x52>;
|
||||
pagesize = <16>;
|
||||
};
|
||||
|
||||
eeprom@53 {
|
||||
compatible = "microchip,24aa02e48";
|
||||
reg = <0x53>;
|
||||
pagesize = <16>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&gmac0 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_gmac0_default
|
||||
&pinctrl_gmac0_mdio_default
|
||||
&pinctrl_gmac0_txc_default>;
|
||||
phy-mode = "rgmii-id";
|
||||
status = "okay";
|
||||
|
||||
ethernet-phy@7 {
|
||||
reg = <0x7>;
|
||||
};
|
||||
};
|
||||
|
||||
&gmac1 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_gmac1_default &pinctrl_gmac1_mdio_default>;
|
||||
phy-mode = "rmii";
|
||||
status = "okay";
|
||||
|
||||
ethernet-phy@0 {
|
||||
reg = <0x0>;
|
||||
};
|
||||
};
|
||||
|
||||
&pinctrl {
|
||||
pinctrl_flx1_default: flx1_default {
|
||||
pinmux = <PIN_PC9__FLEXCOM1_IO0>,
|
||||
<PIN_PC10__FLEXCOM1_IO1>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
pinctrl_flx3_default: flx3_default {
|
||||
pinmux = <PIN_PD16__FLEXCOM3_IO0>,
|
||||
<PIN_PD17__FLEXCOM3_IO1>;
|
||||
bias-pull-up;
|
||||
};
|
||||
|
||||
pinctrl_i2c8_default: i2c8_default {
|
||||
pinmux = <PIN_PC14__FLEXCOM8_IO0>,
|
||||
<PIN_PC13__FLEXCOM8_IO1>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
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>,
|
||||
<PIN_PA4__SDMMC0_DAT1>,
|
||||
<PIN_PA5__SDMMC0_DAT2>,
|
||||
<PIN_PA6__SDMMC0_DAT3>,
|
||||
<PIN_PA7__SDMMC0_DAT4>,
|
||||
<PIN_PA8__SDMMC0_DAT5>,
|
||||
<PIN_PA9__SDMMC0_DAT6>,
|
||||
<PIN_PA10__SDMMC0_DAT7>;
|
||||
bias-pull-up;
|
||||
};
|
||||
|
||||
pinctrl_sdmmc0_ck_rstn_ds_cd_default: sdmmc0_ck_rstn_ds_cd_default {
|
||||
pinmux = <PIN_PA0__SDMMC0_CK>,
|
||||
<PIN_PA2__SDMMC0_RSTN>,
|
||||
<PIN_PA11__SDMMC0_DS>,
|
||||
<PIN_PA14__SDMMC0_CD>;
|
||||
bias-pull-up;
|
||||
};
|
||||
|
||||
pinctrl_sdmmc1_cmd_data_default: sdmmc1_cmd_data_default {
|
||||
pinmux = <PIN_PB29__SDMMC1_CMD>,
|
||||
<PIN_PB31__SDMMC1_DAT0>,
|
||||
<PIN_PC0__SDMMC1_DAT1>,
|
||||
<PIN_PC1__SDMMC1_DAT2>,
|
||||
<PIN_PC2__SDMMC1_DAT3>;
|
||||
bias-pull-up;
|
||||
};
|
||||
|
||||
pinctrl_sdmmc1_ck_cd_rstn_vddsel_default: sdmmc1_ck_cd_rstn_vddsel_default {
|
||||
pinmux = <PIN_PB30__SDMMC1_CK>,
|
||||
<PIN_PB28__SDMMC1_RSTN>,
|
||||
<PIN_PC5__SDMMC1_1V8SEL>,
|
||||
<PIN_PC4__SDMMC1_CD>;
|
||||
bias-pull-up;
|
||||
};
|
||||
|
||||
pinctrl_gmac0_default: gmac0_default {
|
||||
pinmux = <PIN_PA16__G0_TX0>,
|
||||
<PIN_PA17__G0_TX1>,
|
||||
<PIN_PA26__G0_TX2>,
|
||||
<PIN_PA27__G0_TX3>,
|
||||
<PIN_PA19__G0_RX0>,
|
||||
<PIN_PA20__G0_RX1>,
|
||||
<PIN_PA28__G0_RX2>,
|
||||
<PIN_PA29__G0_RX3>,
|
||||
<PIN_PA15__G0_TXEN>,
|
||||
<PIN_PA30__G0_RXCK>,
|
||||
<PIN_PA18__G0_RXDV>,
|
||||
<PIN_PA25__G0_125CK>;
|
||||
slew-rate = <0>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
pinctrl_gmac0_mdio_default: gmac0_mdio_default {
|
||||
pinmux = <PIN_PA22__G0_MDC>,
|
||||
<PIN_PA23__G0_MDIO>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
pinctrl_gmac0_txc_default: gmac0_txc_default {
|
||||
pinmux = <PIN_PA24__G0_TXCK>;
|
||||
slew-rate = <0>;
|
||||
bias-pull-up;
|
||||
};
|
||||
|
||||
pinctrl_gmac1_default: gmac1_default {
|
||||
pinmux = <PIN_PD30__G1_TXCK>,
|
||||
<PIN_PD22__G1_TX0>,
|
||||
<PIN_PD23__G1_TX1>,
|
||||
<PIN_PD21__G1_TXEN>,
|
||||
<PIN_PD25__G1_RX0>,
|
||||
<PIN_PD26__G1_RX1>,
|
||||
<PIN_PD27__G1_RXER>,
|
||||
<PIN_PD24__G1_RXDV>;
|
||||
slew-rate = <0>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
pinctrl_gmac1_mdio_default: gmac1_mdio_default {
|
||||
pinmux = <PIN_PD28__G1_MDC>,
|
||||
<PIN_PD29__G1_MDIO>;
|
||||
bias-disable;
|
||||
};
|
||||
};
|
|
@ -246,33 +246,6 @@
|
|||
#size-cells = <0>;
|
||||
};
|
||||
|
||||
smcc: memory-controller@e000e000 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
status = "disabled";
|
||||
clock-names = "memclk", "apb_pclk";
|
||||
clocks = <&clkc 11>, <&clkc 44>;
|
||||
compatible = "arm,pl353-smc-r2p1", "arm,primecell";
|
||||
interrupt-parent = <&intc>;
|
||||
interrupts = <0 18 4>;
|
||||
ranges ;
|
||||
reg = <0xe000e000 0x1000>;
|
||||
nand0: flash@e1000000 {
|
||||
status = "disabled";
|
||||
compatible = "arm,pl353-nand-r2p1";
|
||||
reg = <0xe1000000 0x1000000>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
};
|
||||
nor0: flash@e2000000 {
|
||||
status = "disabled";
|
||||
compatible = "cfi-flash";
|
||||
reg = <0xe2000000 0x2000000>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
};
|
||||
};
|
||||
|
||||
gem0: ethernet@e000b000 {
|
||||
compatible = "cdns,zynq-gem", "cdns,gem";
|
||||
reg = <0xe000b000 0x1000>;
|
||||
|
@ -295,6 +268,36 @@
|
|||
#size-cells = <0>;
|
||||
};
|
||||
|
||||
smcc: memory-controller@e000e000 {
|
||||
compatible = "arm,pl353-smc-r2p1", "arm,primecell";
|
||||
reg = <0xe000e000 0x0001000>;
|
||||
status = "disabled";
|
||||
clock-names = "memclk", "apb_pclk";
|
||||
clocks = <&clkc 11>, <&clkc 44>;
|
||||
ranges = <0x0 0x0 0xe1000000 0x1000000 /* Nand CS region */
|
||||
0x1 0x0 0xe2000000 0x2000000 /* SRAM/NOR CS0 region */
|
||||
0x2 0x0 0xe4000000 0x2000000>; /* SRAM/NOR CS1 region */
|
||||
#address-cells = <2>;
|
||||
#size-cells = <1>;
|
||||
interrupt-parent = <&intc>;
|
||||
interrupts = <0 18 4>;
|
||||
|
||||
nfc0: nand-controller@0,0 {
|
||||
compatible = "arm,pl353-nand-r2p1";
|
||||
reg = <0 0 0x1000000>;
|
||||
status = "disabled";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
};
|
||||
nor0: flash@1,0 {
|
||||
status = "disabled";
|
||||
compatible = "cfi-flash";
|
||||
reg = <1 0 0x2000000>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
};
|
||||
};
|
||||
|
||||
sdhci0: mmc@e0100000 {
|
||||
compatible = "arasan,sdhci-8.9a";
|
||||
status = "disabled";
|
||||
|
|
|
@ -47,7 +47,7 @@
|
|||
};
|
||||
};
|
||||
|
||||
&nand0 {
|
||||
&nfc0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
|
|
|
@ -215,10 +215,12 @@
|
|||
|
||||
&sdhci0 {
|
||||
clocks = <&zynqmp_clk SDIO0_REF>, <&zynqmp_clk LPD_LSBUS>;
|
||||
assigned-clocks = <&zynqmp_clk SDIO0_REF>;
|
||||
};
|
||||
|
||||
&sdhci1 {
|
||||
clocks = <&zynqmp_clk SDIO1_REF>, <&zynqmp_clk LPD_LSBUS>;
|
||||
assigned-clocks = <&zynqmp_clk SDIO1_REF>;
|
||||
};
|
||||
|
||||
&spi0 {
|
||||
|
@ -255,10 +257,12 @@
|
|||
|
||||
&usb0 {
|
||||
clocks = <&zynqmp_clk USB0_BUS_REF>, <&zynqmp_clk USB3_DUAL_REF>;
|
||||
assigned-clocks = <&zynqmp_clk USB0_BUS_REF>, <&zynqmp_clk USB3_DUAL_REF>;
|
||||
};
|
||||
|
||||
&usb1 {
|
||||
clocks = <&zynqmp_clk USB1_BUS_REF>, <&zynqmp_clk USB3_DUAL_REF>;
|
||||
assigned-clocks = <&zynqmp_clk USB1_BUS_REF>, <&zynqmp_clk USB3_DUAL_REF>;
|
||||
};
|
||||
|
||||
&watchdog0 {
|
||||
|
@ -279,10 +283,14 @@
|
|||
|
||||
&zynqmp_dpdma {
|
||||
clocks = <&zynqmp_clk DPDMA_REF>;
|
||||
assigned-clocks = <&zynqmp_clk DPDMA_REF>; /* apll */
|
||||
};
|
||||
|
||||
&zynqmp_dpsub {
|
||||
clocks = <&zynqmp_clk TOPSW_LSBUS>,
|
||||
<&zynqmp_clk DP_AUDIO_REF>,
|
||||
<&zynqmp_clk DP_VIDEO_REF>;
|
||||
assigned-clocks = <&zynqmp_clk DP_STC_REF>,
|
||||
<&zynqmp_clk DP_AUDIO_REF>,
|
||||
<&zynqmp_clk DP_VIDEO_REF>; /* rpll, rpll, vpll */
|
||||
};
|
||||
|
|
|
@ -511,10 +511,10 @@
|
|||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
reg = <6>;
|
||||
si570_hsdp: clock-generator@5d { /* u5 */
|
||||
si570_hsdp: clock-generator@60 { /* u5 */
|
||||
#clock-cells = <0>;
|
||||
compatible = "silabs,si570";
|
||||
reg = <0x5d>; /* 570JAC000900DG */
|
||||
reg = <0x60>; /* 570JAC000900DG */
|
||||
temperature-stability = <50>;
|
||||
factory-fout = <156250000>;
|
||||
clock-frequency = <156250000>;
|
||||
|
@ -528,10 +528,10 @@
|
|||
/* u36 0xd8 or 0xde - pcie clk buf - 9ZML1241EKILF PCIe GEN 4 CLOCK BUFFER FIXME - no driver */
|
||||
/* u37 0xd0 DNP - pcie clocking 1 - 9FGV1006BQ505LTGI - PCIe GEN 4 CLOCK GENERATOR FIXME - no linux driver */
|
||||
/* u38 0xca - pcie clocking 2 - 9ZML1241EKILF PCIe GEN 4 CLOCK BUFFER FIXME - no driver */
|
||||
clock_8t49n287: clock-generator@d8 { /* u39 8T49N240 - pcie clocking 3 */
|
||||
clock_8t49n287: clock-generator@60 { /* u39 8T49N240 - pcie clocking 3 */
|
||||
#clock-cells = <1>; /* author David Cater <david.cater@idt.com>*/
|
||||
compatible = "idt,8t49n240", "idt,8t49n241"; /* FIXME no driver for 240 */
|
||||
reg = <0xd8>;
|
||||
reg = <0x60>;
|
||||
/* Documentation/devicetree/bindings/clock/idt,idt8t49n24x.txt */
|
||||
/* FIXME there input via J241 Samtec CLK1 and CLK0 from U38 - selection PIN */
|
||||
|
||||
|
|
|
@ -115,10 +115,12 @@
|
|||
status = "disabled";
|
||||
phy-names = "dp-phy0", "dp-phy1";
|
||||
phys = <&psgtr 1 PHY_TYPE_DP 0 0>, <&psgtr 0 PHY_TYPE_DP 1 0>;
|
||||
assigned-clock-rates = <27000000>, <25000000>, <300000000>;
|
||||
};
|
||||
|
||||
&zynqmp_dpdma {
|
||||
status = "okay";
|
||||
assigned-clock-rates = <600000000>;
|
||||
};
|
||||
|
||||
&usb0 {
|
||||
|
@ -129,7 +131,7 @@
|
|||
phys = <&psgtr 2 PHY_TYPE_USB3 0 1>;
|
||||
usbhub: usb5744 { /* u43 */
|
||||
compatible = "microchip,usb5744";
|
||||
reset-gpios = <&gpio 44 GPIO_ACTIVE_HIGH>;
|
||||
reset-gpios = <&gpio 44 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -152,6 +154,8 @@
|
|||
no-1-8-v;
|
||||
disable-wp;
|
||||
xlnx,mio-bank = <1>;
|
||||
assigned-clock-rates = <187498123>;
|
||||
bus-width = <8>;
|
||||
};
|
||||
|
||||
&gem3 { /* required by spec */
|
||||
|
@ -164,16 +168,18 @@
|
|||
mdio: mdio {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
reset-gpios = <&gpio 38 GPIO_ACTIVE_LOW>;
|
||||
reset-delay-us = <2>;
|
||||
|
||||
phy0: ethernet-phy@1 {
|
||||
#phy-cells = <1>;
|
||||
reg = <1>;
|
||||
compatible = "ethernet-phy-id2000.a231";
|
||||
ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_25_NS>;
|
||||
ti,tx-internal-delay = <DP83867_RGMIIDCTL_2_75_NS>;
|
||||
ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
|
||||
ti,dp83867-rxctrl-strap-quirk;
|
||||
reset-assert-us = <100>;
|
||||
reset-deassert-us = <280>;
|
||||
reset-gpios = <&gpio 38 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
|
@ -36,11 +36,7 @@
|
|||
label = "ina260-u14";
|
||||
reg = <0x40>;
|
||||
};
|
||||
usbhub: usb5744@2d { /* u43 */
|
||||
compatible = "microchip,usb5744";
|
||||
reg = <0x2d>;
|
||||
reset-gpios = <&gpio 44 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
/* u43 - 0x2d - USB hub */
|
||||
/* u27 - 0xe0 - STDP4320 DP/HDMI splitter */
|
||||
};
|
||||
|
||||
|
@ -96,13 +92,15 @@
|
|||
};
|
||||
|
||||
&zynqmp_dpsub {
|
||||
status = "disabled";
|
||||
status = "okay";
|
||||
phy-names = "dp-phy0", "dp-phy1";
|
||||
phys = <&psgtr 1 PHY_TYPE_DP 0 0>, <&psgtr 0 PHY_TYPE_DP 1 0>;
|
||||
assigned-clock-rates = <27000000>, <25000000>, <300000000>;
|
||||
};
|
||||
|
||||
&zynqmp_dpdma {
|
||||
status = "okay";
|
||||
assigned-clock-rates = <600000000>;
|
||||
};
|
||||
|
||||
&usb0 {
|
||||
|
@ -111,6 +109,14 @@
|
|||
pinctrl-0 = <&pinctrl_usb0_default>;
|
||||
phy-names = "usb3-phy";
|
||||
phys = <&psgtr 2 PHY_TYPE_USB3 0 1>;
|
||||
assigned-clock-rates = <250000000>, <20000000>;
|
||||
|
||||
usb5744: usb-hub { /* u43 */
|
||||
status = "okay";
|
||||
compatible = "microchip,usb5744";
|
||||
i2c-bus = <&i2c1>;
|
||||
reset-gpios = <&gpio 44 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
};
|
||||
|
||||
&dwc3_0 {
|
||||
|
@ -135,6 +141,8 @@
|
|||
clk-phase-sd-hs = <126>, <60>;
|
||||
clk-phase-uhs-sdr25 = <120>, <60>;
|
||||
clk-phase-uhs-ddr50 = <126>, <48>;
|
||||
assigned-clock-rates = <187498123>;
|
||||
bus-width = <8>;
|
||||
};
|
||||
|
||||
&gem3 { /* required by spec */
|
||||
|
@ -147,16 +155,18 @@
|
|||
mdio: mdio {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
reset-gpios = <&gpio 38 GPIO_ACTIVE_LOW>;
|
||||
reset-delay-us = <2>;
|
||||
|
||||
phy0: ethernet-phy@1 {
|
||||
#phy-cells = <1>;
|
||||
reg = <1>;
|
||||
compatible = "ethernet-phy-id2000.a231";
|
||||
ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_25_NS>;
|
||||
ti,tx-internal-delay = <DP83867_RGMIIDCTL_2_75_NS>;
|
||||
ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
|
||||
ti,dp83867-rxctrl-strap-quirk;
|
||||
reset-assert-us = <100>;
|
||||
reset-deassert-us = <280>;
|
||||
reset-gpios = <&gpio 38 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
#include <dt-bindings/input/input.h>
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
#include <dt-bindings/phy/phy.h>
|
||||
#include <dt-bindings/pinctrl/pinctrl-zynqmp.h>
|
||||
|
||||
/ {
|
||||
model = "ZynqMP SM-K26 Rev1/B/A";
|
||||
|
@ -92,6 +93,23 @@
|
|||
status = "okay";
|
||||
};
|
||||
|
||||
&pinctrl0 {
|
||||
status = "okay";
|
||||
pinctrl_sdhci0_default: sdhci0-default {
|
||||
conf {
|
||||
groups = "sdio0_0_grp";
|
||||
slew-rate = <SLEW_RATE_SLOW>;
|
||||
power-source = <IO_STANDARD_LVCMOS18>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
mux {
|
||||
groups = "sdio0_0_grp";
|
||||
function = "sdio0";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&qspi { /* MIO 0-5 - U143 */
|
||||
status = "okay";
|
||||
flash@0 { /* MT25QU512A */
|
||||
|
@ -185,10 +203,13 @@
|
|||
|
||||
&sdhci0 { /* MIO13-23 - 16GB emmc MTFC16GAPALBH-IT - U133A */
|
||||
status = "okay";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_sdhci0_default>;
|
||||
non-removable;
|
||||
disable-wp;
|
||||
bus-width = <8>;
|
||||
xlnx,mio-bank = <0>;
|
||||
assigned-clock-rates = <187498123>;
|
||||
};
|
||||
|
||||
&spi1 { /* MIO6, 9-11 */
|
||||
|
@ -316,3 +337,7 @@
|
|||
&ams_pl {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&zynqmp_dpsub {
|
||||
status = "okay";
|
||||
};
|
||||
|
|
16
arch/arm/dts/zynqmp-zcu106-rev1.0.dts
Normal file
16
arch/arm/dts/zynqmp-zcu106-rev1.0.dts
Normal file
|
@ -0,0 +1,16 @@
|
|||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* dts file for Xilinx ZynqMP ZCU106 Rev1.0
|
||||
*
|
||||
* (C) Copyright 2016 - 2022, Xilinx, Inc.
|
||||
*
|
||||
* Michal Simek <michal.simek@xilinx.com>
|
||||
*/
|
||||
|
||||
#include "zynqmp-zcu106-revA.dts"
|
||||
|
||||
/ {
|
||||
model = "ZynqMP ZCU106 Rev1.0";
|
||||
compatible = "xlnx,zynqmp-zcu106-rev1.0", "xlnx,zynqmp-zcu106-revA",
|
||||
"xlnx,zynqmp-zcu106", "xlnx,zynqmp";
|
||||
};
|
|
@ -19,7 +19,4 @@
|
|||
#define CONFIG_SYS_NS16550_CLK_DIV 54
|
||||
#define CONFIG_SYS_NS16550_COM3 0x18023000
|
||||
|
||||
/* Ethernet */
|
||||
#define CONFIG_PHY_RESET_DELAY 10000 /* PHY reset delay in us*/
|
||||
|
||||
#endif /* __ARCH_CONFIGS_H */
|
||||
|
|
|
@ -88,7 +88,6 @@
|
|||
#define CONFIG_SYS_FSL_ESDHC_BE
|
||||
#define CONFIG_SYS_FSL_WDOG_BE
|
||||
#define CONFIG_SYS_FSL_DSPI_BE
|
||||
#define CONFIG_SYS_FSL_DCU_BE
|
||||
#define CONFIG_SYS_FSL_SEC_MON_LE
|
||||
#define CONFIG_SYS_FSL_SFP_VER_3_2
|
||||
#define CONFIG_SYS_FSL_SFP_BE
|
||||
|
|
343
arch/arm/include/asm/esr.h
Normal file
343
arch/arm/include/asm/esr.h
Normal file
|
@ -0,0 +1,343 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
/*
|
||||
* Copyright (C) 2013 - ARM Ltd
|
||||
* Author: Marc Zyngier <marc.zyngier@arm.com>
|
||||
*/
|
||||
|
||||
#ifndef __ASM_ESR_H
|
||||
#define __ASM_ESR_H
|
||||
|
||||
#include <asm/memory.h>
|
||||
#include <linux/const.h>
|
||||
|
||||
#define ESR_ELx_EC_UNKNOWN (0x00)
|
||||
#define ESR_ELx_EC_WFx (0x01)
|
||||
/* Unallocated EC: 0x02 */
|
||||
#define ESR_ELx_EC_CP15_32 (0x03)
|
||||
#define ESR_ELx_EC_CP15_64 (0x04)
|
||||
#define ESR_ELx_EC_CP14_MR (0x05)
|
||||
#define ESR_ELx_EC_CP14_LS (0x06)
|
||||
#define ESR_ELx_EC_FP_ASIMD (0x07)
|
||||
#define ESR_ELx_EC_CP10_ID (0x08) /* EL2 only */
|
||||
#define ESR_ELx_EC_PAC (0x09) /* EL2 and above */
|
||||
/* Unallocated EC: 0x0A - 0x0B */
|
||||
#define ESR_ELx_EC_CP14_64 (0x0C)
|
||||
#define ESR_ELx_EC_BTI (0x0D)
|
||||
#define ESR_ELx_EC_ILL (0x0E)
|
||||
/* Unallocated EC: 0x0F - 0x10 */
|
||||
#define ESR_ELx_EC_SVC32 (0x11)
|
||||
#define ESR_ELx_EC_HVC32 (0x12) /* EL2 only */
|
||||
#define ESR_ELx_EC_SMC32 (0x13) /* EL2 and above */
|
||||
/* Unallocated EC: 0x14 */
|
||||
#define ESR_ELx_EC_SVC64 (0x15)
|
||||
#define ESR_ELx_EC_HVC64 (0x16) /* EL2 and above */
|
||||
#define ESR_ELx_EC_SMC64 (0x17) /* EL2 and above */
|
||||
#define ESR_ELx_EC_SYS64 (0x18)
|
||||
#define ESR_ELx_EC_SVE (0x19)
|
||||
#define ESR_ELx_EC_ERET (0x1a) /* EL2 only */
|
||||
/* Unallocated EC: 0x1B */
|
||||
#define ESR_ELx_EC_FPAC (0x1C) /* EL1 and above */
|
||||
/* Unallocated EC: 0x1D - 0x1E */
|
||||
#define ESR_ELx_EC_IMP_DEF (0x1f) /* EL3 only */
|
||||
#define ESR_ELx_EC_IABT_LOW (0x20)
|
||||
#define ESR_ELx_EC_IABT_CUR (0x21)
|
||||
#define ESR_ELx_EC_PC_ALIGN (0x22)
|
||||
/* Unallocated EC: 0x23 */
|
||||
#define ESR_ELx_EC_DABT_LOW (0x24)
|
||||
#define ESR_ELx_EC_DABT_CUR (0x25)
|
||||
#define ESR_ELx_EC_SP_ALIGN (0x26)
|
||||
/* Unallocated EC: 0x27 */
|
||||
#define ESR_ELx_EC_FP_EXC32 (0x28)
|
||||
/* Unallocated EC: 0x29 - 0x2B */
|
||||
#define ESR_ELx_EC_FP_EXC64 (0x2C)
|
||||
/* Unallocated EC: 0x2D - 0x2E */
|
||||
#define ESR_ELx_EC_SERROR (0x2F)
|
||||
#define ESR_ELx_EC_BREAKPT_LOW (0x30)
|
||||
#define ESR_ELx_EC_BREAKPT_CUR (0x31)
|
||||
#define ESR_ELx_EC_SOFTSTP_LOW (0x32)
|
||||
#define ESR_ELx_EC_SOFTSTP_CUR (0x33)
|
||||
#define ESR_ELx_EC_WATCHPT_LOW (0x34)
|
||||
#define ESR_ELx_EC_WATCHPT_CUR (0x35)
|
||||
/* Unallocated EC: 0x36 - 0x37 */
|
||||
#define ESR_ELx_EC_BKPT32 (0x38)
|
||||
/* Unallocated EC: 0x39 */
|
||||
#define ESR_ELx_EC_VECTOR32 (0x3A) /* EL2 only */
|
||||
/* Unallocated EC: 0x3B */
|
||||
#define ESR_ELx_EC_BRK64 (0x3C)
|
||||
/* Unallocated EC: 0x3D - 0x3F */
|
||||
#define ESR_ELx_EC_MAX (0x3F)
|
||||
|
||||
#define ESR_ELx_EC_SHIFT (26)
|
||||
#define ESR_ELx_EC_WIDTH (6)
|
||||
#define ESR_ELx_EC_MASK (UL(0x3F) << ESR_ELx_EC_SHIFT)
|
||||
#define ESR_ELx_EC(esr) (((esr) & ESR_ELx_EC_MASK) >> ESR_ELx_EC_SHIFT)
|
||||
|
||||
#define ESR_ELx_IL_SHIFT (25)
|
||||
#define ESR_ELx_IL (UL(1) << ESR_ELx_IL_SHIFT)
|
||||
#define ESR_ELx_ISS_MASK (ESR_ELx_IL - 1)
|
||||
|
||||
/* ISS field definitions shared by different classes */
|
||||
#define ESR_ELx_WNR_SHIFT (6)
|
||||
#define ESR_ELx_WNR (UL(1) << ESR_ELx_WNR_SHIFT)
|
||||
|
||||
/* Asynchronous Error Type */
|
||||
#define ESR_ELx_IDS_SHIFT (24)
|
||||
#define ESR_ELx_IDS (UL(1) << ESR_ELx_IDS_SHIFT)
|
||||
#define ESR_ELx_AET_SHIFT (10)
|
||||
#define ESR_ELx_AET (UL(0x7) << ESR_ELx_AET_SHIFT)
|
||||
|
||||
#define ESR_ELx_AET_UC (UL(0) << ESR_ELx_AET_SHIFT)
|
||||
#define ESR_ELx_AET_UEU (UL(1) << ESR_ELx_AET_SHIFT)
|
||||
#define ESR_ELx_AET_UEO (UL(2) << ESR_ELx_AET_SHIFT)
|
||||
#define ESR_ELx_AET_UER (UL(3) << ESR_ELx_AET_SHIFT)
|
||||
#define ESR_ELx_AET_CE (UL(6) << ESR_ELx_AET_SHIFT)
|
||||
|
||||
/* Shared ISS field definitions for Data/Instruction aborts */
|
||||
#define ESR_ELx_SET_SHIFT (11)
|
||||
#define ESR_ELx_SET_MASK (UL(3) << ESR_ELx_SET_SHIFT)
|
||||
#define ESR_ELx_FnV_SHIFT (10)
|
||||
#define ESR_ELx_FnV (UL(1) << ESR_ELx_FnV_SHIFT)
|
||||
#define ESR_ELx_EA_SHIFT (9)
|
||||
#define ESR_ELx_EA (UL(1) << ESR_ELx_EA_SHIFT)
|
||||
#define ESR_ELx_S1PTW_SHIFT (7)
|
||||
#define ESR_ELx_S1PTW (UL(1) << ESR_ELx_S1PTW_SHIFT)
|
||||
|
||||
/* Shared ISS fault status code(IFSC/DFSC) for Data/Instruction aborts */
|
||||
#define ESR_ELx_FSC (0x3F)
|
||||
#define ESR_ELx_FSC_TYPE (0x3C)
|
||||
#define ESR_ELx_FSC_LEVEL (0x03)
|
||||
#define ESR_ELx_FSC_EXTABT (0x10)
|
||||
#define ESR_ELx_FSC_MTE (0x11)
|
||||
#define ESR_ELx_FSC_SERROR (0x11)
|
||||
#define ESR_ELx_FSC_ACCESS (0x08)
|
||||
#define ESR_ELx_FSC_FAULT (0x04)
|
||||
#define ESR_ELx_FSC_PERM (0x0C)
|
||||
|
||||
/* ISS field definitions for Data Aborts */
|
||||
#define ESR_ELx_ISV_SHIFT (24)
|
||||
#define ESR_ELx_ISV (UL(1) << ESR_ELx_ISV_SHIFT)
|
||||
#define ESR_ELx_SAS_SHIFT (22)
|
||||
#define ESR_ELx_SAS (UL(3) << ESR_ELx_SAS_SHIFT)
|
||||
#define ESR_ELx_SSE_SHIFT (21)
|
||||
#define ESR_ELx_SSE (UL(1) << ESR_ELx_SSE_SHIFT)
|
||||
#define ESR_ELx_SRT_SHIFT (16)
|
||||
#define ESR_ELx_SRT_MASK (UL(0x1F) << ESR_ELx_SRT_SHIFT)
|
||||
#define ESR_ELx_SF_SHIFT (15)
|
||||
#define ESR_ELx_SF (UL(1) << ESR_ELx_SF_SHIFT)
|
||||
#define ESR_ELx_AR_SHIFT (14)
|
||||
#define ESR_ELx_AR (UL(1) << ESR_ELx_AR_SHIFT)
|
||||
#define ESR_ELx_CM_SHIFT (8)
|
||||
#define ESR_ELx_CM (UL(1) << ESR_ELx_CM_SHIFT)
|
||||
|
||||
/* ISS field definitions for exceptions taken in to Hyp */
|
||||
#define ESR_ELx_CV (UL(1) << 24)
|
||||
#define ESR_ELx_COND_SHIFT (20)
|
||||
#define ESR_ELx_COND_MASK (UL(0xF) << ESR_ELx_COND_SHIFT)
|
||||
#define ESR_ELx_WFx_ISS_TI (UL(1) << 0)
|
||||
#define ESR_ELx_WFx_ISS_WFI (UL(0) << 0)
|
||||
#define ESR_ELx_WFx_ISS_WFE (UL(1) << 0)
|
||||
#define ESR_ELx_xVC_IMM_MASK ((1UL << 16) - 1)
|
||||
|
||||
#define DISR_EL1_IDS (UL(1) << 24)
|
||||
/*
|
||||
* DISR_EL1 and ESR_ELx share the bottom 13 bits, but the RES0 bits may mean
|
||||
* different things in the future...
|
||||
*/
|
||||
#define DISR_EL1_ESR_MASK (ESR_ELx_AET | ESR_ELx_EA | ESR_ELx_FSC)
|
||||
|
||||
/* ESR value templates for specific events */
|
||||
#define ESR_ELx_WFx_MASK (ESR_ELx_EC_MASK | ESR_ELx_WFx_ISS_TI)
|
||||
#define ESR_ELx_WFx_WFI_VAL ((ESR_ELx_EC_WFx << ESR_ELx_EC_SHIFT) | \
|
||||
ESR_ELx_WFx_ISS_WFI)
|
||||
|
||||
/* BRK instruction trap from AArch64 state */
|
||||
#define ESR_ELx_BRK64_ISS_COMMENT_MASK 0xffff
|
||||
|
||||
/* ISS field definitions for System instruction traps */
|
||||
#define ESR_ELx_SYS64_ISS_RES0_SHIFT 22
|
||||
#define ESR_ELx_SYS64_ISS_RES0_MASK (UL(0x7) << ESR_ELx_SYS64_ISS_RES0_SHIFT)
|
||||
#define ESR_ELx_SYS64_ISS_DIR_MASK 0x1
|
||||
#define ESR_ELx_SYS64_ISS_DIR_READ 0x1
|
||||
#define ESR_ELx_SYS64_ISS_DIR_WRITE 0x0
|
||||
|
||||
#define ESR_ELx_SYS64_ISS_RT_SHIFT 5
|
||||
#define ESR_ELx_SYS64_ISS_RT_MASK (UL(0x1f) << ESR_ELx_SYS64_ISS_RT_SHIFT)
|
||||
#define ESR_ELx_SYS64_ISS_CRM_SHIFT 1
|
||||
#define ESR_ELx_SYS64_ISS_CRM_MASK (UL(0xf) << ESR_ELx_SYS64_ISS_CRM_SHIFT)
|
||||
#define ESR_ELx_SYS64_ISS_CRN_SHIFT 10
|
||||
#define ESR_ELx_SYS64_ISS_CRN_MASK (UL(0xf) << ESR_ELx_SYS64_ISS_CRN_SHIFT)
|
||||
#define ESR_ELx_SYS64_ISS_OP1_SHIFT 14
|
||||
#define ESR_ELx_SYS64_ISS_OP1_MASK (UL(0x7) << ESR_ELx_SYS64_ISS_OP1_SHIFT)
|
||||
#define ESR_ELx_SYS64_ISS_OP2_SHIFT 17
|
||||
#define ESR_ELx_SYS64_ISS_OP2_MASK (UL(0x7) << ESR_ELx_SYS64_ISS_OP2_SHIFT)
|
||||
#define ESR_ELx_SYS64_ISS_OP0_SHIFT 20
|
||||
#define ESR_ELx_SYS64_ISS_OP0_MASK (UL(0x3) << ESR_ELx_SYS64_ISS_OP0_SHIFT)
|
||||
#define ESR_ELx_SYS64_ISS_SYS_MASK (ESR_ELx_SYS64_ISS_OP0_MASK | \
|
||||
ESR_ELx_SYS64_ISS_OP1_MASK | \
|
||||
ESR_ELx_SYS64_ISS_OP2_MASK | \
|
||||
ESR_ELx_SYS64_ISS_CRN_MASK | \
|
||||
ESR_ELx_SYS64_ISS_CRM_MASK)
|
||||
#define ESR_ELx_SYS64_ISS_SYS_VAL(op0, op1, op2, crn, crm) \
|
||||
(((op0) << ESR_ELx_SYS64_ISS_OP0_SHIFT) | \
|
||||
((op1) << ESR_ELx_SYS64_ISS_OP1_SHIFT) | \
|
||||
((op2) << ESR_ELx_SYS64_ISS_OP2_SHIFT) | \
|
||||
((crn) << ESR_ELx_SYS64_ISS_CRN_SHIFT) | \
|
||||
((crm) << ESR_ELx_SYS64_ISS_CRM_SHIFT))
|
||||
|
||||
#define ESR_ELx_SYS64_ISS_SYS_OP_MASK (ESR_ELx_SYS64_ISS_SYS_MASK | \
|
||||
ESR_ELx_SYS64_ISS_DIR_MASK)
|
||||
#define ESR_ELx_SYS64_ISS_RT(esr) \
|
||||
(((esr) & ESR_ELx_SYS64_ISS_RT_MASK) >> ESR_ELx_SYS64_ISS_RT_SHIFT)
|
||||
/*
|
||||
* User space cache operations have the following sysreg encoding
|
||||
* in System instructions.
|
||||
* op0=1, op1=3, op2=1, crn=7, crm={ 5, 10, 11, 12, 13, 14 }, WRITE (L=0)
|
||||
*/
|
||||
#define ESR_ELx_SYS64_ISS_CRM_DC_CIVAC 14
|
||||
#define ESR_ELx_SYS64_ISS_CRM_DC_CVADP 13
|
||||
#define ESR_ELx_SYS64_ISS_CRM_DC_CVAP 12
|
||||
#define ESR_ELx_SYS64_ISS_CRM_DC_CVAU 11
|
||||
#define ESR_ELx_SYS64_ISS_CRM_DC_CVAC 10
|
||||
#define ESR_ELx_SYS64_ISS_CRM_IC_IVAU 5
|
||||
|
||||
#define ESR_ELx_SYS64_ISS_EL0_CACHE_OP_MASK (ESR_ELx_SYS64_ISS_OP0_MASK | \
|
||||
ESR_ELx_SYS64_ISS_OP1_MASK | \
|
||||
ESR_ELx_SYS64_ISS_OP2_MASK | \
|
||||
ESR_ELx_SYS64_ISS_CRN_MASK | \
|
||||
ESR_ELx_SYS64_ISS_DIR_MASK)
|
||||
#define ESR_ELx_SYS64_ISS_EL0_CACHE_OP_VAL \
|
||||
(ESR_ELx_SYS64_ISS_SYS_VAL(1, 3, 1, 7, 0) | \
|
||||
ESR_ELx_SYS64_ISS_DIR_WRITE)
|
||||
/*
|
||||
* User space MRS operations which are supported for emulation
|
||||
* have the following sysreg encoding in System instructions.
|
||||
* op0 = 3, op1= 0, crn = 0, {crm = 0, 4-7}, READ (L = 1)
|
||||
*/
|
||||
#define ESR_ELx_SYS64_ISS_SYS_MRS_OP_MASK (ESR_ELx_SYS64_ISS_OP0_MASK | \
|
||||
ESR_ELx_SYS64_ISS_OP1_MASK | \
|
||||
ESR_ELx_SYS64_ISS_CRN_MASK | \
|
||||
ESR_ELx_SYS64_ISS_DIR_MASK)
|
||||
#define ESR_ELx_SYS64_ISS_SYS_MRS_OP_VAL \
|
||||
(ESR_ELx_SYS64_ISS_SYS_VAL(3, 0, 0, 0, 0) | \
|
||||
ESR_ELx_SYS64_ISS_DIR_READ)
|
||||
|
||||
#define ESR_ELx_SYS64_ISS_SYS_CTR ESR_ELx_SYS64_ISS_SYS_VAL(3, 3, 1, 0, 0)
|
||||
#define ESR_ELx_SYS64_ISS_SYS_CTR_READ (ESR_ELx_SYS64_ISS_SYS_CTR | \
|
||||
ESR_ELx_SYS64_ISS_DIR_READ)
|
||||
|
||||
#define ESR_ELx_SYS64_ISS_SYS_CNTVCT (ESR_ELx_SYS64_ISS_SYS_VAL(3, 3, 2, 14, 0) | \
|
||||
ESR_ELx_SYS64_ISS_DIR_READ)
|
||||
|
||||
#define ESR_ELx_SYS64_ISS_SYS_CNTVCTSS (ESR_ELx_SYS64_ISS_SYS_VAL(3, 3, 6, 14, 0) | \
|
||||
ESR_ELx_SYS64_ISS_DIR_READ)
|
||||
|
||||
#define ESR_ELx_SYS64_ISS_SYS_CNTFRQ (ESR_ELx_SYS64_ISS_SYS_VAL(3, 3, 0, 14, 0) | \
|
||||
ESR_ELx_SYS64_ISS_DIR_READ)
|
||||
|
||||
#define esr_sys64_to_sysreg(e) \
|
||||
sys_reg((((e) & ESR_ELx_SYS64_ISS_OP0_MASK) >> \
|
||||
ESR_ELx_SYS64_ISS_OP0_SHIFT), \
|
||||
(((e) & ESR_ELx_SYS64_ISS_OP1_MASK) >> \
|
||||
ESR_ELx_SYS64_ISS_OP1_SHIFT), \
|
||||
(((e) & ESR_ELx_SYS64_ISS_CRN_MASK) >> \
|
||||
ESR_ELx_SYS64_ISS_CRN_SHIFT), \
|
||||
(((e) & ESR_ELx_SYS64_ISS_CRM_MASK) >> \
|
||||
ESR_ELx_SYS64_ISS_CRM_SHIFT), \
|
||||
(((e) & ESR_ELx_SYS64_ISS_OP2_MASK) >> \
|
||||
ESR_ELx_SYS64_ISS_OP2_SHIFT))
|
||||
|
||||
#define esr_cp15_to_sysreg(e) \
|
||||
sys_reg(3, \
|
||||
(((e) & ESR_ELx_SYS64_ISS_OP1_MASK) >> \
|
||||
ESR_ELx_SYS64_ISS_OP1_SHIFT), \
|
||||
(((e) & ESR_ELx_SYS64_ISS_CRN_MASK) >> \
|
||||
ESR_ELx_SYS64_ISS_CRN_SHIFT), \
|
||||
(((e) & ESR_ELx_SYS64_ISS_CRM_MASK) >> \
|
||||
ESR_ELx_SYS64_ISS_CRM_SHIFT), \
|
||||
(((e) & ESR_ELx_SYS64_ISS_OP2_MASK) >> \
|
||||
ESR_ELx_SYS64_ISS_OP2_SHIFT))
|
||||
|
||||
/*
|
||||
* ISS field definitions for floating-point exception traps
|
||||
* (FP_EXC_32/FP_EXC_64).
|
||||
*
|
||||
* (The FPEXC_* constants are used instead for common bits.)
|
||||
*/
|
||||
|
||||
#define ESR_ELx_FP_EXC_TFV (UL(1) << 23)
|
||||
|
||||
/*
|
||||
* ISS field definitions for CP15 accesses
|
||||
*/
|
||||
#define ESR_ELx_CP15_32_ISS_DIR_MASK 0x1
|
||||
#define ESR_ELx_CP15_32_ISS_DIR_READ 0x1
|
||||
#define ESR_ELx_CP15_32_ISS_DIR_WRITE 0x0
|
||||
|
||||
#define ESR_ELx_CP15_32_ISS_RT_SHIFT 5
|
||||
#define ESR_ELx_CP15_32_ISS_RT_MASK (UL(0x1f) << ESR_ELx_CP15_32_ISS_RT_SHIFT)
|
||||
#define ESR_ELx_CP15_32_ISS_CRM_SHIFT 1
|
||||
#define ESR_ELx_CP15_32_ISS_CRM_MASK (UL(0xf) << ESR_ELx_CP15_32_ISS_CRM_SHIFT)
|
||||
#define ESR_ELx_CP15_32_ISS_CRN_SHIFT 10
|
||||
#define ESR_ELx_CP15_32_ISS_CRN_MASK (UL(0xf) << ESR_ELx_CP15_32_ISS_CRN_SHIFT)
|
||||
#define ESR_ELx_CP15_32_ISS_OP1_SHIFT 14
|
||||
#define ESR_ELx_CP15_32_ISS_OP1_MASK (UL(0x7) << ESR_ELx_CP15_32_ISS_OP1_SHIFT)
|
||||
#define ESR_ELx_CP15_32_ISS_OP2_SHIFT 17
|
||||
#define ESR_ELx_CP15_32_ISS_OP2_MASK (UL(0x7) << ESR_ELx_CP15_32_ISS_OP2_SHIFT)
|
||||
|
||||
#define ESR_ELx_CP15_32_ISS_SYS_MASK (ESR_ELx_CP15_32_ISS_OP1_MASK | \
|
||||
ESR_ELx_CP15_32_ISS_OP2_MASK | \
|
||||
ESR_ELx_CP15_32_ISS_CRN_MASK | \
|
||||
ESR_ELx_CP15_32_ISS_CRM_MASK | \
|
||||
ESR_ELx_CP15_32_ISS_DIR_MASK)
|
||||
#define ESR_ELx_CP15_32_ISS_SYS_VAL(op1, op2, crn, crm) \
|
||||
(((op1) << ESR_ELx_CP15_32_ISS_OP1_SHIFT) | \
|
||||
((op2) << ESR_ELx_CP15_32_ISS_OP2_SHIFT) | \
|
||||
((crn) << ESR_ELx_CP15_32_ISS_CRN_SHIFT) | \
|
||||
((crm) << ESR_ELx_CP15_32_ISS_CRM_SHIFT))
|
||||
|
||||
#define ESR_ELx_CP15_64_ISS_DIR_MASK 0x1
|
||||
#define ESR_ELx_CP15_64_ISS_DIR_READ 0x1
|
||||
#define ESR_ELx_CP15_64_ISS_DIR_WRITE 0x0
|
||||
|
||||
#define ESR_ELx_CP15_64_ISS_RT_SHIFT 5
|
||||
#define ESR_ELx_CP15_64_ISS_RT_MASK (UL(0x1f) << ESR_ELx_CP15_64_ISS_RT_SHIFT)
|
||||
|
||||
#define ESR_ELx_CP15_64_ISS_RT2_SHIFT 10
|
||||
#define ESR_ELx_CP15_64_ISS_RT2_MASK (UL(0x1f) << ESR_ELx_CP15_64_ISS_RT2_SHIFT)
|
||||
|
||||
#define ESR_ELx_CP15_64_ISS_OP1_SHIFT 16
|
||||
#define ESR_ELx_CP15_64_ISS_OP1_MASK (UL(0xf) << ESR_ELx_CP15_64_ISS_OP1_SHIFT)
|
||||
#define ESR_ELx_CP15_64_ISS_CRM_SHIFT 1
|
||||
#define ESR_ELx_CP15_64_ISS_CRM_MASK (UL(0xf) << ESR_ELx_CP15_64_ISS_CRM_SHIFT)
|
||||
|
||||
#define ESR_ELx_CP15_64_ISS_SYS_VAL(op1, crm) \
|
||||
(((op1) << ESR_ELx_CP15_64_ISS_OP1_SHIFT) | \
|
||||
((crm) << ESR_ELx_CP15_64_ISS_CRM_SHIFT))
|
||||
|
||||
#define ESR_ELx_CP15_64_ISS_SYS_MASK (ESR_ELx_CP15_64_ISS_OP1_MASK | \
|
||||
ESR_ELx_CP15_64_ISS_CRM_MASK | \
|
||||
ESR_ELx_CP15_64_ISS_DIR_MASK)
|
||||
|
||||
#define ESR_ELx_CP15_64_ISS_SYS_CNTVCT (ESR_ELx_CP15_64_ISS_SYS_VAL(1, 14) | \
|
||||
ESR_ELx_CP15_64_ISS_DIR_READ)
|
||||
|
||||
#define ESR_ELx_CP15_64_ISS_SYS_CNTVCTSS (ESR_ELx_CP15_64_ISS_SYS_VAL(9, 14) | \
|
||||
ESR_ELx_CP15_64_ISS_DIR_READ)
|
||||
|
||||
#define ESR_ELx_CP15_32_ISS_SYS_CNTFRQ (ESR_ELx_CP15_32_ISS_SYS_VAL(0, 0, 14, 0) |\
|
||||
ESR_ELx_CP15_32_ISS_DIR_READ)
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
#include <asm/types.h>
|
||||
|
||||
static inline bool esr_is_data_abort(u32 esr)
|
||||
{
|
||||
const u32 ec = ESR_ELx_EC(esr);
|
||||
|
||||
return ec == ESR_ELx_EC_DABT_LOW || ec == ESR_ELx_EC_DABT_CUR;
|
||||
}
|
||||
|
||||
const char *esr_get_class_string(u32 esr);
|
||||
#endif /* __ASSEMBLY */
|
||||
|
||||
#endif /* __ASM_ESR_H */
|
|
@ -1,45 +1,26 @@
|
|||
/*
|
||||
* linux/include/asm-arm/io.h
|
||||
* I/O device access primitives. Based on early versions from the Linux kernel.
|
||||
*
|
||||
* Copyright (C) 1996-2000 Russell King
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* Modifications:
|
||||
* 16-Sep-1996 RMK Inlined the inx/outx functions & optimised for both
|
||||
* constant addresses and variable addresses.
|
||||
* 04-Dec-1997 RMK Moved a lot of this stuff to the new architecture
|
||||
* specific IO header files.
|
||||
* 27-Mar-1999 PJB Second parameter of memcpy_toio is const..
|
||||
* 04-Apr-1999 PJB Added check_signature.
|
||||
* 12-Dec-1999 RMK More cleanups
|
||||
* 18-Jun-2000 RMK Removed virt_to_* and friends definitions
|
||||
*/
|
||||
#ifndef __ASM_ARM_IO_H
|
||||
#define __ASM_ARM_IO_H
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <asm/byteorder.h>
|
||||
#include <asm/memory.h>
|
||||
#include <asm/barriers.h>
|
||||
#if 0 /* XXX###XXX */
|
||||
#include <asm/arch/hardware.h>
|
||||
#endif /* XXX###XXX */
|
||||
|
||||
static inline void sync(void)
|
||||
{
|
||||
}
|
||||
|
||||
/*
|
||||
* Generic virtual read/write. Note that we don't support half-word
|
||||
* read/writes. We define __arch_*[bl] here, and leave __arch_*w
|
||||
* to the architecture specific code.
|
||||
*/
|
||||
/* Generic virtual read/write. */
|
||||
#define __arch_getb(a) (*(volatile unsigned char *)(a))
|
||||
#define __arch_getw(a) (*(volatile unsigned short *)(a))
|
||||
#define __arch_getl(a) (*(volatile unsigned int *)(a))
|
||||
|
@ -247,13 +228,6 @@ static inline void __raw_readsl(unsigned long addr, void *data, int longlen)
|
|||
#define setbits_64(addr, set) setbits(64, addr, set)
|
||||
#define clrsetbits_64(addr, clear, set) clrsetbits(64, addr, clear, set)
|
||||
|
||||
/*
|
||||
* Now, pick up the machine-defined IO definitions
|
||||
*/
|
||||
#if 0 /* XXX###XXX */
|
||||
#include <asm/arch/io.h>
|
||||
#endif /* XXX###XXX */
|
||||
|
||||
/*
|
||||
* IO port access primitives
|
||||
* -------------------------
|
||||
|
@ -317,16 +291,6 @@ static inline void __raw_readsl(unsigned long addr, void *data, int longlen)
|
|||
#define writesb(a, d, s) __raw_writesb((unsigned long)a, d, s)
|
||||
#define readsb(a, d, s) __raw_readsb((unsigned long)a, d, s)
|
||||
|
||||
/*
|
||||
* DMA-consistent mapping functions. These allocate/free a region of
|
||||
* uncached, unwrite-buffered mapped memory space for use with DMA
|
||||
* devices. This is the "generic" version. The PCI specific version
|
||||
* is in pci.h
|
||||
*/
|
||||
extern void *consistent_alloc(int gfp, size_t size, dma_addr_t *handle);
|
||||
extern void consistent_free(void *vaddr, size_t size, dma_addr_t handle);
|
||||
extern void consistent_sync(void *vaddr, size_t size, int rw);
|
||||
|
||||
/*
|
||||
* String version of IO memory access ops:
|
||||
*/
|
||||
|
@ -334,8 +298,6 @@ extern void _memcpy_fromio(void *, unsigned long, size_t);
|
|||
extern void _memcpy_toio(unsigned long, const void *, size_t);
|
||||
extern void _memset_io(unsigned long, int, size_t);
|
||||
|
||||
extern void __readwrite_bug(const char *fn);
|
||||
|
||||
/* Optimized copy functions to read from/write to IO sapce */
|
||||
#ifdef CONFIG_ARM64
|
||||
#include <cpu_func.h>
|
||||
|
@ -441,62 +403,6 @@ void __memset_io(volatile void __iomem *dst, int c, size_t count)
|
|||
#define memcpy_toio(a, b, c) memcpy((void *)(a), (b), (c))
|
||||
#endif
|
||||
|
||||
/*
|
||||
* If this architecture has ISA IO, then define the isa_read/isa_write
|
||||
* macros.
|
||||
*/
|
||||
#ifdef __mem_isa
|
||||
|
||||
#define isa_readb(addr) __raw_readb(__mem_isa(addr))
|
||||
#define isa_readw(addr) __raw_readw(__mem_isa(addr))
|
||||
#define isa_readl(addr) __raw_readl(__mem_isa(addr))
|
||||
#define isa_writeb(val,addr) __raw_writeb(val,__mem_isa(addr))
|
||||
#define isa_writew(val,addr) __raw_writew(val,__mem_isa(addr))
|
||||
#define isa_writel(val,addr) __raw_writel(val,__mem_isa(addr))
|
||||
#define isa_memset_io(a,b,c) _memset_io(__mem_isa(a),(b),(c))
|
||||
#define isa_memcpy_fromio(a,b,c) _memcpy_fromio((a),__mem_isa(b),(c))
|
||||
#define isa_memcpy_toio(a,b,c) _memcpy_toio(__mem_isa((a)),(b),(c))
|
||||
|
||||
#define isa_eth_io_copy_and_sum(a,b,c,d) \
|
||||
eth_copy_and_sum((a),__mem_isa(b),(c),(d))
|
||||
|
||||
static inline int
|
||||
isa_check_signature(unsigned long io_addr, const unsigned char *signature,
|
||||
int length)
|
||||
{
|
||||
int retval = 0;
|
||||
do {
|
||||
if (isa_readb(io_addr) != *signature)
|
||||
goto out;
|
||||
io_addr++;
|
||||
signature++;
|
||||
length--;
|
||||
} while (length);
|
||||
retval = 1;
|
||||
out:
|
||||
return retval;
|
||||
}
|
||||
|
||||
#else /* __mem_isa */
|
||||
|
||||
#define isa_readb(addr) (__readwrite_bug("isa_readb"),0)
|
||||
#define isa_readw(addr) (__readwrite_bug("isa_readw"),0)
|
||||
#define isa_readl(addr) (__readwrite_bug("isa_readl"),0)
|
||||
#define isa_writeb(val,addr) __readwrite_bug("isa_writeb")
|
||||
#define isa_writew(val,addr) __readwrite_bug("isa_writew")
|
||||
#define isa_writel(val,addr) __readwrite_bug("isa_writel")
|
||||
#define isa_memset_io(a,b,c) __readwrite_bug("isa_memset_io")
|
||||
#define isa_memcpy_fromio(a,b,c) __readwrite_bug("isa_memcpy_fromio")
|
||||
#define isa_memcpy_toio(a,b,c) __readwrite_bug("isa_memcpy_toio")
|
||||
|
||||
#define isa_eth_io_copy_and_sum(a,b,c,d) \
|
||||
__readwrite_bug("isa_eth_io_copy_and_sum")
|
||||
|
||||
#define isa_check_signature(io,sig,len) (0)
|
||||
|
||||
#endif /* __mem_isa */
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
#include <asm-generic/io.h>
|
||||
#include <iotrace.h>
|
||||
|
||||
|
|
|
@ -6,12 +6,7 @@
|
|||
#ifndef __MX5_VIDEO_H
|
||||
#define __MX5_VIDEO_H
|
||||
|
||||
#ifdef CONFIG_VIDEO
|
||||
void lcd_enable(void);
|
||||
void setup_iomux_lcd(void);
|
||||
#else
|
||||
static inline void lcd_enable(void) { }
|
||||
static inline void setup_iomux_lcd(void) { }
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
|
@ -69,12 +69,10 @@ lr .req x30
|
|||
*/
|
||||
.macro switch_el, xreg, el3_label, el2_label, el1_label
|
||||
mrs \xreg, CurrentEL
|
||||
cmp \xreg, 0xc
|
||||
b.eq \el3_label
|
||||
cmp \xreg, 0x8
|
||||
cmp \xreg, #0x8
|
||||
b.gt \el3_label
|
||||
b.eq \el2_label
|
||||
cmp \xreg, 0x4
|
||||
b.eq \el1_label
|
||||
b.lt \el1_label
|
||||
.endm
|
||||
|
||||
/*
|
||||
|
@ -123,19 +121,10 @@ lr .req x30
|
|||
*/
|
||||
.macro branch_if_slave, xreg, slave_label
|
||||
#ifdef CONFIG_ARMV8_MULTIENTRY
|
||||
/* NOTE: MPIDR handling will be erroneous on multi-cluster machines */
|
||||
mrs \xreg, mpidr_el1
|
||||
tst \xreg, #0xff /* Test Affinity 0 */
|
||||
b.ne \slave_label
|
||||
lsr \xreg, \xreg, #8
|
||||
tst \xreg, #0xff /* Test Affinity 1 */
|
||||
b.ne \slave_label
|
||||
lsr \xreg, \xreg, #8
|
||||
tst \xreg, #0xff /* Test Affinity 2 */
|
||||
b.ne \slave_label
|
||||
lsr \xreg, \xreg, #16
|
||||
tst \xreg, #0xff /* Test Affinity 3 */
|
||||
b.ne \slave_label
|
||||
and \xreg, \xreg, 0xffffffffff /* clear bits [63:40] */
|
||||
and \xreg, \xreg, ~0x00ff000000 /* also clear bits [31:24] */
|
||||
cbnz \xreg, \slave_label
|
||||
#endif
|
||||
.endm
|
||||
|
||||
|
@ -143,16 +132,12 @@ lr .req x30
|
|||
* Branch if current processor is a master,
|
||||
* choose processor with all zero affinity value as the master.
|
||||
*/
|
||||
.macro branch_if_master, xreg1, xreg2, master_label
|
||||
.macro branch_if_master, xreg, master_label
|
||||
#ifdef CONFIG_ARMV8_MULTIENTRY
|
||||
/* NOTE: MPIDR handling will be erroneous on multi-cluster machines */
|
||||
mrs \xreg1, mpidr_el1
|
||||
lsr \xreg2, \xreg1, #32
|
||||
lsl \xreg2, \xreg2, #32
|
||||
lsl \xreg1, \xreg1, #40
|
||||
lsr \xreg1, \xreg1, #40
|
||||
orr \xreg1, \xreg1, \xreg2
|
||||
cbz \xreg1, \master_label
|
||||
mrs \xreg, mpidr_el1
|
||||
and \xreg, \xreg, 0xffffffffff /* clear bits [63:40] */
|
||||
and \xreg, \xreg, ~0x00ff000000 /* also clear bits [31:24] */
|
||||
cbz \xreg, \master_label
|
||||
#else
|
||||
b \master_label
|
||||
#endif
|
||||
|
|
|
@ -14,6 +14,79 @@
|
|||
|
||||
#define PCMASK 0
|
||||
|
||||
/*
|
||||
* PSR bits
|
||||
*/
|
||||
#define PSR_MODE_EL0t 0x00000000
|
||||
#define PSR_MODE_EL1t 0x00000004
|
||||
#define PSR_MODE_EL1h 0x00000005
|
||||
#define PSR_MODE_EL2t 0x00000008
|
||||
#define PSR_MODE_EL2h 0x00000009
|
||||
#define PSR_MODE_EL3t 0x0000000c
|
||||
#define PSR_MODE_EL3h 0x0000000d
|
||||
#define PSR_MODE_MASK 0x0000000f
|
||||
|
||||
/* AArch32 CPSR bits */
|
||||
#define PSR_MODE32_BIT 0x00000010
|
||||
|
||||
/* AArch64 SPSR bits */
|
||||
#define PSR_F_BIT 0x00000040
|
||||
#define PSR_I_BIT 0x00000080
|
||||
#define PSR_A_BIT 0x00000100
|
||||
#define PSR_D_BIT 0x00000200
|
||||
#define PSR_BTYPE_MASK 0x00000c00
|
||||
#define PSR_SSBS_BIT 0x00001000
|
||||
#define PSR_PAN_BIT 0x00400000
|
||||
#define PSR_UAO_BIT 0x00800000
|
||||
#define PSR_DIT_BIT 0x01000000
|
||||
#define PSR_TCO_BIT 0x02000000
|
||||
#define PSR_V_BIT 0x10000000
|
||||
#define PSR_C_BIT 0x20000000
|
||||
#define PSR_Z_BIT 0x40000000
|
||||
#define PSR_N_BIT 0x80000000
|
||||
|
||||
#define PSR_BTYPE_SHIFT 10
|
||||
|
||||
/*
|
||||
* Groups of PSR bits
|
||||
*/
|
||||
#define PSR_f 0xff000000 /* Flags */
|
||||
#define PSR_s 0x00ff0000 /* Status */
|
||||
#define PSR_x 0x0000ff00 /* Extension */
|
||||
#define PSR_c 0x000000ff /* Control */
|
||||
|
||||
/* Convenience names for the values of PSTATE.BTYPE */
|
||||
#define PSR_BTYPE_NONE (0b00 << PSR_BTYPE_SHIFT)
|
||||
#define PSR_BTYPE_JC (0b01 << PSR_BTYPE_SHIFT)
|
||||
#define PSR_BTYPE_C (0b10 << PSR_BTYPE_SHIFT)
|
||||
#define PSR_BTYPE_J (0b11 << PSR_BTYPE_SHIFT)
|
||||
|
||||
/* SPSR_ELx bits for exceptions taken from AArch32 */
|
||||
#define PSR_AA32_MODE_MASK 0x0000001f
|
||||
#define PSR_AA32_MODE_USR 0x00000010
|
||||
#define PSR_AA32_MODE_FIQ 0x00000011
|
||||
#define PSR_AA32_MODE_IRQ 0x00000012
|
||||
#define PSR_AA32_MODE_SVC 0x00000013
|
||||
#define PSR_AA32_MODE_ABT 0x00000017
|
||||
#define PSR_AA32_MODE_HYP 0x0000001a
|
||||
#define PSR_AA32_MODE_UND 0x0000001b
|
||||
#define PSR_AA32_MODE_SYS 0x0000001f
|
||||
#define PSR_AA32_T_BIT 0x00000020
|
||||
#define PSR_AA32_F_BIT 0x00000040
|
||||
#define PSR_AA32_I_BIT 0x00000080
|
||||
#define PSR_AA32_A_BIT 0x00000100
|
||||
#define PSR_AA32_E_BIT 0x00000200
|
||||
#define PSR_AA32_PAN_BIT 0x00400000
|
||||
#define PSR_AA32_SSBS_BIT 0x00800000
|
||||
#define PSR_AA32_DIT_BIT 0x01000000
|
||||
#define PSR_AA32_Q_BIT 0x08000000
|
||||
#define PSR_AA32_V_BIT 0x10000000
|
||||
#define PSR_AA32_C_BIT 0x20000000
|
||||
#define PSR_AA32_Z_BIT 0x40000000
|
||||
#define PSR_AA32_N_BIT 0x80000000
|
||||
#define PSR_AA32_IT_MASK 0x0600fc00 /* If-Then execution state mask */
|
||||
#define PSR_AA32_GE_MASK 0x000f0000
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
/*
|
||||
|
@ -21,7 +94,9 @@
|
|||
* on the stack during an exception.
|
||||
*/
|
||||
struct pt_regs {
|
||||
unsigned long spsr;
|
||||
unsigned long elr;
|
||||
unsigned long esr;
|
||||
unsigned long regs[31];
|
||||
};
|
||||
|
||||
|
|
|
@ -30,6 +30,7 @@ enum {
|
|||
BOOT_DEVICE_DFU,
|
||||
BOOT_DEVICE_XIP,
|
||||
BOOT_DEVICE_BOOTROM,
|
||||
BOOT_DEVICE_SMH,
|
||||
BOOT_DEVICE_NONE
|
||||
};
|
||||
#endif
|
||||
|
|
|
@ -82,6 +82,7 @@
|
|||
#define HCR_EL2_RW_AARCH64 (1 << 31) /* EL1 is AArch64 */
|
||||
#define HCR_EL2_RW_AARCH32 (0 << 31) /* Lower levels are AArch32 */
|
||||
#define HCR_EL2_HCD_DIS (1 << 29) /* Hypervisor Call disabled */
|
||||
#define HCR_EL2_AMO_EL2 (1 << 5) /* Route SErrors to EL2 */
|
||||
|
||||
/*
|
||||
* ID_AA64ISAR1_EL1 bits definitions
|
||||
|
|
|
@ -46,13 +46,8 @@ void do_software_interrupt(struct pt_regs *pt_regs);
|
|||
void do_prefetch_abort(struct pt_regs *pt_regs);
|
||||
void do_data_abort(struct pt_regs *pt_regs);
|
||||
void do_not_used(struct pt_regs *pt_regs);
|
||||
#ifdef CONFIG_ARM64
|
||||
void do_fiq(struct pt_regs *pt_regs, unsigned int esr);
|
||||
void do_irq(struct pt_regs *pt_regs, unsigned int esr);
|
||||
#else
|
||||
void do_fiq(struct pt_regs *pt_regs);
|
||||
void do_irq(struct pt_regs *pt_regswq);
|
||||
#endif
|
||||
void do_irq(struct pt_regs *pt_regs);
|
||||
|
||||
void reset_misc(void);
|
||||
|
||||
|
|
|
@ -46,7 +46,7 @@ else
|
|||
obj-$(CONFIG_$(SPL_TPL_)USE_ARCH_MEMSET) += memset.o
|
||||
obj-$(CONFIG_$(SPL_TPL_)USE_ARCH_MEMCPY) += memcpy.o
|
||||
endif
|
||||
obj-$(CONFIG_SEMIHOSTING) += semihosting.o
|
||||
obj-$(CONFIG_$(SPL_TPL_)SEMIHOSTING) += semihosting.o
|
||||
|
||||
obj-y += bdinfo.o
|
||||
obj-y += sections.o
|
||||
|
|
|
@ -5,11 +5,13 @@
|
|||
*/
|
||||
|
||||
#include <common.h>
|
||||
#include <asm/esr.h>
|
||||
#include <asm/global_data.h>
|
||||
#include <asm/ptrace.h>
|
||||
#include <irq_func.h>
|
||||
#include <linux/compiler.h>
|
||||
#include <efi_loader.h>
|
||||
#include <semihosting.h>
|
||||
|
||||
DECLARE_GLOBAL_DATA_PTR;
|
||||
|
||||
|
@ -63,13 +65,56 @@ void show_regs(struct pt_regs *regs)
|
|||
dump_instr(regs);
|
||||
}
|
||||
|
||||
/*
|
||||
* Try to "emulate" a semihosting call in the event that we don't have a
|
||||
* debugger attached.
|
||||
*/
|
||||
static bool smh_emulate_trap(struct pt_regs *regs)
|
||||
{
|
||||
int size;
|
||||
|
||||
if (ESR_ELx_EC(regs->esr) != ESR_ELx_EC_UNKNOWN)
|
||||
return false;
|
||||
|
||||
if (regs->spsr & PSR_MODE32_BIT) {
|
||||
if (regs->spsr & PSR_AA32_T_BIT) {
|
||||
u16 *insn = (u16 *)ALIGN_DOWN(regs->elr, 2);
|
||||
|
||||
if (*insn != SMH_T32_SVC && *insn != SMH_T32_HLT)
|
||||
return false;
|
||||
size = 2;
|
||||
} else {
|
||||
u32 *insn = (u32 *)ALIGN_DOWN(regs->elr, 4);
|
||||
|
||||
if (*insn != SMH_A32_SVC && *insn != SMH_A32_HLT)
|
||||
return false;
|
||||
size = 4;
|
||||
}
|
||||
} else {
|
||||
u32 *insn = (u32 *)ALIGN_DOWN(regs->elr, 4);
|
||||
|
||||
if (*insn != SMH_A64_HLT)
|
||||
return false;
|
||||
size = 4;
|
||||
}
|
||||
|
||||
/* Avoid future semihosting calls */
|
||||
disable_semihosting();
|
||||
|
||||
/* Just pretend the call failed */
|
||||
regs->regs[0] = -1;
|
||||
regs->elr += size;
|
||||
return true;
|
||||
}
|
||||
|
||||
/*
|
||||
* do_bad_sync handles the impossible case in the Synchronous Abort vector.
|
||||
*/
|
||||
void do_bad_sync(struct pt_regs *pt_regs, unsigned int esr)
|
||||
void do_bad_sync(struct pt_regs *pt_regs)
|
||||
{
|
||||
efi_restore_gd();
|
||||
printf("Bad mode in \"Synchronous Abort\" handler, esr 0x%08x\n", esr);
|
||||
printf("Bad mode in \"Synchronous Abort\" handler, esr 0x%08lx\n",
|
||||
pt_regs->esr);
|
||||
show_regs(pt_regs);
|
||||
show_efi_loaded_images(pt_regs);
|
||||
panic("Resetting CPU ...\n");
|
||||
|
@ -78,10 +123,10 @@ void do_bad_sync(struct pt_regs *pt_regs, unsigned int esr)
|
|||
/*
|
||||
* do_bad_irq handles the impossible case in the Irq vector.
|
||||
*/
|
||||
void do_bad_irq(struct pt_regs *pt_regs, unsigned int esr)
|
||||
void do_bad_irq(struct pt_regs *pt_regs)
|
||||
{
|
||||
efi_restore_gd();
|
||||
printf("Bad mode in \"Irq\" handler, esr 0x%08x\n", esr);
|
||||
printf("Bad mode in \"Irq\" handler, esr 0x%08lx\n", pt_regs->esr);
|
||||
show_regs(pt_regs);
|
||||
show_efi_loaded_images(pt_regs);
|
||||
panic("Resetting CPU ...\n");
|
||||
|
@ -90,10 +135,10 @@ void do_bad_irq(struct pt_regs *pt_regs, unsigned int esr)
|
|||
/*
|
||||
* do_bad_fiq handles the impossible case in the Fiq vector.
|
||||
*/
|
||||
void do_bad_fiq(struct pt_regs *pt_regs, unsigned int esr)
|
||||
void do_bad_fiq(struct pt_regs *pt_regs)
|
||||
{
|
||||
efi_restore_gd();
|
||||
printf("Bad mode in \"Fiq\" handler, esr 0x%08x\n", esr);
|
||||
printf("Bad mode in \"Fiq\" handler, esr 0x%08lx\n", pt_regs->esr);
|
||||
show_regs(pt_regs);
|
||||
show_efi_loaded_images(pt_regs);
|
||||
panic("Resetting CPU ...\n");
|
||||
|
@ -102,10 +147,10 @@ void do_bad_fiq(struct pt_regs *pt_regs, unsigned int esr)
|
|||
/*
|
||||
* do_bad_error handles the impossible case in the Error vector.
|
||||
*/
|
||||
void do_bad_error(struct pt_regs *pt_regs, unsigned int esr)
|
||||
void do_bad_error(struct pt_regs *pt_regs)
|
||||
{
|
||||
efi_restore_gd();
|
||||
printf("Bad mode in \"Error\" handler, esr 0x%08x\n", esr);
|
||||
printf("Bad mode in \"Error\" handler, esr 0x%08lx\n", pt_regs->esr);
|
||||
show_regs(pt_regs);
|
||||
show_efi_loaded_images(pt_regs);
|
||||
panic("Resetting CPU ...\n");
|
||||
|
@ -114,10 +159,13 @@ void do_bad_error(struct pt_regs *pt_regs, unsigned int esr)
|
|||
/*
|
||||
* do_sync handles the Synchronous Abort exception.
|
||||
*/
|
||||
void do_sync(struct pt_regs *pt_regs, unsigned int esr)
|
||||
void do_sync(struct pt_regs *pt_regs)
|
||||
{
|
||||
if (CONFIG_IS_ENABLED(SEMIHOSTING_FALLBACK) &&
|
||||
smh_emulate_trap(pt_regs))
|
||||
return;
|
||||
efi_restore_gd();
|
||||
printf("\"Synchronous Abort\" handler, esr 0x%08x\n", esr);
|
||||
printf("\"Synchronous Abort\" handler, esr 0x%08lx\n", pt_regs->esr);
|
||||
show_regs(pt_regs);
|
||||
show_efi_loaded_images(pt_regs);
|
||||
panic("Resetting CPU ...\n");
|
||||
|
@ -126,10 +174,10 @@ void do_sync(struct pt_regs *pt_regs, unsigned int esr)
|
|||
/*
|
||||
* do_irq handles the Irq exception.
|
||||
*/
|
||||
void do_irq(struct pt_regs *pt_regs, unsigned int esr)
|
||||
void do_irq(struct pt_regs *pt_regs)
|
||||
{
|
||||
efi_restore_gd();
|
||||
printf("\"Irq\" handler, esr 0x%08x\n", esr);
|
||||
printf("\"Irq\" handler, esr 0x%08lx\n", pt_regs->esr);
|
||||
show_regs(pt_regs);
|
||||
show_efi_loaded_images(pt_regs);
|
||||
panic("Resetting CPU ...\n");
|
||||
|
@ -138,10 +186,10 @@ void do_irq(struct pt_regs *pt_regs, unsigned int esr)
|
|||
/*
|
||||
* do_fiq handles the Fiq exception.
|
||||
*/
|
||||
void do_fiq(struct pt_regs *pt_regs, unsigned int esr)
|
||||
void do_fiq(struct pt_regs *pt_regs)
|
||||
{
|
||||
efi_restore_gd();
|
||||
printf("\"Fiq\" handler, esr 0x%08x\n", esr);
|
||||
printf("\"Fiq\" handler, esr 0x%08lx\n", pt_regs->esr);
|
||||
show_regs(pt_regs);
|
||||
show_efi_loaded_images(pt_regs);
|
||||
panic("Resetting CPU ...\n");
|
||||
|
@ -153,10 +201,10 @@ void do_fiq(struct pt_regs *pt_regs, unsigned int esr)
|
|||
* it is defined with weak attribute and can be redefined
|
||||
* in processor specific code.
|
||||
*/
|
||||
void __weak do_error(struct pt_regs *pt_regs, unsigned int esr)
|
||||
void __weak do_error(struct pt_regs *pt_regs)
|
||||
{
|
||||
efi_restore_gd();
|
||||
printf("\"Error\" handler, esr 0x%08x\n", esr);
|
||||
printf("\"Error\" handler, esr 0x%08lx\n", pt_regs->esr);
|
||||
show_regs(pt_regs);
|
||||
show_efi_loaded_images(pt_regs);
|
||||
panic("Resetting CPU ...\n");
|
||||
|
|
|
@ -1,28 +1,29 @@
|
|||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* Copyright (C) 2022 Sean Anderson <sean.anderson@seco.com>
|
||||
* Copyright 2014 Broadcom Corporation
|
||||
*/
|
||||
|
||||
/*
|
||||
* Minimal semihosting implementation for reading files into memory. If more
|
||||
* features like writing files or console output are required they can be
|
||||
* added later. This code has been tested on arm64/aarch64 fastmodel only.
|
||||
* An untested placeholder exists for armv7 architectures, but since they
|
||||
* are commonly available in silicon now, fastmodel usage makes less sense
|
||||
* for them.
|
||||
* This code has been tested on arm64/aarch64 fastmodel only. An untested
|
||||
* placeholder exists for armv7 architectures, but since they are commonly
|
||||
* available in silicon now, fastmodel usage makes less sense for them.
|
||||
*/
|
||||
#include <common.h>
|
||||
#include <command.h>
|
||||
#include <env.h>
|
||||
#include <log.h>
|
||||
#include <semihosting.h>
|
||||
|
||||
#define SYSOPEN 0x01
|
||||
#define SYSCLOSE 0x02
|
||||
#define SYSWRITEC 0x03
|
||||
#define SYSWRITE0 0x04
|
||||
#define SYSWRITE 0x05
|
||||
#define SYSREAD 0x06
|
||||
#define SYSREADC 0x07
|
||||
#define SYSISERROR 0x08
|
||||
#define SYSSEEK 0x0A
|
||||
#define SYSFLEN 0x0C
|
||||
|
||||
#define MODE_READ 0x0
|
||||
#define MODE_READBIN 0x1
|
||||
#define SYSERRNO 0x13
|
||||
|
||||
/*
|
||||
* Call the handler
|
||||
|
@ -41,32 +42,54 @@ static noinline long smh_trap(unsigned int sysnum, void *addr)
|
|||
return result;
|
||||
}
|
||||
|
||||
/*
|
||||
* Open a file on the host. Mode is "r" or "rb" currently. Returns a file
|
||||
* descriptor or -1 on error.
|
||||
#if CONFIG_IS_ENABLED(SEMIHOSTING_FALLBACK)
|
||||
static bool _semihosting_enabled = true;
|
||||
static bool try_semihosting = true;
|
||||
|
||||
bool semihosting_enabled(void)
|
||||
{
|
||||
if (try_semihosting) {
|
||||
smh_trap(SYSERRNO, NULL);
|
||||
try_semihosting = false;
|
||||
}
|
||||
|
||||
return _semihosting_enabled;
|
||||
}
|
||||
|
||||
void disable_semihosting(void)
|
||||
{
|
||||
_semihosting_enabled = false;
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* smh_errno() - Read the host's errno
|
||||
*
|
||||
* This gets the value of the host's errno and negates it. The host's errno may
|
||||
* or may not be set, so only call this function if a previous semihosting call
|
||||
* has failed.
|
||||
*
|
||||
* Return: a negative error value
|
||||
*/
|
||||
static long smh_open(const char *fname, char *modestr)
|
||||
static int smh_errno(void)
|
||||
{
|
||||
long ret = smh_trap(SYSERRNO, NULL);
|
||||
|
||||
if (ret > 0 && ret < INT_MAX)
|
||||
return -ret;
|
||||
return -EIO;
|
||||
}
|
||||
|
||||
long smh_open(const char *fname, enum smh_open_mode mode)
|
||||
{
|
||||
long fd;
|
||||
unsigned long mode;
|
||||
struct smh_open_s {
|
||||
const char *fname;
|
||||
unsigned long mode;
|
||||
size_t len;
|
||||
} open;
|
||||
|
||||
debug("%s: file \'%s\', mode \'%s\'\n", __func__, fname, modestr);
|
||||
|
||||
/* Check the file mode */
|
||||
if (!(strcmp(modestr, "r"))) {
|
||||
mode = MODE_READ;
|
||||
} else if (!(strcmp(modestr, "rb"))) {
|
||||
mode = MODE_READBIN;
|
||||
} else {
|
||||
printf("%s: ERROR mode \'%s\' not supported\n", __func__,
|
||||
modestr);
|
||||
return -1;
|
||||
}
|
||||
debug("%s: file \'%s\', mode \'%u\'\n", __func__, fname, mode);
|
||||
|
||||
open.fname = fname;
|
||||
open.len = strlen(fname);
|
||||
|
@ -75,23 +98,26 @@ static long smh_open(const char *fname, char *modestr)
|
|||
/* Open the file on the host */
|
||||
fd = smh_trap(SYSOPEN, &open);
|
||||
if (fd == -1)
|
||||
printf("%s: ERROR fd %ld for file \'%s\'\n", __func__, fd,
|
||||
fname);
|
||||
|
||||
return smh_errno();
|
||||
return fd;
|
||||
}
|
||||
|
||||
/*
|
||||
* Read 'len' bytes of file into 'memp'. Returns 0 on success, else failure
|
||||
/**
|
||||
* struct smg_rdwr_s - Arguments for read and write
|
||||
* @fd: A file descriptor returned from smh_open()
|
||||
* @memp: Pointer to a buffer of memory of at least @len bytes
|
||||
* @len: The number of bytes to read or write
|
||||
*/
|
||||
static long smh_read(long fd, void *memp, size_t len)
|
||||
struct smh_rdwr_s {
|
||||
long fd;
|
||||
void *memp;
|
||||
size_t len;
|
||||
};
|
||||
|
||||
long smh_read(long fd, void *memp, size_t len)
|
||||
{
|
||||
long ret;
|
||||
struct smh_read_s {
|
||||
long fd;
|
||||
void *memp;
|
||||
size_t len;
|
||||
} read;
|
||||
struct smh_rdwr_s read;
|
||||
|
||||
debug("%s: fd %ld, memp %p, len %zu\n", __func__, fd, memp, len);
|
||||
|
||||
|
@ -100,25 +126,30 @@ static long smh_read(long fd, void *memp, size_t len)
|
|||
read.len = len;
|
||||
|
||||
ret = smh_trap(SYSREAD, &read);
|
||||
if (ret < 0) {
|
||||
/*
|
||||
* The ARM handler allows for returning partial lengths,
|
||||
* but in practice this never happens so rather than create
|
||||
* hard to maintain partial read loops and such, just fail
|
||||
* with an error message.
|
||||
*/
|
||||
printf("%s: ERROR ret %ld, fd %ld, len %zu memp %p\n",
|
||||
__func__, ret, fd, len, memp);
|
||||
return -1;
|
||||
}
|
||||
if (ret < 0)
|
||||
return smh_errno();
|
||||
return len - ret;
|
||||
}
|
||||
|
||||
long smh_write(long fd, const void *memp, size_t len, ulong *written)
|
||||
{
|
||||
long ret;
|
||||
struct smh_rdwr_s write;
|
||||
|
||||
debug("%s: fd %ld, memp %p, len %zu\n", __func__, fd, memp, len);
|
||||
|
||||
write.fd = fd;
|
||||
write.memp = (void *)memp;
|
||||
write.len = len;
|
||||
|
||||
ret = smh_trap(SYSWRITE, &write);
|
||||
*written = len - ret;
|
||||
if (ret)
|
||||
return smh_errno();
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Close the file using the file descriptor
|
||||
*/
|
||||
static long smh_close(long fd)
|
||||
long smh_close(long fd)
|
||||
{
|
||||
long ret;
|
||||
|
||||
|
@ -126,15 +157,11 @@ static long smh_close(long fd)
|
|||
|
||||
ret = smh_trap(SYSCLOSE, &fd);
|
||||
if (ret == -1)
|
||||
printf("%s: ERROR fd %ld\n", __func__, fd);
|
||||
|
||||
return ret;
|
||||
return smh_errno();
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Get the file length from the file descriptor
|
||||
*/
|
||||
static long smh_len_fd(long fd)
|
||||
long smh_flen(long fd)
|
||||
{
|
||||
long ret;
|
||||
|
||||
|
@ -142,77 +169,40 @@ static long smh_len_fd(long fd)
|
|||
|
||||
ret = smh_trap(SYSFLEN, &fd);
|
||||
if (ret == -1)
|
||||
printf("%s: ERROR ret %ld, fd %ld\n", __func__, ret, fd);
|
||||
|
||||
return smh_errno();
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int smh_load_file(const char * const name, ulong load_addr,
|
||||
ulong *end_addr)
|
||||
long smh_seek(long fd, long pos)
|
||||
{
|
||||
long fd;
|
||||
long len;
|
||||
long ret;
|
||||
struct smh_seek_s {
|
||||
long fd;
|
||||
long pos;
|
||||
} seek;
|
||||
|
||||
fd = smh_open(name, "rb");
|
||||
if (fd == -1)
|
||||
return -1;
|
||||
debug("%s: fd %ld pos %ld\n", __func__, fd, pos);
|
||||
|
||||
len = smh_len_fd(fd);
|
||||
if (len < 0) {
|
||||
smh_close(fd);
|
||||
return -1;
|
||||
}
|
||||
|
||||
ret = smh_read(fd, (void *)load_addr, len);
|
||||
smh_close(fd);
|
||||
|
||||
if (ret == 0) {
|
||||
*end_addr = load_addr + len - 1;
|
||||
printf("loaded file %s from %08lX to %08lX, %08lX bytes\n",
|
||||
name,
|
||||
load_addr,
|
||||
*end_addr,
|
||||
len);
|
||||
} else {
|
||||
printf("read failed\n");
|
||||
return 0;
|
||||
}
|
||||
seek.fd = fd;
|
||||
seek.pos = pos;
|
||||
|
||||
ret = smh_trap(SYSSEEK, &seek);
|
||||
if (ret)
|
||||
return smh_errno();
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int do_smhload(struct cmd_tbl *cmdtp, int flag, int argc,
|
||||
char *const argv[])
|
||||
int smh_getc(void)
|
||||
{
|
||||
if (argc == 3 || argc == 4) {
|
||||
ulong load_addr;
|
||||
ulong end_addr = 0;
|
||||
int ret;
|
||||
char end_str[64];
|
||||
|
||||
load_addr = hextoul(argv[2], NULL);
|
||||
if (!load_addr)
|
||||
return -1;
|
||||
|
||||
ret = smh_load_file(argv[1], load_addr, &end_addr);
|
||||
if (ret < 0)
|
||||
return CMD_RET_FAILURE;
|
||||
|
||||
/* Optionally save returned end to the environment */
|
||||
if (argc == 4) {
|
||||
sprintf(end_str, "0x%08lx", end_addr);
|
||||
env_set(argv[3], end_str);
|
||||
}
|
||||
} else {
|
||||
return CMD_RET_USAGE;
|
||||
}
|
||||
return 0;
|
||||
return smh_trap(SYSREADC, NULL);
|
||||
}
|
||||
|
||||
U_BOOT_CMD(smhload, 4, 0, do_smhload, "load a file using semihosting",
|
||||
"<file> 0x<address> [end var]\n"
|
||||
" - load a semihosted file to the address specified\n"
|
||||
" if the optional [end var] is specified, the end\n"
|
||||
" address of the file will be stored in this environment\n"
|
||||
" variable.\n");
|
||||
void smh_putc(char ch)
|
||||
{
|
||||
smh_trap(SYSWRITEC, &ch);
|
||||
}
|
||||
|
||||
void smh_puts(const char *s)
|
||||
{
|
||||
smh_trap(SYSWRITE0, (char *)s);
|
||||
}
|
||||
|
|
|
@ -50,6 +50,7 @@ config SAM9X60
|
|||
config SAMA7G5
|
||||
bool
|
||||
select CPU_V7A
|
||||
select AT91RESET_EXTRST
|
||||
|
||||
config SAMA5D2
|
||||
bool
|
||||
|
@ -81,6 +82,7 @@ config TARGET_ETHERNUT5
|
|||
config TARGET_SNAPPER9260
|
||||
bool "Support snapper9260"
|
||||
select AT91SAM9260
|
||||
select AT91_WANTS_COMMON_PHY
|
||||
select DM
|
||||
select DM_GPIO
|
||||
select DM_SERIAL
|
||||
|
@ -89,6 +91,7 @@ config TARGET_SNAPPER9260
|
|||
config TARGET_GURNARD
|
||||
bool "Support gurnard"
|
||||
select AT91SAM9G45
|
||||
select AT91_WANTS_COMMON_PHY
|
||||
select BOARD_LATE_INIT
|
||||
select DM
|
||||
select DM_ETH
|
||||
|
@ -115,6 +118,7 @@ config TARGET_AT91SAM9263EK
|
|||
config TARGET_USB_A9263
|
||||
bool "Caloa USB A9260 board"
|
||||
select AT91SAM9263
|
||||
select AT91_WANTS_COMMON_PHY
|
||||
|
||||
config TARGET_PM9263
|
||||
bool "Ronetix pm9263 board"
|
||||
|
@ -176,6 +180,7 @@ config TARGET_SAMA5D2_XPLAINED
|
|||
|
||||
config TARGET_SAMA5D27_SOM1_EK
|
||||
bool "SAMA5D27 SOM1 EK board"
|
||||
select SAMA5D2
|
||||
select BOARD_EARLY_INIT_F
|
||||
select BOARD_LATE_INIT
|
||||
select CPU_V7A
|
||||
|
@ -249,6 +254,7 @@ config TARGET_MEESC
|
|||
config TARGET_CORVUS
|
||||
bool "Support corvus"
|
||||
select AT91SAM9M10G45
|
||||
select AT91_WANTS_COMMON_PHY
|
||||
select DM
|
||||
select DM_ETH
|
||||
select DM_GPIO
|
||||
|
@ -266,6 +272,7 @@ config TARGET_SAMA7G5EK
|
|||
config TARGET_TAURUS
|
||||
bool "Support taurus"
|
||||
select AT91SAM9G20
|
||||
select AT91_WANTS_COMMON_PHY
|
||||
select DM
|
||||
select DM_ETH
|
||||
select DM_GPIO
|
||||
|
@ -278,6 +285,7 @@ config TARGET_TAURUS
|
|||
config TARGET_SMARTWEB
|
||||
bool "Support smartweb"
|
||||
select AT91SAM9260
|
||||
select AT91_WANTS_COMMON_PHY
|
||||
select DM
|
||||
select DM_ETH
|
||||
select DM_GPIO
|
||||
|
@ -299,6 +307,9 @@ endchoice
|
|||
config ATMEL_SFR
|
||||
bool
|
||||
|
||||
config AT91RESET_EXTRST
|
||||
bool
|
||||
|
||||
config SYS_SOC
|
||||
default "at91"
|
||||
|
||||
|
@ -310,6 +321,16 @@ config AT91_EFLASH
|
|||
Enable the driver for the embedded flash used in the Atmel
|
||||
AT91SAM9XE devices.
|
||||
|
||||
config AT91_GPIO_PULLUP
|
||||
bool "Keep pullups on peripheral pins"
|
||||
depends on CPU_ARM926EJS
|
||||
|
||||
config ATMEL_LEGACY
|
||||
bool "Legacy GPIO support"
|
||||
|
||||
config AT91_WANTS_COMMON_PHY
|
||||
bool
|
||||
|
||||
source "board/atmel/at91sam9260ek/Kconfig"
|
||||
source "board/atmel/at91sam9261ek/Kconfig"
|
||||
source "board/atmel/at91sam9263ek/Kconfig"
|
||||
|
|
|
@ -14,9 +14,11 @@ obj-y += cpu.o
|
|||
ifndef CONFIG_$(SPL_TPL_)SYSRESET
|
||||
obj-y += reset.o
|
||||
endif
|
||||
ifneq ($(CONFIG_ATMEL_TCB_TIMER),y)
|
||||
ifneq ($(CONFIG_ATMEL_PIT_TIMER),y)
|
||||
ifneq ($(CONFIG_MCHP_PIT64B_TIMER),y)
|
||||
# old non-DM timer driver
|
||||
obj-y += timer.o
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
|
|
@ -129,6 +129,7 @@
|
|||
/*
|
||||
* Address Memory Space
|
||||
*/
|
||||
#define ATMEL_BASE_ROM 0x00000000
|
||||
#define ATMEL_BASE_CS0 0x10000000
|
||||
#define ATMEL_BASE_DDRCS 0x20000000
|
||||
#define ATMEL_BASE_CS1 0x60000000
|
||||
|
@ -141,6 +142,12 @@
|
|||
#define ATMEL_BASE_QSPI0_MEM 0xd0000000
|
||||
#define ATMEL_BASE_QSPI1_MEM 0xd8000000
|
||||
|
||||
/*
|
||||
* PMECC tables in ROM
|
||||
*/
|
||||
#define ATMEL_PMECC_INDEX_OFFSET_512 0x40000
|
||||
#define ATMEL_PMECC_INDEX_OFFSET_1024 0x48000
|
||||
|
||||
/*
|
||||
* Internal Memories
|
||||
*/
|
||||
|
@ -233,9 +240,6 @@
|
|||
/* PIT Timer(PIT_PIIR) */
|
||||
#define CONFIG_SYS_TIMER_COUNTER 0xf804803c
|
||||
|
||||
/* No PMECC Galois table in ROM */
|
||||
#define NO_GALOIS_TABLE_IN_ROM
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
unsigned int get_chip_id(void);
|
||||
unsigned int get_extension_chip_id(void);
|
||||
|
|
|
@ -1,5 +1,9 @@
|
|||
if ARCH_EXYNOS
|
||||
|
||||
config BOARD_COMMON
|
||||
def_bool y
|
||||
depends on !TARGET_SMDKV310 && !TARGET_ARNDALE
|
||||
|
||||
choice
|
||||
prompt "EXYNOS architecture type select"
|
||||
optional
|
||||
|
|
|
@ -11,19 +11,6 @@
|
|||
#include <config.h>
|
||||
#include <asm/arch/cpu.h>
|
||||
|
||||
#ifdef CONFIG_CLK_800_330_165
|
||||
#define DRAM_CLK_330
|
||||
#endif
|
||||
#ifdef CONFIG_CLK_1000_200_200
|
||||
#define DRAM_CLK_200
|
||||
#endif
|
||||
#ifdef CONFIG_CLK_1000_330_165
|
||||
#define DRAM_CLK_330
|
||||
#endif
|
||||
#ifdef CONFIG_CLK_1000_400_200
|
||||
#define DRAM_CLK_400
|
||||
#endif
|
||||
|
||||
/* Bus Configuration Register Address */
|
||||
#define ASYNC_CONFIG 0x10010350
|
||||
|
||||
|
@ -562,15 +549,8 @@ struct mem_timings {
|
|||
#define TIMINGPOWER_VAL 0x52000A3C
|
||||
#else
|
||||
#define TIMINGREF_VAL 0x000000BC
|
||||
#ifdef DRAM_CLK_330
|
||||
#define TIMINGROW_VAL 0x3545548d
|
||||
#define TIMINGDATA_VAL 0x45430506
|
||||
#define TIMINGPOWER_VAL 0x4439033c
|
||||
#endif
|
||||
#ifdef DRAM_CLK_400
|
||||
#define TIMINGROW_VAL 0x45430506
|
||||
#define TIMINGDATA_VAL 0x56500506
|
||||
#define TIMINGPOWER_VAL 0x5444033d
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
|
|
@ -22,6 +22,36 @@
|
|||
#include "common_setup.h"
|
||||
#include "clock_init.h"
|
||||
|
||||
#ifdef CONFIG_ARCH_EXYNOS5
|
||||
#define SECURE_BL1_ONLY
|
||||
|
||||
/* Secure FW size configuration */
|
||||
#ifdef SECURE_BL1_ONLY
|
||||
#define SEC_FW_SIZE (8 << 10) /* 8KB */
|
||||
#else
|
||||
#define SEC_FW_SIZE 0
|
||||
#endif
|
||||
|
||||
/* Configuration of BL1, BL2, ENV Blocks on mmc */
|
||||
#define RES_BLOCK_SIZE (512)
|
||||
#define BL1_SIZE (16 << 10) /*16 K reserved for BL1*/
|
||||
#define BL2_SIZE (512UL << 10UL) /* 512 KB */
|
||||
|
||||
#define BL1_OFFSET (RES_BLOCK_SIZE + SEC_FW_SIZE)
|
||||
#define BL2_OFFSET (BL1_OFFSET + BL1_SIZE)
|
||||
|
||||
/* U-Boot copy size from boot Media to DRAM.*/
|
||||
#define BL2_START_OFFSET (BL2_OFFSET/512)
|
||||
#define BL2_SIZE_BLOC_COUNT (BL2_SIZE/512)
|
||||
|
||||
#define EXYNOS_COPY_SPI_FNPTR_ADDR 0x02020058
|
||||
#define SPI_FLASH_UBOOT_POS (SEC_FW_SIZE + BL1_SIZE)
|
||||
#elif defined(CONFIG_ARCH_EXYNOS4)
|
||||
#define COPY_BL2_SIZE 0x80000
|
||||
#define BL2_START_OFFSET ((CONFIG_ENV_OFFSET + CONFIG_ENV_SIZE)/512)
|
||||
#define BL2_SIZE_BLOC_COUNT (COPY_BL2_SIZE/512)
|
||||
#endif
|
||||
|
||||
DECLARE_GLOBAL_DATA_PTR;
|
||||
|
||||
/* Index into irom ptr table */
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
#include <cpu.h>
|
||||
#include <cpu_func.h>
|
||||
#include <dm.h>
|
||||
#include <event.h>
|
||||
#include <init.h>
|
||||
#include <log.h>
|
||||
#include <asm/cache.h>
|
||||
|
@ -66,7 +67,7 @@ int arch_cpu_init(void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
int arch_cpu_init_dm(void)
|
||||
static int imx8_init_mu(void *ctx, struct event *event)
|
||||
{
|
||||
struct udevice *devp;
|
||||
int node, ret;
|
||||
|
@ -88,6 +89,7 @@ int arch_cpu_init_dm(void)
|
|||
|
||||
return 0;
|
||||
}
|
||||
EVENT_SPY(EVT_DM_POST_INIT, imx8_init_mu);
|
||||
|
||||
int print_bootinfo(void)
|
||||
{
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
|
||||
#include <common.h>
|
||||
#include <cpu_func.h>
|
||||
#include <event.h>
|
||||
#include <init.h>
|
||||
#include <log.h>
|
||||
#include <asm/arch/imx-regs.h>
|
||||
|
@ -494,7 +495,7 @@ static void imx_set_wdog_powerdown(bool enable)
|
|||
writew(enable, &wdog3->wmcr);
|
||||
}
|
||||
|
||||
int arch_cpu_init_dm(void)
|
||||
static int imx8m_check_clock(void *ctx, struct event *event)
|
||||
{
|
||||
struct udevice *dev;
|
||||
int ret;
|
||||
|
@ -511,6 +512,7 @@ int arch_cpu_init_dm(void)
|
|||
|
||||
return 0;
|
||||
}
|
||||
EVENT_SPY(EVT_DM_POST_INIT, imx8m_check_clock);
|
||||
|
||||
int arch_cpu_init(void)
|
||||
{
|
||||
|
@ -1293,7 +1295,7 @@ void imx_tmu_arch_init(void *reg_base)
|
|||
#if defined(CONFIG_IMX8MQ) || defined(CONFIG_IMX8MM) || defined(CONFIG_IMX8MN)
|
||||
bool serror_need_skip = true;
|
||||
|
||||
void do_error(struct pt_regs *pt_regs, unsigned int esr)
|
||||
void do_error(struct pt_regs *pt_regs)
|
||||
{
|
||||
/*
|
||||
* If stack is still in ROM reserved OCRAM not switch to SPL,
|
||||
|
@ -1318,7 +1320,7 @@ void do_error(struct pt_regs *pt_regs, unsigned int esr)
|
|||
}
|
||||
|
||||
efi_restore_gd();
|
||||
printf("\"Error\" handler, esr 0x%08x\n", esr);
|
||||
printf("\"Error\" handler, esr 0x%08lx\n", pt_regs->esr);
|
||||
show_regs(pt_regs);
|
||||
panic("Resetting CPU ...\n");
|
||||
}
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
#include <asm/mach-imx/boot_mode.h>
|
||||
#include <asm/global_data.h>
|
||||
#include <efi_loader.h>
|
||||
#include <event.h>
|
||||
#include <spl.h>
|
||||
#include <asm/arch/rdc.h>
|
||||
#include <asm/arch/s400_api.h>
|
||||
|
@ -569,7 +570,7 @@ int arch_cpu_init(void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
int arch_cpu_init_dm(void)
|
||||
static int imx8ulp_check_mu(void *ctx, struct event *event)
|
||||
{
|
||||
struct udevice *devp;
|
||||
int node, ret;
|
||||
|
@ -584,6 +585,7 @@ int arch_cpu_init_dm(void)
|
|||
|
||||
return 0;
|
||||
}
|
||||
EVENT_SPY(EVT_DM_POST_INIT, imx8ulp_check_mu);
|
||||
|
||||
#if defined(CONFIG_SPL_BUILD)
|
||||
__weak void __noreturn jump_to_image_no_args(struct spl_image_info *spl_image)
|
||||
|
|
|
@ -131,7 +131,6 @@ source "board/cloudengines/pogo_e02/Kconfig"
|
|||
source "board/cloudengines/pogo_v4/Kconfig"
|
||||
source "board/d-link/dns325/Kconfig"
|
||||
source "board/iomega/iconnect/Kconfig"
|
||||
source "board/keymile/Kconfig"
|
||||
source "board/LaCie/net2big_v2/Kconfig"
|
||||
source "board/LaCie/netspace_v2/Kconfig"
|
||||
source "board/raidsonic/ib62x0/Kconfig"
|
||||
|
|
|
@ -45,14 +45,6 @@
|
|||
#define NAND_ALLOW_ERASE_ALL 1
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Ethernet Driver configuration
|
||||
*/
|
||||
#ifdef CONFIG_CMD_NET
|
||||
#define CONFIG_SYS_FAULT_ECHO_LINK_DOWN /* detect link using phy */
|
||||
#define CONFIG_RESET_PHY_R /* use reset_phy() to init mv8831116 PHY */
|
||||
#endif /* CONFIG_CMD_NET */
|
||||
|
||||
/*
|
||||
* IDE Support on SATA ports
|
||||
*/
|
||||
|
|
|
@ -152,6 +152,7 @@ config TARGET_OCTEONTX2_CN913x
|
|||
|
||||
config TARGET_DB_MV784MP_GP
|
||||
bool "Support db-mv784mp-gp"
|
||||
select BOARD_ECC_SUPPORT
|
||||
select MV78460
|
||||
|
||||
config TARGET_DS414
|
||||
|
@ -160,6 +161,7 @@ config TARGET_DS414
|
|||
|
||||
config TARGET_MAXBCM
|
||||
bool "Support maxbcm"
|
||||
select BOARD_ECC_SUPPORT
|
||||
select MV78460
|
||||
|
||||
config TARGET_THEADORABLE
|
||||
|
@ -226,6 +228,9 @@ config DDR_RESET_ON_TRAINING_FAILURE
|
|||
device will still hang - it doesn't make sense to reset the board
|
||||
in such a case.
|
||||
|
||||
config BOARD_ECC_SUPPORT
|
||||
bool
|
||||
|
||||
config SYS_BOARD
|
||||
default "clearfog" if TARGET_CLEARFOG
|
||||
default "helios4" if TARGET_HELIOS4
|
||||
|
|
|
@ -35,14 +35,6 @@
|
|||
/* Needed for SPI NOR booting in SPL */
|
||||
#define CONFIG_DM_SEQ_ALIAS 1
|
||||
|
||||
/*
|
||||
* Ethernet Driver configuration
|
||||
*/
|
||||
#ifdef CONFIG_CMD_NET
|
||||
#define CONFIG_ARP_TIMEOUT 200
|
||||
#define CONFIG_NET_RETRY_COUNT 50
|
||||
#endif /* CONFIG_CMD_NET */
|
||||
|
||||
/*
|
||||
* I2C related stuff
|
||||
*/
|
||||
|
|
|
@ -62,7 +62,7 @@ static u32 board_id_get(void)
|
|||
return DB_78X60_AMC_ID;
|
||||
#elif defined(CONFIG_DB_78X60_PCAC_REV2)
|
||||
return DB_78X60_PCAC_REV2_ID;
|
||||
#elif defined(CONFIG_DB_784MP_GP)
|
||||
#elif defined(CONFIG_TARGET_DB_MV784MP_GP)
|
||||
return DB_784MP_GP_ID;
|
||||
#elif defined(CONFIG_RD_78460_CUSTOMER)
|
||||
return RD_78460_CUSTOMER_ID;
|
||||
|
|
|
@ -8,16 +8,12 @@
|
|||
#ifndef _NX__DISPLAY_DEV_H_
|
||||
#define _NX__DISPLAY_DEV_H_
|
||||
|
||||
#if defined CONFIG_VIDEO || defined CONFIG_DM_VIDEO
|
||||
#include <video_fb.h>
|
||||
#elif defined CONFIG_LCD
|
||||
#if !defined(CONFIG_DM_VIDEO) && defined(CONFIG_LCD)
|
||||
#include <lcd.h>
|
||||
#endif
|
||||
|
||||
struct nx_display_dev {
|
||||
#if defined CONFIG_VIDEO || defined CONFIG_DM_VIDEO
|
||||
GraphicDevice graphic_device;
|
||||
#elif defined CONFIG_LCD
|
||||
#if !defined(CONFIG_DM_VIDEO) && defined(CONFIG_LCD)
|
||||
vidinfo_t *panel_info;
|
||||
#endif
|
||||
unsigned long base;
|
||||
|
|
|
@ -207,6 +207,19 @@ config TARGET_PDU001
|
|||
|
||||
endchoice
|
||||
|
||||
config CLOCK_SYNTHESIZER
|
||||
bool "CDCE913 and CDCEL913 clock synthesizer support"
|
||||
help
|
||||
The CDCE913 and CDCEL913 devices are modular PLL-based, low cost,
|
||||
high performance , programmable clock synthesizers. They generate
|
||||
up to 3 output clocks from a single input frequency. Each output can
|
||||
be programmed for any clock-frequency.
|
||||
|
||||
config CLK_SYNTHESIZER_I2C_ADDR
|
||||
hex "Clock synthesizer i2c bus address"
|
||||
depends on CLOCK_SYNTHESIZER
|
||||
default 0x65
|
||||
|
||||
endif
|
||||
|
||||
if AM43XX
|
||||
|
@ -280,3 +293,35 @@ config PUB_ROM_DATA_SIZE
|
|||
image, this area is no longer used, and can be reclaimed
|
||||
for run time use by the boot image.
|
||||
endif
|
||||
|
||||
config AM335X_USB0
|
||||
bool "Static mode configuration for USB0 in SPL"
|
||||
depends on AM33XX && SPL_MUSB_NEW && !SPL_OF_CONTROL
|
||||
|
||||
choice
|
||||
prompt "USB0 port configuration"
|
||||
depends on AM335X_USB0
|
||||
|
||||
config AM335X_USB0_HOST
|
||||
bool "Port is used in host mode"
|
||||
|
||||
config AM335X_USB0_PERIPHERAL
|
||||
bool "Port is used in peripheral mode"
|
||||
|
||||
endchoice
|
||||
|
||||
config AM335X_USB1
|
||||
bool "Static mode configuration for USB1 in SPL"
|
||||
depends on AM33XX && SPL_MUSB_NEW && !SPL_OF_CONTROL
|
||||
|
||||
choice
|
||||
prompt "USB1 port configuration"
|
||||
depends on AM335X_USB1
|
||||
|
||||
config AM335X_USB1_HOST
|
||||
bool "Port is used in host mode"
|
||||
|
||||
config AM335X_USB1_PERIPHERAL
|
||||
bool "Port is used in peripheral mode"
|
||||
|
||||
endchoice
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
#include <dm.h>
|
||||
#include <debug_uart.h>
|
||||
#include <errno.h>
|
||||
#include <event.h>
|
||||
#include <init.h>
|
||||
#include <net.h>
|
||||
#include <ns16550.h>
|
||||
|
@ -206,10 +207,8 @@ int cpu_mmc_init(struct bd_info *bis)
|
|||
#define RTC_BOARD_TYPE_SHIFT 16
|
||||
|
||||
/* AM33XX has two MUSB controllers which can be host or gadget */
|
||||
#if (defined(CONFIG_USB_MUSB_GADGET) || defined(CONFIG_USB_MUSB_HOST)) && \
|
||||
(defined(CONFIG_AM335X_USB0) || defined(CONFIG_AM335X_USB1)) && \
|
||||
(!CONFIG_IS_ENABLED(DM_USB) || !CONFIG_IS_ENABLED(OF_CONTROL)) && \
|
||||
(!defined(CONFIG_SPL_BUILD) || defined(CONFIG_SPL_MUSB_NEW))
|
||||
#if (defined(CONFIG_AM335X_USB0) || defined(CONFIG_AM335X_USB1)) && \
|
||||
defined(CONFIG_SPL_BUILD)
|
||||
|
||||
static struct musb_hdrc_config musb_config = {
|
||||
.multipoint = 1,
|
||||
|
@ -218,7 +217,7 @@ static struct musb_hdrc_config musb_config = {
|
|||
.ram_bits = 12,
|
||||
};
|
||||
|
||||
#if CONFIG_IS_ENABLED(DM_USB) && !CONFIG_IS_ENABLED(OF_CONTROL)
|
||||
#ifdef CONFIG_AM335X_USB0
|
||||
static struct ti_musb_plat usb0 = {
|
||||
.base = (void *)USB0_OTG_BASE,
|
||||
.ctrl_mod_base = &((struct ctrl_dev *)CTRL_DEVICE_BASE)->usb_ctrl0,
|
||||
|
@ -228,7 +227,9 @@ static struct ti_musb_plat usb0 = {
|
|||
.platform_ops = &musb_dsps_ops,
|
||||
},
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_AM335X_USB1
|
||||
static struct ti_musb_plat usb1 = {
|
||||
.base = (void *)USB1_OTG_BASE,
|
||||
.ctrl_mod_base = &((struct ctrl_dev *)CTRL_DEVICE_BASE)->usb_ctrl1,
|
||||
|
@ -238,16 +239,17 @@ static struct ti_musb_plat usb1 = {
|
|||
.platform_ops = &musb_dsps_ops,
|
||||
},
|
||||
};
|
||||
#endif
|
||||
|
||||
U_BOOT_DRVINFOS(am33xx_usbs) = {
|
||||
#if CONFIG_AM335X_USB0_MODE == MUSB_PERIPHERAL
|
||||
#ifdef CONFIG_AM335X_USB0_PERIPHERAL
|
||||
{ "ti-musb-peripheral", &usb0 },
|
||||
#elif CONFIG_AM335X_USB0_MODE == MUSB_HOST
|
||||
#elif defined(CONFIG_AM335X_USB0_HOST)
|
||||
{ "ti-musb-host", &usb0 },
|
||||
#endif
|
||||
#if CONFIG_AM335X_USB1_MODE == MUSB_PERIPHERAL
|
||||
#ifdef CONFIG_AM335X_USB1_PERIPHERAL
|
||||
{ "ti-musb-peripheral", &usb1 },
|
||||
#elif CONFIG_AM335X_USB1_MODE == MUSB_HOST
|
||||
#elif defined(CONFIG_AM335X_USB1_HOST)
|
||||
{ "ti-musb-host", &usb1 },
|
||||
#endif
|
||||
};
|
||||
|
@ -256,77 +258,6 @@ int arch_misc_init(void)
|
|||
{
|
||||
return 0;
|
||||
}
|
||||
#else
|
||||
static struct ctrl_dev *cdev = (struct ctrl_dev *)CTRL_DEVICE_BASE;
|
||||
|
||||
/* USB 2.0 PHY Control */
|
||||
#define CM_PHY_PWRDN (1 << 0)
|
||||
#define CM_PHY_OTG_PWRDN (1 << 1)
|
||||
#define OTGVDET_EN (1 << 19)
|
||||
#define OTGSESSENDEN (1 << 20)
|
||||
|
||||
static void am33xx_usb_set_phy_power(u8 on, u32 *reg_addr)
|
||||
{
|
||||
if (on) {
|
||||
clrsetbits_le32(reg_addr, CM_PHY_PWRDN | CM_PHY_OTG_PWRDN,
|
||||
OTGVDET_EN | OTGSESSENDEN);
|
||||
} else {
|
||||
clrsetbits_le32(reg_addr, 0, CM_PHY_PWRDN | CM_PHY_OTG_PWRDN);
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef CONFIG_AM335X_USB0
|
||||
static void am33xx_otg0_set_phy_power(struct udevice *dev, u8 on)
|
||||
{
|
||||
am33xx_usb_set_phy_power(on, &cdev->usb_ctrl0);
|
||||
}
|
||||
|
||||
struct omap_musb_board_data otg0_board_data = {
|
||||
.set_phy_power = am33xx_otg0_set_phy_power,
|
||||
};
|
||||
|
||||
static struct musb_hdrc_platform_data otg0_plat = {
|
||||
.mode = CONFIG_AM335X_USB0_MODE,
|
||||
.config = &musb_config,
|
||||
.power = 50,
|
||||
.platform_ops = &musb_dsps_ops,
|
||||
.board_data = &otg0_board_data,
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_AM335X_USB1
|
||||
static void am33xx_otg1_set_phy_power(struct udevice *dev, u8 on)
|
||||
{
|
||||
am33xx_usb_set_phy_power(on, &cdev->usb_ctrl1);
|
||||
}
|
||||
|
||||
struct omap_musb_board_data otg1_board_data = {
|
||||
.set_phy_power = am33xx_otg1_set_phy_power,
|
||||
};
|
||||
|
||||
static struct musb_hdrc_platform_data otg1_plat = {
|
||||
.mode = CONFIG_AM335X_USB1_MODE,
|
||||
.config = &musb_config,
|
||||
.power = 50,
|
||||
.platform_ops = &musb_dsps_ops,
|
||||
.board_data = &otg1_board_data,
|
||||
};
|
||||
#endif
|
||||
|
||||
int arch_misc_init(void)
|
||||
{
|
||||
#ifdef CONFIG_AM335X_USB0
|
||||
musb_register(&otg0_plat, &otg0_board_data,
|
||||
(void *)USB0_OTG_BASE);
|
||||
#endif
|
||||
#ifdef CONFIG_AM335X_USB1
|
||||
musb_register(&otg1_plat, &otg1_board_data,
|
||||
(void *)USB1_OTG_BASE);
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
#else /* CONFIG_USB_MUSB_* && CONFIG_AM335X_USB* && !CONFIG_DM_USB */
|
||||
|
||||
int arch_misc_init(void)
|
||||
|
@ -596,7 +527,7 @@ void board_init_f(ulong dummy)
|
|||
|
||||
#endif
|
||||
|
||||
int arch_cpu_init_dm(void)
|
||||
static int am33xx_dm_post_init(void *ctx, struct event *event)
|
||||
{
|
||||
hw_data_init();
|
||||
#if !CONFIG_IS_ENABLED(SKIP_LOWLEVEL_INIT)
|
||||
|
@ -604,3 +535,4 @@ int arch_cpu_init_dm(void)
|
|||
#endif
|
||||
return 0;
|
||||
}
|
||||
EVENT_SPY(EVT_DM_POST_INIT, am33xx_dm_post_init);
|
||||
|
|
|
@ -31,12 +31,12 @@ static int clk_synthesizer_reg_read(struct udevice *dev, int addr, u8 *buf)
|
|||
|
||||
#if !CONFIG_IS_ENABLED(DM_I2C)
|
||||
/* Send the command byte */
|
||||
rc = i2c_write(CLK_SYNTHESIZER_I2C_ADDR, addr, 1, buf, 1);
|
||||
rc = i2c_write(CONFIG_CLK_SYNTHESIZER_I2C_ADDR, addr, 1, buf, 1);
|
||||
if (rc)
|
||||
printf("Failed to send command to clock synthesizer\n");
|
||||
|
||||
/* Read the Data */
|
||||
return i2c_read(CLK_SYNTHESIZER_I2C_ADDR, addr, 1, buf, 1);
|
||||
return i2c_read(CONFIG_CLK_SYNTHESIZER_I2C_ADDR, addr, 1, buf, 1);
|
||||
#else
|
||||
/* Send the command byte */
|
||||
rc = dm_i2c_reg_write(dev, addr, *buf);
|
||||
|
@ -73,7 +73,7 @@ static int clk_synthesizer_reg_write(struct udevice *dev, int addr, u8 val)
|
|||
cmd[1] = val;
|
||||
|
||||
#if !CONFIG_IS_ENABLED(DM_I2C)
|
||||
rc = i2c_write(CLK_SYNTHESIZER_I2C_ADDR, addr, 1, cmd, 2);
|
||||
rc = i2c_write(CONFIG_CLK_SYNTHESIZER_I2C_ADDR, addr, 1, cmd, 2);
|
||||
#else
|
||||
rc = dm_i2c_write(dev, addr, cmd, 2);
|
||||
#endif
|
||||
|
@ -97,17 +97,17 @@ int setup_clock_synthesizer(struct clk_synth *data)
|
|||
u8 val = 0;
|
||||
struct udevice *dev = NULL;
|
||||
#if !CONFIG_IS_ENABLED(DM_I2C)
|
||||
rc = i2c_probe(CLK_SYNTHESIZER_I2C_ADDR);
|
||||
rc = i2c_probe(CONFIG_CLK_SYNTHESIZER_I2C_ADDR);
|
||||
if (rc) {
|
||||
printf("i2c probe failed at address 0x%x\n",
|
||||
CLK_SYNTHESIZER_I2C_ADDR);
|
||||
CONFIG_CLK_SYNTHESIZER_I2C_ADDR);
|
||||
return rc;
|
||||
}
|
||||
#else
|
||||
rc = i2c_get_chip_for_busnum(0, CLK_SYNTHESIZER_I2C_ADDR, 1, &dev);
|
||||
rc = i2c_get_chip_for_busnum(0, CONFIG_CLK_SYNTHESIZER_I2C_ADDR, 1, &dev);
|
||||
if (rc) {
|
||||
printf("failed to get device for synthesizer at address 0x%x\n",
|
||||
CLK_SYNTHESIZER_I2C_ADDR);
|
||||
CONFIG_CLK_SYNTHESIZER_I2C_ADDR);
|
||||
return rc;
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
*/
|
||||
#include <common.h>
|
||||
#include <debug_uart.h>
|
||||
#include <event.h>
|
||||
#include <fdtdec.h>
|
||||
#include <init.h>
|
||||
#include <spl.h>
|
||||
|
@ -239,11 +240,13 @@ void board_init_f(ulong dummy)
|
|||
}
|
||||
#endif
|
||||
|
||||
int arch_cpu_init_dm(void)
|
||||
static int omap2_system_init(void *ctx, struct event *event)
|
||||
{
|
||||
early_system_init();
|
||||
|
||||
return 0;
|
||||
}
|
||||
EVENT_SPY(EVT_DM_POST_INIT, omap2_system_init);
|
||||
|
||||
/*
|
||||
* Routine: wait_for_command_complete
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
* get_sys_clk_speed() - determine reference oscillator speed
|
||||
* based on known 32kHz clock and gptimer.
|
||||
*****************************************************************************/
|
||||
u32 get_osc_clk_speed(void)
|
||||
static u32 get_osc_clk_speed(void)
|
||||
{
|
||||
u32 start, cstart, cend, cdiff, cdiv, val;
|
||||
struct prcm *prcm_base = (struct prcm *)PRCM_BASE;
|
||||
|
@ -90,7 +90,7 @@ u32 get_osc_clk_speed(void)
|
|||
* get_sys_clkin_sel() - returns the sys_clkin_sel field value based on
|
||||
* input oscillator clock frequency.
|
||||
*****************************************************************************/
|
||||
void get_sys_clkin_sel(u32 osc_clk, u32 *sys_clkin_sel)
|
||||
static void get_sys_clkin_sel(u32 osc_clk, u32 *sys_clkin_sel)
|
||||
{
|
||||
switch(osc_clk) {
|
||||
case S38_4M:
|
||||
|
|
|
@ -64,7 +64,7 @@ ENTRY(lowlevel_init)
|
|||
#endif
|
||||
#endif
|
||||
|
||||
branch_if_master x0, x1, 2f
|
||||
branch_if_master x0, 2f
|
||||
|
||||
/*
|
||||
* Slave should wait for master clearing spin table.
|
||||
|
|
|
@ -248,6 +248,4 @@ config SYS_CONFIG_NAME
|
|||
default "socfpga_stratix10_socdk" if TARGET_SOCFPGA_STRATIX10_SOCDK
|
||||
default "socfpga_vining_fpga" if TARGET_SOCFPGA_SOFTING_VINING_FPGA
|
||||
|
||||
source "board/keymile/Kconfig"
|
||||
|
||||
endif
|
||||
|
|
|
@ -38,7 +38,7 @@ slave_wait_atf:
|
|||
#endif
|
||||
|
||||
#ifdef CONFIG_ARMV8_MULTIENTRY
|
||||
branch_if_master x0, x1, 2f
|
||||
branch_if_master x0, 2f
|
||||
|
||||
/*
|
||||
* Slave should wait for master clearing spin table.
|
||||
|
|
|
@ -113,6 +113,10 @@ config M54418
|
|||
bool
|
||||
select MCF5441x
|
||||
|
||||
# peripherals
|
||||
config CF_DSPI
|
||||
bool
|
||||
|
||||
choice
|
||||
prompt "Target select"
|
||||
optional
|
||||
|
@ -176,6 +180,7 @@ config TARGET_AMCORE
|
|||
|
||||
config TARGET_STMARK2
|
||||
bool "Support stmark2"
|
||||
select CF_DSPI
|
||||
select M54418
|
||||
|
||||
endchoice
|
||||
|
@ -196,4 +201,7 @@ source "board/freescale/m5373evb/Kconfig"
|
|||
source "board/sysam/amcore/Kconfig"
|
||||
source "board/sysam/stmark2/Kconfig"
|
||||
|
||||
config MCFTMR
|
||||
bool "Use DMA timer"
|
||||
|
||||
endmenu
|
||||
|
|
|
@ -225,8 +225,6 @@
|
|||
#define CONFIG_SYS_FEC1_IOBASE (MMAP_FEC1)
|
||||
#define CONFIG_SYS_UART_BASE (MMAP_UART0 + (CONFIG_SYS_UART_PORT * 0x4000))
|
||||
|
||||
#define CONFIG_SYS_MCFRTC_BASE (MMAP_RTC)
|
||||
|
||||
/* Timer */
|
||||
#ifdef CONFIG_MCFTMR
|
||||
#define CONFIG_SYS_UDELAY_BASE (MMAP_DTMR0)
|
||||
|
@ -249,7 +247,6 @@
|
|||
|
||||
#define CONFIG_SYS_FEC0_IOBASE (MMAP_FEC)
|
||||
#define CONFIG_SYS_UART_BASE (MMAP_UART0 + (CONFIG_SYS_UART_PORT * 0x4000))
|
||||
#define CONFIG_SYS_MCFRTC_BASE (MMAP_RTC)
|
||||
|
||||
/* Timer */
|
||||
#ifdef CONFIG_MCFTMR
|
||||
|
@ -283,7 +280,6 @@
|
|||
#endif
|
||||
|
||||
#define MMAP_DSPI MMAP_DSPI0
|
||||
#define CONFIG_SYS_MCFRTC_BASE (MMAP_RTC)
|
||||
|
||||
/* Timer */
|
||||
#ifdef CONFIG_MCFTMR
|
||||
|
|
|
@ -23,6 +23,8 @@
|
|||
#endif
|
||||
#include <asm/ptrace.h>
|
||||
|
||||
#define MMU_SECTION_SIZE (1 * 1024 * 1024)
|
||||
|
||||
#define prepare_to_switch() do { } while (0)
|
||||
|
||||
/*
|
||||
|
|
|
@ -130,6 +130,7 @@ config MACH_PIC32
|
|||
config TARGET_BOSTON
|
||||
bool "Support Boston"
|
||||
select DM
|
||||
imply DM_EVENT
|
||||
select DM_SERIAL
|
||||
select MIPS_CM
|
||||
select SYS_CACHE_SHIFT_6
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
#include <common.h>
|
||||
#include <clk.h>
|
||||
#include <dm.h>
|
||||
#include <event.h>
|
||||
#include <init.h>
|
||||
#include <malloc.h>
|
||||
#include <asm/global_data.h>
|
||||
|
@ -95,12 +96,13 @@ static void prefetch_init(void)
|
|||
}
|
||||
|
||||
/* arch specific CPU init after DM */
|
||||
int arch_cpu_init_dm(void)
|
||||
static int pic32_flash_prefetch(void *ctx, struct event *event)
|
||||
{
|
||||
/* flash prefetch */
|
||||
prefetch_init();
|
||||
return 0;
|
||||
}
|
||||
EVENT_SPY(EVT_DM_POST_INIT, pic32_flash_prefetch);
|
||||
|
||||
/* Un-gate DDR2 modules (gated by default) */
|
||||
static void ddr2_pmd_ungate(void)
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
#include <cpu_func.h>
|
||||
#include <dm.h>
|
||||
#include <errno.h>
|
||||
#include <event.h>
|
||||
#include <init.h>
|
||||
#include <irq_func.h>
|
||||
#include <asm/cache.h>
|
||||
|
@ -63,7 +64,7 @@ static void copy_exception_trampoline(void)
|
|||
}
|
||||
#endif
|
||||
|
||||
int arch_cpu_init_dm(void)
|
||||
static int nios_cpu_setup(void *ctx, struct event *event)
|
||||
{
|
||||
struct udevice *dev;
|
||||
int ret;
|
||||
|
@ -79,6 +80,7 @@ int arch_cpu_init_dm(void)
|
|||
|
||||
return 0;
|
||||
}
|
||||
EVENT_SPY(EVT_DM_POST_INIT, nios_cpu_setup);
|
||||
|
||||
static int altera_nios2_get_desc(const struct udevice *dev, char *buf,
|
||||
int size)
|
||||
|
|
|
@ -1,6 +1,9 @@
|
|||
menu "mpc83xx CPU"
|
||||
depends on MPC83xx
|
||||
|
||||
config E300
|
||||
def_bool y
|
||||
|
||||
config SYS_CPU
|
||||
default "mpc83xx"
|
||||
|
||||
|
@ -200,7 +203,6 @@ config FSL_ELBC
|
|||
|
||||
source "board/freescale/mpc837xerdb/Kconfig"
|
||||
source "board/ids/ids8313/Kconfig"
|
||||
source "board/keymile/Kconfig"
|
||||
source "board/gdsys/mpc8308/Kconfig"
|
||||
|
||||
endmenu
|
||||
|
|
|
@ -51,9 +51,6 @@ void ft_cpu_setup(void *blob, struct bd_info *bd)
|
|||
REVID_MAJOR(spridr) >= 2)
|
||||
fdt_fixup_crypto_node(blob, 0x0204);
|
||||
|
||||
#if defined(CONFIG_HAS_ETH0) || defined(CONFIG_HAS_ETH1) ||\
|
||||
defined(CONFIG_HAS_ETH2) || defined(CONFIG_HAS_ETH3) ||\
|
||||
defined(CONFIG_HAS_ETH4) || defined(CONFIG_HAS_ETH5)
|
||||
#ifdef CONFIG_ARCH_MPC8313
|
||||
/*
|
||||
* mpc8313e erratum IPIC1 swapped TSEC interrupt ID numbers on rev. 1
|
||||
|
@ -66,7 +63,6 @@ void ft_cpu_setup(void *blob, struct bd_info *bd)
|
|||
|
||||
nodeoffset = fdt_path_offset(blob, "/aliases");
|
||||
if (nodeoffset >= 0) {
|
||||
#if defined(CONFIG_HAS_ETH0)
|
||||
prop = fdt_getprop(blob, nodeoffset, "ethernet0", NULL);
|
||||
if (prop) {
|
||||
u32 tmp[] = { 32, 0x8, 33, 0x8, 34, 0x8 };
|
||||
|
@ -78,8 +74,6 @@ void ft_cpu_setup(void *blob, struct bd_info *bd)
|
|||
fdt_setprop(blob, path, "interrupts",
|
||||
&tmp, sizeof(tmp));
|
||||
}
|
||||
#endif
|
||||
#if defined(CONFIG_HAS_ETH1)
|
||||
prop = fdt_getprop(blob, nodeoffset, "ethernet1", NULL);
|
||||
if (prop) {
|
||||
u32 tmp[] = { 35, 0x8, 36, 0x8, 37, 0x8 };
|
||||
|
@ -91,10 +85,8 @@ void ft_cpu_setup(void *blob, struct bd_info *bd)
|
|||
fdt_setprop(blob, path, "interrupts",
|
||||
&tmp, sizeof(tmp));
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
do_fixup_by_prop_u32(blob, "device_type", "cpu", 4,
|
||||
|
|
|
@ -317,6 +317,7 @@ config ARCH_MPC8540
|
|||
|
||||
config ARCH_MPC8544
|
||||
bool
|
||||
select BTB
|
||||
select FSL_LAW
|
||||
select SYS_CACHE_SHIFT_5
|
||||
select SYS_FSL_ERRATUM_A005125
|
||||
|
@ -330,6 +331,7 @@ config ARCH_MPC8544
|
|||
|
||||
config ARCH_MPC8548
|
||||
bool
|
||||
select BTB
|
||||
select FSL_LAW
|
||||
select SYS_FSL_ERRATUM_A005125
|
||||
select SYS_FSL_ERRATUM_NMG_DDR120
|
||||
|
@ -352,6 +354,8 @@ config ARCH_MPC8560
|
|||
|
||||
config ARCH_P1010
|
||||
bool
|
||||
select A003399_NOR_WORKAROUND if SYS_FSL_ERRATUM_IFC_A003399 && !SPL
|
||||
select BTB
|
||||
select FSL_LAW
|
||||
select SYS_CACHE_SHIFT_5
|
||||
select SYS_HAS_SERDES
|
||||
|
@ -400,6 +404,7 @@ config ARCH_P1011
|
|||
|
||||
config ARCH_P1020
|
||||
bool
|
||||
select BTB
|
||||
select FSL_LAW
|
||||
select SYS_CACHE_SHIFT_5
|
||||
select SYS_FSL_ERRATUM_A004508
|
||||
|
@ -496,6 +501,7 @@ config ARCH_P1025
|
|||
|
||||
config ARCH_P2020
|
||||
bool
|
||||
select BTB
|
||||
select FSL_LAW
|
||||
select SYS_CACHE_SHIFT_5
|
||||
select SYS_FSL_ERRATUM_A004477
|
||||
|
@ -517,6 +523,7 @@ config ARCH_P2020
|
|||
|
||||
config ARCH_P2041
|
||||
bool
|
||||
select BACKSIDE_L2_CACHE
|
||||
select E500MC
|
||||
select FSL_LAW
|
||||
select SYS_CACHE_SHIFT_6
|
||||
|
@ -542,6 +549,7 @@ config ARCH_P2041
|
|||
|
||||
config ARCH_P3041
|
||||
bool
|
||||
select BACKSIDE_L2_CACHE
|
||||
select E500MC
|
||||
select FSL_LAW
|
||||
select SYS_CACHE_SHIFT_6
|
||||
|
@ -572,6 +580,7 @@ config ARCH_P3041
|
|||
|
||||
config ARCH_P4080
|
||||
bool
|
||||
select BACKSIDE_L2_CACHE
|
||||
select E500MC
|
||||
select FSL_LAW
|
||||
select SYS_CACHE_SHIFT_6
|
||||
|
@ -611,6 +620,7 @@ config ARCH_P4080
|
|||
|
||||
config ARCH_P5040
|
||||
bool
|
||||
select BACKSIDE_L2_CACHE
|
||||
select E500MC
|
||||
select FSL_LAW
|
||||
select SYS_CACHE_SHIFT_6
|
||||
|
@ -641,7 +651,9 @@ config ARCH_QEMU_E500
|
|||
|
||||
config ARCH_T1024
|
||||
bool
|
||||
select BACKSIDE_L2_CACHE
|
||||
select E500MC
|
||||
select E5500
|
||||
select FSL_LAW
|
||||
select SYS_CACHE_SHIFT_6
|
||||
select SYS_FSL_DDR_VER_50
|
||||
|
@ -664,7 +676,9 @@ config ARCH_T1024
|
|||
|
||||
config ARCH_T1040
|
||||
bool
|
||||
select BACKSIDE_L2_CACHE
|
||||
select E500MC
|
||||
select E5500
|
||||
select FSL_LAW
|
||||
select SYS_CACHE_SHIFT_6
|
||||
select SYS_FSL_DDR_VER_50
|
||||
|
@ -687,7 +701,9 @@ config ARCH_T1040
|
|||
|
||||
config ARCH_T1042
|
||||
bool
|
||||
select BACKSIDE_L2_CACHE
|
||||
select E500MC
|
||||
select E5500
|
||||
select FSL_LAW
|
||||
select SYS_CACHE_SHIFT_6
|
||||
select SYS_FSL_DDR_VER_50
|
||||
|
@ -772,6 +788,9 @@ config MPC85XX_HAVE_RESET_VECTOR
|
|||
bool "Indicate reset vector at CONFIG_RESET_VECTOR_ADDRESS - 0xffc"
|
||||
depends on MPC85xx
|
||||
|
||||
config BTB
|
||||
bool "toggle branch predition"
|
||||
|
||||
config BOOKE
|
||||
bool
|
||||
default y
|
||||
|
@ -784,12 +803,17 @@ config E500
|
|||
|
||||
config E500MC
|
||||
bool
|
||||
select BTB
|
||||
imply CMD_PCI
|
||||
help
|
||||
Enble PowerPC E500MC core
|
||||
|
||||
config E5500
|
||||
bool
|
||||
|
||||
config E6500
|
||||
bool
|
||||
select BTB
|
||||
help
|
||||
Enable PowerPC E6500 core
|
||||
|
||||
|
@ -868,6 +892,18 @@ config SYS_CCSRBAR_DEFAULT
|
|||
if changed by pre-boot regime. The value here must match
|
||||
the current value in SoC. If not sure, do not change.
|
||||
|
||||
config A003399_NOR_WORKAROUND
|
||||
bool
|
||||
help
|
||||
Enables a workaround for IFC erratum A003399. It is only required
|
||||
during NOR boot.
|
||||
|
||||
config A008044_WORKAROUND
|
||||
bool
|
||||
help
|
||||
Enables a workaround for T1040/T1042 erratum A008044. It is only
|
||||
required during NAND boot and valid for Rev 1.0 SoC revision
|
||||
|
||||
config SYS_FSL_ERRATUM_A004468
|
||||
bool
|
||||
|
||||
|
@ -950,6 +986,7 @@ config SYS_FSL_ERRATUM_A007907
|
|||
|
||||
config SYS_FSL_ERRATUM_A008044
|
||||
bool
|
||||
select A008044_WORKAROUND if MTD_RAW_NAND
|
||||
|
||||
config SYS_FSL_ERRATUM_CPC_A002
|
||||
bool
|
||||
|
@ -1084,6 +1121,9 @@ config SYS_NUM_TLBCAMS
|
|||
Number of TLB CAM entries for Book-E chips. 64 for E500MC,
|
||||
16 for other E500 SoCs.
|
||||
|
||||
config BACKSIDE_L2_CACHE
|
||||
bool
|
||||
|
||||
config SYS_PPC64
|
||||
bool
|
||||
|
||||
|
@ -1159,7 +1199,6 @@ source "board/freescale/t104xrdb/Kconfig"
|
|||
source "board/freescale/t208xqds/Kconfig"
|
||||
source "board/freescale/t208xrdb/Kconfig"
|
||||
source "board/freescale/t4rdb/Kconfig"
|
||||
source "board/keymile/Kconfig"
|
||||
source "board/socrates/Kconfig"
|
||||
|
||||
endmenu
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue