summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Klug <john.klug@multitech.com>2016-09-20 18:08:47 -0500
committerJohn Klug <john.klug@multitech.com>2016-09-20 18:08:47 -0500
commitb93e7a6eeb3b9db0a211bcc8eaf406063040c069 (patch)
treefc02158b52bd5cee97547449df0c0c390a23dd08
parentb5814feebe6315286cecbe23eea27f12e7dd0528 (diff)
downloadmeta-multitech-b93e7a6eeb3b9db0a211bcc8eaf406063040c069.tar.gz
meta-multitech-b93e7a6eeb3b9db0a211bcc8eaf406063040c069.tar.bz2
meta-multitech-b93e7a6eeb3b9db0a211bcc8eaf406063040c069.zip
Bring mts-io.init up to speed and fix radio reset
-rw-r--r--recipes-bsp/multitech/mts-io/mts-io.init135
1 files changed, 122 insertions, 13 deletions
diff --git a/recipes-bsp/multitech/mts-io/mts-io.init b/recipes-bsp/multitech/mts-io/mts-io.init
index f27415c..03bb5b0 100644
--- a/recipes-bsp/multitech/mts-io/mts-io.init
+++ b/recipes-bsp/multitech/mts-io/mts-io.init
@@ -1,15 +1,88 @@
#!/bin/bash
+### BEGIN INIT INFO
+# Provides: mts-io
+# Default-Start: S
+# Default-Stop:
+# Short-Description: load the mts-io driver
+# Description: mts-io driver initializes the Conduit hardware and
+# provides user mode access through the driver to the
+# Conduit features.
+### END INIT INFO
+
+((fail=0))
sysdir=/sys/devices/platform/mts-io
+gpiodir=/sys/class/gpio
+
+USBRST=${sysdir}/usbhub-reset
+
+RST[0]="${sysdir}/mtq-reset"
+RST[1]="${sysdir}/ap1-reset"
+RST[2]="${sysdir}/ap2-reset"
+RST[3]="${sysdir}/gnss-reset"
+RST[4]="${sysdir}/secure-reset"
+RST[5]="${sysdir}/eth-reset"
+RS9113RST="${sysdir}/wifi-bt-reset"
+
+USLPTIME=30000 # 30 milliseconds from Redpine Signals Reset Spec
+WAIT="/bin/busybox usleep ${USLPTIME}"
+reset_path() {
+ pin=$1
+ /usr/bin/logger -t "mts-io" -p info Reset $pin
+
+ if [[ -f ${pin} ]] ; then
+ if ! ( (echo 1 >${pin}) && (echo 0 >${pin}) && ${WAIT} && (echo 1 >${pin}) ) ; then
+ /usr/bin/logger -t "mts-io" -p error -s "Failed write to ${pin}"
+ fi
+ else
+ /usr/bin/logger -t "mts-io" -p error -s "${pin} does not exist"
+ return 1
+ fi
+ return 0
+}
+reset_array() {
+ ((i=${#RST[@]}-1))
+ while ((i>=0)) ; do
+ if [[ -f ${RST[$i]} ]] ; then
+ if ! ( (echo 1 >${RST[i]}) ) ; then
+ /usr/bin/logger -t "mts-io" -p error -s "Failed write to ${RST[$i]}"
+ fi
+ else
+ /usr/bin/logger -t "mts-io" -p info -s "${RST[$i]} does not exist"
+ RST[$i]=""
+ fi
+ ((i--))
+ done
+ while ((i>0)) ; do
+ if ((${#RST[$i] > 0)) && [[ -f ${RST[$i]} ]] ; then
+ if ! ( (echo 0 >${RST[i]}) ) ; then
+ /usr/bin/logger -t "mts-io" -p error -s "Failed write to ${RST[$i]}"
+ fi
+ else
+ /usr/bin/logger -t "mts-io" -p info -s "${RST[$i]} does not exist"
+ fi
+ done
+ ${WAIT}
+ while ((i>0)) ; do
+ if ((${#RST[$i] > 0)) && [[ -f ${RST[$i]} ]] ; then
+ if ! ( (echo 1 >${RST[i]}) ) ; then
+ /usr/bin/logger -t "mts-io" -p error -s "Failed write to ${RST[$i]}"
+ fi
+ else
+ /usr/bin/logger -t "mts-io" -p info -s "${RST[$i]} does not exist"
+ fi
+ done
+}
read_card_info() {
ap1_product_id=""
ap2_product_id=""
+ mts_hw_version=""
- if [ -d $sysdir/ap1 ]; then
+ if [[ -d $sysdir/ap1 ]]; then
ap1_product_id=$(cat $sysdir/ap1/product-id)
fi
- if [ -d $sysdir/ap2 ]; then
+ if [[ -d $sysdir/ap2 ]]; then
ap2_product_id=$(cat $sysdir/ap2/product-id)
fi
}
@@ -17,18 +90,18 @@ read_card_info() {
mfser_init() {
found_ap1=0
- if [[ "$ap1_product_id" =~ ^MTAC-MFSER- ]]; then
- echo "mts-io: Linking /dev/mfser to /dev/ttyAP1"
+ if [[ $ap1_product_id =~ ^MTAC-MFSER- ]]; then
+ /usr/bin/logger -t "mts-io" -p info -s "Linking /dev/mfser to /dev/ttyAP1"
ln -sf /dev/ttyAP1 /dev/mfser
found_ap1=1
fi
- if [[ "$ap2_product_id" =~ ^MTAC-MFSER- ]]; then
+ if [[ $ap2_product_id =~ ^MTAC-MFSER- ]]; then
if [[ $found_ap1 = 1 ]]; then
- echo "mts-io: Linking /dev/mfser-2 to /dev/ttyAP2"
+ /usr/bin/logger -t "mts-io" -p info -s "Linking /dev/mfser-2 to /dev/ttyAP2"
ln -sf /dev/ttyAP2 /dev/mfser-2
else
- echo "mts-io: Linking /dev/mfser to /dev/ttyAP2"
+ /usr/bin/logger -t "mts-io" -p info -s "Linking /dev/mfser to /dev/ttyAP2"
ln -sf /dev/ttyAP2 /dev/mfser
fi
fi
@@ -37,21 +110,57 @@ mfser_init() {
case $1 in
start)
- echo "Loading mts-io module"
- modprobe mts_io
+ /usr/bin/logger -t "mts-io" -p info -s "Loading mts-io module"
+ if ! modprobe mts_io ; then
+ ((fail++))
+ fi
read_card_info
+ if ! reset_path $USBRST ; then
+ ((fail++))
+ fi
+ /bin/busybox usleep 100000
+ reset_array
+ mts-io-sysfs store radio-reset 0
mfser_init
+ if ! reset_path $RS9113RST ; then
+ ((fail++))
+ fi
+
+ if ((fail == 0)) ; then
+ echo "OK"
+ else
+ echo "FAIL"
+ fi
+ exit $fail
;;
stop)
- echo "Unloading mts-io module"
+ /usr/bin/logger -t "mts-io" -p info -s "Unloading mts-io module"
modprobe -r mts_io
+ RETVAL=$?
+ if ((RETVAL == 0)) ; then
+ echo "OK"
+ else
+ echo "FAIL"
+ fi
;;
-
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+ status)
+ if [[ -d ${sysdir} ]] ; then
+ echo Driver is loaded
+ exit 0
+ else
+ echo Driver is not loaded
+ exit 3
+ fi
+ ;;
*)
- echo "Usage: $0 {start|stop}"
+ echo "Usage: $0 {start|stop|status|restart}"
exit 2
;;
esac
-