net: pfe_eth: Use spi_flash_read API to access flash memory
Current PFE firmware access spi-nor memory directly. New spi-mem framework does not support direct memory access. So, let's use spi_flash_read API to access memory instead of directly using it. Signed-off-by: Kuldeep Singh <kuldeep.singh@nxp.com> Reviewed-by: Frieder Schrempf <frieder.schrempf@kontron.de> Reviewed-by: Priyanka Jain <priyanka.jain@nxp.com>
This commit is contained in:
parent
02decd4e0c
commit
e0152dbed6
@ -16,13 +16,14 @@
|
|||||||
#include <linux/bitops.h>
|
#include <linux/bitops.h>
|
||||||
#include <net/pfe_eth/pfe_eth.h>
|
#include <net/pfe_eth/pfe_eth.h>
|
||||||
#include <net/pfe_eth/pfe_firmware.h>
|
#include <net/pfe_eth/pfe_firmware.h>
|
||||||
|
#include <spi_flash.h>
|
||||||
#ifdef CONFIG_CHAIN_OF_TRUST
|
#ifdef CONFIG_CHAIN_OF_TRUST
|
||||||
#include <fsl_validate.h>
|
#include <fsl_validate.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define PFE_FIRMWARE_FIT_CNF_NAME "config@1"
|
#define PFE_FIRMWARE_FIT_CNF_NAME "config@1"
|
||||||
|
|
||||||
static const void *pfe_fit_addr = (void *)CONFIG_SYS_LS_PFE_FW_ADDR;
|
static const void *pfe_fit_addr;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* PFE elf firmware loader.
|
* PFE elf firmware loader.
|
||||||
@ -163,6 +164,44 @@ static int pfe_fit_check(void)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int pfe_spi_flash_init(void)
|
||||||
|
{
|
||||||
|
struct spi_flash *pfe_flash;
|
||||||
|
int ret = 0;
|
||||||
|
void *addr = malloc(CONFIG_SYS_QE_FMAN_FW_LENGTH);
|
||||||
|
|
||||||
|
#ifdef CONFIG_DM_SPI_FLASH
|
||||||
|
struct udevice *new;
|
||||||
|
|
||||||
|
/* speed and mode will be read from DT */
|
||||||
|
ret = spi_flash_probe_bus_cs(CONFIG_ENV_SPI_BUS,
|
||||||
|
CONFIG_ENV_SPI_CS, 0, 0, &new);
|
||||||
|
|
||||||
|
pfe_flash = dev_get_uclass_priv(new);
|
||||||
|
#else
|
||||||
|
pfe_flash = spi_flash_probe(CONFIG_ENV_SPI_BUS,
|
||||||
|
CONFIG_ENV_SPI_CS,
|
||||||
|
CONFIG_ENV_SPI_MAX_HZ,
|
||||||
|
CONFIG_ENV_SPI_MODE);
|
||||||
|
#endif
|
||||||
|
if (!pfe_flash) {
|
||||||
|
printf("SF: probe for pfe failed\n");
|
||||||
|
return -ENODEV;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = spi_flash_read(pfe_flash,
|
||||||
|
CONFIG_SYS_LS_PFE_FW_ADDR,
|
||||||
|
CONFIG_SYS_QE_FMAN_FW_LENGTH,
|
||||||
|
addr);
|
||||||
|
if (ret)
|
||||||
|
printf("SF: read for pfe failed\n");
|
||||||
|
|
||||||
|
pfe_fit_addr = addr;
|
||||||
|
spi_flash_free(pfe_flash);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* PFE firmware initialization.
|
* PFE firmware initialization.
|
||||||
* Loads different firmware files from FIT image.
|
* Loads different firmware files from FIT image.
|
||||||
@ -187,6 +226,10 @@ int pfe_firmware_init(void)
|
|||||||
int ret = 0;
|
int ret = 0;
|
||||||
int fw_count;
|
int fw_count;
|
||||||
|
|
||||||
|
ret = pfe_spi_flash_init();
|
||||||
|
if (ret)
|
||||||
|
goto err;
|
||||||
|
|
||||||
ret = pfe_fit_check();
|
ret = pfe_fit_check();
|
||||||
if (ret)
|
if (ret)
|
||||||
goto err;
|
goto err;
|
||||||
|
@ -36,8 +36,11 @@
|
|||||||
/* Size of malloc() pool */
|
/* Size of malloc() pool */
|
||||||
#define CONFIG_SYS_MALLOC_LEN (CONFIG_ENV_SIZE + 1024 * 1024)
|
#define CONFIG_SYS_MALLOC_LEN (CONFIG_ENV_SIZE + 1024 * 1024)
|
||||||
|
|
||||||
/*SPI device */
|
/* PFE */
|
||||||
#define CONFIG_SYS_FMAN_FW_ADDR 0x400d0000
|
#define CONFIG_SYS_FMAN_FW_ADDR 0x400d0000
|
||||||
|
#define CONFIG_SYS_QE_FMAN_FW_LENGTH 0x300000
|
||||||
|
|
||||||
|
/*SPI device */
|
||||||
#define CONFIG_SYS_FSL_QSPI_BASE 0x40000000
|
#define CONFIG_SYS_FSL_QSPI_BASE 0x40000000
|
||||||
|
|
||||||
/* SATA */
|
/* SATA */
|
||||||
|
Loading…
Reference in New Issue
Block a user