]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
serial: max310x: fix compile errors if CONFIG_SPI_MASTER is disabled
authorHugo Villeneuve <hvilleneuve@dimonoff.com>
Thu, 21 May 2026 15:33:29 +0000 (11:33 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 22 May 2026 09:38:06 +0000 (11:38 +0200)
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@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202605121847.N9DVLNg2-lkp@intel.com/
Signed-off-by: Hugo Villeneuve <hvilleneuve@dimonoff.com>
Link: https://patch.msgid.link/20260521153333.2336642-1-hugo@hugovil.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/Kconfig
drivers/tty/serial/max310x.c

index f834e5d292fd76d8832994ed8abc926bd98bb53c..4accbfa75074c6f624aed784c8f3eb0f680d78eb 100644 (file)
@@ -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
index 9f423b3b4201d0db07bbd7b15934db36249e7620..bad5329a0c84c2870d46d38c976a5e213c4b0a1f 100644 (file)
@@ -16,6 +16,7 @@
 #include <linux/device.h>
 #include <linux/gpio/driver.h>
 #include <linux/i2c.h>
+#include <linux/kconfig.h>
 #include <linux/module.h>
 #include <linux/mod_devicetable.h>
 #include <linux/property.h>
@@ -1507,6 +1508,21 @@ static const struct of_device_id __maybe_unused max310x_dt_ids[] = {
 };
 MODULE_DEVICE_TABLE(of, max310x_dt_ids);
 
+static const char *max310x_regmap_name(u8 port_id)
+{
+       switch (port_id) {
+       case 0: return "port0";
+       case 1: return "port1";
+       case 2: return "port2";
+       case 3: return "port3";
+       default:
+               WARN_ON(true);
+               return NULL;
+       }
+}
+
+#if IS_ENABLED(CONFIG_SPI_MASTER)
+
 static struct regmap_config regcfg = {
        .reg_bits = 8,
        .val_bits = 8,
@@ -1522,20 +1538,6 @@ static struct regmap_config regcfg = {
        .max_raw_write = MAX310X_FIFO_SIZE,
 };
 
-static const char *max310x_regmap_name(u8 port_id)
-{
-       switch (port_id) {
-       case 0: return "port0";
-       case 1: return "port1";
-       case 2: return "port2";
-       case 3: return "port3";
-       default:
-               WARN_ON(true);
-               return NULL;
-       }
-}
-
-#ifdef CONFIG_SPI_MASTER
 static int max310x_spi_extended_reg_enable(struct device *dev, bool enable)
 {
        struct max310x_port *s = dev_get_drvdata(dev);
@@ -1606,7 +1608,8 @@ static struct spi_driver max310x_spi_driver = {
 };
 #endif
 
-#ifdef CONFIG_I2C
+#if IS_ENABLED(CONFIG_I2C)
+
 static int max310x_i2c_extended_reg_enable(struct device *dev, bool enable)
 {
        return 0;
@@ -1726,13 +1729,13 @@ static int __init max310x_uart_init(void)
        if (ret)
                return ret;
 
-#ifdef CONFIG_SPI_MASTER
+#if IS_ENABLED(CONFIG_SPI_MASTER)
        ret = spi_register_driver(&max310x_spi_driver);
        if (ret)
                goto err_spi_register;
 #endif
 
-#ifdef CONFIG_I2C
+#if IS_ENABLED(CONFIG_I2C)
        ret = i2c_add_driver(&max310x_i2c_driver);
        if (ret)
                goto err_i2c_register;
@@ -1740,12 +1743,13 @@ static int __init max310x_uart_init(void)
 
        return 0;
 
-#ifdef CONFIG_I2C
+#if IS_ENABLED(CONFIG_I2C)
 err_i2c_register:
-       spi_unregister_driver(&max310x_spi_driver);
 #endif
-
+#if IS_ENABLED(CONFIG_SPI_MASTER)
+       spi_unregister_driver(&max310x_spi_driver);
 err_spi_register:
+#endif
        uart_unregister_driver(&max310x_uart);
 
        return ret;
@@ -1754,11 +1758,11 @@ module_init(max310x_uart_init);
 
 static void __exit max310x_uart_exit(void)
 {
-#ifdef CONFIG_I2C
+#if IS_ENABLED(CONFIG_I2C)
        i2c_del_driver(&max310x_i2c_driver);
 #endif
 
-#ifdef CONFIG_SPI_MASTER
+#if IS_ENABLED(CONFIG_SPI_MASTER)
        spi_unregister_driver(&max310x_spi_driver);
 #endif