12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- /*
- * libfdt - Flat Device Tree manipulation
- * Copyright (C) 2014 David Gibson <david@gibson.dropbear.id.au>
- * SPDX-License-Identifier: GPL-2.0+ BSD-2-Clause
- */
- #include <libfdt_env.h>
- #ifndef USE_HOSTCC
- #include <fdt.h>
- #include <libfdt.h>
- #else
- #include "fdt_host.h"
- #endif
- #include "libfdt_internal.h"
- int fdt_address_cells(const void *fdt, int nodeoffset)
- {
- const fdt32_t *ac;
- int val;
- int len;
- ac = fdt_getprop(fdt, nodeoffset, "#address-cells", &len);
- if (!ac)
- return 2;
- if (len != sizeof(*ac))
- return -FDT_ERR_BADNCELLS;
- val = fdt32_to_cpu(*ac);
- if ((val <= 0) || (val > FDT_MAX_NCELLS))
- return -FDT_ERR_BADNCELLS;
- return val;
- }
- int fdt_size_cells(const void *fdt, int nodeoffset)
- {
- const fdt32_t *sc;
- 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;
- }
|