mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2025-09-25 07:41:40 +02:00
net: pfe_eth: read PFE ESBC header flash with spi_flash_read API
Read PFE ESBC header flash with spi_flash_read API - logs as follows, Net: SF: Detected s25fs512s with page size 256 Bytes, erase size 256 KiB, total 64 MiB "Synchronous Abort" handler, esr 0x96000210 elr: 000000008206db44 lr : 0000000082004ea0 (reloc) elr: 00000000b7ba6b44 lr : 00000000b7b3dea0 x0 : 00000000b79407e8 x1 : 0000000040640000 x2 : 0000000000000050 x3 : 0000000000000000 x4 : 000000000000000a x5 : 0000000000000050 x6 : 0000000000000366 x7 : 00000000b7942308 x8 : 00000000b76407c0 x9 : 0000000000000008 x10: 0000000000000044 x11: 00000000b7634d1c x12: 000000000000004f x13: 0000000000000044 x14: 00000000b7634d98 x15: 00000000b76407c0 x16: 0000000000000000 x17: 0000000000000000 x18: 00000000b7636dd8 x19: 0000000000000000 x20: 00000000b79407d0 x21: 00000000b79407e8 x22: 0000000040640000 x23: 00000000b7634e58 x24: 0000000000000000 x25: 0000000003800000 x26: 00000000b7bdd000 x27: 0000000000000000 x28: 0000000000000000 x29: 00000000b7634d10 Code: d2800003 eb03005f 54000101 d65f03c0 (f8636826) Resetting CPU ... Signed-off-by: Biwen Li <biwen.li@nxp.com> Reviewed-by: Priyanka Jain <priyanka.jain@nxp.com>
This commit is contained in:
parent
4ed00656a9
commit
164941c2c4
@ -16,6 +16,10 @@ config SYS_LS_PFE_FW_ADDR
|
|||||||
hex "Flash address of PFE firmware"
|
hex "Flash address of PFE firmware"
|
||||||
default 0x40a00000
|
default 0x40a00000
|
||||||
|
|
||||||
|
config SYS_LS_PFE_FW_LENGTH
|
||||||
|
hex "length of PFE firmware"
|
||||||
|
default 0x40000
|
||||||
|
|
||||||
config SYS_LS_PPA_FW_ADDR
|
config SYS_LS_PPA_FW_ADDR
|
||||||
hex "PPA Firmware Addr"
|
hex "PPA Firmware Addr"
|
||||||
default 0x40400000
|
default 0x40400000
|
||||||
@ -65,6 +69,10 @@ config SYS_LS_PFE_FW_ADDR
|
|||||||
hex "Flash address of PFE firmware"
|
hex "Flash address of PFE firmware"
|
||||||
default 0x40020000
|
default 0x40020000
|
||||||
|
|
||||||
|
config SYS_LS_PFE_FW_LENGTH
|
||||||
|
hex "length of PFE firmware"
|
||||||
|
default 0x40000
|
||||||
|
|
||||||
config SYS_LS_PPA_FW_ADDR
|
config SYS_LS_PPA_FW_ADDR
|
||||||
hex "PPA Firmware Addr"
|
hex "PPA Firmware Addr"
|
||||||
default 0x40060000
|
default 0x40060000
|
||||||
@ -77,6 +85,9 @@ config SYS_LS_PFE_ESBC_ADDR
|
|||||||
hex "PFE Firmware HDR Addr"
|
hex "PFE Firmware HDR Addr"
|
||||||
default 0x401f8000
|
default 0x401f8000
|
||||||
|
|
||||||
|
config SYS_LS_PFE_ESBC_LENGTH
|
||||||
|
hex "length of PFE Firmware HDR"
|
||||||
|
default 0xc00
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if TARGET_LS1012AFRDM || TARGET_LS1012AFRWY
|
if TARGET_LS1012AFRDM || TARGET_LS1012AFRWY
|
||||||
|
@ -20,6 +20,14 @@ if CHAIN_OF_TRUST
|
|||||||
config SYS_LS_PPA_ESBC_ADDR
|
config SYS_LS_PPA_ESBC_ADDR
|
||||||
hex "PPA Firmware HDR Addr"
|
hex "PPA Firmware HDR Addr"
|
||||||
default 0x40680000
|
default 0x40680000
|
||||||
|
|
||||||
|
config SYS_LS_PFE_ESBC_ADDR
|
||||||
|
hex "PFE Firmware HDR Addr"
|
||||||
|
default 0x40700000
|
||||||
|
|
||||||
|
config SYS_LS_PFE_ESBC_LENGTH
|
||||||
|
hex "length of PFE Firmware HDR"
|
||||||
|
default 0xc00
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if FSL_PFE
|
if FSL_PFE
|
||||||
@ -39,9 +47,9 @@ config SYS_LS_PFE_FW_ADDR
|
|||||||
hex "Flash address of PFE firmware"
|
hex "Flash address of PFE firmware"
|
||||||
default 0x40a00000
|
default 0x40a00000
|
||||||
|
|
||||||
config SYS_LS_PFE_ESBC_ADDR
|
config SYS_LS_PFE_FW_LENGTH
|
||||||
hex "PFE Firmware HDR Addr"
|
hex "length of PFE firmware"
|
||||||
default 0x40700000
|
default 0x300000
|
||||||
|
|
||||||
config DDR_PFE_PHYS_BASEADDR
|
config DDR_PFE_PHYS_BASEADDR
|
||||||
hex "PFE DDR physical base address"
|
hex "PFE DDR physical base address"
|
||||||
|
@ -20,6 +20,14 @@ if CHAIN_OF_TRUST
|
|||||||
config SYS_LS_PPA_ESBC_ADDR
|
config SYS_LS_PPA_ESBC_ADDR
|
||||||
hex "PPA Firmware HDR Addr"
|
hex "PPA Firmware HDR Addr"
|
||||||
default 0x40680000
|
default 0x40680000
|
||||||
|
|
||||||
|
config SYS_LS_PFE_ESBC_ADDR
|
||||||
|
hex "PFE Firmware HDR Addr"
|
||||||
|
default 0x40640000
|
||||||
|
|
||||||
|
config SYS_LS_PFE_ESBC_LENGTH
|
||||||
|
hex "length of PFE Firmware HDR"
|
||||||
|
default 0xc00
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if FSL_PFE
|
if FSL_PFE
|
||||||
@ -33,9 +41,9 @@ config SYS_LS_PFE_FW_ADDR
|
|||||||
hex "Flash address of PFE firmware"
|
hex "Flash address of PFE firmware"
|
||||||
default 0x40a00000
|
default 0x40a00000
|
||||||
|
|
||||||
config SYS_LS_PFE_ESBC_ADDR
|
config SYS_LS_PFE_FW_LENGTH
|
||||||
hex "PFE Firmware HDR Addr"
|
hex "length of PFE firmware"
|
||||||
default 0x40640000
|
default 0x300000
|
||||||
|
|
||||||
config DDR_PFE_PHYS_BASEADDR
|
config DDR_PFE_PHYS_BASEADDR
|
||||||
hex "PFE DDR physical base address"
|
hex "PFE DDR physical base address"
|
||||||
@ -89,6 +97,10 @@ config SYS_LS_PFE_FW_ADDR
|
|||||||
hex "Flash address of PFE firmware"
|
hex "Flash address of PFE firmware"
|
||||||
default 0x40a00000
|
default 0x40a00000
|
||||||
|
|
||||||
|
config SYS_LS_PFE_FW_LENGTH
|
||||||
|
hex "length of PFE firmware"
|
||||||
|
default 0x300000
|
||||||
|
|
||||||
config DDR_PFE_PHYS_BASEADDR
|
config DDR_PFE_PHYS_BASEADDR
|
||||||
hex "PFE DDR physical base address"
|
hex "PFE DDR physical base address"
|
||||||
default 0x03800000
|
default 0x03800000
|
||||||
|
@ -10,6 +10,8 @@
|
|||||||
* files.
|
* files.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <dm.h>
|
||||||
|
#include <dm/device-internal.h>
|
||||||
#include <image.h>
|
#include <image.h>
|
||||||
#include <log.h>
|
#include <log.h>
|
||||||
#include <malloc.h>
|
#include <malloc.h>
|
||||||
@ -24,6 +26,9 @@
|
|||||||
#define PFE_FIRMWARE_FIT_CNF_NAME "config@1"
|
#define PFE_FIRMWARE_FIT_CNF_NAME "config@1"
|
||||||
|
|
||||||
static const void *pfe_fit_addr;
|
static const void *pfe_fit_addr;
|
||||||
|
#ifdef CONFIG_CHAIN_OF_TRUST
|
||||||
|
static const void *pfe_esbc_hdr_addr;
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* PFE elf firmware loader.
|
* PFE elf firmware loader.
|
||||||
@ -169,7 +174,7 @@ int pfe_spi_flash_init(void)
|
|||||||
struct spi_flash *pfe_flash;
|
struct spi_flash *pfe_flash;
|
||||||
struct udevice *new;
|
struct udevice *new;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
void *addr = malloc(CONFIG_SYS_QE_FMAN_FW_LENGTH);
|
void *addr = malloc(CONFIG_SYS_LS_PFE_FW_LENGTH);
|
||||||
|
|
||||||
if (!addr)
|
if (!addr)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
@ -179,21 +184,56 @@ int pfe_spi_flash_init(void)
|
|||||||
CONFIG_ENV_SPI_MAX_HZ,
|
CONFIG_ENV_SPI_MAX_HZ,
|
||||||
CONFIG_ENV_SPI_MODE,
|
CONFIG_ENV_SPI_MODE,
|
||||||
&new);
|
&new);
|
||||||
|
if (ret) {
|
||||||
|
printf("SF: failed to probe spi\n");
|
||||||
|
free(addr);
|
||||||
|
device_remove(new, DM_REMOVE_NORMAL);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
pfe_flash = dev_get_uclass_priv(new);
|
pfe_flash = dev_get_uclass_priv(new);
|
||||||
if (!pfe_flash) {
|
if (!pfe_flash) {
|
||||||
printf("SF: probe for pfe failed\n");
|
printf("SF: probe for pfe failed\n");
|
||||||
free(addr);
|
free(addr);
|
||||||
|
device_remove(new, DM_REMOVE_NORMAL);
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = spi_flash_read(pfe_flash,
|
ret = spi_flash_read(pfe_flash,
|
||||||
CONFIG_SYS_LS_PFE_FW_ADDR,
|
CONFIG_SYS_LS_PFE_FW_ADDR,
|
||||||
CONFIG_SYS_QE_FMAN_FW_LENGTH,
|
CONFIG_SYS_LS_PFE_FW_LENGTH,
|
||||||
addr);
|
addr);
|
||||||
if (ret)
|
if (ret) {
|
||||||
printf("SF: read for pfe failed\n");
|
printf("SF: read for pfe failed\n");
|
||||||
|
free(addr);
|
||||||
|
spi_flash_free(pfe_flash);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_CHAIN_OF_TRUST
|
||||||
|
void *hdr_addr = malloc(CONFIG_SYS_LS_PFE_ESBC_LENGTH);
|
||||||
|
|
||||||
|
if (!hdr_addr) {
|
||||||
|
free(addr);
|
||||||
|
spi_flash_free(pfe_flash);
|
||||||
|
return -ENOMEM;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = spi_flash_read(pfe_flash,
|
||||||
|
CONFIG_SYS_LS_PFE_ESBC_ADDR,
|
||||||
|
CONFIG_SYS_LS_PFE_ESBC_LENGTH,
|
||||||
|
hdr_addr);
|
||||||
|
if (ret) {
|
||||||
|
printf("SF: failed to read pfe esbc header\n");
|
||||||
|
free(addr);
|
||||||
|
free(hdr_addr);
|
||||||
|
spi_flash_free(pfe_flash);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
pfe_esbc_hdr_addr = hdr_addr;
|
||||||
|
#endif
|
||||||
pfe_fit_addr = addr;
|
pfe_fit_addr = addr;
|
||||||
spi_flash_free(pfe_flash);
|
spi_flash_free(pfe_flash);
|
||||||
|
|
||||||
@ -233,7 +273,7 @@ int pfe_firmware_init(void)
|
|||||||
goto err;
|
goto err;
|
||||||
|
|
||||||
#ifdef CONFIG_CHAIN_OF_TRUST
|
#ifdef CONFIG_CHAIN_OF_TRUST
|
||||||
pfe_esbc_hdr = CONFIG_SYS_LS_PFE_ESBC_ADDR;
|
pfe_esbc_hdr = (uintptr_t)pfe_esbc_hdr_addr;
|
||||||
pfe_img_addr = (uintptr_t)pfe_fit_addr;
|
pfe_img_addr = (uintptr_t)pfe_fit_addr;
|
||||||
if (fsl_check_boot_mode_secure() != 0) {
|
if (fsl_check_boot_mode_secure() != 0) {
|
||||||
/*
|
/*
|
||||||
|
Loading…
x
Reference in New Issue
Block a user