diff options
Diffstat (limited to 'recipes-bsp/multitech/mts-io/mts-io.init')
-rwxr-xr-x | recipes-bsp/multitech/mts-io/mts-io.init | 405 |
1 files changed, 0 insertions, 405 deletions
diff --git a/recipes-bsp/multitech/mts-io/mts-io.init b/recipes-bsp/multitech/mts-io/mts-io.init deleted file mode 100755 index 966d5ae..0000000 --- a/recipes-bsp/multitech/mts-io/mts-io.init +++ /dev/null @@ -1,405 +0,0 @@ -#!/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 - -. /etc/default/mts-io - -i2c=/sys/bus/i2c/devices/ -GPSCONFIGTYPE="/var/run/config/gpstype" -DEVTREE="/sys/kernel/config/device-tree/overlays/" - -((fail=0)) -# To log debug, set LOGDBG to /usr/bin/LOGGER -if ((DEBUG)) ; then - LOGDBG=/usr/bin/logger - ${LOGDBG} -t "mts-io" -p daemon.info -s "LOGDBG turned on" -else - LOGDBG=":" -fi - -hw="" -hw_name="" -MTAC_MODULES="" -((HASAP=0)) - -sethwtype() { - # mts-io must be loaded before trying this - hw=$(${SYSFS} show hw-version) - hw_name=(${hw//-/ }) - - # Only MTCDT and MTCDTIP have accessory cards, and - # MTCDTIPHP does not have accessory cards. - ((HASAP==0)) - case $hw_name in - MTCDTIPHP) - ;; - MTCDT|MTCDTIP) - ((HASAP = 1)) - ;; - *) - ;; - esac - MTAC_MODULES=$(cd /lib/modules/$(uname -r)/extra/;ls mtac_* 2>/dev/null) -} - -setdevtree() { - # add device tree overlays, if they exist. - [[ -d /lib/dtoverlays ]] || return 1 - ( - cd /lib/dtoverlays - for f in $(ls ${hw}*) ; do - if ! [[ -d ${DEVTREE} ]] ; then - mount configfs - fi - f1=${f/#${hw}-/} - f2=${f1/%.dtbo} - # f2 is the extracted device name - /bin/mkdir ${DEVTREE}/$f2 - /bin/cat $f >${DEVTREE}/$f2/dtbo - done - ) -} - - -SYSFS="/usr/sbin/mts-io-sysfs" -LRST="/usr/sbin/mts-util-lora2-reset" - -${LOGDBG} -p daemon.info 'mts-io script' -sysdir=/sys/devices/platform/mts-io -gpiodir=/sys/class/gpio -port1=${sysdir}/ap1 -port2=${sysdir}/ap2 - -USBRST=${sysdir}/usbhub-reset -NEED_I2C_RESET=0 -HWVER="" -HWNAME="" -HWLVL="" - - -RST[0]="${sysdir}/wifi-bt-reset" -RST[1]="${sysdir}/mtq-reset" -RST[2]="${sysdir}/ap1/reset" -RST[3]="${sysdir}/ap1/creset" -RST[4]="${sysdir}/ap2/reset" -RST[5]="${sysdir}/ap2/creset" -RST[6]="${sysdir}/secure-reset" -RST[7]="${sysdir}/eth-reset" -RST[8]="${sysdir}/sm1-reset" - -# GPSGNSSRESET is now set low during boot and is special cased. -#if ((GPSGNSSRESET)) ; then -# RST[9]="${sysdir}/gnss-reset" -#fi - -WPIN[0]="${sysdir}/ap1/cdone" -WPIN[1]="${sysdir}/ap2/cdone" - -USLPTIME=60000 # 30 milliseconds from Redpine Signals Reset Spec -WAIT="/bin/busybox usleep ${USLPTIME}" - -# Wait 10 WAIT intervals for pins to come high -waitpins() { - ((i=0)) - while((i < ${#WPIN[@]})) ; do - ((j=0)) - while [[ -r ${WPIN[$i]} ]] && ! (($(cat ${WPIN[$i]}))) ; do - logger -t "mts-io" -p daemon.error -s "Wait on ${WPIN[$i]}" - ${WAIT} - ((j++)) - if ((j > 10)) ; then - ((fail++)) - ${LOGDBG} -t "mts-io" -p daemon.error -s "Ready failure on ${WPIN[$i]}" - break - fi - done - ((i++)) - done -} - -reset_path() { - pin=$1 - ${LOGDBG} -t "mts-io" -p daemon.info Reset $pin - if [[ -f ${pin} ]] ; then - if ! ( (echo 1 >${pin}) && ${WAIT} && (echo 0 >${pin}) && ${WAIT} && (echo 1 >${pin}) ) ; then - /usr/bin/logger -t "mts-io" -p daemon.error -s "Failed write to ${pin}" - return 1 - fi - sleep 2 - - ${LOGDBG} -t "mts-io" -p daemon.info Completeed reset $pin - else - ${LOGDBG} -t "mts-io" -p daemon.info "${pin} does not exist" - 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 daemon.error -s "Failed write to ${RST[$i]}" - fail=1 - else - ${LOGDBG} -t "mts-io" -p daemon.error -s "Wrote 1 to ${RST[$i]}" - fi - else - ${LOGDBG} -t "mts-io" -p daemon.info "${RST[$i]} does not exist" - RST[$i]="" - fi - ((i--)) - done - ((DBG)) && (cd $sysdir ; head gnss-reset eth-reset wifi-bt-reset usbhub-reset | logger -p daemon.info) - ((i=${#RST[@]}-1)) - while ((i>=0)) ; do - ${LOGDBG} -s -p daemon.info "i value is $i RST is ${RST[$i]} count is ${#RST[$i]}" - if ((${#RST[$i]} > 0)) && [[ -f ${RST[$i]} ]] ; then - if ! ( (echo 0 >${RST[i]}) ) ; then - /usr/bin/logger -t "mts-io" -p daemon.error -s "Failed write to ${RST[$i]}" - fail=1 - else - ${LOGDBG} -t "mts-io" -p daemon.error -s "Wrote 0 to ${RST[$i]}" - : - fi - else - ${LOGDBG} -t "mts-io" -p daemon.info "${RST[$i]} does not exist" - fi - ((i--)) - done - ${WAIT} - ((DBG)) && (cd $sysdir ; head gnss-reset eth-reset wifi-bt-reset usbhub-reset | logger -p daemon.info) - ((i=${#RST[@]}-1)) - 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 daemon.error -s "Failed write to ${RST[$i]}" - fail=1 - else - ${LOGDBG} -t "mts-io" -p daemon.error -s "Wrote 1 to ${RST[$i]}" - fi - else - ${LOGDBG} -t "mts-io" -p daemon.info "${RST[$i]} does not exist" - fi - ((i--)) - done - ((DBG)) && (cd $sysdir ; head gnss-reset eth-reset wifi-bt-reset usbhub-reset | logger -p daemon.info) - return $fail -} -read_card_info() { - ap1_product_id="" - ap2_product_id="" - - if [[ -d $sysdir/ap1 ]]; then - ap1_product_id=$(cat $sysdir/ap1/product-id) - fi - if [[ -d $sysdir/ap2 ]]; then - ap2_product_id=$(cat $sysdir/ap2/product-id) - fi - - lora_hw=$(${SYSFS} show lora/hw-version 2> /dev/null) - - if [ -d $port1 ] && [[ $(cat $port1/hw-version) = $lora_hw ]]; then - modprobe spidev - ln -sf /dev/spidev32766.2 /dev/spidev0.0 - elif [ -d $port2 ] && [[ $(cat $port2/hw-version) = $lora_hw ]]; then - modprobe spidev - ln -sf /dev/spidev32765.2 /dev/spidev0.0 - elif [[ ${hw_name} == MTCAP ]]; then - modprobe spidev - elif [[ ${hw_name} == MTCDTIPHP ]]; then - modprobe spidev - ln -sf /dev/spidev32766.2 /dev/spidev0.0 - fi -} - -mfser_init() { - found_ap1=0 - - if [[ $ap1_product_id =~ ^MTAC-MFSER- ]]; then - /usr/bin/logger -t "mts-io" -p daemon.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 [[ $found_ap1 = 1 ]]; then - /usr/bin/logger -t "mts-io" -p daemon.info -s "Linking /dev/mfser-2 to /dev/ttyAP2" - ln -sf /dev/ttyAP2 /dev/mfser-2 - else - /usr/bin/logger -t "mts-io" -p daemon.info -s "Linking /dev/mfser to /dev/ttyAP2" - ln -sf /dev/ttyAP2 /dev/mfser - fi - fi - -} - -set_gpslink() { - [[ -d /var/run/config ]] || mkdir /var/run/config - gpscap=$(cat ${sysdir}/capability/gps) - - # For all hardware except MTCDTIPHP, the gpscapability - # flag indicates whether or not we have a GPS. - if ! [[ ${hw_name} =~ ^MTCDTIPHP$ ]] && ((gpscap == 0)) ; then - return - fi - - # Oldest MTRV1 uses venuse on ttyS1. - if [[ ${hw_name} == MTRV1 ]] && [[ ${hw} != MTRV1-0.0 ]] ; then - ln -sf /dev/ttyXRUSB0 /dev/gps0 - echo "u-blox" >"$GPSCONFIGTYPE" - return - fi - - if [[ ${hw_name} == MTR ]] || [[ ${hw_name} == MTRV1 ]] || [[ ${hw_name} == MTHS ]] ; then - ln -sf /dev/ttyS1 /dev/gps0 - echo "venus" >"$GPSCONFIGTYPE" - return - fi - - if [[ ${hw} == MTCDT ]] && [[ ${HWLVL} == 0.0 ]] ; then - # No GPS - return - fi - if [[ ${hw_name} == MTCDTIPHP ]] ; then - NEED_I2C_RESET=1 - ln -sf /dev/ttyXRUSB0 /dev/gps0 - return - fi - # Default MTCDT-0.1 - echo "u-blox" >"$GPSCONFIGTYPE" - ln -sf /dev/ttyXRUSB2 /dev/gps0 -} - -case $1 in - start) - # Point the firmware API at our i2c EEPROMs - echo -n ${i2c} > /sys/module/firmware_class/parameters/path - - /usr/bin/logger -t "mts-io" -p daemon.info -s "Loading mts-io module" - if ! modprobe mts_io ; then - ((fail++)) - fi - - sethwtype - setdevtree - - if ((HASAP == 1)) ; then - # install mtac explicitly or any unused modules will cause - # junk to the log as mtac is loaded and unloaded each time. - modprobe mtac - for f in ${MTAC_MODULES} ; do - modprobe ${f//.ko} 2>&1 | grep -v 'No such device or address' - done - fi - set_gpslink # Set GPS symlink. - /usr/bin/logger -t "mts-io" -p daemon.info -s "Resetting system modules" - read_card_info - has_gnss_reset=0 - # On boot, gnss-reset will be low - if [[ -f ${sysdir}/gnss-reset ]] ; then - if (($(mts-io-sysfs show gnss-reset) == 1)) ; then - mts-io-sysfs store gnss-reset 0 - fi - has_gnss_reset=1 - fi - /bin/busybox usleep $USLPTIME - reset_array - if ((has_gnss_reset)) ; then - mts-io-sysfs store gnss-reset 1 - fi - # use radio-reset init script for radio-reset - mfser_init - - waitpins - # Fix Telit error -62 and Redpine wrong USB speed detection on reset. - sleep 1 - if ! reset_path $USBRST ; then - ((fail++)) - fi - - if ((${#lora_hw} > 0)) && [[ ${lora_hw} =~ ^MTCDTIPHP-LORA-2\.1 ]] ; then - if [[ -x ${LRST} ]] ; then - ${LRST} -g -f - else - /usr/bin/logger -t "mts-io" -p daemon.err -s "ERROR: Missing ${LRST} -- Cannot initialize LoRa." - fi - fi - - if [[ -d ${DEVTREE} ]] ; then - /bin/umount configfs - fi - - if ((fail == 0)) ; then - echo "OK" - else - echo "FAIL" - fi - exit $fail - ;; - - stop) - /usr/bin/logger -t "mts-io" -p daemon.info -s "Unloading mtac modules and mts-io module" - MTAC_MODULES=$(lsmod | grep '^mtac_' | sed -e 's/_/-/' -e 's/ .*//') - - for f in ${MTAC_MODULES} ; do - if ! modprobe -r "$f" ; then - rmmod "$f" - fi - done - if ! modprobe -r mtac ; then - rmmod mtac - fi - - if ! modprobe -r mts-io ; then - rmmod mtsio - fi - RETVAL=$? - if ((RETVAL == 0)) ; then - echo "OK" - else - echo "FAIL" - fi - ;; - restart) - $0 stop - sleep 1 - $0 start - ;; - reload) - /usr/bin/logger -t "mts-io" -p daemon.info -s "Resetting system modules" - if ! reset_path $USBRST ; then - ((fail++)) - fi - /bin/busybox usleep $USLPTIME - reset_array - # Use radio-reset init script for radio-reset - mfser_init - if ((fail == 0)) ; then - echo "OK" - else - echo "FAIL" - fi - exit $fail - ;; - 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|status|restart}" - exit 2 - ;; -esac - |