On 03/01/2022 19:43, Sam Protsenko wrote: > On Fri, 31 Dec 2021 at 18:20, Krzysztof Kozlowski > <krzysztof.kozlowski@xxxxxxxxxxxxx> wrote: >> >> Existing dt-bindings expected that each GPIO/pin bank within pin >> controller has its own node with name matching the bank (e.g. gpa0, >> gpx2) and "gpio-controller" property. The node name is then used for >> matching between driver data and DTS. >> >> Newly introduced dtschema expects to have nodes ending with "-gpio-bank" >> suffix, so rewrite bank-devicetree matching to look for old and new >> style of naming. >> >> Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@xxxxxxxxxxxxx> >> --- >> drivers/pinctrl/samsung/pinctrl-samsung.c | 57 ++++++++++++++++++----- >> 1 file changed, 45 insertions(+), 12 deletions(-) >> >> diff --git a/drivers/pinctrl/samsung/pinctrl-samsung.c b/drivers/pinctrl/samsung/pinctrl-samsung.c >> index f2864a7869b3..561853df8ef7 100644 >> --- a/drivers/pinctrl/samsung/pinctrl-samsung.c >> +++ b/drivers/pinctrl/samsung/pinctrl-samsung.c >> @@ -1011,13 +1011,56 @@ static void samsung_banks_of_node_put(struct samsung_pinctrl_drv_data *d) >> of_node_put(bank->of_node); >> } >> >> +/* >> + * 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) >> +{ >> + const char *suffix = "-gpio-bank"; >> + struct samsung_pin_bank *bank; >> + struct device_node *child; >> + /* Pin bank names are up to 4 characters */ >> + char node_name[20]; >> + unsigned int i; >> + size_t len; >> + >> + bank = d->pin_banks; >> + for (i = 0; i < d->nr_banks; ++i, ++bank) { >> + strscpy(node_name, bank->name, sizeof(node_name)); >> + len = strlcat(node_name, suffix, sizeof(node_name)); >> + if (len == sizeof(sizeof(node_name))) { > > Double sizeof is probably wrong? Thanks, copy-paste error... it should be also "len >= sizeof". Best regards, Krzysztof