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