From 73eca80d9b28bfc38fa4b8d2ef9c580840133a38 Mon Sep 17 00:00:00 2001 From: Ollie Lho Date: Fri, 19 Mar 2004 22:10:07 +0000 Subject: Remove duplicated code Corresponding to flashrom svn r14 and coreboot v2 svn r1456. --- jedec.h | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) (limited to 'jedec.h') diff --git a/jedec.h b/jedec.h index 40261fd..0b00c26 100644 --- a/jedec.h +++ b/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__ */ -- cgit v1.1