mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2025-08-08 00:06:59 +02:00
arm64: versal: Wire SPIs for dfu_alt_info variable generation
Enable automatic dfu_alt_info variable generation based on MTD partition. Signed-off-by: Michal Simek <michal.simek@amd.com> Link: https://lore.kernel.org/r/67ff88c8c7186138353c0b74ed37a318fb4b199e.1733395093.git.michal.simek@amd.com
This commit is contained in:
parent
6a0db9ee03
commit
5e3b8e5c49
@ -14,6 +14,7 @@
|
|||||||
#include <malloc.h>
|
#include <malloc.h>
|
||||||
#include <memalign.h>
|
#include <memalign.h>
|
||||||
#include <mmc.h>
|
#include <mmc.h>
|
||||||
|
#include <mtd.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include <asm/cache.h>
|
#include <asm/cache.h>
|
||||||
#include <asm/global_data.h>
|
#include <asm/global_data.h>
|
||||||
@ -346,6 +347,31 @@ enum env_location env_get_location(enum env_operation op, int prio)
|
|||||||
|
|
||||||
#define DFU_ALT_BUF_LEN SZ_1K
|
#define DFU_ALT_BUF_LEN SZ_1K
|
||||||
|
|
||||||
|
static void mtd_found_part(u32 *base, u32 *size)
|
||||||
|
{
|
||||||
|
struct mtd_info *part, *mtd;
|
||||||
|
|
||||||
|
mtd_probe_devices();
|
||||||
|
|
||||||
|
mtd = get_mtd_device_nm("nor0");
|
||||||
|
if (!IS_ERR_OR_NULL(mtd)) {
|
||||||
|
list_for_each_entry(part, &mtd->partitions, node) {
|
||||||
|
debug("0x%012llx-0x%012llx : \"%s\"\n",
|
||||||
|
part->offset, part->offset + part->size,
|
||||||
|
part->name);
|
||||||
|
|
||||||
|
if (*base >= part->offset &&
|
||||||
|
*base < part->offset + part->size) {
|
||||||
|
debug("Found my partition: %d/%s\n",
|
||||||
|
part->index, part->name);
|
||||||
|
*base = part->offset;
|
||||||
|
*size = part->size;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void set_dfu_alt_info(char *interface, char *devstr)
|
void set_dfu_alt_info(char *interface, char *devstr)
|
||||||
{
|
{
|
||||||
int bootseq = 0, len = 0;
|
int bootseq = 0, len = 0;
|
||||||
@ -371,6 +397,21 @@ void set_dfu_alt_info(char *interface, char *devstr)
|
|||||||
len += snprintf(buf + len, DFU_ALT_BUF_LEN, ".bin fat %d 1",
|
len += snprintf(buf + len, DFU_ALT_BUF_LEN, ".bin fat %d 1",
|
||||||
bootseq);
|
bootseq);
|
||||||
break;
|
break;
|
||||||
|
case QSPI_MODE_24BIT:
|
||||||
|
case QSPI_MODE_32BIT:
|
||||||
|
case OSPI_MODE:
|
||||||
|
{
|
||||||
|
u32 base = 0;
|
||||||
|
u32 size = 0x1500000;
|
||||||
|
u32 limit = size;
|
||||||
|
|
||||||
|
mtd_found_part(&base, &limit);
|
||||||
|
|
||||||
|
len += snprintf(buf + len, DFU_ALT_BUF_LEN,
|
||||||
|
"sf 0:0=boot.bin raw 0x%x 0x%x",
|
||||||
|
base, limit);
|
||||||
|
}
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -83,6 +83,7 @@ CONFIG_CLK_VERSAL=y
|
|||||||
CONFIG_DFU_TIMEOUT=y
|
CONFIG_DFU_TIMEOUT=y
|
||||||
CONFIG_DFU_MMC=y
|
CONFIG_DFU_MMC=y
|
||||||
CONFIG_DFU_RAM=y
|
CONFIG_DFU_RAM=y
|
||||||
|
CONFIG_DFU_SF=y
|
||||||
CONFIG_SYS_DFU_DATA_BUF_SIZE=0x1800000
|
CONFIG_SYS_DFU_DATA_BUF_SIZE=0x1800000
|
||||||
CONFIG_ARM_FFA_TRANSPORT=y
|
CONFIG_ARM_FFA_TRANSPORT=y
|
||||||
CONFIG_FPGA_XILINX=y
|
CONFIG_FPGA_XILINX=y
|
||||||
|
Loading…
Reference in New Issue
Block a user