From: Beniamino Galvani Date: Tue, 16 Aug 2016 09:49:47 +0000 (+0200) Subject: pinctrl: generic: scan for "pins" and "groups" properties in sub-nodes X-Git-Tag: v2016.09~45 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=2c936374c81a24a461cf71725a1e9ce439e048ed;p=oweals%2Fu-boot.git pinctrl: generic: scan for "pins" and "groups" properties in sub-nodes In cases where the pins and groups definitions are in a sub-node, as: uart_a { mux { groups = "uart_tx_a", "uart_rx_a"; function = "uart_a"; }; }; pinctrl_generic_set_state_subnode() returns an error for the top-level node and pinctrl_generic_set_state() fails. Instead, return success so that the child nodes are tried. Signed-off-by: Beniamino Galvani Reviewed-by: Simon Glass Reviewed-by: Masahiro Yamada --- diff --git a/drivers/pinctrl/pinctrl-generic.c b/drivers/pinctrl/pinctrl-generic.c index e86b72a8de..baff40f1f0 100644 --- a/drivers/pinctrl/pinctrl-generic.c +++ b/drivers/pinctrl/pinctrl-generic.c @@ -312,8 +312,10 @@ static int pinctrl_generic_set_state_subnode(struct udevice *dev, is_group = true; strings_count = fdt_count_strings(fdt, node, subnode_target_type); - if (strings_count < 0) - return -EINVAL; + if (strings_count < 0) { + /* skip this node; may contain config child nodes */ + return 0; + } } for (i = 0; i < strings_count; i++) {