HI,
I have an issue gaining access to I2C-1 where I have a RTC battery backed clock mapped on a purpose built cape board. It worked fine in 3.8 kernel but is broken in 4.9 and 4.14 kernels.
There were issues previously in 3.8 with the mappings /naming of the I2C:
i.e.
I2C-0 = bus 0
I2C-1 = bus 2
I2C-2 - bus 1
but with a bit of investigation work using i2cdetect I found my RTC chip (A ds3231).
running:
echo ds3231 0x68 > /sys/class/i2c-adapter/i2c-2/new_device
It mapped fine and I saw it come up as a device at /dev/rtc1
NOW MY CURRENT PROBLEM with I2C-1 with 4.14 kernel is ….
I map the dtbo file in uEnv.txt:
uboot_overlay_addr8=/lib/firmware/BB-I2C1-00A0.dtbo
With a vanilla device tree, I see all three I2C devices present (using i2cdetect -l). BUT If I scan each one in turn to see what devices are present, it works fine for bus 0 and bus 2 but stalls querying bus 1. Bus 1 outputs data very slowly (takes over a minute to complete rather than seconds) as if it is being interfered with or has some sort of problem. Eventually when it complete, it also doesn’t find the RTC chip.
Further, if I add other dtbo’s to uEnv.txt i.e.
uboot_overlay_addr4=/lib/firmware/BB-UART1-00A0.dtbo
Then the I2C-1 never gets loaded on boot and I just end up with just I2C-0 and I2C-2.
Somethings not right but I can’t figure out what… any pointers?
I’ve tried building the latest dts files from scratch but no change!
EXTRA Info:
debian@beaglebone:~$ cat /boot/uEnv.txt
#Docs: http://elinux.org/Beagleboard:U-boot_partitioning_layout_2.0
uname_r=4.14.49-ti-r54
#uuid=
dtb=am335x-boneblack-wireless.dtb
###U-Boot Overlays###
###Documentation: http://elinux.org/Beagleboard:BeagleBoneBlack_Debian#U-Boot_Overlays
###Master Enable
enable_uboot_overlays=1