[coreboot] [PATCH] flashrom: something
Carl-Daniel Hailfinger
c-d.hailfinger.devel.2006 at gmx.net
Fri May 16 03:01:54 CEST 2008
This is probably the weirdest changelog ever.
OK, I forgot what this patch does, but I'm pretty sure it's justified.
Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006 at gmx.net>
Index: flashrom-fwh/sst39sf020.c
===================================================================
--- flashrom-fwh/sst39sf020.c (Revision 3324)
+++ flashrom-fwh/sst39sf020.c (Arbeitskopie)
@@ -22,21 +22,6 @@
#include <stdint.h>
#include "flash.h"
-#define AUTO_PG_ERASE1 0x20
-#define AUTO_PG_ERASE2 0xD0
-
-static __inline__ int erase_sector_39sf020(volatile uint8_t *bios,
- unsigned long address)
-{
- *bios = AUTO_PG_ERASE1;
- *(bios + address) = AUTO_PG_ERASE2;
-
- /* wait for Toggle bit ready */
- toggle_ready_jedec(bios);
-
- return 0;
-}
-
int write_39sf020(struct flashchip *flash, uint8_t *buf)
{
int i;
Index: flashrom-fwh/flash.h
===================================================================
--- flashrom-fwh/flash.h (Revision 3324)
+++ flashrom-fwh/flash.h (Arbeitskopie)
@@ -464,6 +464,8 @@
/* sst28sf040.c */
int probe_28sf040(struct flashchip *flash);
int erase_28sf040(struct flashchip *flash);
+int erase_all_sectors_28sf040(struct flashchip *flash);
+int erase_sector_28sf040(volatile uint8_t *bios, unsigned long address);
int write_28sf040(struct flashchip *flash, uint8_t *buf);
/* sst39sf020.c */
Index: flashrom-fwh/sst28sf040.c
===================================================================
--- flashrom-fwh/sst28sf040.c (Revision 3324)
+++ flashrom-fwh/sst28sf040.c (Arbeitskopie)
@@ -58,8 +58,7 @@
tmp = *(volatile uint8_t *)(bios + 0x041A);
}
-static __inline__ int erase_sector_28sf040(volatile uint8_t *bios,
- unsigned long address)
+int erase_sector_28sf040(volatile uint8_t *bios, unsigned long address)
{
*bios = AUTO_PG_ERASE1;
*(bios + address) = AUTO_PG_ERASE2;
@@ -119,6 +118,20 @@
return 0;
}
+int erase_all_sectors_28sf040(struct flashchip *flash)
+{
+ int i;
+ int total_size = flash->total_size * 1024;
+ int page_size = flash->page_size;
+ volatile uint8_t *bios = flash->virtual_memory;
+
+ for (i = 0; i < total_size / page_size; i++) {
+ /* erase the page before programming */
+ erase_sector_28sf040(bios, i * page_size);
+ }
+ return 0;
+}
+
int erase_28sf040(struct flashchip *flash)
{
volatile uint8_t *bios = flash->virtual_memory;
More information about the coreboot
mailing list