From 2b546fdc45d33a7b407f49b3732d1a57afa60b72 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=C3=98yvind=20Harboe?= Date: Mon, 15 Nov 2010 14:43:16 +0100 Subject: [PATCH] flash: fix bug with multiple back-to-back flash chips MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit flash programming via flash write_image or gdb load would produce a bogus error message that the flash chip was to small. The solution is to limit the current flash programming run to the current chip. Signed-off-by: Øyvind Harboe --- src/flash/nor/core.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/flash/nor/core.c b/src/flash/nor/core.c index 2c1d9dee04..da73bf6405 100644 --- a/src/flash/nor/core.c +++ b/src/flash/nor/core.c @@ -654,9 +654,13 @@ int flash_write_unlock(struct target *target, struct image *image, if (run_address + run_size - 1 > c->base + c->size - 1) { - LOG_ERROR("The image is too big for the flash"); - retval = ERROR_FAIL; - goto done; + /* If we have more than one flash chip back to back, then we limit + * the current write operation to the current chip. + */ + LOG_DEBUG("Truncate flash run size to the current flash chip."); + + run_size = c->base + c->size - run_address; + assert(run_size > 0); } /* If we're applying any sector automagic, then pad this -- 2.30.2