Thread (1 message) 1 message, 1 author, 2013-02-15

Re: [PATCH v1 1/4] i2c: mux: Add i2c-arbitrator 'mux' driver

From: Doug Anderson <hidden>
Date: 2013-02-15 01:14:35
Also in: linux-i2c

Stephen,

On Thu, Feb 14, 2013 at 4:16 PM, Stephen Warren [off-list ref] wrote:
quoted
We can avoid that logic with has_full_constraints.  That will be some
work to get done but also should be done at some point in time.  Once
we use has_full_constraints we'll get ERR_PTR(-EPROBE_DEFER);
That flag is normally set automatically:

static int __init regulator_init_complete(void)
...
        /*
         * Since DT doesn't provide an idiomatic mechanism for
         * enabling full constraints and since it's much more natural
         * with DT to provide them just assume that a DT enabled
         * system has full constraints.
         */
        if (of_have_populated_dt())
                has_full_constraints = true;

Is of_have_populated_dt() not returning true for you? Perhaps when using
the initcall, your regulator_get()s are happening before
regulator_init_complete() gets called, which is the source of the problem?
The regulator_get() calls are before regulator_init_complete() by
quite a margin.  The regulator_init_complete() is a late_initcall, so
that's not too surprising.  Are we not supposed to access regulators
until after late_init()?  That seems like quite a limitation...


Note: I did send up a v2 of the patch series that you probably saw.
It still uses subsys_initcall().  I can easily send up a v3 if you
would like.  Worst case I can carry a local patch to hack the
arbitrator driver to use subsys_initcall() until we fix everything
else.


One other argument for using subsys_initcall(), though.  Using
module_platform_driver() means that we end up going through
device_initcall().  I would argue that since we're providing a bus
we're much more of a "subsystem" than a "device".  ...or is that a BS
argument?

Certainly if you end up building this code as a module then it'll get
called late anyway, but hopefully you wouldn't do that on a system
that had really critical components on the provided bus?


Let me know if you're happy with v2 or if you'd like me to make a rev.
 Thanks!  :)

-Doug
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help