mtd: spi-nor: Set default Quad Enable method for ISSI flashes
authorSagar Shrikant Kadam <sagar.kadam@sifive.com>
Tue, 22 Oct 2019 17:22:19 +0000 (17:22 +0000)
committerTudor Ambarus <tudor.ambarus@microchip.com>
Mon, 11 Nov 2019 18:42:55 +0000 (20:42 +0200)
Set the default Quad Enable method for ISSI flashes. Used for
ISSI flashes (IS25WP256D-JMLE) that do not support SFDP tables
and can not determine the Quad Enable method by parsing BFPT.

Based on code originally written by Wesley Terpstra <wesley@sifive.com>
and/or Palmer Dabbelt <palmer@sifive.com>
https://github.com/riscv/riscv-linux/commit/c94e267766d62bc9a669611c3d0c8ed5ea26569b

Signed-off-by: Sagar Shrikant Kadam <sagar.kadam@sifive.com>
[tudor.ambarus@microchip.com:
- rebase, split and adapt for latest spi-nor/next,
- use PMC CFI ID for ISSI. According to JEP106BA, "Programmable Micro Corp"
  changed its name to Integrated Silicon Solution (ISSI)]
Signed-off-by: Tudor Ambarus <tudor.ambarus@microchip.com>
Reviewed-by: Vignesh Raghavendra <vigneshr@ti.com>
drivers/mtd/spi-nor/spi-nor.c
include/linux/mtd/spi-nor.h

index f7c6dcb6faaa06982f3cb208d6608c1f136781f0..f4afe123e9dcd38be987dd79be7f20309a24e620 100644 (file)
@@ -4577,6 +4577,11 @@ static void intel_set_default_init(struct spi_nor *nor)
        nor->flags |= SNOR_F_HAS_LOCK;
 }
 
+static void issi_set_default_init(struct spi_nor *nor)
+{
+       nor->params.quad_enable = spi_nor_sr1_bit6_quad_enable;
+}
+
 static void macronix_set_default_init(struct spi_nor *nor)
 {
        nor->params.quad_enable = spi_nor_sr1_bit6_quad_enable;
@@ -4617,6 +4622,10 @@ static void spi_nor_manufacturer_init_params(struct spi_nor *nor)
                intel_set_default_init(nor);
                break;
 
+       case SNOR_MFR_ISSI:
+               issi_set_default_init(nor);
+               break;
+
        case SNOR_MFR_MACRONIX:
                macronix_set_default_init(nor);
                break;
index 9eae35c60bce40699a3bd2e25709acd0fdeeca69..5a4623fc586bfc5d8d119c195cf2587ced51dd43 100644 (file)
@@ -22,6 +22,7 @@
 #define SNOR_MFR_INTEL         CFI_MFR_INTEL
 #define SNOR_MFR_ST            CFI_MFR_ST      /* ST Micro */
 #define SNOR_MFR_MICRON                CFI_MFR_MICRON  /* Micron */
+#define SNOR_MFR_ISSI          CFI_MFR_PMC
 #define SNOR_MFR_MACRONIX      CFI_MFR_MACRONIX
 #define SNOR_MFR_SPANSION      CFI_MFR_AMD
 #define SNOR_MFR_SST           CFI_MFR_SST