Re: [PATCH v3] serial: max310x: fix compile errors if CONFIG_SPI_MASTER is disabled

From: Hugo Villeneuve

Date: Tue May 26 2026 - 09:42:16 EST


On Mon, 25 May 2026 10:43:40 -0700
Randy Dunlap <rdunlap@xxxxxxxxxxxxx> wrote:

>
>
> On 5/21/26 8:33 AM, Hugo Villeneuve wrote:
> > From: Hugo Villeneuve <hvilleneuve@xxxxxxxxxxxx>
> >
> > Since commit 20ffe4b3330a8 ("serial: max310x: allow driver to be built with
> > SPI or I2C"), if I2C is enabled and SPI_MASTER is disabled, we have these
> > compile errors:
> >
> > drivers/tty/serial/max310x.c: In function 'max310x_uart_init':
> > drivers/tty/serial/max310x.c: error: 'max310x_spi_driver' undeclared...
> > drivers/tty/serial/max310x.c: In function ‘max310x_uart_init’:
> > drivers/tty/serial/max310x.c: error: label ‘err_spi_register’
> > defined but not used...
> > drivers/tty/serial/max310x.c: error: ‘regcfg’ defined but not used
> >
> > Fix by properly encapsulating i2c/spi code/variables in their respective
> > context with IS_ENABLED() macros for CONFIG_I2C and CONFIG_SPI_MASTER.
> >
> > Also fix link failure with SERIAL_MAX310X=y and I2C=m by modifying Kconfig
> > depends.
> >
> > Fixes: 20ffe4b3330a8 ("serial: max310x: allow driver to be built with SPI or I2C")
> > Reported-by: kernel test robot <lkp@xxxxxxxxx>
> > Closes: https://lore.kernel.org/oe-kbuild-all/202605121847.N9DVLNg2-lkp@xxxxxxxxx/
> > Signed-off-by: Hugo Villeneuve <hvilleneuve@xxxxxxxxxxxx>
> > ---
> > note: not Cc-ing stable as the commit is still in tty-next, and even if the
> > errors originate from original commit that added I2C support, they were not
> > trigerred because the driver could not be selected/compiled if
> > CONFIG_SPI_MASTER was disabled.
> >
> > Changes for v3:
> > - Fix link failure with SERIAL_MAX310X=y and I2C=m (Arnd Bergmann)
> >
> > Changes for v2:
> > - replace #ifdef with #if IS_ENABLED() to suppoirt both built-in and modules
> > options
> > ---
> > drivers/tty/serial/Kconfig | 2 +-
> > drivers/tty/serial/max310x.c | 48 +++++++++++++++++++-----------------
> > 2 files changed, 27 insertions(+), 23 deletions(-)
> >
> > diff --git a/drivers/tty/serial/Kconfig b/drivers/tty/serial/Kconfig
> > index f834e5d292fd7..4accbfa75074c 100644
> > --- a/drivers/tty/serial/Kconfig
> > +++ b/drivers/tty/serial/Kconfig
> > @@ -321,7 +321,7 @@ config SERIAL_MAX3100
> >
> > config SERIAL_MAX310X
> > tristate "MAX310X support"
> > - depends on SPI_MASTER || I2C
> > + depends on (SPI_MASTER && !I2C) || I2C
> > select SERIAL_CORE
> > select REGMAP_SPI if SPI_MASTER
> > select REGMAP_I2C if I2C
>
> Other than preferring Arnd's Kconfig dependencies (easier to
> read/understand IMO), this is all good.
> Thanks.

Hi Randy,
thank you for testing this.

I personnaly think both syntaxes are confusing :)

I have a long term goal of converting this driver to core and
I2C/SPI parts eventually, like I did for the sc16is7xx...

Hugo.


>
> Acked-by: Randy Dunlap <rdunlap@xxxxxxxxxxxxx>
> Tested-by: Randy Dunlap <rdunlap@xxxxxxxxxxxxx> # build-tested
>
> --
> ~Randy