diff options
author | mw <mw@FreeBSD.org> | 2017-08-09 00:45:25 +0000 |
---|---|---|
committer | Luiz Souza <luiz@netgate.com> | 2017-08-28 15:32:27 -0500 |
commit | 9ba9c22d7ef34c1e8cb77910f43a992d4253e3e5 (patch) | |
tree | b4a10c959abff2963474eadd2ac0f913313fb4f3 /sys | |
parent | d756e4b9b2c603e502aa58a9b9a57f4cb4aca0a5 (diff) | |
download | FreeBSD-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)
Diffstat (limited to 'sys')
-rw-r--r-- | sys/dev/fdt/fdt_common.c | 3 |
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; |