Call board_init to ensure that fpga is properly detected.
Enable bit and bin formats.
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
board_init_r(NULL, 0);
}
+void spl_board_init(void)
+{
+ board_init();
+}
+
u32 spl_boot_device(void)
{
u32 mode;
#include <fat.h>
#include <version.h>
#include <image.h>
+#include <fpga.h>
+#include <xilinx.h>
DECLARE_GLOBAL_DATA_PTR;
}
#endif
+#ifdef CONFIG_SPL_FPGA_SUPPORT
+static int mmc_load_fpga_image_fat(struct mmc *mmc)
+{
+ int err;
+ int devnum = 0;
+ const fpga_desc *const desc = fpga_get_desc(devnum);
+ Xilinx_desc *desc_xilinx = desc->devdesc;
+
+ /* FIXME = standard file size + header desc_xilinx->size + 0x6c */
+ err = file_fat_read(CONFIG_SPL_FPGA_LOAD_ARGS_NAME,
+ (void *)CONFIG_SPL_FPGA_LOAD_ADDR,
+ 0);
+ if (err <= 0) {
+#ifdef CONFIG_SPL_LIBCOMMON_SUPPORT
+ printf("spl: error reading image %s, err - %d\n",
+ CONFIG_SPL_FAT_LOAD_ARGS_NAME, err);
+#endif
+ return -1;
+ }
+#ifdef CONFIG_SPL_FPGA_BIT
+ return fpga_loadbitstream(devnum, (char *)CONFIG_SPL_FPGA_LOAD_ADDR,
+ desc_xilinx->size);
+#else
+ return fpga_load(devnum, (const void *)CONFIG_SPL_FPGA_LOAD_ADDR,
+ desc_xilinx->size);
+#endif
+}
+#endif
+
#ifdef CONFIG_SPL_FAT_SUPPORT
static int mmc_load_image_fat(struct mmc *mmc, const char *filename)
{
#endif
hang();
}
+#ifdef CONFIG_SPL_FPGA_SUPPORT
+ mmc_load_fpga_image_fat(mmc);
+#endif
#ifdef CONFIG_SPL_OS_BOOT
if (spl_start_uboot() || mmc_load_image_fat_os(mmc))
/* fpga_get_desc
* map a device number to a descriptor
*/
-static const fpga_desc *const fpga_get_desc(int devnum)
+const fpga_desc *const fpga_get_desc(int devnum)
{
fpga_desc *desc = (fpga_desc *)NULL;
#define CONFIG_SPL_LIBCOMMON_SUPPORT
#define CONFIG_SPL_LIBGENERIC_SUPPORT
#define CONFIG_SPL_SERIAL_SUPPORT
+#define CONFIG_SPL_BOARD_INIT
#define CONFIG_SPL_LDSCRIPT "arch/arm/cpu/armv7/zynq/u-boot-spl.lds"
/* Disable dcache for SPL just for sure */
#ifdef CONFIG_SPL_BUILD
#define CONFIG_SYS_DCACHE_OFF
-#undef CONFIG_FPGA
+#endif
+
+/* FPGA support */
+#define CONFIG_SPL_FPGA_SUPPORT
+#define CONFIG_SPL_FPGA_LOAD_ADDR 0x1000000
+/* #define CONFIG_SPL_FPGA_BIT */
+#ifdef CONFIG_SPL_FPGA_BIT
+# define CONFIG_SPL_FPGA_LOAD_ARGS_NAME "download.bit"
+#else
+# define CONFIG_SPL_FPGA_LOAD_ARGS_NAME "fpga.bin"
#endif
/* MMC support */
extern void fpga_init(void);
extern int fpga_add(fpga_type devtype, void *desc);
extern int fpga_count(void);
+extern const fpga_desc *const fpga_get_desc(int devnum);
extern int fpga_load(int devnum, const void *buf, size_t bsize);
extern int fpga_loadbitstream(int devnum, char *fpgadata, size_t size);
extern int fpga_dump(int devnum, const void *buf, size_t bsize);
LIBS-$(CONFIG_SPL_SPI_FLASH_SUPPORT) += drivers/mtd/spi/
LIBS-$(CONFIG_SPL_SPI_SUPPORT) += drivers/spi/
LIBS-y += fs/
+LIBS-$(CONFIG_SPL_FPGA_SUPPORT) += drivers/fpga/
LIBS-$(CONFIG_SPL_LIBGENERIC_SUPPORT) += lib/
LIBS-$(CONFIG_SPL_POWER_SUPPORT) += drivers/power/ \
drivers/power/pmic/