Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bd16c82f authored by Shubhrajyoti D's avatar Shubhrajyoti D Committed by Wolfram Sang
Browse files

I2C: OMAP: Fix the interrupt clearing in OMAP4



On OMAP4 we were writing 1 to IRQENABLE_CLR which cleared only
the arbitration lost interrupt. The patch intends to fix the same by writing 0
to the IE register clearing all interrupts.

This is based on the work done by Vikram Pandita <vikram.pandita@ti.com>.

The  changes from the original patch ...
-  Does not use the IRQENABLE_CLR register to clear as it is not mentioned
  to be legacy register IRQENABLE_CLR helps in  atomically
  setting/clearing specific interrupts, instead use the OMAP_I2C_IE_REG as we
  are clearing all interrupts.

Cc: Vikram Pandita <vikram.pandita@ti.com>
Reviewed-by: default avatarKevin Hilman <khilman@ti.com>
Signed-off-by: default avatarShubhrajyoti D <shubhrajyoti@ti.com>
Signed-off-by: default avatarWolfram Sang <w.sang@pengutronix.de>
parent 24740516
Loading
Loading
Loading
Loading
+2 −4
Original line number Diff line number Diff line
@@ -1127,9 +1127,7 @@ static int omap_i2c_runtime_suspend(struct device *dev)
	u16 iv;

	_dev->iestate = omap_i2c_read_reg(_dev, OMAP_I2C_IE_REG);
	if (_dev->dtrev == OMAP_I2C_IP_VERSION_2)
		omap_i2c_write_reg(_dev, OMAP_I2C_IP_V2_IRQENABLE_CLR, 1);
	else

	omap_i2c_write_reg(_dev, OMAP_I2C_IE_REG, 0);

	if (_dev->rev < OMAP_I2C_OMAP1_REV_2) {