luckfox-pico-sdk/sysdrv/drv_ko/wifi/ssv6x5x/script/gpio_reset.sh
2023-08-08 20:36:47 +08:00

59 lines
1.6 KiB
Bash

#!/bin/bash
USB_PORT=
[[ $# -lt 1 || ( $1 != "on" && $1 != "off" ) ]] && echo "Usage: gpio_reset_on.sh on|off [FTDI_TTY_PORT]" && exit 1
reset_enable=$1
# If $2 is given, use it as the GPIO control port or use the one of the largest port ID.
if [ $# == 1 ]; then
port_id=0
if [ -d "/sys/module/ftdi_sio/drivers/usb-serial:ftdi_sio" ]; then
for tty_port in /sys/module/ftdi_sio/drivers/usb-serial\:ftdi_sio/ttyUSB* ; do
id=`echo $tty_port | sed -e s/.*ttyUSB//`
[ $id -gt $port_id ] && port_id=$id
done
fi
USB_PORT=ttyUSB${port_id}
echo Using ${USB_PORT} as the control GPIO port
else
USB_PORT=$2
fi
# Check if GPIO function is enabled in kernel FTDI serial driver.
if [ ! -d "/sys/module/ftdi_sio/drivers/usb-serial:ftdi_sio/${USB_PORT}" -o ! -d "/sys/class/tty/${USB_PORT}" ]; then
echo "No GPIO support for ${USB_PORT}."
exit 1
fi
# Find out the last GPIO # of this port
gpio_id=0
for gpio_chip in /sys/class/tty/${USB_PORT}/device/gpio/gpiochip*; do
gpio_id=`echo ${gpio_chip} | sed -e s/^.*gpiochip//`
gpio_id=`expr $gpio_id + 7`
done
# Make this GPIO port available
gpio=/sys/class/gpio/gpio${gpio_id}
if [ ! -d ${gpio} ]; then
echo Creating GPIO $gpio_id...
echo $gpio_id > /sys/class/gpio/export
fi
if [ -d ${gpio} ]; then
echo Using GPIO ${gpio} to control WiFi Reset.
dir=`cat ${gpio}/direction`
if [ $dir == in ]; then
echo "out" > ${gpio}/direction
fi
if [ $reset_enable == "on" ]; then
echo 0 > ${gpio}/value
else
echo 1 > ${gpio}/value
fi
else
echo "Failed to enable GPIO to control WiFi."
exit 1
fi
exit 0