ipq40xx: spi: Added support for GD25Q256

Change-Id: Iefc667c95558234e54111e6052f16e0f035b24ab
Signed-off-by: Rajkumar Ayyasamy <arajkuma@codeaurora.org>
This commit is contained in:
Rajkumar Ayyasamy 2018-02-02 17:54:02 +05:30
parent 4b79b9c406
commit 8ac98b5fd9
6 changed files with 25 additions and 1 deletions

View file

@ -79,4 +79,5 @@ extern int dump_entries_s;
#define MMC_MODE_HC 0x800
#define SPI_DEFAULT_ADDR_LEN 3
#define SPI_MAX_ADDR_LEN 4
#endif /* __QCA_COMMON_H_ */

View file

@ -337,3 +337,8 @@ int apps_iscrashed(void)
return 0;
}
unsigned int get_smem_spi_addr_len(void)
{
return SPI_MAX_ADDR_LEN;
}

View file

@ -57,6 +57,8 @@ enum spi_nor_option_flags {
#define SPI_FLASH_4B_ADDR_LEN 4
#define SPI_FLASH_16MB_BOUN 0x1000000
#define SPI_FLASH_CMD_EN4B 0xb7 /* Enter 4-byte mode */
/* CFI Manufacture ID's */
#define SPI_FLASH_CFI_MFR_SPANSION 0x01
#define SPI_FLASH_CFI_MFR_STMICRO 0x20
@ -64,6 +66,7 @@ enum spi_nor_option_flags {
#define SPI_FLASH_CFI_MFR_SST 0xbf
#define SPI_FLASH_CFI_MFR_WINBOND 0xef
#define SPI_FLASH_CFI_MFR_ATMEL 0x1f
#define SPI_FLASH_CFI_MFR_GIGA 0xc8
/* Erase commands */
#define CMD_ERASE_4K 0x20

View file

@ -36,6 +36,7 @@ const struct spi_flash_params spi_flash_params_table[] = {
{"GD25Q64B", 0xc84017, 0x0, 64 * 1024, 128, RD_NORM, SECT_4K},
{"GD25LQ32", 0xc86016, 0x0, 64 * 1024, 64, RD_NORM, SECT_4K},
{"GD25Q128", 0xc84018, 0x0, 64 * 1024, 256, RD_NORM, SECT_4K},
{"GD25Q256", 0xc84019, 0x0, 64 * 1024, 512, RD_NORM, SECT_4K},
#endif
#ifdef CONFIG_SPI_FLASH_ISSI /* ISSI */
{"IS25LP032", 0x9d6016, 0x0, 64 * 1024, 64, RD_NORM, 0},

View file

@ -1102,12 +1102,24 @@ int spi_flash_scan(struct spi_flash *flash)
}
flash->addr_width = SPI_FLASH_3B_ADDR_LEN;
printf("SPI_ADDR_LEN=%x\n",get_smem_spi_addr_len());
if ((flash->size > SPI_FLASH_16MB_BOUN) &&
(get_smem_spi_addr_len() == SPI_FLASH_4B_ADDR_LEN)) {
#ifndef CONFIG_IPQ_4B_ADDR_SWITCH_REQD
if (idcode[0] == SPI_FLASH_CFI_MFR_WINBOND)
flash->addr_width = SPI_FLASH_4B_ADDR_LEN;
#else
if (idcode[0] == SPI_FLASH_CFI_MFR_GIGA) {
ret = spi_flash_cmd(spi, SPI_FLASH_CMD_EN4B, NULL, 0);
if (ret) {
printf("SF:Failed to switch to 4 byte mode\n");
flash->size = 0x1000000;
} else
flash->addr_width = SPI_FLASH_4B_ADDR_LEN;
}
#endif
}
printf("SPI_ADDR_LEN=%x\n",flash->addr_width);
#ifdef CONFIG_SPI_FLASH_STMICRO
if (params->flags & E_FSR)
flash->flags |= SNOR_F_USE_FSR;

View file

@ -302,4 +302,6 @@ typedef struct {
#define CONFIG_CMD_PCI
#define CONFIG_PCI_SCAN_SHOW
#endif
#define CONFIG_IPQ_4B_ADDR_SWITCH_REQD
#endif /* _IPQ40XX_H */