1 // SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause)
3 * libfdt - Flat Device Tree manipulation
4 * Copyright (C) 2006 David Gibson, IBM Corporation.
6 #include "libfdt_env.h"
11 #include "libfdt_internal.h"
13 int fdt_setprop_inplace_namelen_partial(void *fdt
, int nodeoffset
,
14 const char *name
, int namelen
,
15 uint32_t idx
, const void *val
,
21 propval
= fdt_getprop_namelen_w(fdt
, nodeoffset
, name
, namelen
,
26 if (proplen
< (len
+ idx
))
27 return -FDT_ERR_NOSPACE
;
29 memcpy((char *)propval
+ idx
, val
, len
);
33 int fdt_setprop_inplace(void *fdt
, int nodeoffset
, const char *name
,
34 const void *val
, int len
)
39 propval
= fdt_getprop(fdt
, nodeoffset
, name
, &proplen
);
44 return -FDT_ERR_NOSPACE
;
46 return fdt_setprop_inplace_namelen_partial(fdt
, nodeoffset
, name
,
51 static void fdt_nop_region_(void *start
, int len
)
55 for (p
= start
; (char *)p
< ((char *)start
+ len
); p
++)
56 *p
= cpu_to_fdt32(FDT_NOP
);
59 int fdt_nop_property(void *fdt
, int nodeoffset
, const char *name
)
61 struct fdt_property
*prop
;
64 prop
= fdt_get_property_w(fdt
, nodeoffset
, name
, &len
);
68 fdt_nop_region_(prop
, len
+ sizeof(*prop
));
73 int fdt_node_end_offset_(void *fdt
, int offset
)
77 while ((offset
>= 0) && (depth
>= 0))
78 offset
= fdt_next_node(fdt
, offset
, &depth
);
83 int fdt_nop_node(void *fdt
, int nodeoffset
)
87 endoffset
= fdt_node_end_offset_(fdt
, nodeoffset
);
91 fdt_nop_region_(fdt_offset_ptr_w(fdt
, nodeoffset
, 0),
92 endoffset
- nodeoffset
);