summaryrefslogtreecommitdiff
path: root/arch/arm/cpu/armv7/socfpga/misc.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/cpu/armv7/socfpga/misc.c')
-rw-r--r--arch/arm/cpu/armv7/socfpga/misc.c36
1 files changed, 36 insertions, 0 deletions
diff --git a/arch/arm/cpu/armv7/socfpga/misc.c b/arch/arm/cpu/armv7/socfpga/misc.c
index f41c329a43..b07d97ee05 100644
--- a/arch/arm/cpu/armv7/socfpga/misc.c
+++ b/arch/arm/cpu/armv7/socfpga/misc.c
@@ -6,6 +6,7 @@
#include <common.h>
#include <asm/io.h>
+#include <altera.h>
#include <miiphy.h>
#include <netdev.h>
#include <asm/arch/reset_manager.h>
@@ -93,6 +94,39 @@ int overwrite_console(void)
}
#endif
+#ifdef CONFIG_FPGA
+/*
+ * FPGA programming support for SoC FPGA Cyclone V
+ */
+static Altera_desc altera_fpga[] = {
+ {
+ /* Family */
+ Altera_SoCFPGA,
+ /* Interface type */
+ fast_passive_parallel,
+ /* No limitation as additional data will be ignored */
+ -1,
+ /* No device function table */
+ NULL,
+ /* Base interface address specified in driver */
+ NULL,
+ /* No cookie implementation */
+ 0
+ },
+};
+
+/* add device descriptor to FPGA device table */
+static void socfpga_fpga_add(void)
+{
+ int i;
+ fpga_init();
+ for (i = 0; i < ARRAY_SIZE(altera_fpga); i++)
+ fpga_add(fpga_altera, &altera_fpga[i]);
+}
+#else
+static inline void socfpga_fpga_add(void) {}
+#endif
+
int arch_cpu_init(void)
{
/*
@@ -108,5 +142,7 @@ int arch_cpu_init(void)
int misc_init_r(void)
{
+ /* Add device descriptor to FPGA device table */
+ socfpga_fpga_add();
return 0;
}