On 2020-07-22 15:13, Saravana Kannan wrote: > Add support for pinctrl-0 through pinctrl-8 explicitly instead of trying > to add support for pinctrl-%d properties. > > Of all the pinctrl-* properties in dts files (20322), only 47% (9531) > are pinctrl-%d properties. Of all the pinctrl-%d properties, 99.5% > (9486) are made up of pinctrl-[0-2]. > > Trying to parse all pinctrl-* properties and checking for pinctrl-%d is > unnecessarily complicated. So, just add support for pinctrl-[0-8] for > now. In the unlikely event we ever exceed pinctrl-8, we can come back > and improve this. If you were to implement the more general pinctrl-* case, roughly what would it look like (pseudo-code or english description is fine). -Frank > > Signed-off-by: Saravana Kannan <saravanak@xxxxxxxxxx> > --- > drivers/of/property.c | 18 ++++++++++++++++++ > 1 file changed, 18 insertions(+) > > diff --git a/drivers/of/property.c b/drivers/of/property.c > index b06edeb1f88b..d40d923ffeaf 100644 > --- a/drivers/of/property.c > +++ b/drivers/of/property.c > @@ -1274,6 +1274,15 @@ DEFINE_SIMPLE_PROP(interrupts_extended, "interrupts-extended", > DEFINE_SIMPLE_PROP(nvmem_cells, "nvmem-cells", NULL) > DEFINE_SIMPLE_PROP(phys, "phys", "#phy-cells") > DEFINE_SIMPLE_PROP(wakeup_parent, "wakeup-parent", NULL) > +DEFINE_SIMPLE_PROP(pinctrl0, "pinctrl-0", NULL) > +DEFINE_SIMPLE_PROP(pinctrl1, "pinctrl-1", NULL) > +DEFINE_SIMPLE_PROP(pinctrl2, "pinctrl-2", NULL) > +DEFINE_SIMPLE_PROP(pinctrl3, "pinctrl-3", NULL) > +DEFINE_SIMPLE_PROP(pinctrl4, "pinctrl-4", NULL) > +DEFINE_SIMPLE_PROP(pinctrl5, "pinctrl-5", NULL) > +DEFINE_SIMPLE_PROP(pinctrl6, "pinctrl-6", NULL) > +DEFINE_SIMPLE_PROP(pinctrl7, "pinctrl-7", NULL) > +DEFINE_SIMPLE_PROP(pinctrl8, "pinctrl-8", NULL) > DEFINE_SUFFIX_PROP(regulators, "-supply", NULL) > DEFINE_SUFFIX_PROP(gpio, "-gpio", "#gpio-cells") > DEFINE_SUFFIX_PROP(gpios, "-gpios", "#gpio-cells") > @@ -1303,6 +1312,15 @@ static const struct supplier_bindings of_supplier_bindings[] = { > { .parse_prop = parse_nvmem_cells, }, > { .parse_prop = parse_phys, }, > { .parse_prop = parse_wakeup_parent, }, > + { .parse_prop = parse_pinctrl0, }, > + { .parse_prop = parse_pinctrl1, }, > + { .parse_prop = parse_pinctrl2, }, > + { .parse_prop = parse_pinctrl3, }, > + { .parse_prop = parse_pinctrl4, }, > + { .parse_prop = parse_pinctrl5, }, > + { .parse_prop = parse_pinctrl6, }, > + { .parse_prop = parse_pinctrl7, }, > + { .parse_prop = parse_pinctrl8, }, > { .parse_prop = parse_regulators, }, > { .parse_prop = parse_gpio, }, > { .parse_prop = parse_gpios, }, >