On 08/04/2022 17:39, Andy Shevchenko wrote: > 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. Makes this change smaller so it's easier to review. > >>> { >>> 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? Eh, my bad, it is equivalent. > >>> - 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. Best regards, Krzysztof