
Hello Wolfgang,
Wolfgang Denk wrote:
Dear Heiko Schocher,
In message 1306909447-19603-2-git-send-email-hs@denx.de you wrote:
Signed-off-by: Heiko Schocher hs@denx.de
post/drivers/memory.c | 20 ++++++++++++++++++++ 1 files changed, 20 insertions(+), 0 deletions(-)
diff --git a/post/drivers/memory.c b/post/drivers/memory.c index b7943ef..47b312d 100644 --- a/post/drivers/memory.c +++ b/post/drivers/memory.c @@ -455,10 +455,30 @@ static int memory_post_tests (unsigned long start, unsigned long size) __attribute__((weak)) int arch_memory_test_prepare(u32 *vstart, u32 *size, phys_addr_t *phys_offset) { +#if defined(CONFIG_ARM)
This is a weak function, so there should be no need to have #ifdef's in there.
Just define your own code as you need it.
Yes (I did this for my case, as I use it in nand_spl code, and therefore I need a "own" function, because there I have no bd ) ... but, for arm there is no bd->bi_memsize! ... so this file fails compiling. Independent, if it gets replaced by another function.
- bd_t *bd = gd->bd;
- int i;
- *size = 0;
- for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++) {
if (i == 0) {
*vstart = bd->bi_dram[0].start;
*size += bd->bi_dram[i].size;
This is a constant part and should be moved out of the loop. Then you can also get rid of th if...else clause.
Yep, you are right! Change this.
} else {
if (bd->bi_dram[i].start ==
(bd->bi_dram[i - 1].start + bd->bi_dram[i - 1].size)) {
*size += bd->bi_dram[i].size;
} else {
break;
So how do you handle non-contiguous memory banks? It appears these are quite frequent on ARM these days.
Actually, I could not handle this. Ok, I add a comment, that this function is actually only valid for contiguous mem banks.
Thanks!
bye, Heiko