
adi_loadfdt_multiple=\
  fdt addr ${fit_load_address}; \
  fdt get value fdt_choosen /configurations/${fit_config}/ fdt; \
  fdt get addr fdtaddr /images/${fdt_choosen} data; \
  fdt addr ${fdtaddr}; \
  fdt get value model / model;

adi_loadfdt_simple=\
  fdt addr ${devicetree_load_address};

adi_loadfdt=\
  if test "${modeboot}" = "sdboot"; then \
    echo "Loading devicetree using simple method..."; \
    run adi_loadfdt_simple; \
  else \
    echo "Loading devicetree from FIT image..."; \
    run adi_loadfdt_multiple; \
  fi;

adi_config_clocks=\
  if test -n "${ad936x_ext_refclk}" && test ! -n "${ad936x_skip_ext_refclk}"; then \
    fdt set /clocks/clock@0 clock-frequency ${ad936x_ext_refclk}; \
  fi; \
  if test -n "${ad936x_ext_refclk_override}"; then \
    fdt set /clocks/clock@0 clock-frequency ${ad936x_ext_refclk_override}; \
  fi;

adi_config_gpio_by_refclk=\
  if test "${refclk_source}" = "internal"; then \
    echo "Setting refclk internal"; \
    fdt rm /amba/gpio@e000a000/clock_extern_en; \
  elif test "${refclk_source}" = "external"; then \
    echo "Setting refclk external"; \
    fdt rm /amba/gpio@e000a000/clock_internal_en; \
  fi;

adi_config_rf_mode=\
  if test -n "${mode}" && test ! "${mode}" = "1r1t" && test ! "${mode}" = "2r2t"; then \
    setenv mode 1r1t; saveenv; \
  fi;

adi_config_devicetree=\
  if test "${mode}" = "1r1t"; then \
    echo "Setting mode 1r1t"; \
    fdt rm /amba/spi@e0006000/ad9361-phy@0 adi,2rx-2tx-mode-enable; \
    fdt set /fpga-axi/cf-ad9361-dds-core-lpc@79024000 compatible adi,axi-ad9364-dds-6.00.a; \
  fi; \
  if test -n "${cs_gpio}"; then \
    fdt set /amba/axi_quad_spi@7C430000/ cs-gpios "<0x06 ${cs_gpio} 0>"; \
  fi; \
  if test -n "${attr_name}" && test -n "${attr_val}"; then \
    echo "Setting admodel ${attr_val}"; \
    fdt set /amba/spi@e0006000/ad9361-phy@0 ${attr_name} ${attr_val}; \
  fi;

adi_loadvals=\
  echo "Loading ADI vars..."; \
  run adi_loadfdt; \
  run adi_config_clocks; \
  run adi_config_gpio_by_refclk; \
  run adi_config_rf_mode; \
  run adi_config_devicetree;



baudrate=115200
bitstream_image=system.bit.bin
bitstream_size=0x400000
bootcmd=run $modeboot
bootdelay=3
bootenv=uEnv.txt
boot_image=BOOT.bin
boot_size=0xF00000
clear_reset_cause=mw f8000008 df0d && mw f8000258 00400000 && mw f8000004 767b
devicetree_image=devicetree.dtb
devicetree_load_address=0x2000000
devicetree_size=0x20000
dfu_mmc_info=set dfu_alt_info ${kernel_image} fat 0 1\\;${devicetree_image} fat 0 1\\;${ramdisk_image} fat 0 1
dfu_mmc=run dfu_mmc_info && dfu 0 mmc 0
dfu_ram=echo Entering DFU RAM mode ... && run dfu_ram_info && dfu 0 ram 0
dfu_ram_info=set dfu_alt_info dummy.dfu ram 0 0\\;firmware.dfu ram ${fit_load_address} 0x1E00000
dfu_sf=gpio set 0;set stdout serial@e0000000;echo Entering DFU SF mode ... && run dfu_sf_info && dfu 0 sf 0:0:40000000:0 && if test -n ${dfu_alt_num} && test ${dfu_alt_num} = 1; then set fit_size ${filesize} && set dfu_alt_num && env save; fi;gpio clear 0;
dfu_sf_info=set dfu_alt_info boot.dfu raw 0x0 0x100000\\;firmware.dfu raw 0x200000 0x0E00000\\;uboot-extra-env.dfu raw 0xFF000 0x1000\\;uboot-env.dfu raw 0x100000 0x20000\\;spare.dfu raw 0x120000 0xE0000
ethaddr=00:0a:35:00:01:22
extraenv_load_address=0x207E000
fdt_high=0x20000000
fit_config=config@0
fit_load_address=0x2080000
fit_size=0x900000
fpgaload=fatload mmc 0 0xF000000 system_top.bit.bin;fpga load 0 0xF000000 ${filesize}
importbootenv=echo Importing environment from SD ...; env import -t ${loadbootenv_addr} $filesize
initrd_high=0x20000000
ipaddr=192.168.2.1
ipaddr_host=192.168.2.10
jtagboot=env default -a;sf probe && sf protect unlock 0 100000 && run dfu_sf; 
kernel_image=uImage
loadbit_addr=0x100000
loadbootenv_addr=0x2000000
loadbootenv=load mmc 0 ${loadbootenv_addr} ${bootenv}
loaddfu=\
  if mmc rescan; then \
    fatload mmc 0 ${fit_load_address} antsdre200.dfu; \
    sf probe; \
    sf update ${fit_load_address} 0x200000 0x0E00000; \
    fatload mmc 0 0x20000 uboot-env.dfu; \
    sf update 0x20000 0x100000 0x20000; \
    bootm ${fit_load_address}#${fit_config}; \
  fi
maxcpus=2

netmask=255.255.255.0
preboot=
preboot=\
  echo "Tezuka universal boot"; \
  if test $modeboot = sdboot && env run sd_uEnvtxt_existence_test; then \
    if env run loadbootenv; then \
        env run importbootenv; \
    fi; \
  fi;

qspiboot_extraenv=sf read ${extraenv_load_address} 0x100000 0x1000;
qspiboot=\
  set stdout serial@e0000000 && sf probe; \
  echo Booting silently; \
  set stdout nulldev; \
  run read_sf; run adi_loadvals; run qspiboot_extraenv; \
  envversion; \
  setenv bootargs console=ttyPS0,115200 maxcpus=${maxcpus} rootfstype=ramfs root=/dev/ram0 rw quiet loglevel=4 UBOOT_MODEBOOT=$modeboot UBOOT_VERSION='\"'${uboot-version}'\"' \
  && bootm ${fit_load_address}#${fit_config} || set stdout serial@e0000000;

qspiboot_verbose=\
  adi_hwref; \
  echo Copying Linux from QSPI flash to RAM... && run read_sf && if run adi_loadvals; then \
    echo Loaded AD936x refclk frequency and model into devicetree; \
  fi; \
  envversion; \
  setenv bootargs console=ttyPS0,115200 maxcpus=${maxcpus} rootfstype=ramfs root=/dev/ram0 rw earlyprintk UBOOT_MODEBOOT=$modeboot UBOOT_VERSION='\"'${uboot-version}'\"' \
  && bootm ${fit_load_address}#${fit_config} || echo BOOT failed entering DFU mode ...

ramboot_verbose=\
  adi_hwref; \
  echo Copying Linux from DFU to RAM... && run dfu_ram;if run adi_loadvals; then \
    echo Loaded AD936x refclk frequency and model into devicetree; \
  fi; \
  envversion; \
  setenv bootargs console=ttyPS0,115200 maxcpus=${maxcpus} rootfstype=ramfs root=/dev/ram0 rw earlyprintk UBOOT_MODEBOOT=$modeboot UBOOT_VERSION='\"'${uboot-version}'\"' \
  && bootm ${fit_load_address}#${fit_config}

ramdisk_image=uramdisk.image.gz
ramdisk_load_address=0x4000000
ramdisk_size=0x400000
read_sf=sf probe 0:0 50000000 0 && run qspiboot_extraenv && sf read ${fit_load_address} 0x200000 0x0E00000 && iminfo ${fit_load_address} || sf read ${fit_load_address} 0x200000 0x0E00000;
refclk_source=internal
sdboot=\
  if test -n "${mode_rootfs}" && test "${mode_rootfs}" = "kuiper"; then \
    run sdboot_kuiper; \
  else \
    run sdboot_ram; \
  fi

sdboot_ram=\
  if mmcinfo; then \
    run uenvboot; \
    echo Copying Linux from SD to RAM... \
    && load mmc 0 ${fit_load_address} ${kernel_image} \
    && load mmc 0 ${devicetree_load_address} ${devicetree_image} \
    && load mmc 0 ${ramdisk_load_address} ${ramdisk_image} \
    && envversion; \
    run adi_loadvals; \
    setenv bootargs console=ttyPS0,115200 maxcpus=${maxcpus} rootfstype=ramfs root=/dev/ram0 rw earlyprintk clk_ignore_unused uio_pdrv_genirq.of_id=uio_pdrv_genirq UBOOT_MODEBOOT=$modeboot UBOOT_VERSION='"\'${uboot-version}'\"' \
    && bootm ${fit_load_address} ${ramdisk_load_address} ${devicetree_load_address}; \
  fi

bootargs=console=ttyPS0,115200 root=/dev/mmcblk0p2 rw earlycon rootfstype=ext4 rootwait clk_ignore_unused cpuidle.off=1 uio_pdrv_genirq.of_id=uio_pdrv_genirq UBOOT_MODEBOOT=$modeboot UBOOT_VERSION='\"'${uboot-version}'\"'
#sdboot_kuiper=if mmcinfo; then run uenvboot; echo Booting Kuiper with rootfs on sd... && fatload mmc 0 0x3000000 ${kernel_image} && fatload mmc 0 0x2A00000 ${devicetree_image} && bootm 0x3000000 - 0x2A00000; fi
sdboot_kuiper=if mmcinfo; then run uenvboot; echo Copying Linux from SD to RAM... && load mmc 0 ${fit_load_address} ${kernel_image} && load mmc 0 ${devicetree_load_address} ${devicetree_image} && envversion;run adi_loadvals;setenv bootargs console=ttyPS0,115200 maxcpus=${maxcpus} root=/dev/mmcblk0p2 rw earlyprintk clk_ignore_unused uio_pdrv_genirq.of_id=uio_pdrv_genirq UBOOT_MODEBOOT=$modeboot UBOOT_VERSION='\"'${uboot-version}'\"' && bootm ${fit_load_address} - ${devicetree_load_address}; fi
sd_uEnvtxt_existence_test=test -e mmc 0 /uEnv.txt
thor_mmc=run dfu_mmc_info && thordown 0 mmc 0
thor_ram=run dfu_ram_info && thordown 0 ram 0
uenvboot=\
  if run loadbootenv; then \
    echo Loaded environment from ${bootenv}; \
    run importbootenv; \
  fi; \
  if test -n $uenvcmd; \
    then echo Running uenvcmd ...; \
    run uenvcmd; \
  fi

usbboot=\
  if usb start; then \
    run uenvboot; \
    echo Copying Linux from USB to RAM... \
    && load usb 0 ${fit_load_address} ${kernel_image} \
    && load usb 0 ${devicetree_load_address} ${devicetree_image} \
    && load usb 0 ${ramdisk_load_address} ${ramdisk_image} \
    && bootm ${fit_load_address} ${ramdisk_load_address} ${devicetree_load_address}; \
  fi
