Re: drivers/pinctrl/cirrus/pinctrl-lochnagar.c:52:53: error: pasting "LOCHNAGAR1_" and "(" does not give a valid preprocessing token

From: Linus Walleij
Date: Wed Nov 15 2023 - 04:57:45 EST


On Wed, Nov 15, 2023 at 10:37 AM Charles Keepax
<ckeepax@xxxxxxxxxxxxxxxxxxxxx> wrote:
> On Tue, Nov 14, 2023 at 02:40:38PM +0100, Linus Walleij wrote:
> > On Tue, Nov 7, 2023 at 6:19 AM kernel test robot <lkp@xxxxxxxxx> wrote:
> >
> > > >> drivers/pinctrl/cirrus/pinctrl-lochnagar.c:52:53: error: pasting "LOCHNAGAR1_" and "(" does not give a valid preprocessing token
> > > 52 | .name = NAME, .type = LN_PTYPE_GPIO, .reg = LOCHNAGAR##REV##_##REG, \
> > > | ^~~~~~~~~
> > > drivers/pinctrl/cirrus/pinctrl-lochnagar.c:67:9: note: in expansion of macro 'LN_PIN_GPIO'
> > > 67 | LN_PIN_GPIO(1, ID, NAME, REG, SHIFT, INVERT)
> > > | ^~~~~~~~~~~
> >
> > I looked a bit at this, can this be due to the fact that the macros use defines
> > from include/dt-bindings/...* and that MIPS does not use these includes
> > somehow, such as not using the same dtc compiler?
> >
> > Rob, do you know the story of how MIPS interoperates with <dt-bindings/*>?
> >
>
> Is that what is going on here? I though this was the long standing
> problem that MIPS has some global define for RST so the macro that
> string pastes that in, no longer pastes in the letters RST but some
> value instead.

That sounds plausible :D

> It has somewhat been on my radar to fix at some point, but I have
> in general been a little unsure how to proceed. RST feels like
> a mega over generic macro name to be exporting, so in some ways
> feels like fixing that would be nice. On the other side, renaming
> the register on the Lochnagar side would be very easy, although it
> would mean the register naming no longer matches all the hardware
> documentation which would be kinda lame.

If MIPS breaks things like this because of weird defines I would say
it is actually fair to just quirk it in Kconfig with a comment:

# MIPS occupy very generic defines
depends on !MIPS

Yours,
Linus Walleij