Re: [PATCH v2 2/3] counter: 104-quad-8: Refactor to buffer states for CMR, IOR, and IDR

William Breathitt Gray
2023-03-24T13:26:35Z

[-- Attachment #1: Type: text/plain, Size: 1490 bytes --]

On Fri, Mar 24, 2023 at 01:50:07PM +0200, Andy Shevchenko wrote:
> On Fri, Mar 24, 2023 at 01:48:43PM +0200, Andy Shevchenko wrote:
> > On Thu, Mar 23, 2023 at 05:25:28PM -0400, William Breathitt Gray wrote:
>
> ...
>
> > > +static void quad8_control_register_update(struct quad8 *const priv, u8 *const buf,
> > > + const size_t channel, const u8 val, const u8 field)
> > > +{
> > > + u8p_replace_bits(&buf[channel], val, field);
> > > + iowrite8(buf[channel], &priv->reg->channel[channel].control);
> > > +}
> >
> > How did you compile this?
> > Due to nature of *_replace_bits() this may only be a macro.
> >
> > That's what LKP is telling about I think.
>
> Ah, no, that's because the last parameter is not constant in the last patch in
> the series.
>
> --
> With Best Regards,
> Andy Shevchenko

I'm having trouble cross-compiling for riscv, but I'm unable to recreate
the build error when I compile for x86_64. However, I'd like to
understand this error so I can fix it properly.

Is the problem here due to the "const u8 field" parameter? Instead of a
constant variable, does this need to be a constant literal value for
u8p_replace_bits()? I don't think that parameter changed in the last
patch of the series, so why is the build error occurring for the last
patch and not this penultimate patch here? Would qualifying the
quad8_control_register_update() function with "__always_inline" resolve
this issue?

William Breathitt Gray

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]