Author: stefanct
Date: Mon Jul 25 00:21:57 2011
New Revision: 1384
URL: http://flashrom.org/trac/flashrom/changeset/1384

Log:
add support for EN25Q(H) series SPI flash chips

- EN25Q40
- EN25Q80
- EN25Q16 (half-evil twin of already supported EN25D16, hence merged)
- EN25Q32(A/B)
- EN25Q64
- EN25Q128

- EN25QH16

Signed-off-by: David Hendricks <[email protected]>
Acked-by: Stefan Tauner <[email protected]>

Modified:
   trunk/flashchips.c
   trunk/flashchips.h

Modified: trunk/flashchips.c
==============================================================================
--- trunk/flashchips.c  Sun Jul 24 20:41:13 2011        (r1383)
+++ trunk/flashchips.c  Mon Jul 25 00:21:57 2011        (r1384)
@@ -2923,42 +2923,6 @@
 
        {
                .vendor         = "Eon",
-               .name           = "EN25D16",
-               .bustype        = CHIP_BUSTYPE_SPI,
-               .manufacture_id = EON_ID_NOPREFIX,
-               .model_id       = EON_EN25D16,
-               .total_size     = 2048,
-               .page_size      = 256,
-               .tested         = TEST_UNTESTED,
-               .probe          = probe_spi_rdid,
-               .probe_timing   = TIMING_ZERO,
-               .block_erasers  =
-               {
-                       {
-                               .eraseblocks = { {4 * 1024, 512} },
-                               .block_erase = spi_block_erase_20,
-                       }, {
-                               .eraseblocks = { {64 * 1024, 32} },
-                               .block_erase = spi_block_erase_d8,
-                       }, {
-                               .eraseblocks = { {64 * 1024, 32} },
-                               .block_erase = spi_block_erase_52,
-                       }, {
-                               .eraseblocks = { {2 * 1024 * 1024, 1} },
-                               .block_erase = spi_block_erase_60,
-                       }, {
-                               .eraseblocks = { {2 * 1024 * 1024, 1} },
-                               .block_erase = spi_block_erase_c7,
-                       }
-               },
-               .unlock         = spi_disable_blockprotect,
-               .write          = spi_chip_write_256,
-               .read           = spi_chip_read,
-               .voltage        = {2700, 3600},
-       },
-
-       {
-               .vendor         = "Eon",
                .name           = "EN25F05",
                .bustype        = CHIP_BUSTYPE_SPI,
                .manufacture_id = EON_ID_NOPREFIX,
@@ -3205,6 +3169,259 @@
        },
 
        {
+               .vendor         = "Eon",
+               .name           = "EN25Q40",
+               .bustype        = CHIP_BUSTYPE_SPI,
+               .manufacture_id = EON_ID_NOPREFIX,
+               .model_id       = EON_EN25Q40,
+               .total_size     = 512,
+               .page_size      = 256,
+               /* TODO: chip features 256-byte one-time programmable region */
+               .feature_bits   = FEATURE_WRSR_WREN,
+               .tested         = TEST_UNTESTED,
+               .probe          = probe_spi_rdid,
+               .probe_timing   = TIMING_ZERO,
+               .block_erasers  =
+               {
+                       {
+                               .eraseblocks = { {4 * 1024, 128} },
+                               .block_erase = spi_block_erase_20,
+                       }, {
+                               .eraseblocks = { {64 * 1024, 8} },
+                               .block_erase = spi_block_erase_d8,
+                       }, {
+                               .eraseblocks = { {512 * 1024, 1} },
+                               .block_erase = spi_block_erase_60,
+                       }, {
+                               .eraseblocks = { {512 * 1024, 1} },
+                               .block_erase = spi_block_erase_c7,
+                       }
+               },
+               .unlock         = spi_disable_blockprotect,
+               .write          = spi_chip_write_256,
+               .read           = spi_chip_read,
+               .voltage        = {2700, 3600},
+       },
+
+       {
+               .vendor         = "Eon",
+               .name           = "EN25Q80(A)",
+               .bustype        = CHIP_BUSTYPE_SPI,
+               .manufacture_id = EON_ID_NOPREFIX,
+               .model_id       = EON_EN25Q80,
+               .total_size     = 1024,
+               .page_size      = 256,
+               /* TODO: chip features 256-byte one-time programmable region */
+               .feature_bits   = FEATURE_WRSR_WREN,
+               .tested         = TEST_UNTESTED,
+               .probe          = probe_spi_rdid,
+               .probe_timing   = TIMING_ZERO,
+               .block_erasers  =
+               {
+                       {
+                               .eraseblocks = { {4 * 1024, 256} },
+                               .block_erase = spi_block_erase_20,
+                       }, {
+                               .eraseblocks = { {64 * 1024, 16} },
+                               .block_erase = spi_block_erase_d8,
+                       }, {
+                               .eraseblocks = { {1024 * 1024, 1} },
+                               .block_erase = spi_block_erase_60,
+                       }, {
+                               .eraseblocks = { {1024 * 1024, 1} },
+                               .block_erase = spi_block_erase_c7,
+                       }
+               },
+               .unlock         = spi_disable_blockprotect,
+               .write          = spi_chip_write_256,
+               .read           = spi_chip_read,
+               .voltage        = {2700, 3600},
+       },
+
+       {
+               /* Note: EN25D16 is an evil twin which shares the model ID
+                  but has different write protection capabilities */
+               .vendor         = "Eon",
+               .name           = "EN25Q16",
+               .bustype        = CHIP_BUSTYPE_SPI,
+               .manufacture_id = EON_ID_NOPREFIX,
+               .model_id       = EON_EN25Q16,
+               .total_size     = 2048,
+               .page_size      = 256,
+               /* TODO: EN25D16 features 512-byte one-time programmable region,
+                * EN25Q16 features a 128-byte one-time programmable region */
+               .feature_bits   = FEATURE_WRSR_WREN,
+               .tested         = TEST_UNTESTED,
+               .probe          = probe_spi_rdid,
+               .probe_timing   = TIMING_ZERO,
+               .block_erasers  =
+               {
+                       {
+                               .eraseblocks = { {4 * 1024, 512} },
+                               .block_erase = spi_block_erase_20,
+                       }, {
+                               .eraseblocks = { {64 * 1024, 32} },
+                               .block_erase = spi_block_erase_d8,
+                       }, {
+                               /* not supported by Q16 version */
+                               .eraseblocks = { {64 * 1024, 32} },
+                               .block_erase = spi_block_erase_52,
+                       }, {
+                               .eraseblocks = { {2 * 1024 * 1024, 1} },
+                               .block_erase = spi_block_erase_60,
+                       }, {
+                               .eraseblocks = { {2 * 1024 * 1024, 1} },
+                               .block_erase = spi_block_erase_c7,
+                       }
+               },
+               .unlock         = spi_disable_blockprotect,
+               .write          = spi_chip_write_256,
+               .read           = spi_chip_read,
+               .voltage        = {2700, 3600},
+       },
+
+       {
+               .vendor         = "Eon",
+               .name           = "EN25Q32(A/B)",
+               .bustype        = CHIP_BUSTYPE_SPI,
+               .manufacture_id = EON_ID_NOPREFIX,
+               .model_id       = EON_EN25Q32,
+               .total_size     = 4096,
+               .page_size      = 256,
+               /* TODO: chip features 512-byte one-time programmable region */
+               .feature_bits   = FEATURE_WRSR_WREN,
+               .tested         = TEST_UNTESTED,
+               .probe          = probe_spi_rdid,
+               .probe_timing   = TIMING_ZERO,
+               .block_erasers  =
+               {
+                       {
+                               .eraseblocks = { {4 * 1024, 1024} },
+                               .block_erase = spi_block_erase_20,
+                       }, {
+                               .eraseblocks = { {64 * 1024, 64} },
+                               .block_erase = spi_block_erase_d8,
+                       }, {
+                               .eraseblocks = { {4 * 1024 * 1024, 1} },
+                               .block_erase = spi_block_erase_60,
+                       }, {
+                               .eraseblocks = { {4 * 1024 * 1024, 1} },
+                               .block_erase = spi_block_erase_c7,
+                       }
+               },
+               .unlock         = spi_disable_blockprotect,
+               .write          = spi_chip_write_256,
+               .read           = spi_chip_read,
+               .voltage        = {2700, 3600},
+       },
+
+       {
+               .vendor         = "Eon",
+               .name           = "EN25Q64",
+               .bustype        = CHIP_BUSTYPE_SPI,
+               .manufacture_id = EON_ID_NOPREFIX,
+               .model_id       = EON_EN25Q64,
+               .total_size     = 8192,
+               .page_size      = 256,
+               /* TODO: chip features 512-byte one-time programmable region */
+               .feature_bits   = FEATURE_WRSR_WREN,
+               .tested         = TEST_UNTESTED,
+               .probe          = probe_spi_rdid,
+               .probe_timing   = TIMING_ZERO,
+               .block_erasers  =
+               {
+                       {
+                               .eraseblocks = { {4 * 1024, 2048} },
+                               .block_erase = spi_block_erase_20,
+                       }, {
+                               .eraseblocks = { {64 * 1024, 128} },
+                               .block_erase = spi_block_erase_d8,
+                       }, {
+                               .eraseblocks = { {8 * 1024 * 1024, 1} },
+                               .block_erase = spi_block_erase_60,
+                       }, {
+                               .eraseblocks = { {8 * 1024 * 1024, 1} },
+                               .block_erase = spi_block_erase_c7,
+                       }
+               },
+               .unlock         = spi_disable_blockprotect,
+               .write          = spi_chip_write_256,
+               .read           = spi_chip_read,
+               .voltage        = {2700, 3600},
+       },
+
+       {
+               .vendor         = "Eon",
+               .name           = "EN25Q128",
+               .bustype        = CHIP_BUSTYPE_SPI,
+               .manufacture_id = EON_ID_NOPREFIX,
+               .model_id       = EON_EN25Q128,
+               .total_size     = 16384,
+               .page_size      = 256,
+               /* TODO: chip features 512-byte one-time programmable region */
+               .feature_bits   = FEATURE_WRSR_WREN,
+               .tested         = TEST_UNTESTED,
+               .probe          = probe_spi_rdid,
+               .probe_timing   = TIMING_ZERO,
+               .block_erasers  =
+               {
+                       {
+                               .eraseblocks = { {4 * 1024, 4096} },
+                               .block_erase = spi_block_erase_20,
+                       }, {
+                               .eraseblocks = { {64 * 1024, 256} },
+                               .block_erase = spi_block_erase_d8,
+                       }, {
+                               .eraseblocks = { {16 * 1024 * 1024, 1} },
+                               .block_erase = spi_block_erase_60,
+                       }, {
+                               .eraseblocks = { {16 * 1024 * 1024, 1} },
+                               .block_erase = spi_block_erase_c7,
+                       }
+               },
+               .unlock         = spi_disable_blockprotect,
+               .write          = spi_chip_write_256,
+               .read           = spi_chip_read,
+       },
+
+       {
+               .vendor         = "Eon",
+               .name           = "EN25QH16",
+               .bustype        = CHIP_BUSTYPE_SPI,
+               .manufacture_id = EON_ID_NOPREFIX,
+               .model_id       = EON_EN25QH16,
+               .total_size     = 2048,
+               .page_size      = 256,
+               /* TODO: chip features 512-byte one-time programmable region
+                * and supports SFDP.
+                */
+               .feature_bits   = FEATURE_WRSR_WREN,
+               .tested         = TEST_UNTESTED,
+               .probe          = probe_spi_rdid,
+               .probe_timing   = TIMING_ZERO,
+               .block_erasers  =
+               {
+                       {
+                               .eraseblocks = { {4 * 1024, 512} },
+                               .block_erase = spi_block_erase_20,
+                       }, {
+                               .eraseblocks = { {64 * 1024, 32} },
+                               .block_erase = spi_block_erase_d8,
+                       }, {
+                               .eraseblocks = { {1024 * 2048, 1} },
+                               .block_erase = spi_block_erase_60,
+                       }, {
+                               .eraseblocks = { {1024 * 2048, 1} },
+                               .block_erase = spi_block_erase_c7,
+                       }
+               },
+               .unlock         = spi_disable_blockprotect,
+               .write          = spi_chip_write_256,
+               .read           = spi_chip_read,
+               .voltage        = {2700, 3600},
+       },
+
+       {
                .vendor         = "Eon",
                .name           = "EN29F010",
                .bustype        = CHIP_BUSTYPE_PARALLEL,

Modified: trunk/flashchips.h
==============================================================================
--- trunk/flashchips.h  Sun Jul 24 20:41:13 2011        (r1383)
+++ trunk/flashchips.h  Mon Jul 25 00:21:57 2011        (r1384)
@@ -232,7 +232,6 @@
 #define EON_EN25B64            0x2017  /* Same as P64 */
 #define EON_EN25B64T           0x46
 #define EON_EN25B64B           0x36
-#define EON_EN25D16            0x3015
 #define EON_EN25F05            0x3110
 #define EON_EN25F10            0x3111
 #define EON_EN25F20            0x3112
@@ -240,6 +239,13 @@
 #define EON_EN25F80            0x3114
 #define EON_EN25F16            0x3115
 #define EON_EN25F32            0x3116
+#define EON_EN25Q40            0x3013
+#define EON_EN25Q80            0x3014
+#define EON_EN25Q16            0x3015  /* Same as EN25D16 */
+#define EON_EN25Q32            0x3016  /* Same as EN25Q32A and EN25Q32B */
+#define EON_EN25Q64            0x3017
+#define EON_EN25Q128           0x3018
+#define EON_EN25QH16           0x7015
 #define EON_EN29F512           0x7F21
 #define EON_EN29F010           0x20
 #define EON_EN29F040A          0x7F04

_______________________________________________
flashrom mailing list
[email protected]
http://www.flashrom.org/mailman/listinfo/flashrom

Reply via email to