summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJae Hyun Yoo <jae.hyun.yoo@intel.com>2019-11-09 02:57:27 +0300
committerJae Hyun Yoo <jae.hyun.yoo@linux.intel.com>2021-11-05 10:22:09 +0300
commitdad0218116b4c007f9d1ae70aecafbd1e112cf0f (patch)
tree13135482c821c5ec634063e8aa0e4228850166eb
parent138d8f3770f37de003b13ae80a9c8bd6872df87a (diff)
downloadlinux-dad0218116b4c007f9d1ae70aecafbd1e112cf0f.tar.xz
i2c: aspeed: filter garbage interrupts out
AST2600 makes a garbage interrupt which is decribed as 'reserved' in datasheet so filter them out. Signed-off-by: Jae Hyun Yoo <jae.hyun.yoo@intel.com>
-rw-r--r--drivers/i2c/busses/i2c-aspeed.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/i2c/busses/i2c-aspeed.c b/drivers/i2c/busses/i2c-aspeed.c
index eeb622715527..f4b82e457260 100644
--- a/drivers/i2c/busses/i2c-aspeed.c
+++ b/drivers/i2c/busses/i2c-aspeed.c
@@ -88,7 +88,11 @@
* status bits.
*/
#define ASPEED_I2CD_INTR_RECV_MASK 0xf000ffff
+#if defined(CONFIG_MACH_ASPEED_G6)
+#define ASPEED_I2CD_INTR_SLAVE_ADDR_RECEIVED_PENDING BIT(29)
+#else
#define ASPEED_I2CD_INTR_SLAVE_ADDR_RECEIVED_PENDING BIT(30)
+#endif
#define ASPEED_I2CD_INTR_SLAVE_INACTIVE_TIMEOUT BIT(15)
#define ASPEED_I2CD_INTR_SDA_DL_TIMEOUT BIT(14)
#define ASPEED_I2CD_INTR_BUS_RECOVER_DONE BIT(13)
@@ -119,6 +123,11 @@
ASPEED_I2CD_INTR_RX_DONE | \
ASPEED_I2CD_INTR_TX_NAK | \
ASPEED_I2CD_INTR_TX_ACK)
+#define ASPEED_I2CD_INTR_STATUS_MASK \
+ (ASPEED_I2CD_INTR_SLAVE_ADDR_RECEIVED_PENDING | \
+ ASPEED_I2CD_INTR_GCALL_ADDR | \
+ ASPEED_I2CD_INTR_SLAVE_MATCH | \
+ ASPEED_I2CD_INTR_ALL)
/* 0x14 : I2CD Command/Status Register */
#define ASPEED_I2CD_SCL_LINE_STS BIT(18)