diff options
author | Li-Ta Lo <ollie@lanl.gov> | 2004-03-19 22:10:07 +0000 |
---|---|---|
committer | Li-Ta Lo <ollie@lanl.gov> | 2004-03-19 22:10:07 +0000 |
commit | 6a1a1102ea2cd8aed7014c90241f8db7b71847f1 (patch) | |
tree | d529320f8f0451ea8a54dd9e83b2682fcf8c129f /util/flash_and_burn/jedec.h | |
parent | b9e06c26925282d322b822d60f723d7753e71b2f (diff) | |
download | coreboot-6a1a1102ea2cd8aed7014c90241f8db7b71847f1.tar.xz |
remove duplicated code
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@1456 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
Diffstat (limited to 'util/flash_and_burn/jedec.h')
-rw-r--r-- | util/flash_and_burn/jedec.h | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/util/flash_and_burn/jedec.h b/util/flash_and_burn/jedec.h index 40261fd4fd..0b00c26698 100644 --- a/util/flash_and_burn/jedec.h +++ b/util/flash_and_burn/jedec.h @@ -45,6 +45,8 @@ extern __inline__ void protect_jedec (volatile char * bios) usleep(200); } +extern int erase_sector_jedec (volatile char * bios, unsigned int page); + extern __inline__ void write_page_jedec (volatile char * bios, char * src, volatile char * dst, int page_size) { @@ -63,4 +65,40 @@ extern __inline__ void write_page_jedec (volatile char * bios, char * src, volat toggle_ready_jedec(dst-1); } +static __inline__ int write_sector_jedec(volatile 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; + } + 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); +} + #endif /* !__JEDEC_H__ */ |