194847d80SXianjun Jiao#!/bin/bash 294847d80SXianjun Jiao 394847d80SXianjun Jiao# Author: Xianjun Jiao 494847d80SXianjun Jiao# SPDX-FileCopyrightText: 2022 UGent 594847d80SXianjun Jiao# SPDX-License-Identifier: AGPL-3.0-or-later 694847d80SXianjun Jiao 794847d80SXianjun Jiao# get fpga image file name 894847d80SXianjun Jiaoif [[ -n $1 ]]; then 994847d80SXianjun Jiao fpga_img_filename=$1 1094847d80SXianjun Jiaoelse 1194847d80SXianjun Jiao fpga_img_filename=system_top.bit.bin 1294847d80SXianjun Jiaofi 1394847d80SXianjun Jiao 1494847d80SXianjun Jiaofpga_type=$(cat /proc/device-tree/compatible) 1594847d80SXianjun Jiaofpga_img_filename_core=${fpga_img_filename##*/} 1694847d80SXianjun Jiaoecho $fpga_type 1794847d80SXianjun Jiaoecho $fpga_img_filename 1894847d80SXianjun Jiaoecho $fpga_img_filename_core 1994847d80SXianjun Jiao 2094847d80SXianjun Jiaoset -x 2194847d80SXianjun Jiao 2294847d80SXianjun Jiaoifconfig sdr0 down 2394847d80SXianjun Jiaormmod sdr 2494847d80SXianjun Jiao# rmmod mac80211 2594847d80SXianjun Jiao# rmmod cfg80211 2694847d80SXianjun Jiao# rmmod ad9361_drv 2794847d80SXianjun Jiao# rmmod xilinx_dma.ko 2894847d80SXianjun Jiaormmod openofdm_rx 2994847d80SXianjun Jiaormmod openofdm_tx 3094847d80SXianjun Jiaormmod rx_intf 3194847d80SXianjun Jiaormmod tx_intf 3294847d80SXianjun Jiaormmod xpu 3394847d80SXianjun Jiao 3494847d80SXianjun Jiaosleep 1 3594847d80SXianjun Jiao 36e60c3d15SXianjun Jiaoif [ -f "$fpga_img_filename" ]; then 3794847d80SXianjun Jiao echo 0 > /sys/class/fpga_manager/fpga0/flags 3894847d80SXianjun Jiao mkdir -p /lib/firmware 39e60c3d15SXianjun Jiao cp $fpga_img_filename /lib/firmware/ -rf 4094847d80SXianjun Jiao echo $fpga_img_filename_core > /sys/class/fpga_manager/fpga0/firmware 41e60c3d15SXianjun Jiaofi 4294847d80SXianjun Jiao 4394847d80SXianjun Jiao# insmod ad9361_drv.ko 4494847d80SXianjun Jiao# sleep 1 4594847d80SXianjun Jiao 4694847d80SXianjun Jiaoif [ "$fpga_type" != "xlnx,zynq-7000" ]; then 4794847d80SXianjun Jiao SPI_DEVNAME="spi1.0" 4894847d80SXianjun Jiao DDS_DEVNAME="99024000.cf-ad9361-dds-core-lpc" 4994847d80SXianjun Jiao ADC_DEVNAME="99020000.cf-ad9361-lpc" 5094847d80SXianjun Jiaoelse 5194847d80SXianjun Jiao SPI_DEVNAME="spi0.0" 5294847d80SXianjun Jiao DDS_DEVNAME="79024000.cf-ad9361-dds-core-lpc" 5394847d80SXianjun Jiao ADC_DEVNAME="79020000.cf-ad9361-lpc" 5494847d80SXianjun Jiaofi 5594847d80SXianjun Jiao 5694847d80SXianjun Jiaowhile [ ! -d "/sys/bus/spi/drivers/ad9361/$SPI_DEVNAME" ] 5794847d80SXianjun Jiaodo 5894847d80SXianjun Jiao echo "Waiting for /sys/bus/spi/drivers/ad9361/$SPI_DEVNAME" 5994847d80SXianjun Jiao sleep 0.2 6094847d80SXianjun Jiaodone 6194847d80SXianjun Jiaocd /sys/bus/spi/drivers/ad9361/ 6294847d80SXianjun Jiaoecho $SPI_DEVNAME > unbind 6394847d80SXianjun Jiaoecho $SPI_DEVNAME > bind 6494847d80SXianjun Jiao 65*e3155ac1SXianjun Jiao#while [ ! -d "/sys/bus/platform/drivers/cf_axi_dds/$DDS_DEVNAME" ] 66*e3155ac1SXianjun Jiao#do 67*e3155ac1SXianjun Jiao# echo "Waiting for /sys/bus/platform/drivers/cf_axi_dds/$DDS_DEVNAME" 68*e3155ac1SXianjun Jiao# sleep 0.2 69*e3155ac1SXianjun Jiao#done 70*e3155ac1SXianjun Jiao#cd /sys/bus/platform/drivers/cf_axi_dds/ 71*e3155ac1SXianjun Jiao#echo $DDS_DEVNAME > unbind 72*e3155ac1SXianjun Jiao#echo $DDS_DEVNAME > bind 7394847d80SXianjun Jiao 7494847d80SXianjun Jiaowhile [ ! -d "/sys/bus/platform/drivers/cf_axi_adc/$ADC_DEVNAME" ] 7594847d80SXianjun Jiaodo 7694847d80SXianjun Jiao echo "Waiting for /sys/bus/platform/drivers/cf_axi_adc/$ADC_DEVNAME" 7794847d80SXianjun Jiao sleep 0.2 7894847d80SXianjun Jiaodone 7994847d80SXianjun Jiaocd /sys/bus/platform/drivers/cf_axi_adc/ 8094847d80SXianjun Jiaoecho $ADC_DEVNAME > unbind 8194847d80SXianjun Jiaoecho $ADC_DEVNAME > bind 8294847d80SXianjun Jiao 8394847d80SXianjun Jiaoset +x 84