From bd826b68f05e721b8be8a8dbe8f556ed7eb4ae54 Mon Sep 17 00:00:00 2001 From: JustArchi Date: Sun, 20 Dec 2015 22:51:06 +1100 Subject: cpufreq: pegasusq: allow keeping at least two cores awake fixes a2dp issues original commit: https://github.com/ArchiDroid/ArchiKernel/commit/1f5b6449dfddee4bf1528f85d97e250e1431dcd5 Change-Id: If7d5ec882a10d033d71be6c3a310917bf0df9b80 --- drivers/cpufreq/Kconfig | 11 +++++++++++ drivers/cpufreq/cpufreq_pegasusq.c | 4 ++++ 2 files changed, 15 insertions(+) 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) -- cgit v1.1