RE: [PATCH 6/8] i2c: img-scb: remove start bit detected status after handling

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




> -----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 stable" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]