blob: 5a6f9498254893d2766c00409c32754a8edad3c1 [file] [log] [blame]
Balint Dobszaybd670742022-03-03 11:38:14 +01001// SPDX-License-Identifier: BSD-3-Clause
2/*
3 * Copyright (c) 2022, Arm Limited and Contributors. All rights reserved.
4 */
5
6#include "fdt_helpers.h"
7
8bool dt_get_u32(const void *fdt, int node, const char *prop_name, uint32_t *prop_val)
9{
10 const fdt32_t *u32_prop = NULL;
11 int len = 0;
12
13 if (!fdt || !prop_name || !prop_val)
14 return false;
15
16 u32_prop = fdt_getprop(fdt, node, prop_name, &len);
17 if (!u32_prop || len != sizeof(*u32_prop))
18 return false;
19
20 *prop_val = fdt32_to_cpu(*u32_prop);
21
22 return true;
23}
24
25bool dt_get_u64(const void *fdt, int node, const char *prop_name, uint64_t *prop_val)
26{
27 const fdt64_t *u64_prop = NULL;
28 int len = 0;
29
30 if (!fdt || !prop_name || !prop_val)
31 return false;
32
33 u64_prop = fdt_getprop(fdt, node, prop_name, &len);
34 if (!u64_prop || len != sizeof(*u64_prop))
35 return false;
36
37 *prop_val = fdt64_to_cpu(*u64_prop);
38
39 return true;
40}
Balint Dobszay9846a0d2023-04-18 18:08:28 +020041
42bool dt_get_u32_by_offset(const void *fdt, int offset, const char **prop_name, uint32_t *prop_val)
43{
44 const fdt32_t *u32_prop = NULL;
45 int len = 0;
46
47 if (!fdt || !prop_name || !prop_val)
48 return false;
49
50 u32_prop = fdt_getprop_by_offset(fdt, offset, prop_name, &len);
51 if (!u32_prop || len != sizeof(*u32_prop) || !(*prop_name))
52 return false;
53
54 *prop_val = fdt32_to_cpu(*u32_prop);
55
56 return true;
57}
58
59bool dt_get_u64_by_offset(const void *fdt, int offset, const char **prop_name, uint64_t *prop_val)
60{
61 const fdt64_t *u64_prop = NULL;
62 int len = 0;
63
64 if (!fdt || !prop_name || !prop_val)
65 return false;
66
67 u64_prop = fdt_getprop_by_offset(fdt, offset, prop_name, &len);
68 if (!u64_prop || len != sizeof(*u64_prop) || !(*prop_name))
69 return false;
70
71 *prop_val = fdt64_to_cpu(*u64_prop);
72
73 return true;
74}