Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

powerpc: Add del_node() for early boot code to prune inapplicable devices.

Some platforms have variants that can share most of a flat device tree but need
a few devices selectively pruned at boot time. This adds del_node() to ops.h
to allow access to the existing fdt_del_node().

Signed-off-by: Mike Ditto <mditto@consentry.com>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>

authored by

Mike Ditto and committed by
Benjamin Herrenschmidt
71773f03 201bdc86

+12
+6
arch/powerpc/boot/libfdt-wrapper.c
··· 105 105 return check_err(rc); 106 106 } 107 107 108 + static int fdt_wrapper_del_node(const void *devp) 109 + { 110 + return fdt_del_node(fdt, devp_offset(devp)); 111 + } 112 + 108 113 static void *fdt_wrapper_get_parent(const void *devp) 109 114 { 110 115 return offset_devp(fdt_parent_offset(fdt, devp_offset(devp))); ··· 179 174 dt_ops.create_node = fdt_wrapper_create_node; 180 175 dt_ops.find_node_by_prop_value = fdt_wrapper_find_node_by_prop_value; 181 176 dt_ops.find_node_by_compatible = fdt_wrapper_find_node_by_compatible; 177 + dt_ops.del_node = fdt_wrapper_del_node; 182 178 dt_ops.get_path = fdt_wrapper_get_path; 183 179 dt_ops.finalize = fdt_wrapper_finalize; 184 180
+6
arch/powerpc/boot/ops.h
··· 40 40 const int buflen); 41 41 int (*setprop)(const void *phandle, const char *name, 42 42 const void *buf, const int buflen); 43 + int (*del_node)(const void *phandle); 43 44 void *(*get_parent)(const void *phandle); 44 45 /* The node must not already exist. */ 45 46 void *(*create_node)(const void *parent, const char *name); ··· 125 124 return dt_ops.setprop(devp, name, buf, strlen(buf) + 1); 126 125 127 126 return -1; 127 + } 128 + 129 + static inline int del_node(const void *devp) 130 + { 131 + return dt_ops.del_node ? dt_ops.del_node(devp) : -1; 128 132 } 129 133 130 134 static inline void *get_parent(const char *devp)