I am trying to write an i2c driver based on i2c@31e0000 controller.
After System boots up, I can see the driver launched after i2c@31e0000 is added to iommu group 2, but the launched time is too late.
I noticed that it might be delayed because i2c@31e0000 is initialized too late. (see below capture)
==========
[ 3.080283] i2c /dev entries driver
[ 3.083599] tegra-i2c 3160000.i2c: Adding to iommu group 2
[ 3.089339] tegra-i2c c240000.i2c: Adding to iommu group 2
[ 3.094759] tegra-i2c 3180000.i2c: Adding to iommu group 2
[ 3.100095] tegra-i2c 3190000.i2c: Adding to iommu group 2
[ 3.105438] tegra-i2c 31c0000.i2c: Adding to iommu group 2
[ 3.110912] tegra-i2c c250000.i2c: Adding to iommu group 2
[ 3.116384] tegra-i2c 31b0000.i2c: Adding to iommu group 2
[ 9.870902] tegra-i2c 31e0000.i2c: Adding to iommu group 2
Is it possible to initialize i2c@31e0000 at the same time as other I2C buses?
So i2c@31e0000 probe has dependency on below driver probe and the execution of tegra_dpaux_pinctrl_set_mode() through pinctrl framework. And below driver probe might defer if BPMP-FW is not available at the time of its execution.
I have a DCDC controlled by this I2C channel, and it needs to output specified power to some components dependent on PCIe.
Currently, I always see the PCIe drivers launched before DCDC output power.
Thanks for your suggestions.
I will try it, but one question is that the DCDC can not power on the PCIe device before I2C channel is generated.
It means that Tegra PCIe driver can not find the device when scanning before I2C.
Then even delay the PCIe device driver by insert .ko, does it work?