From 201fbf5da34c52d1c11d2b968a8d7c2ffae36648 Mon Sep 17 00:00:00 2001 From: Jon Lin Date: Tue, 31 Aug 2021 09:39:01 +0800 Subject: [PATCH] drivers: rkflash: support new spiflash Add F35SQA001G, W25Q128JWSQ, XT25F64F, P25Q32SL, GM25Q128A Change XT25F256BSFIGU, MX25U51245G Change-Id: Ib9f60efbd3aad72044b7f3b0ee5a1a93333f0005 Signed-off-by: Jon Lin --- drivers/rkflash/sfc_nand.c | 2 ++ drivers/rkflash/sfc_nor.c | 18 +++++++++++++----- drivers/rkflash/sfc_nor.h | 1 + 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/drivers/rkflash/sfc_nand.c b/drivers/rkflash/sfc_nand.c index 653799e1cf01..e5acf35fdaaf 100644 --- a/drivers/rkflash/sfc_nand.c +++ b/drivers/rkflash/sfc_nand.c @@ -97,6 +97,8 @@ static struct nand_info spi_nand_tbl[] = { { 0xCD, 0xEB, 0x00, 4, 0x40, 1, 2048, 0x4C, 19, 0x4, 0, { 0x04, 0x08, 0xFF, 0xFF }, &sfc_nand_get_ecc_status1 }, /* FS35ND04G-S2Y2 1*4096 */ { 0xCD, 0xEC, 0x00, 4, 0x40, 2, 2048, 0x4C, 20, 0x4, 0, { 0x04, 0x08, 0xFF, 0xFF }, &sfc_nand_get_ecc_status1 }, + /* F35SQA001G */ + { 0xCD, 0x71, 0x00, 4, 0x40, 1, 1024, 0x4C, 18, 0x1, 1, { 0x04, 0x08, 0xFF, 0xFF }, &sfc_nand_get_ecc_status1 }, /* DS35Q1GA-IB */ { 0xE5, 0x71, 0x00, 4, 0x40, 1, 1024, 0x0C, 18, 0x4, 1, { 0x04, 0x14, 0xFF, 0xFF }, &sfc_nand_get_ecc_status1 }, diff --git a/drivers/rkflash/sfc_nor.c b/drivers/rkflash/sfc_nor.c index 11cb4f31cbac..b6bfe353c9df 100644 --- a/drivers/rkflash/sfc_nor.c +++ b/drivers/rkflash/sfc_nor.c @@ -40,10 +40,12 @@ static struct flash_info spi_flash_tbl[] = { { 0xef4019, 128, 8, 0x13, 0x02, 0x6C, 0x32, 0x20, 0xD8, 0x3C, 16, 9, 0 }, /* W25Q32JW */ { 0xef6016, 128, 8, 0x03, 0x02, 0x6B, 0x32, 0x20, 0xD8, 0x0C, 13, 9, 0 }, - /* W25Q256JWEQ*/ - { 0xef6019, 128, 8, 0x13, 0x02, 0x6C, 0x32, 0x20, 0xD8, 0x3C, 16, 9, 0 }, /* W25Q64FWSSIG */ { 0xef6017, 128, 8, 0x03, 0x02, 0x6B, 0x32, 0x20, 0xD8, 0x0C, 14, 9, 0 }, + /* W25Q128JWSQ */ + { 0xef6018, 128, 8, 0x03, 0x02, 0x6B, 0x32, 0x20, 0xD8, 0x0C, 15, 9, 0 }, + /* W25Q256JWEQ*/ + { 0xef6019, 128, 8, 0x13, 0x02, 0x6C, 0x32, 0x20, 0xD8, 0x3C, 16, 9, 0 }, /* W25Q128JVSIM */ { 0xef7018, 128, 8, 0x03, 0x02, 0x6B, 0x32, 0x20, 0xD8, 0x0C, 15, 9, 0 }, /* W25Q256JVEM */ @@ -60,7 +62,7 @@ static struct flash_info spi_flash_tbl[] = { /* MX25L51245GMI */ { 0xc2201a, 128, 8, 0x13, 0x12, 0x6C, 0x3E, 0x21, 0xDC, 0x1E, 17, 6, 0 }, /* MX25U51245G */ - { 0xc2253a, 128, 8, 0x13, 0x12, 0x6C, 0x3E, 0x21, 0xDC, 0x1E, 17, 6, 0 }, + { 0xc2253a, 128, 8, 0x0C, 0x12, 0x6C, 0x3E, 0x21, 0xDC, 0x1E, 17, 6, 0 }, /* MX25U3232F */ { 0xc22536, 128, 8, 0x03, 0x02, 0x6B, 0x32, 0x20, 0xD8, 0x0E, 13, 6, 0 }, /* MX25U6432F */ @@ -83,12 +85,12 @@ static struct flash_info spi_flash_tbl[] = { /* XT25F128A XM25QH128A */ { 0x207018, 128, 8, 0x03, 0x02, 0x6B, 0x32, 0x20, 0xD8, 0x0C, 15, 0, 0 }, - /* XT25F64BSSIGU-5 */ + /* XT25F64BSSIGU-5 XT25F64F */ { 0x0b4017, 128, 8, 0x03, 0x02, 0x6B, 0x32, 0x20, 0xD8, 0x0D, 14, 9, 0 }, /* XT25F128BSSIGU */ { 0x0b4018, 128, 8, 0x03, 0x02, 0x6B, 0x32, 0x20, 0xD8, 0x0D, 15, 9, 0 }, /* XT25F256BSFIGU */ - { 0x0b4019, 128, 8, 0x03, 0x02, 0x6B, 0x32, 0x20, 0xD8, 0x0C, 16, 9, 0 }, + { 0x0b4019, 128, 8, 0x13, 0x12, 0x6C, 0x34, 0x21, 0xDC, 0x1C, 16, 9, 0 }, /* XT25F32BS */ { 0x0b4016, 128, 8, 0x03, 0x02, 0x6B, 0x32, 0x20, 0xD8, 0x0D, 13, 9, 0 }, /* XT25F16BS */ @@ -117,6 +119,8 @@ static struct flash_info spi_flash_tbl[] = { { 0xf83217, 128, 8, 0x03, 0x02, 0x6B, 0x32, 0x20, 0xD8, 0x0D, 14, 9, 0 }, /* FM25M64C */ { 0xf84317, 128, 8, 0x03, 0x02, 0x6B, 0x32, 0x20, 0xD8, 0x0D, 14, 9, 0 }, + /* P25Q32SL */ + { 0x856016, 128, 8, 0x03, 0x02, 0x6B, 0x32, 0x20, 0xD8, 0x0C, 13, 9, 0 }, /* ZB25VQ64 */ { 0x5e4017, 128, 8, 0x03, 0x02, 0x6B, 0x32, 0x20, 0xD8, 0x0C, 14, 9, 0 }, @@ -146,6 +150,9 @@ static struct flash_info spi_flash_tbl[] = { { 0xf84218, 128, 8, 0x03, 0x02, 0x6B, 0x32, 0x20, 0xD8, 0x0D, 15, 9, 0 }, /* DS25M4AB-1AIB4 */ { 0xe54218, 128, 8, 0x03, 0x02, 0x6B, 0x32, 0x20, 0xD8, 0x0C, 15, 9, 0 }, + + /* GM25Q128A */ + { 0x1c4018, 128, 8, 0x03, 0x02, 0x6B, 0x32, 0x20, 0xD8, 0x0C, 15, 9, 0 }, }; static int snor_write_en(void) @@ -476,6 +483,7 @@ int snor_read_data(struct SFNOR_DEV *p_dev, op.sfctrl.b.enbledma = 1; if (p_dev->read_cmd == CMD_FAST_READ_X1 || + p_dev->read_cmd == CMD_PAGE_FASTREAD4B || p_dev->read_cmd == CMD_FAST_READ_X4 || p_dev->read_cmd == CMD_FAST_READ_X2 || p_dev->read_cmd == CMD_FAST_4READ_X4) { diff --git a/drivers/rkflash/sfc_nor.h b/drivers/rkflash/sfc_nor.h index 950af6a5e686..998121c1bd7a 100644 --- a/drivers/rkflash/sfc_nor.h +++ b/drivers/rkflash/sfc_nor.h @@ -33,6 +33,7 @@ #define CMD_WRITE_EN (0x06) #define CMD_WRITE_DIS (0x04) #define CMD_PAGE_READ (0x13) +#define CMD_PAGE_FASTREAD4B (0x0C) #define CMD_GET_FEATURE (0x0F) #define CMD_SET_FEATURE (0x1F) #define CMD_PROG_LOAD (0x02)