On Fri, Apr 08, 2022 at 05:22:21PM +0200, Krzysztof Kozlowski wrote: > On 01/04/2022 12:35, Andy Shevchenko wrote: > > Switch the code to use for_each_gpiochip_node() helper. (...) > > /* > > * Iterate over all driver pin banks to find one matching the name of node, > > * skipping optional "-gpio" node suffix. When found, assign node to the bank. > > */ > > -static void samsung_banks_of_node_get(struct device *dev, > > - struct samsung_pinctrl_drv_data *d, > > - struct device_node *node) > > +static void samsung_banks_node_get(struct device *dev, struct samsung_pinctrl_drv_data *d) > > This is worth simplification anyway, so please split it to separate patch. Not sure what to do and why it worth an additional churn. > > { > > const char *suffix = "-gpio-bank"; > > struct samsung_pin_bank *bank; > > - struct device_node *child; > > + struct fwnode_handle *child; > > /* Pin bank names are up to 4 characters */ > > char node_name[20]; > > unsigned int i; > > @@ -1038,17 +1037,17 @@ static void samsung_banks_of_node_get(struct device *dev, > > continue; > > } > > > > - for_each_child_of_node(node, child) { > > - if (!of_find_property(child, "gpio-controller", NULL)) > > - continue; > > This does not look equivalent. There are nodes without this property. Not sure I understand why not. The macro checks for the property and iterates over nodes that have this property. Can you elaborate, please? > > - if (of_node_name_eq(child, node_name)) > > + for_each_gpiochip_node(dev, child) { > > + struct device_node *np = to_of_node(child); > > + > > + if (of_node_name_eq(np, node_name)) > > break; > > - else if (of_node_name_eq(child, bank->name)) > > + if (of_node_name_eq(np, bank->name)) > > break; > > } > > This patch has to wait till someone provides you a tested-by. I might do > it around next week. Fine with me, I will drop it from my repo for now. Thanks for review! -- With Best Regards, Andy Shevchenko