On Tue, May 21, 2024 at 6:26 PM Patrick Rudolph <patrick.rudolph@xxxxxxxxxxxxx> wrote: > > Instead of implementing a custom register paging mechanism in > the driver use the existing regmap ranges feature. driver, use ... > +static const struct regmap_range_cfg cy8c95x0_ranges[] = { > + { > + .range_min = CY8C95X0_VIRTUAL, > + .range_max = 0, /* Updated at runtime */ This and similar comments are misleading since the data is defined as const. Updated --> Filled or alike here and elsewhere. > + .selector_reg = CY8C95X0_PORTSEL, > + .selector_mask = 0x07, > + .selector_shift = 0x0, > + .window_start = CY8C95X0_INTMASK, > + .window_len = MUXED_STRIDE, > + } > }; ... > + regcache_cache_only(chip->regmap, true); > + regmap_update_bits(chip->regmap, off, mask & val, 0); > + regcache_cache_only(chip->regmap, false); A side note: It's strange to see mask & val, 0 in the parameters of regmap calls. Perhaps refactor this (in a separate patch) to use standard approach? ... > + memcpy(®map_range_conf, &cy8c95x0_ranges[0], sizeof(regmap_range_conf)); memcpy(®map_range_conf, cy8c95x0_ranges, sizeof(regmap_range_conf)); ... Note, if you are not using --histogram diff algo, please start using it from the next version of this series. P.S. I will test the next version on Intel Galileo Gen1 as currently I have some issues with the HW I need to fix first. -- With Best Regards, Andy Shevchenko