<div>Hello, collegues!</div><div> </div><div>I've faced a problem that don't know how to solve without tricks like overlay DTS.</div><div> </div><div>I have PCA9555 device on I2C-11 bus, it's described in DTS as follows:</div><div>=================================================================</div><div><div>&i2c11 {<!-- --></div><div>            bus-frequency = <100000>;</div><div>            multi-master;</div><div>            #retries = <5>;</div><div>            aspeed,dma-buf-size = <4095>;</div><div>            aspeed,hw-timeout-ms = <300>;</div><div>            status = "okay";</div><div><div>            gpio_exp: pca9555@20 {<!-- --></div><div>                           compatible = "nxp,pca9555";</div><div>                           reg = <0x20>;</div><div>                           #gpio-cells = <2>;</div><div>             };</div><div>};</div></div>=================================================================</div><div> </div><div>The problem is - the device probing order is broken somehow, so PCA9555 can't be probed successfully during boot time:</div><div>=================================================================</div><div><div>[ 1.981321] i2c /dev entries driver</div><div>[ 1.987112] aspeed-i2c-bus 1e78a040.i2c-bus: i2c bus 0 registered (dma mode), irq 35</div><div>[ 1.996847] aspeed-i2c-bus 1e78a080.i2c-bus: i2c bus 1 registered (dma mode), irq 36</div><div>[ 2.006743] aspeed-i2c-bus 1e78a0c0.i2c-bus: i2c bus 2 registered (dma mode), irq 37</div><div>[ 2.016689] aspeed-i2c-bus 1e78a100.i2c-bus: i2c bus 3 registered (dma mode), irq 38</div><div>[ 2.027308] aspeed-i2c-bus 1e78a140.i2c-bus: i2c bus 4 registered (dma mode), irq 39</div><div>[ 2.037197] aspeed-i2c-bus 1e78a180.i2c-bus: i2c bus 5 registered (dma mode), irq 40</div><div>[ 2.047457] aspeed-i2c-bus 1e78a1c0.i2c-bus: i2c bus 6 registered (dma mode), irq 41</div><div>[ 2.057409] aspeed-i2c-bus 1e78a300.i2c-bus: i2c bus 7 registered (dma mode), irq 42</div><div>[ 2.067251] aspeed-i2c-bus 1e78a340.i2c-bus: i2c bus 8 registered (dma mode), irq 43</div><div>[ 3.128679] pca953x 11-0020: failed writing register</div><div>[ 3.133860] pca953x: probe of 11-0020 failed with error -110</div><div>[ 3.139801] aspeed-i2c-bus 1e78a400.i2c-bus: i2c bus 11 registered (dma mode), irq 44</div><div>[ 3.149795] aspeed-i2c-bus 1e78a440.i2c-bus: i2c bus 12 registered (dma mode), irq 45</div></div><div>=================================================================</div><div> </div><div>I understand that timestamp in dmesg is not absolutely accurate, but looks like the device is really probed before bus is ready.</div><div> </div><div>If I exclude PCA9555 from DTS and instantiate it manually (echo pca9555 0x20 > /sys/bus/i2c/devices/i2c-11/new_device), it works fine.</div><div> </div><div>What am I missing?</div><div> </div><div>Thank you!</div><div>-- </div><div>Best regards,</div><div>Konstantin Klubnichkin,</div><div>lead firmware engineer,</div><div>server hardware R&D group,</div><div>Yandex Moscow office.</div><div>tel: +7-903-510-33-33</div><div> </div>