pinctrl: mcp23s08: Deduplicate IRQ chip filling
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Tue, 7 Apr 2020 17:38:42 +0000 (20:38 +0300)
committerLinus Walleij <linus.walleij@linaro.org>
Thu, 16 Apr 2020 12:21:23 +0000 (14:21 +0200)
In both cases, SPI and I²C, IRQ chip is filled in the same way.
Deduplicate this by moving common part to mcp23s08_probe_one().

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/r/20200407173849.43628-2-andriy.shevchenko@linux.intel.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/pinctrl/pinctrl-mcp23s08.c

index 2c8b8c45b70e6f3f72ea0d9d28e1b49ba81fe8bf..e05219d3331fad1c85b7329ae97cb28baa903a59 100644 (file)
@@ -669,7 +669,14 @@ static int mcp23s08_probe_one(struct mcp23s08 *mcp, struct device *dev,
 
        mcp->dev = dev;
        mcp->addr = addr;
+
        mcp->irq_active_high = false;
+       mcp->irq_chip.name = dev_name(dev);
+       mcp->irq_chip.irq_mask = mcp23s08_irq_mask;
+       mcp->irq_chip.irq_unmask = mcp23s08_irq_unmask;
+       mcp->irq_chip.irq_set_type = mcp23s08_irq_set_type;
+       mcp->irq_chip.irq_bus_lock = mcp23s08_irq_bus_lock;
+       mcp->irq_chip.irq_bus_sync_unlock = mcp23s08_irq_bus_unlock;
 
        mcp->chip.direction_input = mcp23s08_direction_input;
        mcp->chip.get = mcp23s08_get;
@@ -921,12 +928,6 @@ static int mcp230xx_probe(struct i2c_client *client,
                return -ENOMEM;
 
        mcp->irq = client->irq;
-       mcp->irq_chip.name = dev_name(&client->dev);
-       mcp->irq_chip.irq_mask = mcp23s08_irq_mask;
-       mcp->irq_chip.irq_unmask = mcp23s08_irq_unmask;
-       mcp->irq_chip.irq_set_type = mcp23s08_irq_set_type;
-       mcp->irq_chip.irq_bus_lock = mcp23s08_irq_bus_lock;
-       mcp->irq_chip.irq_bus_sync_unlock = mcp23s08_irq_bus_unlock;
 
        status = mcp23s08_probe_one(mcp, &client->dev, client, client->addr,
                                    id->driver_data, -1, 0);
@@ -1029,13 +1030,6 @@ static int mcp23s08_probe(struct spi_device *spi)
                chips--;
                data->mcp[addr] = &data->chip[chips];
                data->mcp[addr]->irq = spi->irq;
-               data->mcp[addr]->irq_chip.name = dev_name(&spi->dev);
-               data->mcp[addr]->irq_chip.irq_mask = mcp23s08_irq_mask;
-               data->mcp[addr]->irq_chip.irq_unmask = mcp23s08_irq_unmask;
-               data->mcp[addr]->irq_chip.irq_set_type = mcp23s08_irq_set_type;
-               data->mcp[addr]->irq_chip.irq_bus_lock = mcp23s08_irq_bus_lock;
-               data->mcp[addr]->irq_chip.irq_bus_sync_unlock =
-                       mcp23s08_irq_bus_unlock;
                status = mcp23s08_probe_one(data->mcp[addr], &spi->dev, spi,
                                            0x40 | (addr << 1), type,
                                            -1, addr);