diff options
author | Andrea Arcangeli <andrea@cpushare.com> | 2013-08-04 10:29:46 +0200 |
---|---|---|
committer | Andrea Arcangeli <andrea@cpushare.com> | 2013-08-04 12:33:48 +0200 |
commit | 06b6513043b7c39692dbd5e041e5b3fe194a1897 (patch) | |
tree | a9f1cddeb15fce7c383e375e5970544439d4ac7c | |
parent | 84c11baf1cd2873665c9bd51f720ee3d83faefa2 (diff) | |
download | kernel_samsung_smdk4412-06b6513043b7c39692dbd5e041e5b3fe194a1897.tar.gz kernel_samsung_smdk4412-06b6513043b7c39692dbd5e041e5b3fe194a1897.tar.bz2 kernel_samsung_smdk4412-06b6513043b7c39692dbd5e041e5b3fe194a1897.zip |
mmc: fix the workqueue overload battery waste
After switching to the smdk4412 kernel I noticed a workqueue overload,
battery lasting less, and Android OS showing up at the top as result.
Tracing showed that mmc_host_clk_gate_work was one of the runqueues
called regularly in the background.
The #ifdef is clearly reversed and that leads to the ndelay being called
every time, while ndelay was never called before.
Not yet sure if this fixes the "apparent" regression but it's not bad so
far, after 1h of uptime android OS is below Android System.
Change-Id: Ib908b0c20c4bc8dd889d0d228ee3ea63820b98cf
-rw-r--r-- | drivers/mmc/core/host.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/mmc/core/host.c b/drivers/mmc/core/host.c index 79669573f37..67758bf0e3d 100644 --- a/drivers/mmc/core/host.c +++ b/drivers/mmc/core/host.c @@ -110,12 +110,12 @@ static void mmc_host_clk_gate_delayed(struct mmc_host *host) if (!host->clk_requests) { spin_unlock_irqrestore(&host->clk_lock, flags); /* wait only when clk_gate_delay is 0 */ -#ifdef CONFIG_WIMAX_CMC +#ifndef CONFIG_WIMAX_CMC if (!host->clkgate_delay) { #endif tick_ns = DIV_ROUND_UP(1000000000, freq); ndelay(host->clk_delay * tick_ns); -#ifdef CONFIG_WIMAX_CMC +#ifndef CONFIG_WIMAX_CMC } #endif } else { |