From 531fbf0ef25e75884f2ade2acafcf010cb3d7d2a Mon Sep 17 00:00:00 2001
From: Spencer Oliver <spen@spen-soft.co.uk>
Date: Thu, 12 Jul 2012 12:25:10 +0100
Subject: [PATCH] flash: stm32l handle flash size read failure

Rather than failing if the flash size reg cannot be read lets assume
we have the max flash size fitted.

It is quite common on early ST silicon to not correct support this register.

Change-Id: Ife058d60ae0027faad2c929ebd5b7fe2ef27234d
Signed-off-by: Spencer Oliver <spen@spen-soft.co.uk>
Reviewed-on: http://openocd.zylin.com/743
Tested-by: jenkins
Reviewed-by: Andreas Fritiofson <andreas.fritiofson@gmail.com>
Reviewed-by: Freddie Chopin <freddie.chopin@gmail.com>
---
 src/flash/nor/stm32lx.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/flash/nor/stm32lx.c b/src/flash/nor/stm32lx.c
index 716517b14..386314402 100644
--- a/src/flash/nor/stm32lx.c
+++ b/src/flash/nor/stm32lx.c
@@ -476,8 +476,11 @@ static int stm32lx_probe(struct flash_bank *bank)
 
 	/* get flash size from target. */
 	retval = target_read_u16(target, F_SIZE, &flash_size_in_kb);
-	if (retval != ERROR_OK)
-		return retval;
+	if (retval != ERROR_OK) {
+		LOG_WARNING("failed reading flash size, default to max target family");
+		/* failed reading flash size, default to max target family */
+		flash_size_in_kb = 0xffff;
+	}
 
 	if ((device_id & 0xfff) == 0x416) {
 		/* check for early silicon */
-- 
GitLab