On 9/03/21 11:10 am, Chris Packham wrote: > > On 8/03/21 5:59 pm, Guenter Roeck wrote: >> On 3/7/21 8:37 PM, Chris Packham wrote: >> [ ... ] >>>> That's from -ENXIO which is used in only one place in i2c-mpc.c. I'll >>>> enable some debug and see what we get. >>> For the errant readings there was nothing abnormal reported by the >>> driver. >>> >>> For the "No such device or address" I saw "mpc-i2c ffe119000.i2c: No >>> RXAK" which matches up with the -ENXIO return. >>> >> Id suggest to check the time until not busy and stop in mpc_xfer(). >> Those hot loops are unusual, and may well mess up the code especially >> if preempt is enabled. > Reworking those loops seems to have had a positive result. I'll do a > bit more testing and hopefully get a patch out later today. D'oh my "fix" was to replace the cond_reshed() with msleep(10) which did "fix" the problem but made every i2c read slow. I didn't notice when testing just the lm81 but as soon as I booted the system with more i2c devices I saw stupidly slow boot times. >> Also, are you using interrupts or polling in >> your system ? The interrupt handler looks a bit odd, with "Read again >> to allow register to stabilise". >> >> Do you have fsl,timeout set in the devicetree properties and, if so, >> have you played with it ? >> >> Other than that, the only other real idea I have would be to monitor >> the i2c bus. >> >> Guenter