i2c: smbus: Don't filter out duplicate alerts
authorCorey Minyard <cminyard@mvista.com>
Thu, 21 Nov 2019 09:10:51 +0000 (10:10 +0100)
committerWolfram Sang <wsa@the-dreams.de>
Mon, 25 Nov 2019 16:13:34 +0000 (17:13 +0100)
Getting the same alert twice in a row is legal and normal,
especially on a fast device (like running in qemu).  Kind of
like interrupts.  So don't report duplicate alerts, and deliver
them normally.

[JD: Fixed subject]

Signed-off-by: Corey Minyard <cminyard@mvista.com>
Signed-off-by: Jean Delvare <jdelvare@suse.de>
Reviewed-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
drivers/i2c/i2c-smbus.c

index 03096f4..7e2f5d0 100644 (file)
@@ -66,7 +66,6 @@ static irqreturn_t smbus_alert(int irq, void *d)
 {
        struct i2c_smbus_alert *alert = d;
        struct i2c_client *ara;
-       unsigned short prev_addr = 0;   /* Not a valid address */
 
        ara = alert->ara;
 
@@ -90,18 +89,12 @@ static irqreturn_t smbus_alert(int irq, void *d)
                data.addr = status >> 1;
                data.type = I2C_PROTOCOL_SMBUS_ALERT;
 
-               if (data.addr == prev_addr) {
-                       dev_warn(&ara->dev, "Duplicate SMBALERT# from dev "
-                               "0x%02x, skipping\n", data.addr);
-                       break;
-               }
                dev_dbg(&ara->dev, "SMBALERT# from dev 0x%02x, flag %d\n",
                        data.addr, data.data);
 
                /* Notify driver for the device which issued the alert */
                device_for_each_child(&ara->adapter->dev, &data,
                                      smbus_do_alert);
-               prev_addr = data.addr;
        }
 
        return IRQ_HANDLED;