X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=drivers%2Fpinctrl%2Fpinctrl-uclass.c;h=d7e38ae7291c844025b6003dfa4d97accb1e9da2;hb=83d290c56fab2d38cd1ab4c4cc7099559c1d5046;hp=49afe91c24eff576e81adcb87e02e1ed78023235;hpb=f1cc97764be4383d2aeb56d5ba5415439a1d5c97;p=platform%2Fkernel%2Fu-boot.git diff --git a/drivers/pinctrl/pinctrl-uclass.c b/drivers/pinctrl/pinctrl-uclass.c index 49afe91..d7e38ae 100644 --- a/drivers/pinctrl/pinctrl-uclass.c +++ b/drivers/pinctrl/pinctrl-uclass.c @@ -1,17 +1,17 @@ +// SPDX-License-Identifier: GPL-2.0+ /* * Copyright (C) 2015 Masahiro Yamada - * - * SPDX-License-Identifier: GPL-2.0+ */ #include -#include +#include #include #include -#include +#include #include #include -#include +#include +#include DECLARE_GLOBAL_DATA_PTR; @@ -63,16 +63,13 @@ static int pinctrl_config_one(struct udevice *config) */ static int pinctrl_select_state_full(struct udevice *dev, const char *statename) { - const void *fdt = gd->fdt_blob; - int node = dev_of_offset(dev); char propname[32]; /* long enough */ const fdt32_t *list; uint32_t phandle; - int config_node; struct udevice *config; int state, size, i, ret; - state = fdt_stringlist_search(fdt, node, "pinctrl-names", statename); + state = dev_read_stringlist_search(dev, "pinctrl-names", statename); if (state < 0) { char *end; /* @@ -85,22 +82,15 @@ static int pinctrl_select_state_full(struct udevice *dev, const char *statename) } snprintf(propname, sizeof(propname), "pinctrl-%d", state); - list = fdt_getprop(fdt, node, propname, &size); + list = dev_read_prop(dev, propname, &size); if (!list) return -EINVAL; size /= sizeof(*list); for (i = 0; i < size; i++) { phandle = fdt32_to_cpu(*list++); - - config_node = fdt_node_offset_by_phandle(fdt, phandle); - if (config_node < 0) { - dev_err(dev, "prop %s index %d invalid phandle\n", - propname, i); - return -EINVAL; - } - ret = uclass_get_device_by_of_offset(UCLASS_PINCONFIG, - config_node, &config); + ret = uclass_get_device_by_phandle_id(UCLASS_PINCONFIG, phandle, + &config); if (ret) return ret; @@ -121,34 +111,31 @@ static int pinctrl_select_state_full(struct udevice *dev, const char *statename) */ static int pinconfig_post_bind(struct udevice *dev) { - const void *fdt = gd->fdt_blob; - int offset = dev_of_offset(dev); bool pre_reloc_only = !(gd->flags & GD_FLG_RELOC); const char *name; + ofnode node; int ret; - for (offset = fdt_first_subnode(fdt, offset); - offset > 0; - offset = fdt_next_subnode(fdt, offset)) { + dev_for_each_subnode(node, dev) { if (pre_reloc_only && - !fdt_getprop(fdt, offset, "u-boot,dm-pre-reloc", NULL)) + !ofnode_pre_reloc(node)) continue; /* * If this node has "compatible" property, this is not * a pin configuration node, but a normal device. skip. */ - fdt_get_property(fdt, offset, "compatible", &ret); + ofnode_get_property(node, "compatible", &ret); if (ret >= 0) continue; if (ret != -FDT_ERR_NOTFOUND) return ret; - name = fdt_get_name(fdt, offset, NULL); + name = ofnode_get_name(node); if (!name) return -EINVAL; ret = device_bind_driver_to_node(dev, "pinconfig", name, - offset, NULL); + node, NULL); if (ret) return ret; }