This compile the stboard command to
read and write the board in the OTP.
-config MTDPARTS_NAND0_BOOT
- string "mtd boot partitions for nand0"
- default "2m(fsbl),2m(ssbl1),2m(ssbl2)" if STM32MP15x_STM32IMAGE || \
- !TFABOOT
- default "2m(fsbl),4m(fip1),4m(fip2)"
- depends on SYS_MTDPARTS_RUNTIME && ARCH_STM32MP
- help
- This define the partitions of nand0 used to build mtparts dynamically
- for boot from nand0.
- Each partition need to be aligned with the device erase block size,
- 512KB is the max size for the NAND supported by stm32mp1 platform.
- The fsbl partition support multiple copy of the same binary, one by
- erase block.
-
-config MTDPARTS_NAND0_TEE
- string "mtd tee partitions for nand0"
- default "512k(teeh),512k(teed),512k(teex)"
- depends on SYS_MTDPARTS_RUNTIME && ARCH_STM32MP && STM32MP15x_STM32IMAGE
- help
- This define the tee partitions added in mtparts dynamically
- when tee is supported with boot from nand0.
- Each partition need to be aligned with the device erase block size,
- 512KB is the max size for the NAND supported by stm32mp1 platform.
-
-config MTDPARTS_NOR0_BOOT
- string "mtd boot partitions for nor0"
- default "256k(fsbl1),256k(fsbl2),2m(ssbl),512k(u-boot-env)" if STM32MP15x_STM32IMAGE || \
- !TFABOOT
- default "256k(fsbl1),256k(fsbl2),4m(fip),512k(u-boot-env)"
- depends on SYS_MTDPARTS_RUNTIME && ARCH_STM32MP
- help
- This define the partitions of nand0 used to build mtparts dynamically
- for boot from nor0.
- Each partition need to be aligned with the device erase block size,
- with 256KB we support all the NOR.
- U-Boot env partition (512kB) use 2 erase block for redundancy.
-
-config MTDPARTS_NOR0_TEE
- string "mtd tee partitions for nor0"
- default "256k(teeh),512k(teed),256k(teex)"
- depends on SYS_MTDPARTS_RUNTIME && ARCH_STM32MP && STM32MP15x_STM32IMAGE
- help
- This define the tee partitions added in mtparts dynamically
- when tee is supported with boot from nor0.
-
-config MTDPARTS_SPINAND0_BOOT
- string "mtd boot partitions for spi-nand0"
- default "2m(fsbl),2m(ssbl1),2m(ssbl2)" if STM32MP15x_STM32IMAGE || !TFABOOT
- default "2m(fsbl),4m(fip1),4m(fip2)"
- depends on SYS_MTDPARTS_RUNTIME && ARCH_STM32MP
- help
- This define the partitions of nand0 used to build mtparts dynamically
- for boot from spi-nand0,
- 512KB is the max size for the NAND supported by stm32mp1 platform.
- The fsbl partition support multiple copy of the same binary, one by
- erase block.
-
-config MTDPARTS_SPINAND0_TEE
- string "mtd tee partitions for spi-nand0"
- default "512k(teeh),512k(teed),512k(teex)"
- depends on SYS_MTDPARTS_RUNTIME && ARCH_STM32MP && STM32MP15x_STM32IMAGE
- help
- This define the tee partitions added in mtparts dynamically
- when tee is supported with boot from spi-nand0,
- 512KB is the max size for the NAND supported by stm32mp1 platform.
-
config DFU_ALT_RAM0
string "dfu for ram0"
default "uImage ram 0xc2000000 0x2000000;devicetree.dtb ram 0xc4000000 0x100000;uramdisk.image.gz ram 0xc4400000 0x10000000"
+++ /dev/null
-// SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause
-/*
- * Copyright (C) 2020, STMicroelectronics - All Rights Reserved
- */
-
-#include <common.h>
-#include <dfu.h>
-#include <dm.h>
-#include <env.h>
-#include <env_internal.h>
-#include <log.h>
-#include <mtd.h>
-#include <mtd_node.h>
-#ifdef CONFIG_STM32MP15x_STM32IMAGE
-#include <tee.h>
-#endif
-#include <asm/arch/stm32prog.h>
-#include <asm/arch/sys_proto.h>
-#include <asm/global_data.h>
-
-#define MTDPARTS_LEN 256
-#define MTDIDS_LEN 128
-
-/*
- * Get a global data pointer
- */
-DECLARE_GLOBAL_DATA_PTR;
-
-/**
- * update the variables "mtdids" and "mtdparts" with boot, tee and user strings
- */
-static void board_set_mtdparts(const char *dev,
- char *mtdids,
- char *mtdparts,
- const char *boot,
-#ifdef CONFIG_STM32MP15x_STM32IMAGE
- const char *tee,
-#endif
- const char *user)
-{
- /* mtdids: "<dev>=<dev>, ...." */
- if (mtdids[0] != '\0')
- strcat(mtdids, ",");
- strcat(mtdids, dev);
- strcat(mtdids, "=");
- strcat(mtdids, dev);
-
- /* mtdparts: "mtdparts=<dev>:<mtdparts_<dev>>;..." */
- if (mtdparts[0] != '\0')
- strncat(mtdparts, ";", MTDPARTS_LEN);
- else
- strcat(mtdparts, "mtdparts=");
-
- strncat(mtdparts, dev, MTDPARTS_LEN);
- strncat(mtdparts, ":", MTDPARTS_LEN);
-
- if (boot) {
- strncat(mtdparts, boot, MTDPARTS_LEN);
- strncat(mtdparts, ",", MTDPARTS_LEN);
- }
-
-#ifdef CONFIG_STM32MP15x_STM32IMAGE
- if (tee) {
- strncat(mtdparts, tee, MTDPARTS_LEN);
- strncat(mtdparts, ",", MTDPARTS_LEN);
- }
-#endif
-
- strncat(mtdparts, user, MTDPARTS_LEN);
-}
-
-void board_mtdparts_default(const char **mtdids, const char **mtdparts)
-{
- struct mtd_info *mtd;
- struct udevice *dev;
- static char parts[3 * MTDPARTS_LEN + 1];
- static char ids[MTDIDS_LEN + 1];
- static bool mtd_initialized;
- bool nor, nand, spinand, serial;
-#ifdef CONFIG_STM32MP15x_STM32IMAGE
- bool tee = false;
-#endif
-
- if (mtd_initialized) {
- *mtdids = ids;
- *mtdparts = parts;
- return;
- }
-
- nor = false;
- nand = false;
- spinand = false;
- serial = false;
-
- switch (get_bootmode() & TAMP_BOOT_DEVICE_MASK) {
- case BOOT_SERIAL_UART:
- case BOOT_SERIAL_USB:
- serial = true;
- if (IS_ENABLED(CONFIG_CMD_STM32PROG)) {
-#ifdef CONFIG_STM32MP15x_STM32IMAGE
- tee = stm32prog_get_tee_partitions();
-#endif
- nor = stm32prog_get_fsbl_nor();
- }
- nand = true;
- spinand = true;
- break;
- case BOOT_FLASH_NAND:
- nand = true;
- break;
- case BOOT_FLASH_SPINAND:
- spinand = true;
- break;
- case BOOT_FLASH_NOR:
- nor = true;
- break;
- default:
- break;
- }
-
-#ifdef CONFIG_STM32MP15x_STM32IMAGE
- if (!serial && tee_find_device(NULL, NULL, NULL, NULL))
- tee = true;
-#endif
-
- memset(parts, 0, sizeof(parts));
- memset(ids, 0, sizeof(ids));
-
- /* probe all MTD devices */
- for (uclass_first_device(UCLASS_MTD, &dev);
- dev;
- uclass_next_device(&dev)) {
- log_debug("mtd device = %s\n", dev->name);
- }
-
- if (nand) {
- mtd = get_mtd_device_nm("nand0");
- if (!IS_ERR_OR_NULL(mtd)) {
- board_set_mtdparts("nand0", ids, parts,
- CONFIG_MTDPARTS_NAND0_BOOT,
-#ifdef CONFIG_STM32MP15x_STM32IMAGE
- !nor && tee ? CONFIG_MTDPARTS_NAND0_TEE : NULL,
-#endif
- "-(UBI)");
- put_mtd_device(mtd);
- }
- }
-
- if (spinand) {
- mtd = get_mtd_device_nm("spi-nand0");
- if (!IS_ERR_OR_NULL(mtd)) {
- board_set_mtdparts("spi-nand0", ids, parts,
- CONFIG_MTDPARTS_SPINAND0_BOOT,
-#ifdef CONFIG_STM32MP15x_STM32IMAGE
- !nor && tee ? CONFIG_MTDPARTS_SPINAND0_TEE : NULL,
-#endif
- "-(UBI)");
- put_mtd_device(mtd);
- }
- }
-
- if (nor) {
- if (!uclass_get_device(UCLASS_SPI_FLASH, 0, &dev)) {
- board_set_mtdparts("nor0", ids, parts,
- CONFIG_MTDPARTS_NOR0_BOOT,
-#ifdef CONFIG_STM32MP15x_STM32IMAGE
- tee ? CONFIG_MTDPARTS_NOR0_TEE : NULL,
-#endif
- "-(nor_user)");
- }
- }
-
- mtd_initialized = true;
- *mtdids = ids;
- *mtdparts = parts;
- log_debug("mtdids=%s & mtdparts=%s\n", ids, parts);
-}