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

From: Randy Dunlap

Date: Tue May 26 2026 - 12:21:19 EST




On 5/26/26 6:34 AM, Hugo Villeneuve wrote:
> 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...

Yes, I've noticed that some similar drivers are actually 2 drivers.

For the Kconfig, another option is:

depends on SPI_MASTER || I2C
depends on I2C if I2C # limits this config to m if I2C=m

(not tested :)
but it's not necessarily better, just different.

--
~Randy