diff options
author | Ollie Lho <ollie@sis.com.tw> | 2004-03-17 23:03:37 +0000 |
---|---|---|
committer | Ollie Lho <ollie@sis.com.tw> | 2004-03-17 23:03:37 +0000 |
commit | 29dbba09011d9487e2d0573c3f2bd32010fedc48 (patch) | |
tree | aa1590de7e9a82938b5c037bb89947cb907344c7 /w49f002u.c | |
parent | 22535ef434b6589fa02be5785ffe8e8db6c738fb (diff) | |
download | flashrom-29dbba09011d9487e2d0573c3f2bd32010fedc48.zip flashrom-29dbba09011d9487e2d0573c3f2bd32010fedc48.tar.gz |
Use standard product ID exit method for w49f002u
Corresponding to flashrom svn r7 and coreboot v2 svn r1433.
Diffstat (limited to 'w49f002u.c')
-rw-r--r-- | w49f002u.c | 80 |
1 files changed, 33 insertions, 47 deletions
@@ -22,7 +22,7 @@ * Reference: * W49F002U data sheet * - * $Id + * $Id$ */ #include <stdio.h> @@ -35,14 +35,16 @@ int probe_49f002 (struct flashchip * flash) volatile char * bios = flash->virt_addr; unsigned char id1, id2; - *(bios + 0x5555) = 0xAA; - *(bios + 0x2AAA) = 0x55; - *(bios + 0x5555) = 0x90; + *(volatile char *) (bios + 0x5555) = 0xAA; + *(volatile char *) (bios + 0x2AAA) = 0x55; + *(volatile char *) (bios + 0x5555) = 0x90; id1 = *(volatile unsigned char *) bios; id2 = *(volatile unsigned char *) (bios + 0x01); - - *bios = 0xF0; + + *(volatile char *) (bios + 0x5555) = 0xAA; + *(volatile char *) (bios + 0x2AAA) = 0x55; + *(volatile char *) (bios + 0x5555) = 0xF0; myusec_delay(10); @@ -68,52 +70,36 @@ int erase_49f002 (struct flashchip * flash) myusec_delay(100); toggle_ready_jedec(bios); - // while ((*bios & 0x40) != 0x40) - //; - -#if 0 - toggle_ready_jedec(bios); - *(bios + 0x0ffff) = 0x30; - *(bios + 0x1ffff) = 0x30; - *(bios + 0x2ffff) = 0x30; - *(bios + 0x37fff) = 0x30; - *(bios + 0x39fff) = 0x30; - *(bios + 0x3bfff) = 0x30; -#endif - return(0); } int write_49f002 (struct flashchip * flash, unsigned char * buf) { - int i; - int total_size = flash->total_size * 1024; - volatile char * bios = flash->virt_addr; - volatile char * dst = bios; - - *bios = 0xF0; - myusec_delay(10); - erase_49f002(flash); - //*bios = 0xF0; -#if 1 - printf ("Programming Page: "); - for (i = 0; i < total_size; i++) { - /* write to the sector */ - if ((i & 0xfff) == 0) - printf ("address: 0x%08lx", (unsigned long)i); - *(bios + 0x5555) = 0xAA; - *(bios + 0x2AAA) = 0x55; - *(bios + 0x5555) = 0xA0; - *dst++ = *buf++; - - /* wait for Toggle bit ready */ - toggle_ready_jedec(dst); + int i; + int total_size = flash->total_size * 1024; + volatile char * bios = flash->virt_addr; + volatile char * dst = bios; - if ((i & 0xfff) == 0) - printf ("\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b"); - } -#endif - printf("\n"); + myusec_delay(10); + erase_49f002(flash); + + printf ("Programming Page: "); + for (i = 0; i < total_size; i++) { + /* write to the sector */ + if ((i & 0xfff) == 0) + printf ("address: 0x%08lx", (unsigned long)i); + *(bios + 0x5555) = 0xAA; + *(bios + 0x2AAA) = 0x55; + *(bios + 0x5555) = 0xA0; + *dst++ = *buf++; + + /* wait for Toggle bit ready */ + toggle_ready_jedec(dst); + + if ((i & 0xfff) == 0) + printf ("\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b"); + } + printf("\n"); - return(0); + return(0); } |