summaryrefslogtreecommitdiffstats
path: root/jedec.h
diff options
context:
space:
mode:
authorOllie Lho <ollie@sis.com.tw>2004-03-19 22:10:07 +0000
committerOllie Lho <ollie@sis.com.tw>2004-03-19 22:10:07 +0000
commit73eca80d9b28bfc38fa4b8d2ef9c580840133a38 (patch)
tree5b23c4ae48b72c02b38f1dac9f074a3b17be2b36 /jedec.h
parent180850e2c05a19e5e160cb32c14c1c5192068130 (diff)
downloadast2050-flashrom-73eca80d9b28bfc38fa4b8d2ef9c580840133a38.zip
ast2050-flashrom-73eca80d9b28bfc38fa4b8d2ef9c580840133a38.tar.gz
Remove duplicated code
Corresponding to flashrom svn r14 and coreboot v2 svn r1456.
Diffstat (limited to 'jedec.h')
-rw-r--r--jedec.h38
1 files changed, 38 insertions, 0 deletions
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__ */
OpenPOWER on IntegriCloud