mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 23:24:38 +00:00
lmb/bdinfo: dump lmb info via bdinfo
Dump lmb status from the bdinfo command. This is useful for seeing the reserved memory regions from the u-boot cmdline. Signed-off-by: Tero Kristo <t-kristo@ti.com>
This commit is contained in:
parent
cc6b87ecaa
commit
9996cea75f
3 changed files with 36 additions and 24 deletions
|
@ -9,6 +9,7 @@
|
|||
#include <common.h>
|
||||
#include <command.h>
|
||||
#include <env.h>
|
||||
#include <lmb.h>
|
||||
#include <net.h>
|
||||
#include <vsprintf.h>
|
||||
#include <asm/cache.h>
|
||||
|
@ -96,6 +97,12 @@ int do_bdinfo(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
|
|||
#if CONFIG_IS_ENABLED(MULTI_DTB_FIT)
|
||||
bdinfo_print_num("multi_dtb_fit", (ulong)gd->multi_dtb_fit);
|
||||
#endif
|
||||
if (gd->fdt_blob) {
|
||||
struct lmb lmb;
|
||||
|
||||
lmb_init_and_reserve(&lmb, gd->bd, (void *)gd->fdt_blob);
|
||||
lmb_dump_all_force(&lmb);
|
||||
}
|
||||
|
||||
arch_print_bdinfo();
|
||||
|
||||
|
|
|
@ -49,6 +49,7 @@ extern int lmb_is_reserved(struct lmb *lmb, phys_addr_t addr);
|
|||
extern long lmb_free(struct lmb *lmb, phys_addr_t base, phys_size_t size);
|
||||
|
||||
extern void lmb_dump_all(struct lmb *lmb);
|
||||
extern void lmb_dump_all_force(struct lmb *lmb);
|
||||
|
||||
static inline phys_size_t
|
||||
lmb_size_bytes(struct lmb_region *type, unsigned long region_nr)
|
||||
|
|
52
lib/lmb.c
52
lib/lmb.c
|
@ -14,33 +14,37 @@
|
|||
|
||||
#define LMB_ALLOC_ANYWHERE 0
|
||||
|
||||
void lmb_dump_all_force(struct lmb *lmb)
|
||||
{
|
||||
unsigned long i;
|
||||
|
||||
printf("lmb_dump_all:\n");
|
||||
printf(" memory.cnt = 0x%lx\n", lmb->memory.cnt);
|
||||
printf(" memory.size = 0x%llx\n",
|
||||
(unsigned long long)lmb->memory.size);
|
||||
for (i = 0; i < lmb->memory.cnt; i++) {
|
||||
printf(" memory.reg[0x%lx].base = 0x%llx\n", i,
|
||||
(unsigned long long)lmb->memory.region[i].base);
|
||||
printf(" .size = 0x%llx\n",
|
||||
(unsigned long long)lmb->memory.region[i].size);
|
||||
}
|
||||
|
||||
printf("\n reserved.cnt = 0x%lx\n", lmb->reserved.cnt);
|
||||
printf(" reserved.size = 0x%llx\n",
|
||||
(unsigned long long)lmb->reserved.size);
|
||||
for (i = 0; i < lmb->reserved.cnt; i++) {
|
||||
printf(" reserved.reg[0x%lx].base = 0x%llx\n", i,
|
||||
(unsigned long long)lmb->reserved.region[i].base);
|
||||
printf(" .size = 0x%llx\n",
|
||||
(unsigned long long)lmb->reserved.region[i].size);
|
||||
}
|
||||
}
|
||||
|
||||
void lmb_dump_all(struct lmb *lmb)
|
||||
{
|
||||
#ifdef DEBUG
|
||||
unsigned long i;
|
||||
|
||||
debug("lmb_dump_all:\n");
|
||||
debug(" memory.cnt = 0x%lx\n", lmb->memory.cnt);
|
||||
debug(" memory.size = 0x%llx\n",
|
||||
(unsigned long long)lmb->memory.size);
|
||||
for (i = 0; i < lmb->memory.cnt; i++) {
|
||||
debug(" memory.reg[0x%lx].base = 0x%llx\n", i,
|
||||
(unsigned long long)lmb->memory.region[i].base);
|
||||
debug(" .size = 0x%llx\n",
|
||||
(unsigned long long)lmb->memory.region[i].size);
|
||||
}
|
||||
|
||||
debug("\n reserved.cnt = 0x%lx\n",
|
||||
lmb->reserved.cnt);
|
||||
debug(" reserved.size = 0x%llx\n",
|
||||
(unsigned long long)lmb->reserved.size);
|
||||
for (i = 0; i < lmb->reserved.cnt; i++) {
|
||||
debug(" reserved.reg[0x%lx].base = 0x%llx\n", i,
|
||||
(unsigned long long)lmb->reserved.region[i].base);
|
||||
debug(" .size = 0x%llx\n",
|
||||
(unsigned long long)lmb->reserved.region[i].size);
|
||||
}
|
||||
#endif /* DEBUG */
|
||||
lmb_dump_all_force(lmb);
|
||||
#endif
|
||||
}
|
||||
|
||||
static long lmb_addrs_overlap(phys_addr_t base1, phys_size_t size1,
|
||||
|
|
Loading…
Reference in a new issue