mirror of
https://xff.cz/git/u-boot/
synced 2025-09-27 05:21:16 +02:00
libfdt: Sync fdt_for_each_subnode() with upstream
The signature for this macro has changed. Bring in the upstream version and adjust U-Boot's usages to suit. Signed-off-by: Simon Glass <sjg@chromium.org> Update to drivers/power/pmic/palmas.c: Signed-off-by: Keerthy <j-keerthy@ti.com> Change-Id: I6cc9021339bfe686f9df21d61a1095ca2b3776e8
This commit is contained in:
@@ -223,7 +223,7 @@ tegra_xusb_padctl_config_parse_dt(struct tegra_xusb_padctl *padctl,
|
|||||||
|
|
||||||
config->name = fdt_get_name(fdt, node, NULL);
|
config->name = fdt_get_name(fdt, node, NULL);
|
||||||
|
|
||||||
fdt_for_each_subnode(fdt, subnode, node) {
|
fdt_for_each_subnode(subnode, fdt, node) {
|
||||||
struct tegra_xusb_padctl_group *group;
|
struct tegra_xusb_padctl_group *group;
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
@@ -253,7 +253,7 @@ static int tegra_xusb_padctl_parse_dt(struct tegra_xusb_padctl *padctl,
|
|||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
fdt_for_each_subnode(fdt, subnode, node) {
|
fdt_for_each_subnode(subnode, fdt, node) {
|
||||||
struct tegra_xusb_padctl_config *config = &padctl->config;
|
struct tegra_xusb_padctl_config *config = &padctl->config;
|
||||||
|
|
||||||
err = tegra_xusb_padctl_config_parse_dt(padctl, config, fdt,
|
err = tegra_xusb_padctl_config_parse_dt(padctl, config, fdt,
|
||||||
|
@@ -1026,7 +1026,7 @@ int fit_image_verify(const void *fit, int image_noffset)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Process all hash subnodes of the component image node */
|
/* Process all hash subnodes of the component image node */
|
||||||
fdt_for_each_subnode(fit, noffset, image_noffset) {
|
fdt_for_each_subnode(noffset, fit, image_noffset) {
|
||||||
const char *name = fit_get_name(fit, noffset, NULL);
|
const char *name = fit_get_name(fit, noffset, NULL);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@@ -212,7 +212,7 @@ static int fit_image_verify_sig(const void *fit, int image_noffset,
|
|||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
/* Process all hash subnodes of the component image node */
|
/* Process all hash subnodes of the component image node */
|
||||||
fdt_for_each_subnode(fit, noffset, image_noffset) {
|
fdt_for_each_subnode(noffset, fit, image_noffset) {
|
||||||
const char *name = fit_get_name(fit, noffset, NULL);
|
const char *name = fit_get_name(fit, noffset, NULL);
|
||||||
|
|
||||||
if (!strncmp(name, FIT_SIG_NODENAME,
|
if (!strncmp(name, FIT_SIG_NODENAME,
|
||||||
@@ -260,7 +260,7 @@ int fit_image_verify_required_sigs(const void *fit, int image_noffset,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
fdt_for_each_subnode(sig_blob, noffset, sig_node) {
|
fdt_for_each_subnode(noffset, sig_blob, sig_node) {
|
||||||
const char *required;
|
const char *required;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
@@ -393,7 +393,7 @@ static int fit_config_verify_sig(const void *fit, int conf_noffset,
|
|||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
/* Process all hash subnodes of the component conf node */
|
/* Process all hash subnodes of the component conf node */
|
||||||
fdt_for_each_subnode(fit, noffset, conf_noffset) {
|
fdt_for_each_subnode(noffset, fit, conf_noffset) {
|
||||||
const char *name = fit_get_name(fit, noffset, NULL);
|
const char *name = fit_get_name(fit, noffset, NULL);
|
||||||
|
|
||||||
if (!strncmp(name, FIT_SIG_NODENAME,
|
if (!strncmp(name, FIT_SIG_NODENAME,
|
||||||
@@ -438,7 +438,7 @@ int fit_config_verify_required_sigs(const void *fit, int conf_noffset,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
fdt_for_each_subnode(sig_blob, noffset, sig_node) {
|
fdt_for_each_subnode(noffset, sig_blob, sig_node) {
|
||||||
const char *required;
|
const char *required;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
|
@@ -1219,7 +1219,7 @@ static int cpsw_eth_ofdata_to_platdata(struct udevice *dev)
|
|||||||
active_slave = fdtdec_get_int(fdt, node, "active_slave", 0);
|
active_slave = fdtdec_get_int(fdt, node, "active_slave", 0);
|
||||||
priv->data.active_slave = active_slave;
|
priv->data.active_slave = active_slave;
|
||||||
|
|
||||||
fdt_for_each_subnode(fdt, subnode, node) {
|
fdt_for_each_subnode(subnode, fdt, node) {
|
||||||
int len;
|
int len;
|
||||||
const char *name;
|
const char *name;
|
||||||
|
|
||||||
|
@@ -990,7 +990,7 @@ static int ks2_eth_bind_slaves(struct udevice *dev, int gbe, int *gbe_0)
|
|||||||
char *slave_name;
|
char *slave_name;
|
||||||
|
|
||||||
interfaces = fdt_subnode_offset(fdt, gbe, "interfaces");
|
interfaces = fdt_subnode_offset(fdt, gbe, "interfaces");
|
||||||
fdt_for_each_subnode(fdt, slave, interfaces) {
|
fdt_for_each_subnode(slave, fdt, interfaces) {
|
||||||
int slave_no;
|
int slave_no;
|
||||||
|
|
||||||
slave_no = fdtdec_get_int(fdt, slave, "slave-port", -ENOENT);
|
slave_no = fdtdec_get_int(fdt, slave, "slave-port", -ENOENT);
|
||||||
@@ -1015,7 +1015,7 @@ static int ks2_eth_bind_slaves(struct udevice *dev, int gbe, int *gbe_0)
|
|||||||
}
|
}
|
||||||
|
|
||||||
sec_slave = fdt_subnode_offset(fdt, gbe, "secondary-slave-ports");
|
sec_slave = fdt_subnode_offset(fdt, gbe, "secondary-slave-ports");
|
||||||
fdt_for_each_subnode(fdt, slave, sec_slave) {
|
fdt_for_each_subnode(slave, fdt, sec_slave) {
|
||||||
int slave_no;
|
int slave_no;
|
||||||
|
|
||||||
slave_no = fdtdec_get_int(fdt, slave, "slave-port", -ENOENT);
|
slave_no = fdtdec_get_int(fdt, slave, "slave-port", -ENOENT);
|
||||||
|
@@ -4153,7 +4153,7 @@ static int mvpp2_base_bind(struct udevice *parent)
|
|||||||
return -ENOENT;
|
return -ENOENT;
|
||||||
}
|
}
|
||||||
|
|
||||||
fdt_for_each_subnode(blob, subnode, node) {
|
fdt_for_each_subnode(subnode, blob, node) {
|
||||||
/* Skip disabled ports */
|
/* Skip disabled ports */
|
||||||
if (!fdtdec_get_is_enabled(blob, subnode))
|
if (!fdtdec_get_is_enabled(blob, subnode))
|
||||||
continue;
|
continue;
|
||||||
|
@@ -531,7 +531,7 @@ static int tegra_pcie_parse_dt(const void *fdt, int node, enum tegra_pci_id id,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
fdt_for_each_subnode(fdt, subnode, node) {
|
fdt_for_each_subnode(subnode, fdt, node) {
|
||||||
unsigned int index = 0, num_lanes = 0;
|
unsigned int index = 0, num_lanes = 0;
|
||||||
struct tegra_pcie_port *port;
|
struct tegra_pcie_port *port;
|
||||||
|
|
||||||
|
@@ -152,7 +152,7 @@ static int comphy_probe(struct udevice *dev)
|
|||||||
}
|
}
|
||||||
|
|
||||||
lane = 0;
|
lane = 0;
|
||||||
fdt_for_each_subnode(blob, subnode, node) {
|
fdt_for_each_subnode(subnode, blob, node) {
|
||||||
/* Skip disabled ports */
|
/* Skip disabled ports */
|
||||||
if (!fdtdec_get_is_enabled(blob, subnode))
|
if (!fdtdec_get_is_enabled(blob, subnode))
|
||||||
continue;
|
continue;
|
||||||
|
@@ -154,7 +154,7 @@ int meson_pinctrl_probe(struct udevice *dev)
|
|||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
fdt_for_each_subnode(gd->fdt_blob, node, dev->of_offset) {
|
fdt_for_each_subnode(node, gd->fdt_blob, dev->of_offset) {
|
||||||
if (fdt_getprop(gd->fdt_blob, node, "gpio-controller", &len)) {
|
if (fdt_getprop(gd->fdt_blob, node, "gpio-controller", &len)) {
|
||||||
gpio = node;
|
gpio = node;
|
||||||
break;
|
break;
|
||||||
|
@@ -52,7 +52,7 @@ static int palmas_bind(struct udevice *dev)
|
|||||||
int node = dev->of_offset;
|
int node = dev->of_offset;
|
||||||
int subnode, len;
|
int subnode, len;
|
||||||
|
|
||||||
fdt_for_each_subnode(blob, subnode, node) {
|
fdt_for_each_subnode(subnode, blob, node) {
|
||||||
const char *name;
|
const char *name;
|
||||||
char *temp;
|
char *temp;
|
||||||
|
|
||||||
|
@@ -1098,7 +1098,7 @@ static int fsl_qspi_ofdata_to_platdata(struct udevice *bus)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Count flash numbers */
|
/* Count flash numbers */
|
||||||
fdt_for_each_subnode(blob, subnode, node)
|
fdt_for_each_subnode(subnode, blob, node)
|
||||||
++flash_num;
|
++flash_num;
|
||||||
|
|
||||||
if (flash_num == 0) {
|
if (flash_num == 0) {
|
||||||
|
@@ -176,24 +176,27 @@ int fdt_next_subnode(const void *fdt, int offset);
|
|||||||
/**
|
/**
|
||||||
* fdt_for_each_subnode - iterate over all subnodes of a parent
|
* fdt_for_each_subnode - iterate over all subnodes of a parent
|
||||||
*
|
*
|
||||||
|
* @node: child node (int, lvalue)
|
||||||
|
* @fdt: FDT blob (const void *)
|
||||||
|
* @parent: parent node (int)
|
||||||
|
*
|
||||||
* This is actually a wrapper around a for loop and would be used like so:
|
* This is actually a wrapper around a for loop and would be used like so:
|
||||||
*
|
*
|
||||||
* fdt_for_each_subnode(fdt, node, parent) {
|
* fdt_for_each_subnode(node, fdt, parent) {
|
||||||
* ...
|
* Use node
|
||||||
* use node
|
|
||||||
* ...
|
* ...
|
||||||
* }
|
* }
|
||||||
*
|
*
|
||||||
* Note that this is implemented as a macro and node is used as iterator in
|
* if ((node < 0) && (node != -FDT_ERR_NOT_FOUND)) {
|
||||||
* the loop. It should therefore be a locally allocated variable. The parent
|
* Error handling
|
||||||
* variable on the other hand is never modified, so it can be constant or
|
* }
|
||||||
* even a literal.
|
*
|
||||||
|
* Note that this is implemented as a macro and @node is used as
|
||||||
|
* iterator in the loop. The parent variable be constant or even a
|
||||||
|
* literal.
|
||||||
*
|
*
|
||||||
* @fdt: FDT blob (const void *)
|
|
||||||
* @node: child node (int)
|
|
||||||
* @parent: parent node (int)
|
|
||||||
*/
|
*/
|
||||||
#define fdt_for_each_subnode(fdt, node, parent) \
|
#define fdt_for_each_subnode(node, fdt, parent) \
|
||||||
for (node = fdt_first_subnode(fdt, parent); \
|
for (node = fdt_first_subnode(fdt, parent); \
|
||||||
node >= 0; \
|
node >= 0; \
|
||||||
node = fdt_next_subnode(fdt, node))
|
node = fdt_next_subnode(fdt, node))
|
||||||
|
@@ -836,7 +836,7 @@ int fdtdec_get_child_count(const void *blob, int node)
|
|||||||
int subnode;
|
int subnode;
|
||||||
int num = 0;
|
int num = 0;
|
||||||
|
|
||||||
fdt_for_each_subnode(blob, subnode, node)
|
fdt_for_each_subnode(subnode, blob, node)
|
||||||
num++;
|
num++;
|
||||||
|
|
||||||
return num;
|
return num;
|
||||||
|
@@ -146,7 +146,7 @@ static int overlay_adjust_node_phandles(void *fdto, int node,
|
|||||||
if (!found && !ret)
|
if (!found && !ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
fdt_for_each_subnode(fdto, child, node)
|
fdt_for_each_subnode(child, fdto, node)
|
||||||
overlay_adjust_node_phandles(fdto, child, delta);
|
overlay_adjust_node_phandles(fdto, child, delta);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@@ -248,7 +248,7 @@ static int overlay_update_local_node_references(void *fdto,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fdt_for_each_subnode(fdto, fixup_child, fixup_node) {
|
fdt_for_each_subnode(fixup_child, fdto, fixup_node) {
|
||||||
const char *fixup_child_name = fdt_get_name(fdto, fixup_child,
|
const char *fixup_child_name = fdt_get_name(fdto, fixup_child,
|
||||||
NULL);
|
NULL);
|
||||||
int tree_child;
|
int tree_child;
|
||||||
@@ -511,7 +511,7 @@ static int overlay_apply_node(void *fdt, int target,
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
fdt_for_each_subnode(fdto, node, fragment) {
|
fdt_for_each_subnode(node, fdto, fragment) {
|
||||||
const char *name = fdt_get_name(fdto, node, NULL);
|
const char *name = fdt_get_name(fdto, node, NULL);
|
||||||
int nnode;
|
int nnode;
|
||||||
int ret;
|
int ret;
|
||||||
@@ -550,7 +550,7 @@ static int overlay_merge(void *dt, void *dto)
|
|||||||
{
|
{
|
||||||
int fragment;
|
int fragment;
|
||||||
|
|
||||||
fdt_for_each_subnode(dto, fragment, 0) {
|
fdt_for_each_subnode(fragment, dto, 0) {
|
||||||
int overlay;
|
int overlay;
|
||||||
int target;
|
int target;
|
||||||
int ret;
|
int ret;
|
||||||
|
Reference in New Issue
Block a user