From 2b5a24a01df12fbfa3e702ad7efae27bcb852e33 Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Fri, 7 Sep 2012 11:00:53 +0800 Subject: [PATCH] regulator: core: Fast path non-deferred disables Users (especially framework code) may end up passing in a zero deferral time depending on runtime conditions or configuration. If they do then just call regulator_disable() directly to save scheduling. Signed-off-by: Mark Brown Acked-by: Liam Girdwood --- drivers/regulator/core.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c index 50977a69f09a..ed376d9f525d 100644 --- a/drivers/regulator/core.c +++ b/drivers/regulator/core.c @@ -1724,6 +1724,9 @@ int regulator_disable_deferred(struct regulator *regulator, int ms) if (regulator->always_on) return 0; + if (!ms) + return regulator_disable(regulator); + mutex_lock(&rdev->mutex); rdev->deferred_disables++; mutex_unlock(&rdev->mutex);