diff options
author | John Klug <john.klug@multitech.com> | 2020-09-18 14:34:11 -0500 |
---|---|---|
committer | John Klug <john.klug@multitech.com> | 2020-09-18 14:34:11 -0500 |
commit | 401251df79b7b22fcb3c04af82db5e1e1da3ce6c (patch) | |
tree | 205ef83cf3172195fb30fd96f3eae5a2d35f5c20 /recipes-bsp/multitech/mts-io | |
parent | 4be1e14de42544d08ad7107bbe7208efc91d462d (diff) | |
download | meta-multitech-401251df79b7b22fcb3c04af82db5e1e1da3ce6c.tar.gz meta-multitech-401251df79b7b22fcb3c04af82db5e1e1da3ce6c.tar.bz2 meta-multitech-401251df79b7b22fcb3c04af82db5e1e1da3ce6c.zip |
Move overlay code from mts-io to mt-dt-overlay
Diffstat (limited to 'recipes-bsp/multitech/mts-io')
-rwxr-xr-x | recipes-bsp/multitech/mts-io/mts-io | 115 | ||||
-rw-r--r-- | recipes-bsp/multitech/mts-io/mts-io.mtcap.init | 37 |
2 files changed, 130 insertions, 22 deletions
diff --git a/recipes-bsp/multitech/mts-io/mts-io b/recipes-bsp/multitech/mts-io/mts-io new file mode 100755 index 0000000..d33e5f4 --- /dev/null +++ b/recipes-bsp/multitech/mts-io/mts-io @@ -0,0 +1,115 @@ +#!/bin/bash + +. /etc/default/mts-io + +sysdir=/sys/devices/platform/mts-io + +i2c=/sys/bus/i2c/devices/ + +SYSFS="/usr/sbin/mts-io-sysfs" + +setwificap() { + WIFICAP=0 + if [[ -f ${sysdir}/capability/wifi ]] && (($(cat ${sysdir}/capability/wifi) == 1)) ; then + WIFICAP=1 + fi +} + +lora_init() { + # reset lora chip + mts-io-sysfs store lora/reset 1 + mts-io-sysfs store lora/reset 0 + usleep 100000 + mts-io-sysfs store lora/reset 1 +} + +eth_init() { + # reset eth phy + mts-io-sysfs store eth-reset 1 + mts-io-sysfs store eth-reset 0 + usleep 100000 + mts-io-sysfs store eth-reset 1 +} + +# Normal state when powered up +wifi_init1() { + (($WIFICAP)) || return 0 + # reset wlan + mts-io-sysfs store wlan-rst 0 + # disable wlan + mts-io-sysfs store wlan-en 0 +} + +wifi_init2() { + (($WIFICAP)) || return 0 + mts-io-sysfs store wlan-en 1 + usleep 30000 # 30mS according to WILC1000 spec. + mts-io-sysfs store wlan-rst 1 +} + +GNSS_RESET=${sysdir}/gnss-reset +gnss_init() { + set -x + ((GPSGNSSRESET)) || return 0 + USLPTIME=60000 + if [[ -f $GNSS_RESET ]] ; then + echo 0 >$GNSS_RESET + usleep $USLPTIME + echo 1 >$GNSS_RESET + fi +} + + +cell_init() { + # remove /dev/modem_at[0,1] symlinks + rm -f /dev/modem_at[0,1] + + if [ -w /sys/devices/platform/mts-io/radio-power ] ; then + # power down the cellular chip gracefully + mts-io-sysfs store radio-power 0 + # power up the cellular chip + mts-io-sysfs store radio-power 1 + fi +} + +start_lora_led_updater() { + lora-led-updater & +} + +case $1 in + start) + # SPI driver for LoRa + modprobe spidev + # Point the firmware API at our i2c EEPROMs + echo -n ${i2c} > /sys/module/firmware_class/parameters/path + echo "Loading mts-io module" + modprobe -r atmel_mci + # Point the firmware API at our i2c EEPROMs + echo -n ${i2c} > /sys/module/firmware_class/parameters/path + modprobe mts_io + setwificap + wifi_init1 + lora_init + eth_init + cell_init & + start_lora_led_updater + wifi_init2 + gnss_init + modprobe atmel_mci + (($WIFICAP)) && modprobe wilc1000 + (($WIFICAP)) && modprobe wilc1000-sdio + ;; + + stop) + echo "Unloading mts-io module" + wifi_init1 # Power down wifi + modprobe -r wilc1000 >/dev/null 2>&1 + modprobe -r wilc1000-sdio >/dev/null 2>&1 + modprobe -r mts_io >/dev/null 2>&1 + ;; + + *) + echo "Usage: $0 {start|stop}" + exit 2 + ;; +esac diff --git a/recipes-bsp/multitech/mts-io/mts-io.mtcap.init b/recipes-bsp/multitech/mts-io/mts-io.mtcap.init index 2642de9..d33e5f4 100644 --- a/recipes-bsp/multitech/mts-io/mts-io.mtcap.init +++ b/recipes-bsp/multitech/mts-io/mts-io.mtcap.init @@ -1,10 +1,11 @@ #!/bin/bash +. /etc/default/mts-io + sysdir=/sys/devices/platform/mts-io i2c=/sys/bus/i2c/devices/ -DEVTREE="/sys/kernel/config/device-tree/overlays/" SYSFS="/usr/sbin/mts-io-sysfs" setwificap() { @@ -46,6 +47,18 @@ wifi_init2() { mts-io-sysfs store wlan-rst 1 } +GNSS_RESET=${sysdir}/gnss-reset +gnss_init() { + set -x + ((GPSGNSSRESET)) || return 0 + USLPTIME=60000 + if [[ -f $GNSS_RESET ]] ; then + echo 0 >$GNSS_RESET + usleep $USLPTIME + echo 1 >$GNSS_RESET + fi +} + cell_init() { # remove /dev/modem_at[0,1] symlinks @@ -63,26 +76,6 @@ start_lora_led_updater() { lora-led-updater & } -setdevtree() { - hw=$(${SYSFS} show hw-version) - - # 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 - ) -} - case $1 in start) # SPI driver for LoRa @@ -94,7 +87,6 @@ case $1 in # Point the firmware API at our i2c EEPROMs echo -n ${i2c} > /sys/module/firmware_class/parameters/path modprobe mts_io - setdevtree setwificap wifi_init1 lora_init @@ -102,6 +94,7 @@ case $1 in cell_init & start_lora_led_updater wifi_init2 + gnss_init modprobe atmel_mci (($WIFICAP)) && modprobe wilc1000 (($WIFICAP)) && modprobe wilc1000-sdio |