Messages in this thread | | | Date | Sun, 30 Aug 2009 02:37:51 +0200 | Subject | Re: [PATCH] AB3100 regulator support v1 | From | Linus Walleij <> |
| |
2009/8/30 Linus Walleij <linus.ml.walleij@gmail.com>:
> So this is because I am in the parents probe() function of course, > and it's all expected.
I was curious how wm8350 on MX31 did this while using only subsys_initcalls() (wm8400 doesn't look like it's completed yet) and found:
subsys_initcall_() -> drivers/mfd/wm8350-i2c.:wm8350_i2c_init() -> drivers/mfd/wm8350-i2c.c:wm8350_i2c_probe() -> drivers/mfd/wm8350-core.c:wm8350_device_init() -> arch/arm/mach-mx3/mx31ads.c:mx31_wm8350_init() -> drivers/regulator/wm8350-regulator.c:wm8350_register_regulator()
which creates a platform device and sets the parent to the struct wm8350->dev. But this is actually the i2c_client dev and then it is not so strange that it works nicely to have both the 8350 core device as parent and the platform devices as children in a subsys_initcall() since the i2c core does not use the regular device driver matching scheme, but rolls it's own (which does NOT try to take the parent's semaphore...)
Linus Walleij
| |