summaryrefslogtreecommitdiff
path: root/board/keymile/common
diff options
context:
space:
mode:
authorValentin Longchamp <valentin.longchamp@keymile.com>2012-07-05 05:05:05 +0000
committerAlbert ARIBAUD <albert.u.boot@aribaud.net>2012-07-07 14:07:37 +0200
commitb37f772433ab44d1730423eccf11f287ce61ec5f (patch)
tree8bc0d8f513a232f26611570ff2512e7a81f29af5 /board/keymile/common
parent6ef6486180678ab86d511676ec68cf78bf267582 (diff)
downloadu-boot-imx-b37f772433ab44d1730423eccf11f287ce61ec5f.zip
u-boot-imx-b37f772433ab44d1730423eccf11f287ce61ec5f.tar.gz
u-boot-imx-b37f772433ab44d1730423eccf11f287ce61ec5f.tar.bz2
arm/km: enable BOCO2 FPGA download support
This adds a first support of the FPGA download for a PCIe FPGA based on the BOCO2 CPLD. This takes place in 3 steps, all done accessing the SPICTRL reg of the BOCO2: 1) start the FPGA config with an access to the FPGA_PROG bit 2) later in the boot sequence, wait for the FPGA_DONE bit to toggle to 1 for the end of the FPGA configuration (with a timeout) 3) reset the FPGA 4) finally remove the access to its config EEPROM from the FPGA so that the CPU can update the FPGA configuration when the kernel is running The boards with a PCIe FPGA but without BOCO2 still are supported. The config option name is CONFIG_KM_FPGA_CONFIG Signed-off-by: Valentin Longchamp <valentin.longchamp@keymile.com> Signed-off-by: Holger Brunck <holger.brunck@keymile.com> cc: Gerlando Falauto <gerlando.falauto@keymile.com> cc: Prafulla Wadaskar <prafulla@marvell.com>
Diffstat (limited to 'board/keymile/common')
-rw-r--r--board/keymile/common/common.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/board/keymile/common/common.h b/board/keymile/common/common.h
index f457aa3..aab706e 100644
--- a/board/keymile/common/common.h
+++ b/board/keymile/common/common.h
@@ -131,6 +131,11 @@ struct bfticu_iomap {
int ethernet_present(void);
int ivm_read_eeprom(void);
+int trigger_fpga_config(void);
+int wait_for_fpga_config(void);
+int fpga_reset(void);
+int toggle_eeprom_spi_bus(void);
+
int set_km_env(void);
int fdt_set_node_and_value(void *blob,
char *nodename,