1
0
mirror of https://review.coreboot.org/flashrom.git synced 2025-04-26 22:52:34 +02:00

Make write granularity a chip attribute

Corresponding to flashrom svn r1651.

Signed-off-by: Stefan Tauner <stefan.tauner@alumni.tuwien.ac.at>
Acked-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
This commit is contained in:
Stefan Tauner 2013-03-03 23:49:48 +00:00
parent 352e50b79e
commit 50d67aaa79
2 changed files with 3 additions and 3 deletions

View File

@ -68,9 +68,9 @@ enum chipbustype {
* - 256 bytes: If less than 256 bytes are written, the contents of the unwritten bytes are undefined. * - 256 bytes: If less than 256 bytes are written, the contents of the unwritten bytes are undefined.
*/ */
enum write_granularity { enum write_granularity {
write_gran_256bytes = 0, /* We assume 256 byte granularity by default. */
write_gran_1bit, write_gran_1bit,
write_gran_1byte, write_gran_1byte,
write_gran_256bytes,
}; };
/* /*
@ -162,6 +162,7 @@ struct flashchip {
uint16_t min; uint16_t min;
uint16_t max; uint16_t max;
} voltage; } voltage;
enum write_granularity gran;
}; };
struct flashctx { struct flashctx {

View File

@ -1273,7 +1273,7 @@ static int erase_and_write_block_helper(struct flashctx *flash,
{ {
unsigned int starthere = 0, lenhere = 0; unsigned int starthere = 0, lenhere = 0;
int ret = 0, skip = 1, writecount = 0; int ret = 0, skip = 1, writecount = 0;
enum write_granularity gran = write_gran_256bytes; /* FIXME */ enum write_granularity gran = flash->chip->gran;
/* curcontents and newcontents are opaque to walk_eraseregions, and /* curcontents and newcontents are opaque to walk_eraseregions, and
* need to be adjusted here to keep the impression of proper abstraction * need to be adjusted here to keep the impression of proper abstraction
@ -1281,7 +1281,6 @@ static int erase_and_write_block_helper(struct flashctx *flash,
curcontents += start; curcontents += start;
newcontents += start; newcontents += start;
msg_cdbg(":"); msg_cdbg(":");
/* FIXME: Assume 256 byte granularity for now to play it safe. */
if (need_erase(curcontents, newcontents, len, gran)) { if (need_erase(curcontents, newcontents, len, gran)) {
msg_cdbg("E"); msg_cdbg("E");
ret = erasefn(flash, start, len); ret = erasefn(flash, start, len);