i2c: smbus: Don't filter out duplicate alerts
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>
This commit is contained in:
parent
790591f41e
commit
dca0dd28fa
|
@ -66,7 +66,6 @@ static irqreturn_t smbus_alert(int irq, void *d)
|
||||||
{
|
{
|
||||||
struct i2c_smbus_alert *alert = d;
|
struct i2c_smbus_alert *alert = d;
|
||||||
struct i2c_client *ara;
|
struct i2c_client *ara;
|
||||||
unsigned short prev_addr = 0; /* Not a valid address */
|
|
||||||
|
|
||||||
ara = alert->ara;
|
ara = alert->ara;
|
||||||
|
|
||||||
|
@ -90,18 +89,12 @@ static irqreturn_t smbus_alert(int irq, void *d)
|
||||||
data.addr = status >> 1;
|
data.addr = status >> 1;
|
||||||
data.type = I2C_PROTOCOL_SMBUS_ALERT;
|
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",
|
dev_dbg(&ara->dev, "SMBALERT# from dev 0x%02x, flag %d\n",
|
||||||
data.addr, data.data);
|
data.addr, data.data);
|
||||||
|
|
||||||
/* Notify driver for the device which issued the alert */
|
/* Notify driver for the device which issued the alert */
|
||||||
device_for_each_child(&ara->adapter->dev, &data,
|
device_for_each_child(&ara->adapter->dev, &data,
|
||||||
smbus_do_alert);
|
smbus_do_alert);
|
||||||
prev_addr = data.addr;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return IRQ_HANDLED;
|
return IRQ_HANDLED;
|
||||||
|
|
Loading…
Reference in New Issue