Эх сурвалжийг харах

Merge 8e5cbe12f2b3e5044c2dc78cb55be00f5b08364f on remote branch

Change-Id: Ic9bc4215fb63da338659a10fbd19472c3f668e88
Linux Build Service Account 1 жил өмнө
parent
commit
2575216820
5 өөрчлөгдсөн 31 нэмэгдсэн , 4 устгасан
  1. 1 1
      Android.mk
  2. 4 0
      BUILD.bazel
  3. 1 0
      include/btpower.h
  4. 9 3
      pwr/btpower.c
  5. 16 0
      target.bzl

+ 1 - 1
Android.mk

@@ -3,7 +3,7 @@
 LOCAL_PATH := $(call my-dir)
 
 # Build/Package only in case of supported target
-ifeq ($(call is-board-platform-in-list,taro kalama pineapple blair pitti volcano niobe), true)
+ifeq ($(call is-board-platform-in-list,taro kalama pineapple blair pitti volcano niobe anorak61), true)
 
 BT_SELECT := CONFIG_MSM_BT_POWER=m
 #ifdef CONFIG_SLIMBUS

+ 4 - 0
BUILD.bazel

@@ -11,3 +11,7 @@ ddk_headers(
 load(":target.bzl", "define_pineapple")
 
 define_pineapple()
+
+load(":target.bzl", "define_anorak61")
+
+define_anorak61()

+ 1 - 0
include/btpower.h

@@ -676,6 +676,7 @@ struct platform_pwr_data {
 	struct work_struct wq_pwr_voting;
 	struct sk_buff_head rxq;
 	struct mutex pwr_mtx;
+	struct mutex pwr_release;
 };
 
 int btpower_register_slimdev(struct device *dev);

+ 9 - 3
pwr/btpower.c

@@ -1576,6 +1576,7 @@ static int bt_power_probe(struct platform_device *pdev)
 	skb_queue_head_init(&pwr_data->rxq);
 	mutex_init(&pwr_data->pwr_mtx);
 	mutex_init(&pwr_data->btpower_state.state_machine_lock);
+	mutex_init(&pwr_data->pwr_release);
 	pwr_data->btpower_state.power_state = IDLE;
 	pwr_data->btpower_state.retention_mode = RETENTION_IDLE;
 	pwr_data->btpower_state.grant_state = NO_GRANT_FOR_ANY_SS;
@@ -1621,20 +1622,21 @@ static int bt_power_probe(struct platform_device *pdev)
 	return 0;
 
 free_pdata:
+	mutex_lock(&pwr_data->pwr_release);
 	kfree(pwr_data);
+	mutex_unlock(&pwr_data->pwr_release);
 	return ret;
 }
 
 static int bt_power_remove(struct platform_device *pdev)
 {
+	mutex_lock(&pwr_data->pwr_release);
 	dev_dbg(&pdev->dev, "%s\n", __func__);
-
 	probe_finished = false;
 	btpower_rfkill_remove(pdev);
 	bt_power_vreg_put();
-
 	kfree(pwr_data);
-
+	mutex_unlock(&pwr_data->pwr_release);
 	return 0;
 }
 
@@ -2514,6 +2516,9 @@ static long bt_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
 
 static int bt_power_release(struct inode *inode, struct file *file)
 {
+
+	mutex_lock(&pwr_data->pwr_release);
+
 	if (!pwr_data || !probe_finished) {
 		pr_err("%s: BTPower Probing Pending.Try Again\n", __func__);
 		return -EAGAIN;
@@ -2561,6 +2566,7 @@ static int bt_power_release(struct inode *inode, struct file *file)
 */
 		}
 	}
+	mutex_unlock(&pwr_data->pwr_release);
 	return 0;
 }
 

+ 16 - 0
target.bzl

@@ -65,3 +65,19 @@ def define_niobe():
 	    "CONFIG_BT_HW_SECURE_DISABLE",
 	]
    )
+
+def define_anorak61():
+    define_bt_modules(
+	target = "anorak",
+	modules = [
+	    "btpower",
+	    "bt_fm_slim",
+	    "radio-i2c-rtc6226-qca",
+	],
+	config_options = [
+	    "CONFIG_MSM_BT_POWER",
+	    "CONFIG_BTFM_SLIM",
+	    "CONFIG_I2C_RTC6226_QCA",
+	    "CONFIG_BT_HW_SECURE_DISABLE",
+	]
+   )