Here are the guidelines to boot u-boot with EPCQ-memory:
1. The EPCQ-memory must be programmed with JIC-file that includes the U-boot binary at 0x100040 and FPGA image (includes the Preloader and possible IP for boot copying).
2. The U-boot binary must be transferred from EPCQ-memory to HPS-DDR (to memory address CONFIG_SYS_TEXT_BASE, defined in socfgpa_common.h). This can be implemented in FPGA with custom IP or in Preloader code using memcpy().
3. The preloader code must modified to stall the boot process during the U-boot binary copying (/arch/arm/cpu/armv7/socfpga/spl.c). I implemeted this with simple memory polling. The custom IP writes "boot copy completed"-code to predefined memory address. The preloader polls this memory address until the "boot copy completed"-code is found.