diff options
author | Anatolij Gustschin <agust@denx.de> | 2010-11-28 02:13:33 +0100 |
---|---|---|
committer | Wolfgang Denk <wd@denx.de> | 2010-11-28 19:41:11 +0100 |
commit | 34bbb8fb467a00aebc3e631e71888c5b00875a68 (patch) | |
tree | f91340d23b20439244e0c87420dc0fe6a8fcb082 /post/drivers | |
parent | b485faa602f4d35af01beaa729525c664e75d7ba (diff) | |
download | u-boot-imx-34bbb8fb467a00aebc3e631e71888c5b00875a68.zip u-boot-imx-34bbb8fb467a00aebc3e631e71888c5b00875a68.tar.gz u-boot-imx-34bbb8fb467a00aebc3e631e71888c5b00875a68.tar.bz2 |
cfi_flash: fix bug introduced while recent change to flash_get_size()
commit ec50a8e389863ac35bfd9d9a2e8b30187318e59e
"cfi_flash: handle 'chip size exceeds address window' situation"
added 3rd argument to flash_get_size() but didn't fix all the
function calls from the board specific code. Many boards have
their own flash_get_size() definitions in the board code and
use them there, but some boards (e.g. tqm834x, tqm85xx, pdm360ng)
use flash_get_size() from the cfi_flash.c driver.
The bug shows up if the value of the "max_size" argument (which
is not defined when calling the function with two arguments)
happens to be less than "info->size". In this case on the
affected boards we end up with a bank of reduced size and
in the worst case might even be not able to update U-Boot or
to boot the kernel from flash:
=> fli
Bank # 1: CFI conformant FLASH (32 x 16) Size: 0 kB in 1 Sectors
AMD Standard command set, Manufacturer ID: 0x01, Device ID: 0x227E
Erase timeout: 4096 ms, write timeout: 1 ms
Buffer write timeout: 3 ms, buffer size: 64 bytes
Sector Start Addresses:
F0000000 RO
Bank # 2: CFI conformant FLASH (32 x 16) Size: 128 MB in 512 Sectors
AMD Standard command set, Manufacturer ID: 0x01, Device ID: 0x227E
Erase timeout: 4096 ms, write timeout: 1 ms
Buffer write timeout: 3 ms, buffer size: 64 bytes
Sector Start Addresses:
F8000000 F8040000 F8080000 F80C0000 F8100000
F8140000 F8180000 F81C0000 F8200000 F8240000
...
E.g., updating U-Boot is not possible now:
=> protect off ${u-boot_addr} +${u-boot_size}
Error: end address (0xf007ffff) not in flash!
Bad address format
=> era ${u-boot_addr} +${u-boot_size}
Error: end address (0xf007ffff) not in flash!
Bad address format
This patch removes the 3rd argument of flash_get_size() again
and sets "max_size" in the function itself instead of passing
it as a function argument.
Signed-off-by: Anatolij Gustschin <agust@denx.de>
Diffstat (limited to 'post/drivers')
0 files changed, 0 insertions, 0 deletions