Thread (22 messages) 22 messages, 8 authors, 2010-08-31

[PATCH] mmc: move regulator handling to core

From: Mark Brown <hidden>
Date: 2009-12-03 13:22:39
Also in: linux-mmc, lkml

On Thu, Dec 03, 2009 at 02:14:23PM +0100, Daniel Mack wrote:
On Thu, Dec 03, 2009 at 01:06:27PM +0000, Mark Brown wrote:
quoted
This is historical, they can all be converted to regulator_get_exclusive()
so the move to the core (while good) isn't required for this reason.
Is it? What if you share one regulator for two slots? While this isn't a
problem I have met in real life, this should still be considered.
I agree, this is a configuration which I have also seen, but there was a
strong insistence that the power off had to function as expected.  An
approach which allows shared regulators is generally always preferable
since it copes with a wider range of system designs.
The problem I _did_ see, however, was a warning when the regulator was
marked as always_on in its constraints. What happens then is that
regulator_is_enabled() will always return 1, causing the pxamci code to
...
Making those drivers claim their regulators exclusively _does_ solve the
first problem, but not the latter.
Yeah, there's currently an assumption that the constraints will be
suitable for the driver there.  A driver that can handle sharing should
always cope here, it's one reason to prefer them.
quoted
quoted
 	case MMC_POWER_OFF:
-		if(host->vcc &&
-		   regulator_is_enabled(host->vcc))
-			regulator_disable(host->vcc);
+		if(mmc->vcc && mmc->vcc_enabled) {
+			regulator_disable(mmc->vcc);
+			mmc->vcc_enabled = 0;
+		}
quoted
Can the MMC core actually tolerate the MMC power not getting killed when
expected?  My understanding from previous discussion was that it wasn't
able to do so.  If it is then conversion to using regulator_get_exclusive()
isn't desirable, of course.
I would expect the power to be killed when the last user stops using it.
Which should result in the same effect if you only have one host, one
regulator, and one user.
Yes, it's always fine in that case (modulo always_on and/or regulators
without power control).  This goes back to the thing about using
regulator_get_exclusive(), the message given was that the MMC drivers
really needed to be able to guarantee that the power would be removed
when that was requested.

Like I say, if there isn't a *strict* requirement but it's only
desirable (possibly strongly desirable) then your approach is obviously
preferable.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help