xref: /openwifi/user_space/wgd.sh (revision 94847d8099d02464386e2c89892d4d135cf864f7)
12ee67178SXianjun Jiao#!/bin/bash
22ee67178SXianjun Jiao
3e07d2876SJiao Xianjun# Author: Xianjun Jiao
4*94847d80SXianjun Jiao# SPDX-FileCopyrightText: 2022 UGent
5a6085186SLina Ceballos# SPDX-License-Identifier: AGPL-3.0-or-later
6a6085186SLina Ceballos
7*94847d80SXianjun Jiaoprint_usage () {
8*94847d80SXianjun Jiao  echo "usage:"
9*94847d80SXianjun Jiao  echo "  Script for load (or download+load) different driver and FPGA img without rebooting"
10*94847d80SXianjun Jiao  echo "  no  argument: Load .ko driver files and FPGA img (if system_top.bit.bin exist) in current dir with test_mode=0."
11*94847d80SXianjun Jiao  echo "  1st argument: If it is a NUMBER, it will be assigned to test_mode. Then load everything from current dir."
12*94847d80SXianjun Jiao  echo "  1st argument: If it is a string called \"remote\", it will download driver/FPGA and load everything."
13*94847d80SXianjun Jiao  echo "  - 2nd argument (if exist) is the target directory name for downloading and reloading"
14*94847d80SXianjun Jiao  echo "  - 3rd argument (if exist) is the value for test_mode"
15*94847d80SXianjun Jiao  echo "  1st argument: neither NUMBER nor \"remote\" nor a .tar.gz file, it is regarded as a directory and load everything from it."
16*94847d80SXianjun Jiao  echo "  - 2nd argument (if exist) is the value for test_mode"
17*94847d80SXianjun Jiao  echo "  1st argument: a .tar.gz file, it will be unpacked then load from that unpacked directory"
18*94847d80SXianjun Jiao  echo "  - 2nd argument (if exist) is the value for test_mode"
19*94847d80SXianjun Jiao  echo " "
20*94847d80SXianjun Jiao}
21*94847d80SXianjun Jiao
222ee67178SXianjun JiaocheckModule () {
23*94847d80SXianjun Jiao  MODULE_input="$1"
24*94847d80SXianjun Jiao  if lsmod | grep "$MODULE_input" &> /dev/null ; then
25*94847d80SXianjun Jiao    echo "$MODULE_input is loaded!"
262ee67178SXianjun Jiao    return 0
272ee67178SXianjun Jiao  else
28*94847d80SXianjun Jiao    echo "$MODULE_input is not loaded!"
292ee67178SXianjun Jiao    return 1
302ee67178SXianjun Jiao  fi
312ee67178SXianjun Jiao}
322ee67178SXianjun Jiao
33*94847d80SXianjun Jiaodownload_module () {
34*94847d80SXianjun Jiao  MODULE_input="$1"
35*94847d80SXianjun Jiao  TARGET_DIR_input="$2"
36*94847d80SXianjun Jiao  mkdir -p $TARGET_DIR_input
37*94847d80SXianjun Jiao  if [ "$MODULE_input" == "fpga" ]; then
38*94847d80SXianjun Jiao    wget -O $TARGET_DIR_input/system_top.bit.bin ftp://192.168.10.1/user_space/system_top.bit.bin
392ee67178SXianjun Jiao  else
40*94847d80SXianjun Jiao    if [ "$MODULE_input" == "sdr" ]; then
41*94847d80SXianjun Jiao      wget -O $TARGET_DIR_input/$MODULE_input.ko ftp://192.168.10.1/driver/$MODULE_input.ko
422ee67178SXianjun Jiao    else
43*94847d80SXianjun Jiao      wget -O $TARGET_DIR_input/$MODULE_input.ko ftp://192.168.10.1/driver/$MODULE_input/$MODULE_input.ko
442ee67178SXianjun Jiao    fi
452ee67178SXianjun Jiao  fi
46*94847d80SXianjun Jiao  sync
47*94847d80SXianjun Jiao}
48*94847d80SXianjun Jiao
49*94847d80SXianjun Jiaoinsert_check_module () {
50*94847d80SXianjun Jiao  TARGET_DIR_input="$1"
51*94847d80SXianjun Jiao  MODULE_input="$2"
52*94847d80SXianjun Jiao  rmmod $MODULE_input
53*94847d80SXianjun Jiao  if [[ -n $3 ]]; then
54*94847d80SXianjun Jiao    (set -x; insmod $TARGET_DIR_input/$MODULE_input.ko test_mode=$3)
55*94847d80SXianjun Jiao  else
56*94847d80SXianjun Jiao    (set -x; insmod $TARGET_DIR_input/$MODULE_input.ko)
57*94847d80SXianjun Jiao  fi
58*94847d80SXianjun Jiao
59*94847d80SXianjun Jiao  checkModule $MODULE_input
60*94847d80SXianjun Jiao  if [ $? -eq 1 ]; then
61*94847d80SXianjun Jiao    exit 1
62*94847d80SXianjun Jiao  fi
63*94847d80SXianjun Jiao}
64*94847d80SXianjun Jiao
65*94847d80SXianjun Jiaoprint_usage
66*94847d80SXianjun Jiaosync
67*94847d80SXianjun Jiao
68*94847d80SXianjun JiaoTARGET_DIR=./
69*94847d80SXianjun JiaoDOWNLOAD_FLAG=0
70*94847d80SXianjun Jiaotest_mode=0
71*94847d80SXianjun Jiao
72*94847d80SXianjun Jiaoif [[ -n $1 ]]; then
73*94847d80SXianjun Jiao  re='^[0-9]+$'
74*94847d80SXianjun Jiao  if ! [[ $1 =~ $re ]] ; then # not a number
75*94847d80SXianjun Jiao    if [ "$1" == "remote" ]; then
76*94847d80SXianjun Jiao      DOWNLOAD_FLAG=1
77*94847d80SXianjun Jiao      if [[ -n $2 ]]; then
78*94847d80SXianjun Jiao        TARGET_DIR=$2
79*94847d80SXianjun Jiao      fi
80*94847d80SXianjun Jiao      if [[ -n $3 ]]; then
81*94847d80SXianjun Jiao        test_mode=$3
82*94847d80SXianjun Jiao      fi
83*94847d80SXianjun Jiao    else
84*94847d80SXianjun Jiao      if [[ "$1" == *".tar.gz"* ]]; then
85*94847d80SXianjun Jiao	set -x
86*94847d80SXianjun Jiao        tar_gz_filename=$1
87*94847d80SXianjun Jiao        TARGET_DIR=${tar_gz_filename%".tar.gz"}
88*94847d80SXianjun Jiao        mkdir -p $TARGET_DIR
89*94847d80SXianjun Jiao        rm -rf $TARGET_DIR/*
90*94847d80SXianjun Jiao        tar -zxvf $1 -C $TARGET_DIR
91*94847d80SXianjun Jiao        find $TARGET_DIR/ -name \*.ko -exec cp {} $TARGET_DIR/ \;
92*94847d80SXianjun Jiao        find $TARGET_DIR/ -name \*.bit.bin -exec cp {} $TARGET_DIR/ \;
93*94847d80SXianjun Jiao	set +x
94*94847d80SXianjun Jiao      else
95*94847d80SXianjun Jiao        TARGET_DIR=$1
96*94847d80SXianjun Jiao      fi
97*94847d80SXianjun Jiao      if [[ -n $2 ]]; then
98*94847d80SXianjun Jiao        test_mode=$2
99*94847d80SXianjun Jiao      fi
100*94847d80SXianjun Jiao    fi
101*94847d80SXianjun Jiao  else # is a number
102*94847d80SXianjun Jiao    test_mode=$1
103*94847d80SXianjun Jiao  fi
104*94847d80SXianjun Jiaofi
105*94847d80SXianjun Jiao
106*94847d80SXianjun Jiaoecho TARGET_DIR $TARGET_DIR
107*94847d80SXianjun Jiaoecho DOWNLOAD_FLAG $DOWNLOAD_FLAG
108*94847d80SXianjun Jiaoecho test_mode $test_mode
109*94847d80SXianjun Jiao
110*94847d80SXianjun Jiaosync
1114a12fa04SXianjun Jiao
1124a12fa04SXianjun Jiao#if ((($test_mode & 0x2) != 0)); then
1134a12fa04SXianjun Jiao  tx_offset_tuning_enable=0
1144a12fa04SXianjun Jiao#else
1154a12fa04SXianjun Jiao#  tx_offset_tuning_enable=1
1164a12fa04SXianjun Jiao#fi
1174a12fa04SXianjun Jiao
1184a12fa04SXianjun Jiaoecho tx_offset_tuning_enable $tx_offset_tuning_enable
1194a12fa04SXianjun Jiao
120*94847d80SXianjun Jiaoif [ -d "$TARGET_DIR" ]; then
121*94847d80SXianjun Jiao  echo "\$TARGET_DIR is found!"
122*94847d80SXianjun Jiaoelse
123*94847d80SXianjun Jiao  if [ $DOWNLOAD_FLAG -eq 0 ]; then
124*94847d80SXianjun Jiao    echo "\$TARGET_DIR is not correct. Please check!"
125*94847d80SXianjun Jiao    exit 1
126*94847d80SXianjun Jiao  fi
127*94847d80SXianjun Jiaofi
128*94847d80SXianjun Jiao
129*94847d80SXianjun Jiaoecho " "
130*94847d80SXianjun Jiao
1314a12fa04SXianjun Jiaoservice network-manager stop
1324a12fa04SXianjun Jiao
133*94847d80SXianjun Jiaormmod sdr
134*94847d80SXianjun Jiaoinsert_check_module ./ ad9361_drv
135*94847d80SXianjun Jiao
136*94847d80SXianjun Jiaoif [ $DOWNLOAD_FLAG -eq 1 ]; then
137*94847d80SXianjun Jiao  download_module fpga $TARGET_DIR
138*94847d80SXianjun Jiaofi
139*94847d80SXianjun Jiao
140*94847d80SXianjun Jiaoif [ -f "$TARGET_DIR/system_top.bit.bin" ]; then
141*94847d80SXianjun Jiao  ./load_fpga_img.sh $TARGET_DIR/system_top.bit.bin
142*94847d80SXianjun Jiaoelse
143*94847d80SXianjun Jiao  echo $TARGET_DIR/system_top.bit.bin not found. Skip reloading FPGA.
144*94847d80SXianjun Jiaofi
145*94847d80SXianjun Jiao
146*94847d80SXianjun Jiao./rf_init_11n.sh
147*94847d80SXianjun Jiaoinsert_check_module ./ xilinx_dma
148*94847d80SXianjun Jiao
1497e3e6749Sweiliudepmod
1502ee67178SXianjun Jiaomodprobe mac80211
1517e3e6749Sweiliulsmod
1522ee67178SXianjun Jiao
153*94847d80SXianjun JiaoMODULE_ALL="tx_intf rx_intf openofdm_tx openofdm_rx xpu sdr"
154*94847d80SXianjun Jiaofor MODULE in $MODULE_ALL
155*94847d80SXianjun Jiaodo
156*94847d80SXianjun Jiao  if [ $DOWNLOAD_FLAG -eq 1 ]; then
157*94847d80SXianjun Jiao      download_module $MODULE $TARGET_DIR
1587e3e6749Sweiliu  fi
159*94847d80SXianjun Jiao  if [ "$MODULE" == "sdr" ]; then
160*94847d80SXianjun Jiao    insert_check_module $TARGET_DIR $MODULE $test_mode
161*94847d80SXianjun Jiao  else
162*94847d80SXianjun Jiao    insert_check_module $TARGET_DIR $MODULE
1637e3e6749Sweiliu  fi
164*94847d80SXianjun Jiaodone
1652ee67178SXianjun Jiao
1668a2eaff3Sthavingaif ps -p $(</tmp/check_calib_inf.pid) > /dev/null
1678a2eaff3Sthavingathen
1688a2eaff3Sthavinga   kill $(</tmp/check_calib_inf.pid)
1698a2eaff3Sthavingafi
1708a2eaff3Sthavinga./check_calib_inf.sh
1718a2eaff3Sthavinga
1722ee67178SXianjun Jiaoecho the end
173*94847d80SXianjun Jiao# dmesg
174*94847d80SXianjun Jiao# lsmod
175