mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2026-06-03 02:06:44 +03:00
Compare commits
215 Commits
master
...
WIP/02Jun2
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4674475760 | ||
|
|
abd948e542 | ||
|
|
83f3e2c30b | ||
|
|
e853b26d0c | ||
|
|
6c164d51d6 | ||
|
|
9c04852e59 | ||
|
|
b5f2880261 | ||
|
|
5ab1600213 | ||
|
|
b4858d2afc | ||
|
|
679eb25fb8 | ||
|
|
0a46055d96 | ||
|
|
5cf4b14284 | ||
|
|
5f5b8ae293 | ||
|
|
2be4b2269e | ||
|
|
258310ab39 | ||
|
|
1c8b592611 | ||
|
|
df08b27590 | ||
|
|
ff3bece92f | ||
|
|
6033096d3c | ||
|
|
3c32572a27 | ||
|
|
674afbcf6e | ||
|
|
16185d7ff3 | ||
|
|
dd2f4d967f | ||
|
|
7e7b3106a5 | ||
|
|
b2f7404fd8 | ||
|
|
8f7717c756 | ||
|
|
c6266daa1e | ||
|
|
3ddd78074e | ||
|
|
772ef8b089 | ||
|
|
af65e247e7 | ||
|
|
6da8ecc518 | ||
|
|
c39e0e257c | ||
|
|
9f00cec3d8 | ||
|
|
6e8d82b9e9 | ||
|
|
14ba26ebdd | ||
|
|
86f4f05ad8 | ||
|
|
ef5b4a7eae | ||
|
|
68532aab6d | ||
|
|
c2edb9cb2b | ||
|
|
6edb2e1ce2 | ||
|
|
b40fee4d6d | ||
|
|
927e4880f2 | ||
|
|
78dff83dd7 | ||
|
|
4fd5302675 | ||
|
|
7920dc90dd | ||
|
|
59d52a9975 | ||
|
|
ddd1f2192d | ||
|
|
1ea8b3e8e2 | ||
|
|
2b6d243be2 | ||
|
|
5151c208b5 | ||
|
|
8429766a7f | ||
|
|
7af4196d9e | ||
|
|
746a986fe2 | ||
|
|
89d3c1fe1b | ||
|
|
e52b2c6e7f | ||
|
|
e7ee728ace | ||
|
|
f34597790e | ||
|
|
1e48298552 | ||
|
|
96e180d354 | ||
|
|
cafe3d6e90 | ||
|
|
d3eee4d3b1 | ||
|
|
8d5f30b52f | ||
|
|
e11b0c5cab | ||
|
|
5e41a5deb4 | ||
|
|
77efd55f89 | ||
|
|
2c9b117aa4 | ||
|
|
b31f551bfc | ||
|
|
646be6d5cd | ||
|
|
a219f64c27 | ||
|
|
422024172f | ||
|
|
ed5d719bc2 | ||
|
|
e9848e30bd | ||
|
|
7bb1917b15 | ||
|
|
bb354d0445 | ||
|
|
3dc2761d63 | ||
|
|
ddba15ab72 | ||
|
|
b781017fb6 | ||
|
|
009cd5b56d | ||
|
|
3e2b261647 | ||
|
|
75a1d7280a | ||
|
|
5116fed77d | ||
|
|
0bcd158db3 | ||
|
|
ccec4ce2ee | ||
|
|
e81c552171 | ||
|
|
e84d147bd3 | ||
|
|
ce12ad70b8 | ||
|
|
83cf74a01a | ||
|
|
15cc283d1b | ||
|
|
21a3b9f03b | ||
|
|
85b643b7d0 | ||
|
|
05f76ca898 | ||
|
|
50e6cda6b6 | ||
|
|
a504ad9e68 | ||
|
|
c97fbda5fa | ||
|
|
6f69da0d0f | ||
|
|
9c631c5dbb | ||
|
|
1e38a363c2 | ||
|
|
ce830106bf | ||
|
|
2a7e739c04 | ||
|
|
35cd9d8636 | ||
|
|
4020549f9b | ||
|
|
85be3b9287 | ||
|
|
1fe34ada73 | ||
|
|
6333bec332 | ||
|
|
432749b1a3 | ||
|
|
cecdc51a46 | ||
|
|
c2912fa76b | ||
|
|
1f1ec618f2 | ||
|
|
da1ac763c9 | ||
|
|
9ef7c13308 | ||
|
|
d6a87d042e | ||
|
|
0bda59b1fa | ||
|
|
e253640e3f | ||
|
|
0a1347f0a1 | ||
|
|
85f4b08691 | ||
|
|
b2961202a7 | ||
|
|
44f6ca49e9 | ||
|
|
499cb93dec | ||
|
|
31df5fc7d4 | ||
|
|
368255a9a0 | ||
|
|
f23324e49e | ||
|
|
a8f49cc193 | ||
|
|
64abe3cfcc | ||
|
|
2908a3f35b | ||
|
|
06bf459570 | ||
|
|
11e1be868c | ||
|
|
0d131b3b06 | ||
|
|
bf6de81367 | ||
|
|
d54d2ec651 | ||
|
|
5a995c2fe0 | ||
|
|
bc28119288 | ||
|
|
246b0f185a | ||
|
|
60bc1eb8c2 | ||
|
|
b6470f662a | ||
|
|
140f248556 | ||
|
|
218cbc4b12 | ||
|
|
53e6ccc0c1 | ||
|
|
8fce24a418 | ||
|
|
c9eb2d64e2 | ||
|
|
6d2bcb6398 | ||
|
|
83edbe9426 | ||
|
|
7e670b7d6e | ||
|
|
213edfd645 | ||
|
|
4b1580e060 | ||
|
|
be1dc88b4a | ||
|
|
40b43c94d2 | ||
|
|
dc4dd58926 | ||
|
|
9e46861a01 | ||
|
|
11af22cd1e | ||
|
|
a8684df5ed | ||
|
|
3ebee64e81 | ||
|
|
1b0c1407d8 | ||
|
|
cbd2dc2bdd | ||
|
|
5efdfae304 | ||
|
|
454e72874f | ||
|
|
85319b2e67 | ||
|
|
dffae7d2a6 | ||
|
|
b37fa572ad | ||
|
|
36755f64b3 | ||
|
|
c9a8f673e0 | ||
|
|
84a17fea21 | ||
|
|
6b9813ff88 | ||
|
|
5841eff4d2 | ||
|
|
6bc840568f | ||
|
|
39f52b7c29 | ||
|
|
f745c1ab4e | ||
|
|
9dd6b95453 | ||
|
|
c8ca3314f2 | ||
|
|
e1a7afcf92 | ||
|
|
d4817ba78e | ||
|
|
d91270ae82 | ||
|
|
aef4690324 | ||
|
|
3893fdcf63 | ||
|
|
f80ec8cfd7 | ||
|
|
1eb024281f | ||
|
|
ba80ed218d | ||
|
|
94a9680b62 | ||
|
|
a6f6947e43 | ||
|
|
77fa442ff5 | ||
|
|
f89d17c360 | ||
|
|
1aea809ba2 | ||
|
|
d82d49e1a6 | ||
|
|
b51735a38a | ||
|
|
2e59c9fa4f | ||
|
|
4f87439ed4 | ||
|
|
ad9ca3e776 | ||
|
|
f82c349b91 | ||
|
|
10c5b89e21 | ||
|
|
77a8a30ef8 | ||
|
|
2e8078e5d5 | ||
|
|
e6c69731c9 | ||
|
|
0e7a86e0cf | ||
|
|
3a4a8963aa | ||
|
|
993c405ed7 | ||
|
|
b487d05633 | ||
|
|
731a875ae7 | ||
|
|
88338f9d14 | ||
|
|
55e767426e | ||
|
|
4660602522 | ||
|
|
9a13d08732 | ||
|
|
93d7dc20e8 | ||
|
|
9458e39c65 | ||
|
|
2120834c25 | ||
|
|
6b109a1304 | ||
|
|
825f8ee2fc | ||
|
|
e3e651c480 | ||
|
|
8d209186a1 | ||
|
|
4ef201e607 | ||
|
|
11168813bf | ||
|
|
b87ff4878d | ||
|
|
ee8be5d4a1 | ||
|
|
8c664d2135 | ||
|
|
349d148f16 | ||
|
|
719cacb92e | ||
|
|
ca1c292d2e |
@@ -153,13 +153,20 @@ Raspberry Pi 4 (rpi_arm64):
|
||||
LABGRID_EXPORTER: "sage-exporter-rpi4-1"
|
||||
LG_PLACE: "rpi4-1"
|
||||
TEST_PY_BD: "rpi_arm64"
|
||||
# DHCP is not being run first, needs to be investigated.
|
||||
TEST_PY_TEST_SPEC: "not test_efi_helloworld_net_http"
|
||||
OVERRIDE: "-a UNIT_TEST -a ~CMD_EFIDEBUG -a CMD_BOOTMENU -a CMD_LOG -a ~CMD_BOOTEFI_SELFTEST -a FIT -a FIT_SIGNATURE -a FIT_BEST_MATCH -a SYS_BOOTM_LEN=0x4000000 -a BOOTSTAGE -a BOOTSTAGE_STASH -a CMD_BOOTSTAGE -a BOOTSTAGE_STASH_ADDR=0x02400000"
|
||||
OVERRIDE: "-a UNIT_TEST -a ~CMD_EFIDEBUG -a CMD_BOOTMENU -a CMD_LOG -a ~CMD_BOOTEFI_SELFTEST -a CMD_TFTPPUT -a FIT -a FIT_SIGNATURE -a FIT_BEST_MATCH -a SYS_BOOTM_LEN=0x4000000 -a BOOTSTAGE -a BOOTSTAGE_STASH -a CMD_BOOTSTAGE -a BOOTSTAGE_STASH_ADDR=0x02400000"
|
||||
|
||||
Raspberry Pi 4 (rpi_arm64, lwIP):
|
||||
<<: *sage_lab_dfn
|
||||
needs: [ "Raspberry Pi 4 (rpi_arm64)" ]
|
||||
variables:
|
||||
LABGRID_EXPORTER: "sage-exporter-rpi4-1"
|
||||
LG_PLACE: "rpi4-1"
|
||||
TEST_PY_BD: "rpi_arm64"
|
||||
OVERRIDE: "-a UNIT_TEST -a ~CMD_EFIDEBUG -a CMD_BOOTMENU -a CMD_LOG -a ~CMD_BOOTEFI_SELFTEST -a FIT -a FIT_SIGNATURE -a FIT_BEST_MATCH -a SYS_BOOTM_LEN=0x4000000 -a BOOTSTAGE -a BOOTSTAGE_STASH -a CMD_BOOTSTAGE -a BOOTSTAGE_STASH_ADDR=0x02400000 -a NET_LWIP"
|
||||
|
||||
Raspberry Pi 4 (rpi_4_32b):
|
||||
<<: *sage_lab_dfn
|
||||
needs: [ "Raspberry Pi 4 (rpi_arm64)" ]
|
||||
needs: [ "Raspberry Pi 4 (rpi_arm64, lwIP)" ]
|
||||
variables:
|
||||
LABGRID_EXPORTER: "sage-exporter-rpi4-1"
|
||||
LG_PLACE: "rpi4-1"
|
||||
@@ -190,13 +197,20 @@ Raspberry Pi 3 (rpi_arm64):
|
||||
LABGRID_EXPORTER: "sage-exporter-rpi3-1"
|
||||
LG_PLACE: "rpi3-1"
|
||||
TEST_PY_BD: "rpi_arm64"
|
||||
# DHCP is not being run first, needs to be investigated.
|
||||
TEST_PY_TEST_SPEC: "not test_efi_helloworld_net_http"
|
||||
OVERRIDE: "-a UNIT_TEST -a ~CMD_EFIDEBUG -a CMD_BOOTMENU -a CMD_LOG -a ~CMD_BOOTEFI_SELFTEST -a FIT -a FIT_SIGNATURE -a FIT_BEST_MATCH -a SYS_BOOTM_LEN=0x4000000 -a BOOTSTAGE -a BOOTSTAGE_STASH -a CMD_BOOTSTAGE -a BOOTSTAGE_STASH_ADDR=0x02400000"
|
||||
OVERRIDE: "-a UNIT_TEST -a ~CMD_EFIDEBUG -a CMD_BOOTMENU -a CMD_LOG -a ~CMD_BOOTEFI_SELFTEST -a CMD_TFTPPUT -a FIT -a FIT_SIGNATURE -a FIT_BEST_MATCH -a SYS_BOOTM_LEN=0x4000000 -a BOOTSTAGE -a BOOTSTAGE_STASH -a CMD_BOOTSTAGE -a BOOTSTAGE_STASH_ADDR=0x02400000"
|
||||
|
||||
Raspberry Pi 3 (rpi_arm64, lwIP):
|
||||
<<: *sage_lab_dfn
|
||||
needs: [ "Raspberry Pi 3 (rpi_arm64)" ]
|
||||
variables:
|
||||
LABGRID_EXPORTER: "sage-exporter-rpi3-1"
|
||||
LG_PLACE: "rpi3-1"
|
||||
TEST_PY_BD: "rpi_arm64"
|
||||
OVERRIDE: "-a UNIT_TEST -a ~CMD_EFIDEBUG -a CMD_BOOTMENU -a CMD_LOG -a ~CMD_BOOTEFI_SELFTEST -a FIT -a FIT_SIGNATURE -a FIT_BEST_MATCH -a SYS_BOOTM_LEN=0x4000000 -a BOOTSTAGE -a BOOTSTAGE_STASH -a CMD_BOOTSTAGE -a BOOTSTAGE_STASH_ADDR=0x02400000 -a NET_LWIP"
|
||||
|
||||
Raspberry Pi 3 (rpi_3_32b):
|
||||
<<: *sage_lab_dfn
|
||||
needs: [ "Raspberry Pi 3 (rpi_arm64)" ]
|
||||
needs: [ "Raspberry Pi 3 (rpi_arm64, lwIP)" ]
|
||||
variables:
|
||||
LABGRID_EXPORTER: "sage-exporter-rpi3-1"
|
||||
LG_PLACE: "rpi3-1"
|
||||
|
||||
21
MAINTAINERS
21
MAINTAINERS
@@ -317,26 +317,13 @@ M: Fabio Estevam <festevam@gmail.com>
|
||||
R: NXP i.MX U-Boot Team <uboot-imx@nxp.com>
|
||||
S: Maintained
|
||||
T: git https://source.denx.de/u-boot/custodians/u-boot-imx.git
|
||||
F: arch/Kconfig.nxp
|
||||
N: imx
|
||||
N: mxc
|
||||
N: nxp
|
||||
N: vf610
|
||||
F: arch/arm/cpu/arm1136/mx*/
|
||||
F: arch/arm/cpu/arm926ejs/mx*/
|
||||
F: arch/arm/cpu/armv7/vf610/
|
||||
F: arch/arm/dts/*imx*
|
||||
F: arch/arm/mach-imx/
|
||||
F: arch/arm/include/asm/arch-imx*/
|
||||
F: arch/arm/include/asm/arch-mx*/
|
||||
F: arch/arm/include/asm/arch-vf610/
|
||||
F: arch/arm/include/asm/mach-imx/
|
||||
F: board/nxp/*mx*/
|
||||
F: board/nxp/common/
|
||||
F: common/spl/spl_imx_container.c
|
||||
F: doc/board/nxp/
|
||||
F: doc/imx/
|
||||
F: drivers/mailbox/imx-mailbox.c
|
||||
F: drivers/remoteproc/imx*
|
||||
F: drivers/serial/serial_mxc.c
|
||||
F: drivers/spi/nxp_xspi.c
|
||||
F: include/imx_container.h
|
||||
|
||||
ARM HISILICON
|
||||
M: Peter Griffin <peter.griffin@linaro.org>
|
||||
|
||||
169
README
169
README
@@ -707,7 +707,7 @@ The following options need to be configured:
|
||||
The same can be accomplished in a more flexible way
|
||||
for any variable by configuring the type of access
|
||||
to allow for those variables in the ".flags" variable
|
||||
or define CFG_ENV_FLAGS_LIST_STATIC.
|
||||
or by setting CONFIG_ENV_FLAGS_LIST_STATIC.
|
||||
|
||||
- Protected RAM:
|
||||
CFG_PRAM
|
||||
@@ -941,173 +941,6 @@ typically in board_init_f() and board_init_r().
|
||||
- CONFIG_BOARD_EARLY_INIT_R: Call board_early_init_r()
|
||||
- CONFIG_BOARD_LATE_INIT: Call board_late_init()
|
||||
|
||||
Configuration Settings:
|
||||
-----------------------
|
||||
|
||||
- CONFIG_SYS_LONGHELP: Defined when you want long help messages included;
|
||||
undefine this when you're short of memory.
|
||||
|
||||
- CFG_SYS_HELP_CMD_WIDTH: Defined when you want to override the default
|
||||
width of the commands listed in the 'help' command output.
|
||||
|
||||
- CONFIG_SYS_PROMPT: This is what U-Boot prints on the console to
|
||||
prompt for user input.
|
||||
|
||||
- CFG_SYS_BAUDRATE_TABLE:
|
||||
List of legal baudrate settings for this board.
|
||||
|
||||
- CFG_SYS_MEM_RESERVE_SECURE
|
||||
Only implemented for ARMv8 for now.
|
||||
If defined, the size of CFG_SYS_MEM_RESERVE_SECURE memory
|
||||
is substracted from total RAM and won't be reported to OS.
|
||||
This memory can be used as secure memory. A variable
|
||||
gd->arch.secure_ram is used to track the location. In systems
|
||||
the RAM base is not zero, or RAM is divided into banks,
|
||||
this variable needs to be recalcuated to get the address.
|
||||
|
||||
- CFG_SYS_SDRAM_BASE:
|
||||
Physical start address of SDRAM. _Must_ be 0 here.
|
||||
|
||||
- CFG_SYS_FLASH_BASE:
|
||||
Physical start address of Flash memory.
|
||||
|
||||
- CONFIG_SYS_MALLOC_LEN:
|
||||
Size of DRAM reserved for malloc() use.
|
||||
|
||||
- CFG_SYS_BOOTMAPSZ:
|
||||
Maximum size of memory mapped by the startup code of
|
||||
the Linux kernel; all data that must be processed by
|
||||
the Linux kernel (bd_info, boot arguments, FDT blob if
|
||||
used) must be put below this limit, unless "bootm_low"
|
||||
environment variable is defined and non-zero. In such case
|
||||
all data for the Linux kernel must be between "bootm_low"
|
||||
and "bootm_low" + CFG_SYS_BOOTMAPSZ. The environment
|
||||
variable "bootm_mapsize" will override the value of
|
||||
CFG_SYS_BOOTMAPSZ. If CFG_SYS_BOOTMAPSZ is undefined,
|
||||
then the value in "bootm_size" will be used instead.
|
||||
|
||||
- CONFIG_SYS_BOOT_GET_CMDLINE:
|
||||
Enables allocating and saving kernel cmdline in space between
|
||||
"bootm_low" and "bootm_low" + BOOTMAPSZ.
|
||||
|
||||
- CONFIG_SYS_BOOT_GET_KBD:
|
||||
Enables allocating and saving a kernel copy of the bd_info in
|
||||
space between "bootm_low" and "bootm_low" + BOOTMAPSZ.
|
||||
|
||||
- CONFIG_SYS_FLASH_PROTECTION
|
||||
If defined, hardware flash sectors protection is used
|
||||
instead of U-Boot software protection.
|
||||
|
||||
- CONFIG_SYS_FLASH_CFI:
|
||||
Define if the flash driver uses extra elements in the
|
||||
common flash structure for storing flash geometry.
|
||||
|
||||
- CONFIG_FLASH_CFI_DRIVER
|
||||
This option also enables the building of the cfi_flash driver
|
||||
in the drivers directory
|
||||
|
||||
- CONFIG_FLASH_CFI_MTD
|
||||
This option enables the building of the cfi_mtd driver
|
||||
in the drivers directory. The driver exports CFI flash
|
||||
to the MTD layer.
|
||||
|
||||
- CONFIG_SYS_FLASH_USE_BUFFER_WRITE
|
||||
Use buffered writes to flash.
|
||||
|
||||
- CONFIG_ENV_FLAGS_LIST_DEFAULT
|
||||
- CFG_ENV_FLAGS_LIST_STATIC
|
||||
Enable validation of the values given to environment variables when
|
||||
calling env set. Variables can be restricted to only decimal,
|
||||
hexadecimal, or boolean. If CONFIG_CMD_NET is also defined,
|
||||
the variables can also be restricted to IP address or MAC address.
|
||||
|
||||
The format of the list is:
|
||||
type_attribute = [s|d|x|b|i|m]
|
||||
access_attribute = [a|r|o|c]
|
||||
attributes = type_attribute[access_attribute]
|
||||
entry = variable_name[:attributes]
|
||||
list = entry[,list]
|
||||
|
||||
The type attributes are:
|
||||
s - String (default)
|
||||
d - Decimal
|
||||
x - Hexadecimal
|
||||
b - Boolean ([1yYtT|0nNfF])
|
||||
i - IP address
|
||||
m - MAC address
|
||||
|
||||
The access attributes are:
|
||||
a - Any (default)
|
||||
r - Read-only
|
||||
o - Write-once
|
||||
c - Change-default
|
||||
|
||||
- CONFIG_ENV_FLAGS_LIST_DEFAULT
|
||||
Define this to a list (string) to define the ".flags"
|
||||
environment variable in the default or embedded environment.
|
||||
|
||||
- CFG_ENV_FLAGS_LIST_STATIC
|
||||
Define this to a list (string) to define validation that
|
||||
should be done if an entry is not found in the ".flags"
|
||||
environment variable. To override a setting in the static
|
||||
list, simply add an entry for the same variable name to the
|
||||
".flags" variable.
|
||||
|
||||
If CONFIG_REGEX is defined, the variable_name above is evaluated as a
|
||||
regular expression. This allows multiple variables to define the same
|
||||
flags without explicitly listing them for each variable.
|
||||
|
||||
The following definitions that deal with the placement and management
|
||||
of environment data (variable area); in general, we support the
|
||||
following configurations:
|
||||
|
||||
BE CAREFUL! The first access to the environment happens quite early
|
||||
in U-Boot initialization (when we try to get the setting of for the
|
||||
console baudrate). You *MUST* have mapped your NVRAM area then, or
|
||||
U-Boot will hang.
|
||||
|
||||
Please note that even with NVRAM we still use a copy of the
|
||||
environment in RAM: we could work on NVRAM directly, but we want to
|
||||
keep settings there always unmodified except somebody uses "saveenv"
|
||||
to save the current settings.
|
||||
|
||||
BE CAREFUL! For some special cases, the local device can not use
|
||||
"saveenv" command. For example, the local device will get the
|
||||
environment stored in a remote NOR flash by SRIO or PCIE link,
|
||||
but it can not erase, write this NOR flash by SRIO or PCIE interface.
|
||||
|
||||
- CONFIG_NAND_ENV_DST
|
||||
|
||||
Defines address in RAM to which the nand_spl code should copy the
|
||||
environment. If redundant environment is used, it will be copied to
|
||||
CONFIG_NAND_ENV_DST + CONFIG_ENV_SIZE.
|
||||
|
||||
Please note that the environment is read-only until the monitor
|
||||
has been relocated to RAM and a RAM copy of the environment has been
|
||||
created; also, when using EEPROM you will have to use env_get_f()
|
||||
until then to read environment variables.
|
||||
|
||||
The environment is protected by a CRC32 checksum. Before the monitor
|
||||
is relocated into RAM, as a result of a bad CRC you will be working
|
||||
with the compiled-in default environment - *silently*!!! [This is
|
||||
necessary, because the first environment variable we need is the
|
||||
"baudrate" setting for the console - if we have a bad CRC, we don't
|
||||
have any device yet where we could complain.]
|
||||
|
||||
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_DISPLAY_BOARDINFO
|
||||
Display information about the board that U-Boot is running on
|
||||
when U-Boot starts up. The board function checkboard() is called
|
||||
to do this.
|
||||
|
||||
- CONFIG_DISPLAY_BOARDINFO_LATE
|
||||
Similar to the previous option, but display this information
|
||||
later, once stdio is running and output goes to the LCD, if
|
||||
present.
|
||||
|
||||
Low Level (hardware related) configuration options:
|
||||
---------------------------------------------------
|
||||
|
||||
|
||||
@@ -96,7 +96,7 @@ SECTIONS
|
||||
{
|
||||
KEEP(*(.__secure_stack_start))
|
||||
|
||||
/* Skip addreses for stack */
|
||||
/* Skip addresses for stack */
|
||||
. = . + CONFIG_ARMV7_PSCI_NR_CPUS * ARM_PSCI_STACK_SIZE;
|
||||
|
||||
/* Align end of stack section to page boundary */
|
||||
|
||||
@@ -872,8 +872,6 @@ dtb-$(CONFIG_ARCH_IMX8M) += \
|
||||
imx8mm-mx8menlo.dtb \
|
||||
imx8mm-phg.dtb \
|
||||
imx8mq-cm.dtb \
|
||||
imx8mq-mnt-reform2.dtb \
|
||||
imx8mq-phanbell.dtb \
|
||||
imx8mp-data-modul-edm-sbc.dtb \
|
||||
imx8mp-dhcom-som-overlay-rev100.dtbo \
|
||||
imx8mp-dhcom-som-overlay-eth1xfast.dtbo \
|
||||
@@ -883,10 +881,7 @@ dtb-$(CONFIG_ARCH_IMX8M) += \
|
||||
imx8mp-dhcom-pdk3-overlay-rev100.dtbo \
|
||||
imx8mp-dhcom-picoitx.dtb \
|
||||
imx8mp-icore-mx8mp-edimm2.2.dtb \
|
||||
imx8mp-msc-sm2s.dtb \
|
||||
imx8mq-pico-pi.dtb \
|
||||
imx8mq-kontron-pitx-imx8m.dtb \
|
||||
imx8mq-librem5-r4.dtb
|
||||
imx8mp-msc-sm2s.dtb
|
||||
|
||||
dtb-$(CONFIG_ARCH_IMX9) += \
|
||||
imx93-11x11-frdm.dtb \
|
||||
|
||||
@@ -1,437 +0,0 @@
|
||||
// SPDX-License-Identifier: (GPL-2.0 OR MIT)
|
||||
/*
|
||||
* Copyright 2020 Compass Electronics Group, LLC
|
||||
*/
|
||||
|
||||
#include <dt-bindings/phy/phy-imx8-pcie.h>
|
||||
|
||||
/ {
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
|
||||
led0 {
|
||||
label = "gen_led0";
|
||||
gpios = <&pca6416_1 4 GPIO_ACTIVE_HIGH>;
|
||||
default-state = "off";
|
||||
};
|
||||
|
||||
led1 {
|
||||
label = "gen_led1";
|
||||
gpios = <&pca6416_1 5 GPIO_ACTIVE_HIGH>;
|
||||
default-state = "off";
|
||||
};
|
||||
|
||||
led2 {
|
||||
label = "gen_led2";
|
||||
gpios = <&pca6416_1 6 GPIO_ACTIVE_HIGH>;
|
||||
default-state = "off";
|
||||
};
|
||||
|
||||
led3 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_led3>;
|
||||
label = "heartbeat";
|
||||
gpios = <&gpio4 28 GPIO_ACTIVE_HIGH>;
|
||||
linux,default-trigger = "heartbeat";
|
||||
};
|
||||
};
|
||||
|
||||
pcie0_refclk: pcie0-refclk {
|
||||
compatible = "fixed-clock";
|
||||
#clock-cells = <0>;
|
||||
clock-frequency = <100000000>;
|
||||
};
|
||||
|
||||
pcie0_refclk_gated: pcie0-refclk-gated {
|
||||
compatible = "gpio-gate-clock";
|
||||
clocks = <&pcie0_refclk>;
|
||||
#clock-cells = <0>;
|
||||
enable-gpios = <&pca6416_1 2 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
reg_audio: regulator-audio {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "3v3_aud";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
gpio = <&pca6416_1 11 GPIO_ACTIVE_HIGH>;
|
||||
enable-active-high;
|
||||
};
|
||||
|
||||
reg_usbotg1: regulator-usbotg1 {
|
||||
compatible = "regulator-fixed";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_reg_usb_otg1>;
|
||||
regulator-name = "usb_otg_vbus";
|
||||
regulator-min-microvolt = <5000000>;
|
||||
regulator-max-microvolt = <5000000>;
|
||||
gpio = <&gpio4 29 GPIO_ACTIVE_HIGH>;
|
||||
enable-active-high;
|
||||
};
|
||||
|
||||
reg_camera: regulator-camera {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "mipi_pwr";
|
||||
regulator-min-microvolt = <2800000>;
|
||||
regulator-max-microvolt = <2800000>;
|
||||
gpio = <&pca6416_1 0 GPIO_ACTIVE_HIGH>;
|
||||
enable-active-high;
|
||||
startup-delay-us = <100000>;
|
||||
};
|
||||
|
||||
reg_pcie0: regulator-pcie {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "pci_pwr_en";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
enable-active-high;
|
||||
gpio = <&pca6416_1 1 GPIO_ACTIVE_HIGH>;
|
||||
startup-delay-us = <100000>;
|
||||
};
|
||||
|
||||
reg_usdhc2_vmmc: regulator-usdhc2 {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "VSD_3V3";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
gpio = <&gpio2 19 GPIO_ACTIVE_HIGH>;
|
||||
enable-active-high;
|
||||
};
|
||||
|
||||
sound {
|
||||
compatible = "fsl,imx-audio-wm8962";
|
||||
model = "wm8962-audio";
|
||||
audio-cpu = <&sai3>;
|
||||
audio-codec = <&wm8962>;
|
||||
audio-routing =
|
||||
"Headphone Jack", "HPOUTL",
|
||||
"Headphone Jack", "HPOUTR",
|
||||
"Ext Spk", "SPKOUTL",
|
||||
"Ext Spk", "SPKOUTR",
|
||||
"AMIC", "MICBIAS",
|
||||
"IN3R", "AMIC";
|
||||
};
|
||||
};
|
||||
|
||||
&csi {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&ecspi2 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_espi2>;
|
||||
cs-gpios = <&gpio5 9 GPIO_ACTIVE_LOW>;
|
||||
status = "okay";
|
||||
|
||||
eeprom@0 {
|
||||
compatible = "microchip,at25160bn", "atmel,at25";
|
||||
reg = <0>;
|
||||
spi-max-frequency = <5000000>;
|
||||
spi-cpha;
|
||||
spi-cpol;
|
||||
pagesize = <32>;
|
||||
size = <2048>;
|
||||
address-width = <16>;
|
||||
};
|
||||
};
|
||||
|
||||
&i2c2 {
|
||||
clock-frequency = <400000>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_i2c2>;
|
||||
status = "okay";
|
||||
|
||||
camera@3c {
|
||||
compatible = "ovti,ov5640";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_ov5640>;
|
||||
reg = <0x3c>;
|
||||
clocks = <&clk IMX8MM_CLK_CLKO1>;
|
||||
clock-names = "xclk";
|
||||
assigned-clocks = <&clk IMX8MM_CLK_CLKO1>;
|
||||
assigned-clock-parents = <&clk IMX8MM_CLK_24M>;
|
||||
assigned-clock-rates = <24000000>;
|
||||
AVDD-supply = <®_camera>; /* 2.8v */
|
||||
powerdown-gpios = <&gpio1 7 GPIO_ACTIVE_HIGH>;
|
||||
reset-gpios = <&gpio1 6 GPIO_ACTIVE_LOW>;
|
||||
|
||||
port {
|
||||
/* MIPI CSI-2 bus endpoint */
|
||||
ov5640_to_mipi_csi2: endpoint {
|
||||
remote-endpoint = <&imx8mm_mipi_csi_in>;
|
||||
clock-lanes = <0>;
|
||||
data-lanes = <1 2>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&i2c4 {
|
||||
clock-frequency = <400000>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_i2c4>;
|
||||
status = "okay";
|
||||
|
||||
wm8962: audio-codec@1a {
|
||||
compatible = "wlf,wm8962";
|
||||
reg = <0x1a>;
|
||||
clocks = <&clk IMX8MM_CLK_SAI3_ROOT>;
|
||||
DCVDD-supply = <®_audio>;
|
||||
DBVDD-supply = <®_audio>;
|
||||
AVDD-supply = <®_audio>;
|
||||
CPVDD-supply = <®_audio>;
|
||||
MICVDD-supply = <®_audio>;
|
||||
PLLVDD-supply = <®_audio>;
|
||||
SPKVDD1-supply = <®_audio>;
|
||||
SPKVDD2-supply = <®_audio>;
|
||||
gpio-cfg = <
|
||||
0x0000 /* 0:Default */
|
||||
0x0000 /* 1:Default */
|
||||
0x0000 /* 2:FN_DMICCLK */
|
||||
0x0000 /* 3:Default */
|
||||
0x0000 /* 4:FN_DMICCDAT */
|
||||
0x0000 /* 5:Default */
|
||||
>;
|
||||
};
|
||||
|
||||
pca6416_0: gpio@20 {
|
||||
compatible = "nxp,pcal6416";
|
||||
reg = <0x20>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_pcal6414>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
interrupt-parent = <&gpio4>;
|
||||
interrupts = <27 IRQ_TYPE_LEVEL_LOW>;
|
||||
};
|
||||
|
||||
pca6416_1: gpio@21 {
|
||||
compatible = "nxp,pcal6416";
|
||||
reg = <0x21>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
interrupt-parent = <&gpio4>;
|
||||
interrupts = <27 IRQ_TYPE_LEVEL_LOW>;
|
||||
};
|
||||
};
|
||||
|
||||
&mipi_csi {
|
||||
status = "okay";
|
||||
ports {
|
||||
port@0 {
|
||||
imx8mm_mipi_csi_in: endpoint {
|
||||
remote-endpoint = <&ov5640_to_mipi_csi2>;
|
||||
data-lanes = <1 2>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&pcie_phy {
|
||||
fsl,refclk-pad-mode = <IMX8_PCIE_REFCLK_PAD_INPUT>;
|
||||
fsl,tx-deemph-gen1 = <0x2d>;
|
||||
fsl,tx-deemph-gen2 = <0xf>;
|
||||
fsl,clkreq-unsupported;
|
||||
clocks = <&pcie0_refclk_gated>;
|
||||
clock-names = "ref";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pcie0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_pcie0>;
|
||||
reset-gpio = <&gpio4 21 GPIO_ACTIVE_LOW>;
|
||||
clocks = <&clk IMX8MM_CLK_PCIE1_ROOT>, <&clk IMX8MM_CLK_PCIE1_AUX>,
|
||||
<&pcie0_refclk_gated>;
|
||||
clock-names = "pcie", "pcie_aux", "pcie_bus";
|
||||
assigned-clocks = <&clk IMX8MM_CLK_PCIE1_AUX>,
|
||||
<&clk IMX8MM_CLK_PCIE1_CTRL>;
|
||||
assigned-clock-rates = <10000000>, <250000000>;
|
||||
assigned-clock-parents = <&clk IMX8MM_SYS_PLL2_50M>,
|
||||
<&clk IMX8MM_SYS_PLL2_250M>;
|
||||
vpcie-supply = <®_pcie0>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&sai3 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_sai3>;
|
||||
assigned-clocks = <&clk IMX8MM_CLK_SAI3>;
|
||||
assigned-clock-parents = <&clk IMX8MM_AUDIO_PLL1_OUT>;
|
||||
assigned-clock-rates = <24576000>;
|
||||
fsl,sai-mclk-direction-output;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&snvs_pwrkey {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart2 { /* console */
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_uart2>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart3 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_uart3>;
|
||||
assigned-clocks = <&clk IMX8MM_CLK_UART3>;
|
||||
assigned-clock-parents = <&clk IMX8MM_SYS_PLL1_80M>;
|
||||
uart-has-rtscts;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usbotg1 {
|
||||
vbus-supply = <®_usbotg1>;
|
||||
disable-over-current;
|
||||
dr_mode = "otg";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usbotg2 {
|
||||
pinctrl-names = "default";
|
||||
disable-over-current;
|
||||
dr_mode = "host";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usbphynop2 {
|
||||
reset-gpios = <&pca6416_1 7 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
&usdhc2 {
|
||||
pinctrl-names = "default", "state_100mhz", "state_200mhz";
|
||||
pinctrl-0 = <&pinctrl_usdhc2>, <&pinctrl_usdhc2_gpio>;
|
||||
pinctrl-1 = <&pinctrl_usdhc2_100mhz>;
|
||||
pinctrl-2 = <&pinctrl_usdhc2_200mhz>;
|
||||
bus-width = <4>;
|
||||
vmmc-supply = <®_usdhc2_vmmc>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&iomuxc {
|
||||
pinctrl_espi2: espi2grp {
|
||||
fsl,pins = <
|
||||
MX8MM_IOMUXC_ECSPI2_SCLK_ECSPI2_SCLK 0x82
|
||||
MX8MM_IOMUXC_ECSPI2_MOSI_ECSPI2_MOSI 0x82
|
||||
MX8MM_IOMUXC_ECSPI2_MISO_ECSPI2_MISO 0x82
|
||||
MX8MM_IOMUXC_ECSPI1_SS0_GPIO5_IO9 0x41
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_i2c2: i2c2grp {
|
||||
fsl,pins = <
|
||||
MX8MM_IOMUXC_I2C2_SCL_I2C2_SCL 0x400001c3
|
||||
MX8MM_IOMUXC_I2C2_SDA_I2C2_SDA 0x400001c3
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_i2c4: i2c4grp {
|
||||
fsl,pins = <
|
||||
MX8MM_IOMUXC_I2C4_SCL_I2C4_SCL 0x400001c3
|
||||
MX8MM_IOMUXC_I2C4_SDA_I2C4_SDA 0x400001c3
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_led3: led3grp {
|
||||
fsl,pins = <
|
||||
MX8MM_IOMUXC_SAI3_RXFS_GPIO4_IO28 0x41
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_ov5640: ov5640grp {
|
||||
fsl,pins = <
|
||||
MX8MM_IOMUXC_GPIO1_IO07_GPIO1_IO7 0x19
|
||||
MX8MM_IOMUXC_GPIO1_IO06_GPIO1_IO6 0x19
|
||||
MX8MM_IOMUXC_GPIO1_IO14_CCMSRCGPCMIX_CLKO1 0x59
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_pcal6414: pcal6414-gpiogrp {
|
||||
fsl,pins = <
|
||||
MX8MM_IOMUXC_SAI2_MCLK_GPIO4_IO27 0x19
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_reg_usb_otg1: usbotg1grp {
|
||||
fsl,pins = <
|
||||
MX8MM_IOMUXC_SAI3_RXC_GPIO4_IO29 0x19
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_pcie0: pcie0grp {
|
||||
fsl,pins = <
|
||||
MX8MM_IOMUXC_SAI2_RXFS_GPIO4_IO21 0x41
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_sai3: sai3grp {
|
||||
fsl,pins = <
|
||||
MX8MM_IOMUXC_SAI3_TXFS_SAI3_TX_SYNC 0xd6
|
||||
MX8MM_IOMUXC_SAI3_TXC_SAI3_TX_BCLK 0xd6
|
||||
MX8MM_IOMUXC_SAI3_MCLK_SAI3_MCLK 0xd6
|
||||
MX8MM_IOMUXC_SAI3_TXD_SAI3_TX_DATA0 0xd6
|
||||
MX8MM_IOMUXC_SAI3_RXD_SAI3_RX_DATA0 0xd6
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_uart2: uart2grp {
|
||||
fsl,pins = <
|
||||
MX8MM_IOMUXC_UART2_RXD_UART2_DCE_RX 0x140
|
||||
MX8MM_IOMUXC_UART2_TXD_UART2_DCE_TX 0x140
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_uart3: uart3grp {
|
||||
fsl,pins = <
|
||||
MX8MM_IOMUXC_ECSPI1_SCLK_UART3_DCE_RX 0x40
|
||||
MX8MM_IOMUXC_ECSPI1_MOSI_UART3_DCE_TX 0x40
|
||||
MX8MM_IOMUXC_ECSPI1_MISO_UART3_DCE_CTS_B 0x40
|
||||
MX8MM_IOMUXC_ECSPI1_SS0_UART3_DCE_RTS_B 0x40
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_usdhc2_gpio: usdhc2gpiogrp {
|
||||
fsl,pins = <
|
||||
MX8MM_IOMUXC_SD2_CD_B_USDHC2_CD_B 0x41
|
||||
MX8MM_IOMUXC_SD2_RESET_B_GPIO2_IO19 0x41
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_usdhc2: usdhc2grp {
|
||||
fsl,pins = <
|
||||
MX8MM_IOMUXC_SD2_CLK_USDHC2_CLK 0x190
|
||||
MX8MM_IOMUXC_SD2_CMD_USDHC2_CMD 0x1d0
|
||||
MX8MM_IOMUXC_SD2_DATA0_USDHC2_DATA0 0x1d0
|
||||
MX8MM_IOMUXC_SD2_DATA1_USDHC2_DATA1 0x1d0
|
||||
MX8MM_IOMUXC_SD2_DATA2_USDHC2_DATA2 0x1d0
|
||||
MX8MM_IOMUXC_SD2_DATA3_USDHC2_DATA3 0x1d0
|
||||
MX8MM_IOMUXC_GPIO1_IO04_USDHC2_VSELECT 0x1d0
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_usdhc2_100mhz: usdhc2-100mhzgrp {
|
||||
fsl,pins = <
|
||||
MX8MM_IOMUXC_SD2_CLK_USDHC2_CLK 0x194
|
||||
MX8MM_IOMUXC_SD2_CMD_USDHC2_CMD 0x1d4
|
||||
MX8MM_IOMUXC_SD2_DATA0_USDHC2_DATA0 0x1d4
|
||||
MX8MM_IOMUXC_SD2_DATA1_USDHC2_DATA1 0x1d4
|
||||
MX8MM_IOMUXC_SD2_DATA2_USDHC2_DATA2 0x1d4
|
||||
MX8MM_IOMUXC_SD2_DATA3_USDHC2_DATA3 0x1d4
|
||||
MX8MM_IOMUXC_GPIO1_IO04_USDHC2_VSELECT 0x1d0
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_usdhc2_200mhz: usdhc2-200mhzgrp {
|
||||
fsl,pins = <
|
||||
MX8MM_IOMUXC_SD2_CLK_USDHC2_CLK 0x196
|
||||
MX8MM_IOMUXC_SD2_CMD_USDHC2_CMD 0x1d6
|
||||
MX8MM_IOMUXC_SD2_DATA0_USDHC2_DATA0 0x1d6
|
||||
MX8MM_IOMUXC_SD2_DATA1_USDHC2_DATA1 0x1d6
|
||||
MX8MM_IOMUXC_SD2_DATA2_USDHC2_DATA2 0x1d6
|
||||
MX8MM_IOMUXC_SD2_DATA3_USDHC2_DATA3 0x1d6
|
||||
MX8MM_IOMUXC_GPIO1_IO04_USDHC2_VSELECT 0x1d0
|
||||
>;
|
||||
};
|
||||
};
|
||||
@@ -1,309 +0,0 @@
|
||||
// SPDX-License-Identifier: (GPL-2.0 OR MIT)
|
||||
/*
|
||||
* Copyright 2020 Compass Electronics Group, LLC
|
||||
*/
|
||||
|
||||
/ {
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
|
||||
led-0 {
|
||||
label = "gen_led0";
|
||||
gpios = <&pca6416_1 4 GPIO_ACTIVE_HIGH>;
|
||||
default-state = "off";
|
||||
};
|
||||
|
||||
led-1 {
|
||||
label = "gen_led1";
|
||||
gpios = <&pca6416_1 5 GPIO_ACTIVE_HIGH>;
|
||||
default-state = "off";
|
||||
};
|
||||
|
||||
led-2 {
|
||||
label = "gen_led2";
|
||||
gpios = <&pca6416_1 6 GPIO_ACTIVE_HIGH>;
|
||||
default-state = "off";
|
||||
};
|
||||
|
||||
led-3 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_led3>;
|
||||
label = "heartbeat";
|
||||
gpios = <&gpio4 28 GPIO_ACTIVE_HIGH>;
|
||||
linux,default-trigger = "heartbeat";
|
||||
};
|
||||
};
|
||||
|
||||
reg_audio: regulator-audio {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "3v3_aud";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
gpio = <&pca6416_1 11 GPIO_ACTIVE_HIGH>;
|
||||
enable-active-high;
|
||||
};
|
||||
|
||||
reg_usdhc2_vmmc: regulator-usdhc2 {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vsd_3v3";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
gpio = <&gpio2 19 GPIO_ACTIVE_HIGH>;
|
||||
enable-active-high;
|
||||
};
|
||||
|
||||
reg_usb_otg_vbus: regulator-usb {
|
||||
compatible = "regulator-fixed";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_reg_usb_otg>;
|
||||
regulator-name = "usb_otg_vbus";
|
||||
regulator-min-microvolt = <5000000>;
|
||||
regulator-max-microvolt = <5000000>;
|
||||
gpio = <&gpio4 29 GPIO_ACTIVE_HIGH>;
|
||||
enable-active-high;
|
||||
};
|
||||
|
||||
sound {
|
||||
compatible = "fsl,imx-audio-wm8962";
|
||||
model = "wm8962-audio";
|
||||
audio-cpu = <&sai3>;
|
||||
audio-codec = <&wm8962>;
|
||||
audio-routing =
|
||||
"Headphone Jack", "HPOUTL",
|
||||
"Headphone Jack", "HPOUTR",
|
||||
"Ext Spk", "SPKOUTL",
|
||||
"Ext Spk", "SPKOUTR",
|
||||
"AMIC", "MICBIAS",
|
||||
"IN3R", "AMIC";
|
||||
};
|
||||
};
|
||||
|
||||
&ecspi2 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_espi2>;
|
||||
cs-gpios = <&gpio5 9 GPIO_ACTIVE_LOW>;
|
||||
status = "okay";
|
||||
|
||||
eeprom@0 {
|
||||
compatible = "microchip,at25160bn", "atmel,at25";
|
||||
reg = <0>;
|
||||
spi-max-frequency = <5000000>;
|
||||
spi-cpha;
|
||||
spi-cpol;
|
||||
pagesize = <32>;
|
||||
size = <2048>;
|
||||
address-width = <16>;
|
||||
};
|
||||
};
|
||||
|
||||
&i2c4 {
|
||||
clock-frequency = <400000>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_i2c4>;
|
||||
status = "okay";
|
||||
|
||||
pca6416_0: gpio@20 {
|
||||
compatible = "nxp,pcal6416";
|
||||
reg = <0x20>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_pcal6414>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
interrupt-parent = <&gpio4>;
|
||||
interrupts = <27 IRQ_TYPE_LEVEL_LOW>;
|
||||
};
|
||||
|
||||
pca6416_1: gpio@21 {
|
||||
compatible = "nxp,pcal6416";
|
||||
reg = <0x21>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
interrupt-parent = <&gpio4>;
|
||||
interrupts = <27 IRQ_TYPE_LEVEL_LOW>;
|
||||
};
|
||||
|
||||
wm8962: audio-codec@1a {
|
||||
compatible = "wlf,wm8962";
|
||||
reg = <0x1a>;
|
||||
clocks = <&clk IMX8MN_CLK_SAI3_ROOT>;
|
||||
DCVDD-supply = <®_audio>;
|
||||
DBVDD-supply = <®_audio>;
|
||||
AVDD-supply = <®_audio>;
|
||||
CPVDD-supply = <®_audio>;
|
||||
MICVDD-supply = <®_audio>;
|
||||
PLLVDD-supply = <®_audio>;
|
||||
SPKVDD1-supply = <®_audio>;
|
||||
SPKVDD2-supply = <®_audio>;
|
||||
gpio-cfg = <
|
||||
0x0000 /* 0:Default */
|
||||
0x0000 /* 1:Default */
|
||||
0x0000 /* 2:FN_DMICCLK */
|
||||
0x0000 /* 3:Default */
|
||||
0x0000 /* 4:FN_DMICCDAT */
|
||||
0x0000 /* 5:Default */
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
||||
&easrc {
|
||||
fsl,asrc-rate = <48000>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&sai3 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_sai3>;
|
||||
assigned-clocks = <&clk IMX8MN_CLK_SAI3>;
|
||||
assigned-clock-parents = <&clk IMX8MN_AUDIO_PLL1_OUT>;
|
||||
assigned-clock-rates = <24576000>;
|
||||
fsl,sai-mclk-direction-output;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&snvs_pwrkey {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart2 { /* console */
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_uart2>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart3 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_uart3>;
|
||||
assigned-clocks = <&clk IMX8MN_CLK_UART3>;
|
||||
assigned-clock-parents = <&clk IMX8MN_SYS_PLL1_80M>;
|
||||
uart-has-rtscts;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usbotg1 {
|
||||
vbus-supply = <®_usb_otg_vbus>;
|
||||
disable-over-current;
|
||||
dr_mode = "otg";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usdhc2 {
|
||||
pinctrl-names = "default", "state_100mhz", "state_200mhz";
|
||||
pinctrl-0 = <&pinctrl_usdhc2>, <&pinctrl_usdhc2_gpio>;
|
||||
pinctrl-1 = <&pinctrl_usdhc2_100mhz>;
|
||||
pinctrl-2 = <&pinctrl_usdhc2_200mhz>;
|
||||
bus-width = <4>;
|
||||
vmmc-supply = <®_usdhc2_vmmc>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&iomuxc {
|
||||
pinctrl_espi2: espi2grp {
|
||||
fsl,pins = <
|
||||
MX8MN_IOMUXC_ECSPI2_SCLK_ECSPI2_SCLK 0x82
|
||||
MX8MN_IOMUXC_ECSPI2_MOSI_ECSPI2_MOSI 0x82
|
||||
MX8MN_IOMUXC_ECSPI2_MISO_ECSPI2_MISO 0x82
|
||||
MX8MN_IOMUXC_ECSPI1_SS0_GPIO5_IO9 0x41
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_i2c2: i2c2grp {
|
||||
fsl,pins = <
|
||||
MX8MN_IOMUXC_I2C2_SCL_I2C2_SCL 0x400001c3
|
||||
MX8MN_IOMUXC_I2C2_SDA_I2C2_SDA 0x400001c3
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_i2c4: i2c4grp {
|
||||
fsl,pins = <
|
||||
MX8MN_IOMUXC_I2C4_SCL_I2C4_SCL 0x400001c3
|
||||
MX8MN_IOMUXC_I2C4_SDA_I2C4_SDA 0x400001c3
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_led3: led3grp {
|
||||
fsl,pins = <
|
||||
MX8MN_IOMUXC_SAI3_RXFS_GPIO4_IO28 0x41
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_pcal6414: pcal6414-gpiogrp {
|
||||
fsl,pins = <
|
||||
MX8MN_IOMUXC_SAI2_MCLK_GPIO4_IO27 0x19
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_reg_usb_otg: reg-otggrp {
|
||||
fsl,pins = <
|
||||
MX8MN_IOMUXC_SAI3_RXC_GPIO4_IO29 0x19
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_sai3: sai3grp {
|
||||
fsl,pins = <
|
||||
MX8MN_IOMUXC_SAI3_TXFS_SAI3_TX_SYNC 0xd6
|
||||
MX8MN_IOMUXC_SAI3_TXC_SAI3_TX_BCLK 0xd6
|
||||
MX8MN_IOMUXC_SAI3_MCLK_SAI3_MCLK 0xd6
|
||||
MX8MN_IOMUXC_SAI3_TXD_SAI3_TX_DATA0 0xd6
|
||||
MX8MN_IOMUXC_SAI3_RXD_SAI3_RX_DATA0 0xd6
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_uart2: uart2grp {
|
||||
fsl,pins = <
|
||||
MX8MN_IOMUXC_UART2_RXD_UART2_DCE_RX 0x140
|
||||
MX8MN_IOMUXC_UART2_TXD_UART2_DCE_TX 0x140
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_uart3: uart3grp {
|
||||
fsl,pins = <
|
||||
MX8MN_IOMUXC_ECSPI1_SCLK_UART3_DCE_RX 0x40
|
||||
MX8MN_IOMUXC_ECSPI1_MOSI_UART3_DCE_TX 0x40
|
||||
MX8MN_IOMUXC_ECSPI1_MISO_UART3_DCE_CTS_B 0x40
|
||||
MX8MN_IOMUXC_ECSPI1_SS0_UART3_DCE_RTS_B 0x40
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_usdhc2_gpio: usdhc2gpiogrp {
|
||||
fsl,pins = <
|
||||
MX8MN_IOMUXC_SD2_CD_B_USDHC2_CD_B 0x41
|
||||
MX8MN_IOMUXC_SD2_RESET_B_GPIO2_IO19 0x41
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_usdhc2: usdhc2grp {
|
||||
fsl,pins = <
|
||||
MX8MN_IOMUXC_SD2_CLK_USDHC2_CLK 0x190
|
||||
MX8MN_IOMUXC_SD2_CMD_USDHC2_CMD 0x1d0
|
||||
MX8MN_IOMUXC_SD2_DATA0_USDHC2_DATA0 0x1d0
|
||||
MX8MN_IOMUXC_SD2_DATA1_USDHC2_DATA1 0x1d0
|
||||
MX8MN_IOMUXC_SD2_DATA2_USDHC2_DATA2 0x1d0
|
||||
MX8MN_IOMUXC_SD2_DATA3_USDHC2_DATA3 0x1d0
|
||||
MX8MN_IOMUXC_GPIO1_IO04_USDHC2_VSELECT 0x1d0
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_usdhc2_100mhz: usdhc2-100mhzgrp {
|
||||
fsl,pins = <
|
||||
MX8MN_IOMUXC_SD2_CLK_USDHC2_CLK 0x194
|
||||
MX8MN_IOMUXC_SD2_CMD_USDHC2_CMD 0x1d4
|
||||
MX8MN_IOMUXC_SD2_DATA0_USDHC2_DATA0 0x1d4
|
||||
MX8MN_IOMUXC_SD2_DATA1_USDHC2_DATA1 0x1d4
|
||||
MX8MN_IOMUXC_SD2_DATA2_USDHC2_DATA2 0x1d4
|
||||
MX8MN_IOMUXC_SD2_DATA3_USDHC2_DATA3 0x1d4
|
||||
MX8MN_IOMUXC_GPIO1_IO04_USDHC2_VSELECT 0x1d0
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_usdhc2_200mhz: usdhc2-200mhzgrp {
|
||||
fsl,pins = <
|
||||
MX8MN_IOMUXC_SD2_CLK_USDHC2_CLK 0x196
|
||||
MX8MN_IOMUXC_SD2_CMD_USDHC2_CMD 0x1d6
|
||||
MX8MN_IOMUXC_SD2_DATA0_USDHC2_DATA0 0x1d6
|
||||
MX8MN_IOMUXC_SD2_DATA1_USDHC2_DATA1 0x1d6
|
||||
MX8MN_IOMUXC_SD2_DATA2_USDHC2_DATA2 0x1d6
|
||||
MX8MN_IOMUXC_SD2_DATA3_USDHC2_DATA3 0x1d6
|
||||
MX8MN_IOMUXC_GPIO1_IO04_USDHC2_VSELECT 0x1d0
|
||||
>;
|
||||
};
|
||||
};
|
||||
@@ -1,533 +0,0 @@
|
||||
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
||||
/*
|
||||
* Copyright 2019 NXP
|
||||
*/
|
||||
|
||||
#include <dt-bindings/usb/pd.h>
|
||||
#include "imx8mn.dtsi"
|
||||
|
||||
/ {
|
||||
chosen {
|
||||
stdout-path = &uart2;
|
||||
};
|
||||
|
||||
gpio-leds {
|
||||
compatible = "gpio-leds";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_gpio_led>;
|
||||
|
||||
status {
|
||||
label = "yellow:status";
|
||||
gpios = <&gpio3 16 GPIO_ACTIVE_HIGH>;
|
||||
default-state = "on";
|
||||
};
|
||||
};
|
||||
|
||||
memory@40000000 {
|
||||
device_type = "memory";
|
||||
reg = <0x0 0x40000000 0 0x80000000>;
|
||||
};
|
||||
|
||||
reg_usdhc2_vmmc: regulator-usdhc2 {
|
||||
compatible = "regulator-fixed";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_reg_usdhc2_vmmc>;
|
||||
regulator-name = "VSD_3V3";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
gpio = <&gpio2 19 GPIO_ACTIVE_HIGH>;
|
||||
enable-active-high;
|
||||
};
|
||||
|
||||
ir-receiver {
|
||||
compatible = "gpio-ir-receiver";
|
||||
gpios = <&gpio1 13 GPIO_ACTIVE_LOW>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_ir>;
|
||||
linux,autosuspend-period = <125>;
|
||||
};
|
||||
|
||||
audio_codec_bt_sco: audio-codec-bt-sco {
|
||||
compatible = "linux,bt-sco";
|
||||
#sound-dai-cells = <1>;
|
||||
};
|
||||
|
||||
wm8524: audio-codec {
|
||||
#sound-dai-cells = <0>;
|
||||
compatible = "wlf,wm8524";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_gpio_wlf>;
|
||||
wlf,mute-gpios = <&gpio5 21 GPIO_ACTIVE_LOW>;
|
||||
clocks = <&clk IMX8MN_CLK_SAI3_ROOT>;
|
||||
clock-names = "mclk";
|
||||
};
|
||||
|
||||
sound-bt-sco {
|
||||
compatible = "simple-audio-card";
|
||||
simple-audio-card,name = "bt-sco-audio";
|
||||
simple-audio-card,format = "dsp_a";
|
||||
simple-audio-card,bitclock-inversion;
|
||||
simple-audio-card,frame-master = <&btcpu>;
|
||||
simple-audio-card,bitclock-master = <&btcpu>;
|
||||
|
||||
btcpu: simple-audio-card,cpu {
|
||||
sound-dai = <&sai2>;
|
||||
dai-tdm-slot-num = <2>;
|
||||
dai-tdm-slot-width = <16>;
|
||||
};
|
||||
|
||||
simple-audio-card,codec {
|
||||
sound-dai = <&audio_codec_bt_sco 1>;
|
||||
};
|
||||
};
|
||||
|
||||
sound-wm8524 {
|
||||
compatible = "fsl,imx-audio-wm8524";
|
||||
model = "wm8524-audio";
|
||||
audio-cpu = <&sai3>;
|
||||
audio-codec = <&wm8524>;
|
||||
audio-asrc = <&easrc>;
|
||||
audio-routing =
|
||||
"Line Out Jack", "LINEVOUTL",
|
||||
"Line Out Jack", "LINEVOUTR";
|
||||
};
|
||||
|
||||
sound-spdif {
|
||||
compatible = "fsl,imx-audio-spdif";
|
||||
model = "imx-spdif";
|
||||
spdif-controller = <&spdif1>;
|
||||
spdif-out;
|
||||
spdif-in;
|
||||
};
|
||||
};
|
||||
|
||||
&easrc {
|
||||
fsl,asrc-rate = <48000>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&fec1 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_fec1>;
|
||||
phy-mode = "rgmii-id";
|
||||
phy-handle = <ðphy0>;
|
||||
fsl,magic-packet;
|
||||
status = "okay";
|
||||
|
||||
mdio {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
ethphy0: ethernet-phy@0 {
|
||||
compatible = "ethernet-phy-ieee802.3-c22";
|
||||
reg = <0>;
|
||||
reset-gpios = <&gpio4 22 GPIO_ACTIVE_LOW>;
|
||||
reset-assert-us = <10000>;
|
||||
qca,disable-smarteee;
|
||||
vddio-supply = <&vddio>;
|
||||
|
||||
vddio: vddio-regulator {
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&flexspi {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_flexspi>;
|
||||
status = "okay";
|
||||
|
||||
flash0: flash@0 {
|
||||
compatible = "jedec,spi-nor";
|
||||
reg = <0>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
spi-max-frequency = <166000000>;
|
||||
spi-tx-bus-width = <4>;
|
||||
spi-rx-bus-width = <4>;
|
||||
};
|
||||
};
|
||||
|
||||
&i2c1 {
|
||||
clock-frequency = <400000>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_i2c1>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&i2c2 {
|
||||
clock-frequency = <400000>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_i2c2>;
|
||||
status = "okay";
|
||||
|
||||
ptn5110: tcpc@50 {
|
||||
compatible = "nxp,ptn5110";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_typec1>;
|
||||
reg = <0x50>;
|
||||
interrupt-parent = <&gpio2>;
|
||||
interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
|
||||
status = "okay";
|
||||
|
||||
port {
|
||||
typec1_dr_sw: endpoint {
|
||||
remote-endpoint = <&usb1_drd_sw>;
|
||||
};
|
||||
};
|
||||
|
||||
typec1_con: connector {
|
||||
compatible = "usb-c-connector";
|
||||
label = "USB-C";
|
||||
power-role = "dual";
|
||||
data-role = "dual";
|
||||
try-power-role = "sink";
|
||||
source-pdos = <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)>;
|
||||
sink-pdos = <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)
|
||||
PDO_VAR(5000, 20000, 3000)>;
|
||||
op-sink-microwatt = <15000000>;
|
||||
self-powered;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&i2c3 {
|
||||
clock-frequency = <400000>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_i2c3>;
|
||||
status = "okay";
|
||||
|
||||
pca6416: gpio@20 {
|
||||
compatible = "ti,tca6416";
|
||||
reg = <0x20>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
};
|
||||
|
||||
&sai2 {
|
||||
#sound-dai-cells = <0>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_sai2>;
|
||||
assigned-clocks = <&clk IMX8MN_CLK_SAI2>;
|
||||
assigned-clock-parents = <&clk IMX8MN_AUDIO_PLL1_OUT>;
|
||||
assigned-clock-rates = <24576000>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&sai3 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_sai3>;
|
||||
assigned-clocks = <&clk IMX8MN_CLK_SAI3>;
|
||||
assigned-clock-parents = <&clk IMX8MN_AUDIO_PLL1_OUT>;
|
||||
assigned-clock-rates = <24576000>;
|
||||
fsl,sai-mclk-direction-output;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&snvs_pwrkey {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&spdif1 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_spdif1>;
|
||||
assigned-clocks = <&clk IMX8MN_CLK_SPDIF1>;
|
||||
assigned-clock-parents = <&clk IMX8MN_AUDIO_PLL1_OUT>;
|
||||
assigned-clock-rates = <24576000>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart2 { /* console */
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_uart2>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart3 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_uart3>;
|
||||
assigned-clocks = <&clk IMX8MN_CLK_UART3>;
|
||||
assigned-clock-parents = <&clk IMX8MN_SYS_PLL1_80M>;
|
||||
uart-has-rtscts;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usbotg1 {
|
||||
dr_mode = "otg";
|
||||
hnp-disable;
|
||||
srp-disable;
|
||||
adp-disable;
|
||||
usb-role-switch;
|
||||
disable-over-current;
|
||||
samsung,picophy-pre-emp-curr-control = <3>;
|
||||
samsung,picophy-dc-vol-level-adjust = <7>;
|
||||
status = "okay";
|
||||
|
||||
port {
|
||||
usb1_drd_sw: endpoint {
|
||||
remote-endpoint = <&typec1_dr_sw>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&usdhc2 {
|
||||
assigned-clocks = <&clk IMX8MN_CLK_USDHC2>;
|
||||
assigned-clock-rates = <200000000>;
|
||||
pinctrl-names = "default", "state_100mhz", "state_200mhz";
|
||||
pinctrl-0 = <&pinctrl_usdhc2>, <&pinctrl_usdhc2_gpio>;
|
||||
pinctrl-1 = <&pinctrl_usdhc2_100mhz>, <&pinctrl_usdhc2_gpio>;
|
||||
pinctrl-2 = <&pinctrl_usdhc2_200mhz>, <&pinctrl_usdhc2_gpio>;
|
||||
cd-gpios = <&gpio1 15 GPIO_ACTIVE_LOW>;
|
||||
bus-width = <4>;
|
||||
vmmc-supply = <®_usdhc2_vmmc>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usdhc3 {
|
||||
assigned-clocks = <&clk IMX8MN_CLK_USDHC3_ROOT>;
|
||||
assigned-clock-rates = <400000000>;
|
||||
pinctrl-names = "default", "state_100mhz", "state_200mhz";
|
||||
pinctrl-0 = <&pinctrl_usdhc3>;
|
||||
pinctrl-1 = <&pinctrl_usdhc3_100mhz>;
|
||||
pinctrl-2 = <&pinctrl_usdhc3_200mhz>;
|
||||
bus-width = <8>;
|
||||
non-removable;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&wdog1 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_wdog>;
|
||||
fsl,ext-reset-output;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&iomuxc {
|
||||
pinctrl_fec1: fec1grp {
|
||||
fsl,pins = <
|
||||
MX8MN_IOMUXC_ENET_MDC_ENET1_MDC 0x3
|
||||
MX8MN_IOMUXC_ENET_MDIO_ENET1_MDIO 0x3
|
||||
MX8MN_IOMUXC_ENET_TD3_ENET1_RGMII_TD3 0x1f
|
||||
MX8MN_IOMUXC_ENET_TD2_ENET1_RGMII_TD2 0x1f
|
||||
MX8MN_IOMUXC_ENET_TD1_ENET1_RGMII_TD1 0x1f
|
||||
MX8MN_IOMUXC_ENET_TD0_ENET1_RGMII_TD0 0x1f
|
||||
MX8MN_IOMUXC_ENET_RD3_ENET1_RGMII_RD3 0x91
|
||||
MX8MN_IOMUXC_ENET_RD2_ENET1_RGMII_RD2 0x91
|
||||
MX8MN_IOMUXC_ENET_RD1_ENET1_RGMII_RD1 0x91
|
||||
MX8MN_IOMUXC_ENET_RD0_ENET1_RGMII_RD0 0x91
|
||||
MX8MN_IOMUXC_ENET_TXC_ENET1_RGMII_TXC 0x1f
|
||||
MX8MN_IOMUXC_ENET_RXC_ENET1_RGMII_RXC 0x91
|
||||
MX8MN_IOMUXC_ENET_RX_CTL_ENET1_RGMII_RX_CTL 0x91
|
||||
MX8MN_IOMUXC_ENET_TX_CTL_ENET1_RGMII_TX_CTL 0x1f
|
||||
MX8MN_IOMUXC_SAI2_RXC_GPIO4_IO22 0x19
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_flexspi: flexspigrp {
|
||||
fsl,pins = <
|
||||
MX8MN_IOMUXC_NAND_ALE_QSPI_A_SCLK 0x1c2
|
||||
MX8MN_IOMUXC_NAND_CE0_B_QSPI_A_SS0_B 0x82
|
||||
MX8MN_IOMUXC_NAND_DATA00_QSPI_A_DATA0 0x82
|
||||
MX8MN_IOMUXC_NAND_DATA01_QSPI_A_DATA1 0x82
|
||||
MX8MN_IOMUXC_NAND_DATA02_QSPI_A_DATA2 0x82
|
||||
MX8MN_IOMUXC_NAND_DATA03_QSPI_A_DATA3 0x82
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_gpio_led: gpioledgrp {
|
||||
fsl,pins = <
|
||||
MX8MN_IOMUXC_NAND_READY_B_GPIO3_IO16 0x19
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_gpio_wlf: gpiowlfgrp {
|
||||
fsl,pins = <
|
||||
MX8MN_IOMUXC_I2C4_SDA_GPIO5_IO21 0xd6
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_ir: irgrp {
|
||||
fsl,pins = <
|
||||
MX8MN_IOMUXC_GPIO1_IO13_GPIO1_IO13 0x4f
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_i2c1: i2c1grp {
|
||||
fsl,pins = <
|
||||
MX8MN_IOMUXC_I2C1_SCL_I2C1_SCL 0x400001c3
|
||||
MX8MN_IOMUXC_I2C1_SDA_I2C1_SDA 0x400001c3
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_i2c2: i2c2grp {
|
||||
fsl,pins = <
|
||||
MX8MN_IOMUXC_I2C2_SCL_I2C2_SCL 0x400001c3
|
||||
MX8MN_IOMUXC_I2C2_SDA_I2C2_SDA 0x400001c3
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_i2c3: i2c3grp {
|
||||
fsl,pins = <
|
||||
MX8MN_IOMUXC_I2C3_SCL_I2C3_SCL 0x400001c3
|
||||
MX8MN_IOMUXC_I2C3_SDA_I2C3_SDA 0x400001c3
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_pmic: pmicirqgrp {
|
||||
fsl,pins = <
|
||||
MX8MN_IOMUXC_GPIO1_IO03_GPIO1_IO3 0x141
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_reg_usdhc2_vmmc: regusdhc2vmmcgrp {
|
||||
fsl,pins = <
|
||||
MX8MN_IOMUXC_SD2_RESET_B_GPIO2_IO19 0x41
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_sai2: sai2grp {
|
||||
fsl,pins = <
|
||||
MX8MN_IOMUXC_SAI2_TXC_SAI2_TX_BCLK 0xd6
|
||||
MX8MN_IOMUXC_SAI2_TXFS_SAI2_TX_SYNC 0xd6
|
||||
MX8MN_IOMUXC_SAI2_TXD0_SAI2_TX_DATA0 0xd6
|
||||
MX8MN_IOMUXC_SAI2_RXD0_SAI2_RX_DATA0 0xd6
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_sai3: sai3grp {
|
||||
fsl,pins = <
|
||||
MX8MN_IOMUXC_SAI3_TXFS_SAI3_TX_SYNC 0xd6
|
||||
MX8MN_IOMUXC_SAI3_TXC_SAI3_TX_BCLK 0xd6
|
||||
MX8MN_IOMUXC_SAI3_MCLK_SAI3_MCLK 0xd6
|
||||
MX8MN_IOMUXC_SAI3_TXD_SAI3_TX_DATA0 0xd6
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_spdif1: spdif1grp {
|
||||
fsl,pins = <
|
||||
MX8MN_IOMUXC_SPDIF_TX_SPDIF1_OUT 0xd6
|
||||
MX8MN_IOMUXC_SPDIF_RX_SPDIF1_IN 0xd6
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_typec1: typec1grp {
|
||||
fsl,pins = <
|
||||
MX8MN_IOMUXC_SD1_STROBE_GPIO2_IO11 0x159
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_uart2: uart2grp {
|
||||
fsl,pins = <
|
||||
MX8MN_IOMUXC_UART2_RXD_UART2_DCE_RX 0x140
|
||||
MX8MN_IOMUXC_UART2_TXD_UART2_DCE_TX 0x140
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_uart3: uart3grp {
|
||||
fsl,pins = <
|
||||
MX8MN_IOMUXC_ECSPI1_SCLK_UART3_DCE_RX 0x140
|
||||
MX8MN_IOMUXC_ECSPI1_MOSI_UART3_DCE_TX 0x140
|
||||
MX8MN_IOMUXC_ECSPI1_SS0_UART3_DCE_RTS_B 0x140
|
||||
MX8MN_IOMUXC_ECSPI1_MISO_UART3_DCE_CTS_B 0x140
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_usdhc2_gpio: usdhc2gpiogrp {
|
||||
fsl,pins = <
|
||||
MX8MN_IOMUXC_GPIO1_IO15_GPIO1_IO15 0x1c4
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_usdhc2: usdhc2grp {
|
||||
fsl,pins = <
|
||||
MX8MN_IOMUXC_SD2_CLK_USDHC2_CLK 0x190
|
||||
MX8MN_IOMUXC_SD2_CMD_USDHC2_CMD 0x1d0
|
||||
MX8MN_IOMUXC_SD2_DATA0_USDHC2_DATA0 0x1d0
|
||||
MX8MN_IOMUXC_SD2_DATA1_USDHC2_DATA1 0x1d0
|
||||
MX8MN_IOMUXC_SD2_DATA2_USDHC2_DATA2 0x1d0
|
||||
MX8MN_IOMUXC_SD2_DATA3_USDHC2_DATA3 0x1d0
|
||||
MX8MN_IOMUXC_GPIO1_IO04_USDHC2_VSELECT 0x1d0
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_usdhc2_100mhz: usdhc2-100mhzgrp {
|
||||
fsl,pins = <
|
||||
MX8MN_IOMUXC_SD2_CLK_USDHC2_CLK 0x194
|
||||
MX8MN_IOMUXC_SD2_CMD_USDHC2_CMD 0x1d4
|
||||
MX8MN_IOMUXC_SD2_DATA0_USDHC2_DATA0 0x1d4
|
||||
MX8MN_IOMUXC_SD2_DATA1_USDHC2_DATA1 0x1d4
|
||||
MX8MN_IOMUXC_SD2_DATA2_USDHC2_DATA2 0x1d4
|
||||
MX8MN_IOMUXC_SD2_DATA3_USDHC2_DATA3 0x1d4
|
||||
MX8MN_IOMUXC_GPIO1_IO04_USDHC2_VSELECT 0x1d0
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_usdhc2_200mhz: usdhc2-200mhzgrp {
|
||||
fsl,pins = <
|
||||
MX8MN_IOMUXC_SD2_CLK_USDHC2_CLK 0x196
|
||||
MX8MN_IOMUXC_SD2_CMD_USDHC2_CMD 0x1d6
|
||||
MX8MN_IOMUXC_SD2_DATA0_USDHC2_DATA0 0x1d6
|
||||
MX8MN_IOMUXC_SD2_DATA1_USDHC2_DATA1 0x1d6
|
||||
MX8MN_IOMUXC_SD2_DATA2_USDHC2_DATA2 0x1d6
|
||||
MX8MN_IOMUXC_SD2_DATA3_USDHC2_DATA3 0x1d6
|
||||
MX8MN_IOMUXC_GPIO1_IO04_USDHC2_VSELECT 0x1d0
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_usdhc3: usdhc3grp {
|
||||
fsl,pins = <
|
||||
MX8MN_IOMUXC_NAND_WE_B_USDHC3_CLK 0x40000190
|
||||
MX8MN_IOMUXC_NAND_WP_B_USDHC3_CMD 0x1d0
|
||||
MX8MN_IOMUXC_NAND_DATA04_USDHC3_DATA0 0x1d0
|
||||
MX8MN_IOMUXC_NAND_DATA05_USDHC3_DATA1 0x1d0
|
||||
MX8MN_IOMUXC_NAND_DATA06_USDHC3_DATA2 0x1d0
|
||||
MX8MN_IOMUXC_NAND_DATA07_USDHC3_DATA3 0x1d0
|
||||
MX8MN_IOMUXC_NAND_RE_B_USDHC3_DATA4 0x1d0
|
||||
MX8MN_IOMUXC_NAND_CE2_B_USDHC3_DATA5 0x1d0
|
||||
MX8MN_IOMUXC_NAND_CE3_B_USDHC3_DATA6 0x1d0
|
||||
MX8MN_IOMUXC_NAND_CLE_USDHC3_DATA7 0x1d0
|
||||
MX8MN_IOMUXC_NAND_CE1_B_USDHC3_STROBE 0x190
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_usdhc3_100mhz: usdhc3-100mhzgrp {
|
||||
fsl,pins = <
|
||||
MX8MN_IOMUXC_NAND_WE_B_USDHC3_CLK 0x40000194
|
||||
MX8MN_IOMUXC_NAND_WP_B_USDHC3_CMD 0x1d4
|
||||
MX8MN_IOMUXC_NAND_DATA04_USDHC3_DATA0 0x1d4
|
||||
MX8MN_IOMUXC_NAND_DATA05_USDHC3_DATA1 0x1d4
|
||||
MX8MN_IOMUXC_NAND_DATA06_USDHC3_DATA2 0x1d4
|
||||
MX8MN_IOMUXC_NAND_DATA07_USDHC3_DATA3 0x1d4
|
||||
MX8MN_IOMUXC_NAND_RE_B_USDHC3_DATA4 0x1d4
|
||||
MX8MN_IOMUXC_NAND_CE2_B_USDHC3_DATA5 0x1d4
|
||||
MX8MN_IOMUXC_NAND_CE3_B_USDHC3_DATA6 0x1d4
|
||||
MX8MN_IOMUXC_NAND_CLE_USDHC3_DATA7 0x1d4
|
||||
MX8MN_IOMUXC_NAND_CE1_B_USDHC3_STROBE 0x194
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_usdhc3_200mhz: usdhc3-200mhzgrp {
|
||||
fsl,pins = <
|
||||
MX8MN_IOMUXC_NAND_WE_B_USDHC3_CLK 0x40000196
|
||||
MX8MN_IOMUXC_NAND_WP_B_USDHC3_CMD 0x1d6
|
||||
MX8MN_IOMUXC_NAND_DATA04_USDHC3_DATA0 0x1d6
|
||||
MX8MN_IOMUXC_NAND_DATA05_USDHC3_DATA1 0x1d6
|
||||
MX8MN_IOMUXC_NAND_DATA06_USDHC3_DATA2 0x1d6
|
||||
MX8MN_IOMUXC_NAND_DATA07_USDHC3_DATA3 0x1d6
|
||||
MX8MN_IOMUXC_NAND_RE_B_USDHC3_DATA4 0x1d6
|
||||
MX8MN_IOMUXC_NAND_CE2_B_USDHC3_DATA5 0x1d6
|
||||
MX8MN_IOMUXC_NAND_CE3_B_USDHC3_DATA6 0x1d6
|
||||
MX8MN_IOMUXC_NAND_CLE_USDHC3_DATA7 0x1d6
|
||||
MX8MN_IOMUXC_NAND_CE1_B_USDHC3_STROBE 0x196
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_wdog: wdoggrp {
|
||||
fsl,pins = <
|
||||
MX8MN_IOMUXC_GPIO1_IO02_WDOG1_WDOG_B 0x166
|
||||
>;
|
||||
};
|
||||
};
|
||||
@@ -1,613 +0,0 @@
|
||||
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
||||
/*
|
||||
* Device Tree File for the Kontron pitx-imx8m board.
|
||||
*
|
||||
* Copyright (C) 2021 Heiko Thiery <heiko.thiery@gmail.com>
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
|
||||
#include "imx8mq.dtsi"
|
||||
#include <dt-bindings/net/ti-dp83867.h>
|
||||
|
||||
/ {
|
||||
model = "Kontron pITX-imx8m";
|
||||
compatible = "kontron,pitx-imx8m", "fsl,imx8mq";
|
||||
|
||||
aliases {
|
||||
i2c0 = &i2c1;
|
||||
i2c1 = &i2c2;
|
||||
i2c2 = &i2c3;
|
||||
mmc0 = &usdhc1;
|
||||
mmc1 = &usdhc2;
|
||||
serial0 = &uart1;
|
||||
serial1 = &uart2;
|
||||
serial2 = &uart3;
|
||||
spi0 = &qspi0;
|
||||
spi1 = &ecspi2;
|
||||
};
|
||||
|
||||
chosen {
|
||||
stdout-path = "serial2:115200n8";
|
||||
};
|
||||
|
||||
pcie0_refclk: pcie0-clock {
|
||||
compatible = "fixed-clock";
|
||||
#clock-cells = <0>;
|
||||
clock-frequency = <100000000>;
|
||||
};
|
||||
|
||||
pcie1_refclk: pcie1-clock {
|
||||
compatible = "fixed-clock";
|
||||
#clock-cells = <0>;
|
||||
clock-frequency = <100000000>;
|
||||
};
|
||||
|
||||
reg_usdhc2_vmmc: regulator-usdhc2-vmmc {
|
||||
compatible = "regulator-fixed";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_reg_usdhc2>;
|
||||
regulator-name = "V_3V3_SD";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
gpio = <&gpio2 19 GPIO_ACTIVE_HIGH>;
|
||||
off-on-delay-us = <20000>;
|
||||
enable-active-high;
|
||||
};
|
||||
};
|
||||
|
||||
&ecspi2 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_ecspi2 &pinctrl_ecspi2_cs>;
|
||||
cs-gpios = <&gpio5 13 GPIO_ACTIVE_LOW>;
|
||||
status = "okay";
|
||||
|
||||
tpm@0 {
|
||||
compatible = "infineon,slb9670";
|
||||
reg = <0>;
|
||||
spi-max-frequency = <43000000>;
|
||||
};
|
||||
};
|
||||
|
||||
&fec1 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_fec1>;
|
||||
phy-mode = "rgmii-id";
|
||||
phy-handle = <ðphy0>;
|
||||
fsl,magic-packet;
|
||||
status = "okay";
|
||||
|
||||
mdio {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
ethphy0: ethernet-phy@0 {
|
||||
compatible = "ethernet-phy-ieee802.3-c22";
|
||||
reg = <0>;
|
||||
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>;
|
||||
reset-gpios = <&gpio1 11 GPIO_ACTIVE_LOW>;
|
||||
reset-assert-us = <10>;
|
||||
reset-deassert-us = <280>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&i2c1 {
|
||||
clock-frequency = <400000>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_i2c1>;
|
||||
status = "okay";
|
||||
|
||||
pmic@8 {
|
||||
compatible = "fsl,pfuze100";
|
||||
fsl,pfuze-support-disable-sw;
|
||||
reg = <0x8>;
|
||||
|
||||
regulators {
|
||||
sw1a_reg: sw1ab {
|
||||
regulator-name = "V_0V9_GPU";
|
||||
regulator-min-microvolt = <825000>;
|
||||
regulator-max-microvolt = <1100000>;
|
||||
};
|
||||
|
||||
sw1c_reg: sw1c {
|
||||
regulator-name = "V_0V9_VPU";
|
||||
regulator-min-microvolt = <825000>;
|
||||
regulator-max-microvolt = <1100000>;
|
||||
};
|
||||
|
||||
sw2_reg: sw2 {
|
||||
regulator-name = "V_1V1_NVCC_DRAM";
|
||||
regulator-min-microvolt = <1100000>;
|
||||
regulator-max-microvolt = <1100000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
sw3a_reg: sw3ab {
|
||||
regulator-name = "V_1V0_DRAM";
|
||||
regulator-min-microvolt = <825000>;
|
||||
regulator-max-microvolt = <1100000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
sw4_reg: sw4 {
|
||||
regulator-name = "V_1V8_S0";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
swbst_reg: swbst {
|
||||
regulator-name = "NC";
|
||||
regulator-min-microvolt = <5000000>;
|
||||
regulator-max-microvolt = <5150000>;
|
||||
};
|
||||
|
||||
snvs_reg: vsnvs {
|
||||
regulator-name = "V_0V9_SNVS";
|
||||
regulator-min-microvolt = <1000000>;
|
||||
regulator-max-microvolt = <3000000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
vref_reg: vrefddr {
|
||||
regulator-name = "V_0V55_VREF_DDR";
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
vgen1_reg: vgen1 {
|
||||
regulator-name = "V_1V5_CSI";
|
||||
regulator-min-microvolt = <800000>;
|
||||
regulator-max-microvolt = <1550000>;
|
||||
};
|
||||
|
||||
vgen2_reg: vgen2 {
|
||||
regulator-name = "V_0V9_PHY";
|
||||
regulator-min-microvolt = <850000>;
|
||||
regulator-max-microvolt = <975000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
vgen3_reg: vgen3 {
|
||||
regulator-name = "V_1V8_PHY";
|
||||
regulator-min-microvolt = <1675000>;
|
||||
regulator-max-microvolt = <1975000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
vgen4_reg: vgen4 {
|
||||
regulator-name = "V_1V8_VDDA";
|
||||
regulator-min-microvolt = <1625000>;
|
||||
regulator-max-microvolt = <1875000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
vgen5_reg: vgen5 {
|
||||
regulator-name = "V_3V3_PHY";
|
||||
regulator-min-microvolt = <3075000>;
|
||||
regulator-max-microvolt = <3625000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
vgen6_reg: vgen6 {
|
||||
regulator-name = "V_2V8_CAM";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fan-controller@1b {
|
||||
compatible = "maxim,max6650";
|
||||
reg = <0x1b>;
|
||||
maxim,fan-microvolt = <5000000>;
|
||||
};
|
||||
|
||||
rtc@32 {
|
||||
compatible = "microcrystal,rv8803";
|
||||
reg = <0x32>;
|
||||
};
|
||||
|
||||
sensor@4b {
|
||||
compatible = "national,lm75b";
|
||||
reg = <0x4b>;
|
||||
};
|
||||
|
||||
eeprom@51 {
|
||||
compatible = "atmel,24c32";
|
||||
reg = <0x51>;
|
||||
pagesize = <32>;
|
||||
};
|
||||
};
|
||||
|
||||
&i2c2 {
|
||||
clock-frequency = <100000>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_i2c2>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&i2c3 {
|
||||
clock-frequency = <100000>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_i2c3>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
/* M.2 B-key slot */
|
||||
&pcie0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_pcie0>;
|
||||
reset-gpio = <&gpio1 9 GPIO_ACTIVE_LOW>;
|
||||
clocks = <&clk IMX8MQ_CLK_PCIE1_ROOT>,
|
||||
<&clk IMX8MQ_CLK_PCIE1_AUX>,
|
||||
<&clk IMX8MQ_CLK_PCIE1_PHY>,
|
||||
<&pcie0_refclk>;
|
||||
clock-names = "pcie", "pcie_aux", "pcie_phy", "pcie_bus";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
/* Intel Ethernet Controller I210/I211 */
|
||||
&pcie1 {
|
||||
clocks = <&clk IMX8MQ_CLK_PCIE2_ROOT>,
|
||||
<&clk IMX8MQ_CLK_PCIE2_AUX>,
|
||||
<&clk IMX8MQ_CLK_PCIE2_PHY>,
|
||||
<&pcie1_refclk>;
|
||||
clock-names = "pcie", "pcie_aux", "pcie_phy", "pcie_bus";
|
||||
fsl,max-link-speed = <1>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pgc_gpu {
|
||||
power-supply = <&sw1a_reg>;
|
||||
};
|
||||
|
||||
&pgc_vpu {
|
||||
power-supply = <&sw1c_reg>;
|
||||
};
|
||||
|
||||
&qspi0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_qspi>;
|
||||
status = "okay";
|
||||
|
||||
flash@0 {
|
||||
compatible = "jedec,spi-nor";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
reg = <0>;
|
||||
spi-tx-bus-width = <1>;
|
||||
spi-rx-bus-width = <4>;
|
||||
m25p,fast-read;
|
||||
spi-max-frequency = <50000000>;
|
||||
};
|
||||
};
|
||||
|
||||
&snvs_pwrkey {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart1 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_uart1>;
|
||||
assigned-clocks = <&clk IMX8MQ_CLK_UART1>;
|
||||
assigned-clock-parents = <&clk IMX8MQ_SYS1_PLL_80M>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart2 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_uart2>;
|
||||
assigned-clocks = <&clk IMX8MQ_CLK_UART2>;
|
||||
assigned-clock-parents = <&clk IMX8MQ_SYS1_PLL_80M>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart3 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_uart3>;
|
||||
uart-has-rtscts;
|
||||
assigned-clocks = <&clk IMX8MQ_CLK_UART3>;
|
||||
assigned-clock-parents = <&clk IMX8MQ_SYS1_PLL_80M>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb3_phy0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb3_phy1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb_dwc3_0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_usb0>;
|
||||
dr_mode = "otg";
|
||||
hnp-disable;
|
||||
srp-disable;
|
||||
adp-disable;
|
||||
maximum-speed = "high-speed";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb_dwc3_1 {
|
||||
dr_mode = "host";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usdhc1 {
|
||||
assigned-clocks = <&clk IMX8MQ_CLK_USDHC1>;
|
||||
assigned-clock-rates = <400000000>;
|
||||
pinctrl-names = "default", "state_100mhz", "state_200mhz";
|
||||
pinctrl-0 = <&pinctrl_usdhc1>;
|
||||
pinctrl-1 = <&pinctrl_usdhc1_100mhz>;
|
||||
pinctrl-2 = <&pinctrl_usdhc1_200mhz>;
|
||||
vqmmc-supply = <&sw4_reg>;
|
||||
bus-width = <8>;
|
||||
non-removable;
|
||||
no-sd;
|
||||
no-sdio;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usdhc2 {
|
||||
assigned-clocks = <&clk IMX8MQ_CLK_USDHC2>;
|
||||
assigned-clock-rates = <200000000>;
|
||||
pinctrl-names = "default", "state_100mhz", "state_200mhz";
|
||||
pinctrl-0 = <&pinctrl_usdhc2>, <&pinctrl_usdhc2_gpio>;
|
||||
pinctrl-1 = <&pinctrl_usdhc2_100mhz>, <&pinctrl_usdhc2_gpio>;
|
||||
pinctrl-2 = <&pinctrl_usdhc2_200mhz>, <&pinctrl_usdhc2_gpio>;
|
||||
bus-width = <4>;
|
||||
cd-gpios = <&gpio2 12 GPIO_ACTIVE_LOW>;
|
||||
wp-gpios = <&gpio2 20 GPIO_ACTIVE_HIGH>;
|
||||
vmmc-supply = <®_usdhc2_vmmc>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&wdog1 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_wdog>;
|
||||
fsl,ext-reset-output;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&iomuxc {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_hog>;
|
||||
|
||||
pinctrl_hog: hoggrp {
|
||||
fsl,pins = <
|
||||
MX8MQ_IOMUXC_NAND_CE1_B_GPIO3_IO2 0x19 /* TPM Reset */
|
||||
MX8MQ_IOMUXC_NAND_CE3_B_GPIO3_IO4 0x19 /* USB2 Hub Reset */
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_gpio: gpiogrp {
|
||||
fsl,pins = <
|
||||
MX8MQ_IOMUXC_NAND_CLE_GPIO3_IO5 0x19 /* GPIO0 */
|
||||
MX8MQ_IOMUXC_NAND_RE_B_GPIO3_IO15 0x19 /* GPIO1 */
|
||||
MX8MQ_IOMUXC_NAND_WE_B_GPIO3_IO17 0x19 /* GPIO2 */
|
||||
MX8MQ_IOMUXC_NAND_WP_B_GPIO3_IO18 0x19 /* GPIO3 */
|
||||
MX8MQ_IOMUXC_NAND_READY_B_GPIO3_IO16 0x19 /* GPIO4 */
|
||||
MX8MQ_IOMUXC_NAND_DATA04_GPIO3_IO10 0x19 /* GPIO5 */
|
||||
MX8MQ_IOMUXC_NAND_DATA05_GPIO3_IO11 0x19 /* GPIO6 */
|
||||
MX8MQ_IOMUXC_NAND_DATA06_GPIO3_IO12 0x19 /* GPIO7 */
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_pcie0: pcie0grp {
|
||||
fsl,pins = <
|
||||
MX8MQ_IOMUXC_GPIO1_IO09_GPIO1_IO9 0x16 /* PCIE_PERST */
|
||||
MX8MQ_IOMUXC_UART4_TXD_GPIO5_IO29 0x16 /* W_DISABLE */
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_reg_usdhc2: regusdhc2gpiogrp {
|
||||
fsl,pins = <
|
||||
MX8MQ_IOMUXC_SD2_RESET_B_GPIO2_IO19 0x41
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_fec1: fec1grp {
|
||||
fsl,pins = <
|
||||
MX8MQ_IOMUXC_ENET_MDC_ENET1_MDC 0x3
|
||||
MX8MQ_IOMUXC_ENET_MDIO_ENET1_MDIO 0x23
|
||||
MX8MQ_IOMUXC_ENET_TD3_ENET1_RGMII_TD3 0x1f
|
||||
MX8MQ_IOMUXC_ENET_TD2_ENET1_RGMII_TD2 0x1f
|
||||
MX8MQ_IOMUXC_ENET_TD1_ENET1_RGMII_TD1 0x1f
|
||||
MX8MQ_IOMUXC_ENET_TD0_ENET1_RGMII_TD0 0x1f
|
||||
MX8MQ_IOMUXC_ENET_RD3_ENET1_RGMII_RD3 0x91
|
||||
MX8MQ_IOMUXC_ENET_RD2_ENET1_RGMII_RD2 0x91
|
||||
MX8MQ_IOMUXC_ENET_RD1_ENET1_RGMII_RD1 0x91
|
||||
MX8MQ_IOMUXC_ENET_RD0_ENET1_RGMII_RD0 0x91
|
||||
MX8MQ_IOMUXC_ENET_TXC_ENET1_RGMII_TXC 0x1f
|
||||
MX8MQ_IOMUXC_ENET_RXC_ENET1_RGMII_RXC 0x91
|
||||
MX8MQ_IOMUXC_ENET_RX_CTL_ENET1_RGMII_RX_CTL 0x91
|
||||
MX8MQ_IOMUXC_ENET_TX_CTL_ENET1_RGMII_TX_CTL 0x1f
|
||||
MX8MQ_IOMUXC_GPIO1_IO11_GPIO1_IO11 0x16
|
||||
MX8MQ_IOMUXC_GPIO1_IO15_GPIO1_IO15 0x16
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_i2c1: i2c1grp {
|
||||
fsl,pins = <
|
||||
MX8MQ_IOMUXC_I2C1_SCL_I2C1_SCL 0x4000007f
|
||||
MX8MQ_IOMUXC_I2C1_SDA_I2C1_SDA 0x4000007f
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_i2c2: i2c2grp {
|
||||
fsl,pins = <
|
||||
MX8MQ_IOMUXC_I2C2_SCL_I2C2_SCL 0x4000007f
|
||||
MX8MQ_IOMUXC_I2C2_SDA_I2C2_SDA 0x4000007f
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_i2c3: i2c3grp {
|
||||
fsl,pins = <
|
||||
MX8MQ_IOMUXC_I2C3_SCL_I2C3_SCL 0x4000007f
|
||||
MX8MQ_IOMUXC_I2C3_SDA_I2C3_SDA 0x4000007f
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_qspi: qspigrp {
|
||||
fsl,pins = <
|
||||
MX8MQ_IOMUXC_NAND_ALE_QSPI_A_SCLK 0x82
|
||||
MX8MQ_IOMUXC_NAND_CE0_B_QSPI_A_SS0_B 0x82
|
||||
MX8MQ_IOMUXC_NAND_DATA00_QSPI_A_DATA0 0x82
|
||||
MX8MQ_IOMUXC_NAND_DATA01_QSPI_A_DATA1 0x82
|
||||
MX8MQ_IOMUXC_NAND_DATA02_QSPI_A_DATA2 0x82
|
||||
MX8MQ_IOMUXC_NAND_DATA03_QSPI_A_DATA3 0x82
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_ecspi2: ecspi2grp {
|
||||
fsl,pins = <
|
||||
MX8MQ_IOMUXC_ECSPI2_MOSI_ECSPI2_MOSI 0x19
|
||||
MX8MQ_IOMUXC_ECSPI2_MISO_ECSPI2_MISO 0x19
|
||||
MX8MQ_IOMUXC_ECSPI2_SCLK_ECSPI2_SCLK 0x19
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_ecspi2_cs: ecspi2csgrp {
|
||||
fsl,pins = <
|
||||
MX8MQ_IOMUXC_ECSPI2_SS0_GPIO5_IO13 0x19
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_uart1: uart1grp {
|
||||
fsl,pins = <
|
||||
MX8MQ_IOMUXC_UART1_TXD_UART1_DCE_TX 0x49
|
||||
MX8MQ_IOMUXC_UART1_RXD_UART1_DCE_RX 0x49
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_uart2: uart2grp {
|
||||
fsl,pins = <
|
||||
MX8MQ_IOMUXC_UART2_TXD_UART2_DCE_TX 0x49
|
||||
MX8MQ_IOMUXC_UART2_RXD_UART2_DCE_RX 0x49
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_uart3: uart3grp {
|
||||
fsl,pins = <
|
||||
MX8MQ_IOMUXC_UART3_TXD_UART3_DCE_TX 0x49
|
||||
MX8MQ_IOMUXC_UART3_RXD_UART3_DCE_RX 0x49
|
||||
MX8MQ_IOMUXC_ECSPI1_SS0_UART3_DCE_RTS_B 0x49
|
||||
MX8MQ_IOMUXC_ECSPI1_MISO_UART3_DCE_CTS_B 0x49
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_usdhc1: usdhc1grp {
|
||||
fsl,pins = <
|
||||
MX8MQ_IOMUXC_SD1_CLK_USDHC1_CLK 0x83
|
||||
MX8MQ_IOMUXC_SD1_CMD_USDHC1_CMD 0xc3
|
||||
MX8MQ_IOMUXC_SD1_DATA0_USDHC1_DATA0 0xc3
|
||||
MX8MQ_IOMUXC_SD1_DATA1_USDHC1_DATA1 0xc3
|
||||
MX8MQ_IOMUXC_SD1_DATA2_USDHC1_DATA2 0xc3
|
||||
MX8MQ_IOMUXC_SD1_DATA3_USDHC1_DATA3 0xc3
|
||||
MX8MQ_IOMUXC_SD1_DATA4_USDHC1_DATA4 0xc3
|
||||
MX8MQ_IOMUXC_SD1_DATA5_USDHC1_DATA5 0xc3
|
||||
MX8MQ_IOMUXC_SD1_DATA6_USDHC1_DATA6 0xc3
|
||||
MX8MQ_IOMUXC_SD1_DATA7_USDHC1_DATA7 0xc3
|
||||
MX8MQ_IOMUXC_SD1_STROBE_USDHC1_STROBE 0x83
|
||||
MX8MQ_IOMUXC_SD1_RESET_B_USDHC1_RESET_B 0xc1
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_usdhc1_100mhz: usdhc1-100grp {
|
||||
fsl,pins = <
|
||||
MX8MQ_IOMUXC_SD1_CLK_USDHC1_CLK 0x8d
|
||||
MX8MQ_IOMUXC_SD1_CMD_USDHC1_CMD 0xcd
|
||||
MX8MQ_IOMUXC_SD1_DATA0_USDHC1_DATA0 0xcd
|
||||
MX8MQ_IOMUXC_SD1_DATA1_USDHC1_DATA1 0xcd
|
||||
MX8MQ_IOMUXC_SD1_DATA2_USDHC1_DATA2 0xcd
|
||||
MX8MQ_IOMUXC_SD1_DATA3_USDHC1_DATA3 0xcd
|
||||
MX8MQ_IOMUXC_SD1_DATA4_USDHC1_DATA4 0xcd
|
||||
MX8MQ_IOMUXC_SD1_DATA5_USDHC1_DATA5 0xcd
|
||||
MX8MQ_IOMUXC_SD1_DATA6_USDHC1_DATA6 0xcd
|
||||
MX8MQ_IOMUXC_SD1_DATA7_USDHC1_DATA7 0xcd
|
||||
MX8MQ_IOMUXC_SD1_STROBE_USDHC1_STROBE 0x8d
|
||||
MX8MQ_IOMUXC_SD1_RESET_B_USDHC1_RESET_B 0xc1
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_usdhc1_200mhz: usdhc1-200grp {
|
||||
fsl,pins = <
|
||||
MX8MQ_IOMUXC_SD1_CLK_USDHC1_CLK 0x9f
|
||||
MX8MQ_IOMUXC_SD1_CMD_USDHC1_CMD 0xdf
|
||||
MX8MQ_IOMUXC_SD1_DATA0_USDHC1_DATA0 0xdf
|
||||
MX8MQ_IOMUXC_SD1_DATA1_USDHC1_DATA1 0xdf
|
||||
MX8MQ_IOMUXC_SD1_DATA2_USDHC1_DATA2 0xdf
|
||||
MX8MQ_IOMUXC_SD1_DATA3_USDHC1_DATA3 0xdf
|
||||
MX8MQ_IOMUXC_SD1_DATA4_USDHC1_DATA4 0xdf
|
||||
MX8MQ_IOMUXC_SD1_DATA5_USDHC1_DATA5 0xdf
|
||||
MX8MQ_IOMUXC_SD1_DATA6_USDHC1_DATA6 0xdf
|
||||
MX8MQ_IOMUXC_SD1_DATA7_USDHC1_DATA7 0xdf
|
||||
MX8MQ_IOMUXC_SD1_STROBE_USDHC1_STROBE 0x9f
|
||||
MX8MQ_IOMUXC_SD1_RESET_B_USDHC1_RESET_B 0xc1
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_usdhc2_gpio: usdhc2gpiogrp {
|
||||
fsl,pins = <
|
||||
MX8MQ_IOMUXC_SD2_CD_B_GPIO2_IO12 0x41
|
||||
MX8MQ_IOMUXC_SD2_WP_GPIO2_IO20 0x19
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_usdhc2: usdhc2grp {
|
||||
fsl,pins = <
|
||||
MX8MQ_IOMUXC_SD2_CLK_USDHC2_CLK 0x83
|
||||
MX8MQ_IOMUXC_SD2_CMD_USDHC2_CMD 0xc3
|
||||
MX8MQ_IOMUXC_SD2_DATA0_USDHC2_DATA0 0xc3
|
||||
MX8MQ_IOMUXC_SD2_DATA1_USDHC2_DATA1 0xc3
|
||||
MX8MQ_IOMUXC_SD2_DATA2_USDHC2_DATA2 0xc3
|
||||
MX8MQ_IOMUXC_SD2_DATA3_USDHC2_DATA3 0xc3
|
||||
MX8MQ_IOMUXC_GPIO1_IO04_USDHC2_VSELECT 0xc1
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_usdhc2_100mhz: usdhc2-100grp {
|
||||
fsl,pins = <
|
||||
MX8MQ_IOMUXC_SD2_CLK_USDHC2_CLK 0x8d
|
||||
MX8MQ_IOMUXC_SD2_CMD_USDHC2_CMD 0xcd
|
||||
MX8MQ_IOMUXC_SD2_DATA0_USDHC2_DATA0 0xcd
|
||||
MX8MQ_IOMUXC_SD2_DATA1_USDHC2_DATA1 0xcd
|
||||
MX8MQ_IOMUXC_SD2_DATA2_USDHC2_DATA2 0xcd
|
||||
MX8MQ_IOMUXC_SD2_DATA3_USDHC2_DATA3 0xcd
|
||||
MX8MQ_IOMUXC_GPIO1_IO04_USDHC2_VSELECT 0xc1
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_usdhc2_200mhz: usdhc2-200grp {
|
||||
fsl,pins = <
|
||||
MX8MQ_IOMUXC_SD2_CLK_USDHC2_CLK 0x9f
|
||||
MX8MQ_IOMUXC_SD2_CMD_USDHC2_CMD 0xdf
|
||||
MX8MQ_IOMUXC_SD2_DATA0_USDHC2_DATA0 0xdf
|
||||
MX8MQ_IOMUXC_SD2_DATA1_USDHC2_DATA1 0xdf
|
||||
MX8MQ_IOMUXC_SD2_DATA2_USDHC2_DATA2 0xdf
|
||||
MX8MQ_IOMUXC_SD2_DATA3_USDHC2_DATA3 0xdf
|
||||
MX8MQ_IOMUXC_GPIO1_IO04_USDHC2_VSELECT 0xc1
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_usb0: usb0grp {
|
||||
fsl,pins = <
|
||||
MX8MQ_IOMUXC_GPIO1_IO12_USB1_OTG_PWR 0x19
|
||||
MX8MQ_IOMUXC_GPIO1_IO13_USB1_OTG_OC 0x19
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_wdog: wdoggrp {
|
||||
fsl,pins = <
|
||||
MX8MQ_IOMUXC_GPIO1_IO02_WDOG1_WDOG_B 0xc6
|
||||
>;
|
||||
};
|
||||
};
|
||||
@@ -1,45 +0,0 @@
|
||||
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
||||
// Copyright (C) 2021 Purism SPC <kernel@puri.sm>
|
||||
|
||||
/dts-v1/;
|
||||
|
||||
/*
|
||||
* This file describes hardware that is shared among r3 ("Dogwood") and
|
||||
* later revisions of the Librem 5 so it has to be included in dts there.
|
||||
*/
|
||||
|
||||
#include "imx8mq-librem5.dtsi"
|
||||
|
||||
/ {
|
||||
model = "Purism Librem 5r3";
|
||||
compatible = "purism,librem5r3", "purism,librem5", "fsl,imx8mq";
|
||||
};
|
||||
|
||||
&accel_gyro {
|
||||
mount-matrix = "1", "0", "0",
|
||||
"0", "1", "0",
|
||||
"0", "0", "-1";
|
||||
};
|
||||
|
||||
&bq25895 {
|
||||
ti,battery-regulation-voltage = <4200000>; /* uV */
|
||||
ti,charge-current = <1500000>; /* uA */
|
||||
ti,termination-current = <144000>; /* uA */
|
||||
};
|
||||
|
||||
&camera_front {
|
||||
pinctrl-0 = <&pinctrl_csi1>, <&pinctrl_r3_camera_pwr>;
|
||||
shutdown-gpios = <&gpio5 4 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
&iomuxc {
|
||||
pinctrl_r3_camera_pwr: r3camerapwrgrp {
|
||||
fsl,pins = <
|
||||
MX8MQ_IOMUXC_SPDIF_RX_GPIO5_IO4 0x83
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
||||
&proximity {
|
||||
proximity-near-level = <25>;
|
||||
};
|
||||
@@ -1,27 +0,0 @@
|
||||
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
||||
// Copyright (C) 2021 Purism SPC <kernel@puri.sm>
|
||||
|
||||
/dts-v1/;
|
||||
|
||||
#include "imx8mq-librem5-r3.dtsi"
|
||||
|
||||
/ {
|
||||
model = "Purism Librem 5r4";
|
||||
compatible = "purism,librem5r4", "purism,librem5", "fsl,imx8mq";
|
||||
};
|
||||
|
||||
&bat {
|
||||
maxim,rsns-microohm = <1667>;
|
||||
};
|
||||
|
||||
&led_backlight {
|
||||
led-max-microamp = <25000>;
|
||||
};
|
||||
|
||||
&lcd_panel {
|
||||
compatible = "ys,ys57pss36bh5gq";
|
||||
};
|
||||
|
||||
&proximity {
|
||||
proximity-near-level = <10>;
|
||||
};
|
||||
File diff suppressed because it is too large
Load Diff
@@ -9,3 +9,7 @@
|
||||
&uart1 { /* console */
|
||||
bootph-pre-ram;
|
||||
};
|
||||
|
||||
&{/panel} {
|
||||
compatible = "innolux,n125hce-gn1", "simple-panel";
|
||||
};
|
||||
|
||||
@@ -1,354 +0,0 @@
|
||||
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
||||
|
||||
/*
|
||||
* Copyright 2019-2021 MNT Research GmbH
|
||||
* Copyright 2021 Lucas Stach <dev@lynxeye.de>
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
|
||||
#include "imx8mq-nitrogen-som.dtsi"
|
||||
|
||||
/ {
|
||||
model = "MNT Reform 2";
|
||||
compatible = "mntre,reform2", "boundary,imx8mq-nitrogen8m-som", "fsl,imx8mq";
|
||||
chassis-type = "laptop";
|
||||
|
||||
backlight: backlight {
|
||||
compatible = "pwm-backlight";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_backlight>;
|
||||
pwms = <&pwm2 0 10000 0>;
|
||||
power-supply = <®_main_usb>;
|
||||
enable-gpios = <&gpio1 10 GPIO_ACTIVE_HIGH>;
|
||||
brightness-levels = <0 32 64 128 160 200 255>;
|
||||
default-brightness-level = <6>;
|
||||
};
|
||||
|
||||
panel {
|
||||
compatible = "innolux,n125hce-gn1", "simple-panel";
|
||||
power-supply = <®_main_3v3>;
|
||||
backlight = <&backlight>;
|
||||
no-hpd;
|
||||
|
||||
port {
|
||||
panel_in: endpoint {
|
||||
remote-endpoint = <&edp_bridge_out>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
pcie1_refclk: clock-pcie1-refclk {
|
||||
compatible = "fixed-clock";
|
||||
#clock-cells = <0>;
|
||||
clock-frequency = <100000000>;
|
||||
};
|
||||
|
||||
reg_main_5v: regulator-main-5v {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "5V";
|
||||
regulator-min-microvolt = <5000000>;
|
||||
regulator-max-microvolt = <5000000>;
|
||||
};
|
||||
|
||||
reg_main_3v3: regulator-main-3v3 {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "3V3";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
};
|
||||
|
||||
reg_main_usb: regulator-main-usb {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "USB_PWR";
|
||||
regulator-min-microvolt = <5000000>;
|
||||
regulator-max-microvolt = <5000000>;
|
||||
vin-supply = <®_main_5v>;
|
||||
};
|
||||
|
||||
reg_main_1v8: regulator-main-1v8 {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "1V8";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
vin-supply = <®_main_3v3>;
|
||||
};
|
||||
|
||||
reg_main_1v2: regulator-main-1v2 {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "1V2";
|
||||
regulator-min-microvolt = <1200000>;
|
||||
regulator-max-microvolt = <1200000>;
|
||||
vin-supply = <®_main_5v>;
|
||||
};
|
||||
|
||||
sound {
|
||||
compatible = "fsl,imx-audio-wm8960";
|
||||
audio-cpu = <&sai2>;
|
||||
audio-codec = <&wm8960>;
|
||||
audio-routing =
|
||||
"Headphone Jack", "HP_L",
|
||||
"Headphone Jack", "HP_R",
|
||||
"Ext Spk", "SPK_LP",
|
||||
"Ext Spk", "SPK_LN",
|
||||
"Ext Spk", "SPK_RP",
|
||||
"Ext Spk", "SPK_RN",
|
||||
"LINPUT1", "Mic Jack",
|
||||
"Mic Jack", "MICB",
|
||||
"LINPUT2", "Line In Jack",
|
||||
"RINPUT2", "Line In Jack";
|
||||
model = "wm8960-audio";
|
||||
};
|
||||
};
|
||||
|
||||
&dphy {
|
||||
assigned-clocks = <&clk IMX8MQ_CLK_DSI_PHY_REF>;
|
||||
assigned-clock-parents = <&clk IMX8MQ_SYS1_PLL_800M>;
|
||||
assigned-clock-rates = <25000000>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&fec1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&i2c3 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_i2c3>;
|
||||
status = "okay";
|
||||
|
||||
wm8960: codec@1a {
|
||||
compatible = "wlf,wm8960";
|
||||
reg = <0x1a>;
|
||||
clocks = <&clk IMX8MQ_CLK_SAI2_ROOT>;
|
||||
clock-names = "mclk";
|
||||
#sound-dai-cells = <0>;
|
||||
};
|
||||
|
||||
rtc@68 {
|
||||
compatible = "nxp,pcf8523";
|
||||
reg = <0x68>;
|
||||
};
|
||||
};
|
||||
|
||||
&i2c4 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_i2c4>;
|
||||
clock-frequency = <400000>;
|
||||
status = "okay";
|
||||
|
||||
edp_bridge: bridge@2c {
|
||||
compatible = "ti,sn65dsi86";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_edp_bridge>;
|
||||
reg = <0x2c>;
|
||||
enable-gpios = <&gpio3 20 GPIO_ACTIVE_HIGH>;
|
||||
vccio-supply = <®_main_1v8>;
|
||||
vpll-supply = <®_main_1v8>;
|
||||
vcca-supply = <®_main_1v2>;
|
||||
vcc-supply = <®_main_1v2>;
|
||||
|
||||
ports {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
port@0 {
|
||||
reg = <0>;
|
||||
|
||||
edp_bridge_in: endpoint {
|
||||
remote-endpoint = <&mipi_dsi_out>;
|
||||
};
|
||||
};
|
||||
|
||||
port@1 {
|
||||
reg = <1>;
|
||||
|
||||
edp_bridge_out: endpoint {
|
||||
remote-endpoint = <&panel_in>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&lcdif {
|
||||
assigned-clocks = <&clk IMX8MQ_CLK_LCDIF_PIXEL>;
|
||||
assigned-clock-parents = <&clk IMX8MQ_SYS1_PLL_800M>;
|
||||
/delete-property/assigned-clock-rates;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&mipi_dsi {
|
||||
status = "okay";
|
||||
|
||||
ports {
|
||||
port@1 {
|
||||
reg = <1>;
|
||||
|
||||
mipi_dsi_out: endpoint {
|
||||
remote-endpoint = <&edp_bridge_in>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&pcie1 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_pcie1>;
|
||||
reset-gpio = <&gpio3 23 GPIO_ACTIVE_LOW>;
|
||||
clocks = <&clk IMX8MQ_CLK_PCIE2_ROOT>,
|
||||
<&clk IMX8MQ_CLK_PCIE2_AUX>,
|
||||
<&clk IMX8MQ_CLK_PCIE2_PHY>,
|
||||
<&pcie1_refclk>;
|
||||
clock-names = "pcie", "pcie_aux", "pcie_phy", "pcie_bus";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pwm2 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_pwm2>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
®_1p8v {
|
||||
vin-supply = <®_main_5v>;
|
||||
};
|
||||
|
||||
®_snvs {
|
||||
vin-supply = <®_main_5v>;
|
||||
};
|
||||
|
||||
®_arm_dram {
|
||||
vin-supply = <®_main_5v>;
|
||||
};
|
||||
|
||||
®_dram_1p1v {
|
||||
vin-supply = <®_main_5v>;
|
||||
};
|
||||
|
||||
®_soc_gpu_vpu {
|
||||
vin-supply = <®_main_5v>;
|
||||
};
|
||||
|
||||
&sai2 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_sai2>;
|
||||
assigned-clocks = <&clk IMX8MQ_CLK_SAI2>;
|
||||
assigned-clock-parents = <&clk IMX8MQ_CLK_25M>;
|
||||
assigned-clock-rates = <25000000>;
|
||||
fsl,sai-mclk-direction-output;
|
||||
fsl,sai-asynchronous;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&snvs_rtc {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&uart2 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_uart2>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb3_phy0 {
|
||||
vbus-supply = <®_main_usb>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb3_phy1 {
|
||||
vbus-supply = <®_main_usb>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb_dwc3_0 {
|
||||
dr_mode = "host";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb_dwc3_1 {
|
||||
dr_mode = "host";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usdhc2 {
|
||||
assigned-clocks = <&clk IMX8MQ_CLK_USDHC2>;
|
||||
assigned-clock-rates = <200000000>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_usdhc2>;
|
||||
vqmmc-supply = <®_main_3v3>;
|
||||
vmmc-supply = <®_main_3v3>;
|
||||
bus-width = <4>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&iomuxc {
|
||||
pinctrl_backlight: backlightgrp {
|
||||
fsl,pins = <
|
||||
MX8MQ_IOMUXC_GPIO1_IO10_GPIO1_IO10 0x3
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_edp_bridge: edpbridgegrp {
|
||||
fsl,pins = <
|
||||
MX8MQ_IOMUXC_SAI5_RXC_GPIO3_IO20 0x1
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_i2c3: i2c3grp {
|
||||
fsl,pins = <
|
||||
MX8MQ_IOMUXC_I2C3_SCL_I2C3_SCL 0x40000022
|
||||
MX8MQ_IOMUXC_I2C3_SDA_I2C3_SDA 0x40000022
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_i2c4: i2c4grp {
|
||||
fsl,pins = <
|
||||
MX8MQ_IOMUXC_I2C4_SCL_I2C4_SCL 0x40000022
|
||||
MX8MQ_IOMUXC_I2C4_SDA_I2C4_SDA 0x40000022
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_pcie1: pcie1grp {
|
||||
fsl,pins = <
|
||||
MX8MQ_IOMUXC_SAI5_RXD2_GPIO3_IO23 0x16
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_pwm2: pwm2grp {
|
||||
fsl,pins = <
|
||||
MX8MQ_IOMUXC_SPDIF_RX_PWM2_OUT 0x3
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_sai2: sai2grp {
|
||||
fsl,pins = <
|
||||
MX8MQ_IOMUXC_SAI2_RXD0_SAI2_RX_DATA0 0xd6
|
||||
MX8MQ_IOMUXC_SAI2_RXFS_SAI2_RX_SYNC 0xd6
|
||||
MX8MQ_IOMUXC_SAI2_TXC_SAI2_TX_BCLK 0xd6
|
||||
MX8MQ_IOMUXC_SAI2_TXFS_SAI2_TX_SYNC 0xd6
|
||||
MX8MQ_IOMUXC_SAI2_RXC_SAI2_RX_BCLK 0xd6
|
||||
MX8MQ_IOMUXC_SAI2_MCLK_SAI2_MCLK 0xd6
|
||||
MX8MQ_IOMUXC_SAI2_TXD0_SAI2_TX_DATA0 0xd6
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_uart2: uart2grp {
|
||||
fsl,pins = <
|
||||
MX8MQ_IOMUXC_UART2_RXD_UART2_DCE_RX 0x45
|
||||
MX8MQ_IOMUXC_UART2_TXD_UART2_DCE_TX 0x45
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_usdhc2: usdhc2grp {
|
||||
fsl,pins = <
|
||||
MX8MQ_IOMUXC_SD2_CD_B_USDHC2_CD_B 0x0
|
||||
MX8MQ_IOMUXC_SD2_CLK_USDHC2_CLK 0x83
|
||||
MX8MQ_IOMUXC_SD2_CMD_USDHC2_CMD 0xc3
|
||||
MX8MQ_IOMUXC_SD2_DATA0_USDHC2_DATA0 0xc3
|
||||
MX8MQ_IOMUXC_SD2_DATA1_USDHC2_DATA1 0xc3
|
||||
MX8MQ_IOMUXC_SD2_DATA2_USDHC2_DATA2 0xc3
|
||||
MX8MQ_IOMUXC_SD2_DATA3_USDHC2_DATA3 0xc3
|
||||
>;
|
||||
};
|
||||
};
|
||||
@@ -1,278 +0,0 @@
|
||||
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
||||
/*
|
||||
* Copyright 2018 Boundary Devices
|
||||
* Copyright 2021 Lucas Stach <dev@lynxeye.de>
|
||||
*/
|
||||
|
||||
#include "imx8mq.dtsi"
|
||||
|
||||
/ {
|
||||
model = "Boundary Devices i.MX8MQ Nitrogen8M";
|
||||
compatible = "boundary,imx8mq-nitrogen8m-som", "fsl,imx8mq";
|
||||
|
||||
chosen {
|
||||
stdout-path = &uart1;
|
||||
};
|
||||
|
||||
reg_1p8v: regulator-fixed-1v8 {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "1P8V";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
};
|
||||
|
||||
reg_snvs: regulator-fixed-snvs {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "VDD_SNVS";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
};
|
||||
};
|
||||
|
||||
&{/opp-table/opp-800000000} {
|
||||
opp-microvolt = <1000000>;
|
||||
};
|
||||
|
||||
&{/opp-table/opp-1000000000} {
|
||||
opp-microvolt = <1000000>;
|
||||
};
|
||||
|
||||
&A53_0 {
|
||||
cpu-supply = <®_arm_dram>;
|
||||
};
|
||||
|
||||
&A53_1 {
|
||||
cpu-supply = <®_arm_dram>;
|
||||
};
|
||||
|
||||
&A53_2 {
|
||||
cpu-supply = <®_arm_dram>;
|
||||
};
|
||||
|
||||
&A53_3 {
|
||||
cpu-supply = <®_arm_dram>;
|
||||
};
|
||||
|
||||
&fec1 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_fec1>;
|
||||
phy-mode = "rgmii-id";
|
||||
phy-handle = <ðphy0>;
|
||||
fsl,magic-packet;
|
||||
|
||||
mdio {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
ethphy0: ethernet-phy@4 {
|
||||
compatible = "ethernet-phy-ieee802.3-c22";
|
||||
reg = <4>;
|
||||
interrupt-parent = <&gpio1>;
|
||||
interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
|
||||
reset-gpios = <&gpio1 9 GPIO_ACTIVE_LOW>;
|
||||
reset-assert-us = <10000>;
|
||||
reset-deassert-us = <300>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&i2c1 {
|
||||
clock-frequency = <400000>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_i2c1>;
|
||||
status = "okay";
|
||||
|
||||
i2c-mux@70 {
|
||||
compatible = "nxp,pca9546";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_i2c1_pca9546>;
|
||||
reg = <0x70>;
|
||||
reset-gpios = <&gpio1 8 GPIO_ACTIVE_LOW>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
i2c1a: i2c@0 {
|
||||
reg = <0>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
reg_arm_dram: regulator@60 {
|
||||
compatible = "fcs,fan53555";
|
||||
reg = <0x60>;
|
||||
regulator-name = "VDD_ARM_DRAM_1V";
|
||||
regulator-min-microvolt = <1000000>;
|
||||
regulator-max-microvolt = <1000000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
};
|
||||
|
||||
i2c1b: i2c@1 {
|
||||
reg = <1>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
reg_dram_1p1v: regulator@60 {
|
||||
compatible = "fcs,fan53555";
|
||||
reg = <0x60>;
|
||||
regulator-name = "NVCC_DRAM_1P1V";
|
||||
regulator-min-microvolt = <1100000>;
|
||||
regulator-max-microvolt = <1100000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
};
|
||||
|
||||
i2c1c: i2c@2 {
|
||||
reg = <2>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
reg_soc_gpu_vpu: regulator@60 {
|
||||
compatible = "fcs,fan53555";
|
||||
reg = <0x60>;
|
||||
regulator-name = "VDD_SOC_GPU_VPU";
|
||||
regulator-min-microvolt = <900000>;
|
||||
regulator-max-microvolt = <900000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
};
|
||||
|
||||
i2c1d: i2c@3 {
|
||||
reg = <3>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&pgc_gpu {
|
||||
power-supply = <®_soc_gpu_vpu>;
|
||||
};
|
||||
|
||||
&pgc_vpu {
|
||||
power-supply = <®_soc_gpu_vpu>;
|
||||
};
|
||||
|
||||
&uart1 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_uart1>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usdhc1 {
|
||||
assigned-clocks = <&clk IMX8MQ_CLK_USDHC1>;
|
||||
assigned-clock-rates = <400000000>;
|
||||
pinctrl-names = "default", "state_100mhz", "state_200mhz";
|
||||
pinctrl-0 = <&pinctrl_usdhc1>;
|
||||
pinctrl-1 = <&pinctrl_usdhc1_100mhz>;
|
||||
pinctrl-2 = <&pinctrl_usdhc1_200mhz>;
|
||||
vqmmc-supply = <®_1p8v>;
|
||||
vmmc-supply = <®_snvs>;
|
||||
bus-width = <8>;
|
||||
non-removable;
|
||||
no-mmc-hs400;
|
||||
no-sdio;
|
||||
no-sd;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&wdog1 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_wdog>;
|
||||
fsl,ext-reset-output;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&iomuxc {
|
||||
pinctrl_fec1: fec1grp {
|
||||
fsl,pins = <
|
||||
MX8MQ_IOMUXC_ENET_MDC_ENET1_MDC 0x3
|
||||
MX8MQ_IOMUXC_ENET_MDIO_ENET1_MDIO 0x23
|
||||
MX8MQ_IOMUXC_ENET_TX_CTL_ENET1_RGMII_TX_CTL 0x1f
|
||||
MX8MQ_IOMUXC_ENET_TXC_ENET1_RGMII_TXC 0x1f
|
||||
MX8MQ_IOMUXC_ENET_TD0_ENET1_RGMII_TD0 0x1f
|
||||
MX8MQ_IOMUXC_ENET_TD1_ENET1_RGMII_TD1 0x1f
|
||||
MX8MQ_IOMUXC_ENET_TD2_ENET1_RGMII_TD2 0x1f
|
||||
MX8MQ_IOMUXC_ENET_TD3_ENET1_RGMII_TD3 0x1f
|
||||
MX8MQ_IOMUXC_ENET_RX_CTL_ENET1_RGMII_RX_CTL 0x91
|
||||
MX8MQ_IOMUXC_ENET_RXC_ENET1_RGMII_RXC 0xd1
|
||||
MX8MQ_IOMUXC_ENET_RD0_ENET1_RGMII_RD0 0x91
|
||||
MX8MQ_IOMUXC_ENET_RD1_ENET1_RGMII_RD1 0x91
|
||||
MX8MQ_IOMUXC_ENET_RD2_ENET1_RGMII_RD2 0x91
|
||||
MX8MQ_IOMUXC_ENET_RD3_ENET1_RGMII_RD3 0xd1
|
||||
MX8MQ_IOMUXC_GPIO1_IO09_GPIO1_IO9 0x1
|
||||
MX8MQ_IOMUXC_GPIO1_IO11_GPIO1_IO11 0x41
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_i2c1: i2c1grp {
|
||||
fsl,pins = <
|
||||
MX8MQ_IOMUXC_I2C1_SCL_I2C1_SCL 0x40000022
|
||||
MX8MQ_IOMUXC_I2C1_SDA_I2C1_SDA 0x40000022
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_i2c1_pca9546: i2c1-pca9546grp {
|
||||
fsl,pins = <
|
||||
MX8MQ_IOMUXC_GPIO1_IO08_GPIO1_IO8 0x49
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_uart1: uart1grp {
|
||||
fsl,pins = <
|
||||
MX8MQ_IOMUXC_UART1_RXD_UART1_DCE_RX 0x45
|
||||
MX8MQ_IOMUXC_UART1_TXD_UART1_DCE_TX 0x45
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_usdhc1: usdhc1grp {
|
||||
fsl,pins = <
|
||||
MX8MQ_IOMUXC_SD1_CLK_USDHC1_CLK 0x83
|
||||
MX8MQ_IOMUXC_SD1_CMD_USDHC1_CMD 0xc3
|
||||
MX8MQ_IOMUXC_SD1_DATA0_USDHC1_DATA0 0xc3
|
||||
MX8MQ_IOMUXC_SD1_DATA1_USDHC1_DATA1 0xc3
|
||||
MX8MQ_IOMUXC_SD1_DATA2_USDHC1_DATA2 0xc3
|
||||
MX8MQ_IOMUXC_SD1_DATA3_USDHC1_DATA3 0xc3
|
||||
MX8MQ_IOMUXC_SD1_DATA4_USDHC1_DATA4 0xc3
|
||||
MX8MQ_IOMUXC_SD1_DATA5_USDHC1_DATA5 0xc3
|
||||
MX8MQ_IOMUXC_SD1_DATA6_USDHC1_DATA6 0xc3
|
||||
MX8MQ_IOMUXC_SD1_DATA7_USDHC1_DATA7 0xc3
|
||||
MX8MQ_IOMUXC_SD1_RESET_B_USDHC1_RESET_B 0xc1
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_usdhc1_100mhz: usdhc1-100mhzgrp {
|
||||
fsl,pins = <
|
||||
MX8MQ_IOMUXC_SD1_CLK_USDHC1_CLK 0x8d
|
||||
MX8MQ_IOMUXC_SD1_CMD_USDHC1_CMD 0xcd
|
||||
MX8MQ_IOMUXC_SD1_DATA0_USDHC1_DATA0 0xcd
|
||||
MX8MQ_IOMUXC_SD1_DATA1_USDHC1_DATA1 0xcd
|
||||
MX8MQ_IOMUXC_SD1_DATA2_USDHC1_DATA2 0xcd
|
||||
MX8MQ_IOMUXC_SD1_DATA3_USDHC1_DATA3 0xcd
|
||||
MX8MQ_IOMUXC_SD1_DATA4_USDHC1_DATA4 0xcd
|
||||
MX8MQ_IOMUXC_SD1_DATA5_USDHC1_DATA5 0xcd
|
||||
MX8MQ_IOMUXC_SD1_DATA6_USDHC1_DATA6 0xcd
|
||||
MX8MQ_IOMUXC_SD1_DATA7_USDHC1_DATA7 0xcd
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_usdhc1_200mhz: usdhc1-200mhzgrp {
|
||||
fsl,pins = <
|
||||
MX8MQ_IOMUXC_SD1_CLK_USDHC1_CLK 0x9f
|
||||
MX8MQ_IOMUXC_SD1_CMD_USDHC1_CMD 0xdf
|
||||
MX8MQ_IOMUXC_SD1_DATA0_USDHC1_DATA0 0xdf
|
||||
MX8MQ_IOMUXC_SD1_DATA1_USDHC1_DATA1 0xdf
|
||||
MX8MQ_IOMUXC_SD1_DATA2_USDHC1_DATA2 0xdf
|
||||
MX8MQ_IOMUXC_SD1_DATA3_USDHC1_DATA3 0xdf
|
||||
MX8MQ_IOMUXC_SD1_DATA4_USDHC1_DATA4 0xdf
|
||||
MX8MQ_IOMUXC_SD1_DATA5_USDHC1_DATA5 0xdf
|
||||
MX8MQ_IOMUXC_SD1_DATA6_USDHC1_DATA6 0xdf
|
||||
MX8MQ_IOMUXC_SD1_DATA7_USDHC1_DATA7 0xdf
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_wdog: wdoggrp {
|
||||
fsl,pins = <
|
||||
MX8MQ_IOMUXC_GPIO1_IO02_WDOG1_WDOG_B 0xc6
|
||||
>;
|
||||
};
|
||||
};
|
||||
@@ -1,481 +0,0 @@
|
||||
// SPDX-License-Identifier: (GPL-2.0 OR MIT)
|
||||
/*
|
||||
* Copyright 2017-2019 NXP
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
|
||||
#include "imx8mq.dtsi"
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
|
||||
/ {
|
||||
model = "Google i.MX8MQ Phanbell";
|
||||
compatible = "google,imx8mq-phanbell", "fsl,imx8mq";
|
||||
|
||||
chosen {
|
||||
stdout-path = &uart1;
|
||||
};
|
||||
|
||||
memory@40000000 {
|
||||
device_type = "memory";
|
||||
reg = <0x00000000 0x40000000 0 0x40000000>;
|
||||
};
|
||||
|
||||
pmic_osc: clock-pmic {
|
||||
compatible = "fixed-clock";
|
||||
#clock-cells = <0>;
|
||||
clock-frequency = <32768>;
|
||||
clock-output-names = "pmic_osc";
|
||||
};
|
||||
|
||||
reg_usdhc2_vmmc: regulator-usdhc2-vmmc {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "VSD_3V3";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
gpio = <&gpio2 19 GPIO_ACTIVE_HIGH>;
|
||||
enable-active-high;
|
||||
};
|
||||
|
||||
fan: gpio-fan {
|
||||
compatible = "gpio-fan";
|
||||
gpio-fan,speed-map = <0 0 8600 1>;
|
||||
gpios = <&gpio3 5 GPIO_ACTIVE_HIGH>;
|
||||
#cooling-cells = <2>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_gpio_fan>;
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
&A53_0 {
|
||||
cpu-supply = <&buck2>;
|
||||
};
|
||||
|
||||
&A53_1 {
|
||||
cpu-supply = <&buck2>;
|
||||
};
|
||||
|
||||
&A53_2 {
|
||||
cpu-supply = <&buck2>;
|
||||
};
|
||||
|
||||
&A53_3 {
|
||||
cpu-supply = <&buck2>;
|
||||
};
|
||||
|
||||
&cpu_thermal {
|
||||
trips {
|
||||
cpu_alert0: trip0 {
|
||||
temperature = <75000>;
|
||||
hysteresis = <2000>;
|
||||
type = "passive";
|
||||
};
|
||||
|
||||
cpu_alert1: trip1 {
|
||||
temperature = <80000>;
|
||||
hysteresis = <2000>;
|
||||
type = "passive";
|
||||
};
|
||||
|
||||
cpu_crit0: trip3 {
|
||||
temperature = <90000>;
|
||||
hysteresis = <2000>;
|
||||
type = "critical";
|
||||
};
|
||||
|
||||
fan_toggle0: trip4 {
|
||||
temperature = <65000>;
|
||||
hysteresis = <10000>;
|
||||
type = "active";
|
||||
};
|
||||
};
|
||||
|
||||
cooling-maps {
|
||||
map0 {
|
||||
trip = <&cpu_alert0>;
|
||||
cooling-device =
|
||||
<&A53_0 0 1>; /* Exclude highest OPP */
|
||||
};
|
||||
|
||||
map1 {
|
||||
trip = <&cpu_alert1>;
|
||||
cooling-device =
|
||||
<&A53_0 0 2>; /* Exclude two highest OPPs */
|
||||
};
|
||||
|
||||
map4 {
|
||||
trip = <&fan_toggle0>;
|
||||
cooling-device = <&fan 0 1>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&i2c1 {
|
||||
clock-frequency = <400000>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_i2c1>;
|
||||
status = "okay";
|
||||
|
||||
pmic: pmic@4b {
|
||||
compatible = "rohm,bd71837";
|
||||
reg = <0x4b>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_pmic>;
|
||||
#clock-cells = <0>;
|
||||
clocks = <&pmic_osc>;
|
||||
clock-output-names = "pmic_clk";
|
||||
interrupt-parent = <&gpio1>;
|
||||
interrupts = <3 IRQ_TYPE_LEVEL_LOW>;
|
||||
|
||||
regulators {
|
||||
buck1: BUCK1 {
|
||||
regulator-name = "buck1";
|
||||
regulator-min-microvolt = <700000>;
|
||||
regulator-max-microvolt = <1300000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
regulator-ramp-delay = <1250>;
|
||||
rohm,dvs-run-voltage = <900000>;
|
||||
rohm,dvs-idle-voltage = <900000>;
|
||||
rohm,dvs-suspend-voltage = <800000>;
|
||||
};
|
||||
|
||||
buck2: BUCK2 {
|
||||
regulator-name = "buck2";
|
||||
regulator-min-microvolt = <850000>;
|
||||
regulator-max-microvolt = <1000000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
rohm,dvs-run-voltage = <1000000>;
|
||||
rohm,dvs-idle-voltage = <900000>;
|
||||
};
|
||||
|
||||
buck3: BUCK3 {
|
||||
regulator-name = "buck3";
|
||||
regulator-min-microvolt = <700000>;
|
||||
regulator-max-microvolt = <1300000>;
|
||||
regulator-boot-on;
|
||||
rohm,dvs-run-voltage = <900000>;
|
||||
};
|
||||
|
||||
buck4: BUCK4 {
|
||||
regulator-name = "buck4";
|
||||
regulator-min-microvolt = <700000>;
|
||||
regulator-max-microvolt = <1300000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
rohm,dvs-run-voltage = <900000>;
|
||||
};
|
||||
|
||||
buck5: BUCK5 {
|
||||
regulator-name = "buck5";
|
||||
regulator-min-microvolt = <700000>;
|
||||
regulator-max-microvolt = <1350000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
buck6: BUCK6 {
|
||||
regulator-name = "buck6";
|
||||
regulator-min-microvolt = <3000000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
buck7: BUCK7 {
|
||||
regulator-name = "buck7";
|
||||
regulator-min-microvolt = <1605000>;
|
||||
regulator-max-microvolt = <1995000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
buck8: BUCK8 {
|
||||
regulator-name = "buck8";
|
||||
regulator-min-microvolt = <800000>;
|
||||
regulator-max-microvolt = <1400000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
ldo1: LDO1 {
|
||||
regulator-name = "ldo1";
|
||||
regulator-min-microvolt = <3000000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
ldo2: LDO2 {
|
||||
regulator-name = "ldo2";
|
||||
regulator-min-microvolt = <900000>;
|
||||
regulator-max-microvolt = <900000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
ldo3: LDO3 {
|
||||
regulator-name = "ldo3";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
ldo4: LDO4 {
|
||||
regulator-name = "ldo4";
|
||||
regulator-min-microvolt = <900000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
ldo5: LDO5 {
|
||||
regulator-name = "ldo5";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
ldo6: LDO6 {
|
||||
regulator-name = "ldo6";
|
||||
regulator-min-microvolt = <900000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
ldo7: LDO7 {
|
||||
regulator-name = "ldo7";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&fec1 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_fec1>;
|
||||
phy-mode = "rgmii-id";
|
||||
phy-handle = <ðphy0>;
|
||||
fsl,magic-packet;
|
||||
status = "okay";
|
||||
|
||||
mdio {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
ethphy0: ethernet-phy@0 {
|
||||
compatible = "ethernet-phy-ieee802.3-c22";
|
||||
reg = <0>;
|
||||
reset-gpios = <&gpio1 9 GPIO_ACTIVE_LOW>;
|
||||
reset-assert-us = <10000>;
|
||||
reset-deassert-us = <50000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&uart1 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_uart1>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usdhc1 {
|
||||
pinctrl-names = "default", "state_100mhz", "state_200mhz";
|
||||
pinctrl-0 = <&pinctrl_usdhc1>;
|
||||
pinctrl-1 = <&pinctrl_usdhc1_100mhz>;
|
||||
pinctrl-2 = <&pinctrl_usdhc1_200mhz>;
|
||||
bus-width = <8>;
|
||||
non-removable;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usdhc2 {
|
||||
pinctrl-names = "default", "state_100mhz", "state_200mhz";
|
||||
pinctrl-0 = <&pinctrl_usdhc2>, <&pinctrl_usdhc2_gpio>;
|
||||
pinctrl-1 = <&pinctrl_usdhc2_100mhz>, <&pinctrl_usdhc2_gpio>;
|
||||
pinctrl-2 = <&pinctrl_usdhc2_200mhz>, <&pinctrl_usdhc2_gpio>;
|
||||
bus-width = <4>;
|
||||
cd-gpios = <&gpio2 12 GPIO_ACTIVE_LOW>;
|
||||
vmmc-supply = <®_usdhc2_vmmc>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb3_phy0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb_dwc3_0 {
|
||||
dr_mode = "otg";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb3_phy1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb_dwc3_1 {
|
||||
dr_mode = "host";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&wdog1 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_wdog>;
|
||||
fsl,ext-reset-output;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&iomuxc {
|
||||
pinctrl_fec1: fec1grp {
|
||||
fsl,pins = <
|
||||
MX8MQ_IOMUXC_ENET_MDC_ENET1_MDC 0x3
|
||||
MX8MQ_IOMUXC_ENET_MDIO_ENET1_MDIO 0x23
|
||||
MX8MQ_IOMUXC_ENET_TD3_ENET1_RGMII_TD3 0x1f
|
||||
MX8MQ_IOMUXC_ENET_TD2_ENET1_RGMII_TD2 0x1f
|
||||
MX8MQ_IOMUXC_ENET_TD1_ENET1_RGMII_TD1 0x1f
|
||||
MX8MQ_IOMUXC_ENET_TD0_ENET1_RGMII_TD0 0x1f
|
||||
MX8MQ_IOMUXC_ENET_RD3_ENET1_RGMII_RD3 0x91
|
||||
MX8MQ_IOMUXC_ENET_RD2_ENET1_RGMII_RD2 0x91
|
||||
MX8MQ_IOMUXC_ENET_RD1_ENET1_RGMII_RD1 0x91
|
||||
MX8MQ_IOMUXC_ENET_RD0_ENET1_RGMII_RD0 0x91
|
||||
MX8MQ_IOMUXC_ENET_TXC_ENET1_RGMII_TXC 0x1f
|
||||
MX8MQ_IOMUXC_ENET_RXC_ENET1_RGMII_RXC 0x91
|
||||
MX8MQ_IOMUXC_ENET_RX_CTL_ENET1_RGMII_RX_CTL 0x91
|
||||
MX8MQ_IOMUXC_ENET_TX_CTL_ENET1_RGMII_TX_CTL 0x1f
|
||||
MX8MQ_IOMUXC_GPIO1_IO09_GPIO1_IO9 0x19
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_gpio_fan: gpiofangrp {
|
||||
fsl,pins = <
|
||||
MX8MQ_IOMUXC_NAND_CLE_GPIO3_IO5 0x16
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_i2c1: i2c1grp {
|
||||
fsl,pins = <
|
||||
MX8MQ_IOMUXC_I2C1_SCL_I2C1_SCL 0x4000007f
|
||||
MX8MQ_IOMUXC_I2C1_SDA_I2C1_SDA 0x4000007f
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_pmic: pmicirqgrp {
|
||||
fsl,pins = <
|
||||
MX8MQ_IOMUXC_GPIO1_IO03_GPIO1_IO3 0x41
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_uart1: uart1grp {
|
||||
fsl,pins = <
|
||||
MX8MQ_IOMUXC_UART1_RXD_UART1_DCE_RX 0x49
|
||||
MX8MQ_IOMUXC_UART1_TXD_UART1_DCE_TX 0x49
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_usdhc1: usdhc1grp {
|
||||
fsl,pins = <
|
||||
MX8MQ_IOMUXC_SD1_CLK_USDHC1_CLK 0x83
|
||||
MX8MQ_IOMUXC_SD1_CMD_USDHC1_CMD 0xc3
|
||||
MX8MQ_IOMUXC_SD1_DATA0_USDHC1_DATA0 0xc3
|
||||
MX8MQ_IOMUXC_SD1_DATA1_USDHC1_DATA1 0xc3
|
||||
MX8MQ_IOMUXC_SD1_DATA2_USDHC1_DATA2 0xc3
|
||||
MX8MQ_IOMUXC_SD1_DATA3_USDHC1_DATA3 0xc3
|
||||
MX8MQ_IOMUXC_SD1_DATA4_USDHC1_DATA4 0xc3
|
||||
MX8MQ_IOMUXC_SD1_DATA5_USDHC1_DATA5 0xc3
|
||||
MX8MQ_IOMUXC_SD1_DATA6_USDHC1_DATA6 0xc3
|
||||
MX8MQ_IOMUXC_SD1_DATA7_USDHC1_DATA7 0xc3
|
||||
MX8MQ_IOMUXC_SD1_STROBE_USDHC1_STROBE 0x83
|
||||
MX8MQ_IOMUXC_SD1_RESET_B_USDHC1_RESET_B 0xc1
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_usdhc1_100mhz: usdhc1-100mhzgrp {
|
||||
fsl,pins = <
|
||||
MX8MQ_IOMUXC_SD1_CLK_USDHC1_CLK 0x85
|
||||
MX8MQ_IOMUXC_SD1_CMD_USDHC1_CMD 0xc5
|
||||
MX8MQ_IOMUXC_SD1_DATA0_USDHC1_DATA0 0xc5
|
||||
MX8MQ_IOMUXC_SD1_DATA1_USDHC1_DATA1 0xc5
|
||||
MX8MQ_IOMUXC_SD1_DATA2_USDHC1_DATA2 0xc5
|
||||
MX8MQ_IOMUXC_SD1_DATA3_USDHC1_DATA3 0xc5
|
||||
MX8MQ_IOMUXC_SD1_DATA4_USDHC1_DATA4 0xc5
|
||||
MX8MQ_IOMUXC_SD1_DATA5_USDHC1_DATA5 0xc5
|
||||
MX8MQ_IOMUXC_SD1_DATA6_USDHC1_DATA6 0xc5
|
||||
MX8MQ_IOMUXC_SD1_DATA7_USDHC1_DATA7 0xc5
|
||||
MX8MQ_IOMUXC_SD1_STROBE_USDHC1_STROBE 0x85
|
||||
MX8MQ_IOMUXC_SD1_RESET_B_USDHC1_RESET_B 0xc1
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_usdhc1_200mhz: usdhc1-200mhzgrp {
|
||||
fsl,pins = <
|
||||
MX8MQ_IOMUXC_SD1_CLK_USDHC1_CLK 0x87
|
||||
MX8MQ_IOMUXC_SD1_CMD_USDHC1_CMD 0xc7
|
||||
MX8MQ_IOMUXC_SD1_DATA0_USDHC1_DATA0 0xc7
|
||||
MX8MQ_IOMUXC_SD1_DATA1_USDHC1_DATA1 0xc7
|
||||
MX8MQ_IOMUXC_SD1_DATA2_USDHC1_DATA2 0xc7
|
||||
MX8MQ_IOMUXC_SD1_DATA3_USDHC1_DATA3 0xc7
|
||||
MX8MQ_IOMUXC_SD1_DATA4_USDHC1_DATA4 0xc7
|
||||
MX8MQ_IOMUXC_SD1_DATA5_USDHC1_DATA5 0xc7
|
||||
MX8MQ_IOMUXC_SD1_DATA6_USDHC1_DATA6 0xc7
|
||||
MX8MQ_IOMUXC_SD1_DATA7_USDHC1_DATA7 0xc7
|
||||
MX8MQ_IOMUXC_SD1_STROBE_USDHC1_STROBE 0x87
|
||||
MX8MQ_IOMUXC_SD1_RESET_B_USDHC1_RESET_B 0xc1
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_usdhc2_gpio: usdhc2gpiogrp {
|
||||
fsl,pins = <
|
||||
MX8MQ_IOMUXC_SD2_CD_B_GPIO2_IO12 0x41
|
||||
MX8MQ_IOMUXC_SD2_RESET_B_GPIO2_IO19 0x41
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_usdhc2: usdhc2grp {
|
||||
fsl,pins = <
|
||||
MX8MQ_IOMUXC_SD2_CLK_USDHC2_CLK 0x83
|
||||
MX8MQ_IOMUXC_SD2_CMD_USDHC2_CMD 0xc3
|
||||
MX8MQ_IOMUXC_SD2_DATA0_USDHC2_DATA0 0xc3
|
||||
MX8MQ_IOMUXC_SD2_DATA1_USDHC2_DATA1 0xc3
|
||||
MX8MQ_IOMUXC_SD2_DATA2_USDHC2_DATA2 0xc3
|
||||
MX8MQ_IOMUXC_SD2_DATA3_USDHC2_DATA3 0xc3
|
||||
MX8MQ_IOMUXC_GPIO1_IO04_USDHC2_VSELECT 0xc1
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_usdhc2_100mhz: usdhc2-100mhzgrp {
|
||||
fsl,pins = <
|
||||
MX8MQ_IOMUXC_SD2_CLK_USDHC2_CLK 0x85
|
||||
MX8MQ_IOMUXC_SD2_CMD_USDHC2_CMD 0xc5
|
||||
MX8MQ_IOMUXC_SD2_DATA0_USDHC2_DATA0 0xc5
|
||||
MX8MQ_IOMUXC_SD2_DATA1_USDHC2_DATA1 0xc5
|
||||
MX8MQ_IOMUXC_SD2_DATA2_USDHC2_DATA2 0xc5
|
||||
MX8MQ_IOMUXC_SD2_DATA3_USDHC2_DATA3 0xc5
|
||||
MX8MQ_IOMUXC_GPIO1_IO04_USDHC2_VSELECT 0xc1
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_usdhc2_200mhz: usdhc2-200mhzgrp {
|
||||
fsl,pins = <
|
||||
MX8MQ_IOMUXC_SD2_CLK_USDHC2_CLK 0x87
|
||||
MX8MQ_IOMUXC_SD2_CMD_USDHC2_CMD 0xc7
|
||||
MX8MQ_IOMUXC_SD2_DATA0_USDHC2_DATA0 0xc7
|
||||
MX8MQ_IOMUXC_SD2_DATA1_USDHC2_DATA1 0xc7
|
||||
MX8MQ_IOMUXC_SD2_DATA2_USDHC2_DATA2 0xc7
|
||||
MX8MQ_IOMUXC_SD2_DATA3_USDHC2_DATA3 0xc7
|
||||
MX8MQ_IOMUXC_GPIO1_IO04_USDHC2_VSELECT 0xc1
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_wdog: wdoggrp {
|
||||
fsl,pins = <
|
||||
MX8MQ_IOMUXC_GPIO1_IO02_WDOG1_WDOG_B 0xc6
|
||||
>;
|
||||
};
|
||||
};
|
||||
@@ -1,418 +0,0 @@
|
||||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* Copyright 2018 Wandboard, Org.
|
||||
* Copyright 2017 NXP
|
||||
*
|
||||
* Author: Richard Hu <hakahu@gmail.com>
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
|
||||
#include "imx8mq.dtsi"
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
|
||||
/ {
|
||||
model = "TechNexion PICO-PI-8M";
|
||||
compatible = "technexion,pico-pi-imx8m", "fsl,imx8mq";
|
||||
|
||||
chosen {
|
||||
stdout-path = &uart1;
|
||||
};
|
||||
|
||||
pmic_osc: clock-pmic {
|
||||
compatible = "fixed-clock";
|
||||
#clock-cells = <0>;
|
||||
clock-frequency = <32768>;
|
||||
clock-output-names = "pmic_osc";
|
||||
};
|
||||
|
||||
reg_usb_otg_vbus: regulator-usb-otg-vbus {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_otg_vbus>;
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "usb_otg_vbus";
|
||||
regulator-min-microvolt = <5000000>;
|
||||
regulator-max-microvolt = <5000000>;
|
||||
gpio = <&gpio3 14 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
};
|
||||
|
||||
&fec1 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_fec1 &pinctrl_enet_3v3>;
|
||||
phy-mode = "rgmii-id";
|
||||
phy-handle = <ðphy0>;
|
||||
fsl,magic-packet;
|
||||
status = "okay";
|
||||
|
||||
mdio {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
ethphy0: ethernet-phy@1 {
|
||||
compatible = "ethernet-phy-ieee802.3-c22";
|
||||
reg = <1>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&i2c1 {
|
||||
clock-frequency = <100000>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_i2c1>;
|
||||
status = "okay";
|
||||
|
||||
pmic: pmic@4b {
|
||||
reg = <0x4b>;
|
||||
compatible = "rohm,bd71837";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_pmic>;
|
||||
clocks = <&pmic_osc>;
|
||||
clock-names = "osc";
|
||||
clock-output-names = "pmic_clk";
|
||||
interrupt-parent = <&gpio1>;
|
||||
interrupts = <3 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-names = "irq";
|
||||
|
||||
regulators {
|
||||
buck1: BUCK1 {
|
||||
regulator-name = "buck1";
|
||||
regulator-min-microvolt = <700000>;
|
||||
regulator-max-microvolt = <1300000>;
|
||||
regulator-boot-on;
|
||||
regulator-ramp-delay = <1250>;
|
||||
rohm,dvs-run-voltage = <900000>;
|
||||
rohm,dvs-idle-voltage = <850000>;
|
||||
rohm,dvs-suspend-voltage = <800000>;
|
||||
};
|
||||
|
||||
buck2: BUCK2 {
|
||||
regulator-name = "buck2";
|
||||
regulator-min-microvolt = <700000>;
|
||||
regulator-max-microvolt = <1300000>;
|
||||
regulator-boot-on;
|
||||
regulator-ramp-delay = <1250>;
|
||||
rohm,dvs-run-voltage = <1000000>;
|
||||
rohm,dvs-idle-voltage = <900000>;
|
||||
};
|
||||
|
||||
buck3: BUCK3 {
|
||||
regulator-name = "buck3";
|
||||
regulator-min-microvolt = <700000>;
|
||||
regulator-max-microvolt = <1300000>;
|
||||
regulator-boot-on;
|
||||
rohm,dvs-run-voltage = <1000000>;
|
||||
};
|
||||
|
||||
buck4: BUCK4 {
|
||||
regulator-name = "buck4";
|
||||
regulator-min-microvolt = <700000>;
|
||||
regulator-max-microvolt = <1300000>;
|
||||
regulator-boot-on;
|
||||
rohm,dvs-run-voltage = <1000000>;
|
||||
};
|
||||
|
||||
buck5: BUCK5 {
|
||||
regulator-name = "buck5";
|
||||
regulator-min-microvolt = <700000>;
|
||||
regulator-max-microvolt = <1350000>;
|
||||
regulator-boot-on;
|
||||
};
|
||||
|
||||
buck6: BUCK6 {
|
||||
regulator-name = "buck6";
|
||||
regulator-min-microvolt = <3000000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-boot-on;
|
||||
};
|
||||
|
||||
buck7: BUCK7 {
|
||||
regulator-name = "buck7";
|
||||
regulator-min-microvolt = <1605000>;
|
||||
regulator-max-microvolt = <1995000>;
|
||||
regulator-boot-on;
|
||||
};
|
||||
|
||||
buck8: BUCK8 {
|
||||
regulator-name = "buck8";
|
||||
regulator-min-microvolt = <800000>;
|
||||
regulator-max-microvolt = <1400000>;
|
||||
regulator-boot-on;
|
||||
};
|
||||
|
||||
ldo1: LDO1 {
|
||||
regulator-name = "ldo1";
|
||||
regulator-min-microvolt = <3000000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
ldo2: LDO2 {
|
||||
regulator-name = "ldo2";
|
||||
regulator-min-microvolt = <900000>;
|
||||
regulator-max-microvolt = <900000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
ldo3: LDO3 {
|
||||
regulator-name = "ldo3";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-boot-on;
|
||||
};
|
||||
|
||||
ldo4: LDO4 {
|
||||
regulator-name = "ldo4";
|
||||
regulator-min-microvolt = <900000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-boot-on;
|
||||
};
|
||||
|
||||
ldo5: LDO5 {
|
||||
regulator-name = "ldo5";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-boot-on;
|
||||
};
|
||||
|
||||
ldo6: LDO6 {
|
||||
regulator-name = "ldo6";
|
||||
regulator-min-microvolt = <900000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-boot-on;
|
||||
};
|
||||
|
||||
ldo7: LDO7 {
|
||||
regulator-name = "ldo7";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-boot-on;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&i2c2 {
|
||||
clock-frequency = <100000>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_i2c2>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart1 { /* console */
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_uart1>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usdhc1 {
|
||||
assigned-clocks = <&clk IMX8MQ_CLK_USDHC1>;
|
||||
assigned-clock-rates = <400000000>;
|
||||
pinctrl-names = "default", "state_100mhz", "state_200mhz";
|
||||
pinctrl-0 = <&pinctrl_usdhc1>;
|
||||
pinctrl-1 = <&pinctrl_usdhc1_100mhz>;
|
||||
pinctrl-2 = <&pinctrl_usdhc1_200mhz>;
|
||||
bus-width = <8>;
|
||||
non-removable;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usdhc2 {
|
||||
assigned-clocks = <&clk IMX8MQ_CLK_USDHC2>;
|
||||
assigned-clock-rates = <200000000>;
|
||||
pinctrl-names = "default", "state_100mhz", "state_200mhz";
|
||||
pinctrl-0 = <&pinctrl_usdhc2>, <&pinctrl_usdhc2_gpio>;
|
||||
pinctrl-1 = <&pinctrl_usdhc2_100mhz>, <&pinctrl_usdhc2_gpio>;
|
||||
pinctrl-2 = <&pinctrl_usdhc2_200mhz>, <&pinctrl_usdhc2_gpio>;
|
||||
bus-width = <4>;
|
||||
cd-gpios = <&gpio2 12 GPIO_ACTIVE_LOW>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb3_phy0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb3_phy1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb_dwc3_1 {
|
||||
dr_mode = "host";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&wdog1 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_wdog>;
|
||||
fsl,ext-reset-output;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&iomuxc {
|
||||
pinctrl_enet_3v3: enet3v3grp {
|
||||
fsl,pins = <
|
||||
MX8MQ_IOMUXC_GPIO1_IO00_GPIO1_IO0 0x19
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_fec1: fec1grp {
|
||||
fsl,pins = <
|
||||
MX8MQ_IOMUXC_ENET_MDC_ENET1_MDC 0x3
|
||||
MX8MQ_IOMUXC_ENET_MDIO_ENET1_MDIO 0x23
|
||||
MX8MQ_IOMUXC_ENET_TD3_ENET1_RGMII_TD3 0x1f
|
||||
MX8MQ_IOMUXC_ENET_TD2_ENET1_RGMII_TD2 0x1f
|
||||
MX8MQ_IOMUXC_ENET_TD1_ENET1_RGMII_TD1 0x1f
|
||||
MX8MQ_IOMUXC_ENET_TD0_ENET1_RGMII_TD0 0x1f
|
||||
MX8MQ_IOMUXC_ENET_RD3_ENET1_RGMII_RD3 0x91
|
||||
MX8MQ_IOMUXC_ENET_RD2_ENET1_RGMII_RD2 0x91
|
||||
MX8MQ_IOMUXC_ENET_RD1_ENET1_RGMII_RD1 0x91
|
||||
MX8MQ_IOMUXC_ENET_RD0_ENET1_RGMII_RD0 0x91
|
||||
MX8MQ_IOMUXC_ENET_TXC_ENET1_RGMII_TXC 0x1f
|
||||
MX8MQ_IOMUXC_ENET_RXC_ENET1_RGMII_RXC 0x91
|
||||
MX8MQ_IOMUXC_ENET_RX_CTL_ENET1_RGMII_RX_CTL 0x91
|
||||
MX8MQ_IOMUXC_ENET_TX_CTL_ENET1_RGMII_TX_CTL 0x1f
|
||||
MX8MQ_IOMUXC_GPIO1_IO09_GPIO1_IO9 0x19
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_i2c1: i2c1grp {
|
||||
fsl,pins = <
|
||||
MX8MQ_IOMUXC_I2C1_SCL_I2C1_SCL 0x4000007f
|
||||
MX8MQ_IOMUXC_I2C1_SDA_I2C1_SDA 0x4000007f
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_i2c2: i2c2grp {
|
||||
fsl,pins = <
|
||||
MX8MQ_IOMUXC_I2C2_SCL_I2C2_SCL 0x4000007f
|
||||
MX8MQ_IOMUXC_I2C2_SDA_I2C2_SDA 0x4000007f
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_otg_vbus: otgvbusgrp {
|
||||
fsl,pins = <
|
||||
MX8MQ_IOMUXC_NAND_DQS_GPIO3_IO14 0x19 /* USB OTG VBUS Enable */
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_pmic: pmicirqgrp {
|
||||
fsl,pins = <
|
||||
MX8MQ_IOMUXC_GPIO1_IO03_GPIO1_IO3 0x41
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_uart1: uart1grp {
|
||||
fsl,pins = <
|
||||
MX8MQ_IOMUXC_UART1_RXD_UART1_DCE_RX 0x49
|
||||
MX8MQ_IOMUXC_UART1_TXD_UART1_DCE_TX 0x49
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_uart2: uart2grp {
|
||||
fsl,pins = <
|
||||
MX8MQ_IOMUXC_UART2_RXD_UART2_DCE_RX 0x49
|
||||
MX8MQ_IOMUXC_UART2_TXD_UART2_DCE_TX 0x49
|
||||
MX8MQ_IOMUXC_UART4_RXD_UART2_DCE_CTS_B 0x49
|
||||
MX8MQ_IOMUXC_UART4_TXD_UART2_DCE_RTS_B 0x49
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_usdhc1: usdhc1grp {
|
||||
fsl,pins = <
|
||||
MX8MQ_IOMUXC_SD1_CLK_USDHC1_CLK 0x83
|
||||
MX8MQ_IOMUXC_SD1_CMD_USDHC1_CMD 0xc3
|
||||
MX8MQ_IOMUXC_SD1_DATA0_USDHC1_DATA0 0xc3
|
||||
MX8MQ_IOMUXC_SD1_DATA1_USDHC1_DATA1 0xc3
|
||||
MX8MQ_IOMUXC_SD1_DATA2_USDHC1_DATA2 0xc3
|
||||
MX8MQ_IOMUXC_SD1_DATA3_USDHC1_DATA3 0xc3
|
||||
MX8MQ_IOMUXC_SD1_DATA4_USDHC1_DATA4 0xc3
|
||||
MX8MQ_IOMUXC_SD1_DATA5_USDHC1_DATA5 0xc3
|
||||
MX8MQ_IOMUXC_SD1_DATA6_USDHC1_DATA6 0xc3
|
||||
MX8MQ_IOMUXC_SD1_DATA7_USDHC1_DATA7 0xc3
|
||||
MX8MQ_IOMUXC_SD1_STROBE_USDHC1_STROBE 0x83
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_usdhc1_100mhz: usdhc1-100mhzgrp {
|
||||
fsl,pins = <
|
||||
MX8MQ_IOMUXC_SD1_CLK_USDHC1_CLK 0x85
|
||||
MX8MQ_IOMUXC_SD1_CMD_USDHC1_CMD 0xc5
|
||||
MX8MQ_IOMUXC_SD1_DATA0_USDHC1_DATA0 0xc5
|
||||
MX8MQ_IOMUXC_SD1_DATA1_USDHC1_DATA1 0xc5
|
||||
MX8MQ_IOMUXC_SD1_DATA2_USDHC1_DATA2 0xc5
|
||||
MX8MQ_IOMUXC_SD1_DATA3_USDHC1_DATA3 0xc5
|
||||
MX8MQ_IOMUXC_SD1_DATA4_USDHC1_DATA4 0xc5
|
||||
MX8MQ_IOMUXC_SD1_DATA5_USDHC1_DATA5 0xc5
|
||||
MX8MQ_IOMUXC_SD1_DATA6_USDHC1_DATA6 0xc5
|
||||
MX8MQ_IOMUXC_SD1_DATA7_USDHC1_DATA7 0xc5
|
||||
MX8MQ_IOMUXC_SD1_STROBE_USDHC1_STROBE 0x85
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_usdhc1_200mhz: usdhc1-200mhzgrp {
|
||||
fsl,pins = <
|
||||
MX8MQ_IOMUXC_SD1_CLK_USDHC1_CLK 0x87
|
||||
MX8MQ_IOMUXC_SD1_CMD_USDHC1_CMD 0xc7
|
||||
MX8MQ_IOMUXC_SD1_DATA0_USDHC1_DATA0 0xc7
|
||||
MX8MQ_IOMUXC_SD1_DATA1_USDHC1_DATA1 0xc7
|
||||
MX8MQ_IOMUXC_SD1_DATA2_USDHC1_DATA2 0xc7
|
||||
MX8MQ_IOMUXC_SD1_DATA3_USDHC1_DATA3 0xc7
|
||||
MX8MQ_IOMUXC_SD1_DATA4_USDHC1_DATA4 0xc7
|
||||
MX8MQ_IOMUXC_SD1_DATA5_USDHC1_DATA5 0xc7
|
||||
MX8MQ_IOMUXC_SD1_DATA6_USDHC1_DATA6 0xc7
|
||||
MX8MQ_IOMUXC_SD1_DATA7_USDHC1_DATA7 0xc7
|
||||
MX8MQ_IOMUXC_SD1_STROBE_USDHC1_STROBE 0x87
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_usdhc2_gpio: usdhc2gpiogrp {
|
||||
fsl,pins = <
|
||||
MX8MQ_IOMUXC_SD2_CD_B_GPIO2_IO12 0x41
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_usdhc2: usdhc2grp {
|
||||
fsl,pins = <
|
||||
MX8MQ_IOMUXC_SD2_CLK_USDHC2_CLK 0x83
|
||||
MX8MQ_IOMUXC_SD2_CMD_USDHC2_CMD 0xc3
|
||||
MX8MQ_IOMUXC_SD2_DATA0_USDHC2_DATA0 0xc3
|
||||
MX8MQ_IOMUXC_SD2_DATA1_USDHC2_DATA1 0xc3
|
||||
MX8MQ_IOMUXC_SD2_DATA2_USDHC2_DATA2 0xc3
|
||||
MX8MQ_IOMUXC_SD2_DATA3_USDHC2_DATA3 0xc3
|
||||
MX8MQ_IOMUXC_GPIO1_IO04_USDHC2_VSELECT 0xc1
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_usdhc2_100mhz: usdhc2-100mhzgrp {
|
||||
fsl,pins = <
|
||||
MX8MQ_IOMUXC_SD2_CLK_USDHC2_CLK 0x85
|
||||
MX8MQ_IOMUXC_SD2_CMD_USDHC2_CMD 0xc5
|
||||
MX8MQ_IOMUXC_SD2_DATA0_USDHC2_DATA0 0xc5
|
||||
MX8MQ_IOMUXC_SD2_DATA1_USDHC2_DATA1 0xc5
|
||||
MX8MQ_IOMUXC_SD2_DATA2_USDHC2_DATA2 0xc5
|
||||
MX8MQ_IOMUXC_SD2_DATA3_USDHC2_DATA3 0xc5
|
||||
MX8MQ_IOMUXC_GPIO1_IO04_USDHC2_VSELECT 0xc1
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_usdhc2_200mhz: usdhc2-200mhzgrp {
|
||||
fsl,pins = <
|
||||
MX8MQ_IOMUXC_SD2_CLK_USDHC2_CLK 0x87
|
||||
MX8MQ_IOMUXC_SD2_CMD_USDHC2_CMD 0xc7
|
||||
MX8MQ_IOMUXC_SD2_DATA0_USDHC2_DATA0 0xc7
|
||||
MX8MQ_IOMUXC_SD2_DATA1_USDHC2_DATA1 0xc7
|
||||
MX8MQ_IOMUXC_SD2_DATA2_USDHC2_DATA2 0xc7
|
||||
MX8MQ_IOMUXC_SD2_DATA3_USDHC2_DATA3 0xc7
|
||||
MX8MQ_IOMUXC_GPIO1_IO04_USDHC2_VSELECT 0xc1
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_wdog: wdoggrp {
|
||||
fsl,pins = <
|
||||
MX8MQ_IOMUXC_GPIO1_IO02_WDOG1_WDOG_B 0xc6
|
||||
>;
|
||||
};
|
||||
};
|
||||
File diff suppressed because it is too large
Load Diff
@@ -10,7 +10,6 @@
|
||||
};
|
||||
|
||||
&gpio1 {
|
||||
reg = <0 0x47400000 0 0x1000>, <0 0x47400040 0 0x40>;
|
||||
bootph-pre-ram;
|
||||
};
|
||||
|
||||
|
||||
@@ -26,7 +26,6 @@
|
||||
};
|
||||
|
||||
&gpio1 {
|
||||
reg = <0 0x47400000 0 0x1000>, <0 0x47400000 0 0x40>;
|
||||
bootph-pre-ram;
|
||||
|
||||
ctrl-sleep-moci-hog {
|
||||
|
||||
@@ -9,6 +9,11 @@
|
||||
#include "k3-binman.dtsi"
|
||||
|
||||
#ifdef CONFIG_TARGET_PHYCORE_AM62X_R5
|
||||
|
||||
&rcfg_yaml_tifs {
|
||||
config = "tifs-rm-cfg.yaml";
|
||||
};
|
||||
|
||||
&binman {
|
||||
tiboot3-am62x-hs-phycore-som.bin {
|
||||
filename = "tiboot3-am62x-hs-phycore-som.bin";
|
||||
|
||||
@@ -7,6 +7,10 @@
|
||||
|
||||
#ifdef CONFIG_TARGET_VERDIN_AM62_R5
|
||||
|
||||
&rcfg_yaml_tifs {
|
||||
config = "tifs-rm-cfg.yaml";
|
||||
};
|
||||
|
||||
&binman {
|
||||
tiboot3-am62x-hs-verdin.bin {
|
||||
filename = "tiboot3-am62x-hs-verdin.bin";
|
||||
|
||||
@@ -7,6 +7,10 @@
|
||||
|
||||
#if IS_ENABLED(CONFIG_TARGET_VERDIN_AM62P_R5)
|
||||
|
||||
&rcfg_yaml_tifs {
|
||||
config = "tifs-rm-cfg.yaml";
|
||||
};
|
||||
|
||||
&binman {
|
||||
tiboot3-am62px-hs-fs-verdin.bin {
|
||||
filename = "tiboot3-am62px-hs-fs-verdin.bin";
|
||||
|
||||
19
arch/arm/dts/lemans-evk-u-boot.dtsi
Normal file
19
arch/arm/dts/lemans-evk-u-boot.dtsi
Normal file
@@ -0,0 +1,19 @@
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
/*
|
||||
* Copyright (c) 2026, Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
/ {
|
||||
/* Will be removed when bootloader updates later */
|
||||
memory@80000000 {
|
||||
device_type = "memory";
|
||||
reg = <0x0 0x80000000 0x0 0x3ee00000>,
|
||||
<0x0 0xc0000000 0x0 0x0fd00000>,
|
||||
<0xD 0x00000000 0x2 0x54100000>,
|
||||
<0xA 0x80000000 0x1 0x80000000>,
|
||||
<0x9 0x00000000 0x1 0x80000000>,
|
||||
<0x1 0x00000000 0x3 0x00000000>,
|
||||
<0x0 0xd0000000 0x0 0x01900000>,
|
||||
<0x0 0xd3500000 0x0 0x2cb00000>;
|
||||
};
|
||||
};
|
||||
@@ -21,13 +21,6 @@
|
||||
pinctrl1 = &pinctrl_z;
|
||||
};
|
||||
|
||||
arm_wdt: watchdog {
|
||||
compatible = "arm,smc-wdt";
|
||||
arm,smc-id = <0xbc000000>;
|
||||
timeout-sec = <32>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
binman: binman {
|
||||
multiple-images;
|
||||
};
|
||||
@@ -110,7 +103,7 @@
|
||||
};
|
||||
|
||||
&iwdg2 {
|
||||
status = "disabled";
|
||||
bootph-all;
|
||||
};
|
||||
|
||||
/* pre-reloc probe = reserve video frame buffer in video_reserve() */
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0+ */
|
||||
/*
|
||||
* Copyright 2022 NXP
|
||||
* Copyright 2022-2026 NXP
|
||||
*/
|
||||
|
||||
#ifndef __ASM_ARCH_IMX8M_DDR_H
|
||||
@@ -100,6 +100,52 @@ struct dram_timing_info {
|
||||
|
||||
extern struct dram_timing_info dram_timing;
|
||||
|
||||
/* Quick Boot related */
|
||||
#define DDRPHY_QB_CSR_SIZE 5168
|
||||
#define DDRPHY_QB_ACSM_SIZE (4 * 1024)
|
||||
#define DDRPHY_QB_MSB_SIZE 0x200
|
||||
#define DDRPHY_QB_PSTATES 0
|
||||
#define DDRPHY_QB_PST_SIZE (DDRPHY_QB_PSTATES * 4 * 1024)
|
||||
|
||||
/**
|
||||
* This structure needs to be aligned with the one in OEI.
|
||||
*/
|
||||
struct ddrphy_qb_state {
|
||||
u32 crc; /* Used for ensuring integrity in DRAM */
|
||||
#define MAC_LENGTH 8 /* 256 bits, 32-bit aligned */
|
||||
u32 mac[MAC_LENGTH]; /* For 95A0/1 use mac[0] to keep CRC32 value */
|
||||
u8 trained_vrefca_a0;
|
||||
u8 trained_vrefca_a1;
|
||||
u8 trained_vrefca_b0;
|
||||
u8 trained_vrefca_b1;
|
||||
u8 trained_vrefdq_a0;
|
||||
u8 trained_vrefdq_a1;
|
||||
u8 trained_vrefdq_b0;
|
||||
u8 trained_vrefdq_b1;
|
||||
u8 trained_vrefdqu_a0;
|
||||
u8 trained_vrefdqu_a1;
|
||||
u8 trained_vrefdqu_b0;
|
||||
u8 trained_vrefdqu_b1;
|
||||
u8 trained_dramdfe_a0;
|
||||
u8 trained_dramdfe_a1;
|
||||
u8 trained_dramdfe_b0;
|
||||
u8 trained_dramdfe_b1;
|
||||
u8 trained_dramdca_a0;
|
||||
u8 trained_dramdca_a1;
|
||||
u8 trained_dramdca_b0;
|
||||
u8 trained_dramdca_b1;
|
||||
u16 qb_pll_upll_prog0;
|
||||
u16 qb_pll_upll_prog1;
|
||||
u16 qb_pll_upll_prog2;
|
||||
u16 qb_pll_upll_prog3;
|
||||
u16 qb_pll_ctrl1;
|
||||
u16 qb_pll_ctrl4;
|
||||
u16 qb_pll_ctrl5;
|
||||
u16 csr[DDRPHY_QB_CSR_SIZE];
|
||||
u16 acsm[DDRPHY_QB_ACSM_SIZE];
|
||||
u16 pst[DDRPHY_QB_PST_SIZE];
|
||||
};
|
||||
|
||||
void ddr_load_train_firmware(enum fw_type type);
|
||||
int ddr_init(struct dram_timing_info *timing_info);
|
||||
int ddr_cfg_phy(struct dram_timing_info *timing_info);
|
||||
|
||||
@@ -23,6 +23,10 @@ int low_drive_freq_update(void *blob);
|
||||
enum imx9_soc_voltage_mode soc_target_voltage_mode(void);
|
||||
int get_reset_reason(bool sys, bool lm);
|
||||
|
||||
int scmi_get_boot_device_offset(unsigned long *img_off);
|
||||
int scmi_get_boot_stage(u8 *stage);
|
||||
u8 scmi_get_imgset_sel(void);
|
||||
|
||||
#define is_voltage_mode(mode) (soc_target_voltage_mode() == (mode))
|
||||
|
||||
#endif
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
|
||||
#include <imx_container.h>
|
||||
|
||||
int ahab_auth_cntr_hdr(struct container_hdr *container, u16 length);
|
||||
void *ahab_auth_cntr_hdr(struct container_hdr *container, u16 length);
|
||||
int ahab_auth_release(void);
|
||||
int ahab_verify_cntr_image(struct boot_img_t *img, int image_index);
|
||||
|
||||
|
||||
15
arch/arm/include/asm/mach-imx/qb.h
Normal file
15
arch/arm/include/asm/mach-imx/qb.h
Normal file
@@ -0,0 +1,15 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0+ */
|
||||
/*
|
||||
* Copyright 2026 NXP
|
||||
*/
|
||||
|
||||
#ifndef __IMX_QB_H__
|
||||
#define __IMX_QB_H__
|
||||
|
||||
#include <stdbool.h>
|
||||
|
||||
bool imx_qb_check(void);
|
||||
int imx_qb(const char *ifname, const char *dev, bool save);
|
||||
void spl_imx_qb_save(void);
|
||||
|
||||
#endif
|
||||
@@ -71,10 +71,38 @@ config CSF_SIZE
|
||||
Define the maximum size for Command Sequence File (CSF) binary
|
||||
this information is used to define the image boot data.
|
||||
|
||||
config IMX_QB
|
||||
bool "Support Quickboot flow for Synopsis DDR PHY on iMX platforms"
|
||||
default y
|
||||
depends on IMX94 || IMX95 || IMX952
|
||||
help
|
||||
Enable the logic for saving DDR training data from volatile
|
||||
memory to non-volatile storage. OEI uses the saved data to
|
||||
run Quickboot flow and skip re-training the DDR PHY.
|
||||
|
||||
config SPL_IMX_QB
|
||||
bool "Run qb save during SPL"
|
||||
depends on SPL && IMX_QB
|
||||
help
|
||||
Automatically save DDR training data (Quickboot data)
|
||||
to current boot device when needed (when OEI runs Training
|
||||
flow and saves qb data to volatile memory).
|
||||
|
||||
config CMD_IMX_QB
|
||||
bool "Support the 'qb' command"
|
||||
default y
|
||||
depends on IMX_QB
|
||||
help
|
||||
Enable qb command to write/erase DDR quick boot training
|
||||
data to/from a chosen boot device. Using 'qb save/erase'
|
||||
without arguments implies using the current boot device's
|
||||
first bootable partition (e.g. boot0 for eMMC). For use in
|
||||
uuu scripts, the boot device must be specified explicitly.
|
||||
|
||||
config CMD_BMODE
|
||||
bool "Support the 'bmode' command"
|
||||
default y
|
||||
depends on ARCH_IMX8M || ARCH_MX7 || ARCH_MX6 || ARCH_MX5
|
||||
depends on IMX95 || ARCH_IMX8M || ARCH_MX7 || ARCH_MX6 || ARCH_MX5
|
||||
help
|
||||
This enables the 'bmode' (bootmode) command for forcing
|
||||
a boot from specific media.
|
||||
|
||||
@@ -80,6 +80,7 @@ endif
|
||||
ifneq ($(CONFIG_XPL_BUILD),y)
|
||||
obj-$(CONFIG_CMD_BMODE) += cmd_bmode.o
|
||||
obj-$(CONFIG_CMD_HDMIDETECT) += cmd_hdmidet.o
|
||||
obj-$(CONFIG_CMD_IMX_QB) += cmd_qb.o
|
||||
obj-$(CONFIG_CMD_DEKBLOB) += cmd_dek.o
|
||||
obj-$(CONFIG_CMD_NANDBCB) += cmd_nandbcb.o
|
||||
endif
|
||||
|
||||
102
arch/arm/mach-imx/cmd_qb.c
Normal file
102
arch/arm/mach-imx/cmd_qb.c
Normal file
@@ -0,0 +1,102 @@
|
||||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/**
|
||||
* Copyright 2024-2026 NXP
|
||||
*/
|
||||
#include <command.h>
|
||||
#include <spl.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include <asm/mach-imx/boot_mode.h>
|
||||
#include <asm/mach-imx/sys_proto.h>
|
||||
#include <asm/mach-imx/qb.h>
|
||||
|
||||
static void parse_qb_args(int argc, char * const argv[],
|
||||
const char **ifname, const char **dev)
|
||||
{
|
||||
/* qb save/erase -> use boot device */
|
||||
if (argc < 2) {
|
||||
*ifname = "auto";
|
||||
return;
|
||||
}
|
||||
|
||||
*ifname = argv[1];
|
||||
|
||||
if (argc == 3)
|
||||
*dev = argv[2];
|
||||
}
|
||||
|
||||
static int do_qb(struct cmd_tbl *cmdtp, int flag, int argc,
|
||||
char * const argv[], bool save)
|
||||
{
|
||||
const char *ifname, *dev;
|
||||
|
||||
parse_qb_args(argc, argv, &ifname, &dev);
|
||||
|
||||
if (imx_qb(ifname, dev, save))
|
||||
return CMD_RET_FAILURE;
|
||||
|
||||
return CMD_RET_SUCCESS;
|
||||
}
|
||||
|
||||
static int do_qb_check(struct cmd_tbl *cmdtp, int flag,
|
||||
int argc, char * const argv[])
|
||||
{
|
||||
return imx_qb_check() ? CMD_RET_SUCCESS : CMD_RET_FAILURE;
|
||||
}
|
||||
|
||||
static int do_qb_save(struct cmd_tbl *cmdtp, int flag,
|
||||
int argc, char * const argv[])
|
||||
{
|
||||
return do_qb(cmdtp, flag, argc, argv, true);
|
||||
}
|
||||
|
||||
static int do_qb_erase(struct cmd_tbl *cmdtp, int flag,
|
||||
int argc, char * const argv[])
|
||||
{
|
||||
return do_qb(cmdtp, flag, argc, argv, false);
|
||||
}
|
||||
|
||||
static struct cmd_tbl cmd_qb[] = {
|
||||
U_BOOT_CMD_MKENT(check, 1, 1, do_qb_check, "", ""),
|
||||
U_BOOT_CMD_MKENT(save, 3, 1, do_qb_save, "", ""),
|
||||
U_BOOT_CMD_MKENT(erase, 3, 1, do_qb_erase, "", ""),
|
||||
};
|
||||
|
||||
static int do_qbops(struct cmd_tbl *cmdtp, int flag, int argc,
|
||||
char *const argv[])
|
||||
{
|
||||
struct cmd_tbl *cp;
|
||||
|
||||
cp = find_cmd_tbl(argv[1], cmd_qb, ARRAY_SIZE(cmd_qb));
|
||||
|
||||
/* Drop the qb command */
|
||||
argc--;
|
||||
argv++;
|
||||
|
||||
if (!cp) {
|
||||
printf("qb: %s: command not found\n", argv[0] ? argv[0] : " ");
|
||||
return CMD_RET_USAGE;
|
||||
}
|
||||
|
||||
if (argc > cp->maxargs) {
|
||||
printf("qb %s: too many arguments: %d > %d\n", cp->name,
|
||||
argc - 1, cp->maxargs - 1);
|
||||
return CMD_RET_USAGE;
|
||||
}
|
||||
|
||||
if (flag == CMD_FLAG_REPEAT && !cmd_is_repeatable(cp)) {
|
||||
printf("qb %s: repeat flag set but command is not repeatable\n",
|
||||
cp->name);
|
||||
return CMD_RET_SUCCESS;
|
||||
}
|
||||
|
||||
return cp->cmd(cmdtp, flag, argc, argv);
|
||||
}
|
||||
|
||||
U_BOOT_CMD(
|
||||
qb, 4, 1, do_qbops,
|
||||
"DDR Quick Boot sub system",
|
||||
"check - check if quick boot data is stored in mem by training flow\n"
|
||||
"qb save [interface] [dev] - save quick boot data in NVM => trigger quick boot flow\n"
|
||||
"qb erase [interface] [dev] - erase quick boot data from NVM => trigger training flow\n"
|
||||
);
|
||||
@@ -255,7 +255,7 @@ static void display_ahab_auth_ind(u32 event)
|
||||
printf("%s\n", ele_ind_str[get_idx(ele_ind, resp_ind, ARRAY_SIZE(ele_ind))]);
|
||||
}
|
||||
|
||||
int ahab_auth_cntr_hdr(struct container_hdr *container, u16 length)
|
||||
void *ahab_auth_cntr_hdr(struct container_hdr *container, u16 length)
|
||||
{
|
||||
int err;
|
||||
u32 resp;
|
||||
@@ -271,9 +271,10 @@ int ahab_auth_cntr_hdr(struct container_hdr *container, u16 length)
|
||||
printf("Authenticate container hdr failed, return %d, resp 0x%x\n",
|
||||
err, resp);
|
||||
display_ahab_auth_ind(resp);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return err;
|
||||
return (void *)IMG_CONTAINER_BASE; /* Return authenticated container header */
|
||||
}
|
||||
|
||||
int ahab_auth_release(void)
|
||||
@@ -327,7 +328,6 @@ int authenticate_os_container(ulong addr)
|
||||
{
|
||||
struct container_hdr *phdr;
|
||||
int i, ret = 0;
|
||||
int err;
|
||||
u16 length;
|
||||
struct boot_img_t *img;
|
||||
unsigned long s, e;
|
||||
@@ -357,8 +357,8 @@ int authenticate_os_container(ulong addr)
|
||||
|
||||
debug("container length %u\n", length);
|
||||
|
||||
err = ahab_auth_cntr_hdr(phdr, length);
|
||||
if (err) {
|
||||
phdr = ahab_auth_cntr_hdr(phdr, length);
|
||||
if (!phdr) {
|
||||
ret = -EIO;
|
||||
goto exit;
|
||||
}
|
||||
@@ -367,7 +367,7 @@ int authenticate_os_container(ulong addr)
|
||||
|
||||
/* Copy images to dest address */
|
||||
for (i = 0; i < phdr->num_images; i++) {
|
||||
img = (struct boot_img_t *)(addr +
|
||||
img = (struct boot_img_t *)((ulong)phdr +
|
||||
sizeof(struct container_hdr) +
|
||||
i * sizeof(struct boot_img_t));
|
||||
|
||||
|
||||
@@ -240,6 +240,14 @@ static unsigned long get_boot_device_offset(void *dev, int dev_type)
|
||||
return offset;
|
||||
}
|
||||
|
||||
#if IS_ENABLED(CONFIG_ARCH_IMX9) && IS_ENABLED(CONFIG_SCMI_FIRMWARE)
|
||||
int ret;
|
||||
ret = scmi_get_boot_device_offset(&offset);
|
||||
if (!ret)
|
||||
return offset;
|
||||
/* fall back to boot from primary set if get rom passover failed */
|
||||
#endif
|
||||
|
||||
sec_boot = check_secondary_cnt_set(&sec_set_off);
|
||||
if (sec_boot)
|
||||
printf("Secondary set selected\n");
|
||||
@@ -366,10 +374,17 @@ int spl_mmc_emmc_boot_partition(struct mmc *mmc)
|
||||
|
||||
part = EXT_CSD_EXTRACT_BOOT_PART(mmc->part_config);
|
||||
if (part == EMMC_BOOT_PART_BOOT1 || part == EMMC_BOOT_PART_BOOT2) {
|
||||
unsigned long sec_set_off = 0;
|
||||
bool sec_boot = false;
|
||||
|
||||
#if IS_ENABLED(CONFIG_ARCH_IMX9) && IS_ENABLED(CONFIG_SCMI_FIRMWARE)
|
||||
u8 stage;
|
||||
int ret;
|
||||
ret = scmi_get_boot_stage(&stage);
|
||||
if (!ret)
|
||||
sec_boot = (stage == 0x9);
|
||||
#else
|
||||
unsigned long sec_set_off = 0;
|
||||
sec_boot = check_secondary_cnt_set(&sec_set_off);
|
||||
#endif
|
||||
if (sec_boot)
|
||||
part = (part == EMMC_BOOT_PART_BOOT1) ? EMMC_HWPART_BOOT2 : EMMC_HWPART_BOOT1;
|
||||
} else if (part == EMMC_BOOT_PART_USER) {
|
||||
|
||||
@@ -28,7 +28,7 @@ DECLARE_GLOBAL_DATA_PTR;
|
||||
#define AHAB_HASH_TYPE_MASK 0x00000700
|
||||
#define AHAB_HASH_TYPE_SHA256 0
|
||||
|
||||
int ahab_auth_cntr_hdr(struct container_hdr *container, u16 length)
|
||||
void *ahab_auth_cntr_hdr(struct container_hdr *container, u16 length)
|
||||
{
|
||||
int err;
|
||||
|
||||
@@ -37,10 +37,12 @@ int ahab_auth_cntr_hdr(struct container_hdr *container, u16 length)
|
||||
|
||||
err = sc_seco_authenticate(-1, SC_SECO_AUTH_CONTAINER,
|
||||
SECO_LOCAL_SEC_SEC_SECURE_RAM_BASE);
|
||||
if (err)
|
||||
if (err) {
|
||||
printf("Authenticate container hdr failed, return %d\n", err);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return err;
|
||||
return (void *)SEC_SECURE_RAM_BASE; /* Return authenticated container header */
|
||||
}
|
||||
|
||||
int ahab_auth_release(void)
|
||||
@@ -126,7 +128,7 @@ int authenticate_os_container(ulong addr)
|
||||
{
|
||||
struct container_hdr *phdr;
|
||||
int i, ret = 0;
|
||||
int err;
|
||||
__maybe_unused int err;
|
||||
u16 length;
|
||||
struct boot_img_t *img;
|
||||
unsigned long s, e;
|
||||
@@ -159,15 +161,15 @@ int authenticate_os_container(ulong addr)
|
||||
|
||||
debug("container length %u\n", length);
|
||||
|
||||
err = ahab_auth_cntr_hdr(phdr, length);
|
||||
if (err) {
|
||||
phdr = ahab_auth_cntr_hdr(phdr, length);
|
||||
if (!phdr) {
|
||||
ret = -EIO;
|
||||
goto exit;
|
||||
}
|
||||
|
||||
/* Copy images to dest address */
|
||||
for (i = 0; i < phdr->num_images; i++) {
|
||||
img = (struct boot_img_t *)(addr +
|
||||
img = (struct boot_img_t *)((ulong)phdr +
|
||||
sizeof(struct container_hdr) +
|
||||
i * sizeof(struct boot_img_t));
|
||||
|
||||
|
||||
@@ -79,11 +79,13 @@ config TARGET_IMX8MQ_PHANBELL
|
||||
bool "imx8mq_phanbell"
|
||||
select IMX8MQ
|
||||
select IMX8M_LPDDR4
|
||||
imply OF_UPSTREAM
|
||||
|
||||
config TARGET_IMX8MQ_REFORM2
|
||||
bool "imx8mq_reform2"
|
||||
select IMX8MQ
|
||||
select IMX8M_LPDDR4
|
||||
imply OF_UPSTREAM
|
||||
|
||||
config TARGET_IMX8MM_DATA_MODUL_EDM_SBC
|
||||
bool "Data Modul eDM SBC i.MX8M Mini"
|
||||
@@ -308,6 +310,7 @@ config TARGET_PICO_IMX8MQ
|
||||
bool "Support Technexion Pico iMX8MQ"
|
||||
select IMX8MQ
|
||||
select IMX8M_LPDDR4
|
||||
imply OF_UPSTREAM
|
||||
|
||||
config TARGET_IMX8MN_VAR_SOM
|
||||
bool "Variscite imx8mn_var_som"
|
||||
@@ -324,6 +327,7 @@ config TARGET_KONTRON_PITX_IMX8M
|
||||
bool "Support Kontron pITX-imx8m"
|
||||
select IMX8MQ
|
||||
select IMX8M_LPDDR4
|
||||
imply OF_UPSTREAM
|
||||
|
||||
config TARGET_TORADEX_SMARC_IMX8MP
|
||||
bool "Support Toradex SMARC iMX8M Plus module"
|
||||
@@ -426,6 +430,7 @@ config TARGET_LIBREM5
|
||||
select IMX8MQ
|
||||
select SUPPORT_SPL
|
||||
select IMX8M_LPDDR4
|
||||
imply OF_UPSTREAM
|
||||
|
||||
endchoice
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# SPDX-License-Identifier: GPL-2.0+
|
||||
#
|
||||
# Copyright 2022 NXP
|
||||
# Copyright 2022,2026 NXP
|
||||
|
||||
obj-y += lowlevel_init.o
|
||||
|
||||
@@ -12,4 +12,6 @@ endif
|
||||
|
||||
ifneq ($(CONFIG_SPL_BUILD),y)
|
||||
obj-y += imx_bootaux.o
|
||||
endif
|
||||
endif
|
||||
|
||||
obj-$(CONFIG_$(PHASE_)IMX_QB) += qb.o
|
||||
|
||||
@@ -478,6 +478,7 @@ u32 get_clk_src_rate(enum ccm_clk_src source)
|
||||
switch (source) {
|
||||
case ARM_PLL_CLK:
|
||||
ctrl = readl(&ana_regs->arm_pll.ctrl.reg);
|
||||
break;
|
||||
case AUDIO_PLL_CLK:
|
||||
ctrl = readl(&ana_regs->audio_pll.ctrl.reg);
|
||||
break;
|
||||
|
||||
403
arch/arm/mach-imx/imx9/qb.c
Normal file
403
arch/arm/mach-imx/imx9/qb.c
Normal file
@@ -0,0 +1,403 @@
|
||||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/**
|
||||
* Copyright 2024-2026 NXP
|
||||
*/
|
||||
#include <dm/device-internal.h>
|
||||
#include <dm/uclass.h>
|
||||
#include <errno.h>
|
||||
#include <imx_container.h>
|
||||
#include <linux/bitfield.h>
|
||||
#include <mmc.h>
|
||||
#include <spi_flash.h>
|
||||
#include <spl.h>
|
||||
#include <stdlib.h>
|
||||
#include <u-boot/crc.h>
|
||||
|
||||
#include <asm/arch/ddr.h>
|
||||
#include <asm/mach-imx/boot_mode.h>
|
||||
#include <asm/mach-imx/sys_proto.h>
|
||||
|
||||
#define QB_STATE_LOAD_SIZE SZ_64K
|
||||
|
||||
#define BLK_DEV 0
|
||||
#define SPI_DEV 1
|
||||
|
||||
#define IMG_FLAGS_IMG_TYPE_MASK 0xF
|
||||
#define IMG_FLAGS_IMG_TYPE(x) FIELD_GET(IMG_FLAGS_IMG_TYPE_MASK, (x))
|
||||
|
||||
#define IMG_TYPE_DDR_TDATA_DUMMY 0xD /* dummy DDR training data image */
|
||||
|
||||
static const struct {
|
||||
const char *ifname;
|
||||
const char *dev;
|
||||
} imx_boot_devs[] = {
|
||||
[BOOT_DEVICE_MMC1] = { "mmc", "0" },
|
||||
[BOOT_DEVICE_MMC2] = { "mmc", "1" },
|
||||
[BOOT_DEVICE_SPI] = { "spi", "" },
|
||||
};
|
||||
|
||||
static int imx_qb_get_board_boot_device(void)
|
||||
{
|
||||
switch (get_boot_device()) {
|
||||
case SD1_BOOT:
|
||||
case MMC1_BOOT:
|
||||
return BOOT_DEVICE_MMC1;
|
||||
case SD2_BOOT:
|
||||
case MMC2_BOOT:
|
||||
return BOOT_DEVICE_MMC2;
|
||||
case USB_BOOT:
|
||||
return BOOT_DEVICE_BOARD;
|
||||
case QSPI_BOOT:
|
||||
return BOOT_DEVICE_SPI;
|
||||
default:
|
||||
return BOOT_DEVICE_NONE;
|
||||
}
|
||||
}
|
||||
|
||||
static int imx_qb_get_boot_dev_str(const char **ifname, const char **dev)
|
||||
{
|
||||
int boot_dev;
|
||||
|
||||
if (IS_ENABLED(CONFIG_XPL_BUILD))
|
||||
boot_dev = spl_boot_device();
|
||||
else
|
||||
boot_dev = imx_qb_get_board_boot_device();
|
||||
|
||||
if (boot_dev == BOOT_DEVICE_NONE || boot_dev == BOOT_DEVICE_BOARD)
|
||||
return -EINVAL;
|
||||
|
||||
*ifname = imx_boot_devs[boot_dev].ifname;
|
||||
*dev = imx_boot_devs[boot_dev].dev;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool imx_qb_check(void)
|
||||
{
|
||||
struct ddrphy_qb_state *qb_state;
|
||||
u32 size, crc;
|
||||
|
||||
/**
|
||||
* Ensure CRC is not empty, the reason is that
|
||||
* the data is invalidated after first save run
|
||||
* or after it is overwritten.
|
||||
*/
|
||||
qb_state = (struct ddrphy_qb_state *)CONFIG_QB_SAVED_STATE_BASE;
|
||||
size = sizeof(struct ddrphy_qb_state) - sizeof(qb_state->crc);
|
||||
crc = crc32(0, (u8 *)qb_state->mac, size);
|
||||
|
||||
if (!qb_state->crc || crc != qb_state->crc)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static int imx_qb_get_blk_boot_part(const char * const ifname,
|
||||
const char * const dev,
|
||||
struct blk_desc **bdesc)
|
||||
{
|
||||
struct udevice *udev;
|
||||
struct disk_partition info;
|
||||
struct mmc *mmc;
|
||||
int part;
|
||||
int ret;
|
||||
|
||||
if (!IS_ENABLED(CONFIG_XPL_BUILD))
|
||||
return blk_get_device_part_str(ifname, dev, bdesc, &info, 1);
|
||||
|
||||
/**
|
||||
* SPL does not have access to part_get_info,
|
||||
* so get the partition manually. Currently only
|
||||
* supporting MMC devices.
|
||||
*/
|
||||
ret = blk_get_device_by_str(ifname, dev, bdesc);
|
||||
|
||||
if (ret < 0)
|
||||
return -ENODEV;
|
||||
|
||||
if ((*bdesc)->uclass_id != UCLASS_MMC)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
udev = dev_get_parent((*bdesc)->bdev);
|
||||
mmc = mmc_get_mmc_dev(udev);
|
||||
|
||||
if (IS_SD(mmc) || mmc->part_config == MMCPART_NOAVAILABLE)
|
||||
return 0;
|
||||
|
||||
part = EXT_CSD_EXTRACT_BOOT_PART(mmc->part_config);
|
||||
|
||||
if (part == EMMC_BOOT_PART_BOOT1 || part == EMMC_BOOT_PART_BOOT2)
|
||||
return part;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static ulong imx_qb_get_boot_device_offset(void *dev, int dev_type)
|
||||
{
|
||||
struct blk_desc *bdesc;
|
||||
|
||||
switch (dev_type) {
|
||||
case BLK_DEV:
|
||||
bdesc = dev;
|
||||
|
||||
/* eMMC boot partition */
|
||||
if (bdesc->hwpart)
|
||||
return CONTAINER_HDR_EMMC_OFFSET;
|
||||
|
||||
return CONTAINER_HDR_MMCSD_OFFSET;
|
||||
case SPI_DEV:
|
||||
return CONTAINER_HDR_QSPI_OFFSET;
|
||||
default:
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
}
|
||||
|
||||
static int imx_qb_parse_container(void *addr, u64 *qb_data_off)
|
||||
{
|
||||
struct container_hdr *phdr;
|
||||
struct boot_img_t *img_entry;
|
||||
u32 img_type, img_end;
|
||||
int i;
|
||||
|
||||
phdr = addr;
|
||||
if (phdr->tag != 0x87 || (phdr->version != 0x0 && phdr->version != 0x2))
|
||||
return -EINVAL;
|
||||
|
||||
img_entry = addr + sizeof(struct container_hdr);
|
||||
for (i = 0; i < phdr->num_images; i++) {
|
||||
img_type = IMG_FLAGS_IMG_TYPE(img_entry->hab_flags);
|
||||
if (img_type == IMG_TYPE_DDR_TDATA_DUMMY && img_entry->size == 0) {
|
||||
/* Image entry pointing to DDR Training Data */
|
||||
*qb_data_off = img_entry->offset;
|
||||
return 0;
|
||||
}
|
||||
|
||||
img_end = img_entry->offset + img_entry->size;
|
||||
if (i + 1 < phdr->num_images) {
|
||||
img_entry++;
|
||||
if (img_end + QB_STATE_LOAD_SIZE == img_entry->offset) {
|
||||
/* hole detected */
|
||||
*qb_data_off = img_end;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
static int imx_qb_get_dev_qbdata_offset(void *dev, int dev_type, ulong offset,
|
||||
u64 *qbdata_offset)
|
||||
{
|
||||
struct blk_desc *bdesc;
|
||||
u8 *buf;
|
||||
ulong count;
|
||||
int ret;
|
||||
|
||||
buf = malloc(CONTAINER_HDR_ALIGNMENT);
|
||||
if (!buf)
|
||||
return -ENOMEM;
|
||||
|
||||
switch (dev_type) {
|
||||
case BLK_DEV:
|
||||
bdesc = dev;
|
||||
|
||||
count = blk_dread(bdesc,
|
||||
offset / bdesc->blksz,
|
||||
CONTAINER_HDR_ALIGNMENT / bdesc->blksz,
|
||||
buf);
|
||||
if (count == 0) {
|
||||
printf("Read container image from MMC/SD failed\n");
|
||||
ret = -EIO;
|
||||
goto imx_qb_get_dev_qbdata_offset_exit;
|
||||
}
|
||||
break;
|
||||
case SPI_DEV:
|
||||
if (!CONFIG_IS_ENABLED(SPI)) {
|
||||
ret = -EOPNOTSUPP;
|
||||
goto imx_qb_get_dev_qbdata_offset_exit;
|
||||
}
|
||||
|
||||
ret = spi_flash_read_dm(dev, offset,
|
||||
CONTAINER_HDR_ALIGNMENT, buf);
|
||||
if (ret) {
|
||||
printf("Read container header from SPI failed\n");
|
||||
ret = -EIO;
|
||||
goto imx_qb_get_dev_qbdata_offset_exit;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
printf("Support for device %d not enabled\n", dev_type);
|
||||
ret = -EOPNOTSUPP;
|
||||
goto imx_qb_get_dev_qbdata_offset_exit;
|
||||
}
|
||||
|
||||
ret = imx_qb_parse_container(buf, qbdata_offset);
|
||||
|
||||
imx_qb_get_dev_qbdata_offset_exit:
|
||||
free(buf);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int imx_qb_get_qbdata_offset(void *dev, int dev_type,
|
||||
u64 *qbdata_offset)
|
||||
{
|
||||
u64 cont_offset;
|
||||
int ret, i;
|
||||
|
||||
cont_offset = imx_qb_get_boot_device_offset(dev, dev_type);
|
||||
|
||||
for (i = 0; i < 3; i++) {
|
||||
ret = imx_qb_get_dev_qbdata_offset(dev, dev_type, cont_offset,
|
||||
qbdata_offset);
|
||||
if (ret == 0) {
|
||||
(*qbdata_offset) += cont_offset;
|
||||
break;
|
||||
}
|
||||
|
||||
cont_offset += CONTAINER_HDR_ALIGNMENT;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int imx_qb_blk(const char * const ifname,
|
||||
const char * const dev, bool save)
|
||||
{
|
||||
struct blk_desc *bdesc;
|
||||
u64 offset;
|
||||
u64 load_size;
|
||||
int part, orig_part;
|
||||
int ret;
|
||||
|
||||
part = imx_qb_get_blk_boot_part(ifname, dev, &bdesc);
|
||||
|
||||
if (part < 0) {
|
||||
printf("Failed to find %s %s\n", ifname, dev);
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
orig_part = bdesc->hwpart;
|
||||
|
||||
ret = blk_dselect_hwpart(bdesc, part);
|
||||
if (ret && ret != -EMEDIUMTYPE) {
|
||||
printf("Failed to select hwpart, ret %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = imx_qb_get_qbdata_offset(bdesc, BLK_DEV, &offset);
|
||||
if (ret) {
|
||||
printf("get_qbdata_offset failed, ret = %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
offset /= bdesc->blksz;
|
||||
load_size = QB_STATE_LOAD_SIZE / bdesc->blksz;
|
||||
|
||||
if (save) {
|
||||
/* QB data is stored in DDR -> can use it as buf */
|
||||
ret = blk_dwrite(bdesc, offset, load_size,
|
||||
(const void *)CONFIG_QB_SAVED_STATE_BASE);
|
||||
} else {
|
||||
/* erase */
|
||||
ret = blk_derase(bdesc, offset, load_size);
|
||||
}
|
||||
|
||||
if (!ret) {
|
||||
printf("Failed to write to block device\n");
|
||||
return -EIO;
|
||||
}
|
||||
|
||||
/* Return to original partition */
|
||||
ret = blk_dselect_hwpart(bdesc, orig_part);
|
||||
if (ret && ret != -EMEDIUMTYPE) {
|
||||
printf("Failed to select hwpart, ret %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int imx_qb_spi(bool save)
|
||||
{
|
||||
struct udevice *flash;
|
||||
u64 offset;
|
||||
int ret;
|
||||
|
||||
if (!CONFIG_IS_ENABLED(SPI)) {
|
||||
printf("SPI not enabled\n");
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
|
||||
ret = uclass_first_device_err(UCLASS_SPI_FLASH, &flash);
|
||||
if (ret) {
|
||||
printf("SPI flash not found.\n");
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
ret = imx_qb_get_qbdata_offset(flash, SPI_DEV, &offset);
|
||||
if (ret) {
|
||||
printf("get_qbdata_offset failed, ret = %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = spi_flash_erase_dm(flash, offset, QB_STATE_LOAD_SIZE);
|
||||
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
if (!save)
|
||||
return 0;
|
||||
|
||||
/* QB data is stored in DDR -> can use it as buf */
|
||||
ret = spi_flash_write_dm(flash, offset,
|
||||
QB_STATE_LOAD_SIZE,
|
||||
(const void *)CONFIG_QB_SAVED_STATE_BASE);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
int imx_qb(const char *ifname, const char *dev, bool save)
|
||||
{
|
||||
int ret;
|
||||
|
||||
ret = 0;
|
||||
|
||||
/* Try to use boot device */
|
||||
if (!strcmp(ifname, "auto"))
|
||||
ret = imx_qb_get_boot_dev_str(&ifname, &dev);
|
||||
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
if (save && !imx_qb_check())
|
||||
return -EINVAL;
|
||||
|
||||
if (!strcmp(ifname, "spi"))
|
||||
ret = imx_qb_spi(save);
|
||||
else
|
||||
ret = imx_qb_blk(ifname, dev, save);
|
||||
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
if (!save)
|
||||
return 0;
|
||||
|
||||
/**
|
||||
* invalidate qb_state mem so that at next boot
|
||||
* the check function will fail and save won't happen
|
||||
*/
|
||||
memset((void *)CONFIG_QB_SAVED_STATE_BASE, 0,
|
||||
sizeof(struct ddrphy_qb_state));
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void spl_imx_qb_save(void)
|
||||
{
|
||||
/* Save QB data on current boot device */
|
||||
if (imx_qb("auto", "", true))
|
||||
printf("QB save failed\n");
|
||||
}
|
||||
@@ -310,6 +310,13 @@ static struct mm_region imx9_mem_map[] = {
|
||||
.attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) |
|
||||
PTE_BLOCK_NON_SHARE |
|
||||
PTE_BLOCK_PXN | PTE_BLOCK_UXN
|
||||
}, {
|
||||
/* QB data */
|
||||
.virt = CONFIG_QB_SAVED_STATE_BASE,
|
||||
.phys = CONFIG_QB_SAVED_STATE_BASE,
|
||||
.size = 0x200000UL, /* 2M */
|
||||
.attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) |
|
||||
PTE_BLOCK_OUTER_SHARE
|
||||
}, {
|
||||
/* empty entry to split table entry 5 if needed when TEEs are used */
|
||||
0,
|
||||
@@ -745,6 +752,46 @@ void build_info(void)
|
||||
puts("\n");
|
||||
}
|
||||
|
||||
int scmi_get_boot_device_offset(unsigned long *img_off)
|
||||
{
|
||||
int ret;
|
||||
rom_passover_t rom_data = {0};
|
||||
|
||||
ret = scmi_get_rom_data(&rom_data);
|
||||
if (!ret)
|
||||
*img_off = rom_data.img_ofs;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int scmi_get_boot_stage(u8 *stage)
|
||||
{
|
||||
int ret;
|
||||
rom_passover_t rom_data = {0};
|
||||
|
||||
ret = scmi_get_rom_data(&rom_data);
|
||||
if (!ret)
|
||||
*stage = rom_data.boot_stage;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
u8 scmi_get_imgset_sel(void)
|
||||
{
|
||||
rom_passover_t rdata = { 0 };
|
||||
int ret = scmi_get_rom_data(&rdata);
|
||||
|
||||
if (!ret)
|
||||
return rdata.img_set_sel;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int boot_mode_getprisec(void)
|
||||
{
|
||||
return !!scmi_get_imgset_sel();
|
||||
}
|
||||
|
||||
int arch_misc_init(void)
|
||||
{
|
||||
build_info();
|
||||
|
||||
@@ -198,26 +198,15 @@ static u32 get_cpu_variant_type(u32 type)
|
||||
bool npu_disable = !!(val & BIT(13));
|
||||
bool core1_disable = !!(val & BIT(15));
|
||||
u32 pack_9x9_fused = BIT(4) | BIT(5) | BIT(17) | BIT(19) | BIT(24);
|
||||
u32 nxp_recog = (val & GENMASK(23, 16)) >> 16;
|
||||
u32 speed = (val & GENMASK(11, 6)) >> 6;
|
||||
|
||||
/* For iMX91 */
|
||||
if (type == MXC_CPU_IMX91) {
|
||||
switch (nxp_recog) {
|
||||
case 0x9:
|
||||
case 0xA:
|
||||
if ((val2 & pack_9x9_fused) == pack_9x9_fused)
|
||||
type = MXC_CPU_IMX9111;
|
||||
break;
|
||||
case 0xD:
|
||||
case 0xE:
|
||||
type = MXC_CPU_IMX9121;
|
||||
break;
|
||||
case 0xF:
|
||||
case 0x10:
|
||||
type = MXC_CPU_IMX9101;
|
||||
break;
|
||||
default:
|
||||
break; /* 9131 as default */
|
||||
}
|
||||
|
||||
if (speed == 0xf) /* 800Mhz arm */
|
||||
type += 1;
|
||||
|
||||
return type;
|
||||
}
|
||||
|
||||
@@ -12,6 +12,54 @@
|
||||
|
||||
static struct fuse_entry_desc mx6_fuse_descs[] = {
|
||||
#if defined(CONFIG_MX6ULL)
|
||||
{MODULE_TSC, "/soc/bus@2000000/touchscreen@2040000", 0x430, 22},
|
||||
{MODULE_TSC, "/soc/bus@2000000/tsc@2040000", 0x430, 22},
|
||||
{MODULE_ADC2, "/soc/bus@2100000/adc@219c000", 0x430, 23},
|
||||
{MODULE_EPDC, "/soc/bus@2200000/epdc@228c000", 0x430, 24},
|
||||
{MODULE_ESAI, "/soc/bus@2000000/spba-bus@2000000/esai@2024000", 0x430, 25},
|
||||
{MODULE_FLEXCAN1, "/soc/bus@2000000/can@2090000", 0x430, 26},
|
||||
{MODULE_FLEXCAN2, "/soc/bus@2000000/can@2094000", 0x430, 27},
|
||||
{MODULE_SPDIF, "/soc/bus@2000000/spba-bus@2000000/spdif@2004000", 0x440, 2},
|
||||
{MODULE_EIM, "/soc/bus@2100000/memory-controller@21b8000", 0x440, 3},
|
||||
{MODULE_EIM, "/soc/bus@2100000/weim@21b8000", 0x440, 3},
|
||||
{MODULE_SD1, "/soc/bus@2100000/mmc@2190000", 0x440, 4},
|
||||
{MODULE_SD1, "/soc/bus@2100000/usdhc@2190000", 0x440, 4},
|
||||
{MODULE_SD2, "/soc/bus@2100000/mmc@2194000", 0x440, 5},
|
||||
{MODULE_SD2, "/soc/bus@2100000/usdhc@2194000", 0x440, 5},
|
||||
{MODULE_QSPI1, "/soc/bus@2100000/spi@21e0000", 0x440, 6},
|
||||
{MODULE_QSPI1, "/soc/bus@2100000/qspi@21e0000", 0x440, 6},
|
||||
{MODULE_GPMI, "/soc/nand-controller@1806000", 0x440, 7},
|
||||
{MODULE_APBHDMA, "/soc/dma-controller@1804000", 0x440, 7},
|
||||
{MODULE_APBHDMA, "/soc/dma-apbh@1804000", 0x440, 7},
|
||||
{MODULE_LCDIF, "/soc/bus@2100000/lcdif@21c8000", 0x440, 8},
|
||||
{MODULE_PXP, "/soc/bus@2100000/pxp@21cc000", 0x440, 9},
|
||||
{MODULE_CSI, "/soc/bus@2100000/csi@21c4000", 0x440, 10},
|
||||
{MODULE_ADC1, "/soc/bus@2100000/adc@2198000", 0x440, 11},
|
||||
{MODULE_ENET1, "/soc/bus@2100000/ethernet@2188000", 0x440, 12},
|
||||
{MODULE_ENET2, "/soc/bus@2000000/ethernet@20b4000", 0x440, 13},
|
||||
{MODULE_DCP, "/soc/bus@2200000/dcp@2280000", 0x440, 14},
|
||||
{MODULE_USB_OTG2, "/soc/bus@2100000/usb@2184200", 0x440, 15},
|
||||
{MODULE_SAI2, "/soc/bus@2000000/spba-bus@2000000/sai@202c000", 0x440, 24},
|
||||
{MODULE_SAI3, "/soc/bus@2000000/spba-bus@2000000/sai@2030000", 0x440, 24},
|
||||
{MODULE_DCP_CRYPTO, "/soc/bus@2200000/dcp@2280000", 0x440, 25},
|
||||
{MODULE_UART5, "/soc/bus@2100000/serial@21f4000", 0x440, 26},
|
||||
{MODULE_UART6, "/soc/bus@2100000/serial@21fc000", 0x440, 26},
|
||||
{MODULE_UART7, "/soc/bus@2000000/spba-bus@2000000/serial@2018000", 0x440, 26},
|
||||
{MODULE_UART8, "/soc/bus@2200000/serial@2288000", 0x440, 26},
|
||||
{MODULE_PWM5, "/soc/bus@2000000/pwm@20f0000", 0x440, 27},
|
||||
{MODULE_PWM6, "/soc/bus@2000000/pwm@20f4000", 0x440, 27},
|
||||
{MODULE_PWM7, "/soc/bus@2000000/pwm@20f8000", 0x440, 27},
|
||||
{MODULE_PWM8, "/soc/bus@2000000/pwm@20fc000", 0x440, 27},
|
||||
{MODULE_ECSPI3, "/soc/bus@2000000/spba-bus@2000000/spi@2010000", 0x440, 28},
|
||||
{MODULE_ECSPI3, "/soc/bus@2000000/spba-bus@2000000/ecspi@2010000", 0x440, 28},
|
||||
{MODULE_ECSPI4, "/soc/bus@2000000/spba-bus@2000000/spi@2014000", 0x440, 28},
|
||||
{MODULE_ECSPI4, "/soc/bus@2000000/spba-bus@2000000/ecspi@2014000", 0x440, 28},
|
||||
{MODULE_I2C3, "/soc/bus@2100000/i2c@21a8000", 0x440, 29},
|
||||
{MODULE_I2C4, "/soc/bus@2100000/i2c@21f8000", 0x440, 29},
|
||||
{MODULE_GPT2, "/soc/bus@2000000/timer@20e8000", 0x440, 30},
|
||||
{MODULE_GPT2, "/soc/bus@2000000/gpt@20e8000", 0x440, 30},
|
||||
{MODULE_EPIT2, "/soc/bus@2000000/epit@20d4000", 0x440, 31},
|
||||
|
||||
{MODULE_TSC, "/soc/aips-bus@2000000/tsc@2040000", 0x430, 22},
|
||||
{MODULE_ADC2, "/soc/aips-bus@2100000/adc@219c000", 0x430, 23},
|
||||
{MODULE_EPDC, "/soc/aips-bus@2200000/epdc@228c000", 0x430, 24},
|
||||
@@ -90,6 +138,55 @@ static struct fuse_entry_desc mx6_fuse_descs[] = {
|
||||
{MODULE_GPT2, "/soc/aips-bus@02000000/gpt@020e8000", 0x440, 30},
|
||||
{MODULE_EPIT2, "/soc/aips-bus@02000000/epit@020d4000", 0x440, 31},
|
||||
#elif defined(CONFIG_MX6UL)
|
||||
{MODULE_TSC, "/soc/bus@2000000/touchscreen@2040000", 0x430, 22},
|
||||
{MODULE_TSC, "/soc/bus@2000000/tsc@2040000", 0x430, 22},
|
||||
{MODULE_ADC2, "/soc/bus@2100000/adc@219c000", 0x430, 23},
|
||||
{MODULE_SIM1, "/soc/bus@2100000/sim@218c000", 0x430, 24},
|
||||
{MODULE_SIM2, "/soc/bus@2100000/sim@21b4000", 0x430, 25},
|
||||
{MODULE_FLEXCAN1, "/soc/bus@2000000/can@2090000", 0x430, 26},
|
||||
{MODULE_FLEXCAN2, "/soc/bus@2000000/can@2094000", 0x430, 27},
|
||||
{MODULE_SPDIF, "/soc/bus@2000000/spba-bus@2000000/spdif@2004000", 0x440, 2},
|
||||
{MODULE_EIM, "/soc/bus@2100000/memory-controller@21b8000", 0x440, 3},
|
||||
{MODULE_EIM, "/soc/bus@2100000/weim@21b8000", 0x440, 3},
|
||||
{MODULE_SD1, "/soc/bus@2100000/mmc@2190000", 0x440, 4},
|
||||
{MODULE_SD1, "/soc/bus@2100000/usdhc@2190000", 0x440, 4},
|
||||
{MODULE_SD2, "/soc/bus@2100000/mmc@2194000", 0x440, 5},
|
||||
{MODULE_SD2, "/soc/bus@2100000/usdhc@2194000", 0x440, 5},
|
||||
{MODULE_QSPI1, "/soc/bus@2100000/spi@21e0000", 0x440, 6},
|
||||
{MODULE_QSPI1, "/soc/bus@2100000/qspi@21e0000", 0x440, 6},
|
||||
{MODULE_GPMI, "/soc/nand-controller@1806000", 0x440, 7},
|
||||
{MODULE_APBHDMA, "/soc/dma-controller@1804000", 0x440, 7},
|
||||
{MODULE_APBHDMA, "/soc/dma-apbh@1804000", 0x440, 7},
|
||||
{MODULE_LCDIF, "/soc/bus@2100000/lcdif@21c8000", 0x440, 8},
|
||||
{MODULE_PXP, "/soc/bus@2100000/pxp@21cc000", 0x440, 9},
|
||||
{MODULE_CSI, "/soc/bus@2100000/csi@21c4000", 0x440, 10},
|
||||
{MODULE_ADC1, "/soc/bus@2100000/adc@2198000", 0x440, 11},
|
||||
{MODULE_ENET1, "/soc/bus@2100000/ethernet@2188000", 0x440, 12},
|
||||
{MODULE_ENET2, "/soc/bus@2000000/ethernet@20b4000", 0x440, 13},
|
||||
{MODULE_CAAM, "/soc/bus@2100000/crypto@2140000", 0x440, 14},
|
||||
{MODULE_CAAM, "/soc/bus@2100000/caam@2140000", 0x440, 14},
|
||||
{MODULE_USB_OTG2, "/soc/bus@2100000/usb@2184200", 0x440, 15},
|
||||
{MODULE_SAI2, "/soc/bus@2000000/spba-bus@2000000/sai@202c000", 0x440, 24},
|
||||
{MODULE_SAI3, "/soc/bus@2000000/spba-bus@2000000/sai@2030000", 0x440, 24},
|
||||
{MODULE_BEE, "/soc/bus@2000000/bee@2044000", 0x440, 25},
|
||||
{MODULE_UART5, "/soc/bus@2100000/serial@21f4000", 0x440, 26},
|
||||
{MODULE_UART6, "/soc/bus@2100000/serial@21fc000", 0x440, 26},
|
||||
{MODULE_UART7, "/soc/bus@2000000/spba-bus@2000000/serial@2018000", 0x440, 26},
|
||||
{MODULE_UART8, "/soc/bus@2000000/spba-bus@2000000/serial@2024000", 0x440, 26},
|
||||
{MODULE_PWM5, "/soc/bus@2000000/pwm@20f0000", 0x440, 27},
|
||||
{MODULE_PWM6, "/soc/bus@2000000/pwm@20f4000", 0x440, 27},
|
||||
{MODULE_PWM7, "/soc/bus@2000000/pwm@20f8000", 0x440, 27},
|
||||
{MODULE_PWM8, "/soc/bus@2000000/pwm@20fc000", 0x440, 27},
|
||||
{MODULE_ECSPI3, "/soc/bus@2000000/spba-bus@2000000/spi@2010000", 0x440, 28},
|
||||
{MODULE_ECSPI3, "/soc/bus@2000000/spba-bus@2000000/ecspi@2010000", 0x440, 28},
|
||||
{MODULE_ECSPI4, "/soc/bus@2000000/spba-bus@2000000/spi@2014000", 0x440, 28},
|
||||
{MODULE_ECSPI4, "/soc/bus@2000000/spba-bus@2000000/ecspi@2014000", 0x440, 28},
|
||||
{MODULE_I2C3, "/soc/bus@2100000/i2c@21a8000", 0x440, 29},
|
||||
{MODULE_I2C4, "/soc/bus@2100000/i2c@21f8000", 0x440, 29},
|
||||
{MODULE_GPT2, "/soc/bus@2000000/timer@20e8000", 0x440, 30},
|
||||
{MODULE_GPT2, "/soc/bus@2000000/gpt@20e8000", 0x440, 30},
|
||||
{MODULE_EPIT2, "/soc/bus@2000000/epit@20d4000", 0x440, 31},
|
||||
|
||||
{MODULE_TSC, "/soc/aips-bus@2000000/tsc@2040000", 0x430, 22},
|
||||
{MODULE_ADC2, "/soc/aips-bus@2100000/adc@219c000", 0x430, 23},
|
||||
{MODULE_SIM1, "/soc/aips-bus@2100000/sim@218c000", 0x430, 24},
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
* to decrypt an encrypted boot image.
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
#include <asm/io.h>
|
||||
#include <command.h>
|
||||
#include <fsl_sec.h>
|
||||
|
||||
@@ -266,9 +266,15 @@ int arch_misc_init(void)
|
||||
struct udevice *dev;
|
||||
int ret;
|
||||
|
||||
ret = uclass_first_device_err(UCLASS_MISC, &dev);
|
||||
if (ret)
|
||||
return ret;
|
||||
/*
|
||||
* The MUSB wrapper driver is bound as a MISC device, so probe here
|
||||
* to register the musb device early.
|
||||
*/
|
||||
if (IS_ENABLED(CONFIG_USB_MUSB_TI)) {
|
||||
ret = uclass_first_device_err(UCLASS_MISC, &dev);
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
|
||||
#if defined(CONFIG_DM_ETH) && defined(CONFIG_USB_ETHER)
|
||||
usb_ether_init();
|
||||
|
||||
@@ -61,20 +61,20 @@
|
||||
/* ID for STM32MP25x = Device Part Number (RPN) (bit31:0) */
|
||||
#define CPU_STM32MP257Cxx 0x00002000
|
||||
#define CPU_STM32MP255Cxx 0x00082000
|
||||
#define CPU_STM32MP253Cxx 0x000B300C
|
||||
#define CPU_STM32MP251Cxx 0x000B306D
|
||||
#define CPU_STM32MP253Cxx 0x000B2004
|
||||
#define CPU_STM32MP251Cxx 0x000B3065
|
||||
#define CPU_STM32MP257Axx 0x40002E00
|
||||
#define CPU_STM32MP255Axx 0x40082E00
|
||||
#define CPU_STM32MP253Axx 0x400B3E0C
|
||||
#define CPU_STM32MP251Axx 0x400B3E6D
|
||||
#define CPU_STM32MP253Axx 0x400B2E04
|
||||
#define CPU_STM32MP251Axx 0x400B3E65
|
||||
#define CPU_STM32MP257Fxx 0x80002000
|
||||
#define CPU_STM32MP255Fxx 0x80082000
|
||||
#define CPU_STM32MP253Fxx 0x800B300C
|
||||
#define CPU_STM32MP251Fxx 0x800B306D
|
||||
#define CPU_STM32MP253Fxx 0x800B2004
|
||||
#define CPU_STM32MP251Fxx 0x800B3065
|
||||
#define CPU_STM32MP257Dxx 0xC0002E00
|
||||
#define CPU_STM32MP255Dxx 0xC0082E00
|
||||
#define CPU_STM32MP253Dxx 0xC00B3E0C
|
||||
#define CPU_STM32MP251Dxx 0xC00B3E6D
|
||||
#define CPU_STM32MP253Dxx 0xC00B2E04
|
||||
#define CPU_STM32MP251Dxx 0xC00B3E65
|
||||
|
||||
/* return CPU_STMP32MP...Xxx constants */
|
||||
u32 get_cpu_type(void);
|
||||
|
||||
@@ -196,12 +196,14 @@ config TARGET_STMARK2
|
||||
select M54418
|
||||
|
||||
config TARGET_QEMU_M68K
|
||||
bool "Support QEMU m68k virt"
|
||||
select M68040
|
||||
imply CMD_DM
|
||||
help
|
||||
This target supports the QEMU m68k virtual machine (-M virt).
|
||||
It simulates a Motorola 68040 CPU with Goldfish peripherals.
|
||||
bool "Support QEMU m68k virt"
|
||||
select M68040
|
||||
select BOARD_EARLY_INIT_R
|
||||
select VIRTIO_MMIO
|
||||
imply CMD_DM
|
||||
help
|
||||
This target supports the QEMU m68k virtual machine (-M virt).
|
||||
It simulates a Motorola 68040 CPU with Goldfish peripherals.
|
||||
|
||||
endchoice
|
||||
|
||||
|
||||
@@ -23,18 +23,27 @@
|
||||
#define __raw_writew(w,addr) ((*(volatile u16 *) (addr)) = (w))
|
||||
#define __raw_writel(l,addr) ((*(volatile u32 *) (addr)) = (l))
|
||||
|
||||
#define readb(addr) in_8((volatile u8 *)(addr))
|
||||
#define writeb(b,addr) out_8((volatile u8 *)(addr), (b))
|
||||
#if !defined(__BIG_ENDIAN)
|
||||
#define readw(addr) (*(volatile u16 *) (addr))
|
||||
#define readl(addr) (*(volatile u32 *) (addr))
|
||||
#define writew(b,addr) ((*(volatile u16 *) (addr)) = (b))
|
||||
#define writel(b,addr) ((*(volatile u32 *) (addr)) = (b))
|
||||
#define readb(addr) in_8((volatile u8 *)(addr))
|
||||
#define writeb(b, addr) out_8((volatile u8 *)(addr), (b))
|
||||
#ifdef CONFIG_M680x0
|
||||
/*
|
||||
* For classic m68k these work the same way as Linux:
|
||||
* Read a little endian value, swap to the CPU endian.
|
||||
*/
|
||||
#define readw(addr) in_le16((volatile u16 *)(addr))
|
||||
#define readl(addr) in_le32((volatile u32 *)(addr))
|
||||
#define writew(b, addr) out_le16((volatile u16 *)(addr), (b))
|
||||
#define writel(b, addr) out_le32((volatile u32 *)(addr), (b))
|
||||
#else
|
||||
#define readw(addr) in_be16((volatile u16 *)(addr))
|
||||
#define readl(addr) in_be32((volatile u32 *)(addr))
|
||||
#define writew(b,addr) out_be16((volatile u16 *)(addr),(b))
|
||||
#define writel(b,addr) out_be32((volatile u32 *)(addr),(b))
|
||||
/*
|
||||
* For coldfire these read a big endian value and use it
|
||||
* as-is. This means that for little endian devices on the
|
||||
* bus like PCI device these won't work as expected currently.
|
||||
*/
|
||||
#define readw(addr) in_be16((volatile u16 *)(addr))
|
||||
#define readl(addr) in_be32((volatile u32 *)(addr))
|
||||
#define writew(b, addr) out_be16((volatile u16 *)(addr), (b))
|
||||
#define writel(b, addr) out_be32((volatile u32 *)(addr), (b))
|
||||
#endif
|
||||
|
||||
/*
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
*/
|
||||
|
||||
#include <dm.h>
|
||||
#include <ec_commands.h>
|
||||
#include <cros_ec.h>
|
||||
#include <init.h>
|
||||
#include <log.h>
|
||||
#include <spi_flash.h>
|
||||
|
||||
@@ -909,8 +909,10 @@ static const struct boot_mode board_boot_modes[] = {
|
||||
|
||||
int misc_init_r(void)
|
||||
{
|
||||
#if defined(CONFIG_VIDEO_IPUV3)
|
||||
gpio_request(RGB_BACKLIGHT_GP, "lvds backlight");
|
||||
gpio_request(LVDS_BACKLIGHT_GP, "lvds backlight");
|
||||
#endif
|
||||
gpio_request(GP_USB_OTG_PWR, "usbotg power");
|
||||
gpio_request(IMX_GPIO_NR(7, 12), "usbh1 hub reset");
|
||||
gpio_request(IMX_GPIO_NR(2, 2), "back");
|
||||
|
||||
@@ -778,7 +778,7 @@ static int sata_imx_remove(struct udevice *dev)
|
||||
return 0;
|
||||
}
|
||||
|
||||
struct ahci_ops sata_imx_ops = {
|
||||
static const struct ahci_ops sata_imx_ops = {
|
||||
.port_status = dwc_ahsata_port_status,
|
||||
.reset = dwc_ahsata_bus_reset,
|
||||
.scan = dwc_ahsata_scan,
|
||||
|
||||
@@ -14,9 +14,14 @@
|
||||
#include <asm/bootinfo.h>
|
||||
#include <asm/global_data.h>
|
||||
#include <asm/io.h>
|
||||
#include <dm.h>
|
||||
#include <dm/device-internal.h>
|
||||
#include <dm/lists.h>
|
||||
#include <dm/platdata.h>
|
||||
#include <dm/root.h>
|
||||
#include <linux/errno.h>
|
||||
#include <linux/sizes.h>
|
||||
#include <virtio_mmio.h>
|
||||
|
||||
DECLARE_GLOBAL_DATA_PTR;
|
||||
|
||||
@@ -25,6 +30,38 @@ static struct goldfish_rtc_plat rtc_plat;
|
||||
static struct goldfish_timer_plat timer_plat;
|
||||
static struct qemu_virt_ctrl_plat reset_plat;
|
||||
|
||||
#define VIRTIO_MMIO_NUM 128
|
||||
#define VIRTIO_MMIO_SZ 0x200
|
||||
|
||||
static struct virtio_mmio_plat virtio_mmio_plat[VIRTIO_MMIO_NUM];
|
||||
static char virtio_mmio_names[VIRTIO_MMIO_NUM][11];
|
||||
static phys_addr_t virtio_mmio_base;
|
||||
|
||||
static int create_virtio_mmios(void)
|
||||
{
|
||||
struct driver *drv;
|
||||
int i, ret;
|
||||
|
||||
if (!virtio_mmio_base)
|
||||
return -ENODEV;
|
||||
|
||||
drv = lists_driver_lookup_name("virtio-mmio");
|
||||
if (!drv)
|
||||
return -ENOENT;
|
||||
|
||||
for (i = 0; i < VIRTIO_MMIO_NUM; i++) {
|
||||
virtio_mmio_plat[i].base = virtio_mmio_base + (VIRTIO_MMIO_SZ * i);
|
||||
sprintf(virtio_mmio_names[i], "virtio-%d", i);
|
||||
|
||||
ret = device_bind(dm_root(), drv, virtio_mmio_names[i],
|
||||
&virtio_mmio_plat[i], ofnode_null(), NULL);
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Theoretical limit derivation:
|
||||
* Max Bootinfo Size (Standard Page) = 4096 bytes
|
||||
@@ -65,6 +102,9 @@ static void parse_bootinfo(void)
|
||||
case BI_VIRT_CTRL_BASE:
|
||||
reset_plat.reg = base;
|
||||
break;
|
||||
case BI_VIRT_VIRTIO_BASE:
|
||||
virtio_mmio_base = base;
|
||||
break;
|
||||
case BI_MEMCHUNK:
|
||||
gd->ram_size = record->data[1];
|
||||
break;
|
||||
@@ -80,6 +120,11 @@ int board_early_init_f(void)
|
||||
return 0;
|
||||
}
|
||||
|
||||
int board_early_init_r(void)
|
||||
{
|
||||
return create_virtio_mmios();
|
||||
}
|
||||
|
||||
int checkboard(void)
|
||||
{
|
||||
puts("Board: QEMU m68k virt\n");
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
Kontron pITX-imx8m Board
|
||||
M: Heiko Thiery <heiko.thiery@gmail.com>
|
||||
S: Maintained
|
||||
F: arch/arm/dts/imx8mq-kontron-pitx-imx8m*
|
||||
F: board/kontron/pitx_imx8m/*
|
||||
F: include/configs/kontron_pitx_imx8m.h
|
||||
F: configs/kontron_pitx_imx8m_defconfig
|
||||
|
||||
@@ -65,7 +65,7 @@ int power_init_board(void)
|
||||
* Enable DVS control through PMIC_STBY_REQ and
|
||||
* set B1_ENMODE=1 (ON by PMIC_ON_REQ=H)
|
||||
*/
|
||||
if (CONFIG_IS_ENABLED(IMX8M_VDD_SOC_850MV))
|
||||
if (IS_ENABLED(CONFIG_IMX8M_VDD_SOC_850MV))
|
||||
pmic_reg_write(dev, PCA9450_BUCK1OUT_DVS0, 0x14);
|
||||
else
|
||||
pmic_reg_write(dev, PCA9450_BUCK1OUT_DVS0, 0x1C);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* Copyright 2025 NXP
|
||||
* Copyright 2025-2026 NXP
|
||||
*/
|
||||
|
||||
#include <hang.h>
|
||||
@@ -14,6 +14,7 @@
|
||||
#include <asm/arch/sys_proto.h>
|
||||
#include <asm/mach-imx/boot_mode.h>
|
||||
#include <asm/mach-imx/ele_api.h>
|
||||
#include <asm/mach-imx/qb.h>
|
||||
|
||||
DECLARE_GLOBAL_DATA_PTR;
|
||||
|
||||
@@ -44,6 +45,9 @@ void spl_board_init(void)
|
||||
ret = ele_start_rng();
|
||||
if (ret)
|
||||
printf("Fail to start RNG: %d\n", ret);
|
||||
|
||||
if (IS_ENABLED(CONFIG_SPL_IMX_QB))
|
||||
spl_imx_qb_save();
|
||||
}
|
||||
|
||||
static void xspi_nor_reset(void)
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
#include <asm/gpio.h>
|
||||
#include <asm/mach-imx/boot_mode.h>
|
||||
#include <asm/mach-imx/ele_api.h>
|
||||
#include <asm/mach-imx/qb.h>
|
||||
#include <asm/sections.h>
|
||||
#include <hang.h>
|
||||
#include <init.h>
|
||||
@@ -44,6 +45,9 @@ void spl_board_init(void)
|
||||
ret = ele_start_rng();
|
||||
if (ret)
|
||||
printf("Fail to start RNG: %d\n", ret);
|
||||
|
||||
if (IS_ENABLED(CONFIG_SPL_IMX_QB))
|
||||
spl_imx_qb_save();
|
||||
}
|
||||
|
||||
static void xspi_nor_reset(void)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* Copyright 2025 NXP
|
||||
* Copyright 2025-2026 NXP
|
||||
*/
|
||||
|
||||
#include <hang.h>
|
||||
@@ -13,6 +13,7 @@
|
||||
#include <asm/arch/sys_proto.h>
|
||||
#include <asm/mach-imx/boot_mode.h>
|
||||
#include <asm/mach-imx/ele_api.h>
|
||||
#include <asm/mach-imx/qb.h>
|
||||
|
||||
DECLARE_GLOBAL_DATA_PTR;
|
||||
|
||||
@@ -41,6 +42,9 @@ void spl_board_init(void)
|
||||
ret = ele_start_rng();
|
||||
if (ret)
|
||||
printf("Fail to start RNG: %d\n", ret);
|
||||
|
||||
if (IS_ENABLED(CONFIG_SPL_IMX_QB))
|
||||
spl_imx_qb_save();
|
||||
}
|
||||
|
||||
void board_init_f(ulong dummy)
|
||||
|
||||
867
board/phytec/phycore_am62x/tifs-rm-cfg.yaml
Normal file
867
board/phytec/phycore_am62x/tifs-rm-cfg.yaml
Normal file
@@ -0,0 +1,867 @@
|
||||
# SPDX-License-Identifier: GPL-2.0+
|
||||
# Copyright (C) 2022-2026 Texas Instruments Incorporated - https://www.ti.com/
|
||||
#
|
||||
# Resource management configuration for AM62X
|
||||
#
|
||||
|
||||
---
|
||||
|
||||
tifs-rm-cfg:
|
||||
rm_boardcfg:
|
||||
rev:
|
||||
boardcfg_abi_maj: 0x0
|
||||
boardcfg_abi_min: 0x1
|
||||
host_cfg:
|
||||
subhdr:
|
||||
magic: 0x4C41
|
||||
size: 356
|
||||
host_cfg_entries:
|
||||
- # 1
|
||||
host_id: 12
|
||||
allowed_atype: 0x2A
|
||||
allowed_qos: 0xAAAA
|
||||
allowed_orderid: 0xAAAAAAAA
|
||||
allowed_priority: 0xAAAA
|
||||
allowed_sched_priority: 0xAA
|
||||
- # 2
|
||||
host_id: 30
|
||||
allowed_atype: 0x2A
|
||||
allowed_qos: 0xAAAA
|
||||
allowed_orderid: 0xAAAAAAAA
|
||||
allowed_priority: 0xAAAA
|
||||
allowed_sched_priority: 0xAA
|
||||
- # 3
|
||||
host_id: 36
|
||||
allowed_atype: 0x2A
|
||||
allowed_qos: 0xAAAA
|
||||
allowed_orderid: 0xAAAAAAAA
|
||||
allowed_priority: 0xAAAA
|
||||
allowed_sched_priority: 0xAA
|
||||
- # 4
|
||||
host_id: 0
|
||||
allowed_atype: 0
|
||||
allowed_qos: 0
|
||||
allowed_orderid: 0
|
||||
allowed_priority: 0
|
||||
allowed_sched_priority: 0
|
||||
- # 5
|
||||
host_id: 0
|
||||
allowed_atype: 0
|
||||
allowed_qos: 0
|
||||
allowed_orderid: 0
|
||||
allowed_priority: 0
|
||||
allowed_sched_priority: 0
|
||||
- # 6
|
||||
host_id: 0
|
||||
allowed_atype: 0
|
||||
allowed_qos: 0
|
||||
allowed_orderid: 0
|
||||
allowed_priority: 0
|
||||
allowed_sched_priority: 0
|
||||
- # 7
|
||||
host_id: 0
|
||||
allowed_atype: 0
|
||||
allowed_qos: 0
|
||||
allowed_orderid: 0
|
||||
allowed_priority: 0
|
||||
allowed_sched_priority: 0
|
||||
- # 8
|
||||
host_id: 0
|
||||
allowed_atype: 0
|
||||
allowed_qos: 0
|
||||
allowed_orderid: 0
|
||||
allowed_priority: 0
|
||||
allowed_sched_priority: 0
|
||||
- # 9
|
||||
host_id: 0
|
||||
allowed_atype: 0
|
||||
allowed_qos: 0
|
||||
allowed_orderid: 0
|
||||
allowed_priority: 0
|
||||
allowed_sched_priority: 0
|
||||
- # 10
|
||||
host_id: 0
|
||||
allowed_atype: 0
|
||||
allowed_qos: 0
|
||||
allowed_orderid: 0
|
||||
allowed_priority: 0
|
||||
allowed_sched_priority: 0
|
||||
- # 11
|
||||
host_id: 0
|
||||
allowed_atype: 0
|
||||
allowed_qos: 0
|
||||
allowed_orderid: 0
|
||||
allowed_priority: 0
|
||||
allowed_sched_priority: 0
|
||||
- # 12
|
||||
host_id: 0
|
||||
allowed_atype: 0
|
||||
allowed_qos: 0
|
||||
allowed_orderid: 0
|
||||
allowed_priority: 0
|
||||
allowed_sched_priority: 0
|
||||
- # 13
|
||||
host_id: 0
|
||||
allowed_atype: 0
|
||||
allowed_qos: 0
|
||||
allowed_orderid: 0
|
||||
allowed_priority: 0
|
||||
allowed_sched_priority: 0
|
||||
- # 14
|
||||
host_id: 0
|
||||
allowed_atype: 0
|
||||
allowed_qos: 0
|
||||
allowed_orderid: 0
|
||||
allowed_priority: 0
|
||||
allowed_sched_priority: 0
|
||||
- # 15
|
||||
host_id: 0
|
||||
allowed_atype: 0
|
||||
allowed_qos: 0
|
||||
allowed_orderid: 0
|
||||
allowed_priority: 0
|
||||
allowed_sched_priority: 0
|
||||
- # 16
|
||||
host_id: 0
|
||||
allowed_atype: 0
|
||||
allowed_qos: 0
|
||||
allowed_orderid: 0
|
||||
allowed_priority: 0
|
||||
allowed_sched_priority: 0
|
||||
- # 17
|
||||
host_id: 0
|
||||
allowed_atype: 0
|
||||
allowed_qos: 0
|
||||
allowed_orderid: 0
|
||||
allowed_priority: 0
|
||||
allowed_sched_priority: 0
|
||||
- # 18
|
||||
host_id: 0
|
||||
allowed_atype: 0
|
||||
allowed_qos: 0
|
||||
allowed_orderid: 0
|
||||
allowed_priority: 0
|
||||
allowed_sched_priority: 0
|
||||
- # 19
|
||||
host_id: 0
|
||||
allowed_atype: 0
|
||||
allowed_qos: 0
|
||||
allowed_orderid: 0
|
||||
allowed_priority: 0
|
||||
allowed_sched_priority: 0
|
||||
- # 20
|
||||
host_id: 0
|
||||
allowed_atype: 0
|
||||
allowed_qos: 0
|
||||
allowed_orderid: 0
|
||||
allowed_priority: 0
|
||||
allowed_sched_priority: 0
|
||||
- # 21
|
||||
host_id: 0
|
||||
allowed_atype: 0
|
||||
allowed_qos: 0
|
||||
allowed_orderid: 0
|
||||
allowed_priority: 0
|
||||
allowed_sched_priority: 0
|
||||
- # 22
|
||||
host_id: 0
|
||||
allowed_atype: 0
|
||||
allowed_qos: 0
|
||||
allowed_orderid: 0
|
||||
allowed_priority: 0
|
||||
allowed_sched_priority: 0
|
||||
- # 23
|
||||
host_id: 0
|
||||
allowed_atype: 0
|
||||
allowed_qos: 0
|
||||
allowed_orderid: 0
|
||||
allowed_priority: 0
|
||||
allowed_sched_priority: 0
|
||||
- # 24
|
||||
host_id: 0
|
||||
allowed_atype: 0
|
||||
allowed_qos: 0
|
||||
allowed_orderid: 0
|
||||
allowed_priority: 0
|
||||
allowed_sched_priority: 0
|
||||
- # 25
|
||||
host_id: 0
|
||||
allowed_atype: 0
|
||||
allowed_qos: 0
|
||||
allowed_orderid: 0
|
||||
allowed_priority: 0
|
||||
allowed_sched_priority: 0
|
||||
- # 26
|
||||
host_id: 0
|
||||
allowed_atype: 0
|
||||
allowed_qos: 0
|
||||
allowed_orderid: 0
|
||||
allowed_priority: 0
|
||||
allowed_sched_priority: 0
|
||||
- # 27
|
||||
host_id: 0
|
||||
allowed_atype: 0
|
||||
allowed_qos: 0
|
||||
allowed_orderid: 0
|
||||
allowed_priority: 0
|
||||
allowed_sched_priority: 0
|
||||
- # 28
|
||||
host_id: 0
|
||||
allowed_atype: 0
|
||||
allowed_qos: 0
|
||||
allowed_orderid: 0
|
||||
allowed_priority: 0
|
||||
allowed_sched_priority: 0
|
||||
- # 29
|
||||
host_id: 0
|
||||
allowed_atype: 0
|
||||
allowed_qos: 0
|
||||
allowed_orderid: 0
|
||||
allowed_priority: 0
|
||||
allowed_sched_priority: 0
|
||||
- # 30
|
||||
host_id: 0
|
||||
allowed_atype: 0
|
||||
allowed_qos: 0
|
||||
allowed_orderid: 0
|
||||
allowed_priority: 0
|
||||
allowed_sched_priority: 0
|
||||
- # 31
|
||||
host_id: 0
|
||||
allowed_atype: 0
|
||||
allowed_qos: 0
|
||||
allowed_orderid: 0
|
||||
allowed_priority: 0
|
||||
allowed_sched_priority: 0
|
||||
- # 32
|
||||
host_id: 0
|
||||
allowed_atype: 0
|
||||
allowed_qos: 0
|
||||
allowed_orderid: 0
|
||||
allowed_priority: 0
|
||||
allowed_sched_priority: 0
|
||||
resasg:
|
||||
subhdr:
|
||||
magic: 0x7B25
|
||||
size: 8
|
||||
resasg_entries_size: 824
|
||||
reserved: 0
|
||||
resasg_entries:
|
||||
-
|
||||
start_resource: 0
|
||||
num_resource: 18
|
||||
type: 1677
|
||||
host_id: 12
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 18
|
||||
num_resource: 6
|
||||
type: 1677
|
||||
host_id: 35
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 18
|
||||
num_resource: 6
|
||||
type: 1677
|
||||
host_id: 36
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 24
|
||||
num_resource: 2
|
||||
type: 1677
|
||||
host_id: 30
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 26
|
||||
num_resource: 6
|
||||
type: 1677
|
||||
host_id: 128
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 54
|
||||
num_resource: 18
|
||||
type: 1678
|
||||
host_id: 12
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 72
|
||||
num_resource: 6
|
||||
type: 1678
|
||||
host_id: 35
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 72
|
||||
num_resource: 6
|
||||
type: 1678
|
||||
host_id: 36
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 78
|
||||
num_resource: 2
|
||||
type: 1678
|
||||
host_id: 30
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 80
|
||||
num_resource: 2
|
||||
type: 1678
|
||||
host_id: 128
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 32
|
||||
num_resource: 12
|
||||
type: 1679
|
||||
host_id: 12
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 44
|
||||
num_resource: 6
|
||||
type: 1679
|
||||
host_id: 35
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 44
|
||||
num_resource: 6
|
||||
type: 1679
|
||||
host_id: 36
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 50
|
||||
num_resource: 2
|
||||
type: 1679
|
||||
host_id: 30
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 52
|
||||
num_resource: 2
|
||||
type: 1679
|
||||
host_id: 128
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 0
|
||||
num_resource: 18
|
||||
type: 1696
|
||||
host_id: 12
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 18
|
||||
num_resource: 6
|
||||
type: 1696
|
||||
host_id: 35
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 18
|
||||
num_resource: 6
|
||||
type: 1696
|
||||
host_id: 36
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 24
|
||||
num_resource: 2
|
||||
type: 1696
|
||||
host_id: 30
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 26
|
||||
num_resource: 6
|
||||
type: 1696
|
||||
host_id: 128
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 0
|
||||
num_resource: 18
|
||||
type: 1697
|
||||
host_id: 12
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 18
|
||||
num_resource: 6
|
||||
type: 1697
|
||||
host_id: 35
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 18
|
||||
num_resource: 6
|
||||
type: 1697
|
||||
host_id: 36
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 24
|
||||
num_resource: 2
|
||||
type: 1697
|
||||
host_id: 30
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 26
|
||||
num_resource: 2
|
||||
type: 1697
|
||||
host_id: 128
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 0
|
||||
num_resource: 12
|
||||
type: 1698
|
||||
host_id: 12
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 12
|
||||
num_resource: 6
|
||||
type: 1698
|
||||
host_id: 35
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 12
|
||||
num_resource: 6
|
||||
type: 1698
|
||||
host_id: 36
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 18
|
||||
num_resource: 2
|
||||
type: 1698
|
||||
host_id: 30
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 20
|
||||
num_resource: 2
|
||||
type: 1698
|
||||
host_id: 128
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 5
|
||||
num_resource: 35
|
||||
type: 1802
|
||||
host_id: 12
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 44
|
||||
num_resource: 35
|
||||
type: 1802
|
||||
host_id: 35
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 44
|
||||
num_resource: 35
|
||||
type: 1802
|
||||
host_id: 36
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 168
|
||||
num_resource: 7
|
||||
type: 1802
|
||||
host_id: 30
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 0
|
||||
num_resource: 1024
|
||||
type: 1807
|
||||
host_id: 128
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 4096
|
||||
num_resource: 29
|
||||
type: 1808
|
||||
host_id: 128
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 4608
|
||||
num_resource: 99
|
||||
type: 1809
|
||||
host_id: 128
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 5120
|
||||
num_resource: 24
|
||||
type: 1810
|
||||
host_id: 128
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 5632
|
||||
num_resource: 51
|
||||
type: 1811
|
||||
host_id: 128
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 6144
|
||||
num_resource: 51
|
||||
type: 1812
|
||||
host_id: 128
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 6656
|
||||
num_resource: 51
|
||||
type: 1813
|
||||
host_id: 128
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 8192
|
||||
num_resource: 32
|
||||
type: 1814
|
||||
host_id: 128
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 8704
|
||||
num_resource: 32
|
||||
type: 1815
|
||||
host_id: 128
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 9216
|
||||
num_resource: 32
|
||||
type: 1816
|
||||
host_id: 128
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 9728
|
||||
num_resource: 22
|
||||
type: 1817
|
||||
host_id: 128
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 10240
|
||||
num_resource: 22
|
||||
type: 1818
|
||||
host_id: 128
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 10752
|
||||
num_resource: 22
|
||||
type: 1819
|
||||
host_id: 128
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 11264
|
||||
num_resource: 28
|
||||
type: 1820
|
||||
host_id: 128
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 11776
|
||||
num_resource: 28
|
||||
type: 1821
|
||||
host_id: 128
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 12288
|
||||
num_resource: 28
|
||||
type: 1822
|
||||
host_id: 128
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 0
|
||||
num_resource: 10
|
||||
type: 1936
|
||||
host_id: 12
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 10
|
||||
num_resource: 3
|
||||
type: 1936
|
||||
host_id: 35
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 10
|
||||
num_resource: 3
|
||||
type: 1936
|
||||
host_id: 36
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 13
|
||||
num_resource: 3
|
||||
type: 1936
|
||||
host_id: 30
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 16
|
||||
num_resource: 3
|
||||
type: 1936
|
||||
host_id: 128
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 19
|
||||
num_resource: 64
|
||||
type: 1937
|
||||
host_id: 12
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 19
|
||||
num_resource: 64
|
||||
type: 1937
|
||||
host_id: 36
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 83
|
||||
num_resource: 8
|
||||
type: 1938
|
||||
host_id: 12
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 91
|
||||
num_resource: 8
|
||||
type: 1939
|
||||
host_id: 12
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 99
|
||||
num_resource: 10
|
||||
type: 1942
|
||||
host_id: 12
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 109
|
||||
num_resource: 3
|
||||
type: 1942
|
||||
host_id: 35
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 109
|
||||
num_resource: 3
|
||||
type: 1942
|
||||
host_id: 36
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 112
|
||||
num_resource: 3
|
||||
type: 1942
|
||||
host_id: 30
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 115
|
||||
num_resource: 3
|
||||
type: 1942
|
||||
host_id: 128
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 118
|
||||
num_resource: 16
|
||||
type: 1943
|
||||
host_id: 12
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 118
|
||||
num_resource: 16
|
||||
type: 1943
|
||||
host_id: 36
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 134
|
||||
num_resource: 8
|
||||
type: 1944
|
||||
host_id: 12
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 134
|
||||
num_resource: 8
|
||||
type: 1945
|
||||
host_id: 12
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 142
|
||||
num_resource: 8
|
||||
type: 1946
|
||||
host_id: 12
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 142
|
||||
num_resource: 8
|
||||
type: 1947
|
||||
host_id: 12
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 0
|
||||
num_resource: 10
|
||||
type: 1955
|
||||
host_id: 12
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 10
|
||||
num_resource: 3
|
||||
type: 1955
|
||||
host_id: 35
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 10
|
||||
num_resource: 3
|
||||
type: 1955
|
||||
host_id: 36
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 13
|
||||
num_resource: 3
|
||||
type: 1955
|
||||
host_id: 30
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 16
|
||||
num_resource: 3
|
||||
type: 1955
|
||||
host_id: 128
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 19
|
||||
num_resource: 8
|
||||
type: 1956
|
||||
host_id: 12
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 19
|
||||
num_resource: 8
|
||||
type: 1956
|
||||
host_id: 36
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 27
|
||||
num_resource: 1
|
||||
type: 1957
|
||||
host_id: 12
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 28
|
||||
num_resource: 1
|
||||
type: 1958
|
||||
host_id: 12
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 0
|
||||
num_resource: 10
|
||||
type: 1961
|
||||
host_id: 12
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 10
|
||||
num_resource: 3
|
||||
type: 1961
|
||||
host_id: 35
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 10
|
||||
num_resource: 3
|
||||
type: 1961
|
||||
host_id: 36
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 13
|
||||
num_resource: 3
|
||||
type: 1961
|
||||
host_id: 30
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 16
|
||||
num_resource: 3
|
||||
type: 1961
|
||||
host_id: 128
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 0
|
||||
num_resource: 10
|
||||
type: 1962
|
||||
host_id: 12
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 10
|
||||
num_resource: 3
|
||||
type: 1962
|
||||
host_id: 35
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 10
|
||||
num_resource: 3
|
||||
type: 1962
|
||||
host_id: 36
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 13
|
||||
num_resource: 3
|
||||
type: 1962
|
||||
host_id: 30
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 16
|
||||
num_resource: 3
|
||||
type: 1962
|
||||
host_id: 128
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 19
|
||||
num_resource: 1
|
||||
type: 1963
|
||||
host_id: 12
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 19
|
||||
num_resource: 1
|
||||
type: 1963
|
||||
host_id: 36
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 19
|
||||
num_resource: 16
|
||||
type: 1964
|
||||
host_id: 12
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 19
|
||||
num_resource: 16
|
||||
type: 1964
|
||||
host_id: 36
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 20
|
||||
num_resource: 1
|
||||
type: 1965
|
||||
host_id: 12
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 35
|
||||
num_resource: 8
|
||||
type: 1966
|
||||
host_id: 12
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 21
|
||||
num_resource: 1
|
||||
type: 1967
|
||||
host_id: 12
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 35
|
||||
num_resource: 8
|
||||
type: 1968
|
||||
host_id: 12
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 22
|
||||
num_resource: 1
|
||||
type: 1969
|
||||
host_id: 12
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 43
|
||||
num_resource: 8
|
||||
type: 1970
|
||||
host_id: 12
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 23
|
||||
num_resource: 1
|
||||
type: 1971
|
||||
host_id: 12
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 43
|
||||
num_resource: 8
|
||||
type: 1972
|
||||
host_id: 12
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 0
|
||||
num_resource: 1
|
||||
type: 2112
|
||||
host_id: 128
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 2
|
||||
num_resource: 2
|
||||
type: 2122
|
||||
host_id: 12
|
||||
reserved: 0
|
||||
@@ -1,5 +1,5 @@
|
||||
# SPDX-License-Identifier: GPL-2.0+
|
||||
# Copyright (C) 2022-2023 Texas Instruments Incorporated - https://www.ti.com/
|
||||
# Copyright (C) 2022-2026 Texas Instruments Incorporated - https://www.ti.com/
|
||||
#
|
||||
# Resource management configuration for J721S2
|
||||
#
|
||||
@@ -429,24 +429,24 @@ rm-cfg:
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 10
|
||||
num_resource: 100
|
||||
num_resource: 98
|
||||
type: 14528
|
||||
host_id: 12
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 110
|
||||
start_resource: 108
|
||||
num_resource: 32
|
||||
type: 14528
|
||||
host_id: 13
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 142
|
||||
start_resource: 140
|
||||
num_resource: 21
|
||||
type: 14528
|
||||
host_id: 21
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 163
|
||||
start_resource: 161
|
||||
num_resource: 21
|
||||
type: 14528
|
||||
host_id: 23
|
||||
@@ -1431,7 +1431,7 @@ rm-cfg:
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 236
|
||||
num_resource: 20
|
||||
num_resource: 18
|
||||
type: 16970
|
||||
host_id: 128
|
||||
reserved: 0
|
||||
@@ -1497,7 +1497,7 @@ rm-cfg:
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 3426
|
||||
num_resource: 1182
|
||||
num_resource: 1180
|
||||
type: 16973
|
||||
host_id: 128
|
||||
reserved: 0
|
||||
|
||||
@@ -2,7 +2,6 @@ PURISM LIBREM5 PHONE
|
||||
M: Angus Ainslie <angus@akkea.ca>
|
||||
R: kernel@puri.sm
|
||||
S: Supported
|
||||
F: arch/arm/dts/imx8mq-librem5*
|
||||
F: board/purism/librem5/
|
||||
F: configs/librem5_defconfig
|
||||
F: include/configs/librem5.h
|
||||
|
||||
@@ -40,6 +40,7 @@ bootmenu_6=Dump clocks=clk dump; pause
|
||||
bootmenu_7=Dump environment=printenv; pause
|
||||
bootmenu_8=Board info=bdinfo; pause
|
||||
bootmenu_9=Dump bootargs=fdt print /chosen bootargs; pause
|
||||
bootmenu_10=Power off=poweroff
|
||||
|
||||
# Allow holding the volume down button while U-Boot loads to enter
|
||||
# the boot menu
|
||||
|
||||
@@ -9,7 +9,6 @@ obj-$(CONFIG_PMIC_STPMIC1) += stpmic1.o
|
||||
ifeq ($(CONFIG_ARCH_STM32MP),y)
|
||||
obj-$(CONFIG_SET_DFU_ALT_INFO) += stm32mp_dfu.o
|
||||
obj-$(CONFIG_$(PHASE_)DFU_VIRT) += stm32mp_dfu_virt.o
|
||||
obj-$(CONFIG_FWU_MULTI_BANK_UPDATE) += stm32mp_fwu.o
|
||||
endif
|
||||
|
||||
obj-$(CONFIG_TYPEC_STUSB160X) += stusb160x.o
|
||||
|
||||
@@ -1,55 +0,0 @@
|
||||
// SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause
|
||||
/*
|
||||
* Copyright (C) 2026 Amarula Solutions, Dario Binacchi <dario.binacchi@amarulasolutions.com>
|
||||
*/
|
||||
|
||||
#include <fwu.h>
|
||||
#include <part_efi.h>
|
||||
#include <asm/io.h>
|
||||
/**
|
||||
* fwu_plat_get_bootidx() - Get the value of the boot index
|
||||
* @boot_idx: Boot index value
|
||||
*
|
||||
* Get the value of the bank(partition) from which the platform
|
||||
* has booted. This value is passed to U-Boot from the earlier
|
||||
* stage bootloader which loads and boots all the relevant
|
||||
* firmware images
|
||||
*
|
||||
*/
|
||||
void fwu_plat_get_bootidx(uint *boot_idx)
|
||||
{
|
||||
*boot_idx = (readl(TAMP_FWU_BOOT_INFO_REG) >>
|
||||
TAMP_FWU_BOOT_IDX_OFFSET) & TAMP_FWU_BOOT_IDX_MASK;
|
||||
}
|
||||
|
||||
int fwu_platform_hook(struct udevice *dev, struct fwu_data *data)
|
||||
{
|
||||
uint boot_idx;
|
||||
efi_guid_t boot_uuid, root_uuid;
|
||||
const efi_guid_t boot_type_guid = PARTITION_XBOOTLDR;
|
||||
const efi_guid_t root_type_guid =
|
||||
PARTITION_LINUX_FILE_SYSTEM_DATA_GUID;
|
||||
char uuidbuf[UUID_STR_LEN + 1];
|
||||
int retb, retr;
|
||||
|
||||
fwu_plat_get_bootidx(&boot_idx);
|
||||
|
||||
retb = fwu_mdata_get_image_guid(&boot_uuid, &boot_type_guid, boot_idx);
|
||||
retr = fwu_mdata_get_image_guid(&root_uuid, &root_type_guid, boot_idx);
|
||||
|
||||
if (!retb && !retr) {
|
||||
uuid_bin_to_str(boot_uuid.b, uuidbuf, UUID_STR_FORMAT_GUID);
|
||||
env_set("boot_partuuid", uuidbuf);
|
||||
|
||||
uuid_bin_to_str(root_uuid.b, uuidbuf, UUID_STR_FORMAT_GUID);
|
||||
env_set("root_partuuid", uuidbuf);
|
||||
} else if (!retb && retr) {
|
||||
log_warning("%s: found boot GUID but missing root GUID (%d)\n",
|
||||
__func__, retr);
|
||||
} else if (!retr && retb) {
|
||||
log_warning("%s: found root GUID but missing boot GUID (%d)\n",
|
||||
__func__, retb);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -837,3 +837,24 @@ static void board_copro_image_process(ulong fw_image, size_t fw_size)
|
||||
}
|
||||
|
||||
U_BOOT_FIT_LOADABLE_HANDLER(IH_TYPE_COPRO, board_copro_image_process);
|
||||
|
||||
#if defined(CONFIG_FWU_MULTI_BANK_UPDATE)
|
||||
|
||||
#include <fwu.h>
|
||||
|
||||
/**
|
||||
* fwu_plat_get_bootidx() - Get the value of the boot index
|
||||
* @boot_idx: Boot index value
|
||||
*
|
||||
* Get the value of the bank(partition) from which the platform
|
||||
* has booted. This value is passed to U-Boot from the earlier
|
||||
* stage bootloader which loads and boots all the relevant
|
||||
* firmware images
|
||||
*
|
||||
*/
|
||||
void fwu_plat_get_bootidx(uint *boot_idx)
|
||||
{
|
||||
*boot_idx = (readl(TAMP_FWU_BOOT_INFO_REG) >>
|
||||
TAMP_FWU_BOOT_IDX_OFFSET) & TAMP_FWU_BOOT_IDX_MASK;
|
||||
}
|
||||
#endif /* CONFIG_FWU_MULTI_BANK_UPDATE */
|
||||
|
||||
@@ -188,3 +188,56 @@ void board_quiesce_devices(void)
|
||||
{
|
||||
led_boot_off();
|
||||
}
|
||||
|
||||
#if defined(CONFIG_FWU_MULTI_BANK_UPDATE)
|
||||
|
||||
#include <fwu.h>
|
||||
|
||||
/**
|
||||
* fwu_plat_get_bootidx() - Get the value of the boot index
|
||||
* @boot_idx: Boot index value
|
||||
*
|
||||
* Get the value of the bank(partition) from which the platform
|
||||
* has booted. This value is passed to U-Boot from the earlier
|
||||
* stage bootloader which loads and boots all the relevant
|
||||
* firmware images
|
||||
*
|
||||
*/
|
||||
void fwu_plat_get_bootidx(uint *boot_idx)
|
||||
{
|
||||
*boot_idx = (readl(TAMP_FWU_BOOT_INFO_REG) >>
|
||||
TAMP_FWU_BOOT_IDX_OFFSET) & TAMP_FWU_BOOT_IDX_MASK;
|
||||
}
|
||||
|
||||
int fwu_platform_hook(struct udevice *dev, struct fwu_data *data)
|
||||
{
|
||||
uint boot_idx;
|
||||
efi_guid_t boot_uuid, root_uuid;
|
||||
const efi_guid_t boot_type_guid = PARTITION_XBOOTLDR;
|
||||
const efi_guid_t root_type_guid =
|
||||
PARTITION_LINUX_FILE_SYSTEM_DATA_GUID;
|
||||
char uuidbuf[UUID_STR_LEN + 1];
|
||||
int retb, retr;
|
||||
|
||||
fwu_plat_get_bootidx(&boot_idx);
|
||||
|
||||
retb = fwu_mdata_get_image_guid(&boot_uuid, &boot_type_guid, boot_idx);
|
||||
retr = fwu_mdata_get_image_guid(&root_uuid, &root_type_guid, boot_idx);
|
||||
|
||||
if (!retb && !retr) {
|
||||
uuid_bin_to_str(boot_uuid.b, uuidbuf, UUID_STR_FORMAT_GUID);
|
||||
env_set("boot_partuuid", uuidbuf);
|
||||
|
||||
uuid_bin_to_str(root_uuid.b, uuidbuf, UUID_STR_FORMAT_GUID);
|
||||
env_set("root_partuuid", uuidbuf);
|
||||
} else if (!retb && retr) {
|
||||
log_warning("%s: found boot GUID but missing root GUID (%d)\n",
|
||||
__func__, retr);
|
||||
} else if (!retr && retb) {
|
||||
log_warning("%s: found root GUID but missing boot GUID (%d)\n",
|
||||
__func__, retb);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
#endif /* CONFIG_FWU_MULTI_BANK_UPDATE */
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
#include <asm/arch/mmc_host_def.h>
|
||||
#include <asm/arch/sys_proto.h>
|
||||
#include <asm/arch/mem.h>
|
||||
#include <asm/arch/mux.h>
|
||||
#include <asm/global_data.h>
|
||||
#include <asm/io.h>
|
||||
#include <asm/emif.h>
|
||||
@@ -72,6 +73,12 @@ static struct ctrl_dev *cdev = (struct ctrl_dev *)CTRL_DEVICE_BASE;
|
||||
#define GPIO0_IRQSTATUSRAW (AM33XX_GPIO0_BASE + 0x024)
|
||||
#define GPIO1_IRQSTATUSRAW (AM33XX_GPIO1_BASE + 0x024)
|
||||
|
||||
static __maybe_unused struct module_pin_mux rmii1_mdio_pin_mux[] = {
|
||||
{OFFSET(mdio_clk), MODE(0) | PULLUP_EN}, /* MDIO_CLK */
|
||||
{OFFSET(mdio_data), MODE(0) | RXACTIVE | PULLUP_EN}, /* MDIO_DATA */
|
||||
{-1},
|
||||
};
|
||||
|
||||
/*
|
||||
* Read header information from EEPROM into global structure.
|
||||
*/
|
||||
@@ -779,6 +786,9 @@ int board_init(void)
|
||||
hang();
|
||||
}
|
||||
|
||||
if (!eth0_is_mii)
|
||||
configure_module_pin_mux(rmii1_mdio_pin_mux);
|
||||
|
||||
prueth_is_mii = eth0_is_mii;
|
||||
|
||||
/* disable rising edge IRQs */
|
||||
|
||||
@@ -190,8 +190,6 @@ static struct module_pin_mux mii1_pin_mux[] = {
|
||||
};
|
||||
|
||||
static struct module_pin_mux rmii1_pin_mux[] = {
|
||||
{OFFSET(mdio_clk), MODE(0) | PULLUP_EN}, /* MDIO_CLK */
|
||||
{OFFSET(mdio_data), MODE(0) | RXACTIVE | PULLUP_EN}, /* MDIO_DATA */
|
||||
{OFFSET(mii1_crs), MODE(1) | RXACTIVE}, /* MII1_CRS */
|
||||
{OFFSET(mii1_rxerr), MODE(1) | RXACTIVE}, /* MII1_RXERR */
|
||||
{OFFSET(mii1_txen), MODE(1)}, /* MII1_TXEN */
|
||||
|
||||
@@ -27,10 +27,6 @@ splashimage=0x82180000
|
||||
splashpos=m,m
|
||||
splashsource=sf
|
||||
|
||||
dfu_alt_info_ram=
|
||||
tispl.bin ram 0x82000000 0x200000;
|
||||
u-boot.img ram 0x82f80000 0x400000
|
||||
|
||||
#if CONFIG_BOOTMETH_ANDROID
|
||||
#include <env/ti/android.env>
|
||||
adtb_idx=0
|
||||
|
||||
@@ -16,9 +16,9 @@ sec-cfg:
|
||||
size: 164
|
||||
proc_acl_entries:
|
||||
-
|
||||
processor_id: 0
|
||||
proc_access_master: 0
|
||||
proc_access_secondary: [0, 0, 0]
|
||||
processor_id: 0x1
|
||||
proc_access_master: 0x23
|
||||
proc_access_secondary: [0xC, 0, 0]
|
||||
-
|
||||
processor_id: 0
|
||||
proc_access_master: 0
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# SPDX-License-Identifier: GPL-2.0+
|
||||
# Copyright (C) 2022-2025 Texas Instruments Incorporated - https://www.ti.com/
|
||||
# Copyright (C) 2022-2026 Texas Instruments Incorporated - https://www.ti.com/
|
||||
#
|
||||
# Resource management configuration for J784S4
|
||||
#
|
||||
@@ -453,36 +453,36 @@ rm-cfg:
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 16
|
||||
num_resource: 80
|
||||
num_resource: 78
|
||||
type: 18112
|
||||
host_id: 12
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 96
|
||||
start_resource: 94
|
||||
num_resource: 14
|
||||
type: 18112
|
||||
host_id: 13
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 110
|
||||
start_resource: 108
|
||||
num_resource: 21
|
||||
type: 18112
|
||||
host_id: 21
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 131
|
||||
start_resource: 129
|
||||
num_resource: 21
|
||||
type: 18112
|
||||
host_id: 23
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 152
|
||||
start_resource: 150
|
||||
num_resource: 12
|
||||
type: 18112
|
||||
host_id: 25
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 164
|
||||
start_resource: 162
|
||||
num_resource: 12
|
||||
type: 18112
|
||||
host_id: 27
|
||||
@@ -1719,72 +1719,72 @@ rm-cfg:
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 56
|
||||
num_resource: 56
|
||||
num_resource: 54
|
||||
type: 20554
|
||||
host_id: 12
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 112
|
||||
start_resource: 110
|
||||
num_resource: 24
|
||||
type: 20554
|
||||
host_id: 13
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 136
|
||||
start_resource: 134
|
||||
num_resource: 12
|
||||
type: 20554
|
||||
host_id: 21
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 148
|
||||
start_resource: 146
|
||||
num_resource: 12
|
||||
type: 20554
|
||||
host_id: 23
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 160
|
||||
start_resource: 158
|
||||
num_resource: 10
|
||||
type: 20554
|
||||
host_id: 25
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 170
|
||||
start_resource: 168
|
||||
num_resource: 10
|
||||
type: 20554
|
||||
host_id: 27
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 180
|
||||
start_resource: 178
|
||||
num_resource: 28
|
||||
type: 20554
|
||||
host_id: 35
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 208
|
||||
start_resource: 206
|
||||
num_resource: 8
|
||||
type: 20554
|
||||
host_id: 37
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 216
|
||||
start_resource: 214
|
||||
num_resource: 12
|
||||
type: 20554
|
||||
host_id: 40
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 228
|
||||
start_resource: 226
|
||||
num_resource: 8
|
||||
type: 20554
|
||||
host_id: 42
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 236
|
||||
start_resource: 234
|
||||
num_resource: 10
|
||||
type: 20554
|
||||
host_id: 45
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 246
|
||||
start_resource: 244
|
||||
num_resource: 10
|
||||
type: 20554
|
||||
host_id: 47
|
||||
@@ -1875,7 +1875,7 @@ rm-cfg:
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 4472
|
||||
num_resource: 136
|
||||
num_resource: 134
|
||||
type: 20557
|
||||
host_id: 128
|
||||
reserved: 0
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# SPDX-License-Identifier: GPL-2.0+
|
||||
# Copyright (C) 2022-2025 Texas Instruments Incorporated - https://www.ti.com/
|
||||
# Copyright (C) 2022-2026 Texas Instruments Incorporated - https://www.ti.com/
|
||||
#
|
||||
# Resource management configuration for J784S4
|
||||
#
|
||||
@@ -1455,72 +1455,72 @@ tifs-rm-cfg:
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 56
|
||||
num_resource: 56
|
||||
num_resource: 54
|
||||
type: 20554
|
||||
host_id: 12
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 112
|
||||
start_resource: 110
|
||||
num_resource: 24
|
||||
type: 20554
|
||||
host_id: 13
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 136
|
||||
start_resource: 134
|
||||
num_resource: 12
|
||||
type: 20554
|
||||
host_id: 21
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 148
|
||||
start_resource: 146
|
||||
num_resource: 12
|
||||
type: 20554
|
||||
host_id: 23
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 160
|
||||
start_resource: 158
|
||||
num_resource: 10
|
||||
type: 20554
|
||||
host_id: 25
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 170
|
||||
start_resource: 168
|
||||
num_resource: 10
|
||||
type: 20554
|
||||
host_id: 27
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 180
|
||||
start_resource: 178
|
||||
num_resource: 28
|
||||
type: 20554
|
||||
host_id: 35
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 208
|
||||
start_resource: 206
|
||||
num_resource: 8
|
||||
type: 20554
|
||||
host_id: 37
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 216
|
||||
start_resource: 214
|
||||
num_resource: 12
|
||||
type: 20554
|
||||
host_id: 40
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 228
|
||||
start_resource: 226
|
||||
num_resource: 8
|
||||
type: 20554
|
||||
host_id: 42
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 236
|
||||
start_resource: 234
|
||||
num_resource: 10
|
||||
type: 20554
|
||||
host_id: 45
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 246
|
||||
start_resource: 244
|
||||
num_resource: 10
|
||||
type: 20554
|
||||
host_id: 47
|
||||
|
||||
867
board/toradex/verdin-am62/tifs-rm-cfg.yaml
Normal file
867
board/toradex/verdin-am62/tifs-rm-cfg.yaml
Normal file
@@ -0,0 +1,867 @@
|
||||
# SPDX-License-Identifier: GPL-2.0+
|
||||
# Copyright (C) 2022-2026 Texas Instruments Incorporated - https://www.ti.com/
|
||||
#
|
||||
# Resource management configuration for AM62X
|
||||
#
|
||||
|
||||
---
|
||||
|
||||
tifs-rm-cfg:
|
||||
rm_boardcfg:
|
||||
rev:
|
||||
boardcfg_abi_maj: 0x0
|
||||
boardcfg_abi_min: 0x1
|
||||
host_cfg:
|
||||
subhdr:
|
||||
magic: 0x4C41
|
||||
size: 356
|
||||
host_cfg_entries:
|
||||
- # 1
|
||||
host_id: 12
|
||||
allowed_atype: 0x2A
|
||||
allowed_qos: 0xAAAA
|
||||
allowed_orderid: 0xAAAAAAAA
|
||||
allowed_priority: 0xAAAA
|
||||
allowed_sched_priority: 0xAA
|
||||
- # 2
|
||||
host_id: 30
|
||||
allowed_atype: 0x2A
|
||||
allowed_qos: 0xAAAA
|
||||
allowed_orderid: 0xAAAAAAAA
|
||||
allowed_priority: 0xAAAA
|
||||
allowed_sched_priority: 0xAA
|
||||
- # 3
|
||||
host_id: 36
|
||||
allowed_atype: 0x2A
|
||||
allowed_qos: 0xAAAA
|
||||
allowed_orderid: 0xAAAAAAAA
|
||||
allowed_priority: 0xAAAA
|
||||
allowed_sched_priority: 0xAA
|
||||
- # 4
|
||||
host_id: 0
|
||||
allowed_atype: 0
|
||||
allowed_qos: 0
|
||||
allowed_orderid: 0
|
||||
allowed_priority: 0
|
||||
allowed_sched_priority: 0
|
||||
- # 5
|
||||
host_id: 0
|
||||
allowed_atype: 0
|
||||
allowed_qos: 0
|
||||
allowed_orderid: 0
|
||||
allowed_priority: 0
|
||||
allowed_sched_priority: 0
|
||||
- # 6
|
||||
host_id: 0
|
||||
allowed_atype: 0
|
||||
allowed_qos: 0
|
||||
allowed_orderid: 0
|
||||
allowed_priority: 0
|
||||
allowed_sched_priority: 0
|
||||
- # 7
|
||||
host_id: 0
|
||||
allowed_atype: 0
|
||||
allowed_qos: 0
|
||||
allowed_orderid: 0
|
||||
allowed_priority: 0
|
||||
allowed_sched_priority: 0
|
||||
- # 8
|
||||
host_id: 0
|
||||
allowed_atype: 0
|
||||
allowed_qos: 0
|
||||
allowed_orderid: 0
|
||||
allowed_priority: 0
|
||||
allowed_sched_priority: 0
|
||||
- # 9
|
||||
host_id: 0
|
||||
allowed_atype: 0
|
||||
allowed_qos: 0
|
||||
allowed_orderid: 0
|
||||
allowed_priority: 0
|
||||
allowed_sched_priority: 0
|
||||
- # 10
|
||||
host_id: 0
|
||||
allowed_atype: 0
|
||||
allowed_qos: 0
|
||||
allowed_orderid: 0
|
||||
allowed_priority: 0
|
||||
allowed_sched_priority: 0
|
||||
- # 11
|
||||
host_id: 0
|
||||
allowed_atype: 0
|
||||
allowed_qos: 0
|
||||
allowed_orderid: 0
|
||||
allowed_priority: 0
|
||||
allowed_sched_priority: 0
|
||||
- # 12
|
||||
host_id: 0
|
||||
allowed_atype: 0
|
||||
allowed_qos: 0
|
||||
allowed_orderid: 0
|
||||
allowed_priority: 0
|
||||
allowed_sched_priority: 0
|
||||
- # 13
|
||||
host_id: 0
|
||||
allowed_atype: 0
|
||||
allowed_qos: 0
|
||||
allowed_orderid: 0
|
||||
allowed_priority: 0
|
||||
allowed_sched_priority: 0
|
||||
- # 14
|
||||
host_id: 0
|
||||
allowed_atype: 0
|
||||
allowed_qos: 0
|
||||
allowed_orderid: 0
|
||||
allowed_priority: 0
|
||||
allowed_sched_priority: 0
|
||||
- # 15
|
||||
host_id: 0
|
||||
allowed_atype: 0
|
||||
allowed_qos: 0
|
||||
allowed_orderid: 0
|
||||
allowed_priority: 0
|
||||
allowed_sched_priority: 0
|
||||
- # 16
|
||||
host_id: 0
|
||||
allowed_atype: 0
|
||||
allowed_qos: 0
|
||||
allowed_orderid: 0
|
||||
allowed_priority: 0
|
||||
allowed_sched_priority: 0
|
||||
- # 17
|
||||
host_id: 0
|
||||
allowed_atype: 0
|
||||
allowed_qos: 0
|
||||
allowed_orderid: 0
|
||||
allowed_priority: 0
|
||||
allowed_sched_priority: 0
|
||||
- # 18
|
||||
host_id: 0
|
||||
allowed_atype: 0
|
||||
allowed_qos: 0
|
||||
allowed_orderid: 0
|
||||
allowed_priority: 0
|
||||
allowed_sched_priority: 0
|
||||
- # 19
|
||||
host_id: 0
|
||||
allowed_atype: 0
|
||||
allowed_qos: 0
|
||||
allowed_orderid: 0
|
||||
allowed_priority: 0
|
||||
allowed_sched_priority: 0
|
||||
- # 20
|
||||
host_id: 0
|
||||
allowed_atype: 0
|
||||
allowed_qos: 0
|
||||
allowed_orderid: 0
|
||||
allowed_priority: 0
|
||||
allowed_sched_priority: 0
|
||||
- # 21
|
||||
host_id: 0
|
||||
allowed_atype: 0
|
||||
allowed_qos: 0
|
||||
allowed_orderid: 0
|
||||
allowed_priority: 0
|
||||
allowed_sched_priority: 0
|
||||
- # 22
|
||||
host_id: 0
|
||||
allowed_atype: 0
|
||||
allowed_qos: 0
|
||||
allowed_orderid: 0
|
||||
allowed_priority: 0
|
||||
allowed_sched_priority: 0
|
||||
- # 23
|
||||
host_id: 0
|
||||
allowed_atype: 0
|
||||
allowed_qos: 0
|
||||
allowed_orderid: 0
|
||||
allowed_priority: 0
|
||||
allowed_sched_priority: 0
|
||||
- # 24
|
||||
host_id: 0
|
||||
allowed_atype: 0
|
||||
allowed_qos: 0
|
||||
allowed_orderid: 0
|
||||
allowed_priority: 0
|
||||
allowed_sched_priority: 0
|
||||
- # 25
|
||||
host_id: 0
|
||||
allowed_atype: 0
|
||||
allowed_qos: 0
|
||||
allowed_orderid: 0
|
||||
allowed_priority: 0
|
||||
allowed_sched_priority: 0
|
||||
- # 26
|
||||
host_id: 0
|
||||
allowed_atype: 0
|
||||
allowed_qos: 0
|
||||
allowed_orderid: 0
|
||||
allowed_priority: 0
|
||||
allowed_sched_priority: 0
|
||||
- # 27
|
||||
host_id: 0
|
||||
allowed_atype: 0
|
||||
allowed_qos: 0
|
||||
allowed_orderid: 0
|
||||
allowed_priority: 0
|
||||
allowed_sched_priority: 0
|
||||
- # 28
|
||||
host_id: 0
|
||||
allowed_atype: 0
|
||||
allowed_qos: 0
|
||||
allowed_orderid: 0
|
||||
allowed_priority: 0
|
||||
allowed_sched_priority: 0
|
||||
- # 29
|
||||
host_id: 0
|
||||
allowed_atype: 0
|
||||
allowed_qos: 0
|
||||
allowed_orderid: 0
|
||||
allowed_priority: 0
|
||||
allowed_sched_priority: 0
|
||||
- # 30
|
||||
host_id: 0
|
||||
allowed_atype: 0
|
||||
allowed_qos: 0
|
||||
allowed_orderid: 0
|
||||
allowed_priority: 0
|
||||
allowed_sched_priority: 0
|
||||
- # 31
|
||||
host_id: 0
|
||||
allowed_atype: 0
|
||||
allowed_qos: 0
|
||||
allowed_orderid: 0
|
||||
allowed_priority: 0
|
||||
allowed_sched_priority: 0
|
||||
- # 32
|
||||
host_id: 0
|
||||
allowed_atype: 0
|
||||
allowed_qos: 0
|
||||
allowed_orderid: 0
|
||||
allowed_priority: 0
|
||||
allowed_sched_priority: 0
|
||||
resasg:
|
||||
subhdr:
|
||||
magic: 0x7B25
|
||||
size: 8
|
||||
resasg_entries_size: 824
|
||||
reserved: 0
|
||||
resasg_entries:
|
||||
-
|
||||
start_resource: 0
|
||||
num_resource: 18
|
||||
type: 1677
|
||||
host_id: 12
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 18
|
||||
num_resource: 6
|
||||
type: 1677
|
||||
host_id: 35
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 18
|
||||
num_resource: 6
|
||||
type: 1677
|
||||
host_id: 36
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 24
|
||||
num_resource: 2
|
||||
type: 1677
|
||||
host_id: 30
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 26
|
||||
num_resource: 6
|
||||
type: 1677
|
||||
host_id: 128
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 54
|
||||
num_resource: 18
|
||||
type: 1678
|
||||
host_id: 12
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 72
|
||||
num_resource: 6
|
||||
type: 1678
|
||||
host_id: 35
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 72
|
||||
num_resource: 6
|
||||
type: 1678
|
||||
host_id: 36
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 78
|
||||
num_resource: 2
|
||||
type: 1678
|
||||
host_id: 30
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 80
|
||||
num_resource: 2
|
||||
type: 1678
|
||||
host_id: 128
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 32
|
||||
num_resource: 12
|
||||
type: 1679
|
||||
host_id: 12
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 44
|
||||
num_resource: 6
|
||||
type: 1679
|
||||
host_id: 35
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 44
|
||||
num_resource: 6
|
||||
type: 1679
|
||||
host_id: 36
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 50
|
||||
num_resource: 2
|
||||
type: 1679
|
||||
host_id: 30
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 52
|
||||
num_resource: 2
|
||||
type: 1679
|
||||
host_id: 128
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 0
|
||||
num_resource: 18
|
||||
type: 1696
|
||||
host_id: 12
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 18
|
||||
num_resource: 6
|
||||
type: 1696
|
||||
host_id: 35
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 18
|
||||
num_resource: 6
|
||||
type: 1696
|
||||
host_id: 36
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 24
|
||||
num_resource: 2
|
||||
type: 1696
|
||||
host_id: 30
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 26
|
||||
num_resource: 6
|
||||
type: 1696
|
||||
host_id: 128
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 0
|
||||
num_resource: 18
|
||||
type: 1697
|
||||
host_id: 12
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 18
|
||||
num_resource: 6
|
||||
type: 1697
|
||||
host_id: 35
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 18
|
||||
num_resource: 6
|
||||
type: 1697
|
||||
host_id: 36
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 24
|
||||
num_resource: 2
|
||||
type: 1697
|
||||
host_id: 30
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 26
|
||||
num_resource: 2
|
||||
type: 1697
|
||||
host_id: 128
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 0
|
||||
num_resource: 12
|
||||
type: 1698
|
||||
host_id: 12
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 12
|
||||
num_resource: 6
|
||||
type: 1698
|
||||
host_id: 35
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 12
|
||||
num_resource: 6
|
||||
type: 1698
|
||||
host_id: 36
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 18
|
||||
num_resource: 2
|
||||
type: 1698
|
||||
host_id: 30
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 20
|
||||
num_resource: 2
|
||||
type: 1698
|
||||
host_id: 128
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 5
|
||||
num_resource: 35
|
||||
type: 1802
|
||||
host_id: 12
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 44
|
||||
num_resource: 35
|
||||
type: 1802
|
||||
host_id: 35
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 44
|
||||
num_resource: 35
|
||||
type: 1802
|
||||
host_id: 36
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 168
|
||||
num_resource: 7
|
||||
type: 1802
|
||||
host_id: 30
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 0
|
||||
num_resource: 1024
|
||||
type: 1807
|
||||
host_id: 128
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 4096
|
||||
num_resource: 29
|
||||
type: 1808
|
||||
host_id: 128
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 4608
|
||||
num_resource: 99
|
||||
type: 1809
|
||||
host_id: 128
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 5120
|
||||
num_resource: 24
|
||||
type: 1810
|
||||
host_id: 128
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 5632
|
||||
num_resource: 51
|
||||
type: 1811
|
||||
host_id: 128
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 6144
|
||||
num_resource: 51
|
||||
type: 1812
|
||||
host_id: 128
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 6656
|
||||
num_resource: 51
|
||||
type: 1813
|
||||
host_id: 128
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 8192
|
||||
num_resource: 32
|
||||
type: 1814
|
||||
host_id: 128
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 8704
|
||||
num_resource: 32
|
||||
type: 1815
|
||||
host_id: 128
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 9216
|
||||
num_resource: 32
|
||||
type: 1816
|
||||
host_id: 128
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 9728
|
||||
num_resource: 22
|
||||
type: 1817
|
||||
host_id: 128
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 10240
|
||||
num_resource: 22
|
||||
type: 1818
|
||||
host_id: 128
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 10752
|
||||
num_resource: 22
|
||||
type: 1819
|
||||
host_id: 128
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 11264
|
||||
num_resource: 28
|
||||
type: 1820
|
||||
host_id: 128
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 11776
|
||||
num_resource: 28
|
||||
type: 1821
|
||||
host_id: 128
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 12288
|
||||
num_resource: 28
|
||||
type: 1822
|
||||
host_id: 128
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 0
|
||||
num_resource: 10
|
||||
type: 1936
|
||||
host_id: 12
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 10
|
||||
num_resource: 3
|
||||
type: 1936
|
||||
host_id: 35
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 10
|
||||
num_resource: 3
|
||||
type: 1936
|
||||
host_id: 36
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 13
|
||||
num_resource: 3
|
||||
type: 1936
|
||||
host_id: 30
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 16
|
||||
num_resource: 3
|
||||
type: 1936
|
||||
host_id: 128
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 19
|
||||
num_resource: 64
|
||||
type: 1937
|
||||
host_id: 12
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 19
|
||||
num_resource: 64
|
||||
type: 1937
|
||||
host_id: 36
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 83
|
||||
num_resource: 8
|
||||
type: 1938
|
||||
host_id: 12
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 91
|
||||
num_resource: 8
|
||||
type: 1939
|
||||
host_id: 12
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 99
|
||||
num_resource: 10
|
||||
type: 1942
|
||||
host_id: 12
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 109
|
||||
num_resource: 3
|
||||
type: 1942
|
||||
host_id: 35
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 109
|
||||
num_resource: 3
|
||||
type: 1942
|
||||
host_id: 36
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 112
|
||||
num_resource: 3
|
||||
type: 1942
|
||||
host_id: 30
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 115
|
||||
num_resource: 3
|
||||
type: 1942
|
||||
host_id: 128
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 118
|
||||
num_resource: 16
|
||||
type: 1943
|
||||
host_id: 12
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 118
|
||||
num_resource: 16
|
||||
type: 1943
|
||||
host_id: 36
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 134
|
||||
num_resource: 8
|
||||
type: 1944
|
||||
host_id: 12
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 134
|
||||
num_resource: 8
|
||||
type: 1945
|
||||
host_id: 12
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 142
|
||||
num_resource: 8
|
||||
type: 1946
|
||||
host_id: 12
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 142
|
||||
num_resource: 8
|
||||
type: 1947
|
||||
host_id: 12
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 0
|
||||
num_resource: 10
|
||||
type: 1955
|
||||
host_id: 12
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 10
|
||||
num_resource: 3
|
||||
type: 1955
|
||||
host_id: 35
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 10
|
||||
num_resource: 3
|
||||
type: 1955
|
||||
host_id: 36
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 13
|
||||
num_resource: 3
|
||||
type: 1955
|
||||
host_id: 30
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 16
|
||||
num_resource: 3
|
||||
type: 1955
|
||||
host_id: 128
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 19
|
||||
num_resource: 8
|
||||
type: 1956
|
||||
host_id: 12
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 19
|
||||
num_resource: 8
|
||||
type: 1956
|
||||
host_id: 36
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 27
|
||||
num_resource: 1
|
||||
type: 1957
|
||||
host_id: 12
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 28
|
||||
num_resource: 1
|
||||
type: 1958
|
||||
host_id: 12
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 0
|
||||
num_resource: 10
|
||||
type: 1961
|
||||
host_id: 12
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 10
|
||||
num_resource: 3
|
||||
type: 1961
|
||||
host_id: 35
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 10
|
||||
num_resource: 3
|
||||
type: 1961
|
||||
host_id: 36
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 13
|
||||
num_resource: 3
|
||||
type: 1961
|
||||
host_id: 30
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 16
|
||||
num_resource: 3
|
||||
type: 1961
|
||||
host_id: 128
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 0
|
||||
num_resource: 10
|
||||
type: 1962
|
||||
host_id: 12
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 10
|
||||
num_resource: 3
|
||||
type: 1962
|
||||
host_id: 35
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 10
|
||||
num_resource: 3
|
||||
type: 1962
|
||||
host_id: 36
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 13
|
||||
num_resource: 3
|
||||
type: 1962
|
||||
host_id: 30
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 16
|
||||
num_resource: 3
|
||||
type: 1962
|
||||
host_id: 128
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 19
|
||||
num_resource: 1
|
||||
type: 1963
|
||||
host_id: 12
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 19
|
||||
num_resource: 1
|
||||
type: 1963
|
||||
host_id: 36
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 19
|
||||
num_resource: 16
|
||||
type: 1964
|
||||
host_id: 12
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 19
|
||||
num_resource: 16
|
||||
type: 1964
|
||||
host_id: 36
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 20
|
||||
num_resource: 1
|
||||
type: 1965
|
||||
host_id: 12
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 35
|
||||
num_resource: 8
|
||||
type: 1966
|
||||
host_id: 12
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 21
|
||||
num_resource: 1
|
||||
type: 1967
|
||||
host_id: 12
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 35
|
||||
num_resource: 8
|
||||
type: 1968
|
||||
host_id: 12
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 22
|
||||
num_resource: 1
|
||||
type: 1969
|
||||
host_id: 12
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 43
|
||||
num_resource: 8
|
||||
type: 1970
|
||||
host_id: 12
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 23
|
||||
num_resource: 1
|
||||
type: 1971
|
||||
host_id: 12
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 43
|
||||
num_resource: 8
|
||||
type: 1972
|
||||
host_id: 12
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 0
|
||||
num_resource: 1
|
||||
type: 2112
|
||||
host_id: 128
|
||||
reserved: 0
|
||||
-
|
||||
start_resource: 2
|
||||
num_resource: 2
|
||||
type: 2122
|
||||
host_id: 12
|
||||
reserved: 0
|
||||
File diff suppressed because it is too large
Load Diff
20
boot/Kconfig
20
boot/Kconfig
@@ -142,6 +142,26 @@ config FIT_CIPHER
|
||||
Enable the feature of data ciphering/unciphering in the tool mkimage
|
||||
and in the u-boot support of the FIT image.
|
||||
|
||||
config FIT_VERITY
|
||||
bool "dm-verity boot parameter generation from FIT metadata"
|
||||
depends on FIT && OF_LIBFDT
|
||||
help
|
||||
When a FIT configuration contains loadable sub-images of type
|
||||
IH_TYPE_FILESYSTEM with a dm-verity subnode, this option enables
|
||||
building the dm-mod.create= and dm-mod.waitfor= kernel
|
||||
command-line parameters from the verity metadata
|
||||
(data-block-size, hash-block-size, num-data-blocks,
|
||||
hash-start-block, algorithm, digest, salt) stored in the FIT.
|
||||
|
||||
The generated parameters reference /dev/fitN block devices that
|
||||
Linux's uImage.FIT block driver assigns to loadable sub-images.
|
||||
|
||||
During FIT parsing (BOOTM_STATE_FINDOTHER), verity cmdline
|
||||
fragments are stored in struct bootm_headers and automatically
|
||||
appended to the bootargs environment variable during
|
||||
BOOTM_STATE_OS_PREP. This works from both the bootm command
|
||||
and BOOTSTD bootmeths.
|
||||
|
||||
config FIT_VERBOSE
|
||||
bool "Show verbose messages when FIT images fail"
|
||||
help
|
||||
|
||||
@@ -566,13 +566,18 @@ int bootdev_get_bootflow(struct udevice *dev, struct bootflow_iter *iter,
|
||||
{
|
||||
const struct bootdev_ops *ops = bootdev_get_ops(dev);
|
||||
|
||||
log_debug("->get_bootflow %s,%x=%p\n", dev->name, iter->part,
|
||||
ops->get_bootflow);
|
||||
bootflow_init(bflow, dev, iter->method);
|
||||
if (!ops->get_bootflow)
|
||||
return default_get_bootflow(dev, iter, bflow);
|
||||
|
||||
return ops->get_bootflow(dev, iter, bflow);
|
||||
if (ops && ops->get_bootflow) {
|
||||
log_debug("->get_bootflow %s,%x=%p\n", dev->name, iter->part,
|
||||
ops->get_bootflow);
|
||||
|
||||
return ops->get_bootflow(dev, iter, bflow);
|
||||
}
|
||||
|
||||
log_debug("->get_bootflow %s,%x is unset\n", dev->name, iter->part);
|
||||
|
||||
return default_get_bootflow(dev, iter, bflow);
|
||||
}
|
||||
|
||||
int bootdev_next_label(struct bootflow_iter *iter, struct udevice **devp,
|
||||
|
||||
13
boot/bootm.c
13
boot/bootm.c
@@ -243,6 +243,13 @@ static int boot_get_kernel(const char *addr_fit, struct bootm_headers *images,
|
||||
|
||||
static int bootm_start(void)
|
||||
{
|
||||
/*
|
||||
* Free dm-verity allocations from a prior boot attempt before
|
||||
* zeroing the structure. The pointers are guaranteed to be valid
|
||||
* or NULL: .bss is zero-initialised, and memset() below zeroes
|
||||
* them again after every boot.
|
||||
*/
|
||||
fit_verity_free(&images);
|
||||
memset((void *)&images, 0, sizeof(images));
|
||||
images.verify = env_get_yesno("verify");
|
||||
|
||||
@@ -1071,6 +1078,12 @@ int bootm_run_states(struct bootm_info *bmi, int states)
|
||||
/* For Linux OS do all substitutions at console processing */
|
||||
if (images->os.os == IH_OS_LINUX)
|
||||
flags = BOOTM_CL_ALL;
|
||||
ret = fit_verity_apply_bootargs(images);
|
||||
if (ret) {
|
||||
printf("dm-verity bootargs failed (err=%d)\n", ret);
|
||||
ret = CMD_RET_FAILURE;
|
||||
goto err;
|
||||
}
|
||||
ret = bootm_process_cmdline_env(flags);
|
||||
if (ret) {
|
||||
printf("Cmdline setup failed (err=%d)\n", ret);
|
||||
|
||||
@@ -500,6 +500,8 @@ static int h_read_settings(struct scene_obj *obj, void *vpriv)
|
||||
tline = (struct scene_obj_textline *)obj;
|
||||
|
||||
val = ofnode_read_prop(node, obj->name, &len);
|
||||
if (!val)
|
||||
return log_msg_ret("tline", -ENOENT);
|
||||
if (len >= tline->max_chars)
|
||||
return log_msg_ret("str", -ENOSPC);
|
||||
strcpy(abuf_data(&tline->buf), val);
|
||||
|
||||
@@ -810,6 +810,11 @@ int boot_get_loadable(struct bootm_headers *images)
|
||||
|
||||
fit_loadable_process(img_type, img_data, img_len);
|
||||
}
|
||||
|
||||
fit_img_result = fit_verity_build_cmdline(buf, conf_noffset,
|
||||
images);
|
||||
if (fit_img_result < 0)
|
||||
return fit_img_result;
|
||||
break;
|
||||
default:
|
||||
printf("The given image format is not supported (corrupt?)\n");
|
||||
|
||||
446
boot/image-fit.c
446
boot/image-fit.c
@@ -21,8 +21,11 @@
|
||||
extern void *aligned_alloc(size_t alignment, size_t size);
|
||||
#else
|
||||
#include <linux/compiler.h>
|
||||
#include <linux/log2.h>
|
||||
#include <linux/sizes.h>
|
||||
#include <env.h>
|
||||
#include <errno.h>
|
||||
#include <hexdump.h>
|
||||
#include <log.h>
|
||||
#include <mapmem.h>
|
||||
#include <asm/io.h>
|
||||
@@ -156,18 +159,10 @@ static void fit_get_debug(const void *fit, int noffset,
|
||||
int fit_get_subimage_count(const void *fit, int images_noffset)
|
||||
{
|
||||
int noffset;
|
||||
int ndepth;
|
||||
int count = 0;
|
||||
|
||||
/* Process its subnodes, print out component images details */
|
||||
for (ndepth = 0, count = 0,
|
||||
noffset = fdt_next_node(fit, images_noffset, &ndepth);
|
||||
(noffset >= 0) && (ndepth > 0);
|
||||
noffset = fdt_next_node(fit, noffset, &ndepth)) {
|
||||
if (ndepth == 1) {
|
||||
count++;
|
||||
}
|
||||
}
|
||||
fdt_for_each_subnode(noffset, fit, images_noffset)
|
||||
count++;
|
||||
|
||||
return count;
|
||||
}
|
||||
@@ -243,6 +238,39 @@ static void fit_image_print_data(const void *fit, int noffset, const char *p,
|
||||
}
|
||||
}
|
||||
|
||||
static __maybe_unused void fit_image_print_dm_verity(const void *fit,
|
||||
int noffset,
|
||||
const char *p)
|
||||
{
|
||||
#if defined(USE_HOSTCC) || CONFIG_IS_ENABLED(FIT_VERITY)
|
||||
const char *algo;
|
||||
const uint8_t *bin;
|
||||
int len, i;
|
||||
|
||||
algo = fdt_getprop(fit, noffset, FIT_VERITY_ALGO_PROP, NULL);
|
||||
if (algo)
|
||||
printf("%s Verity algo: %s\n", p, algo);
|
||||
|
||||
bin = fdt_getprop(fit, noffset, FIT_VERITY_DIGEST_PROP,
|
||||
&len);
|
||||
if (bin && len > 0) {
|
||||
printf("%s Verity hash: ", p);
|
||||
for (i = 0; i < len; i++)
|
||||
printf("%02x", bin[i]);
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
bin = fdt_getprop(fit, noffset, FIT_VERITY_SALT_PROP,
|
||||
&len);
|
||||
if (bin && len > 0) {
|
||||
printf("%s Verity salt: ", p);
|
||||
for (i = 0; i < len; i++)
|
||||
printf("%02x", bin[i]);
|
||||
printf("\n");
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
* fit_image_print_verification_data() - prints out the hash/signature details
|
||||
* @fit: pointer to the FIT format image header
|
||||
@@ -271,6 +299,11 @@ static void fit_image_print_verification_data(const void *fit, int noffset,
|
||||
strlen(FIT_SIG_NODENAME))) {
|
||||
fit_image_print_data(fit, noffset, p, "Sign");
|
||||
}
|
||||
#if defined(USE_HOSTCC) || CONFIG_IS_ENABLED(FIT_VERITY)
|
||||
else if (!strcmp(name, FIT_VERITY_NODENAME)) {
|
||||
fit_image_print_dm_verity(fit, noffset, p);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -291,7 +324,7 @@ static void fit_conf_print(const void *fit, int noffset, const char *p)
|
||||
const char *uname;
|
||||
int ret;
|
||||
int fdt_index, loadables_index;
|
||||
int ndepth;
|
||||
int sub_noffset;
|
||||
|
||||
/* Mandatory properties */
|
||||
ret = fit_get_desc(fit, noffset, &desc);
|
||||
@@ -357,14 +390,8 @@ static void fit_conf_print(const void *fit, int noffset, const char *p)
|
||||
}
|
||||
|
||||
/* Process all hash subnodes of the component configuration node */
|
||||
for (ndepth = 0, noffset = fdt_next_node(fit, noffset, &ndepth);
|
||||
(noffset >= 0) && (ndepth > 0);
|
||||
noffset = fdt_next_node(fit, noffset, &ndepth)) {
|
||||
if (ndepth == 1) {
|
||||
/* Direct child node of the component configuration node */
|
||||
fit_image_print_verification_data(fit, noffset, p);
|
||||
}
|
||||
}
|
||||
fdt_for_each_subnode(sub_noffset, fit, noffset)
|
||||
fit_image_print_verification_data(fit, sub_noffset, p);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -386,8 +413,7 @@ void fit_print_contents(const void *fit)
|
||||
int images_noffset;
|
||||
int confs_noffset;
|
||||
int noffset;
|
||||
int ndepth;
|
||||
int count = 0;
|
||||
int count;
|
||||
int ret;
|
||||
const char *p;
|
||||
time_t timestamp;
|
||||
@@ -424,20 +450,12 @@ void fit_print_contents(const void *fit)
|
||||
}
|
||||
|
||||
/* Process its subnodes, print out component images details */
|
||||
for (ndepth = 0, count = 0,
|
||||
noffset = fdt_next_node(fit, images_noffset, &ndepth);
|
||||
(noffset >= 0) && (ndepth > 0);
|
||||
noffset = fdt_next_node(fit, noffset, &ndepth)) {
|
||||
if (ndepth == 1) {
|
||||
/*
|
||||
* Direct child node of the images parent node,
|
||||
* i.e. component image node.
|
||||
*/
|
||||
printf("%s Image %u (%s)\n", p, count++,
|
||||
fit_get_name(fit, noffset, NULL));
|
||||
count = 0;
|
||||
fdt_for_each_subnode(noffset, fit, images_noffset) {
|
||||
printf("%s Image %u (%s)\n", p, count++,
|
||||
fit_get_name(fit, noffset, NULL));
|
||||
|
||||
fit_image_print(fit, noffset, p);
|
||||
}
|
||||
fit_image_print(fit, noffset, p);
|
||||
}
|
||||
|
||||
/* Find configurations parent node offset */
|
||||
@@ -449,25 +467,17 @@ void fit_print_contents(const void *fit)
|
||||
}
|
||||
|
||||
/* get default configuration unit name from default property */
|
||||
uname = (char *)fdt_getprop(fit, noffset, FIT_DEFAULT_PROP, NULL);
|
||||
uname = (char *)fdt_getprop(fit, confs_noffset, FIT_DEFAULT_PROP, NULL);
|
||||
if (uname)
|
||||
printf("%s Default Configuration: '%s'\n", p, uname);
|
||||
|
||||
/* Process its subnodes, print out configurations details */
|
||||
for (ndepth = 0, count = 0,
|
||||
noffset = fdt_next_node(fit, confs_noffset, &ndepth);
|
||||
(noffset >= 0) && (ndepth > 0);
|
||||
noffset = fdt_next_node(fit, noffset, &ndepth)) {
|
||||
if (ndepth == 1) {
|
||||
/*
|
||||
* Direct child node of the configurations parent node,
|
||||
* i.e. configuration node.
|
||||
*/
|
||||
printf("%s Configuration %u (%s)\n", p, count++,
|
||||
fit_get_name(fit, noffset, NULL));
|
||||
count = 0;
|
||||
fdt_for_each_subnode(noffset, fit, confs_noffset) {
|
||||
printf("%s Configuration %u (%s)\n", p, count++,
|
||||
fit_get_name(fit, noffset, NULL));
|
||||
|
||||
fit_conf_print(fit, noffset, p);
|
||||
}
|
||||
fit_conf_print(fit, noffset, p);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -494,7 +504,6 @@ void fit_image_print(const void *fit, int image_noffset, const char *p)
|
||||
ulong load, entry;
|
||||
const void *data;
|
||||
int noffset;
|
||||
int ndepth;
|
||||
int ret;
|
||||
|
||||
if (!CONFIG_IS_ENABLED(FIT_PRINT))
|
||||
@@ -584,14 +593,8 @@ void fit_image_print(const void *fit, int image_noffset, const char *p)
|
||||
}
|
||||
|
||||
/* Process all hash subnodes of the component image node */
|
||||
for (ndepth = 0, noffset = fdt_next_node(fit, image_noffset, &ndepth);
|
||||
(noffset >= 0) && (ndepth > 0);
|
||||
noffset = fdt_next_node(fit, noffset, &ndepth)) {
|
||||
if (ndepth == 1) {
|
||||
/* Direct child node of the component image node */
|
||||
fit_image_print_verification_data(fit, noffset, p);
|
||||
}
|
||||
}
|
||||
fdt_for_each_subnode(noffset, fit, image_noffset)
|
||||
fit_image_print_verification_data(fit, noffset, p);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1477,7 +1480,6 @@ int fit_all_image_verify(const void *fit)
|
||||
{
|
||||
int images_noffset;
|
||||
int noffset;
|
||||
int ndepth;
|
||||
int count;
|
||||
|
||||
/* Find images parent node offset */
|
||||
@@ -1491,23 +1493,15 @@ int fit_all_image_verify(const void *fit)
|
||||
/* Process all image subnodes, check hashes for each */
|
||||
printf("## Checking hash(es) for FIT Image at %08lx ...\n",
|
||||
(ulong)fit);
|
||||
for (ndepth = 0, count = 0,
|
||||
noffset = fdt_next_node(fit, images_noffset, &ndepth);
|
||||
(noffset >= 0) && (ndepth > 0);
|
||||
noffset = fdt_next_node(fit, noffset, &ndepth)) {
|
||||
if (ndepth == 1) {
|
||||
/*
|
||||
* Direct child node of the images parent node,
|
||||
* i.e. component image node.
|
||||
*/
|
||||
printf(" Hash(es) for Image %u (%s): ", count,
|
||||
fit_get_name(fit, noffset, NULL));
|
||||
count++;
|
||||
count = 0;
|
||||
fdt_for_each_subnode(noffset, fit, images_noffset) {
|
||||
printf(" Hash(es) for Image %u (%s): ", count,
|
||||
fit_get_name(fit, noffset, NULL));
|
||||
count++;
|
||||
|
||||
if (!fit_image_verify(fit, noffset))
|
||||
return 0;
|
||||
printf("\n");
|
||||
}
|
||||
if (!fit_image_verify(fit, noffset))
|
||||
return 0;
|
||||
printf("\n");
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
@@ -1734,7 +1728,6 @@ int fit_check_format(const void *fit, ulong size)
|
||||
|
||||
int fit_conf_find_compat(const void *fit, const void *fdt)
|
||||
{
|
||||
int ndepth = 0;
|
||||
int noffset, confs_noffset, images_noffset;
|
||||
const void *fdt_compat;
|
||||
int fdt_compat_len;
|
||||
@@ -1757,9 +1750,7 @@ int fit_conf_find_compat(const void *fit, const void *fdt)
|
||||
/*
|
||||
* Loop over the configurations in the FIT image.
|
||||
*/
|
||||
for (noffset = fdt_next_node(fit, confs_noffset, &ndepth);
|
||||
(noffset >= 0) && (ndepth > 0);
|
||||
noffset = fdt_next_node(fit, noffset, &ndepth)) {
|
||||
fdt_for_each_subnode(noffset, fit, confs_noffset) {
|
||||
const void *fdt;
|
||||
const char *kfdt_name;
|
||||
int kfdt_noffset, compat_noffset;
|
||||
@@ -1768,9 +1759,6 @@ int fit_conf_find_compat(const void *fit, const void *fdt)
|
||||
size_t sz;
|
||||
int i;
|
||||
|
||||
if (ndepth > 1)
|
||||
continue;
|
||||
|
||||
/* If there's a compat property in the config node, use that. */
|
||||
if (fdt_getprop(fit, noffset, FIT_COMPAT_PROP, NULL)) {
|
||||
fdt = fit; /* search in FIT image */
|
||||
@@ -2642,3 +2630,299 @@ out:
|
||||
return fdt_noffset;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if !defined(USE_HOSTCC) && CONFIG_IS_ENABLED(FIT_VERITY)
|
||||
|
||||
static const char *const verity_opt_props[] = {
|
||||
FIT_VERITY_OPT_RESTART,
|
||||
FIT_VERITY_OPT_PANIC,
|
||||
FIT_VERITY_OPT_RERR,
|
||||
FIT_VERITY_OPT_PERR,
|
||||
FIT_VERITY_OPT_ONCE,
|
||||
};
|
||||
|
||||
/**
|
||||
* fit_verity_build_target() - build one dm-verity target specification
|
||||
* @fit: pointer to the FIT blob
|
||||
* @img_noffset: image node offset containing the dm-verity subnode
|
||||
* @loadable_idx: index of this loadable (for /dev/fitN)
|
||||
* @uname: unit name of the image
|
||||
* @separator: true if a ";" prefix is needed (not the first target)
|
||||
* @buf: output buffer, or NULL to measure only
|
||||
* @bufsize: size of @buf (ignored when @buf is NULL)
|
||||
*
|
||||
* Parses all dm-verity properties from the image's ``dm-verity`` child
|
||||
* node and writes (or measures) a dm target specification string of the
|
||||
* form used by the ``dm-mod.create`` kernel parameter.
|
||||
*
|
||||
* Return: number of characters that would be written (excluding '\0'),
|
||||
* or -ve errno on error (e.g. missing mandatory property)
|
||||
*/
|
||||
static int fit_verity_build_target(const void *fit, int img_noffset,
|
||||
int loadable_idx, const char *uname,
|
||||
bool separator, char *buf, int bufsize)
|
||||
{
|
||||
const char *algorithm;
|
||||
const u8 *digest_raw, *salt_raw;
|
||||
const fdt32_t *val;
|
||||
char *digest_hex = NULL, *salt_hex = NULL, *opt_buf = NULL;
|
||||
int verity_node;
|
||||
unsigned int data_block_size, hash_block_size;
|
||||
int num_data_blocks, hash_start_block;
|
||||
u64 data_sectors;
|
||||
int digest_len, salt_len;
|
||||
int opt_count, opt_off, opt_buf_size;
|
||||
int len;
|
||||
int i;
|
||||
|
||||
verity_node = fdt_subnode_offset(fit, img_noffset, FIT_VERITY_NODENAME);
|
||||
if (verity_node < 0)
|
||||
return -ENOENT;
|
||||
|
||||
/* Mandatory u32 properties */
|
||||
val = fdt_getprop(fit, verity_node, FIT_VERITY_DBS_PROP, NULL);
|
||||
if (!val)
|
||||
return -EINVAL;
|
||||
data_block_size = fdt32_to_cpu(*val);
|
||||
|
||||
val = fdt_getprop(fit, verity_node, FIT_VERITY_HBS_PROP, NULL);
|
||||
if (!val)
|
||||
return -EINVAL;
|
||||
hash_block_size = fdt32_to_cpu(*val);
|
||||
|
||||
val = fdt_getprop(fit, verity_node, FIT_VERITY_NBLK_PROP, NULL);
|
||||
if (!val)
|
||||
return -EINVAL;
|
||||
num_data_blocks = fdt32_to_cpu(*val);
|
||||
|
||||
val = fdt_getprop(fit, verity_node, FIT_VERITY_HBLK_PROP, NULL);
|
||||
if (!val)
|
||||
return -EINVAL;
|
||||
hash_start_block = fdt32_to_cpu(*val);
|
||||
|
||||
if (data_block_size < 512U || !is_power_of_2(data_block_size) ||
|
||||
hash_block_size < 512U || !is_power_of_2(hash_block_size) ||
|
||||
!num_data_blocks)
|
||||
return -EINVAL;
|
||||
|
||||
/* Mandatory string */
|
||||
algorithm = fdt_getprop(fit, verity_node, FIT_VERITY_ALGO_PROP, NULL);
|
||||
if (!algorithm)
|
||||
return -EINVAL;
|
||||
|
||||
/* Mandatory byte arrays */
|
||||
digest_raw = fdt_getprop(fit, verity_node, FIT_VERITY_DIGEST_PROP,
|
||||
&digest_len);
|
||||
if (!digest_raw || digest_len <= 0)
|
||||
return -EINVAL;
|
||||
|
||||
salt_raw = fdt_getprop(fit, verity_node, FIT_VERITY_SALT_PROP,
|
||||
&salt_len);
|
||||
if (!salt_raw || salt_len <= 0)
|
||||
return -EINVAL;
|
||||
|
||||
/* Hex-encode digest and salt into dynamically sized buffers */
|
||||
digest_hex = malloc(digest_len * 2 + 1);
|
||||
salt_hex = malloc(salt_len * 2 + 1);
|
||||
if (!digest_hex || !salt_hex) {
|
||||
len = -ENOMEM;
|
||||
goto out;
|
||||
}
|
||||
*bin2hex(digest_hex, digest_raw, digest_len) = '\0';
|
||||
*bin2hex(salt_hex, salt_raw, salt_len) = '\0';
|
||||
|
||||
data_sectors = (u64)num_data_blocks * ((u64)data_block_size / 512);
|
||||
|
||||
/* Compute space needed for optional boolean properties */
|
||||
opt_buf_size = 1; /* NUL terminator */
|
||||
for (i = 0; i < ARRAY_SIZE(verity_opt_props); i++)
|
||||
opt_buf_size += strlen(verity_opt_props[i]) + 1;
|
||||
opt_buf = malloc(opt_buf_size);
|
||||
if (!opt_buf) {
|
||||
len = -ENOMEM;
|
||||
goto out;
|
||||
}
|
||||
|
||||
/* Collect optional boolean properties */
|
||||
opt_count = 0;
|
||||
opt_off = 0;
|
||||
opt_buf[0] = '\0';
|
||||
for (i = 0; i < ARRAY_SIZE(verity_opt_props); i++) {
|
||||
if (fdt_getprop(fit, verity_node,
|
||||
verity_opt_props[i], NULL)) {
|
||||
const char *s = verity_opt_props[i];
|
||||
int slen = strlen(s);
|
||||
|
||||
if (opt_off)
|
||||
opt_buf[opt_off++] = ' ';
|
||||
/* Copy with hyphen-to-underscore conversion */
|
||||
while (slen-- > 0) {
|
||||
opt_buf[opt_off++] =
|
||||
(*s == '-') ? '_' : *s;
|
||||
s++;
|
||||
}
|
||||
opt_buf[opt_off] = '\0';
|
||||
opt_count++;
|
||||
}
|
||||
}
|
||||
|
||||
/* Emit (or measure) the target spec */
|
||||
len = snprintf(buf, buf ? bufsize : 0,
|
||||
"%s%s,,, ro,0 %llu verity 1 /dev/fit%d /dev/fit%d %u %u %d %d %s %s %s",
|
||||
separator ? ";" : "", uname,
|
||||
(unsigned long long)data_sectors, loadable_idx, loadable_idx,
|
||||
data_block_size, hash_block_size,
|
||||
num_data_blocks, hash_start_block,
|
||||
algorithm, digest_hex, salt_hex);
|
||||
if (opt_count) {
|
||||
int extra = snprintf(buf ? buf + len : NULL,
|
||||
buf ? bufsize - len : 0,
|
||||
" %d %s", opt_count, opt_buf);
|
||||
len += extra;
|
||||
}
|
||||
|
||||
out:
|
||||
free(digest_hex);
|
||||
free(salt_hex);
|
||||
free(opt_buf);
|
||||
return len;
|
||||
}
|
||||
|
||||
int fit_verity_build_cmdline(const void *fit, int conf_noffset,
|
||||
struct bootm_headers *images)
|
||||
{
|
||||
int images_noffset;
|
||||
int dm_create_len = 0, dm_waitfor_len = 0;
|
||||
char *dm_create = NULL, *dm_waitfor = NULL;
|
||||
const char *uname;
|
||||
int loadable_idx;
|
||||
int found = 0;
|
||||
int ret = 0;
|
||||
|
||||
images_noffset = fdt_path_offset(fit, FIT_IMAGES_PATH);
|
||||
if (images_noffset < 0)
|
||||
return 0;
|
||||
|
||||
for (loadable_idx = 0;
|
||||
(uname = fdt_stringlist_get(fit, conf_noffset,
|
||||
FIT_LOADABLE_PROP,
|
||||
loadable_idx, NULL));
|
||||
loadable_idx++) {
|
||||
int img_noffset, need;
|
||||
u8 img_type;
|
||||
char *tmp;
|
||||
|
||||
img_noffset = fdt_subnode_offset(fit, images_noffset, uname);
|
||||
if (img_noffset < 0)
|
||||
continue;
|
||||
|
||||
if (fit_image_get_type(fit, img_noffset, &img_type) ||
|
||||
img_type != IH_TYPE_FILESYSTEM)
|
||||
continue;
|
||||
|
||||
/* Measure first, then allocate and write */
|
||||
need = fit_verity_build_target(fit, img_noffset,
|
||||
loadable_idx, uname,
|
||||
found > 0, NULL, 0);
|
||||
if (need == -ENOENT)
|
||||
continue; /* no dm-verity subnode -- fine */
|
||||
if (need < 0) {
|
||||
log_err("FIT: broken dm-verity metadata in '%s'\n",
|
||||
uname);
|
||||
ret = need;
|
||||
goto err;
|
||||
}
|
||||
|
||||
tmp = realloc(dm_create, dm_create_len + need + 1);
|
||||
if (!tmp) {
|
||||
ret = -ENOMEM;
|
||||
goto err;
|
||||
}
|
||||
dm_create = tmp;
|
||||
fit_verity_build_target(fit, img_noffset, loadable_idx,
|
||||
uname, found > 0,
|
||||
dm_create + dm_create_len,
|
||||
need + 1);
|
||||
dm_create_len += need;
|
||||
|
||||
/* Grow dm_waitfor buffer */
|
||||
need = snprintf(NULL, 0, "%s/dev/fit%d",
|
||||
dm_waitfor_len ? "," : "",
|
||||
loadable_idx);
|
||||
tmp = realloc(dm_waitfor, dm_waitfor_len + need + 1);
|
||||
if (!tmp) {
|
||||
ret = -ENOMEM;
|
||||
goto err;
|
||||
}
|
||||
dm_waitfor = tmp;
|
||||
sprintf(dm_waitfor + dm_waitfor_len, "%s/dev/fit%d",
|
||||
dm_waitfor_len ? "," : "",
|
||||
loadable_idx);
|
||||
dm_waitfor_len += need;
|
||||
|
||||
found++;
|
||||
}
|
||||
|
||||
if (found) {
|
||||
/* Transfer ownership to the bootm_headers */
|
||||
images->dm_mod_create = dm_create;
|
||||
images->dm_mod_waitfor = dm_waitfor;
|
||||
} else {
|
||||
free(dm_create);
|
||||
free(dm_waitfor);
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
err:
|
||||
free(dm_create);
|
||||
free(dm_waitfor);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* fmt used by both the measurement and the actual write of bootargs.
|
||||
* Shared to guarantee they stay in sync.
|
||||
*/
|
||||
#define VERITY_BOOTARGS_FMT "%s%sdm-mod.create=\"%s\" dm-mod.waitfor=\"%s\""
|
||||
|
||||
int fit_verity_apply_bootargs(const struct bootm_headers *images)
|
||||
{
|
||||
const char *existing;
|
||||
char *newargs;
|
||||
int len;
|
||||
|
||||
if (!images->dm_mod_create)
|
||||
return 0;
|
||||
|
||||
existing = env_get("bootargs");
|
||||
if (!existing)
|
||||
existing = "";
|
||||
|
||||
/* Measure */
|
||||
len = snprintf(NULL, 0, VERITY_BOOTARGS_FMT,
|
||||
existing, existing[0] ? " " : "",
|
||||
images->dm_mod_create, images->dm_mod_waitfor);
|
||||
|
||||
newargs = malloc(len + 1);
|
||||
if (!newargs)
|
||||
return -ENOMEM;
|
||||
|
||||
snprintf(newargs, len + 1, VERITY_BOOTARGS_FMT,
|
||||
existing, existing[0] ? " " : "",
|
||||
images->dm_mod_create, images->dm_mod_waitfor);
|
||||
|
||||
env_set("bootargs", newargs);
|
||||
free(newargs);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void fit_verity_free(struct bootm_headers *images)
|
||||
{
|
||||
free(images->dm_mod_create);
|
||||
free(images->dm_mod_waitfor);
|
||||
images->dm_mod_create = NULL;
|
||||
images->dm_mod_waitfor = NULL;
|
||||
}
|
||||
#endif /* FIT_VERITY */
|
||||
|
||||
@@ -1871,8 +1871,8 @@ config CMD_PVBLOCK
|
||||
|
||||
config CMD_VIRTIO
|
||||
bool "virtio"
|
||||
depends on VIRTIO
|
||||
default y if VIRTIO
|
||||
depends on VIRTIO_BLK
|
||||
default y if VIRTIO_BLK
|
||||
help
|
||||
VirtIO block device support
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
#include <dm/device-internal.h>
|
||||
#include <dm/uclass-internal.h>
|
||||
|
||||
/* Note: depends on enum ec_current_image */
|
||||
/* Note: depends on enum ec_image */
|
||||
static const char * const ec_current_image_name[] = {"unknown", "RO", "RW"};
|
||||
|
||||
/**
|
||||
@@ -312,7 +312,7 @@ static int do_cros_ec(struct cmd_tbl *cmdtp, int flag, int argc,
|
||||
if (ret)
|
||||
printf("Error: %d\n", ret);
|
||||
} else if (0 == strcmp("curimage", cmd)) {
|
||||
enum ec_current_image image;
|
||||
enum ec_image image;
|
||||
|
||||
if (cros_ec_read_current_image(dev, &image)) {
|
||||
debug("%s: Could not read KBC image\n", __func__);
|
||||
|
||||
29
cmd/ufetch.c
29
cmd/ufetch.c
@@ -157,26 +157,37 @@ static int do_ufetch(struct cmd_tbl *cmdtp, int flag, int argc,
|
||||
printf(" (%d baud)", gd->baudrate);
|
||||
putc('\n');
|
||||
break;
|
||||
case FEATURES:
|
||||
case FEATURES: {
|
||||
const char *sep = "";
|
||||
|
||||
printf("Features:" RESET " ");
|
||||
if (IS_ENABLED(CONFIG_NET_LEGACY))
|
||||
printf("Net");
|
||||
if (IS_ENABLED(CONFIG_EFI_LOADER))
|
||||
printf(", EFI");
|
||||
if (IS_ENABLED(CONFIG_CMD_CAT))
|
||||
printf(", cat :3");
|
||||
if (IS_ENABLED(CONFIG_NET)) {
|
||||
printf("%sNet", sep);
|
||||
sep = ", ";
|
||||
}
|
||||
if (IS_ENABLED(CONFIG_EFI_LOADER)) {
|
||||
printf("%sEFI", sep);
|
||||
sep = ", ";
|
||||
}
|
||||
if (IS_ENABLED(CONFIG_CMD_CAT)) {
|
||||
printf("%scat :3", sep);
|
||||
sep = ", ";
|
||||
}
|
||||
#ifdef CONFIG_ARM64
|
||||
switch (current_el()) {
|
||||
case 2:
|
||||
printf(", VMs");
|
||||
printf("%sVMs", sep);
|
||||
sep = ", ";
|
||||
break;
|
||||
case 3:
|
||||
printf(", full control!");
|
||||
printf("%sfull control!", sep);
|
||||
sep = ", ";
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
printf("\n");
|
||||
break;
|
||||
}
|
||||
case RELOCATION:
|
||||
if (gd->flags & GD_FLG_SKIP_RELOC)
|
||||
printf("Relocated:" RESET " no\n");
|
||||
|
||||
@@ -448,6 +448,7 @@ int bloblist_new(ulong addr, uint size, uint flags, uint align_log2)
|
||||
hdr->align_log2 = align_log2 ? align_log2 : BLOBLIST_BLOB_ALIGN_LOG2;
|
||||
hdr->chksum = 0;
|
||||
gd->bloblist = hdr;
|
||||
gd->flags |= GD_FLG_BLOBLIST_READY;
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -475,6 +476,7 @@ int bloblist_check(ulong addr, uint size)
|
||||
return log_msg_ret("Bad checksum", -EIO);
|
||||
}
|
||||
gd->bloblist = hdr;
|
||||
gd->flags |= GD_FLG_BLOBLIST_READY;
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -576,90 +578,88 @@ int __weak xferlist_from_boot_arg(ulong __always_unused *addr)
|
||||
return -ENOENT;
|
||||
}
|
||||
|
||||
int bloblist_init(void)
|
||||
bool bloblist_exists(void)
|
||||
{
|
||||
bool fixed = IS_ENABLED(CONFIG_BLOBLIST_FIXED);
|
||||
int ret = 0;
|
||||
ulong addr = 0, size;
|
||||
int ret;
|
||||
ulong addr = 0;
|
||||
|
||||
/* Check if a valid transfer list passed in */
|
||||
if (!xferlist_from_boot_arg(&addr)) {
|
||||
size = bloblist_get_total_size();
|
||||
} else {
|
||||
/*
|
||||
* If U-Boot is not in the first phase, an existing bloblist must
|
||||
* be at a fixed address.
|
||||
*/
|
||||
bool from_addr = fixed && !xpl_is_first_phase();
|
||||
if (!xferlist_from_boot_arg(&addr))
|
||||
goto found;
|
||||
|
||||
/*
|
||||
* If Firmware Handoff is mandatory but no transfer list is
|
||||
* observed, report it as an error.
|
||||
*/
|
||||
if (IS_ENABLED(CONFIG_BLOBLIST_PASSAGE_MANDATORY))
|
||||
return -ENOENT;
|
||||
/*
|
||||
* If Firmware Handoff is mandatory but no transfer list is
|
||||
* observed, report it as an error.
|
||||
*/
|
||||
if (IS_ENABLED(CONFIG_BLOBLIST_PASSAGE_MANDATORY))
|
||||
return false;
|
||||
|
||||
ret = -ENOENT;
|
||||
/*
|
||||
* We have checked for a valid transfer list being passed. At this
|
||||
* point, if we do not have a fixed address for the bloblist, we cannot
|
||||
* be provided with one.
|
||||
*/
|
||||
if (xpl_is_first_phase() || !IS_ENABLED(CONFIG_BLOBLIST_FIXED))
|
||||
return false;
|
||||
|
||||
if (xpl_prev_phase() == PHASE_TPL &&
|
||||
!IS_ENABLED(CONFIG_TPL_BLOBLIST))
|
||||
from_addr = false;
|
||||
if (fixed)
|
||||
addr = IF_ENABLED_INT(CONFIG_BLOBLIST_FIXED,
|
||||
CONFIG_BLOBLIST_ADDR);
|
||||
size = CONFIG_BLOBLIST_SIZE;
|
||||
/*
|
||||
* Check for a valid list as the configured address.
|
||||
*/
|
||||
addr = IF_ENABLED_INT(CONFIG_BLOBLIST_FIXED,
|
||||
CONFIG_BLOBLIST_ADDR);
|
||||
ret = bloblist_check(addr, CONFIG_BLOBLIST_SIZE);
|
||||
if (!ret)
|
||||
goto found;
|
||||
|
||||
if (from_addr)
|
||||
ret = bloblist_check(addr, size);
|
||||
|
||||
if (ret)
|
||||
log_warning("Bloblist at %lx not found (err=%d)\n",
|
||||
addr, ret);
|
||||
else
|
||||
/* Get the real size */
|
||||
size = gd->bloblist->total_size;
|
||||
}
|
||||
|
||||
if (ret) {
|
||||
/*
|
||||
* If we don't have a bloblist from a fixed address, or the one
|
||||
* in the fixed address is not valid. we must allocate the
|
||||
* memory for it now.
|
||||
*/
|
||||
if (CONFIG_IS_ENABLED(BLOBLIST_ALLOC)) {
|
||||
void *ptr = memalign(BLOBLIST_ALIGN, size);
|
||||
|
||||
if (!ptr)
|
||||
return log_msg_ret("alloc", -ENOMEM);
|
||||
addr = map_to_sysmem(ptr);
|
||||
} else if (!fixed) {
|
||||
return log_msg_ret("BLOBLIST_FIXED is not enabled",
|
||||
ret);
|
||||
}
|
||||
log_debug("Creating new bloblist size %lx at %lx\n", size,
|
||||
addr);
|
||||
ret = bloblist_new(addr, size, 0, 0);
|
||||
} else {
|
||||
log_debug("Found existing bloblist size %lx at %lx\n", size,
|
||||
addr);
|
||||
}
|
||||
|
||||
if (ret)
|
||||
return log_msg_ret("ini", ret);
|
||||
gd->flags |= GD_FLG_BLOBLIST_READY;
|
||||
log_debug("Bloblist at %lx not found (err=%d)\n", addr, ret);
|
||||
return false;
|
||||
|
||||
found:
|
||||
#ifdef DEBUG
|
||||
bloblist_show_stats();
|
||||
bloblist_show_list();
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
return true;
|
||||
}
|
||||
|
||||
int bloblist_maybe_init(void)
|
||||
int bloblist_init(void)
|
||||
{
|
||||
if (CONFIG_IS_ENABLED(BLOBLIST) && !(gd->flags & GD_FLG_BLOBLIST_READY))
|
||||
return bloblist_init();
|
||||
int ret;
|
||||
ulong addr = 0, size = CONFIG_BLOBLIST_SIZE;
|
||||
|
||||
if (gd->flags & GD_FLG_BLOBLIST_READY) {
|
||||
log_debug("Found existing bloblist size %x at %p\n",
|
||||
gd->bloblist->total_size, gd->bloblist);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* If Firmware Handoff is mandatory but no transfer list has been
|
||||
* observed by fdtdec_setup, report it as an error.
|
||||
*/
|
||||
if (IS_ENABLED(CONFIG_BLOBLIST_PASSAGE_MANDATORY))
|
||||
return -ENOENT;
|
||||
|
||||
/*
|
||||
* If we don't have an existing bloblist, we either need
|
||||
* to allocate one now, or initialize the fixed address
|
||||
* space as a bloblist.
|
||||
*/
|
||||
if (CONFIG_IS_ENABLED(BLOBLIST_ALLOC)) {
|
||||
void *ptr = memalign(BLOBLIST_ALIGN, size);
|
||||
|
||||
if (!ptr)
|
||||
return log_msg_ret("alloc", -ENOMEM);
|
||||
addr = map_to_sysmem(ptr);
|
||||
} else
|
||||
addr = IF_ENABLED_INT(CONFIG_BLOBLIST_FIXED,
|
||||
CONFIG_BLOBLIST_ADDR);
|
||||
|
||||
log_debug("Creating new bloblist size %lx at %lx\n", size,
|
||||
addr);
|
||||
ret = bloblist_new(addr, size, 0, 0);
|
||||
if (ret)
|
||||
return log_msg_ret("ini", ret);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -687,7 +687,9 @@ int bloblist_check_reg_conv(ulong rfdt, ulong rzero, ulong rsig, ulong xlist)
|
||||
return ret;
|
||||
|
||||
if (rfdt != (ulong)bloblist_find(BLOBLISTT_CONTROL_FDT, 0)) {
|
||||
gd->bloblist = NULL; /* Reset the gd bloblist pointer */
|
||||
/* Remove this bloblist from gd */
|
||||
gd->bloblist = NULL;
|
||||
gd->flags &= ~GD_FLG_BLOBLIST_READY;
|
||||
return -EIO;
|
||||
}
|
||||
|
||||
|
||||
@@ -894,7 +894,9 @@ static void initcall_run_f(void)
|
||||
INITCALL(log_init);
|
||||
INITCALL(initf_bootstage); /* uses its own timer, so does not need DM */
|
||||
INITCALL(event_init);
|
||||
INITCALL(bloblist_maybe_init);
|
||||
#if CONFIG_IS_ENABLED(BLOBLIST)
|
||||
INITCALL(bloblist_init);
|
||||
#endif
|
||||
INITCALL(setup_spl_handoff);
|
||||
#if CONFIG_IS_ENABLED(CONSOLE_RECORD_INIT_F)
|
||||
INITCALL(console_record_init);
|
||||
|
||||
@@ -138,11 +138,9 @@ int run_command_list(const char *cmd, int len, int flag)
|
||||
#endif
|
||||
}
|
||||
if (need_buff) {
|
||||
buff = malloc(len + 1);
|
||||
buff = memdup_nul(cmd, len);
|
||||
if (!buff)
|
||||
return 1;
|
||||
memcpy(buff, cmd, len);
|
||||
buff[len] = '\0';
|
||||
}
|
||||
#ifdef CONFIG_HUSH_PARSER
|
||||
if (use_hush_old()) {
|
||||
|
||||
@@ -367,11 +367,15 @@ int cmd_auto_complete(const char *const prompt, char *buf, int *np, int *colp)
|
||||
int i, j, k, len, seplen, argc;
|
||||
int cnt;
|
||||
char last_char;
|
||||
#ifdef CONFIG_CMDLINE_PS_SUPPORT
|
||||
const char *ps_prompt = env_get("PS1");
|
||||
#else
|
||||
const char *ps_prompt = CONFIG_SYS_PROMPT;
|
||||
#endif
|
||||
const char *ps_prompt;
|
||||
|
||||
if (IS_ENABLED(CONFIG_CMDLINE_PS_SUPPORT)) {
|
||||
ps_prompt = env_get("PS1");
|
||||
|
||||
if (!ps_prompt)
|
||||
ps_prompt = CONFIG_SYS_PROMPT;
|
||||
} else
|
||||
ps_prompt = CONFIG_SYS_PROMPT;
|
||||
|
||||
if (strcmp(prompt, ps_prompt) != 0)
|
||||
return 0; /* not in normal console */
|
||||
|
||||
@@ -220,7 +220,7 @@ source "common/spl/Kconfig.nxp"
|
||||
|
||||
config HANDOFF
|
||||
bool "Pass hand-off information from SPL to U-Boot proper"
|
||||
depends on BLOBLIST
|
||||
depends on BLOBLIST_FIXED
|
||||
help
|
||||
It is useful to be able to pass information from SPL to U-Boot
|
||||
proper to preserve state that is known in SPL and is needed in U-Boot.
|
||||
|
||||
@@ -88,6 +88,7 @@ static int read_auth_container(struct spl_image_info *spl_image,
|
||||
struct spl_load_info *info, ulong offset)
|
||||
{
|
||||
struct container_hdr *container = NULL;
|
||||
struct container_hdr *authhdr;
|
||||
u16 length;
|
||||
int i, size, ret = 0;
|
||||
|
||||
@@ -140,15 +141,19 @@ static int read_auth_container(struct spl_image_info *spl_image,
|
||||
}
|
||||
}
|
||||
|
||||
authhdr = container;
|
||||
|
||||
#ifdef CONFIG_AHAB_BOOT
|
||||
ret = ahab_auth_cntr_hdr(container, length);
|
||||
if (ret)
|
||||
authhdr = ahab_auth_cntr_hdr(authhdr, length);
|
||||
if (!authhdr) {
|
||||
ret = -EINVAL;
|
||||
goto end_auth;
|
||||
}
|
||||
#endif
|
||||
|
||||
for (i = 0; i < container->num_images; i++) {
|
||||
for (i = 0; i < authhdr->num_images; i++) {
|
||||
struct boot_img_t *image = read_auth_image(spl_image, info,
|
||||
container, i,
|
||||
authhdr, i,
|
||||
offset);
|
||||
|
||||
if (!image) {
|
||||
|
||||
@@ -159,12 +159,12 @@ static int splash_select_fs_dev(struct splash_location *location)
|
||||
res = -ENODEV;
|
||||
break;
|
||||
default:
|
||||
printf("Error: unsupported location storage.\n");
|
||||
printf("Error: %s: unsupported location storage.\n", __func__);
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
if (res)
|
||||
printf("Error: could not access storage.\n");
|
||||
printf("Error: %s: could not access storage.\n", __func__);
|
||||
|
||||
return res;
|
||||
}
|
||||
@@ -284,7 +284,8 @@ static int splash_load_fs(struct splash_location *location, ulong bmp_load_addr)
|
||||
|
||||
res = fs_size(splash_file, &bmp_size);
|
||||
if (res) {
|
||||
printf("Error (%d): cannot determine file size\n", res);
|
||||
printf("Error: %s: cannot determine file size (%d)\n",
|
||||
__func__, res);
|
||||
goto out;
|
||||
}
|
||||
|
||||
|
||||
@@ -217,27 +217,11 @@ struct stdio_dev *stdio_get_by_name(const char *name)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
struct stdio_dev *stdio_clone(struct stdio_dev *dev)
|
||||
{
|
||||
struct stdio_dev *_dev;
|
||||
|
||||
if (!dev)
|
||||
return NULL;
|
||||
|
||||
_dev = calloc(1, sizeof(struct stdio_dev));
|
||||
if (!_dev)
|
||||
return NULL;
|
||||
|
||||
memcpy(_dev, dev, sizeof(struct stdio_dev));
|
||||
|
||||
return _dev;
|
||||
}
|
||||
|
||||
int stdio_register_dev(struct stdio_dev *dev, struct stdio_dev **devp)
|
||||
{
|
||||
struct stdio_dev *_dev;
|
||||
|
||||
_dev = stdio_clone(dev);
|
||||
_dev = memdup(dev, sizeof(*dev));
|
||||
if (!_dev)
|
||||
return -ENODEV;
|
||||
list_add_tail(&_dev->list, &devs.list);
|
||||
|
||||
16
configs/am62x_a53_splashscreen.config
Normal file
16
configs/am62x_a53_splashscreen.config
Normal file
@@ -0,0 +1,16 @@
|
||||
CONFIG_FDT_SIMPLEFB=y
|
||||
CONFIG_VIDEO=y
|
||||
CONFIG_SYS_WHITE_ON_BLACK=y
|
||||
CONFIG_SPL_VIDEO_TIDSS=y
|
||||
CONFIG_BMP_24BPP=y
|
||||
CONFIG_BMP_32BPP=y
|
||||
CONFIG_SPL_VIDEO=y
|
||||
CONFIG_SPL_SPLASH_SCREEN=y
|
||||
CONFIG_SPL_SYS_WHITE_ON_BLACK=y
|
||||
CONFIG_SPL_SPLASH_SCREEN_ALIGN=y
|
||||
CONFIG_SPL_SPLASH_SOURCE=y
|
||||
CONFIG_SPL_BMP=y
|
||||
CONFIG_SPL_VIDEO_BMP_GZIP=y
|
||||
CONFIG_SPL_BMP_24BPP=y
|
||||
CONFIG_SPL_BMP_32BPP=y
|
||||
CONFIG_SPL_HIDE_LOGO_VERSION=y
|
||||
@@ -24,7 +24,7 @@ CONFIG_SPL_HAS_BSS_LINKER_SECTION=y
|
||||
CONFIG_SPL_BSS_START_ADDR=0x80c80000
|
||||
CONFIG_SPL_BSS_MAX_SIZE=0x80000
|
||||
CONFIG_SPL_STACK_R=y
|
||||
CONFIG_SPL_SIZE_LIMIT=0x40000
|
||||
CONFIG_SPL_SIZE_LIMIT=0x80000
|
||||
CONFIG_SPL_SIZE_LIMIT_PROVIDE_STACK=0x800
|
||||
CONFIG_SPL_FS_FAT=y
|
||||
CONFIG_SPL_LIBDISK_SUPPORT=y
|
||||
@@ -141,3 +141,4 @@ CONFIG_EFI_SET_TIME=y
|
||||
|
||||
#include <configs/k3_efi_capsule.config>
|
||||
#include <configs/am62x_a53_usbdfu.config>
|
||||
#include <configs/am62x_a53_splashscreen.config>
|
||||
@@ -1,4 +1,5 @@
|
||||
#include <configs/am62x_evm_a53_defconfig>
|
||||
#include <configs/am62x_evm_prune_splashscreen.config>
|
||||
|
||||
CONFIG_ARM=y
|
||||
CONFIG_ARCH_K3=y
|
||||
|
||||
16
configs/am62x_evm_prune_splashscreen.config
Normal file
16
configs/am62x_evm_prune_splashscreen.config
Normal file
@@ -0,0 +1,16 @@
|
||||
CONFIG_FDT_SIMPLEFB=n
|
||||
CONFIG_VIDEO=n
|
||||
CONFIG_SYS_WHITE_ON_BLACK=n
|
||||
CONFIG_SPL_VIDEO_TIDSS=n
|
||||
CONFIG_BMP_24BPP=n
|
||||
CONFIG_BMP_32BPP=n
|
||||
CONFIG_SPL_VIDEO=n
|
||||
CONFIG_SPL_SPLASH_SCREEN=n
|
||||
CONFIG_SPL_SYS_WHITE_ON_BLACK=n
|
||||
CONFIG_SPL_SPLASH_SCREEN_ALIGN=n
|
||||
CONFIG_SPL_SPLASH_SOURCE=n
|
||||
CONFIG_SPL_BMP=n
|
||||
CONFIG_SPL_VIDEO_BMP_GZIP=n
|
||||
CONFIG_SPL_BMP_24BPP=n
|
||||
CONFIG_SPL_BMP_32BPP=n
|
||||
CONFIG_SPL_HIDE_LOGO_VERSION=n
|
||||
@@ -55,6 +55,7 @@ CONFIG_CMD_UBI=y
|
||||
CONFIG_OF_CONTROL=y
|
||||
CONFIG_DTB_RESELECT=y
|
||||
CONFIG_MULTI_DTB_FIT=y
|
||||
CONFIG_ENV_FLAGS_LIST_STATIC="ethaddr:mw,serial#:sw,board_type:sw,sysnum:dw,panel:sw,ipaddr:iw,serverip:iw"
|
||||
CONFIG_ENV_OVERWRITE=y
|
||||
CONFIG_ENV_IS_IN_SPI_FLASH=y
|
||||
CONFIG_ENV_SPI_EARLY=y
|
||||
|
||||
@@ -55,6 +55,7 @@ CONFIG_CMD_UBI=y
|
||||
CONFIG_OF_CONTROL=y
|
||||
CONFIG_DTB_RESELECT=y
|
||||
CONFIG_MULTI_DTB_FIT=y
|
||||
CONFIG_ENV_FLAGS_LIST_STATIC="ethaddr:mw,serial#:sw,board_type:sw,sysnum:dw,panel:sw,ipaddr:iw,serverip:iw"
|
||||
CONFIG_ENV_OVERWRITE=y
|
||||
CONFIG_ENV_IS_IN_SPI_FLASH=y
|
||||
CONFIG_ENV_SPI_EARLY=y
|
||||
|
||||
@@ -41,6 +41,7 @@ CONFIG_CMD_EXT4=y
|
||||
CONFIG_CMD_FAT=y
|
||||
CONFIG_CMD_FS_GENERIC=y
|
||||
# CONFIG_OF_UPSTREAM is not set
|
||||
CONFIG_ENV_FLAGS_LIST_STATIC="BOOT_A_LEFT:dw,BOOT_B_LEFT:dw,BOOT_ORDER:sw"
|
||||
CONFIG_ENV_IS_IN_MMC=y
|
||||
CONFIG_ENV_RELOC_GD_ENV_ADDR=y
|
||||
CONFIG_ENV_MMC_EMMC_HW_PARTITION=2
|
||||
|
||||
@@ -74,6 +74,7 @@ CONFIG_EFI_PARTITION=y
|
||||
CONFIG_SPL_OF_CONTROL=y
|
||||
CONFIG_MULTI_DTB_FIT=y
|
||||
CONFIG_OF_SPL_REMOVE_PROPS="pinctrl-0 pinctrl-names clocks clock-names interrupt-parent"
|
||||
CONFIG_ENV_FLAGS_LIST_STATIC="bootset:bw,clone_pending:bw,endurance_test:bw,env_persisted:bw,factory_reset:bw,fdtcontroladdr:xw,fitpart:dw,mmcpart:dw,production:bw,ustate:dw"
|
||||
CONFIG_ENV_OVERWRITE=y
|
||||
CONFIG_ENV_IS_IN_MMC=y
|
||||
CONFIG_ENV_REDUNDANT=y
|
||||
|
||||
@@ -7,7 +7,7 @@ CONFIG_SPL_LIBCOMMON_SUPPORT=y
|
||||
CONFIG_ENV_SIZE=0x1000
|
||||
CONFIG_ENV_OFFSET=0x400000
|
||||
CONFIG_DM_GPIO=y
|
||||
CONFIG_DEFAULT_DEVICE_TREE="imx8mq-phanbell"
|
||||
CONFIG_DEFAULT_DEVICE_TREE="freescale/imx8mq-phanbell"
|
||||
CONFIG_TARGET_IMX8MQ_PHANBELL=y
|
||||
CONFIG_DM_RESET=y
|
||||
CONFIG_SYS_MONITOR_LEN=524288
|
||||
|
||||
@@ -10,7 +10,7 @@ CONFIG_SYS_I2C_MXC_I2C1=y
|
||||
CONFIG_SYS_I2C_MXC_I2C2=y
|
||||
CONFIG_SYS_I2C_MXC_I2C3=y
|
||||
CONFIG_DM_GPIO=y
|
||||
CONFIG_DEFAULT_DEVICE_TREE="imx8mq-mnt-reform2"
|
||||
CONFIG_DEFAULT_DEVICE_TREE="freescale/imx8mq-mnt-reform2"
|
||||
CONFIG_TARGET_IMX8MQ_REFORM2=y
|
||||
CONFIG_DM_RESET=y
|
||||
CONFIG_SYS_MONITOR_LEN=524288
|
||||
|
||||
@@ -92,6 +92,7 @@ CONFIG_CMD_EXT4=y
|
||||
CONFIG_CMD_FAT=y
|
||||
CONFIG_CMD_FS_GENERIC=y
|
||||
CONFIG_SPL_OF_CONTROL=y
|
||||
CONFIG_ENV_FLAGS_LIST_STATIC="bootcount:dw,bootdelay:sw,bootlimit:dw,partitionset_active:sw,rastate:dw,sig_a:sw,sig_b:sw,target_env:sw,upgrade_available:dw,ustate:dw"
|
||||
CONFIG_ENV_OVERWRITE=y
|
||||
CONFIG_ENV_IS_IN_MMC=y
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user