*** empty log message ***
authorLi-Ta Lo <ollie@lanl.gov>
Tue, 11 Jan 2005 02:48:22 +0000 (02:48 +0000)
committerLi-Ta Lo <ollie@lanl.gov>
Tue, 11 Jan 2005 02:48:22 +0000 (02:48 +0000)
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@1852 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1

util/flash_and_burn/flash_rom.c
util/flash_and_burn/sst49lf040.c
util/flash_and_burn/sst49lf040.h

index 35a9f50984449b5235274080ef51b8caf07641e5..ceb56ad8f6f4feb525b12db2c7fbf8665d1060b0 100644 (file)
@@ -66,7 +66,7 @@ struct flashchip flashchips[] = {
        {"SST39VF020",  SST_ID,         SST_39VF020,    NULL, 256, 4096,
         probe_jedec,   erase_chip_jedec, write_39sf020,NULL},
        {"SST49LF040",  SST_ID,         SST_49LF040,    NULL, 512, 4096,
-        probe_jedec,   erase_chip_jedec, write_49lf040,NULL},
+        probe_jedec,   erase_49lf040, write_49lf040,NULL},
        {"SST49LF080A", SST_ID,         SST_49LF080A,   NULL, 1024, 4096,
         probe_jedec,   erase_chip_jedec, write_49lf040,NULL},
        {"SST49LF002A/B", SST_ID,       SST_49LF002A,   NULL, 256, 16 * 1024,
index 624a8655efaea7b1b12c6cba7660cc027bbaa05e..f19b91e1c256c1c6903c143b6713041e586ba0bf 100644 (file)
 #include "jedec.h"
 #include "sst49lf040.h"
 
+int erase_49lf040(struct flashchip *flash)
+{
+        int i;
+        int total_size = flash->total_size * 1024;
+        int page_size = flash->page_size;
+        volatile char *bios = flash->virt_addr;
+
+        for (i = 0; i < total_size / page_size; i++) {
+               /* Chip erase only works in parallel programming mode
+                * for the 49lf040. Use sector-erase instead */
+               erase_sector_jedec(bios, i * page_size);
+       }         
+       return 0;
+}
+
 int write_49lf040(struct flashchip *flash, unsigned char *buf)
 {
        int i;
@@ -40,8 +55,8 @@ int write_49lf040(struct flashchip *flash, unsigned char *buf)
        printf("Programming Page: ");
        for (i = 0; i < total_size / page_size; i++) {
                /* erase the page before programming
-                * Chip erase only works in parallel programming mode for the 49lf040.
-                * Use sector-erase instead */
+                * Chip erase only works in parallel programming mode
+                * for the 49lf040. Use sector-erase instead */
                erase_sector_jedec(bios, i * page_size);
 
                /* write to the sector */
index 9e3cfa42364f398e2da279a388cd1717efe08764..79dfec99f23b0c35a30f8802494e2c1aacf680b1 100644 (file)
@@ -1,6 +1,7 @@
 #ifndef __SST49LF040_H__
 #define __SST49LF040_H__ 1
 
+extern int erase_49lf040(struct flashchip *flash);
 extern int write_49lf040(struct flashchip *flash, unsigned char *buf);
 
 #endif                         /* !__SST49LF040_H__ */