sc16is7xx: Always use falling edge IRQ
authorDaniel Mack <daniel@zonque.org>
Thu, 21 May 2020 09:11:49 +0000 (11:11 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 22 May 2020 09:04:23 +0000 (11:04 +0200)
The driver currently only uses IRQF_TRIGGER_FALLING if the probing
happened without a device-tree setup. The device however will always
generate falling edges on its IRQ line, so let's use that flag in
all cases.

Signed-off-by: Daniel Mack <daniel@zonque.org>
Link: https://lore.kernel.org/r/20200521091152.404404-4-daniel@zonque.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/sc16is7xx.c

index 06e8071..71a0b28 100644 (file)
@@ -1176,7 +1176,7 @@ static int sc16is7xx_gpio_direction_output(struct gpio_chip *chip,
 
 static int sc16is7xx_probe(struct device *dev,
                           const struct sc16is7xx_devtype *devtype,
-                          struct regmap *regmap, int irq, unsigned long flags)
+                          struct regmap *regmap, int irq)
 {
        struct sched_param sched_param = { .sched_priority = MAX_RT_PRIO / 2 };
        unsigned long freq = 0, *pfreq = dev_get_platdata(dev);
@@ -1304,7 +1304,7 @@ static int sc16is7xx_probe(struct device *dev,
 
        /* Setup interrupt */
        ret = devm_request_irq(dev, irq, sc16is7xx_irq,
-                              flags, dev_name(dev), s);
+                              IRQF_TRIGGER_FALLING, dev_name(dev), s);
        if (!ret)
                return 0;
 
@@ -1378,7 +1378,6 @@ static struct regmap_config regcfg = {
 static int sc16is7xx_spi_probe(struct spi_device *spi)
 {
        const struct sc16is7xx_devtype *devtype;
-       unsigned long flags = 0;
        struct regmap *regmap;
        int ret;
 
@@ -1399,14 +1398,13 @@ static int sc16is7xx_spi_probe(struct spi_device *spi)
                const struct spi_device_id *id_entry = spi_get_device_id(spi);
 
                devtype = (struct sc16is7xx_devtype *)id_entry->driver_data;
-               flags = IRQF_TRIGGER_FALLING;
        }
 
        regcfg.max_register = (0xf << SC16IS7XX_REG_SHIFT) |
                              (devtype->nr_uart - 1);
        regmap = devm_regmap_init_spi(spi, &regcfg);
 
-       return sc16is7xx_probe(&spi->dev, devtype, regmap, spi->irq, flags);
+       return sc16is7xx_probe(&spi->dev, devtype, regmap, spi->irq);
 }
 
 static int sc16is7xx_spi_remove(struct spi_device *spi)
@@ -1445,7 +1443,6 @@ static int sc16is7xx_i2c_probe(struct i2c_client *i2c,
                               const struct i2c_device_id *id)
 {
        const struct sc16is7xx_devtype *devtype;
-       unsigned long flags = 0;
        struct regmap *regmap;
 
        if (i2c->dev.of_node) {
@@ -1454,14 +1451,13 @@ static int sc16is7xx_i2c_probe(struct i2c_client *i2c,
                        return -ENODEV;
        } else {
                devtype = (struct sc16is7xx_devtype *)id->driver_data;
-               flags = IRQF_TRIGGER_FALLING;
        }
 
        regcfg.max_register = (0xf << SC16IS7XX_REG_SHIFT) |
                              (devtype->nr_uart - 1);
        regmap = devm_regmap_init_i2c(i2c, &regcfg);
 
-       return sc16is7xx_probe(&i2c->dev, devtype, regmap, i2c->irq, flags);
+       return sc16is7xx_probe(&i2c->dev, devtype, regmap, i2c->irq);
 }
 
 static int sc16is7xx_i2c_remove(struct i2c_client *client)