diff options
author | Spencer Oliver <spen@spen-soft.co.uk> | 2012-07-12 12:29:38 +0100 |
---|---|---|
committer | Freddie Chopin <freddie.chopin@gmail.com> | 2012-07-30 06:27:39 +0000 |
commit | 055abd0b9cb3427fb9b52263d2be49620e8e4c97 (patch) | |
tree | 066ee1e17ccd30ca12839e5327033613f225715c /src/flash/nor | |
parent | 531fbf0ef25e75884f2ade2acafcf010cb3d7d2a (diff) |
flash: handle zero when reading stm32 flash size reg
Some variants read 0 for the flash size register, rather than
failing lets assume we have max flash fitted.
Change-Id: Ie1fb4e73606f49268a6fd5921c3aef75bc4790d3
Signed-off-by: Spencer Oliver <spen@spen-soft.co.uk>
Reviewed-on: http://openocd.zylin.com/744
Tested-by: jenkins
Reviewed-by: Andreas Fritiofson <andreas.fritiofson@gmail.com>
Reviewed-by: Freddie Chopin <freddie.chopin@gmail.com>
Diffstat (limited to 'src/flash/nor')
-rw-r--r-- | src/flash/nor/stm32f1x.c | 5 | ||||
-rw-r--r-- | src/flash/nor/stm32f2x.c | 5 | ||||
-rw-r--r-- | src/flash/nor/stm32lx.c | 5 |
3 files changed, 15 insertions, 0 deletions
diff --git a/src/flash/nor/stm32f1x.c b/src/flash/nor/stm32f1x.c index 938785ef..b6359a0a 100644 --- a/src/flash/nor/stm32f1x.c +++ b/src/flash/nor/stm32f1x.c @@ -902,6 +902,11 @@ static int stm32x_probe(struct flash_bank *bank) flash_size_in_kb = 0xffff; } + /* some variants read 0 for flash size register + * use a max flash size as a default */ + if (flash_size_in_kb == 0) + flash_size_in_kb = 0xffff; + if ((device_id & 0xfff) == 0x410) { /* medium density - we have 1k pages * 4 pages for a protection area */ diff --git a/src/flash/nor/stm32f2x.c b/src/flash/nor/stm32f2x.c index c7e050d0..5f5bfb85 100644 --- a/src/flash/nor/stm32f2x.c +++ b/src/flash/nor/stm32f2x.c @@ -605,6 +605,11 @@ static int stm32x_probe(struct flash_bank *bank) flash_size_in_kb = 0xffff; } + /* some variants read 0 for flash size register + * use a max flash size as a default */ + if (flash_size_in_kb == 0) + flash_size_in_kb = 0xffff; + if ((device_id & 0xfff) == 0x411) { /* check for early silicon */ if (flash_size_in_kb == 0xffff) { diff --git a/src/flash/nor/stm32lx.c b/src/flash/nor/stm32lx.c index 38631440..27a446de 100644 --- a/src/flash/nor/stm32lx.c +++ b/src/flash/nor/stm32lx.c @@ -482,6 +482,11 @@ static int stm32lx_probe(struct flash_bank *bank) flash_size_in_kb = 0xffff; } + /* some variants read 0 for flash size register + * use a max flash size as a default */ + if (flash_size_in_kb == 0) + flash_size_in_kb = 0xffff; + if ((device_id & 0xfff) == 0x416) { /* check for early silicon */ if (flash_size_in_kb == 0xffff) { |