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 <net/pfe_eth/pfe_eth.h> | ||||
| #include <net/pfe_eth/pfe_firmware.h> | ||||
| #include <spi_flash.h> | ||||
| #ifdef CONFIG_CHAIN_OF_TRUST | ||||
| #include <fsl_validate.h> | ||||
| #endif | ||||
| 
 | ||||
| #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. | ||||
|  | @ -163,6 +164,44 @@ static int pfe_fit_check(void) | |||
| 	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. | ||||
|  * Loads different firmware files from FIT image. | ||||
|  | @ -187,6 +226,10 @@ int pfe_firmware_init(void) | |||
| 	int ret = 0; | ||||
| 	int fw_count; | ||||
| 
 | ||||
| 	ret = pfe_spi_flash_init(); | ||||
| 	if (ret) | ||||
| 		goto err; | ||||
| 
 | ||||
| 	ret = pfe_fit_check(); | ||||
| 	if (ret) | ||||
| 		goto err; | ||||
|  |  | |||
|  | @ -36,8 +36,11 @@ | |||
| /* Size of malloc() pool */ | ||||
| #define CONFIG_SYS_MALLOC_LEN		(CONFIG_ENV_SIZE + 1024 * 1024) | ||||
| 
 | ||||
| /*SPI device */ | ||||
| /* PFE */ | ||||
| #define CONFIG_SYS_FMAN_FW_ADDR		0x400d0000 | ||||
| #define CONFIG_SYS_QE_FMAN_FW_LENGTH	0x300000 | ||||
| 
 | ||||
| /*SPI device */ | ||||
| #define CONFIG_SYS_FSL_QSPI_BASE	0x40000000 | ||||
| 
 | ||||
| /* SATA */ | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue