diff options
-rw-r--r-- | drivers/i2c/busses/i2c-i801.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/i2c/busses/i2c-i801.c b/drivers/i2c/busses/i2c-i801.c index 1d042af4374d..c0c0cac9950c 100644 --- a/drivers/i2c/busses/i2c-i801.c +++ b/drivers/i2c/busses/i2c-i801.c | |||
@@ -118,7 +118,6 @@ | |||
118 | #define SMBSLVSTS(p) (16 + (p)->smba) /* ICH3 and later */ | 118 | #define SMBSLVSTS(p) (16 + (p)->smba) /* ICH3 and later */ |
119 | #define SMBSLVCMD(p) (17 + (p)->smba) /* ICH3 and later */ | 119 | #define SMBSLVCMD(p) (17 + (p)->smba) /* ICH3 and later */ |
120 | #define SMBNTFDADD(p) (20 + (p)->smba) /* ICH3 and later */ | 120 | #define SMBNTFDADD(p) (20 + (p)->smba) /* ICH3 and later */ |
121 | #define SMBNTFDDAT(p) (22 + (p)->smba) /* ICH3 and later */ | ||
122 | 121 | ||
123 | /* PCI Address Constants */ | 122 | /* PCI Address Constants */ |
124 | #define SMBBAR 4 | 123 | #define SMBBAR 4 |
@@ -581,12 +580,15 @@ static void i801_isr_byte_done(struct i801_priv *priv) | |||
581 | static irqreturn_t i801_host_notify_isr(struct i801_priv *priv) | 580 | static irqreturn_t i801_host_notify_isr(struct i801_priv *priv) |
582 | { | 581 | { |
583 | unsigned short addr; | 582 | unsigned short addr; |
584 | unsigned int data; | ||
585 | 583 | ||
586 | addr = inb_p(SMBNTFDADD(priv)) >> 1; | 584 | addr = inb_p(SMBNTFDADD(priv)) >> 1; |
587 | data = inw_p(SMBNTFDDAT(priv)); | ||
588 | 585 | ||
589 | i2c_handle_smbus_host_notify(priv->host_notify, addr, data); | 586 | /* |
587 | * With the tested platforms, reading SMBNTFDDAT (22 + (p)->smba) | ||
588 | * always returns 0 and is safe to read. | ||
589 | * We just use 0 given we have no use of the data right now. | ||
590 | */ | ||
591 | i2c_handle_smbus_host_notify(priv->host_notify, addr, 0); | ||
590 | 592 | ||
591 | /* clear Host Notify bit and return */ | 593 | /* clear Host Notify bit and return */ |
592 | outb_p(SMBSLVSTS_HST_NTFY_STS, SMBSLVSTS(priv)); | 594 | outb_p(SMBSLVSTS_HST_NTFY_STS, SMBSLVSTS(priv)); |