xref: /openwifi/user_space/load_fpga_img.sh (revision a066622e35677314736a3fbd15d26fdd80b86563)
1#!/bin/bash
2
3# Author: Xianjun Jiao
4# SPDX-FileCopyrightText: 2022 UGent
5# SPDX-License-Identifier: AGPL-3.0-or-later
6
7# get fpga image file name
8if [[ -n $1 ]]; then
9  fpga_img_filename=$1
10else
11  fpga_img_filename=system_top.bit.bin
12fi
13
14fpga_type=$(cat /proc/device-tree/compatible)
15fpga_img_filename_core=${fpga_img_filename##*/}
16echo $fpga_type
17echo $fpga_img_filename
18echo $fpga_img_filename_core
19
20set -x
21
22ifconfig sdr0 down
23rmmod sdr
24# rmmod mac80211
25# rmmod cfg80211
26# rmmod ad9361_drv
27# rmmod xilinx_dma.ko
28rmmod openofdm_rx
29rmmod openofdm_tx
30rmmod rx_intf
31rmmod tx_intf
32rmmod xpu
33
34sleep 1
35
36if [ -f "$fpga_img_filename" ]; then
37  echo 0 > /sys/class/fpga_manager/fpga0/flags
38  mkdir -p /lib/firmware
39  cp $fpga_img_filename /lib/firmware/ -rf
40  echo $fpga_img_filename_core > /sys/class/fpga_manager/fpga0/firmware
41fi
42
43# insmod ad9361_drv.ko
44# sleep 1
45
46if [ "$fpga_type" != "xlnx,zynq-7000" ]; then
47  SPI_DEVNAME="spi1.0"
48  DDS_DEVNAME="99024000.cf-ad9361-dds-core-lpc"
49  ADC_DEVNAME="99020000.cf-ad9361-lpc"
50else
51  SPI_DEVNAME="spi0.0"
52  DDS_DEVNAME="79024000.cf-ad9361-dds-core-lpc"
53  ADC_DEVNAME="79020000.cf-ad9361-lpc"
54fi
55
56while [ ! -d "/sys/bus/spi/drivers/ad9361/$SPI_DEVNAME" ]
57do
58   echo "Waiting for /sys/bus/spi/drivers/ad9361/$SPI_DEVNAME"
59   sleep 0.2
60done
61cd /sys/bus/spi/drivers/ad9361/
62echo $SPI_DEVNAME > unbind
63echo $SPI_DEVNAME > bind
64
65while [ ! -d "/sys/bus/platform/drivers/cf_axi_dds/$DDS_DEVNAME" ]
66do
67   echo "Waiting for /sys/bus/platform/drivers/cf_axi_dds/$DDS_DEVNAME"
68   sleep 0.2
69done
70cd /sys/bus/platform/drivers/cf_axi_dds/
71echo $DDS_DEVNAME  > unbind
72echo $DDS_DEVNAME  > bind
73
74while [ ! -d "/sys/bus/platform/drivers/cf_axi_adc/$ADC_DEVNAME" ]
75do
76   echo "Waiting for /sys/bus/platform/drivers/cf_axi_adc/$ADC_DEVNAME"
77   sleep 0.2
78done
79cd /sys/bus/platform/drivers/cf_axi_adc/
80echo $ADC_DEVNAME  > unbind
81echo $ADC_DEVNAME  > bind
82
83set +x
84