summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--chip/g/config_chip.h2
-rw-r--r--chip/g/flash.c6
-rw-r--r--include/config.h1
3 files changed, 6 insertions, 3 deletions
diff --git a/chip/g/config_chip.h b/chip/g/config_chip.h
index f0c508e2e9..b531f5d8b3 100644
--- a/chip/g/config_chip.h
+++ b/chip/g/config_chip.h
@@ -22,6 +22,8 @@
#define CONFIG_FLASH_WRITE_SIZE 4 /* min write size (bytes) */
/* But we have a 32-word buffer for writing multiple adjacent cells */
#define CONFIG_FLASH_WRITE_IDEAL_SIZE 128 /* best write size (bytes) */
+/* The flash controller prevents bulk writes that cross row boundaries */
+#define CONFIG_FLASH_ROW_SIZE 256 /* row size */
/* Describe the flash layout */
#define CONFIG_PROGRAM_MEMORY_BASE 0x40000
diff --git a/chip/g/flash.c b/chip/g/flash.c
index 6a329756a7..870f76ef34 100644
--- a/chip/g/flash.c
+++ b/chip/g/flash.c
@@ -311,10 +311,10 @@ static int flash_physical_write_internal(int byte_offset, int is_info_bank,
num = MIN(num_bytes, CONFIG_FLASH_WRITE_IDEAL_SIZE);
/*
* Make sure that the write operation will not go
- * past a CONFIG_FLASH_ERASE_SIZE boundary.
+ * past a CONFIG_FLASH_ROW_SIZE boundary.
*/
- num = MIN(num, CONFIG_FLASH_ERASE_SIZE -
- byte_offset % CONFIG_FLASH_ERASE_SIZE);
+ num = MIN(num, CONFIG_FLASH_ROW_SIZE -
+ byte_offset % CONFIG_FLASH_ROW_SIZE);
ret = write_batch(byte_offset,
is_info_bank,
num / 4, /* word count */
diff --git a/include/config.h b/include/config.h
index 86964d1617..7a62d2988e 100644
--- a/include/config.h
+++ b/include/config.h
@@ -835,6 +835,7 @@
#undef CONFIG_FLASH_BANK_SIZE
#undef CONFIG_FLASH_ERASED_VALUE32
#undef CONFIG_FLASH_ERASE_SIZE
+#undef CONFIG_FLASH_ROW_SIZE
/* Base address of program memory */
#undef CONFIG_PROGRAM_MEMORY_BASE