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