diff --git a/src/flash/nor/stm32f1x.c b/src/flash/nor/stm32f1x.c index 938785ef1..b6359a0a8 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 c7e050d0d..5f5bfb853 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 386314402..27a446de1 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) {