mirror of
https://xff.cz/git/u-boot/
synced 2025-09-25 12:31:17 +02:00
libfdt: fdt_address_cells() and fdt_size_cells()
Add internal fdt_cells() to avoid copy and paste. Fix typo in fdt_size_cells() documentation comment. This is based in upstream commit: c12b2b0 ("libfdt: fdt_address_cells() and fdt_size_cells()") but misses the test cases, as we don't implement them in U-Boot. Signed-off-by: Matthias Brugger <mbrugger@suse.com> Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
committed by
Simon Glass
parent
073e6d65d1
commit
ce2dae3a44
@@ -1,6 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* libfdt - Flat Device Tree manipulation
|
* libfdt - Flat Device Tree manipulation
|
||||||
* Copyright (C) 2014 David Gibson <david@gibson.dropbear.id.au>
|
* Copyright (C) 2014 David Gibson <david@gibson.dropbear.id.au>
|
||||||
|
* Copyright (C) 2018 embedded brains GmbH
|
||||||
*
|
*
|
||||||
* libfdt is dual licensed: you can use it either under the terms of
|
* libfdt is dual licensed: you can use it either under the terms of
|
||||||
* the GPL, or the BSD license, at your option.
|
* the GPL, or the BSD license, at your option.
|
||||||
@@ -55,42 +56,32 @@
|
|||||||
|
|
||||||
#include "libfdt_internal.h"
|
#include "libfdt_internal.h"
|
||||||
|
|
||||||
int fdt_address_cells(const void *fdt, int nodeoffset)
|
static int fdt_cells(const void *fdt, int nodeoffset, const char *name)
|
||||||
{
|
{
|
||||||
const fdt32_t *ac;
|
const fdt32_t *c;
|
||||||
int val;
|
int val;
|
||||||
int len;
|
int len;
|
||||||
|
|
||||||
ac = fdt_getprop(fdt, nodeoffset, "#address-cells", &len);
|
c = fdt_getprop(fdt, nodeoffset, name, &len);
|
||||||
if (!ac)
|
if (!c)
|
||||||
return 2;
|
return 2;
|
||||||
|
|
||||||
if (len != sizeof(*ac))
|
if (len != sizeof(*c))
|
||||||
return -FDT_ERR_BADNCELLS;
|
return -FDT_ERR_BADNCELLS;
|
||||||
|
|
||||||
val = fdt32_to_cpu(*ac);
|
val = fdt32_to_cpu(*c);
|
||||||
if ((val <= 0) || (val > FDT_MAX_NCELLS))
|
if ((val <= 0) || (val > FDT_MAX_NCELLS))
|
||||||
return -FDT_ERR_BADNCELLS;
|
return -FDT_ERR_BADNCELLS;
|
||||||
|
|
||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int fdt_address_cells(const void *fdt, int nodeoffset)
|
||||||
|
{
|
||||||
|
return fdt_cells(fdt, nodeoffset, "#address-cells");
|
||||||
|
}
|
||||||
|
|
||||||
int fdt_size_cells(const void *fdt, int nodeoffset)
|
int fdt_size_cells(const void *fdt, int nodeoffset)
|
||||||
{
|
{
|
||||||
const fdt32_t *sc;
|
return fdt_cells(fdt, nodeoffset, "#size-cells");
|
||||||
int val;
|
|
||||||
int len;
|
|
||||||
|
|
||||||
sc = fdt_getprop(fdt, nodeoffset, "#size-cells", &len);
|
|
||||||
if (!sc)
|
|
||||||
return 2;
|
|
||||||
|
|
||||||
if (len != sizeof(*sc))
|
|
||||||
return -FDT_ERR_BADNCELLS;
|
|
||||||
|
|
||||||
val = fdt32_to_cpu(*sc);
|
|
||||||
if ((val < 0) || (val > FDT_MAX_NCELLS))
|
|
||||||
return -FDT_ERR_BADNCELLS;
|
|
||||||
|
|
||||||
return val;
|
|
||||||
}
|
}
|
||||||
|
@@ -1109,7 +1109,7 @@ int fdt_address_cells(const void *fdt, int nodeoffset);
|
|||||||
*
|
*
|
||||||
* returns:
|
* returns:
|
||||||
* 0 <= n < FDT_MAX_NCELLS, on success
|
* 0 <= n < FDT_MAX_NCELLS, on success
|
||||||
* 2, if the node has no #address-cells property
|
* 2, if the node has no #size-cells property
|
||||||
* -FDT_ERR_BADNCELLS, if the node has a badly formatted or invalid
|
* -FDT_ERR_BADNCELLS, if the node has a badly formatted or invalid
|
||||||
* #size-cells property
|
* #size-cells property
|
||||||
* -FDT_ERR_BADMAGIC,
|
* -FDT_ERR_BADMAGIC,
|
||||||
|
Reference in New Issue
Block a user