Who calls the probe() of driver
Long story short: the probe() function of the driver is called as a result of calling the register_driver
for that specific bus. More precisely, it's called by the probe()
of that bus_type
structure. In your case: i2c_bus_type
.
Here's the call chain in your I2C case:
- i2c_register_driver
- driver_register
- bus_add_driver
- driver_attach
- __driver_attach (for your device)
- driver_probe_device
- really_probe
- i2c_device_probe (this is what dev->bus->probe is for an i2c driver)
- your_probe_function
I have prepared a graph that traces platform drive's probe function. You are working with I2C driver which AFAIK is a platform driver. I hope this helps you to trace the issue.
Also, look into following link to see the discussion on kernelnewbies.
https://www.mail-archive.com/kernelnewbies%40kernelnewbies.org/msg12423.html