I2C slave addr:0x3a not connected

Hi,

Can anybody help me understand why I am getting this text repeated in my console window :-

[16354.655300] qup_i2c qup_i2c.0: QUP: I2C status flags :0x1300c8, irq:187
[16354.661405] qup_i2c qup_i2c.0: I2C slave addr:0x3a not connected
[16354.905232] qup_i2c qup_i2c.0: QUP: I2C status flags :0x1300c8, irq:187
[16354.911305] qup_i2c qup_i2c.0: I2C slave addr:0x3a not connected
[16355.155407] qup_i2c qup_i2c.0: QUP: I2C status flags :0x1300c8, irq:187
[16355.161511] qup_i2c qup_i2c.0: I2C slave addr:0x3a not connected
[16355.405278] qup_i2c qup_i2c.0: QUP: I2C status flags :0x1300c8, irq:187
[16355.411992] qup_i2c qup_i2c.0: I2C slave addr:0x3a not connected

Is there a way I can hide this level of info, or fix the cause?

Thanks

I2C device 0x3a is the low power MCU inside the WP module. The MCU goes to sleep and wakes up on I2C transactions. What I have been told is that the wakeup takes too long for the MCU to handle the first transaction so the transaction fails and then the driver for the I2C master prints that annoying message. When the transaction is retried, the MCU is now awake and the transaction succeeds.

The error message is printed from the kernel in drivers/i2c/busses/i2c-qup.c. Just search for “not connected” and you will find it. A naive solution would be to simply rate limit the log message. But if for example, the errors were for 0x3a, 0x3a, 0x3a, 0x3a, 0x68, 0x3a, 0x3a, 0x3a then you definitely don’t want to supress the error for 0x68 that occurs in the middle.

Thanks for the info.

In this case, I get this message everytime I read GPIO34 thru 37; which I have to poll 34, 36 and 37 due to a lack of edge detection :frowning: . I really wish I had not designed my board using these inputs. Lesson learned!!

Talking of naive… how does one rate limit the log message?

Thanks again.