aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJustArchi <JustArchi@JustArchi.net>2015-12-20 22:51:06 +1100
committerWolfgang Wiedmeyer <wolfgit@wiedmeyer.de>2015-12-21 18:18:44 +0100
commitbd826b68f05e721b8be8a8dbe8f556ed7eb4ae54 (patch)
tree2dc844d093c897b740885aa70ab56f500c563b57
parent0f555266058d9837069faebced590f4722cb7887 (diff)
downloadkernel_samsung_smdk4412-bd826b68f05e721b8be8a8dbe8f556ed7eb4ae54.zip
kernel_samsung_smdk4412-bd826b68f05e721b8be8a8dbe8f556ed7eb4ae54.tar.gz
kernel_samsung_smdk4412-bd826b68f05e721b8be8a8dbe8f556ed7eb4ae54.tar.bz2
cpufreq: pegasusq: allow keeping at least two cores awake
fixes a2dp issues original commit: https://github.com/ArchiDroid/ArchiKernel/commit/1f5b6449dfddee4bf1528f85d97e250e1431dcd5 Change-Id: If7d5ec882a10d033d71be6c3a310917bf0df9b80
-rw-r--r--drivers/cpufreq/Kconfig11
-rw-r--r--drivers/cpufreq/cpufreq_pegasusq.c4
2 files changed, 15 insertions, 0 deletions
diff --git a/drivers/cpufreq/Kconfig b/drivers/cpufreq/Kconfig
index 8112af3..9d4b5dd 100644
--- a/drivers/cpufreq/Kconfig
+++ b/drivers/cpufreq/Kconfig
@@ -17,6 +17,17 @@ config CPU_FREQ
if CPU_FREQ
+config HAS_BLUETOOTH_DEADLOCKS
+ bool "System has bluetooth deadlocks"
+ depends on BT_BCM4334
+ default y
+ help
+ It seems that Android Lollipop introduced a bug which causes an
+ event listener to deadlock when A2DP is used and governor forces
+ only one core to stay awake. This hack prevents such situation by
+ always leaving at least two cores online. I wish we could get rid
+ of this at some point.
+
config CPU_FREQ_TABLE
tristate
diff --git a/drivers/cpufreq/cpufreq_pegasusq.c b/drivers/cpufreq/cpufreq_pegasusq.c
index c44af54..aa172a1 100644
--- a/drivers/cpufreq/cpufreq_pegasusq.c
+++ b/drivers/cpufreq/cpufreq_pegasusq.c
@@ -155,7 +155,11 @@ static unsigned int get_nr_run_avg(void)
#define MAX_HOTPLUG_RATE (40u)
#define DEF_MAX_CPU_LOCK (0)
+#ifdef CONFIG_HAS_BLUETOOTH_DEADLOCKS
+#define DEF_MIN_CPU_LOCK (2)
+#else
#define DEF_MIN_CPU_LOCK (0)
+#endif
#define DEF_CPU_UP_FREQ (500000)
#define DEF_CPU_DOWN_FREQ (200000)
#define DEF_UP_NR_CPUS (1)