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

Commit 079d8af2 authored by Felipe Balbi's avatar Felipe Balbi Committed by Wolfram Sang
Browse files

i2c: omap: bus: add a receiver flag



that way we can ignore TX IRQs while in receiver
mode and ignore RX IRQs while in transmitter mode.

Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
[Remove unnecessary braces]
Signed-off-by: default avatarShubhrajyoti D <shubhrajyoti@ti.com>
Signed-off-by: default avatarWolfram Sang <w.sang@pengutronix.de>
parent ac79e4b2
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -199,6 +199,7 @@ struct omap_i2c_dev {
						 */
	u8			rev;
	unsigned		b_hw:1;		/* bad h/w fixes */
	unsigned		receiver:1;	/* true when we're in receiver mode */
	u16			iestate;	/* Saved interrupt register */
	u16			pscstate;
	u16			scllstate;
@@ -492,6 +493,7 @@ static int omap_i2c_xfer_msg(struct i2c_adapter *adap,

	INIT_COMPLETION(dev->cmd_complete);
	dev->cmd_err = 0;
	dev->receiver = !!(msg->flags & I2C_M_RD);

	w = OMAP_I2C_CON_EN | OMAP_I2C_CON_MST | OMAP_I2C_CON_STT;

@@ -837,6 +839,12 @@ omap_i2c_isr(int this_irq, void *dev_id)
		stat = omap_i2c_read_reg(dev, OMAP_I2C_STAT_REG);
		stat &= bits;

		/* If we're in receiver mode, ignore XDR/XRDY */
		if (dev->receiver)
			stat &= ~(OMAP_I2C_STAT_XDR | OMAP_I2C_STAT_XRDY);
		else
			stat &= ~(OMAP_I2C_STAT_RDR | OMAP_I2C_STAT_RRDY);

		if (!stat) {
			/* my work here is done */
			return IRQ_HANDLED;