On Fri, Dec 15, 2023 at 06:35:14PM +0200, Andy Shevchenko wrote: > On Fri, Dec 15, 2023 at 10:38:01AM +0800, Kent Gibson wrote: > > Store the debounce period for a requested line locally, rather than in > > the debounce_period_us field in the gpiolib struct gpio_desc. > > > > Add a global tree of lines containing supplemental line information > > to make the debounce period available to be reported by the > > GPIO_V2_GET_LINEINFO_IOCTL and the line change notifier. > > LGTM, a few minor comments below. > > ... > > > +/* > > (now you can have a kernel doc :-) > Maybe you can, but I can't. > > + * a rbtree of the struct lines containing supplemental info. > > + * Used to populate gpio_v2_line_info with cdev specific fields not contained > > + * in the struct gpio_desc. > > + * A line is determined to contain supplemental information by > > + * line_is_supplemental(). > > + */ > > +static struct rb_root supinfo_tree = RB_ROOT; > > +/* covers supinfo_tree */ > > +DEFINE_SPINLOCK(supinfo_lock); > > Shouldn't this also be static? > Indeed. > ... > > > + guard(spinlock)(&supinfo_lock); > > + cleanup.h ? > Bah, I could've sworn I added that in, but it isn't evident in any of the patches all the way back to v1, so apparently not. > ... > > > +static void supinfo_to_lineinfo(struct gpio_desc *desc, > > + struct gpio_v2_line_info *info) > > +{ > > + struct gpio_v2_line_attribute *attr; > > + struct line *line; > > + > > + guard(spinlock)(&supinfo_lock); > > + > > + line = supinfo_find(desc); > > + if (line) { > > if (!line) > return; > > ? Will do. > > > + attr = &info->attrs[info->num_attrs]; > > + attr->id = GPIO_V2_LINE_ATTR_ID_DEBOUNCE; > > + attr->debounce_period_us = READ_ONCE(line->debounce_period_us); > > + info->num_attrs++; > > + } > > +} > Cheers, Kent. > -- > With Best Regards, > Andy Shevchenko > >