On Mon, Mar 20, 2023 at 05:36:17PM +0200, Andy Shevchenko wrote: > 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 After reading through the implementation for these functions I realized they are actually doing something different than what's happening here. The 104-QUAD-8 device exposes the 24-bit register by consecutive 8-bit I/O operations on the same address; however, the iomap_copy and regmap bulk functions operate on different addresses. I'm not sure if there really is a way to make the 104-QUAD-8 operation more generic for other drivers because it configures the current byte pointer through a separate register from the data register (all of this feel rather device specific), so I suspect keeping this function local to 104-quad-8 is best for now. William Breathitt Gray
Attachment:
signature.asc
Description: PGP signature