uboot/lib/fdtdec_common.c
<<
>>
Prefs
   1// SPDX-License-Identifier: GPL-2.0+
   2/*
   3 * Copyright (c) 2014
   4 * Heiko Schocher, DENX Software Engineering, hs@denx.de.
   5 *
   6 * Based on lib/fdtdec.c:
   7 * Copyright (c) 2011 The Chromium OS Authors.
   8 */
   9
  10#ifndef USE_HOSTCC
  11#include <common.h>
  12#include <log.h>
  13#include <linux/libfdt.h>
  14#include <fdtdec.h>
  15#else
  16#include "libfdt.h"
  17#include "fdt_support.h"
  18
  19#define debug(...)
  20#endif
  21
  22int fdtdec_get_int(const void *blob, int node, const char *prop_name,
  23                int default_val)
  24{
  25        const int *cell;
  26        int len;
  27
  28        debug("%s: %s: ", __func__, prop_name);
  29        cell = fdt_getprop(blob, node, prop_name, &len);
  30        if (cell && len >= sizeof(int)) {
  31                int val = fdt32_to_cpu(cell[0]);
  32
  33                debug("%#x (%d)\n", val, val);
  34                return val;
  35        }
  36        debug("(not found)\n");
  37        return default_val;
  38}
  39
  40unsigned int fdtdec_get_uint(const void *blob, int node, const char *prop_name,
  41                        unsigned int default_val)
  42{
  43        const int *cell;
  44        int len;
  45
  46        debug("%s: %s: ", __func__, prop_name);
  47        cell = fdt_getprop(blob, node, prop_name, &len);
  48        if (cell && len >= sizeof(unsigned int)) {
  49                unsigned int val = fdt32_to_cpu(cell[0]);
  50
  51                debug("%#x (%d)\n", val, val);
  52                return val;
  53        }
  54        debug("(not found)\n");
  55        return default_val;
  56}
  57
  58int fdtdec_get_child_count(const void *blob, int node)
  59{
  60        int subnode;
  61        int num = 0;
  62
  63        fdt_for_each_subnode(subnode, blob, node)
  64                num++;
  65
  66        return num;
  67}
  68