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!
Attachment:
signature.asc
Description: PGP signature