I'm writing a multi-function kernel driver module, based on http://lxr.free-electrons.com/source/drivers/mfd/wm8350-i2c.c?v=4.4 and http://lxr.free-electrons.com/source/drivers/mfd/wm8350-core.c?v=4.4
I am confused as to how/when/why the wm8350_i2c_probe()
function is called.
The i2c_add_driver()
call registers a struct i2c_driver
with the i2c subsystem and that struct includes a .probe
pointer to the wm8350_i2c_probe()
function.
I have made my own analogues of these modules. The xxx_i2c_init()
is called on insmod
but the i2c subsystem does not call the xxx_i2c_probe()
function.
There is something I do not understand here. Why doesn't the i2c subsystem call the wm8350_i2c_probe()
function via the registered .probe
?