lib: bidram: handle only-one dram bank available situation
LMB default init lmb->reserved.region[0] as zero. Change-Id: Ib46d9630581bb3a03c5846288b16ae805e3e6944 Signed-off-by: Joseph Chen <chenjh@rock-chips.com>
This commit is contained in:
parent
623d03d621
commit
356575c3e2
19
lib/bidram.c
19
lib/bidram.c
|
|
@ -130,6 +130,20 @@ void bidram_gen_gd_bi_dram(void)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* LBM default init:
|
||||||
|
* lmb->reserved.cnt = 1;
|
||||||
|
* lmb->reserved.region[0].base = 0;
|
||||||
|
* lmb->reserved.region[0].size = 0;
|
||||||
|
*
|
||||||
|
* Here handle that: there is the only one dram bank available.
|
||||||
|
*/
|
||||||
|
if (rsv_cnt == 1 && !res_rgn[0].base && !res_rgn[0].size) {
|
||||||
|
gd->bd->bi_dram[0].start = mem_rgn[0].base;
|
||||||
|
gd->bd->bi_dram[0].size = mem_rgn[0].size;
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
/* If reserved rgn is not from sdram start */
|
/* If reserved rgn is not from sdram start */
|
||||||
if (res_rgn[0].base != mem_rgn[0].base) {
|
if (res_rgn[0].base != mem_rgn[0].base) {
|
||||||
gd->bd->bi_dram[idx].start = mem_rgn[0].base;
|
gd->bd->bi_dram[idx].start = mem_rgn[0].base;
|
||||||
|
|
@ -209,7 +223,7 @@ static int bidram_core_reserve(enum memblk_id id, const char *mem_name,
|
||||||
/* Check overlap */
|
/* Check overlap */
|
||||||
list_for_each(node, &bidram->reserved_head) {
|
list_for_each(node, &bidram->reserved_head) {
|
||||||
mem = list_entry(node, struct memblock, node);
|
mem = list_entry(node, struct memblock, node);
|
||||||
BIDRAM_D("Reserved: %s 0x%08lx - 0x%08lx\n",
|
BIDRAM_D("Has reserved: %s 0x%08lx - 0x%08lx\n",
|
||||||
mem->attr.name, (ulong)mem->base,
|
mem->attr.name, (ulong)mem->base,
|
||||||
(ulong)(mem->base + mem->size));
|
(ulong)(mem->base + mem->size));
|
||||||
if (!strcmp(mem->attr.name, name)) {
|
if (!strcmp(mem->attr.name, name)) {
|
||||||
|
|
@ -224,6 +238,9 @@ static int bidram_core_reserve(enum memblk_id id, const char *mem_name,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BIDRAM_D("Reserve: \"%s\" 0x%08lx - 0x%08lx\n",
|
||||||
|
name, (ulong)base, (ulong)(base + size));
|
||||||
|
|
||||||
ret = lmb_reserve(&bidram->lmb, base, size);
|
ret = lmb_reserve(&bidram->lmb, base, size);
|
||||||
if (ret >= 0) {
|
if (ret >= 0) {
|
||||||
mem = malloc(sizeof(*mem));
|
mem = malloc(sizeof(*mem));
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue