Who calls the probe() of driver

前端 未结 6 639
北海茫月
北海茫月 2020-12-12 14:35

How does probe() call gets called? Who calls it? As per my understanding, __init() registers driver and then somehow probe()

6条回答
  •  轻奢々
    轻奢々 (楼主)
    2020-12-12 15:10

    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

提交回复
热议问题