So after some dig, when the driver fail to get analog value, there is 2 possibles return:
110 : Connection timed out
5 : I/O error (due to noises?)
https://github.com/torvalds/linux/blob/m...rno-base.h
https://github.com/torvalds/linux/blob/m...ic/errno.h
Maybe found the source and the solution for the i2c problems.
To my understand i2c-bcm2708 driver emulate SMbus functionality, there is part of the problem if the CPU is not able to track all simultaneous (or in a very short time) transactions.
The solution so far is to change in /boot/config.txt : "dtoverlay=i2c1-bcm2708,sda1_pin=44,scl1_pin=45,pin_func=6" to "dtoverlay=i2c1-bcm2708,sda1_pin=44,scl1_pin=45,pin_func=6,combine=off"
Note: this workaround work fine on CM3L+ but have strange behave on some CM3L.
110 : Connection timed out
5 : I/O error (due to noises?)
https://github.com/torvalds/linux/blob/m...rno-base.h
https://github.com/torvalds/linux/blob/m...ic/errno.h
Maybe found the source and the solution for the i2c problems.
To my understand i2c-bcm2708 driver emulate SMbus functionality, there is part of the problem if the CPU is not able to track all simultaneous (or in a very short time) transactions.
The solution so far is to change in /boot/config.txt : "dtoverlay=i2c1-bcm2708,sda1_pin=44,scl1_pin=45,pin_func=6" to "dtoverlay=i2c1-bcm2708,sda1_pin=44,scl1_pin=45,pin_func=6,combine=off"
Note: this workaround work fine on CM3L+ but have strange behave on some CM3L.

