Message ID | 1556474956-27786-2-git-send-email-sagar.kadam@sifive.com |
---|---|
State | Changes Requested |
Delegated to: | Ambarus Tudor |
Headers | show |
Series | add support for is25wp256 spi-nor device. | expand |
On Sun, 28 Apr 2019, Sagar Shrikant Kadam wrote: > Update spi_nor_id tablet for is25wp256 (32MB)device from ISSI, > present on HiFive Unleashed dev board (Rev: A00). > > Set method to enable quad mode for ISSI device in flash parameters > table. This patch was based on one originally written by Wes and/or Palmer: https://github.com/riscv/riscv-linux/commit/c94e267766d62bc9a669611c3d0c8ed5ea26569b The right thing to do is to note this in the commit message. > Signed-off-by: Sagar Shrikant Kadam <sagar.kadam@sifive.com> > --- > drivers/mtd/spi-nor/spi-nor.c | 10 +++++++++- > include/linux/mtd/spi-nor.h | 1 + > 2 files changed, 10 insertions(+), 1 deletion(-) > > diff --git a/drivers/mtd/spi-nor/spi-nor.c b/drivers/mtd/spi-nor/spi-nor.c > index fae1474..c5408ed 100644 > --- a/drivers/mtd/spi-nor/spi-nor.c > +++ b/drivers/mtd/spi-nor/spi-nor.c > @@ -1834,6 +1834,10 @@ static int sr2_bit7_quad_enable(struct spi_nor *nor) > SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) }, > { "is25wp128", INFO(0x9d7018, 0, 64 * 1024, 256, > SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) }, > + { "is25wp256", INFO(0x9d7019, 0, 64 * 1024, 1024, > + SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ | > + SPI_NOR_4B_OPCODES) > + }, > > /* Macronix */ > { "mx25l512e", INFO(0xc22010, 0, 64 * 1024, 1, SECT_4K) }, > @@ -3650,6 +3654,10 @@ static int spi_nor_init_params(struct spi_nor *nor, > case SNOR_MFR_MACRONIX: > params->quad_enable = macronix_quad_enable; > break; > + case SNOR_MFR_ISSI: > + params->quad_enable = macronix_quad_enable; > + break; > + > > case SNOR_MFR_ST: > case SNOR_MFR_MICRON: > @@ -4127,7 +4135,7 @@ int spi_nor_scan(struct spi_nor *nor, const char *name, > if (ret) > return ret; > > - if (nor->addr_width) { > + if (nor->addr_width && JEDEC_MFR(info) != SNOR_MFR_ISSI) { > /* already configured from SFDP */ > } else if (info->addr_width) { > nor->addr_width = info->addr_width; > diff --git a/include/linux/mtd/spi-nor.h b/include/linux/mtd/spi-nor.h > index b3d360b..ff13297 100644 > --- a/include/linux/mtd/spi-nor.h > +++ b/include/linux/mtd/spi-nor.h > @@ -19,6 +19,7 @@ > #define SNOR_MFR_ATMEL CFI_MFR_ATMEL > #define SNOR_MFR_GIGADEVICE 0xc8 > #define SNOR_MFR_INTEL CFI_MFR_INTEL > +#define SNOR_MFR_ISSI 0x9d /* ISSI */ > #define SNOR_MFR_ST CFI_MFR_ST /* ST Micro */ > #define SNOR_MFR_MICRON CFI_MFR_MICRON /* Micron */ > #define SNOR_MFR_MACRONIX CFI_MFR_MACRONIX > -- > 1.9.1 > >
Thank you Paul, for your review comments. On Tue, Apr 30, 2019 at 10:33 PM Paul Walmsley <paul.walmsley@sifive.com> wrote: > > On Sun, 28 Apr 2019, Sagar Shrikant Kadam wrote: > > > Update spi_nor_id tablet for is25wp256 (32MB)device from ISSI, > > present on HiFive Unleashed dev board (Rev: A00). > > > > Set method to enable quad mode for ISSI device in flash parameters > > table. > > This patch was based on one originally written by Wes and/or Palmer: > https://github.com/riscv/riscv-linux/commit/c94e267766d62bc9a669611c3d0c8ed5ea26569b > > The right thing to do is to note this in the commit message. > Yes true, this is important as well. I had mentioned this in the covering letter, but I missed to add the details into the commit message, I will submit V3 for this. > > Signed-off-by: Sagar Shrikant Kadam <sagar.kadam@sifive.com> > > --- > > drivers/mtd/spi-nor/spi-nor.c | 10 +++++++++- > > include/linux/mtd/spi-nor.h | 1 + > > 2 files changed, 10 insertions(+), 1 deletion(-) > > > > diff --git a/drivers/mtd/spi-nor/spi-nor.c b/drivers/mtd/spi-nor/spi-nor.c > > index fae1474..c5408ed 100644 > > --- a/drivers/mtd/spi-nor/spi-nor.c > > +++ b/drivers/mtd/spi-nor/spi-nor.c > > @@ -1834,6 +1834,10 @@ static int sr2_bit7_quad_enable(struct spi_nor *nor) > > SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) }, > > { "is25wp128", INFO(0x9d7018, 0, 64 * 1024, 256, > > SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) }, > > + { "is25wp256", INFO(0x9d7019, 0, 64 * 1024, 1024, > > + SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ | > > + SPI_NOR_4B_OPCODES) > > + }, > > > > /* Macronix */ > > { "mx25l512e", INFO(0xc22010, 0, 64 * 1024, 1, SECT_4K) }, > > @@ -3650,6 +3654,10 @@ static int spi_nor_init_params(struct spi_nor *nor, > > case SNOR_MFR_MACRONIX: > > params->quad_enable = macronix_quad_enable; > > break; > > + case SNOR_MFR_ISSI: > > + params->quad_enable = macronix_quad_enable; > > + break; > > + > > > > case SNOR_MFR_ST: > > case SNOR_MFR_MICRON: > > @@ -4127,7 +4135,7 @@ int spi_nor_scan(struct spi_nor *nor, const char *name, > > if (ret) > > return ret; > > > > - if (nor->addr_width) { > > + if (nor->addr_width && JEDEC_MFR(info) != SNOR_MFR_ISSI) { > > /* already configured from SFDP */ > > } else if (info->addr_width) { > > nor->addr_width = info->addr_width; > > diff --git a/include/linux/mtd/spi-nor.h b/include/linux/mtd/spi-nor.h > > index b3d360b..ff13297 100644 > > --- a/include/linux/mtd/spi-nor.h > > +++ b/include/linux/mtd/spi-nor.h > > @@ -19,6 +19,7 @@ > > #define SNOR_MFR_ATMEL CFI_MFR_ATMEL > > #define SNOR_MFR_GIGADEVICE 0xc8 > > #define SNOR_MFR_INTEL CFI_MFR_INTEL > > +#define SNOR_MFR_ISSI 0x9d /* ISSI */ > > #define SNOR_MFR_ST CFI_MFR_ST /* ST Micro */ > > #define SNOR_MFR_MICRON CFI_MFR_MICRON /* Micron */ > > #define SNOR_MFR_MACRONIX CFI_MFR_MACRONIX > > -- > > 1.9.1 > > > >
diff --git a/drivers/mtd/spi-nor/spi-nor.c b/drivers/mtd/spi-nor/spi-nor.c index fae1474..c5408ed 100644 --- a/drivers/mtd/spi-nor/spi-nor.c +++ b/drivers/mtd/spi-nor/spi-nor.c @@ -1834,6 +1834,10 @@ static int sr2_bit7_quad_enable(struct spi_nor *nor) SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) }, { "is25wp128", INFO(0x9d7018, 0, 64 * 1024, 256, SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) }, + { "is25wp256", INFO(0x9d7019, 0, 64 * 1024, 1024, + SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ | + SPI_NOR_4B_OPCODES) + }, /* Macronix */ { "mx25l512e", INFO(0xc22010, 0, 64 * 1024, 1, SECT_4K) }, @@ -3650,6 +3654,10 @@ static int spi_nor_init_params(struct spi_nor *nor, case SNOR_MFR_MACRONIX: params->quad_enable = macronix_quad_enable; break; + case SNOR_MFR_ISSI: + params->quad_enable = macronix_quad_enable; + break; + case SNOR_MFR_ST: case SNOR_MFR_MICRON: @@ -4127,7 +4135,7 @@ int spi_nor_scan(struct spi_nor *nor, const char *name, if (ret) return ret; - if (nor->addr_width) { + if (nor->addr_width && JEDEC_MFR(info) != SNOR_MFR_ISSI) { /* already configured from SFDP */ } else if (info->addr_width) { nor->addr_width = info->addr_width; diff --git a/include/linux/mtd/spi-nor.h b/include/linux/mtd/spi-nor.h index b3d360b..ff13297 100644 --- a/include/linux/mtd/spi-nor.h +++ b/include/linux/mtd/spi-nor.h @@ -19,6 +19,7 @@ #define SNOR_MFR_ATMEL CFI_MFR_ATMEL #define SNOR_MFR_GIGADEVICE 0xc8 #define SNOR_MFR_INTEL CFI_MFR_INTEL +#define SNOR_MFR_ISSI 0x9d /* ISSI */ #define SNOR_MFR_ST CFI_MFR_ST /* ST Micro */ #define SNOR_MFR_MICRON CFI_MFR_MICRON /* Micron */ #define SNOR_MFR_MACRONIX CFI_MFR_MACRONIX
Update spi_nor_id tablet for is25wp256 (32MB)device from ISSI, present on HiFive Unleashed dev board (Rev: A00). Set method to enable quad mode for ISSI device in flash parameters table. Signed-off-by: Sagar Shrikant Kadam <sagar.kadam@sifive.com> --- drivers/mtd/spi-nor/spi-nor.c | 10 +++++++++- include/linux/mtd/spi-nor.h | 1 + 2 files changed, 10 insertions(+), 1 deletion(-)