X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=board%2Famcc%2Febony%2Fflash.c;h=df7716cd78020bab94dd5aca1e5734f5508bd059;hb=2e6e1772c0e34871769be4aef79748fe3e47d953;hp=94eeee2e49d8133a93e7b4f23c47043dff8d94e1;hpb=3df61957938586c512c17e72d83551d190400981;p=u-boot diff --git a/board/amcc/ebony/flash.c b/board/amcc/ebony/flash.c index 94eeee2e49..df7716cd78 100644 --- a/board/amcc/ebony/flash.c +++ b/board/amcc/ebony/flash.c @@ -34,6 +34,7 @@ #include #include #include +#include #undef DEBUG #ifdef DEBUG @@ -71,6 +72,36 @@ static unsigned long flash_addr_table[8][CONFIG_SYS_MAX_FLASH_BANKS] = { */ static ulong flash_get_size(vu_long * addr, flash_info_t * info); +/* + * Override the weak default mapping function with a board specific one + */ +u32 flash_get_bank_size(int cs, int idx) +{ + u8 reg = in_8((void *)CONFIG_SYS_FPGA_BASE); + + if ((reg & BOOT_SMALL_FLASH) && !(reg & FLASH_ONBD_N)) { + /* + * cs0: small flash (512KiB) + * cs2: 2 * big flash (2 * 2MiB) + */ + if (cs == 0) + return flash_info[2].size; + if (cs == 2) + return flash_info[0].size + flash_info[1].size; + } else { + /* + * cs0: 2 * big flash (2 * 2MiB) + * cs2: small flash (512KiB) + */ + if (cs == 0) + return flash_info[0].size + flash_info[1].size; + if (cs == 2) + return flash_info[2].size; + } + + return 0; +} + unsigned long flash_init(void) { unsigned long total_b = 0;