xref: /openwifi/user_space/load_fpga_img.sh (revision 94847d8099d02464386e2c89892d4d135cf864f7)
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
36echo 0 > /sys/class/fpga_manager/fpga0/flags
37mkdir -p /lib/firmware
38cp $fpga_img_filename /lib/firmware/
39echo $fpga_img_filename_core > /sys/class/fpga_manager/fpga0/firmware
40
41# insmod ad9361_drv.ko
42# sleep 1
43
44if [ "$fpga_type" != "xlnx,zynq-7000" ]; then
45  SPI_DEVNAME="spi1.0"
46  DDS_DEVNAME="99024000.cf-ad9361-dds-core-lpc"
47  ADC_DEVNAME="99020000.cf-ad9361-lpc"
48else
49  SPI_DEVNAME="spi0.0"
50  DDS_DEVNAME="79024000.cf-ad9361-dds-core-lpc"
51  ADC_DEVNAME="79020000.cf-ad9361-lpc"
52fi
53
54while [ ! -d "/sys/bus/spi/drivers/ad9361/$SPI_DEVNAME" ]
55do
56   echo "Waiting for /sys/bus/spi/drivers/ad9361/$SPI_DEVNAME"
57   sleep 0.2
58done
59cd /sys/bus/spi/drivers/ad9361/
60echo $SPI_DEVNAME > unbind
61echo $SPI_DEVNAME > bind
62
63while [ ! -d "/sys/bus/platform/drivers/cf_axi_dds/$DDS_DEVNAME" ]
64do
65   echo "Waiting for /sys/bus/platform/drivers/cf_axi_dds/$DDS_DEVNAME"
66   sleep 0.2
67done
68cd /sys/bus/platform/drivers/cf_axi_dds/
69echo $DDS_DEVNAME  > unbind
70echo $DDS_DEVNAME  > bind
71
72while [ ! -d "/sys/bus/platform/drivers/cf_axi_adc/$ADC_DEVNAME" ]
73do
74   echo "Waiting for /sys/bus/platform/drivers/cf_axi_adc/$ADC_DEVNAME"
75   sleep 0.2
76done
77cd /sys/bus/platform/drivers/cf_axi_adc/
78echo $ADC_DEVNAME  > unbind
79echo $ADC_DEVNAME  > bind
80
81set +x
82