diff options
author | ollie <ollie@2b7e53f0-3cfb-0310-b3e9-8179ed1497e1> | 2004-03-17 23:03:37 +0000 |
---|---|---|
committer | ollie <ollie@2b7e53f0-3cfb-0310-b3e9-8179ed1497e1> | 2004-03-17 23:03:37 +0000 |
commit | f6c3c5c86ef8294d65f3d587ab0cffa73bca9c5a (patch) | |
tree | aa1590de7e9a82938b5c037bb89947cb907344c7 /sst49lf040.c | |
parent | 8d3b15d619e87af3102c223dd42e103edcca4e0f (diff) | |
download | flashrom-f6c3c5c86ef8294d65f3d587ab0cffa73bca9c5a.tar.gz |
Original v2 revision: 1433
removed spd_dump.c, it has nothing to do with flashing flash parts.
use standard product ID exit method for w49f002u
move udelay stuff into its own file
git-svn-id: https://code.coreboot.org/svn/flashrom/trunk@7 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
Diffstat (limited to 'sst49lf040.c')
-rw-r--r-- | sst49lf040.c | 45 |
1 files changed, 5 insertions, 40 deletions
diff --git a/sst49lf040.c b/sst49lf040.c index 9899e44..5f2503d 100644 --- a/sst49lf040.c +++ b/sst49lf040.c @@ -23,8 +23,6 @@ * * $Id$ */ - - #include <stdio.h> #include "flash.h" #include "jedec.h" @@ -37,35 +35,7 @@ #define RESET 0xFF #define READ_ID 0x90 -static __inline__ void protect_49lf040 (volatile char * bios) -{ - /* ask compiler not to optimize this */ - volatile unsigned char tmp; - - tmp = *(volatile unsigned char *) (bios + 0x1823); - tmp = *(volatile unsigned char *) (bios + 0x1820); - tmp = *(volatile unsigned char *) (bios + 0x1822); - tmp = *(volatile unsigned char *) (bios + 0x0418); - tmp = *(volatile unsigned char *) (bios + 0x041B); - tmp = *(volatile unsigned char *) (bios + 0x0419); - tmp = *(volatile unsigned char *) (bios + 0x040A); -} - -static __inline__ void unprotect_49lf040 (volatile char * bios) -{ - /* ask compiler not to optimize this */ - volatile unsigned char tmp; - - tmp = *(volatile unsigned char *) (bios + 0x1823); - tmp = *(volatile unsigned char *) (bios + 0x1820); - tmp = *(volatile unsigned char *) (bios + 0x1822); - tmp = *(volatile unsigned char *) (bios + 0x0418); - tmp = *(volatile unsigned char *) (bios + 0x041B); - tmp = *(volatile unsigned char *) (bios + 0x0419); - tmp = *(volatile unsigned char *) (bios + 0x041A); -} - -int erase_sector_49lf040 (volatile char * bios, unsigned int page) +static int erase_sector_49lf040 (volatile char * bios, unsigned int page) { /* Chip erase function does not exist for LPC mode on 49lf040. * Erase sector-by-sector instead. */ @@ -99,9 +69,9 @@ int erase_sector_49lf040 (volatile char * bios, unsigned int page) } static __inline__ int write_sector_49lf040(volatile char * bios, - unsigned char * src, - volatile unsigned char * dst, - unsigned int page_size) + unsigned char * src, + volatile unsigned char * dst, + unsigned int page_size) { int i; volatile char *Temp; @@ -146,7 +116,6 @@ int probe_49lf040 (struct flashchip * flash) *(volatile char *) (bios + 0x2AAA) = 0x55; myusec_delay(10); *(volatile char *) (bios + 0x5555) = 0x90; - myusec_delay(10); id1 = *(volatile unsigned char *) bios; @@ -165,6 +134,7 @@ int probe_49lf040 (struct flashchip * flash) return 0; } + /* Chip erase only works in parallel programming mode for the 49lf040. * Use sector-erase instead */ int erase_49lf040 (struct flashchip * flash) @@ -190,7 +160,6 @@ int erase_49lf040 (struct flashchip * flash) myusec_delay(10); Temp = bios + 0x5555; /* set up address to be C000:5555h */ *Temp = 0x10; /* write data 0x55 to the address */ - myusec_delay(50000); return(0); @@ -202,8 +171,6 @@ int write_49lf040 (struct flashchip * flash, unsigned char * buf) int total_size = flash->total_size * 1024, page_size = flash->page_size; volatile char * bios = flash->virt_addr; -// unprotect_49lf040 (bios); -// erase_49lf040(flash); /* Must be done sector-by-sector in LPC mode */ printf ("Programming Page: "); for (i = 0; i < total_size/page_size; i++) { /* erase the page before programming */ @@ -218,7 +185,5 @@ int write_49lf040 (struct flashchip * flash, unsigned char * buf) } printf("\n"); -// protect_49lf040 (bios); - return(0); } |