mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-17 02:15:02 +00:00
Prepare v2024.04-rc5
-----BEGIN PGP SIGNATURE----- iQGzBAABCgAdFiEEGjx/cOCPqxcHgJu/FHw5/5Y0tywFAmYCK3wACgkQFHw5/5Y0 tyzV9wwAo6JN9dVBBivLFROeDb24t3TmgT7e0AEql6Vjfj1x9xzW/L7ki0cdbGjW sNmqPR9ObnONv5hxMV1nlUE6lRYOj/eRaWZsz1N8e02VFhegePNgd/ZDeaPZyO10 mDhKdGh5yr0AaIer1Yj21b7QKxrriAN9ct/qR4sw2j1AlxF959PSw0qOzb6wjpDp I3QCbUkmKt6ATwyYzZnM0mifs0fb1u4M6C91V50SsyBBC30veEL8Bpgd83rTtZl+ gm1ruekfKXhmT6V92Ok3maFNU+odF6X/R1YcM2n3DTso+MugPHFYTj5VZy5qZN3+ 4x6wHTQLDr81vPz7hx4gDTK42nVplFnIHp8p9WBSH6Zs7gCYPyZAfCPmF4EzBVfo bjpixpGuhmM8yQweD5nFWpvnXK/e5nbfxW2vt85G+cjjNbw0OZ182UJH8PEAUam6 786p5y1YyS9pFgJgLSHrQ041E6EQ4QjMpNbVF+7MUpe49emA0l/V7VLSNGWpeKzg tcuO1ycK =4m/d -----END PGP SIGNATURE----- Merge tag 'v2024.04-rc5' into next Prepare v2024.04-rc5
This commit is contained in:
commit
ab8d9ca304
29 changed files with 222 additions and 72 deletions
1
.mailmap
1
.mailmap
|
@ -57,6 +57,7 @@ John Linn <john.linn@amd.com> <john.linn@xilinx.com>
|
|||
Jyotheeswar Reddy Mutthareddyvari <jyotheeswar.reddy.mutthareddyvari@amd.com> <jyothee@xilinx.com>
|
||||
Jyotheeswar Reddy Mutthareddyvari <jyotheeswar.reddy.mutthareddyvari@amd.com> <jyotheeswar.reddy.mutthareddyvari@xilinx.com>
|
||||
Kalyani Akula <kalyani.akula@amd.com> <kalyani.akula@xilinx.com>
|
||||
Masahisa Kojima <kojima.masahisa@socionext.com> <masahisa.kojima@linaro.org>
|
||||
Love Kumar <love.kumar@amd.com> <love.kumar@xilinx.com>
|
||||
Lukasz Majewski <lukma@denx.de>
|
||||
Marek Behún <kabel@kernel.org> <marek.behun@nic.cz>
|
||||
|
|
2
Makefile
2
Makefile
|
@ -3,7 +3,7 @@
|
|||
VERSION = 2024
|
||||
PATCHLEVEL = 04
|
||||
SUBLEVEL =
|
||||
EXTRAVERSION = -rc4
|
||||
EXTRAVERSION = -rc5
|
||||
NAME =
|
||||
|
||||
# *DOCUMENTATION*
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
*/
|
||||
assigned-clocks = <&k3_clks 61 0>, <&k3_clks 135 0>, <&k3_clks 157 20>;
|
||||
assigned-clock-parents = <&k3_clks 61 2>, <0>, <&k3_clks 157 22>;
|
||||
assigned-clock-rates = <200000000>, <1000000000>, <25000000>;
|
||||
assigned-clock-rates = <200000000>, <800000000>, <25000000>;
|
||||
clocks = <&k3_clks 61 0>;
|
||||
power-domains = <&k3_pds 61 TI_SCI_PD_EXCLUSIVE>,
|
||||
<&k3_pds 135 TI_SCI_PD_EXCLUSIVE>,
|
||||
|
|
13
arch/arm/dts/meson-gxbb-wetek-play2-u-boot.dtsi
Normal file
13
arch/arm/dts/meson-gxbb-wetek-play2-u-boot.dtsi
Normal file
|
@ -0,0 +1,13 @@
|
|||
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
||||
/*
|
||||
* Copyright (c) 2019 BayLibre, SAS.
|
||||
* Author: Neil Armstrong <narmstrong@baylibre.com>
|
||||
*/
|
||||
|
||||
#include "meson-gx-u-boot.dtsi"
|
||||
|
||||
ðmac {
|
||||
snps,reset-gpio = <&gpio GPIOZ_14 0>;
|
||||
snps,reset-delays-us = <0 10000 1000000>;
|
||||
snps,reset-active-low;
|
||||
};
|
|
@ -933,19 +933,28 @@ int disable_vpu_nodes(void *blob)
|
|||
{
|
||||
static const char * const nodes_path_8mq[] = {
|
||||
"/vpu@38300000",
|
||||
"/soc@0/vpu@38300000"
|
||||
"/soc@0/vpu@38300000",
|
||||
"/soc@0/video-codec@38300000",
|
||||
"/soc@0/video-codec@38310000",
|
||||
"/soc@0/blk-ctrl@38320000",
|
||||
};
|
||||
|
||||
static const char * const nodes_path_8mm[] = {
|
||||
"/vpu_g1@38300000",
|
||||
"/vpu_g2@38310000",
|
||||
"/vpu_h1@38320000"
|
||||
"/vpu_h1@38320000",
|
||||
"/soc@0/video-codec@38300000",
|
||||
"/soc@0/video-codec@38310000",
|
||||
"/soc@0/blk-ctrl@38330000",
|
||||
};
|
||||
|
||||
static const char * const nodes_path_8mp[] = {
|
||||
"/vpu_g1@38300000",
|
||||
"/vpu_g2@38310000",
|
||||
"/vpu_vc8000e@38320000"
|
||||
"/vpu_vc8000e@38320000",
|
||||
"/soc@0/video-codec@38300000",
|
||||
"/soc@0/video-codec@38310000",
|
||||
"/soc@0/blk-ctrl@38330000",
|
||||
};
|
||||
|
||||
if (is_imx8mq())
|
||||
|
@ -1100,7 +1109,8 @@ int disable_gpu_nodes(void *blob)
|
|||
int disable_npu_nodes(void *blob)
|
||||
{
|
||||
static const char * const nodes_path_8mp[] = {
|
||||
"/vipsi@38500000"
|
||||
"/vipsi@38500000",
|
||||
"/soc@0/npu@38500000",
|
||||
};
|
||||
|
||||
return disable_fdt_nodes(blob, nodes_path_8mp, ARRAY_SIZE(nodes_path_8mp));
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
|
||||
int misc_init_r(void)
|
||||
{
|
||||
u8 mac_addr[MAC_ADDR_LEN];
|
||||
u8 mac_addr[MAC_ADDR_LEN + 1];
|
||||
char efuse_mac_addr[EFUSE_MAC_SIZE], tmp[3];
|
||||
ssize_t len;
|
||||
|
||||
|
@ -41,6 +41,7 @@ int misc_init_r(void)
|
|||
tmp[2] = '\0';
|
||||
mac_addr[i] = hextoul(tmp, NULL);
|
||||
}
|
||||
mac_addr[MAC_ADDR_LEN] = '\0';
|
||||
|
||||
if (is_valid_ethaddr(mac_addr))
|
||||
eth_env_set_enetaddr("ethaddr", mac_addr);
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
|
||||
int misc_init_r(void)
|
||||
{
|
||||
u8 mac_addr[ARP_HLEN];
|
||||
u8 mac_addr[ARP_HLEN + 1];
|
||||
char serial[SM_SERIAL_SIZE];
|
||||
u32 sid;
|
||||
|
||||
|
@ -34,6 +34,7 @@ int misc_init_r(void)
|
|||
mac_addr[3] = (sid >> 16) & 0xff;
|
||||
mac_addr[4] = (sid >> 8) & 0xff;
|
||||
mac_addr[5] = (sid >> 0) & 0xff;
|
||||
mac_addr[ARP_HLEN] = '\0';
|
||||
|
||||
eth_env_set_enetaddr("ethaddr", mac_addr);
|
||||
}
|
||||
|
|
|
@ -27,9 +27,9 @@
|
|||
|
||||
int misc_init_r(void)
|
||||
{
|
||||
u8 mac_addr[EFUSE_MAC_SIZE];
|
||||
char serial[EFUSE_SN_SIZE];
|
||||
char usid[EFUSE_USID_SIZE];
|
||||
u8 mac_addr[EFUSE_MAC_SIZE + 1];
|
||||
char serial[EFUSE_SN_SIZE + 1];
|
||||
char usid[EFUSE_USID_SIZE + 1];
|
||||
ssize_t len;
|
||||
unsigned int adcval;
|
||||
int ret;
|
||||
|
@ -37,6 +37,7 @@ int misc_init_r(void)
|
|||
if (!eth_env_get_enetaddr("ethaddr", mac_addr)) {
|
||||
len = meson_sm_read_efuse(EFUSE_MAC_OFFSET,
|
||||
mac_addr, EFUSE_MAC_SIZE);
|
||||
mac_addr[len] = '\0';
|
||||
if (len == EFUSE_MAC_SIZE && is_valid_ethaddr(mac_addr))
|
||||
eth_env_set_enetaddr("ethaddr", mac_addr);
|
||||
else
|
||||
|
@ -46,6 +47,7 @@ int misc_init_r(void)
|
|||
if (!env_get("serial")) {
|
||||
len = meson_sm_read_efuse(EFUSE_SN_OFFSET, serial,
|
||||
EFUSE_SN_SIZE);
|
||||
serial[len] = '\0';
|
||||
if (len == EFUSE_SN_SIZE)
|
||||
env_set("serial", serial);
|
||||
}
|
||||
|
@ -53,6 +55,7 @@ int misc_init_r(void)
|
|||
if (!env_get("usid")) {
|
||||
len = meson_sm_read_efuse(EFUSE_USID_OFFSET, usid,
|
||||
EFUSE_USID_SIZE);
|
||||
usid[len] = '\0';
|
||||
if (len == EFUSE_USID_SIZE)
|
||||
env_set("usid", usid);
|
||||
}
|
||||
|
|
|
@ -107,7 +107,7 @@ static int odroid_detect_variant(void)
|
|||
|
||||
int misc_init_r(void)
|
||||
{
|
||||
u8 mac_addr[MAC_ADDR_LEN];
|
||||
u8 mac_addr[MAC_ADDR_LEN + 1];
|
||||
char efuse_mac_addr[EFUSE_MAC_SIZE], tmp[3];
|
||||
ssize_t len;
|
||||
|
||||
|
@ -128,6 +128,7 @@ int misc_init_r(void)
|
|||
tmp[2] = '\0';
|
||||
mac_addr[i] = hextoul(tmp, NULL);
|
||||
}
|
||||
mac_addr[MAC_ADDR_LEN] = '\0';
|
||||
|
||||
if (is_valid_ethaddr(mac_addr))
|
||||
eth_env_set_enetaddr("ethaddr", mac_addr);
|
||||
|
|
|
@ -21,20 +21,24 @@
|
|||
|
||||
int misc_init_r(void)
|
||||
{
|
||||
u8 mac_addr[EFUSE_MAC_SIZE];
|
||||
char serial[EFUSE_SN_SIZE];
|
||||
u8 mac_addr[EFUSE_MAC_SIZE + 1];
|
||||
char serial[EFUSE_SN_SIZE + 1];
|
||||
ssize_t len;
|
||||
|
||||
if (!eth_env_get_enetaddr("ethaddr", mac_addr)) {
|
||||
len = meson_sm_read_efuse(EFUSE_MAC_OFFSET,
|
||||
mac_addr, EFUSE_MAC_SIZE);
|
||||
mac_addr[len] = '\0';
|
||||
if (len == EFUSE_MAC_SIZE && is_valid_ethaddr(mac_addr))
|
||||
eth_env_set_enetaddr("ethaddr", mac_addr);
|
||||
else
|
||||
meson_generate_serial_ethaddr();
|
||||
}
|
||||
|
||||
if (!env_get("serial#")) {
|
||||
len = meson_sm_read_efuse(EFUSE_SN_OFFSET, serial,
|
||||
EFUSE_SN_SIZE);
|
||||
serial[len] = '\0';
|
||||
if (len == EFUSE_SN_SIZE)
|
||||
env_set("serial#", serial);
|
||||
}
|
||||
|
|
|
@ -21,13 +21,14 @@
|
|||
|
||||
int misc_init_r(void)
|
||||
{
|
||||
u8 mac_addr[EFUSE_MAC_SIZE];
|
||||
char serial[EFUSE_SN_SIZE];
|
||||
u8 mac_addr[EFUSE_MAC_SIZE + 1];
|
||||
char serial[EFUSE_SN_SIZE + 1];
|
||||
ssize_t len;
|
||||
|
||||
if (!eth_env_get_enetaddr("ethaddr", mac_addr)) {
|
||||
len = meson_sm_read_efuse(EFUSE_MAC_OFFSET,
|
||||
mac_addr, EFUSE_MAC_SIZE);
|
||||
mac_addr[len] = '\0';
|
||||
if (len == EFUSE_MAC_SIZE && is_valid_ethaddr(mac_addr))
|
||||
eth_env_set_enetaddr("ethaddr", mac_addr);
|
||||
}
|
||||
|
@ -35,6 +36,7 @@ int misc_init_r(void)
|
|||
if (!env_get("serial#")) {
|
||||
len = meson_sm_read_efuse(EFUSE_SN_OFFSET, serial,
|
||||
EFUSE_SN_SIZE);
|
||||
serial[len] = '\0';
|
||||
if (len == EFUSE_SN_SIZE)
|
||||
env_set("serial#", serial);
|
||||
}
|
||||
|
|
|
@ -22,13 +22,14 @@
|
|||
|
||||
int misc_init_r(void)
|
||||
{
|
||||
u8 mac_addr[EFUSE_MAC_SIZE];
|
||||
char serial[EFUSE_SN_SIZE];
|
||||
u8 mac_addr[EFUSE_MAC_SIZE + 1];
|
||||
char serial[EFUSE_SN_SIZE + 1];
|
||||
ssize_t len;
|
||||
|
||||
if (!eth_env_get_enetaddr("ethaddr", mac_addr)) {
|
||||
len = meson_sm_read_efuse(EFUSE_MAC_OFFSET,
|
||||
mac_addr, EFUSE_MAC_SIZE);
|
||||
mac_addr[len] = '\0';
|
||||
if (len == EFUSE_MAC_SIZE && is_valid_ethaddr(mac_addr))
|
||||
eth_env_set_enetaddr("ethaddr", mac_addr);
|
||||
else
|
||||
|
@ -38,6 +39,7 @@ int misc_init_r(void)
|
|||
if (!env_get("serial#")) {
|
||||
len = meson_sm_read_efuse(EFUSE_SN_OFFSET, serial,
|
||||
EFUSE_SN_SIZE);
|
||||
serial[len] = '\0';
|
||||
if (len == EFUSE_SN_SIZE)
|
||||
env_set("serial#", serial);
|
||||
}
|
||||
|
|
|
@ -22,13 +22,14 @@
|
|||
|
||||
int misc_init_r(void)
|
||||
{
|
||||
u8 mac_addr[EFUSE_MAC_SIZE];
|
||||
char serial[EFUSE_SN_SIZE];
|
||||
u8 mac_addr[EFUSE_MAC_SIZE + 1];
|
||||
char serial[EFUSE_SN_SIZE + 1];
|
||||
ssize_t len;
|
||||
|
||||
if (!eth_env_get_enetaddr("ethaddr", mac_addr)) {
|
||||
len = meson_sm_read_efuse(EFUSE_MAC_OFFSET,
|
||||
mac_addr, EFUSE_MAC_SIZE);
|
||||
mac_addr[len] = '\0';
|
||||
if (len == EFUSE_MAC_SIZE && is_valid_ethaddr(mac_addr))
|
||||
eth_env_set_enetaddr("ethaddr", mac_addr);
|
||||
else
|
||||
|
@ -38,6 +39,7 @@ int misc_init_r(void)
|
|||
if (!env_get("serial#")) {
|
||||
len = meson_sm_read_efuse(EFUSE_SN_OFFSET, serial,
|
||||
EFUSE_SN_SIZE);
|
||||
serial[len] = '\0';
|
||||
if (len == EFUSE_SN_SIZE)
|
||||
env_set("serial#", serial);
|
||||
}
|
||||
|
|
|
@ -151,7 +151,7 @@ int meson_ft_board_setup(void *blob, struct bd_info *bd)
|
|||
|
||||
int misc_init_r(void)
|
||||
{
|
||||
u8 mac_addr[MAC_ADDR_LEN];
|
||||
u8 mac_addr[MAC_ADDR_LEN + 1];
|
||||
char efuse_mac_addr[EFUSE_MAC_SIZE], tmp[3];
|
||||
char serial_string[EFUSE_MAC_SIZE + 1];
|
||||
ssize_t len;
|
||||
|
@ -169,6 +169,7 @@ int misc_init_r(void)
|
|||
tmp[2] = '\0';
|
||||
mac_addr[i] = hextoul(tmp, NULL);
|
||||
}
|
||||
mac_addr[MAC_ADDR_LEN] = '\0';
|
||||
|
||||
if (is_valid_ethaddr(mac_addr))
|
||||
eth_env_set_enetaddr("ethaddr", mac_addr);
|
||||
|
|
|
@ -248,4 +248,9 @@ u8 __maybe_unused phytec_get_rev(struct phytec_eeprom_data *data)
|
|||
return PHYTEC_EEPROM_INVAL;
|
||||
}
|
||||
|
||||
u8 __maybe_unused phytec_get_som_type(struct phytec_eeprom_data *data)
|
||||
{
|
||||
return PHYTEC_EEPROM_INVAL;
|
||||
}
|
||||
|
||||
#endif /* IS_ENABLED(CONFIG_PHYTEC_SOM_DETECTION) */
|
||||
|
|
|
@ -133,7 +133,7 @@ void board_mem_get_layout(u64 *phys_sdram_1_start,
|
|||
struct tdx_user_fuses tdxramfuses;
|
||||
int scierr = sc_misc_otp_fuse_read(-1, 6, &val);
|
||||
|
||||
if (scierr) {
|
||||
if (!scierr) {
|
||||
/* QP has one A72 core disabled */
|
||||
is_quadplus = ((val >> 4) & 0x3) != 0x0;
|
||||
}
|
||||
|
|
|
@ -46,7 +46,7 @@ static int is_imx8dx(void)
|
|||
u32 val = 0;
|
||||
int sc_err = sc_misc_otp_fuse_read(-1, 6, &val);
|
||||
|
||||
if (sc_err) {
|
||||
if (!sc_err) {
|
||||
/* DX has two A35 cores disabled */
|
||||
return (val & 0xf) != 0x0;
|
||||
}
|
||||
|
|
|
@ -154,9 +154,7 @@ static int do_bootefi(struct cmd_tbl *cmdtp, int flag, int argc,
|
|||
!strcmp(argv[1], "bootmgr")) {
|
||||
ret = efi_bootmgr_run(fdt);
|
||||
|
||||
if (ret == EFI_INVALID_PARAMETER)
|
||||
return CMD_RET_USAGE;
|
||||
else if (ret)
|
||||
if (ret != EFI_SUCCESS)
|
||||
return CMD_RET_FAILURE;
|
||||
|
||||
return CMD_RET_SUCCESS;
|
||||
|
@ -173,9 +171,7 @@ static int do_bootefi(struct cmd_tbl *cmdtp, int flag, int argc,
|
|||
}
|
||||
|
||||
ret = efi_install_fdt(fdt);
|
||||
if (ret == EFI_INVALID_PARAMETER)
|
||||
return CMD_RET_USAGE;
|
||||
else if (ret != EFI_SUCCESS)
|
||||
if (ret != EFI_SUCCESS)
|
||||
return CMD_RET_FAILURE;
|
||||
|
||||
return do_efi_selftest();
|
||||
|
@ -218,9 +214,7 @@ static int do_bootefi(struct cmd_tbl *cmdtp, int flag, int argc,
|
|||
|
||||
ret = efi_binary_run(image_buf, size, fdt);
|
||||
|
||||
if (ret == EFI_INVALID_PARAMETER)
|
||||
return CMD_RET_USAGE;
|
||||
else if (ret)
|
||||
if (ret != EFI_SUCCESS)
|
||||
return CMD_RET_FAILURE;
|
||||
|
||||
return CMD_RET_SUCCESS;
|
||||
|
|
|
@ -35,7 +35,7 @@ CONFIG_SPL_BSS_MAX_SIZE=0x3000
|
|||
CONFIG_SPL_SYS_REPORT_STACK_F_USAGE=y
|
||||
CONFIG_SPL_SYS_MALLOC_SIMPLE=y
|
||||
CONFIG_SPL_STACK_R=y
|
||||
CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN=0x140000
|
||||
CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN=0x200000
|
||||
CONFIG_SPL_SEPARATE_BSS=y
|
||||
CONFIG_SPL_SYS_MALLOC=y
|
||||
CONFIG_SPL_HAS_CUSTOM_MALLOC_START=y
|
||||
|
|
|
@ -20,36 +20,36 @@ Quick Start
|
|||
Get and Build the ARM Trusted Firmware
|
||||
--------------------------------------
|
||||
|
||||
Download the imx-atf repository:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ git clone -b lf_v2.6 https://github.com/nxp-imx/imx-atf.git
|
||||
|
||||
Compile it with an aarch64 toolchain:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ git clone -b imx_4.14.78_1.0.0_ga https://github.com/nxp-imx/imx-atf
|
||||
$ cd imx-atf/
|
||||
$ make PLAT=imx8qm bl31
|
||||
|
||||
Get scfw_tcm.bin and ahab-container.img
|
||||
---------------------------------------
|
||||
|
||||
Download imx-seco firmware and extract it:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ wget https://github.com/toradex/meta-fsl-bsp-release/blob/toradex-sumo-4.14.78-1.0.0_ga-bringup/imx/meta-bsp/recipes-
|
||||
bsp/imx-sc-firmware/files/mx8qm-apalis-scfw-tcm.bin?raw=true
|
||||
$ mv mx8qm-apalis-scfw-tcm.bin\?raw\=true mx8qm-apalis-scfw-tcm.bin
|
||||
$ wget https://www.nxp.com/lgfiles/NMG/MAD/YOCTO/firmware-imx-8.0.bin
|
||||
$ chmod +x firmware-imx-8.0.bin
|
||||
$ ./firmware-imx-8.0.bin
|
||||
$ wget https://www.nxp.com/lgfiles/NMG/MAD/YOCTO/imx-seco-5.8.7.bin
|
||||
$ sh imx-seco-5.8.7.bin --auto-accept
|
||||
|
||||
Copy the following binaries to the U-Boot folder:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ cp imx-atf/build/imx8qm/release/bl31.bin .
|
||||
$ cp u-boot/u-boot.bin .
|
||||
|
||||
Copy the following firmware to the U-Boot folder:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ cp firmware-imx-8.0/firmware/seco/ahab-container.img .
|
||||
$ wget https://github.com/toradex/i.MX-System-Controller-Firmware/raw/master/src/scfw_export_mx8qm_b0/build_mx8qm_b0/mx8qm-apalis-scfw-tcm.bin
|
||||
$ cp ../imx-atf/build/imx8qm/release/bl31.bin .
|
||||
$ cp ../imx-seco-5.8.7/firmware/seco/mx8qmb0-ahab-container.img mx8qm-ahab-container.img
|
||||
|
||||
Build U-Boot
|
||||
------------
|
||||
|
@ -64,7 +64,7 @@ Load the U-Boot Binary Using UUU
|
|||
|
||||
Get the latest version of the universal update utility (uuu) aka ``mfgtools 3.0``:
|
||||
|
||||
https://community.nxp.com/external-link.jspa?url=https%3A%2F%2Fgithub.com%2FNXPmicro%2Fmfgtools%2Freleases
|
||||
https://github.com/nxp-imx/mfgtools/releases
|
||||
|
||||
Put the module into USB recovery aka serial downloader mode, connect the USB
|
||||
device to your host and execute ``uuu``:
|
||||
|
|
|
@ -20,26 +20,35 @@ Quick Start
|
|||
Get and Build the ARM Trusted Firmware
|
||||
--------------------------------------
|
||||
|
||||
Download the imx-atf repository:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ git clone -b lf_v2.6 https://github.com/nxp-imx/imx-atf.git
|
||||
|
||||
Compile it with an aarch64 toolchain:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ git clone -b toradex_imx_5.4.70_2.3.0 http://git.toradex.com/cgit/imx-atf.git/
|
||||
$ make PLAT=imx8qx bl31 -C imx-atf
|
||||
|
||||
Get scfw_tcm.bin and ahab-container.img
|
||||
---------------------------------------
|
||||
|
||||
Download imx-seco firmware and extract it:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ wget https://github.com/toradex/i.MX-System-Controller-Firmware/raw/master/src/scfw_export_mx8qx_b0/build_mx8qx_b0/mx8qx-colibri-scfw-tcm.bin
|
||||
$ wget https://www.nxp.com/lgfiles/NMG/MAD/YOCTO/imx-seco-3.8.1.bin
|
||||
$ sh imx-seco-3.8.1.bin --auto-accept
|
||||
$ wget https://www.nxp.com/lgfiles/NMG/MAD/YOCTO/imx-seco-5.8.7.bin
|
||||
$ sh imx-seco-5.8.7.bin --auto-accept
|
||||
|
||||
Copy the following firmware to the U-Boot folder:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ cp imx-atf/build/imx8qx/release/bl31.bin .
|
||||
$ cp imx-seco-3.8.1/firmware/seco/mx8qxc0-ahab-container.img mx8qx-ahab-container.img
|
||||
$ wget https://github.com/toradex/i.MX-System-Controller-Firmware/raw/master/src/scfw_export_mx8qx_b0/build_mx8qx_b0/mx8qx-colibri-scfw-tcm.bin
|
||||
$ cp ../imx-atf/build/imx8qx/release/bl31.bin .
|
||||
$ cp ../imx-seco-5.8.7/firmware/seco/mx8qxc0-ahab-container.img mx8qx-ahab-container.img
|
||||
|
||||
Build U-Boot
|
||||
------------
|
||||
|
@ -54,7 +63,7 @@ Load the U-Boot Binary Using UUU
|
|||
|
||||
Get the latest version of the universal update utility (uuu) aka ``mfgtools 3.0``:
|
||||
|
||||
https://community.nxp.com/external-link.jspa?url=https%3A%2F%2Fgithub.com%2FNXPmicro%2Fmfgtools%2Freleases
|
||||
https://github.com/nxp-imx/mfgtools/releases
|
||||
|
||||
Put the module into USB recovery aka serial downloader mode, connect the USB
|
||||
device to your host and execute ``uuu``:
|
||||
|
|
|
@ -64,15 +64,15 @@ Future Releases
|
|||
|
||||
For the next scheduled release, release candidates were made on::
|
||||
|
||||
* U-Boot v2024.01-rc1 was released on Mon 29 January 2024.
|
||||
* U-Boot v2024.04-rc1 was released on Mon 29 January 2024.
|
||||
|
||||
* U-Boot v2024.01-rc2 was released on Tue 13 February 2024.
|
||||
* U-Boot v2024.04-rc2 was released on Tue 13 February 2024.
|
||||
|
||||
* U-Boot v2024.01-rc3 was released on Mon 26 February 2024.
|
||||
* U-Boot v2024.04-rc3 was released on Mon 26 February 2024.
|
||||
|
||||
* U-Boot v2024.01-rc4 was released on Mon 11 March 2024.
|
||||
* U-Boot v2024.04-rc4 was released on Mon 11 March 2024.
|
||||
|
||||
.. * U-Boot v2024.01-rc5 was released on Mon 25 March 2024.
|
||||
* U-Boot v2024.04-rc5 was released on Mon 25 March 2024.
|
||||
|
||||
Please note that the following dates are planned only and may be deviated from
|
||||
as needed.
|
||||
|
|
72
doc/usage/cmd/if.rst
Normal file
72
doc/usage/cmd/if.rst
Normal file
|
@ -0,0 +1,72 @@
|
|||
.. SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
.. index::
|
||||
single: if (command)
|
||||
|
||||
if command
|
||||
==========
|
||||
|
||||
Synopsis
|
||||
--------
|
||||
|
||||
::
|
||||
|
||||
if <test statement>
|
||||
then
|
||||
<statements>
|
||||
fi
|
||||
|
||||
if <test statement>
|
||||
then
|
||||
<statements>
|
||||
else
|
||||
<statements>
|
||||
fi
|
||||
|
||||
Description
|
||||
-----------
|
||||
|
||||
The if command is used to conditionally execute statements.
|
||||
|
||||
test statement
|
||||
Any command. The test statement set the $? variable. If the value of
|
||||
$? becomes 0 (true) the statements after the **then** statement will
|
||||
be executed. Otherwise the statements after the **else** statement.
|
||||
|
||||
Example
|
||||
-------
|
||||
|
||||
The examples shows how the value of a numeric variable can be tested with
|
||||
**itest**.
|
||||
|
||||
::
|
||||
|
||||
=> a=1; if itest $a == 0; then echo true; else echo false; fi
|
||||
false
|
||||
=> a=0; if itest $a == 0; then echo true; else echo false; fi
|
||||
true
|
||||
|
||||
In the following example we try to load an EFI binary via TFTP. If loading
|
||||
succeeds, the binary is executed.
|
||||
|
||||
::
|
||||
|
||||
if tftp $kernel_addr_r shellriscv64.efi; then bootefi $kernel_addr_r; fi
|
||||
|
||||
Return value
|
||||
------------
|
||||
|
||||
The value of $? is the return value of the last executed statement.
|
||||
|
||||
::
|
||||
|
||||
=> if true; then true; else true; fi; echo $?
|
||||
0
|
||||
=> if false; then true; else true; fi; echo $?
|
||||
0
|
||||
=> if false; then false; else false; fi; echo $?
|
||||
1
|
||||
=> if true; then false; else false; fi; echo $?
|
||||
1
|
||||
=> if false; then true; fi; echo $?
|
||||
1
|
|
@ -71,6 +71,7 @@ Shell commands
|
|||
cmd/gpt
|
||||
cmd/history
|
||||
cmd/host
|
||||
cmd/if
|
||||
cmd/imxtract
|
||||
cmd/load
|
||||
cmd/loadb
|
||||
|
|
|
@ -95,20 +95,23 @@ ulong imx8_clk_get_rate(struct clk *clk)
|
|||
resource = SC_R_SDHC_2;
|
||||
pm_clk = SC_PM_CLK_PER;
|
||||
break;
|
||||
case IMX8QM_UART0_IPG_CLK:
|
||||
case IMX8QM_UART0_CLK:
|
||||
case IMX8QM_UART0_IPG_CLK:
|
||||
resource = SC_R_UART_0;
|
||||
pm_clk = SC_PM_CLK_PER;
|
||||
break;
|
||||
case IMX8QM_UART1_CLK:
|
||||
case IMX8QM_UART1_IPG_CLK:
|
||||
resource = SC_R_UART_1;
|
||||
pm_clk = SC_PM_CLK_PER;
|
||||
break;
|
||||
case IMX8QM_UART2_CLK:
|
||||
case IMX8QM_UART2_IPG_CLK:
|
||||
resource = SC_R_UART_2;
|
||||
pm_clk = SC_PM_CLK_PER;
|
||||
break;
|
||||
case IMX8QM_UART3_CLK:
|
||||
case IMX8QM_UART3_IPG_CLK:
|
||||
resource = SC_R_UART_3;
|
||||
pm_clk = SC_PM_CLK_PER;
|
||||
break;
|
||||
|
@ -181,18 +184,22 @@ ulong imx8_clk_set_rate(struct clk *clk, unsigned long rate)
|
|||
pm_clk = SC_PM_CLK_PER;
|
||||
break;
|
||||
case IMX8QM_UART0_CLK:
|
||||
case IMX8QM_UART0_IPG_CLK:
|
||||
resource = SC_R_UART_0;
|
||||
pm_clk = SC_PM_CLK_PER;
|
||||
break;
|
||||
case IMX8QM_UART1_CLK:
|
||||
case IMX8QM_UART1_IPG_CLK:
|
||||
resource = SC_R_UART_1;
|
||||
pm_clk = SC_PM_CLK_PER;
|
||||
break;
|
||||
case IMX8QM_UART2_CLK:
|
||||
case IMX8QM_UART2_IPG_CLK:
|
||||
resource = SC_R_UART_2;
|
||||
pm_clk = SC_PM_CLK_PER;
|
||||
break;
|
||||
case IMX8QM_UART3_CLK:
|
||||
case IMX8QM_UART3_IPG_CLK:
|
||||
resource = SC_R_UART_3;
|
||||
pm_clk = SC_PM_CLK_PER;
|
||||
break;
|
||||
|
@ -283,18 +290,22 @@ int __imx8_clk_enable(struct clk *clk, bool enable)
|
|||
pm_clk = SC_PM_CLK_PER;
|
||||
break;
|
||||
case IMX8QM_UART0_CLK:
|
||||
case IMX8QM_UART0_IPG_CLK:
|
||||
resource = SC_R_UART_0;
|
||||
pm_clk = SC_PM_CLK_PER;
|
||||
break;
|
||||
case IMX8QM_UART1_CLK:
|
||||
case IMX8QM_UART1_IPG_CLK:
|
||||
resource = SC_R_UART_1;
|
||||
pm_clk = SC_PM_CLK_PER;
|
||||
break;
|
||||
case IMX8QM_UART2_CLK:
|
||||
case IMX8QM_UART2_IPG_CLK:
|
||||
resource = SC_R_UART_2;
|
||||
pm_clk = SC_PM_CLK_PER;
|
||||
break;
|
||||
case IMX8QM_UART3_CLK:
|
||||
case IMX8QM_UART3_IPG_CLK:
|
||||
resource = SC_R_UART_3;
|
||||
pm_clk = SC_PM_CLK_PER;
|
||||
break;
|
||||
|
|
|
@ -88,20 +88,23 @@ ulong imx8_clk_get_rate(struct clk *clk)
|
|||
resource = SC_R_SDHC_1;
|
||||
pm_clk = SC_PM_CLK_PER;
|
||||
break;
|
||||
case IMX8QXP_UART0_IPG_CLK:
|
||||
case IMX8QXP_UART0_CLK:
|
||||
case IMX8QXP_UART0_IPG_CLK:
|
||||
resource = SC_R_UART_0;
|
||||
pm_clk = SC_PM_CLK_PER;
|
||||
break;
|
||||
case IMX8QXP_UART1_CLK:
|
||||
case IMX8QXP_UART1_IPG_CLK:
|
||||
resource = SC_R_UART_1;
|
||||
pm_clk = SC_PM_CLK_PER;
|
||||
break;
|
||||
case IMX8QXP_UART2_CLK:
|
||||
case IMX8QXP_UART2_IPG_CLK:
|
||||
resource = SC_R_UART_2;
|
||||
pm_clk = SC_PM_CLK_PER;
|
||||
break;
|
||||
case IMX8QXP_UART3_CLK:
|
||||
case IMX8QXP_UART3_IPG_CLK:
|
||||
resource = SC_R_UART_3;
|
||||
pm_clk = SC_PM_CLK_PER;
|
||||
break;
|
||||
|
@ -170,18 +173,22 @@ ulong imx8_clk_set_rate(struct clk *clk, unsigned long rate)
|
|||
pm_clk = SC_PM_CLK_PER;
|
||||
break;
|
||||
case IMX8QXP_UART0_CLK:
|
||||
case IMX8QXP_UART0_IPG_CLK:
|
||||
resource = SC_R_UART_0;
|
||||
pm_clk = SC_PM_CLK_PER;
|
||||
break;
|
||||
case IMX8QXP_UART1_CLK:
|
||||
case IMX8QXP_UART1_IPG_CLK:
|
||||
resource = SC_R_UART_1;
|
||||
pm_clk = SC_PM_CLK_PER;
|
||||
break;
|
||||
case IMX8QXP_UART2_CLK:
|
||||
case IMX8QXP_UART2_IPG_CLK:
|
||||
resource = SC_R_UART_2;
|
||||
pm_clk = SC_PM_CLK_PER;
|
||||
break;
|
||||
case IMX8QXP_UART3_CLK:
|
||||
case IMX8QXP_UART3_IPG_CLK:
|
||||
resource = SC_R_UART_3;
|
||||
pm_clk = SC_PM_CLK_PER;
|
||||
break;
|
||||
|
@ -263,18 +270,22 @@ int __imx8_clk_enable(struct clk *clk, bool enable)
|
|||
pm_clk = SC_PM_CLK_PER;
|
||||
break;
|
||||
case IMX8QXP_UART0_CLK:
|
||||
case IMX8QXP_UART0_IPG_CLK:
|
||||
resource = SC_R_UART_0;
|
||||
pm_clk = SC_PM_CLK_PER;
|
||||
break;
|
||||
case IMX8QXP_UART1_CLK:
|
||||
case IMX8QXP_UART1_IPG_CLK:
|
||||
resource = SC_R_UART_1;
|
||||
pm_clk = SC_PM_CLK_PER;
|
||||
break;
|
||||
case IMX8QXP_UART2_CLK:
|
||||
case IMX8QXP_UART2_IPG_CLK:
|
||||
resource = SC_R_UART_2;
|
||||
pm_clk = SC_PM_CLK_PER;
|
||||
break;
|
||||
case IMX8QXP_UART3_CLK:
|
||||
case IMX8QXP_UART3_IPG_CLK:
|
||||
resource = SC_R_UART_3;
|
||||
pm_clk = SC_PM_CLK_PER;
|
||||
break;
|
||||
|
|
|
@ -125,7 +125,7 @@ efi_status_t efi_run_image(void *source_buffer, efi_uintn_t source_size)
|
|||
efi_handle_t mem_handle = NULL, handle;
|
||||
struct efi_device_path *file_path = NULL;
|
||||
struct efi_device_path *msg_path;
|
||||
efi_status_t ret, ret2;
|
||||
efi_status_t ret;
|
||||
u16 *load_options;
|
||||
|
||||
if (!bootefi_device_path || !bootefi_image_path) {
|
||||
|
@ -172,11 +172,17 @@ efi_status_t efi_run_image(void *source_buffer, efi_uintn_t source_size)
|
|||
ret = do_bootefi_exec(handle, load_options);
|
||||
|
||||
out:
|
||||
ret2 = efi_uninstall_multiple_protocol_interfaces(mem_handle,
|
||||
&efi_guid_device_path,
|
||||
file_path, NULL);
|
||||
if (mem_handle) {
|
||||
efi_status_t r;
|
||||
|
||||
r = efi_uninstall_multiple_protocol_interfaces(
|
||||
mem_handle, &efi_guid_device_path, file_path, NULL);
|
||||
if (r != EFI_SUCCESS)
|
||||
log_err("Uninstalling protocol interfaces failed\n");
|
||||
}
|
||||
efi_free_pool(file_path);
|
||||
return (ret != EFI_SUCCESS) ? ret : ret2;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -144,7 +144,7 @@ patman.py. For reference, the useful ones (at the moment) shown below
|
|||
process_tags: False
|
||||
verbose: True
|
||||
smtp_server: /path/to/sendmail
|
||||
patchwork_server: https://patchwork.ozlabs.org
|
||||
patchwork_url: https://patchwork.ozlabs.org
|
||||
|
||||
If you want to adjust settings (or aliases) that affect just a single
|
||||
project you can add a section that looks like [project_settings] or
|
||||
|
@ -248,9 +248,9 @@ Series-links: [id | version:id]...
|
|||
|
||||
Series-patchwork-url: url
|
||||
This allows specifying the Patchwork URL for a branch. This overrides
|
||||
both the setting files and the command-line argument. The URL should
|
||||
include the protocol and web site, with no trailing slash, for example
|
||||
'https://patchwork.ozlabs.org/project'
|
||||
both the setting files ("patchwork_url") and the command-line argument.
|
||||
The URL should include the protocol and web site, with no trailing slash,
|
||||
for example 'https://patchwork.ozlabs.org/project'
|
||||
|
||||
Cover-letter:
|
||||
Sets the cover letter contents for the series. The first line
|
||||
|
|
Loading…
Add table
Reference in a new issue