diff options
| author | dev-harsh1998 <harshit.india@linaro.org> | 2017-07-10 20:43:11 +0530 |
|---|---|---|
| committer | mayankbali <mayankbali3@gmail.com> | 2017-07-10 20:52:45 +0530 |
| commit | a1849fb2e7167a4d921d2ac5d062c7b11ba9a0f7 (patch) | |
| tree | 5848c2c141df17895ff897bed865c2f0df4e0600 | |
| parent | d3037aa5edf6c792768b4964ebda2b8ec8649952 (diff) | |
msm8916-common: fix bluetooth mac address partial loading
*Added bttnv tool flag in board config
reverted commit LineageOS/android_device_cyanogen_msm8916-common@6a3f34a65b3abb3a08d66b53216d18ff84fad7c4
reverted commit LineageOS/android_device_cyanogen_msm8916-common@e8e03e896b709550d1181e5cb95e244a911b5012
| -rw-r--r-- | board/qcom-bluetooth.mk | 1 | ||||
| -rw-r--r-- | product/qcom-bluetooth.mk | 3 | ||||
| -rw-r--r-- | rootdir/etc/init.qcom.bt.sh | 253 | ||||
| -rw-r--r-- | rootdir/etc/init.qcom.rc | 7 |
4 files changed, 256 insertions, 8 deletions
diff --git a/board/qcom-bluetooth.mk b/board/qcom-bluetooth.mk index dd516c7..ad80de3 100644 --- a/board/qcom-bluetooth.mk +++ b/board/qcom-bluetooth.mk @@ -1,3 +1,4 @@ BOARD_HAVE_BLUETOOTH := true BOARD_HAVE_BLUETOOTH_QCOM := true BLUETOOTH_HCI_USE_MCT := true +QCOM_BT_USE_BTNV := true diff --git a/product/qcom-bluetooth.mk b/product/qcom-bluetooth.mk index 0b96292..bc8dbdd 100644 --- a/product/qcom-bluetooth.mk +++ b/product/qcom-bluetooth.mk @@ -10,7 +10,4 @@ PRODUCT_COPY_FILES += \ # Properties PRODUCT_PROPERTY_OVERRIDES += \ qcom.bluetooth.soc=smd \ - ro.bluetooth.dun=true \ - ro.bluetooth.hfp.ver=1.7 \ - ro.bluetooth.sap=true \ ro.qualcomm.bt.hci_transport=smd diff --git a/rootdir/etc/init.qcom.bt.sh b/rootdir/etc/init.qcom.bt.sh index 11db8c7..384e9c0 100644 --- a/rootdir/etc/init.qcom.bt.sh +++ b/rootdir/etc/init.qcom.bt.sh @@ -1,5 +1,5 @@ #!/system/bin/sh -# Copyright (c) 2009-2016, The Linux Foundation. All rights reserved. +# Copyright (c) 2009-2013, The Linux Foundation. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: @@ -26,9 +26,15 @@ # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # +#Read the arguments passed to the script +config="$1" + +BLUETOOTH_SLEEP_PATH=/proc/bluetooth/sleep/proto LOG_TAG="qcom-bluetooth" LOG_NAME="${0}:" +hciattach_pid="" + loge () { /system/bin/log -t $LOG_TAG -p e "$LOG_NAME $@" @@ -45,11 +51,209 @@ failed () exit $2 } +# +# enable bluetooth profiles dynamically +# +config_bt () +{ + baseband=`getprop ro.baseband` + target=`getprop ro.board.platform` + if [ -f /sys/devices/soc0/soc_id ]; then + soc_hwid=`cat /sys/devices/soc0/soc_id` + else + soc_hwid=`cat /sys/devices/system/soc/soc0/id` + fi + btsoc=`getprop qcom.bluetooth.soc` + + case $baseband in + "apq") + setprop ro.qualcomm.bluetooth.opp true + setprop ro.qualcomm.bluetooth.ftp true + setprop ro.qualcomm.bluetooth.nap false + setprop ro.bluetooth.sap false + setprop ro.bluetooth.dun false + # For MPQ as baseband is same for both + case $soc_hwid in + "130") + setprop ro.qualcomm.bluetooth.hsp true + setprop ro.qualcomm.bluetooth.hfp true + setprop ro.qualcomm.bluetooth.pbap false + setprop ro.qualcomm.bluetooth.map false + ;; + *) + setprop ro.qualcomm.bluetooth.hsp false + setprop ro.qualcomm.bluetooth.hfp false + setprop ro.qualcomm.bluetooth.pbap true + setprop ro.qualcomm.bluetooth.map true + ;; + esac + ;; + "mdm" | "svlte2a" | "svlte1" | "csfb") + setprop ro.qualcomm.bluetooth.opp true + setprop ro.qualcomm.bluetooth.hfp true + setprop ro.qualcomm.bluetooth.hsp true + setprop ro.qualcomm.bluetooth.pbap true + setprop ro.qualcomm.bluetooth.ftp true + setprop ro.qualcomm.bluetooth.map true + setprop ro.qualcomm.bluetooth.nap true + setprop ro.bluetooth.sap true + case $target in + "apq8084") + setprop ro.bluetooth.dun true + logi "Enabling BT-DUN for APQ8084" + ;; + *) + setprop ro.bluetooth.dun false + ;; + esac + ;; + "msm") + setprop ro.qualcomm.bluetooth.opp true + setprop ro.qualcomm.bluetooth.hfp true + setprop ro.qualcomm.bluetooth.hsp true + setprop ro.qualcomm.bluetooth.pbap true + setprop ro.qualcomm.bluetooth.ftp true + setprop ro.qualcomm.bluetooth.nap true + setprop ro.bluetooth.sap true + setprop ro.bluetooth.dun true + case $btsoc in + "ath3k") + setprop ro.qualcomm.bluetooth.map false + ;; + *) + setprop ro.qualcomm.bluetooth.map true + ;; + esac + ;; + *) + setprop ro.qualcomm.bluetooth.opp true + setprop ro.qualcomm.bluetooth.hfp true + setprop ro.qualcomm.bluetooth.hsp true + setprop ro.qualcomm.bluetooth.pbap true + setprop ro.qualcomm.bluetooth.ftp true + setprop ro.qualcomm.bluetooth.map true + setprop ro.qualcomm.bluetooth.nap true + setprop ro.bluetooth.sap true + setprop ro.bluetooth.dun true + ;; + esac + + #Enable Bluetooth Profiles specific to target Dynamically + case $target in + "msm8960") + if [ "$btsoc" != "ath3k" ] && [ "$soc_hwid" != "130" ] + then + setprop ro.bluetooth.hfp.ver 1.6 + setprop ro.qualcomm.bt.hci_transport smd + fi + ;; + "msm8974" | "msm8226" | "msm8610" | "msm8916" ) + if [ "$btsoc" != "ath3k" ] + then + setprop ro.bluetooth.hfp.ver 1.7 + setprop ro.qualcomm.bt.hci_transport smd + fi + ;; + "apq8084" | "mpq8092" ) + if [ "$btsoc" != "rome" ] + then + setprop ro.qualcomm.bt.hci_transport smd + elif [ "$btsoc" = "rome" ] + then + setprop ro.bluetooth.hfp.ver 1.6 + fi + ;; + *) + ;; + esac + +if [ -f /system/etc/bluetooth/stack.conf ]; then +stack=`cat /system/etc/bluetooth/stack.conf` +fi + +case "$stack" in + "bluez") + logi "Bluetooth stack is $stack" + setprop ro.qc.bluetooth.stack $stack + reason=`getprop vold.decrypt` + case "$reason" in + "trigger_restart_framework") + start dbus + ;; + esac + ;; + *) + logi "Bluetooth stack is Bluedroid" + ;; +esac + +} + +start_hciattach () +{ + /system/bin/hciattach -n $BTS_DEVICE $BTS_TYPE $BTS_BAUD & + hciattach_pid=$! + logi "start_hciattach: pid = $hciattach_pid" + echo 1 > $BLUETOOTH_SLEEP_PATH +} + +kill_hciattach () +{ + echo 0 > $BLUETOOTH_SLEEP_PATH + logi "kill_hciattach: pid = $hciattach_pid" + ## careful not to kill zero or null! + kill -TERM $hciattach_pid + # this shell doesn't exit now -- wait returns for normal exit +} + +logi "init.qcom.bt.sh config = $config" +case "$config" in + "onboot") + config_bt + exit 0 + ;; + *) + ;; +esac + +# mimic hciattach options parsing -- maybe a waste of effort +USAGE="hciattach [-n] [-p] [-b] [-t timeout] [-s initial_speed] <tty> <type | id> [speed] [flow|noflow] [bdaddr]" + +while getopts "blnpt:s:" f +do + case $f in + b | l | n | p) opt_flags="$opt_flags -$f" ;; + t) timeout=$OPTARG;; + s) initial_speed=$OPTARG;; + \?) echo $USAGE; exit 1;; + esac +done +shift $(($OPTIND-1)) + +# Note that "hci_qcomm_init -e" prints expressions to set the shell variables +# BTS_DEVICE, BTS_TYPE, BTS_BAUD, and BTS_ADDRESS. + +#Selectively Disable sleep +BOARD=`getprop ro.board.platform` +STACK=`getprop ro.qc.bluetooth.stack` + # BR/EDR & LE power class configurations POWER_CLASS=`getprop qcom.bt.dev_power_class` LE_POWER_CLASS=`getprop qcom.bt.le_dev_pwr_class` -setprop bluetooth.status off +#find the transport type +TRANSPORT=`getprop ro.qualcomm.bt.hci_transport` +logi "Transport : $TRANSPORT" +case $STACK in + "bluez") + logi "** Bluez stack **" + ;; + *) + logi "** Bluedroid stack **" + setprop bluetooth.status off + ;; +esac + case $POWER_CLASS in 1) PWR_CLASS="-p 0" ; @@ -80,12 +284,51 @@ eval $(/system/bin/hci_qcomm_init -e $PWR_CLASS $LE_PWR_CLASS && echo "exit_code case $exit_code_hci_qcomm_init in 0) logi "Bluetooth QSoC firmware download succeeded, $BTS_DEVICE $BTS_TYPE $BTS_BAUD $BTS_ADDRESS";; *) failed "Bluetooth QSoC firmware download failed" $exit_code_hci_qcomm_init; - - setprop bluetooth.status off + case $STACK in + "bluez") + logi "** Bluez stack **" + ;; + *) + logi "** Bluedroid stack **" + setprop bluetooth.status off + ;; + esac exit $exit_code_hci_qcomm_init;; esac -setprop bluetooth.status on +# init does SIGTERM on ctl.stop for service +trap "kill_hciattach" TERM INT + +case $TRANSPORT in + "smd") + case $STACK in + "bluez") + logi "** Bluez stack **" + echo 1 > /sys/module/hci_smd/parameters/hcismd_set + ;; + *) + logi "** Bluedroid stack **" + setprop bluetooth.status on + ;; + esac + ;; + *) + logi "start hciattach" + start_hciattach + case $STACK in + "bluez") + logi "Bluetooth is turning On with Bluez stack " + ;; + *) + logi "** Bluedroid stack **" + setprop bluetooth.status on + ;; + esac + + wait $hciattach_pid + logi "Bluetooth stopped" + ;; +esac exit 0 diff --git a/rootdir/etc/init.qcom.rc b/rootdir/etc/init.qcom.rc index 46219b7..1e1f268 100644 --- a/rootdir/etc/init.qcom.rc +++ b/rootdir/etc/init.qcom.rc @@ -276,6 +276,7 @@ on property:bluetooth.isEnabled=true on property:vold.decrypt=trigger_restart_framework start config_bt_addr + start config_bluetooth on property:persist.env.fastdorm.enabled=true setprop persist.radio.data_no_toggle 1 @@ -297,6 +298,12 @@ service config_bt_addr /system/bin/btnvtool -O group bluetooth radio oneshot +service config_bluetooth /system/bin/sh /system/etc/init.qcom.bt.sh "onboot" + class core + user root + seclabel u:r:bluetooth_loader:s0 + oneshot + service cnd /system/bin/cnd class late_start socket cnd stream 660 root inet |
