On Mon, Mar 20, 2023 at 11:31:07AM -0400, William Breathitt Gray wrote: > On Mon, Mar 20, 2023 at 02:28:31PM +0200, Andy Shevchenko wrote: > > On Sat, Mar 18, 2023 at 10:59:51AM -0400, William Breathitt Gray wrote: > > > The Preset Register (PR), Flag Register (FLAG), and Filter Clock > > > Prescaler (PSC) have common usage patterns. Wrap up such usage into > > > dedicated functions to improve code clarity. ... > > > +static void quad8_preset_register_set(struct quad8 *const priv, const size_t id, > > > + const unsigned long preset) > > > +{ > > > + struct channel_reg __iomem *const chan = priv->reg->channel + id; > > > + int i; > > > + > > > + /* Reset Byte Pointer */ > > > + iowrite8(SELECT_RLD | RESET_BP, &chan->control); > > > + > > > + /* Set Preset Register */ > > > + for (i = 0; i < 3; i++) > > > + iowrite8(preset >> (8 * i), &chan->data); > > > +} > > > > May we add generic __iowrite8_copy() / __ioread8_copy() instead? > > > > It seems that even current __ioread32_copy() and __iowrite32_copy() has to > > be amended to support IO. > Sure, I would use __iowrite8_copy() / __ioread8_copy() for these > situations if it were available. If needed, you may always introduce ones. > Is something equivalent available for the regmap API? I'm planning to > migrate this driver to the regmap API soon after this patch series is > merged, so the *_copy() calls would need to migrated as well. Yes. It's regmap bulk operations. -- With Best Regards, Andy Shevchenko