aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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)