From cf29de879843ec2293483eeb609191a834a4863c Mon Sep 17 00:00:00 2001 From: Ollie Lho Date: Thu, 18 Mar 2004 19:40:07 +0000 Subject: Fix 32bit vs. 64bit long int arithematics Corresponding to flashrom svn r8 and coreboot v2 svn r1434. --- flash_rom.c | 5 ++--- sst28sf040.c | 2 +- sst39sf020.c | 40 ++++++---------------------------------- sst49lf040.c | 4 +++- udelay.c | 3 --- w49f002u.c | 3 ++- 6 files changed, 14 insertions(+), 43 deletions(-) diff --git a/flash_rom.c b/flash_rom.c index b8ffeb0..13bb182 100644 --- a/flash_rom.c +++ b/flash_rom.c @@ -115,8 +115,7 @@ struct flashchip * probe_flash(struct flashchip * flash) flash->total_size * 1024, (unsigned long)size); } bios = mmap (0, size, PROT_WRITE | PROT_READ, MAP_SHARED, - //fd_mem, (off_t) (0x100000000-size)); - fd_mem, (off_t) (0xffffffff-size+1)); + fd_mem, (off_t) (0xffffffff - size + 1)); if (bios == MAP_FAILED) { perror("Error MMAP /dev/mem"); exit(1); @@ -126,7 +125,7 @@ struct flashchip * probe_flash(struct flashchip * flash) if (flash->probe(flash) == 1) { printf ("%s found at physical address: 0x%lx\n", - flash->name, (0 - size)); + flash->name, (0xffffffff - size + 1)); return flash; } munmap ((void *) bios, size); diff --git a/sst28sf040.c b/sst28sf040.c index ee49f79..c63f5fa 100644 --- a/sst28sf040.c +++ b/sst28sf040.c @@ -31,7 +31,7 @@ #define AUTO_PG_ERASE1 0x20 #define AUTO_PG_ERASE2 0xD0 -#define AUTO_PGRM 0x10 +#define AUTO_PGRM 0x10 #define CHIP_ERASE 0x30 #define RESET 0xFF #define READ_ID 0x90 diff --git a/sst39sf020.c b/sst39sf020.c index fa35276..3d23adf 100644 --- a/sst39sf020.c +++ b/sst39sf020.c @@ -22,6 +22,8 @@ * Reference: * 4 MEgabit (512K x 8) SuperFlash EEPROM, SST28SF040 data sheet * + * ToDo: Consilidated to standard JEDEC code. + * * $Id$ */ @@ -37,34 +39,6 @@ #define RESET 0xFF #define READ_ID 0x90 -static __inline__ void protect_39sf020 (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_39sf020 (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); -} - static __inline__ int erase_sector_39sf020 (volatile char * bios, unsigned long address) { *bios = AUTO_PG_ERASE1; @@ -77,9 +51,9 @@ static __inline__ int erase_sector_39sf020 (volatile char * bios, unsigned long } static __inline__ int write_sector_39sf020(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; @@ -177,8 +151,8 @@ int write_39sf020 (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_39sf020 (bios); erase_39sf020(flash); + printf ("Programming Page: "); for (i = 0; i < total_size/page_size; i++) { /* erase the page before programming */ @@ -193,7 +167,5 @@ int write_39sf020 (struct flashchip * flash, unsigned char * buf) } printf("\n"); -// protect_39sf020 (bios); - return(0); } diff --git a/sst49lf040.c b/sst49lf040.c index 5f2503d..9f75485 100644 --- a/sst49lf040.c +++ b/sst49lf040.c @@ -21,6 +21,8 @@ * Reference: * 4 MEgabit (512K x 8) SuperFlash EEPROM, SST49lF040 data sheet * + * ToDo: Consilidated to standard JEDEC code. + * * $Id$ */ #include @@ -59,7 +61,7 @@ static int erase_sector_49lf040 (volatile char * bios, unsigned int page) myusec_delay(10); Temp = bios + page; /* set up address to be the current sector */ *Temp = 0x30; /* write data 0x30 to the address */ - myusec_delay(25000); + myusec_delay(50000); /* wait for Toggle bit ready */ toggle_ready_jedec(bios); diff --git a/udelay.c b/udelay.c index a6597e5..ad2fb4e 100644 --- a/udelay.c +++ b/udelay.c @@ -17,17 +17,14 @@ void myusec_calibrate_delay() unsigned long timeusec; struct timeval start, end; int ok = 0; - void myusec_delay(int time); printf("Setting up microsecond timing loop\n"); while (!ok) { - //fprintf(stderr, "Try %d\n", count); gettimeofday(&start, 0); myusec_delay(count); gettimeofday(&end, 0); timeusec = 1000000 * (end.tv_sec - start.tv_sec ) + (end.tv_usec - start.tv_usec); - //fprintf(stderr, "timeusec is %d\n", timeusec); count *= 2; if (timeusec < 1000000/4) continue; diff --git a/w49f002u.c b/w49f002u.c index 4d5d16b..28a94ab 100644 --- a/w49f002u.c +++ b/w49f002u.c @@ -22,6 +22,8 @@ * Reference: * W49F002U data sheet * + * ToDo: Consilidated to standard JEDEC code. + * * $Id$ */ @@ -80,7 +82,6 @@ int write_49f002 (struct flashchip * flash, unsigned char * buf) volatile char * bios = flash->virt_addr; volatile char * dst = bios; - myusec_delay(10); erase_49f002(flash); printf ("Programming Page: "); -- cgit v1.1