]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
armv7: Add CPLD support via IFC to the ls1021a-iot board.
authorMateus Lima Alves <mateuslima.ti@gmail.com>
Mon, 26 Jan 2026 16:05:19 +0000 (13:05 -0300)
committerPeng Fan <peng.fan@nxp.com>
Wed, 28 Jan 2026 06:26:50 +0000 (14:26 +0800)
This patch adds CPLD support via IFC to the ls1021a-iot board.

Signed-off-by: Mateus Lima Alves <mateuslima.ti@gmail.com>
board/freescale/ls1021aiot/ls1021aiot.c
configs/ls1021aiot_sdcard_defconfig
drivers/misc/Kconfig
include/configs/ls1021aiot.h

index 4eff0a3fee0be2b6d313094cc4f8ebfa07bda5e0..52a3c3abdb4a8ffb69be222226ce190b88c44c53 100644 (file)
@@ -21,6 +21,7 @@
 #include <asm/sections.h>
 #include <fsl_csu.h>
 #include <fsl_immap.h>
+#include <fsl_ifc.h>
 #include <netdev.h>
 #include <fsl_mdio.h>
 #include <tsec.h>
@@ -120,6 +121,10 @@ int board_early_init_f(void)
 
 #endif
 
+#ifdef CONFIG_FSL_IFC
+       init_early_memctl_regs();
+#endif
+
        arch_soc_init();
 
        return 0;
index 6b32150e408345c069c59416929869a3e2936001..78b81c1895e74c4bced73fa9f8a8b38ec6519a7b 100644 (file)
@@ -106,3 +106,4 @@ CONFIG_FSL_QSPI=y
 CONFIG_USB=y
 CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_XHCI_DWC3=y
+CONFIG_FSL_IFC=y
index dde773ab6b192141eb1d6391dd85460fce4c224b..be7fdab56d14785d80d93baf92787cf52da1b580 100644 (file)
@@ -694,7 +694,12 @@ config ESM_PMIC
          typically to reboot the board in error condition.
 
 config FSL_IFC
-       bool
+       bool "Freescale Integrated Flash Controller"
+       depends on ARM
+       help
+         This driver is for the Integrated Flash Controller(IFC) module
+         available in Freescale SoCs. This controller allows to handle
+         devices such as NOR, NAND, FPGA and ASIC etc.
 
 config SL28CPLD
        bool "Enable Kontron sl28cpld multi-function driver"
index 971a393817a3a7f0c4ff35be58f5f8f76a6d35be..59acf00b8e50de139cc22607744de9081e249a8f 100644 (file)
 #define CFG_SYS_DDR_SDRAM_BASE 0x80000000UL
 #define CFG_SYS_SDRAM_BASE             CFG_SYS_DDR_SDRAM_BASE
 
+/* CPLD */
+
+#define CFG_SYS_CPLD_BASE              0x7fb00000
+#define CPLD_BASE_PHYS                 CFG_SYS_CPLD_BASE
+
+#define CFG_SYS_FPGA_CSPR_EXT          (0x0)
+#define CFG_SYS_FPGA_CSPR              (CSPR_PHYS_ADDR(CPLD_BASE_PHYS) | \
+                                        CSPR_PORT_SIZE_8 | \
+                                        CSPR_MSEL_GPCM | \
+                                        CSPR_V)
+#define CFG_SYS_FPGA_AMASK             IFC_AMASK(64 * 1024)
+#define CFG_SYS_FPGA_CSOR              (CSOR_NOR_ADM_SHIFT(4) | \
+                                        CSOR_NOR_NOR_MODE_AVD_NOR | \
+                                        CSOR_NOR_TRHZ_80)
+
+/* CPLD Timing parameters for IFC GPCM */
+#define CFG_SYS_FPGA_FTIM0             (FTIM0_GPCM_TACSE(0xf) | \
+                                        FTIM0_GPCM_TEADC(0xf) | \
+                                        FTIM0_GPCM_TEAHC(0xf))
+#define CFG_SYS_FPGA_FTIM1             (FTIM1_GPCM_TACO(0xff) | \
+                                        FTIM1_GPCM_TRAD(0x3f))
+#define CFG_SYS_FPGA_FTIM2             (FTIM2_GPCM_TCS(0xf) | \
+                                        FTIM2_GPCM_TCH(0xf) | \
+                                        FTIM2_GPCM_TWP(0xff))
+#define CFG_SYS_FPGA_FTIM3             0x0
+#define CFG_SYS_CSPR0_EXT              CFG_SYS_FPGA_CSPR_EXT
+#define CFG_SYS_CSPR0                  CFG_SYS_FPGA_CSPR
+#define CFG_SYS_AMASK0                 CFG_SYS_FPGA_AMASK
+#define CFG_SYS_CSOR0                  CFG_SYS_FPGA_CSOR
+#define CFG_SYS_CS0_FTIM0              CFG_SYS_FPGA_FTIM0
+#define CFG_SYS_CS0_FTIM1              CFG_SYS_FPGA_FTIM1
+#define CFG_SYS_CS0_FTIM2              CFG_SYS_FPGA_FTIM2
+#define CFG_SYS_CS0_FTIM3              CFG_SYS_FPGA_FTIM3
+
 /*
  * Serial Port
  */