We encounter some i2C communication problems with our equipment designed around a SOC AT91sam9G35. The AT91SAM9G35 processor uses the PA30 and PA31 pins (i2C0) connected to pull-up resistors of 10k to provide communication with 5 circuits (ADS1015IDGSR, PCA9544APW, AT24MAC402, ADP5585ACPZ, MCP23008). The kernel often returns the messages at91_i2c f8010000.i2c: controller timed out and the i2C port may not work after a while. It is therefore necessary to perform a restart for the processor to access the communication again. Can you help me fix the problem?
I made a small change in the driver of the kernel used (3.10-at91) to reduce errors.
The modification made is in the file i2c-at91.c
#define TWI_CLK_HZ 400000 /* max 400 Kbits/s */
#define AT91_I2C_TIMEOUT msecs_to_jiffies(100) /* transfer timeout */
#define AT91_I2C_DMA_THRESHOLD 8 /* enable DMA if transfer size is bigger than this threshold */
I hope you can help us fix it.
Thank you in advance,