From fa66a70a353725c3a7892eeff9a6c4d5004b8002 Mon Sep 17 00:00:00 2001 From: mvoelkel Date: Sun, 6 Mar 2016 19:28:30 +0100 Subject: [PATCH] ddtest,ddflash: added Spansion S25FL132K,S25FL164K --- apps/octonet/ddflash.c | 14 ++++++++++++++ apps/octonet/ddtest.c | 16 ++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/apps/octonet/ddflash.c b/apps/octonet/ddflash.c index d08b287..276e257 100644 --- a/apps/octonet/ddflash.c +++ b/apps/octonet/ddflash.c @@ -91,6 +91,8 @@ enum { SSTI_SST25VF032B = 3, SSTI_SST25VF064C = 4, SPANSION_S25FL116K = 5, + SPANSION_S25FL132K = 6, + SPANSION_S25FL164K = 7, }; static int flashread(int ddb, uint8_t *buf, uint32_t addr, uint32_t len) @@ -393,6 +395,8 @@ static int flashwrite(struct ddflash *ddf, int fs, uint32_t addr, uint32_t maxle case SSTI_SST25VF064C: return flashwrite_pagemode(ddf, fs, addr, 0x3c, fw_off); case SPANSION_S25FL116K: + case SPANSION_S25FL132K: + case SPANSION_S25FL164K: return flashwrite_pagemode(ddf, fs, addr, 0x1c, fw_off); } return -1; @@ -467,6 +471,16 @@ static int flash_detect(struct ddflash *ddf) printf("Flash: SPANSION S25FL116K 16 MBit\n"); ddf->sector_size = 4096; ddf->size = 0x200000; + } else if (id[0] == 0x01 && id[1] == 0x40 && id[2] == 0x16) { + ddf->flash_type = SPANSION_S25FL132K; + printf("Flash: SPANSION S25FL132K 32 MBit\n"); + ddf->sector_size = 4096; + ddf->size = 0x400000; + } else if (id[0] == 0x01 && id[1] == 0x40 && id[2] == 0x17) { + ddf->flash_type = SPANSION_S25FL164K; + printf("Flash: SPANSION S25FL164K 64 MBit\n"); + ddf->sector_size = 4096; + ddf->size = 0x800000; } else if (id[0] == 0x1F && id[1] == 0x28) { ddf->flash_type = ATMEL_AT45DB642D; printf("Flash: Atmel AT45DB642D 64 MBit\n"); diff --git a/apps/octonet/ddtest.c b/apps/octonet/ddtest.c index 7b4acd5..906fb7d 100644 --- a/apps/octonet/ddtest.c +++ b/apps/octonet/ddtest.c @@ -28,6 +28,8 @@ enum { SSTI_SST25VF032B = 3, SSTI_SST25VF064C = 4, SPANSION_S25FL116K = 5, + SPANSION_S25FL132K = 6, + SPANSION_S25FL164K = 7, }; struct SCommand @@ -161,6 +163,10 @@ int FlashDetect(int dev) r = SSTI_SST25VF064C; else if ( Id[0] == 0x01 && Id[1] == 0x40 && Id[2] == 0x15 ) r = SPANSION_S25FL116K; + else if ( Id[0] == 0x01 && Id[1] == 0x40 && Id[2] == 0x16 ) + r = SPANSION_S25FL132K; + else if ( Id[0] == 0x01 && Id[1] == 0x40 && Id[2] == 0x17 ) + r = SPANSION_S25FL164K; else if ( Id[0] == 0x1F && Id[1] == 0x28) r = ATMEL_AT45DB642D; else @@ -185,6 +191,12 @@ int FlashDetect(int dev) case SPANSION_S25FL116K : printf("Flash: SPANSION S25FL116K 16 MBit\n"); break; + case SPANSION_S25FL132K : + printf("Flash: SPANSION S25FL132K 32 MBit\n"); + break; + case SPANSION_S25FL164K : + printf("Flash: SPANSION S25FL164K 64 MBit\n"); + break; } return r; } @@ -776,6 +788,8 @@ int FlashProg(int dev,int argc, char* argv[],uint32_t Flags) case SSTI_SST25VF032B: SectorSize = 4096; FlashSize = 0x400000; break; case SSTI_SST25VF064C: SectorSize = 4096; FlashSize = 0x800000; break; case SPANSION_S25FL116K: SectorSize = 4096; FlashSize = 0x200000; break; + case SPANSION_S25FL132K: SectorSize = 4096; FlashSize = 0x400000; break; + case SPANSION_S25FL164K: SectorSize = 4096; FlashSize = 0x800000; break; } if (SectorSize == 0) return 0; @@ -943,6 +957,8 @@ int FlashProg(int dev,int argc, char* argv[],uint32_t Flags) case SSTI_SST25VF064C: err = FlashWritePageMode(dev,FlashOffset,Buffer,BufferSize,0x3C); break; case SPANSION_S25FL116K: + case SPANSION_S25FL132K: + case SPANSION_S25FL164K: err = FlashWritePageMode(dev,FlashOffset,Buffer,BufferSize,0x1C); break; }