Merge "msm8974: Ultrasound based daemons registration in msm8974"
diff --git a/AndroidBoard.mk b/AndroidBoard.mk
index 4ec0eb9..dcd17a0 100644
--- a/AndroidBoard.mk
+++ b/AndroidBoard.mk
@@ -143,6 +143,25 @@
endif
#----------------------------------------------------------------------
+# ultrasound support
+#----------------------------------------------------------------------
+include $(CLEAR_VARS)
+LOCAL_MODULE := usf_post_boot.sh
+LOCAL_MODULE_TAGS := optional
+LOCAL_MODULE_CLASS := ETC
+LOCAL_SRC_FILES := $(LOCAL_MODULE)
+LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)
+include $(BUILD_PREBUILT)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := usf_settings.sh
+LOCAL_MODULE_TAGS := optional
+LOCAL_MODULE_CLASS := ETC
+LOCAL_SRC_FILES := $(LOCAL_MODULE)
+LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)
+include $(BUILD_PREBUILT)
+
+#----------------------------------------------------------------------
# extra images
#----------------------------------------------------------------------
include device/qcom/common/generate_extra_images.mk
diff --git a/init.target.rc b/init.target.rc
index e60faac..d7ef5b9 100644
--- a/init.target.rc
+++ b/init.target.rc
@@ -116,3 +116,42 @@
class late_start
user system
group system
+
+service usf_tester /system/bin/usf_tester
+ user system
+ group system inet
+ disabled
+
+service usf_epos /system/bin/usf_epos
+ user system
+ group system inet
+ disabled
+
+service usf_gesture /system/bin/usf_gesture
+ user system
+ group system inet
+ disabled
+
+service usf_p2p /system/bin/usf_p2p
+ user system
+ group system inet
+ disabled
+
+service usf_hovering /system/bin/usf_hovering
+ user system
+ group system inet
+ disabled
+
+service usf_proximity /system/bin/usf_proximity
+ user system
+ group system inet
+ disabled
+
+service usf-post-boot /system/bin/sh /system/etc/usf_post_boot.sh
+ class late_start
+ user root
+ disabled
+ oneshot
+
+on property:init.svc.bootanim=stopped
+ start usf-post-boot
diff --git a/usf_post_boot.sh b/usf_post_boot.sh
new file mode 100644
index 0000000..a769e23
--- /dev/null
+++ b/usf_post_boot.sh
@@ -0,0 +1,35 @@
+#!/system/bin/sh
+# Copyright (c) 2011-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:
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following
+# disclaimer in the documentation and/or other materials provided
+# with the distribution.
+# * Neither the name of The Linux Foundation nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+# BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+#
+
+dir0=/data/usf
+# Post-boot start of selected USF based calculators
+for i in $(cat $dir0/auto_start.txt); do
+ start $i
+done
diff --git a/usf_settings.sh b/usf_settings.sh
new file mode 100644
index 0000000..4e1dc03
--- /dev/null
+++ b/usf_settings.sh
@@ -0,0 +1,107 @@
+#!/system/bin/sh
+# Copyright (c) 2012-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:
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following
+# disclaimer in the documentation and/or other materials provided
+# with the distribution.
+# * Neither the name of The Linux Foundation nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+# BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+#
+
+dir0=/data/usf
+h_dir=$dir0/hovering
+g_dir=$dir0/gesture
+t_dir=$dir0/tester
+e_dir=$dir0/epos
+p2p_dir=$dir0/p2p
+prox_dir=$dir0/proximity
+ucm_dir=$dir0/ucm
+
+trigger_file=$dir0/form_factor.cfg
+
+if [ ! -e $trigger_file ]; then
+ # Configurations select upon the current platform
+ platform=`cat /sys/devices/system/soc/soc0/hw_platform`
+ type=""
+
+ case $platform in
+ "Liquid")
+ type="liquid"
+ ;;
+ "Fluid")
+ type="fluid"
+ ;;
+ "MTP")
+ type="mtp"
+ ;;
+ esac
+
+ ln -s $dir0/form_factor_"$type".cfg $dir0/form_factor.cfg
+ ln -s $t_dir/cfg_"$type" $t_dir/cfg
+ ln -s $e_dir/cfg_"$type" $e_dir/cfg
+ ln -s $h_dir/cfg_"$type" $h_dir/cfg
+ ln -s $p2p_dir/cfg_"$type" $p2p_dir/cfg
+ ln -s $g_dir/cfg_"$type" $g_dir/cfg
+ ln -s $prox_dir/cfg_"$type" $prox_dir/cfg
+
+ ln -s $e_dir/cfg/usf_epos_"$type".cfg $e_dir/usf_epos.cfg
+ ln -s $t_dir/cfg/usf_tester_epos_"$type".cfg $t_dir/usf_tester.cfg
+ ln -s $h_dir/cfg/usf_hovering_"$type".cfg $h_dir/usf_hovering.cfg
+ ln -s $p2p_dir/cfg/usf_p2p_"$type".cfg $p2p_dir/usf_p2p.cfg
+ ln -s $g_dir/cfg/usf_gesture_"$type".cfg $g_dir/usf_gesture.cfg
+ ln -s $prox_dir/cfg/usf_proximity_"$type".cfg $prox_dir/usf_proximity.cfg
+
+ rm /system/etc/snd_soc_msm/us_soc_msm
+ ln -s $ucm_dir/us_soc_msm_"$type" /system/etc/snd_soc_msm/us_soc_msm
+
+ # Form factor oriented PCM ports definition
+ pcm_list=`cat /proc/asound/pcm`
+ tx_rx_patterns="tx2- rx3-"
+ result=""
+
+ for pattern in $tx_rx_patterns; do
+ echo $pattern
+ ind="${pcm_list##*"$pattern"}"
+
+ case "$pcm_list" in
+ "$ind")
+ ind="0"
+ ;;
+
+ *)
+ ind="${ind/ *}"
+ ;;
+ esac
+ result=$result$ind" "
+ done
+ echo $result>$dir0/pcm_inds.txt
+ # Change permission for pcm_inds so that it could be only read by everyone
+ chmod 0444 $dir0/pcm_inds.txt
+
+ # The USF based calculators have system permissions
+ chown system $dir0/*
+ chown system $dir0/*/*
+ chown system $dir0/*/*/*
+fi
+
+chown system /dev/usf1