* [PATCH v1 1/3] arm: config: xea: Update environment variables for XEA board (imx287)
@ 2024-01-10 14:48 Lukasz Majewski
2024-01-10 14:48 ` [PATCH v1 2/3] arm: config: Enable CRC8 support in SPL on imx287 XEA board Lukasz Majewski
` (2 more replies)
0 siblings, 3 replies; 5+ messages in thread
From: Lukasz Majewski @ 2024-01-10 14:48 UTC (permalink / raw)
To: Stefano Babic, Fabio Estevam, Tom Rini, u-boot, NXP u-boot
Cc: Lukasz Majewski
As the XEA now supports fitImage, the default envs shall reflect this
as well.
Moreover, some SPI-NOR layout re-organization has took place.
Signed-off-by: Lukasz Majewski <lukma@denx.de>
---
include/configs/xea.h | 45 ++++++++++++++++++++++++-------------------
1 file changed, 25 insertions(+), 20 deletions(-)
diff --git a/include/configs/xea.h b/include/configs/xea.h
index 04ca5aa12a..a11bb522cd 100644
--- a/include/configs/xea.h
+++ b/include/configs/xea.h
@@ -33,17 +33,21 @@
"bootsec=sf_swu\0" \
"consdev=ttyAMA0\0" \
"baudrate=115200\0" \
- "dtbaddr=0x44000000\0" \
- "dtbfile=imx28-xea.dtb\0" \
"rootdev=/dev/mmcblk0p2\0" \
"netdev=eth0\0" \
- "rdaddr=0x43000000\0" \
- "swufile=swupdate.img\0" \
- "sf_kernel_offset=0x100000\0" \
- "sf_kernel_size=0x400000\0" \
- "sf_swu_offset=0x500000\0" \
- "sf_swu_size=0x800000\0" \
- "rootpath=/opt/eldk-5.5/armv5te/rootfs-qte-sdk\0" \
+ "swufile=swupdate-image-xea-upd.itb\0" \
+ "sf_kernel_offset=0xA0000\0" \
+ "sf_swu_size=0xF40000\0" \
+ "ethact=FEC\0" \
+ "arch=xea\0" \
+ "serverip=10.8.217.79\0" \
+ "nfs_serverip=10.8.218.113\0" \
+ "gatewayip=10.8.209.250\0" \
+ "lwe_env=" \
+ "if dhcp ${loadaddr} ${hostname}/${lwe_uenv} ; then " \
+ "source ${loadaddr}; " \
+ "fi\0" \
+ "lwe_uenv=env_uboot_xea.bin\0" \
"do_update_mmc=" \
"if mmc rescan ; then " \
"mmc dev 0 ${update_mmc_part} ; " \
@@ -60,6 +64,12 @@
"sf write ${loadaddr} ${update_offset} ${filesize} ; " \
"fi ; " \
"fi\0" \
+ "factory_reset=" \
+ "if sf probe ; then " \
+ "run update_swu ; " \
+ "setenv bootmode update ; " \
+ "saveenv ; " \
+ "fi\0" \
"update_spl_filename=u-boot.sb\0" \
"update_spl=" \
"setenv update_filename ${update_spl_filename} ; " \
@@ -72,6 +82,8 @@
"run do_update_sf ; " \
"setenv update_mmc_part 1 ; " \
"setenv update_offset 0 ; " \
+ "run do_update_mmc ; " \
+ "setenv update_mmc_part 2 ; " \
"run do_update_mmc\0" \
"update_kernel_filename=uImage\0" \
"update_kernel=" \
@@ -82,13 +94,9 @@
"setenv update_filename ${dtbfile} ; " \
"setenv update_offset 0x400 ; " \
"run do_update_mmc\0" \
- "update_sfkernel=" \
- "setenv update_filename fitImage ; " \
- "setenv update_offset ${sf_kernel_offset} ; " \
- "run do_update_sf\0" \
"update_swu=" \
"setenv update_filename ${swufile} ; " \
- "setenv update_offset ${sf_swu_offset} ; " \
+ "setenv update_offset ${sf_kernel_offset} ; " \
"run do_update_sf\0" \
"addcons=" \
"setenv bootargs ${bootargs} " \
@@ -108,9 +116,6 @@
"netload=" \
"dhcp ${loadaddr} ${hostname}/${bootfile} ; " \
"tftp ${dtbaddr} ${hostname}/${dtbfile}\0" \
- "sfload=" \
- "sf probe ; " \
- "sf read ${loadaddr} ${sf_kernel_offset} ${sf_kernel_size}\0" \
"usbload=" \
"usb start ; " \
"load usb 0:1 ${loadaddr} ${bootfile}\0" \
@@ -132,11 +137,11 @@
"bootm ${loadaddr} - ${dtbaddr} ; " \
"fi\0" \
"sf_swu=" \
- "if run sfload ; then " \
- "sf read ${rdaddr} ${sf_swu_offset} ${sf_swu_size} ; " \
+ "if sf probe ; then " \
+ "sf read ${loadaddr} ${sf_kernel_offset} ${sf_swu_size} ; " \
"setenv bootargs root=/dev/ram0 rw ; " \
"run addargs ; " \
- "bootm ${loadaddr} ${rdaddr} ; " \
+ "bootm ${loadaddr} ; " \
"fi\0" \
"net_mmc=" \
"if run netload mmcargs addargs ; then " \
--
2.39.2
^ permalink raw reply related [flat|nested] 5+ messages in thread* [PATCH v1 2/3] arm: config: Enable CRC8 support in SPL on imx287 XEA board 2024-01-10 14:48 [PATCH v1 1/3] arm: config: xea: Update environment variables for XEA board (imx287) Lukasz Majewski @ 2024-01-10 14:48 ` Lukasz Majewski 2024-01-10 14:48 ` [PATCH v1 3/3] arm: xea: Add support for boot image source descriptor in SPL Lukasz Majewski 2024-01-10 14:52 ` [PATCH v1 1/3] arm: config: xea: Update environment variables for XEA board (imx287) Tom Rini 2 siblings, 0 replies; 5+ messages in thread From: Lukasz Majewski @ 2024-01-10 14:48 UTC (permalink / raw) To: Stefano Babic, Fabio Estevam, Tom Rini, u-boot, NXP u-boot Cc: Lukasz Majewski, Simon Glass The boot0/1 feature uses simple CRC8 to check (in SPL) if SPI-NOR content is not corrupted, hence the need to enable it. Signed-off-by: Lukasz Majewski <lukma@denx.de> --- configs/imx28_xea_defconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/configs/imx28_xea_defconfig b/configs/imx28_xea_defconfig index c1b0487f7e..64a0561a34 100644 --- a/configs/imx28_xea_defconfig +++ b/configs/imx28_xea_defconfig @@ -123,4 +123,5 @@ CONFIG_DM_SERIAL=y CONFIG_SPI=y CONFIG_DM_SPI=y CONFIG_MXS_SPI=y +CONFIG_SPL_CRC8=y # CONFIG_SPL_OF_LIBFDT is not set -- 2.39.2 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH v1 3/3] arm: xea: Add support for boot image source descriptor in SPL 2024-01-10 14:48 [PATCH v1 1/3] arm: config: xea: Update environment variables for XEA board (imx287) Lukasz Majewski 2024-01-10 14:48 ` [PATCH v1 2/3] arm: config: Enable CRC8 support in SPL on imx287 XEA board Lukasz Majewski @ 2024-01-10 14:48 ` Lukasz Majewski 2024-01-10 14:52 ` [PATCH v1 1/3] arm: config: xea: Update environment variables for XEA board (imx287) Tom Rini 2 siblings, 0 replies; 5+ messages in thread From: Lukasz Majewski @ 2024-01-10 14:48 UTC (permalink / raw) To: Stefano Babic, Fabio Estevam, Tom Rini, u-boot, NXP u-boot Cc: Anatolij Gustschin, Lukasz Majewski From: Anatolij Gustschin <agust@denx.de> We load two boot image source descriptor structures from last two sectors in the SPI NOR flash and determine the boot source for loading the kernel/DTB images, then adjust the boot order for loading image from eMMC boot0 or boot1 partition. Signed-off-by: Anatolij Gustschin <agust@denx.de> Signed-off-by: Lukasz Majewski <lukma@denx.de> --- board/liebherr/xea/boot_img_scr.h | 27 ++++++++++ board/liebherr/xea/xea.c | 85 +++++++++++++++++++++++++++++++ 2 files changed, 112 insertions(+) create mode 100644 board/liebherr/xea/boot_img_scr.h diff --git a/board/liebherr/xea/boot_img_scr.h b/board/liebherr/xea/boot_img_scr.h new file mode 100644 index 0000000000..baa3072b49 --- /dev/null +++ b/board/liebherr/xea/boot_img_scr.h @@ -0,0 +1,27 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* + * Struct for boot image source description for placing in last + * two SPI NOR flash sectors on legcom. + */ + +struct boot_img_src { + u8 magic; /* Must be 'B' = 0x42 */ + u8 flags; /* flags to specify mmcblk[0|1] boot[0|1] */ + u8 crc8; /* CRC-8 over above two bytes */ +} __packed; + +/* + * Bit definition in boot_img_src.flags: + * Bit 0: mmcblk device 0 or 1 (1 - if this bit set) + * Bit 1: mmcblk boot partition 0 or 1. + * for eMMC: boot0 if this bit is cleared, boot1 - if set + * for SD-card the boot partition value will always be 0 + * (independent of the value of this bit) + * + */ +#define BOOT_SRC_MMC1 BIT(0) +#define BOOT_SRC_PART1 BIT(1) + +/* Offset of the first boot image source descriptor in SPI NOR */ +#define SPI_FLASH_BOOT_SRC_OFFS 0xFE0000 +#define SPI_FLASH_SECTOR_SIZE 0x10000 diff --git a/board/liebherr/xea/xea.c b/board/liebherr/xea/xea.c index e4d2eb65cc..c8ac526cb4 100644 --- a/board/liebherr/xea/xea.c +++ b/board/liebherr/xea/xea.c @@ -32,6 +32,11 @@ #include <errno.h> #include <usb.h> #include <serial.h> +#include <u-boot/crc.h> +#include "boot_img_scr.h" + +#include <spi.h> +#include <spi_flash.h> #ifdef CONFIG_SPL_BUILD #include <spl.h> @@ -66,6 +71,52 @@ void board_init_f(ulong arg) preloader_console_init(); } +static struct boot_img_src img_src[2]; +static int spi_load_boot_info(void) +{ + struct spi_flash *flash; + int err; + + flash = spi_flash_probe(CONFIG_SF_DEFAULT_BUS, + CONFIG_SF_DEFAULT_CS, + CONFIG_SF_DEFAULT_SPEED, + CONFIG_SF_DEFAULT_MODE); + if (!flash) { + printf("%s: SPI probe err\n", __func__); + return -ENODEV; + } + + /* + * Load both boot info structs from SPI flash + */ + err = spi_flash_read(flash, SPI_FLASH_BOOT_SRC_OFFS, + sizeof(img_src[0]), + (void *)&img_src[0]); + if (err) { + debug("%s: First boot info NOR sector read error %d\n", + __func__, err); + return err; + } + + err = spi_flash_read(flash, + SPI_FLASH_BOOT_SRC_OFFS + SPI_FLASH_SECTOR_SIZE, + sizeof(img_src[0]), + (void *)&img_src[1]); + if (err) { + debug("%s: First boot info NOR sector read error %d\n", + __func__, err); + return err; + } + + debug("%s: BI0 0x%x 0x%x 0x%x\n", __func__, + img_src[0].magic, img_src[0].flags, img_src[0].crc8); + + debug("%s: BI1 0x%x 0x%x 0x%x\n", __func__, + img_src[1].magic, img_src[1].flags, img_src[1].crc8); + + return 0; +} + static int boot_tiva0, boot_tiva1; /* Check if TIVAs request booting via U-Boot proper */ @@ -114,6 +165,40 @@ void spl_board_init(void) boot_tiva1 = dm_gpio_get_value(&btiva1); } +int spl_mmc_emmc_boot_partition(struct mmc *mmc) +{ + int i, src_idx = -1, ret; + + ret = spi_load_boot_info(); + if (ret) { + printf("%s: Cannot read XEA boot info! [%d]\n", __func__, ret); + /* To avoid bricking board - by default boot from boot0 eMMC */ + return 1; + } + + for (i = 0; i < 2; i++) { + if (img_src[i].magic == 'B' && + img_src[i].crc8 == crc8(0, &img_src[i].magic, 2)) { + src_idx = i; + break; + } + } + + debug("%s: src idx: %d\n", __func__, src_idx); + + if (src_idx < 0) + /* + * Always use eMMC (mmcblkX) boot0 if no + * valid image source description found + */ + return 1; + + if (img_src[src_idx].flags & BOOT_SRC_PART1) + return 2; + + return 1; +} + void board_boot_order(u32 *spl_boot_list) { spl_boot_list[0] = BOOT_DEVICE_MMC1; -- 2.39.2 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH v1 1/3] arm: config: xea: Update environment variables for XEA board (imx287) 2024-01-10 14:48 [PATCH v1 1/3] arm: config: xea: Update environment variables for XEA board (imx287) Lukasz Majewski 2024-01-10 14:48 ` [PATCH v1 2/3] arm: config: Enable CRC8 support in SPL on imx287 XEA board Lukasz Majewski 2024-01-10 14:48 ` [PATCH v1 3/3] arm: xea: Add support for boot image source descriptor in SPL Lukasz Majewski @ 2024-01-10 14:52 ` Tom Rini 2024-01-11 8:18 ` Lukasz Majewski 2 siblings, 1 reply; 5+ messages in thread From: Tom Rini @ 2024-01-10 14:52 UTC (permalink / raw) To: Lukasz Majewski; +Cc: Stefano Babic, Fabio Estevam, u-boot, NXP u-boot [-- Attachment #1: Type: text/plain, Size: 480 bytes --] On Wed, Jan 10, 2024 at 03:48:47PM +0100, Lukasz Majewski wrote: > As the XEA now supports fitImage, the default envs shall reflect this > as well. > > Moreover, some SPI-NOR layout re-organization has took place. > > Signed-off-by: Lukasz Majewski <lukma@denx.de> > --- > > include/configs/xea.h | 45 ++++++++++++++++++++++++------------------- > 1 file changed, 25 insertions(+), 20 deletions(-) Please migrate this to a plain text environment. -- Tom [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 659 bytes --] ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v1 1/3] arm: config: xea: Update environment variables for XEA board (imx287) 2024-01-10 14:52 ` [PATCH v1 1/3] arm: config: xea: Update environment variables for XEA board (imx287) Tom Rini @ 2024-01-11 8:18 ` Lukasz Majewski 0 siblings, 0 replies; 5+ messages in thread From: Lukasz Majewski @ 2024-01-11 8:18 UTC (permalink / raw) To: Tom Rini; +Cc: Stefano Babic, Fabio Estevam, u-boot, NXP u-boot [-- Attachment #1: Type: text/plain, Size: 895 bytes --] Hi Tom, > On Wed, Jan 10, 2024 at 03:48:47PM +0100, Lukasz Majewski wrote: > > > As the XEA now supports fitImage, the default envs shall reflect > > this as well. > > > > Moreover, some SPI-NOR layout re-organization has took place. > > > > Signed-off-by: Lukasz Majewski <lukma@denx.de> > > --- > > > > include/configs/xea.h | 45 > > ++++++++++++++++++++++++------------------- 1 file changed, 25 > > insertions(+), 20 deletions(-) > > Please migrate this to a plain text environment. > Ok, so I will prepare new patch especially for it. (IMHO, patches 2/3 and 3/3 can be applied without this one). Best regards, Lukasz Majewski -- DENX Software Engineering GmbH, Managing Director: Erika Unter HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma@denx.de [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 488 bytes --] ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2024-01-11 8:18 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2024-01-10 14:48 [PATCH v1 1/3] arm: config: xea: Update environment variables for XEA board (imx287) Lukasz Majewski 2024-01-10 14:48 ` [PATCH v1 2/3] arm: config: Enable CRC8 support in SPL on imx287 XEA board Lukasz Majewski 2024-01-10 14:48 ` [PATCH v1 3/3] arm: xea: Add support for boot image source descriptor in SPL Lukasz Majewski 2024-01-10 14:52 ` [PATCH v1 1/3] arm: config: xea: Update environment variables for XEA board (imx287) Tom Rini 2024-01-11 8:18 ` Lukasz Majewski
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox