RE: [PATCH 3/3] [OMAP:I2C]OMAP3430 Silicon Errata 1.153

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

 



Hello Moiz,

On Mon, 10 Aug 2009, Sonasath, Moiz wrote:

> I did some analysis and testing of the code with threshold set to zero, 
> we cannot make the threshold zero with the present code in place, as 
> this would hamper the functionality of the draining feature because in 
> this case the XDR interrupt will not be triggered.
> 
> XDR-> when TX FIFO level equal/below the XTRSH AND TXSTAT is less than XTRSH
> 
> XRDY-> when TX FIFO level equal/below the XTRSH AND TXSTAT is 
> equal/greater than XTRSH
> 
> This in turn causes XRDY to be triggered always (even when there are 
> only last few bytes left to be transmitted) and therefore the code tries 
> to transmit data when the upper application is out of data.

Thanks for looking into this.  How about just changing

	if (dev->fifo_size) {
		if (stat & OMAP_I2C_STAT_XRDY)
			num_bytes = dev->fifo_size;
		else    /* read TXSTAT on XDR interrupt */
			num_bytes = omap_i2c_read_reg(dev,
					    OMAP_I2C_BUFSTAT_REG)
					    & 0x3F;
	}

to something like:

	if (dev->fifo_size) {   /* 2430 and beyond */
		if (stat & OMAP_I2C_STAT_XRDY)
			num_bytes = clamp(dev->buf_len, 1, dev->fifo_size);
	        else
		        num_bytes = omap_i2c_read_reg(dev,							
                                         OMAP_I2C_BUFSTAT_REG)
		 			 & 0x3F;
        }

in the ISR?

The transmit and receive FIFO thresholds should also be split, so the 
short transmit FIFO threshold doesn't affect the receive FIFO threshold.

> I checked with the I2C IP team, yes the errata applies to the I2C block 
> on OMAP2430 and OMAP2420. I will send out a patch to include OMAP24XX 
> for this erratum.

Great, thanks for checking this.  Might as well combine it with the same 
patch and make it a revision test based on the I2C controller revision 
reg.


- Paul
--
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

[Index of Archives]     [Linux GPIO]     [Linux SPI]     [Linux Hardward Monitoring]     [LM Sensors]     [Linux USB Devel]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux