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