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