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>
This commit is contained in:
Spencer Oliver 2012-07-12 12:29:38 +01:00 committed by Freddie Chopin
parent 531fbf0ef2
commit 055abd0b9c
3 changed files with 15 additions and 0 deletions

View File

@ -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 */

View File

@ -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) {

View File

@ -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) {