I2C errors appeared with multiple usb devices
The highlighted comment was created in this revision.
With multiple USB devices connected environment, I2C bus error occur when operating I2C device. We observed the following two patterns.
Pattern 1: [ 133.082741] i2c-rcar e66d8000.i2c: error -11 : f
Arbitration lost occurs on the I2C bus, and rcar_i2c_master_xfer() fails with EAGAIN. When an I2C interrupt occurs, bit 5 (Master Arbitration Lost) of the Master Status Register (ICMSR) is set.
Pattern 2: [ 183.453555] i2c-rcar e66d8000.i2c: error -110 : 13
I2C device access timeout occurs and rcar_i2c_master_xfer () fails with ETIMEDOUT. Timeout occurs because the Master Stop Transmitted bit of the Master Status Register (ICMSR) is not set.
Although the causal relationship between the USB devices and the I2C bus is unclear, it seems that the hardware is detecting an abnormality. (From Master Status Register (ICMSR))
[ Reproduce environment ] Renesas bsp 3.15 Rcar M3 StarterKit + KF-M06
M3 USB2.0(CN 5) <-------> USBHUB <----> USB WIFI
<----> USB MEMORY * 2 <----> USB mouse dongle
KF-M06(CN 29) <--------> CMOS Camera
When CMOS camera is operated (capture), I2C bus error occurs probability as below. pattern1: 1/10. pattern2: 1/2.
Hi Can we reproduce this phenomenon if we don't use USB Wifi? M3 USB2.0(CN5) <---> USB HUB <---> USB MEMORY * 2 and USB mouse dongle KF-M06(CN29) <---> CMOS camera(ov5642)
I cannot reproduce.(0/20) Could you try it on another KF board?
As a result of our confirmation again, it can be reproduced, even if the USB device is not connected. Let me share the reproduction the scenario below. In addition, I used another board butI2C error is still reproduced.
[ Reproduce environment ] - Renesas bsp 3.15 - Rcar M3 StarterKit + KF-M06 - CMOS Camera OV5642
https:// www.aliexpress.com/item/OV5642-5-Million-High-Sensitivity-Camera-Module-Image-Sensor-Module-Manual-Fine-tuning-with-JPEG-Interface/32909308847.html Connected CMOS Camera to CN 29 on KF-M06.
- capture command
Customized based on V4L2 video capture example in here. https:// linuxtv.org/downloads/v4l-dvb-apis-new/uapi/v4l/capture.c.html please see the attached file. # capture -d /dev/video0 -F -f rgb32 -L 0 -T 0 -W 12800 -H 720 -c 1000 -t 60 -z
[pattern1] [ 1491.549362] i2c-rcar e66d8000.i2c: error -11 : f
[pattern2] [ 1443.614690] i2c-rcar e66d8000.i2c: error -110 : 3
When capture command was executed, I2C bus error occurs probability as below. pattern1: 3/10. pattern2: 4/10.
Your feedback would be welcome. Thanks