From b97b50d6ec47b5c239c468f9b799aa26f0f5be4b Mon Sep 17 00:00:00 2001
From: guowenxue <guowenxue@gmail.com>
Date: Thu, 14 Apr 2022 11:11:26 +0800
Subject: [PATCH] add gpio control scripts

---
 booster/test/gpio-scripts/pinloop.sh       |   42 +++++++
 booster/test/gpio-scripts/pinctrl-rzboard  |  144 ++++++++++++++++++++++++
 booster/test/gpio-scripts/pinctrl-igkboard |  144 ++++++++++++++++++++++++
 3 files changed, 330 insertions(+), 0 deletions(-)

diff --git a/booster/test/gpio-scripts/pinctrl-igkboard b/booster/test/gpio-scripts/pinctrl-igkboard
new file mode 100755
index 0000000..8236472
--- /dev/null
+++ b/booster/test/gpio-scripts/pinctrl-igkboard
@@ -0,0 +1,144 @@
+#!/bin/bash
+# This shell script used to control GPIO port on IGKBoard
+
+direction=out
+sysdir=/sys/class/gpio/
+pinbase=0
+groupin=32
+
+pinnum=
+pindir=
+action=
+
+set -u
+
+# RedLed: GPIO01_IO11  GreenLed: GPIO01_IO10 BlueLed: GPIO05_IO09
+function usage()
+{
+   echo "Show pinmap Usage: $0 [-v]" 
+   echo "Output set  Usage: $0 GPIO01_IO11 [1/0]" 
+   echo "Input read  Usage: $0 [-i] GPIO01_IO11" 
+   echo "Unexport    Usage: $0 [-u] GPIO01_IO11" 
+   exit;
+}
+
+function show_pinmap()
+{
+   echo "
++-------------+-------------+---IGKBoard---+-------------+-------------+
+|    GPIO     |     Name    |   Physical  |     Name    |    GPIO     |
++-------------+-------------+-----++------+-------------+-------------+
+|     3.3v    |     3.3v    |   1 ||  2   |     5v      |     5v      |   
+| GPIO01_IO03 |   I2C1_SDA  |   3 ||  4   |     5v      |     5v      |
+| GPIO01_IO02 |   I2C1_SCL  |   5 ||  6   |     GND     |     GND     |
+| GPIO01_IO18 |     GPIO    |   7 ||  8   |  UART2_TX   | GPIO01_IO20 |
+|     GND     |     GND     |   9 ||  10  |  UART2_RX   | GPIO01_IO21 |
+| GPIO01_IO24 |   UART3_TX  |  11 ||  12  |  UART3_RX   | GPIO01_IO25 |
+| GPIO01_IO28 |   UART4_TX  |  13 ||  14  |     GND     |     GND     |
+| GPIO01_IO29 |   UART4_RX  |  15 ||  16  |  UART7_TX   | GPIO03_IO21 |
+|     3.3v    |     3.3v    |  17 ||  18  |  UART7_RX   | GPIO03_IO22 |
+| GPIO03_IO27 |   SPI1_MOSI |  19 ||  20  |     GND     |     GND     |
+| GPIO03_IO28 |   SPI1_MISO |  21 ||  22  |     GPIO    | GPIO03_IO23 |
+| GPIO03_IO25 |   SPI1_SCLK |  23 ||  24  |  SPI1_SS0   | GPIO03_IO26 |  
+|     GND     |     GND     |  25 ||  26  |     GPIO    | GPIO03_IO24 |
+| GPIO01_IO26 |   CAN1_TX   |  27 ||  28  |     PWM8    | GPIO01_IO15 |
+| GPIO01_IO27 |   CAN1_RX   |  29 ||  30  |     GND     |     GND     |
+| GPIO01_IO22 |   CAN2_TX   |  31 ||  32  |     PWM7    | GPIO01_IO14 |
+| GPIO01_IO23 |   CAN2_RX   |  33 ||  34  |     GND     |     GND     |
+| GPIO05_IO01 |     GPIO    |  35 ||  36  |     GPIO    | GPIO01_IO11 |
+| GPIO05_IO08 |     GPIO    |  37 ||  38  |     GPIO    | GPIO01_IO10 |
+|     GND     |     GND     |  39 ||  40  |     GPIO    | GPIO05_IO09 |
++-------------+-------------+---IGKBoard--+-------------+-------------+
+|    GPIO     |     Name    |   Physical  |     Name    |    GPIO     |
++-------------+-------------+-----++------+-------------+-------------+
+"
+   exit 0;
+}
+
+function calc_pinum()
+{
+   pinstr=$1
+
+   group=`echo $pinstr | cut -d_ -f1 | tr -cd "[0-9]"`
+   pin=`echo $pinstr | cut -d_ -f2 | tr -cd "[0-9]"`
+   
+
+   group=`expr $group \- 1`
+   pinum=`expr $group \* $groupin + $pin + $pinbase`
+   pindir=$sysdir/gpio$pinum
+
+   #echo "INFO: GPIO $pinstr map to pinum[$pinum]"
+}
+
+function export_gpio()
+{
+    if [ -e $pindir ] ; then
+       return ;
+    fi
+
+    echo $pinum > $sysdir/export
+}
+
+function unexport_gpio()
+{
+    if [ ! -e $pindir ] ; then
+       return ;
+    fi
+
+    echo $pinum > $sysdir/unexport
+}
+
+function set_gpio()
+{
+    echo out > $pindir/direction
+    echo $1 > $pindir/value
+}
+
+function read_gpio()
+{
+    echo in > $pindir/direction
+    cat $pindir/value
+}
+
+if [ $# -lt 1 ] ; then
+   usage;
+fi
+
+while getopts "iuvh" OPTNAME
+do
+    case "${OPTNAME}" in
+        "i")
+           direction=in
+           shift
+           ;;
+
+        "u")
+           action=unexport;
+           shift
+           ;;
+
+        "v")
+           show_pinmap;
+           shift
+           ;;
+
+        "h")
+           usage;
+           ;;
+    esac
+done
+
+calc_pinum $1
+
+if [[ $action == unexport ]] ; then
+   unexport_gpio
+   exit;
+fi
+
+export_gpio
+
+if [ $direction == in ] ; then
+   read_gpio
+else
+   set_gpio $2
+fi
diff --git a/booster/test/gpio-scripts/pinctrl-rzboard b/booster/test/gpio-scripts/pinctrl-rzboard
new file mode 100755
index 0000000..facd6cf
--- /dev/null
+++ b/booster/test/gpio-scripts/pinctrl-rzboard
@@ -0,0 +1,144 @@
+#!/bin/bash
+# This shell script used to control GPIO port on RzBoard
+
+direction=out
+sysdir=/sys/class/gpio/
+pinbase=120
+groupin=8
+
+pinnum=
+pindir=
+action=
+
+set -u
+set -e
+
+# RedLed: P8_1  GreenLed: P17_2 BlueLed: P19_1
+# UserKey: P39_0
+function usage()
+{
+   echo "Show pinmap Usage: $0 [-v]"
+   echo "Output set  Usage: $0 P9_1 [1/0]"
+   echo "Input read  Usage: $0 [-i] P9_1"
+   echo "Unexport    Usage: $0 [-u] P9_1"
+   exit;
+}
+
+function show_pinmap()
+{
+   echo "
+ +--------------------+--RzBoard--+--------------------+
+ |      Name/GPIO     |  Physical |      Name/GPIO     |
+ +--------------------+-----++----+--------------------+
+ |        3.3v        |   1 ||  2 |         5v         |
+ |      SDA2(P3_0)    |   3 ||  4 |         5v         |
+ |      SCL2(P3_1)    |   5 ||  6 |        GND         |
+ |     GPIO(P12_0)    |   7 ||  8 |     TXD2(P48_0)    |
+ |        GND         |   9 || 10 |     RXD2(P48_1)    |
+ |     SCL3(P48_3)    |  11 || 12 |     GPIO(P17_1)    |
+ |     SDA3(P48_2)    |  13 || 14 |        GND         |
+ |     GPIO(P17_0)    |  15 || 16 |     GPIO(P13_2)    |
+ |        3.3v        |  17 || 18 |     GPIO(P14_0)    |
+ |  SPI1_MOSI(P44_1)  |  19 || 20 |        GND         |
+ |  SPI1_MISO(P44_2)  |  21 || 22 |     GPIO(P39_1)    |
+ |  SPI1_CLK(P44_0)   |  23 || 24 |    SPI1_SS(P44_3)  |
+ |        GND         |  25 || 26 |     GPIO(P0_1)     |
+ |     GPIO(P14_1)    |  27 || 28 |     GPIO(P46_3)    |
+ |     GPIO(P42_3)    |  29 || 30 |        GND         |
+ |     GPIO(P42_4)    |  31 || 32 |     GPIO(P15_1)    |
+ |     GPIO(P10_0)    |  33 || 34 |        GND         |
+ |     GPIO(P9_1)     |  35 || 36 |     RTS2(P48_4)    |
+ |     GPIO(P13_1)    |  37 || 38 |   CAN0_RX(P11_0)   |
+ |        GND         |  39 || 40 |   CAN0_TX(P10_1)   |
+ +--------------------+-----++----+--------------------+
+ |      Name/GPIO     |  Physical |      Name/GPIO     |
+ +--------------------+--RzBoard--+--------------------+
+ "
+   exit 0;
+}
+
+function calc_pinum()
+{
+   pinstr=$1
+
+   group=`echo $pinstr | cut -d_ -f1 | tr -cd "[0-9]"`
+   pin=`echo $pinstr | cut -d_ -f2 | tr -cd "[0-9]"`
+   
+   pinum=`expr $group \* $groupin + $pin + $pinbase`
+   pindir=$sysdir/gpio$pinum
+
+   #echo "INFO: GPIO $pinstr map to pinum[$pinum]"
+}
+
+function export_gpio()
+{
+    if [ -e $pindir ] ; then
+       return ;
+    fi
+
+    echo $pinum > $sysdir/export
+}
+
+function unexport_gpio()
+{
+    if [ ! -e $pindir ] ; then
+       return ;
+    fi
+
+    echo $pinum > $sysdir/unexport
+}
+
+function set_gpio()
+{
+    echo out > $pindir/direction
+    echo $1 > $pindir/value
+}
+
+function read_gpio()
+{
+    echo in > $pindir/direction
+    cat $pindir/value
+}
+
+if [ $# -lt 1 ] ; then
+   usage;
+fi
+
+while getopts "iuvh" OPTNAME
+do
+    case "${OPTNAME}" in
+        "i")
+           direction=in
+           shift
+           ;;
+
+        "u")
+           action=unexport;
+           shift
+           ;;
+
+        "v")
+           show_pinmap;
+           shift
+           ;;
+
+        "h")
+           usage;
+           ;;
+    esac
+done
+
+calc_pinum $1
+
+if [[ $action == unexport ]] ; then
+   unexport_gpio
+   exit;
+fi
+
+export_gpio
+
+if [ $direction == in ] ; then
+   read_gpio
+else
+   set_gpio $2
+fi
diff --git a/booster/test/gpio-scripts/pinloop.sh b/booster/test/gpio-scripts/pinloop.sh
new file mode 100755
index 0000000..ab61087
--- /dev/null
+++ b/booster/test/gpio-scripts/pinloop.sh
@@ -0,0 +1,42 @@
+#!/bin/bash
+# 40 Pin Header GPIO loop test script, it based on pinctrl shell script
+
+function loop_test()
+{
+   if [ $# != 3 ] ; then
+      echo "ERROR: Invalid input arguments"
+      return 1;
+   fi 
+
+   level=$3
+   pinctrl $1 $level
+   res=`pinctrl -i $2`
+
+   printf "$1 out [$level] --> $2 in [$res] : "
+   if [ $level == $res ]  ; then
+      printf " [  OK  ]\n"
+   else
+      printf " [ FAIL ]\n"
+      exit 1;
+   fi
+}
+
+
+if [ $# != 2 ] ; then
+   echo ""
+   echo "Usage  : $0 Pin1 Pin2"
+   echo "Example: $0 GPIO01_IO10 GPIO01_IO11" 
+   echo ""
+   echo "You can check pinmap by 'pinctrl -v' "
+   echo ""
+   exit;
+fi
+
+
+loop_test $1 $2 1
+loop_test $1 $2 0
+
+loop_test $2 $1 1
+loop_test $2 $1 0
+
+exit 0;

--
Gitblit v1.9.1