This patch adds support for Atmel AT25DL161, 2Mbytes SPI flash which look like the low voltage version of Atmel AT25DQ161. It has no pre test for now.




Index: flashchips.c
===================================================================
--- flashchips.c    (Revision 1766)
+++ flashchips.c    (Arbeitskopie)
@@ -1671,77 +1671,114 @@
 
     {
         .vendor        = "Atmel",
         .name        = "AT25DF641(A)",
         .bustype    = BUS_SPI,
         .manufacture_id    = ATMEL_ID,
         .model_id    = ATMEL_AT25DF641,
         .total_size    = 8192,
         .page_size    = 256,
         .feature_bits    = FEATURE_WRSR_WREN,
         .tested        = TEST_OK_PREW,
         .probe        = probe_spi_rdid,
         .probe_timing    = TIMING_ZERO,
         .block_erasers    =
         {
             {
                 .eraseblocks = { {4 * 1024, 2048} },
                 .block_erase = spi_block_erase_20,
             }, {
                 .eraseblocks = { {32 * 1024, 256} },
                 .block_erase = spi_block_erase_52,
             }, {
                 .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,
             }
         },
         .printlock    = spi_prettyprint_status_register_at25df_sec,
         .unlock        = spi_disable_blockprotect_at2x_global_unprotect_sec,
         .write        = spi_chip_write_256,
         .read        = spi_chip_read,
         .voltage    = {2700, 3600},
     },
-
+    {
+        .vendor = "Atmel",
+        .name    = "AT25DL161",
+        .bustype    = BUS_SPI,
+        .manufacture_id = ATMEL_ID,
+        .model_id    = ATMEL_AT25DL161,
+        .total_size = 2048,
+        .page_size    = 256,
+        /* OTP: 128B total, 64B pre-programmed; read 0x77; write 0x9B */
+        .feature_bits    = FEATURE_WRSR_WREN | FEATURE_OTP,
+        .tested = TEST_UNTESTED,
+        .probe    = probe_spi_rdid,
+        .probe_timing    = TIMING_ZERO,
+        .block_erasers    =
+        {
+            {
+                .eraseblocks = { {4 * 1024, 512} },
+                .block_erase = spi_block_erase_20,
+            }, {
+                .eraseblocks = { {32 * 1024, 64} },
+                .block_erase = spi_block_erase_52,
+            }, {
+                .eraseblocks = { {64 * 1024, 32} },
+                .block_erase = spi_block_erase_d8,
+            }, {
+                .eraseblocks = { {2 * 1024 * 1024, 1} },
+                .block_erase = spi_block_erase_60,
+            }, {
+                .eraseblocks = { {2 * 1024 * 1024, 1} },
+                .block_erase = spi_block_erase_c7,
+            }
+        },
+        .printlock    = spi_prettyprint_status_register_at25df_sec,
+        .unlock = spi_disable_blockprotect_at2x_global_unprotect_sec,
+        .write    = spi_chip_write_256,
+        .read    = spi_chip_read,
+        .voltage    = {1650, 1950},
+    },
     {
         .vendor        = "Atmel",
         .name        = "AT25DQ161",
         .bustype    = BUS_SPI,
         .manufacture_id    = ATMEL_ID,
         .model_id    = ATMEL_AT25DQ161,
         .total_size    = 2048,
         .page_size    = 256,
         /* OTP: 128B total, 64B pre-programmed; read 0x77; write 0x9B */
         .feature_bits    = FEATURE_WRSR_WREN | FEATURE_OTP,
         .tested        = TEST_UNTESTED,
         .probe        = probe_spi_rdid,
         .probe_timing    = TIMING_ZERO,
         .block_erasers    =
         {
             {
                 .eraseblocks = { {4 * 1024, 512} },
                 .block_erase = spi_block_erase_20,
             }, {
                 .eraseblocks = { {32 * 1024, 64} },
                 .block_erase = spi_block_erase_52,
             }, {
                 .eraseblocks = { {64 * 1024, 32} },
                 .block_erase = spi_block_erase_d8,
             }, {
                 .eraseblocks = { {2 * 1024 * 1024, 1} },
                 .block_erase = spi_block_erase_60,
             }, {
                 .eraseblocks = { {2 * 1024 * 1024, 1} },
                 .block_erase = spi_block_erase_c7,
             }
         },
         .printlock    = spi_prettyprint_status_register_at25df_sec,
         .unlock        = spi_disable_blockprotect_at2x_global_unprotect_sec,
         .write        = spi_chip_write_256,
         .read        = spi_chip_read,
         .voltage    = {2700, 3600},
     },