summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormw <mw@FreeBSD.org>2017-08-09 00:45:25 +0000
committerLuiz Souza <luiz@netgate.com>2017-08-28 15:32:27 -0500
commit9ba9c22d7ef34c1e8cb77910f43a992d4253e3e5 (patch)
treeb4a10c959abff2963474eadd2ac0f913313fb4f3
parentd756e4b9b2c603e502aa58a9b9a57f4cb4aca0a5 (diff)
downloadFreeBSD-src-9ba9c22d7ef34c1e8cb77910f43a992d4253e3e5.zip
FreeBSD-src-9ba9c22d7ef34c1e8cb77910f43a992d4253e3e5.tar.gz
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 (cherry picked from commit 6ab1e86ae3ea3159e2dd8fae140549a71d5386e5)
-rw-r--r--sys/dev/fdt/fdt_common.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/dev/fdt/fdt_common.c b/sys/dev/fdt/fdt_common.c
index aaaa614..395b77b 100644
--- a/sys/dev/fdt/fdt_common.c
+++ b/sys/dev/fdt/fdt_common.c
@@ -59,6 +59,7 @@ __FBSDID("$FreeBSD$");
#define FDT_TYPE_LEN 64
#define FDT_REG_CELLS 4
+#define FDT_RANGES_SIZE 48
vm_paddr_t fdt_immr_pa;
vm_offset_t fdt_immr_va;
@@ -144,7 +145,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;
OpenPOWER on IntegriCloud