Who calls the probe() of driver

iSegFault picture iSegFault · Sep 28, 2011 · Viewed 37.5k times · Source

How does probe() call gets called? Who calls it? As per my understanding, __init() registers driver and then somehow probe() is called to register the device data and irq etc. How exactly it happens?

I am working on touchscreen driver and its __init registers itself to i2c driver. Then probe expect i2c_client data which returns null. I want to track where it gets filled.

Answer

Mircea picture Mircea · Oct 3, 2011

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