On Thu, Jan 10, 2013 at 09:46:12AM +0000, Kim, Milo wrote: > + /* Update shared enable pin state */ > + list_for_each_entry(r, ®ulator_list, list) { > + if (r->ena_gpio == gpio) > + r->ena_gpio_state = enable ? 1 : 0; > + } > +}
This isn't quite going to work properly - we need to actually move the state (and also a reference count) into some sort of shared state. Otherwise consider what happens in this scenario: 1. regulator 1 enables 2. regulator 2 enables 3. regulator 1 disables Since regulator 1 doesn't know anything about regulator 2 it'll not know that regulator 2 should still be enabled so it'll put the GPIO into the disabled state. It'll be OK if regulator 1 and regulator 2 always have the same state but if they ever differ then we'll not do the right thing.
signature.asc
Description: Digital signature