On Monday, February 11, 2019 11:25:26 AM CET Wolfram Sang wrote: > On Mon, Feb 11, 2019 at 09:31:20AM +0100, Federico Vaga wrote: > > This driver assumes that an interrupt line is always available for > > the I2C master. This is not always the case and this patch adds support > > for a polling version. > > > > Report from Andrew Lunn: > > I did some timing tests for this. On my box, we request a udelay of > > 80uS. The kernel actually delays for about 79uS. We then spin in > > ocores_wait() for an additional 10-11uS, which is 3 to 4 iterations. > > > > There are actually 9 bits on the wire, not 8, since there is an > > ACK/NACK bit after the actual data transfer. So i changed the delay to > > (9 * 1000) / i2c->bus_clock_khz. That resulted in ocores_wait() mostly > > not looping at all. But for reading an 4K AT24 EEPROM, it increased > > the read time by 10ms, from 424ms to 434ms. So we should probably keep > > with 8. > > > > Signed-off-by: Federico Vaga <federico.vaga@xxxxxxx> > > Tested-by: Andrew Lunn <andrew@xxxxxxx> > > Fixed these checkpatch warnings: > > WARNING: 'transfered' may be misspelled - perhaps 'transferred'? > #111: FILE: drivers/i2c/busses/i2c-ocores.c:306: > + * We wait for the data to be transfered (8bit), > > CHECK: Please don't use multiple blank lines > #129: FILE: drivers/i2c/busses/i2c-ocores.c:324: > + > + > > WARNING: 'transfered' may be misspelled - perhaps 'transferred'? > #154: FILE: drivers/i2c/busses/i2c-ocores.c:349: > + break; /* all messages have been transfered */ > > and applied to for-next, thanks! I will resend this patch as v5 to add the fix suggested by Peter Rosin