spi: Remove code duplication in spi_add_device*()
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Fri, 14 Jul 2023 09:17:45 +0000 (12:17 +0300)
committerMark Brown <broonie@kernel.org>
Fri, 14 Jul 2023 13:44:36 +0000 (14:44 +0100)
The commit 0c79378c0199 ("spi: add ancillary device support")
added a dozen of duplicating lines of code. We may move them
to the __spi_add_device(). Note, that the code may be called
under the mutex.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.com>
Link: https://lore.kernel.org/r/20230714091748.89681-2-andriy.shevchenko@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/spi/spi.c

index ae2693b..8e70f41 100644 (file)
@@ -631,6 +631,16 @@ static int __spi_add_device(struct spi_device *spi)
        struct device *dev = ctlr->dev.parent;
        int status;
 
+       /* Chipselects are numbered 0..max; validate. */
+       if (spi_get_chipselect(spi, 0) >= ctlr->num_chipselect) {
+               dev_err(dev, "cs%d >= max %d\n", spi_get_chipselect(spi, 0),
+                       ctlr->num_chipselect);
+               return -EINVAL;
+       }
+
+       /* Set the bus ID string */
+       spi_dev_set_name(spi);
+
        /*
         * We need to make sure there's no other device with this
         * chipselect **BEFORE** we call setup(), else we'll trash
@@ -689,19 +699,8 @@ static int __spi_add_device(struct spi_device *spi)
 int spi_add_device(struct spi_device *spi)
 {
        struct spi_controller *ctlr = spi->controller;
-       struct device *dev = ctlr->dev.parent;
        int status;
 
-       /* Chipselects are numbered 0..max; validate. */
-       if (spi_get_chipselect(spi, 0) >= ctlr->num_chipselect) {
-               dev_err(dev, "cs%d >= max %d\n", spi_get_chipselect(spi, 0),
-                       ctlr->num_chipselect);
-               return -EINVAL;
-       }
-
-       /* Set the bus ID string */
-       spi_dev_set_name(spi);
-
        mutex_lock(&ctlr->add_lock);
        status = __spi_add_device(spi);
        mutex_unlock(&ctlr->add_lock);
@@ -712,17 +711,6 @@ EXPORT_SYMBOL_GPL(spi_add_device);
 static int spi_add_device_locked(struct spi_device *spi)
 {
        struct spi_controller *ctlr = spi->controller;
-       struct device *dev = ctlr->dev.parent;
-
-       /* Chipselects are numbered 0..max; validate. */
-       if (spi_get_chipselect(spi, 0) >= ctlr->num_chipselect) {
-               dev_err(dev, "cs%d >= max %d\n", spi_get_chipselect(spi, 0),
-                       ctlr->num_chipselect);
-               return -EINVAL;
-       }
-
-       /* Set the bus ID string */
-       spi_dev_set_name(spi);
 
        WARN_ON(!mutex_is_locked(&ctlr->add_lock));
        return __spi_add_device(spi);