> -----Original Message----- > From: James Hogan > Sent: 28 July 2015 14:53 > To: Sifan Naeem; Wolfram Sang; linux-i2c@xxxxxxxxxxxxxxx > Cc: Stable kernel (v3.19+) > Subject: Re: [PATCH 6/8] i2c: img-scb: remove start bit detected status after > handling > > On 27/07/15 12:47, Sifan Naeem wrote: > > Remove start bit detected status after it is handled, doing so will > > prevent this condition being hit for every interrupt on a particular > > transfer. > > > > Fixes: 27bce4 ("i2c: img-scb: Add Imagination Technologies I2C SCB > > driver") > > Signed-off-by: Sifan Naeem <sifan.naeem@xxxxxxxxxx> > > Cc: Stable kernel (v3.19+) <stable@xxxxxxxxxxxxxxx> > > --- > > drivers/i2c/busses/i2c-img-scb.c | 16 ++++++++++++---- > > 1 file changed, 12 insertions(+), 4 deletions(-) > > > > diff --git a/drivers/i2c/busses/i2c-img-scb.c > > b/drivers/i2c/busses/i2c-img-scb.c > > index 653f9bd..341130e 100644 > > --- a/drivers/i2c/busses/i2c-img-scb.c > > +++ b/drivers/i2c/busses/i2c-img-scb.c > > @@ -871,10 +871,18 @@ static unsigned int img_i2c_auto(struct img_i2c > *i2c, > > } > > > > /* Enable transaction halt on start bit */ > > - if (!i2c->last_msg && i2c->line_status & LINESTAT_START_BIT_DET) { > > i2c->line_status accumulates the line status bits that have been seen > with each interrupt. If we're only interested in that bit from the current > interrupt, should it just be referring to line_status (the argument to > img_i2c_auto) instead of i2c->line_status? > Yes, I can't think of why we cannot use line_status from the argument. Thanks, Sifan > Cheers > James > > > - img_i2c_transaction_halt(i2c, true); > > - /* we're no longer interested in the slave event */ > > - i2c->int_enable &= ~INT_SLAVE_EVENT; > > + if (i2c->line_status & LINESTAT_START_BIT_DET) { > > + if (!i2c->last_msg) { > > + img_i2c_transaction_halt(i2c, true); > > + /* we're no longer interested in the slave event */ > > + i2c->int_enable &= ~INT_SLAVE_EVENT; > > + } > > + /* > > + * Remove start bit detected status after it is handled, > > + * doing so will prevent this condition being hit for > > + * every interrupt on a particular transfer. > > + */ > > + i2c->line_status &= ~LINESTAT_START_BIT_DET; > > } > > > > mod_timer(&i2c->check_timer, jiffies + msecs_to_jiffies(1)); > > -- To unsubscribe from this list: send the line "unsubscribe linux-i2c" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html