Fix fdt_platform_fixups() mem region handling. It turns out u-boot puts
several types of data into the mem-info array (DRAM, SRAM, flash). We need to extract just the DRAM entries for translation into fdt memory properties. Also, increase the number of regions we can handle from 5 to 16. Submitted by: Michal Meloun
This commit is contained in:
parent
612d9391a4
commit
db7e396903
@ -88,7 +88,7 @@ fdt_platform_load_dtb(void)
|
|||||||
void
|
void
|
||||||
fdt_platform_fixups(void)
|
fdt_platform_fixups(void)
|
||||||
{
|
{
|
||||||
struct fdt_mem_region regions[3];
|
static struct fdt_mem_region regions[UB_MAX_MR];
|
||||||
const char *env, *str;
|
const char *env, *str;
|
||||||
char *end, *ethstr;
|
char *end, *ethstr;
|
||||||
int eth_no, i, len, n;
|
int eth_no, i, len, n;
|
||||||
@ -165,17 +165,15 @@ fdt_platform_fixups(void)
|
|||||||
/* Modify cpu(s) and bus clock frequenties in /cpus node [Hz] */
|
/* Modify cpu(s) and bus clock frequenties in /cpus node [Hz] */
|
||||||
fdt_fixup_cpubusfreqs(si->clk_cpu, si->clk_bus);
|
fdt_fixup_cpubusfreqs(si->clk_cpu, si->clk_bus);
|
||||||
|
|
||||||
/* Copy the data into a useful form */
|
/* Extract the DRAM regions into fdt_mem_region format. */
|
||||||
for (i = 0; i < si->mr_no; i++) {
|
for (i = 0, n = 0; i < si->mr_no && n < nitems(regions); i++) {
|
||||||
if (i > nitems(regions)) {
|
if (si->mr[i].flags == MR_ATTR_DRAM) {
|
||||||
i = nitems(regions);
|
regions[n].start = si->mr[i].start;
|
||||||
break;
|
regions[n].size = si->mr[i].size;
|
||||||
|
n++;
|
||||||
}
|
}
|
||||||
|
|
||||||
regions[i].start = si->mr[i].start;
|
|
||||||
regions[i].size = si->mr[i].size;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Fixup memory regions */
|
/* Fixup memory regions */
|
||||||
fdt_fixup_memory(regions, i);
|
fdt_fixup_memory(regions, n);
|
||||||
}
|
}
|
||||||
|
@ -40,7 +40,7 @@ void *syscall_ptr;
|
|||||||
|
|
||||||
int api_search_sig(struct api_signature **sig);
|
int api_search_sig(struct api_signature **sig);
|
||||||
|
|
||||||
#define UB_MAX_MR 5 /* max mem regions number */
|
#define UB_MAX_MR 16 /* max mem regions number */
|
||||||
#define UB_MAX_DEV 6 /* max devices number */
|
#define UB_MAX_DEV 6 /* max devices number */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Loading…
Reference in New Issue
Block a user