I have some devices on i2c bus. I use DTS for probe driver, but I cannot probe one of driver. Device have address (0x20) kernel send me message:
i2c i2c-0: Failed to register i2c client mcp23017 at 0x20 (-16)
Device is mcp2301 and I can detect it
i2cdetect -y 0
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- UU -- -- -- -- -- -- --
20: 20 UU -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- UU -- -- -- -- -- UU -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- UU
50: -- -- -- -- -- -- -- UU -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
As you can see, same device (0x21 also mcp2301) is working fine.
When I use i2cget/i2cset I can properly control this device (0x20). I also tried turn i2cdebug in kernel. But nothing interesting - because driver of 0x20 device not probe(not enter to probe function).
I tried mcp230xx driver and my own driver, both same behaviour.
Thanks
Update:
Complet dts is here.My dts overlayhere. And dmesg with initcall_debug here. Finaly here is my drive (but also I try gpio-mcp23s08.c driver with same error).
Kernel 3.10.17 CPU is arm-iMX6
initcall_debugin your kernel command line and attach full dmesg to some sharing site (like pastebin.com), and share link to it. - 0andriy