I have linux 4.4 on my board. I also have two i2c devices with their driver. When I connect first device to board - i see in dmesg that _probe function called. When I don't connect any device to board - in dmesg i don't see _probe function. When I connect second device - in dmesg i don't see _probe function. But I want to see it. If I use i2cdetect tool i see correct device addresses. Field .detect in driver don't used. I want to see _probe function in dmesg with second device or without devices.
How linux check connected i2c devices and how it choose will driver load or not?
This my device tree:
i2c@546c0000 {
#address-cells = <0x1>;
#size-cells = <0x0>;
compatible = "nvidia,tegra210-vii2c";
reg = <0x0 0x546c0000 0x0 0x34000>;
iommus = <0x52 0x12>;
interrupts = <0x0 0x11 0x4>;
scl-gpio = <0x7b 0x92 0x0>;
sda-gpio = <0x7b 0x93 0x0>;
status = "okay";
clocks = <0x41 0xd0 0x41 0x51 0x41 0x1c>;
clock-names = "vii2c", "i2cslow", "host1x";
resets = <0x41 0xd0>;
reset-names = "vii2c";
clock-frequency = <0x61a80>;
bus-pullup-supply = <0x69>;
avdd_dsi_csi-supply = <0x67>;
linux,phandle = <0xe0>;
phandle = <0xe0>;
newname_c@30 {
compatible = "nvidia,newname";
reg = <0x30>;
devnode = "video0";
physical_w = "3.674";
physical_h = "2.738";
vertical-flip = "true";
avdd-reg = "vana";
iovdd-reg = "vif";
clocks = <0x41 0x117>;
clock-names = "clk_out_3";
clock-frequency = <0x16e3600>;
mclk = "clk_out_3";
reset-gpios = <0x7b 0x94 0x0>;
pwdn-gpios = <0x7b 0x97 0x0>;
vana-supply = <0x94>;
vif-supply = <0x93>;
status = "okay";
linux,phandle = <0xe1>;
phandle = <0xe1>;