Enable parsing simple-bus 'ranges' with multiple entries
This patch makes possible to boot with up to 8 ranges in soc. Dynamic allocation cannot be used, because ftd_get_ranges function is called early, when malloc is not available. Change is required for the alignment of Marvell Armada 38x device trees present in sys/gnu/dts/arm - originally the platform has 6 entries in simple-bus 'ranges'. Submitted by: Patryk Duda <pdk@semihalf.com> Reviewed by: manu, nwhitehorn, cognet (mentor) Approved by: cognet (mentor) Obtained from: Semihalf Differential Revision: https://reviews.freebsd.org/D11876
This commit is contained in:
parent
b8c53507cb
commit
bfd084c8c4
@ -60,6 +60,7 @@ __FBSDID("$FreeBSD$");
|
||||
#define FDT_TYPE_LEN 64
|
||||
|
||||
#define FDT_REG_CELLS 4
|
||||
#define FDT_RANGES_SIZE 48
|
||||
|
||||
SYSCTL_NODE(_hw, OID_AUTO, fdt, CTLFLAG_RD, 0, "Flattened Device Tree");
|
||||
|
||||
@ -149,7 +150,7 @@ fdt_get_range_by_busaddr(phandle_t node, u_long addr, u_long *base,
|
||||
int
|
||||
fdt_get_range(phandle_t node, int range_id, u_long *base, u_long *size)
|
||||
{
|
||||
pcell_t ranges[6], *rangesptr;
|
||||
pcell_t ranges[FDT_RANGES_SIZE], *rangesptr;
|
||||
pcell_t addr_cells, size_cells, par_addr_cells;
|
||||
u_long par_bus_addr, pbase, psize;
|
||||
int err, len, tuple_size, tuples;
|
||||
|
Loading…
Reference in New Issue
Block a user