more jedec standard consolidatation.
authorLi-Ta Lo <ollie@lanl.gov>
Mon, 22 Mar 2004 22:19:17 +0000 (22:19 +0000)
committerLi-Ta Lo <ollie@lanl.gov>
Mon, 22 Mar 2004 22:19:17 +0000 (22:19 +0000)
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@1464 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1

util/flash_and_burn/jedec.c
util/flash_and_burn/jedec.h

index bae1ddc439737c1d56a0c9446421123cc4c5fe82..c76339caeba8d08fac012a214ac37dce2c70f7c7 100644 (file)
@@ -139,39 +139,46 @@ void write_page_jedec(volatile char *bios, char *src, volatile char *dst,
        toggle_ready_jedec(dst - 1);
 }
 
-int write_sector_jedec(volatile char *bios,
-                      unsigned char *src,
+int wirte_byte_program_jedec(volatile unsigned char *bios, unsigned char *src,
+                            volatile unsigned char *dst)
+{
+       volatile unsigned char *Temp;
+
+       if (*dst != 0xff) {
+               printf("FATAL: dst %p not erased (val 0x%x)\n",
+                      dst, *dst);
+               return (-1);
+       }
+       /* transfer data from source to destination */
+       if (*src == 0xFF) {
+               dst++, src++;
+               /* If the data is 0xFF, don't program it */
+               return 0;
+       }
+       /* Issue JEDEC Byte Program command */
+       Temp = bios + 0x5555;
+       *Temp = 0xAA;
+       Temp = bios + 0x2AAA;
+       *Temp = 0x55;
+       Temp = bios + 0x5555;
+       *Temp = 0xA0;
+       *dst = *src;
+       toggle_ready_jedec(bios);
+       if (*dst != *src)
+               printf("BAD! dst 0x%lx val 0x%x src 0x%x\n",
+                      (unsigned long) dst, *dst, *src);
+       dst++, src++;
+       return 0;
+}
+
+int write_sector_jedec(volatile unsigned char *bios, unsigned char *src,
                       volatile unsigned char *dst,
                       unsigned int page_size)
 {
        int i;
-       volatile char *Temp;
 
        for (i = 0; i < page_size; i++) {
-               if (*dst != 0xff) {
-                       printf("FATAL: dst %p not erased (val 0x%x)\n",
-                              dst, *dst);
-                       return (-1);
-               }
-               /* transfer data from source to destination */
-               if (*src == 0xFF) {
-                       dst++, src++;
-                       /* If the data is 0xFF, don't program it */
-                       continue;
-               }
-               /* Issue JEDEC Byte Program command */
-               Temp = bios + 0x5555;
-               *Temp = 0xAA;
-               Temp = bios + 0x2AAA;
-               *Temp = 0x55;
-               Temp = bios + 0x5555;
-               *Temp = 0xA0;
-               *dst = *src;
-               toggle_ready_jedec(bios);
-               if (*dst != *src)
-                       printf("BAD! dst 0x%lx val 0x%x src 0x%x\n",
-                              (unsigned long) dst, *dst, *src);
-               dst++, src++;
+               wirte_byte_program_jedec(bios, src, dst);
        }
 
        return (0);
@@ -180,8 +187,8 @@ int write_sector_jedec(volatile char *bios,
 int write_jedec(struct flashchip *flash, unsigned char *buf)
 {
        int i;
-       int total_size = flash->total_size * 1024, page_size =
-           flash->page_size;
+       int total_size = flash->total_size * 1024;
+       int page_size = flash->page_size;
        volatile unsigned char *bios = flash->virt_addr;
 
        erase_chip_jedec(flash);
@@ -194,8 +201,7 @@ int write_jedec(struct flashchip *flash, unsigned char *buf)
                printf("%04d at address: 0x%08x", i, i * page_size);
                write_page_jedec(bios, buf + i * page_size,
                                 bios + i * page_size, page_size);
-               printf
-                   ("\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b");
+               printf("\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b");
        }
        printf("\n");
        protect_jedec(bios);
index 1751b296defffcf6a5d8de96e628f57b44095a0a..4a86913189192fa0c9259d2d1b1c71006113edb2 100644 (file)
@@ -5,7 +5,7 @@ extern int probe_jedec(struct flashchip *flash);
 extern int erase_chip_jedec(struct flashchip *flash);
 extern int write_jedec(struct flashchip *flash, unsigned char *buf);
 extern int erase_sector_jedec(volatile char *bios, unsigned int page);
-extern int write_sector_jedec(volatile char *bios,
+extern int write_sector_jedec(volatile unsigned char *bios,
                              unsigned char *src,
                              volatile unsigned char *dst,
                              unsigned int page_size);