[U-Boot] [PATCH v2] ls1088ardb_pb: Add support for ls1088ardb_pb board.

Pramod Kumar pramod.kumar_1 at nxp.com
Tue Aug 21 09:19:01 UTC 2018


ls1088ardb-pb is another varinat of the ls1088ardb.
This board support two m.2 x2 gen 3 pcie card slot.
There is no support of sata, pcie standard slot,
miniPCIE slot and TDM in this board.

Signed-off-by: Pramod Kumar <pramod.kumar_1 at nxp.com>
---
Changes in v2:
 - Fix the compilation issue when building u-boot for SD boot.

 arch/arm/Kconfig                              |  14 +++
 arch/arm/cpu/armv8/Kconfig                    |   1 +
 board/freescale/ls1088a/Kconfig               |  43 +++++++
 board/freescale/ls1088a/MAINTAINERS           |  18 +++
 board/freescale/ls1088a/Makefile              |   1 +
 board/freescale/ls1088a/ddr.h                 |   6 +-
 board/freescale/ls1088a/ls1088a.c             |  25 +++-
 ... ls1088ardb_pb_qspi_SECURE_BOOT_defconfig} |   2 +-
 ...defconfig => ls1088ardb_pb_qspi_defconfig} |   2 +-
 ...ardb_pb_sdcard_qspi_SECURE_BOOT_defconfig} |   2 +-
 ...ig => ls1088ardb_pb_sdcard_qspi_defconfig} |   2 +-
 include/configs/ls1088ardb_pb.h               | 113 ++++++++++++++++++
 12 files changed, 219 insertions(+), 10 deletions(-)
 copy configs/{ls1088ardb_qspi_SECURE_BOOT_defconfig => ls1088ardb_pb_qspi_SECURE_BOOT_defconfig} (97%)
 copy configs/{ls1088ardb_qspi_defconfig => ls1088ardb_pb_qspi_defconfig} (97%)
 copy configs/{ls1088ardb_sdcard_qspi_SECURE_BOOT_defconfig => ls1088ardb_pb_sdcard_qspi_SECURE_BOOT_defconfig} (98%)
 copy configs/{ls1088ardb_sdcard_qspi_defconfig => ls1088ardb_pb_sdcard_qspi_defconfig} (98%)
 create mode 100644 include/configs/ls1088ardb_pb.h

diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 63ec02403a..a653823934 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -1120,6 +1120,20 @@ config TARGET_LS1088ARDB
 	  development platform that supports the QorIQ LS1088A
 	  Layerscape Architecture processor.
 
+config TARGET_LS1088ARDB_PB
+        bool "Support ls1088ardb_pb"
+        select ARCH_LS1088A
+        select ARM64
+        select ARMV8_MULTIENTRY
+        select ARCH_MISC_INIT
+        select BOARD_LATE_INIT
+        select SUPPORT_SPL
+        help
+          Support for NXP LS1088ARDB_PB platform.
+          The LS1088A Reference design board (RDB_PB) is a high-performance
+          development platform that supports the QorIQ LS1088A
+          Layerscape Architecture processor.
+
 config TARGET_LS1021AQDS
 	bool "Support ls1021aqds"
 	select ARCH_LS1021A
diff --git a/arch/arm/cpu/armv8/Kconfig b/arch/arm/cpu/armv8/Kconfig
index c8bebabdf6..8ede276b65 100644
--- a/arch/arm/cpu/armv8/Kconfig
+++ b/arch/arm/cpu/armv8/Kconfig
@@ -100,6 +100,7 @@ config PSCI_RESET
 		   !TARGET_LS2080A_SIMU && !TARGET_LS2080AQDS && \
 		   !TARGET_LS2080ARDB && !TARGET_LS2080A_EMU && \
 		   !TARGET_LS1088ARDB && !TARGET_LS1088AQDS && \
+		   !TARGET_LS1088ARDB_PB && \
 		   !TARGET_LS1012ARDB && !TARGET_LS1012AFRDM && \
 		   !TARGET_LS1012A2G5RDB && !TARGET_LS1012AQDS && \
 		   !TARGET_LS1012AFRWY && \
diff --git a/board/freescale/ls1088a/Kconfig b/board/freescale/ls1088a/Kconfig
index 8bb828e3fd..9f20d7247f 100644
--- a/board/freescale/ls1088a/Kconfig
+++ b/board/freescale/ls1088a/Kconfig
@@ -59,3 +59,46 @@ endif
 
 source "board/freescale/common/Kconfig"
 endif
+
+if TARGET_LS1088ARDB_PB
+
+config SYS_BOARD
+	default "ls1088a"
+
+config SYS_VENDOR
+	default "freescale"
+
+config SYS_SOC
+	default "fsl-layerscape"
+
+config SYS_CONFIG_NAME
+	default "ls1088ardb_pb"
+
+if SYS_LS_PPA_FW_IN_XIP
+
+config SYS_LS_PPA_FW_ADDR
+	hex "PPA Firmware Addr"
+	default 0x20400000
+
+if CHAIN_OF_TRUST
+config SYS_LS_PPA_ESBC_ADDR
+	hex "PPA Firmware HDR Addr"
+	default 0x20680000
+endif
+endif
+
+if (SYS_LS_PPA_FW_IN_MMC || SYS_LS_PPA_FW_IN_NAND)
+
+config SYS_LS_PPA_FW_ADDR
+	hex "PPA Firmware Addr"
+	default 0x400000
+
+if CHAIN_OF_TRUST
+config SYS_LS_PPA_ESBC_ADDR
+	hex "PPA Firmware HDR Addr"
+	default 0x680000
+endif
+endif
+
+source "board/freescale/common/Kconfig"
+endif
diff --git a/board/freescale/ls1088a/MAINTAINERS b/board/freescale/ls1088a/MAINTAINERS
index 4d804d9447..5d841076bc 100644
--- a/board/freescale/ls1088a/MAINTAINERS
+++ b/board/freescale/ls1088a/MAINTAINERS
@@ -7,6 +7,14 @@ F:	include/configs/ls1088ardb.h
 F:	configs/ls1088ardb_qspi_defconfig
 F:	configs/ls1088ardb_sdcard_qspi_defconfig
 
+LS1088ARDB_PB BOARD
+M:	Pramod Kumar <Pramod.Kumar at nxp.com>
+S:	Maintained
+F:	board/freescale/ls1088a/
+F:	include/configs/ls1088ardb_pb.h
+F:	configs/ls1088ardb_pb_qspi_defconfig
+F:	configs/ls1088ardb_pb_sdcard_qspi_defconfig
+
 LS1088AQDS BOARD
 M:	Prabhakar Kushwaha <prabhakar.kushwaha at nxp.com>
 M:	Ashish Kumar <Ashish.Kumar at nxp.com>
@@ -34,3 +42,13 @@ LS1088ARDB_SD_SECURE_BOOT BOARD
 M:	Sumit Garg <sumit.garg at nxp.com>
 S:	Maintained
 F:	configs/ls1088ardb_sdcard_qspi_SECURE_BOOT_defconfig
+
+LS1088ARDB_PB_QSPI_SECURE_BOOT BOARD
+M:	Udit Agarwal <udit.agarwal at nxp.com>
+S:	Maintained
+F:	configs/ls1088ardb_pb_qspi_SECURE_BOOT_defconfig
+
+LS1088ARDB_PB_SD_SECURE_BOOT BOARD
+M:	Udit Agarwal <udit.agarwal at nxp.com>
+S:	Maintained
+F:	configs/ls1088ardb_pb_sdcard_qspi_SECURE_BOOT_defconfig
diff --git a/board/freescale/ls1088a/Makefile b/board/freescale/ls1088a/Makefile
index c2b0e7dc0f..dd5f365378 100644
--- a/board/freescale/ls1088a/Makefile
+++ b/board/freescale/ls1088a/Makefile
@@ -6,5 +6,6 @@ obj-y += ls1088a.o
 obj-y += ddr.o
 ifndef CONFIG_SPL_BUILD
 obj-$(CONFIG_TARGET_LS1088ARDB) += eth_ls1088ardb.o
+obj-$(CONFIG_TARGET_LS1088ARDB_PB) += eth_ls1088ardb.o
 obj-$(CONFIG_TARGET_LS1088AQDS) += eth_ls1088aqds.o
 endif
diff --git a/board/freescale/ls1088a/ddr.h b/board/freescale/ls1088a/ddr.h
index b35c4ae2da..7a76f6bd50 100644
--- a/board/freescale/ls1088a/ddr.h
+++ b/board/freescale/ls1088a/ddr.h
@@ -1,6 +1,8 @@
 /* SPDX-License-Identifier: GPL-2.0+ */
 /*
- * Copyright 2017 NXP
+ * Copyright 2017-2018 NXP
+ *
+ * SPDX-License-Identifier:	GPL-2.0+
  */
 
 #ifndef __LS1088A_DDR_H__
@@ -27,7 +29,7 @@ static const struct board_specific_parameters udimm0[] = {
 	 *   num|  hi| rank|  clk| wrlvl |   wrlvl   |  wrlvl
 	 * ranks| mhz| GB  |adjst| start |   ctl2    |  ctl3
 	 */
-#if defined(CONFIG_TARGET_LS1088ARDB)
+#if defined(CONFIG_TARGET_LS1088ARDB) || defined(CONFIG_TARGET_LS1088ARDB_PB)
 
 	{2,  1666, 0, 8,     8, 0x090A0B0E, 0x0F10110D,},
 	{2,  1900, 0, 8,     9, 0x0A0B0C10, 0x1112140E,},
diff --git a/board/freescale/ls1088a/ls1088a.c b/board/freescale/ls1088a/ls1088a.c
index a0dab6fc2e..f69d71b1dd 100644
--- a/board/freescale/ls1088a/ls1088a.c
+++ b/board/freescale/ls1088a/ls1088a.c
@@ -1,6 +1,8 @@
 // SPDX-License-Identifier: GPL-2.0+
 /*
- * Copyright 2017 NXP
+ * Copyright 2017-2018 NXP
+ *
+ * SPDX-License-Identifier:	GPL-2.0+
  */
 #include <common.h>
 #include <i2c.h>
@@ -28,6 +30,15 @@
 
 DECLARE_GLOBAL_DATA_PTR;
 
+#ifdef CONFIG_TARGET_LS1088ARDB_PB
+int fixup_ls1088ardb_pb_banner(void *fdt)
+{
+	fdt_setprop_string(fdt, 0, "model", "LS1088ARDB-PB Board");
+
+	return 0;
+}
+#endif
+
 int board_early_init_f(void)
 {
 #if defined(CONFIG_SYS_I2C_EARLY_INIT) && defined(CONFIG_TARGET_LS1088AQDS)
@@ -78,6 +89,9 @@ int checkboard(void)
 
 #ifdef CONFIG_TARGET_LS1088AQDS
 	printf("Board: LS1088A-QDS, ");
+
+#elif CONFIG_TARGET_LS1088ARDB_PB
+	printf("Board: LS1088ARDB-PB, ");
 #else
 	printf("Board: LS1088A-RDB, ");
 #endif
@@ -327,7 +341,7 @@ void board_retimer_init(void)
 #ifdef CONFIG_MISC_INIT_R
 int misc_init_r(void)
 {
-#ifdef CONFIG_TARGET_LS1088ARDB
+#if defined(CONFIG_TARGET_LS1088ARDB) || defined(CONFIG_TARGET_LS1088ARDB_PB)
 	u8 brdcfg5;
 
 	if (hwconfig("esdhc-force-sd")) {
@@ -459,7 +473,7 @@ exit:
 int board_init(void)
 {
 	init_final_memctl_regs();
-#if defined(CONFIG_TARGET_LS1088ARDB) && defined(CONFIG_FSL_MC_ENET)
+#if defined(CONFIG_TARGET_LS1088ARDB) || defined(CONFIG_TARGET_LS1088ARDB_PB) && defined(CONFIG_FSL_MC_ENET)
 	u32 __iomem *irq_ccsr = (u32 __iomem *)ISC_BASE;
 #endif
 
@@ -470,7 +484,7 @@ int board_init(void)
 	gd->env_addr = (ulong)&default_environment[0];
 #endif
 
-#if defined(CONFIG_TARGET_LS1088ARDB) && defined(CONFIG_FSL_MC_ENET)
+#if defined(CONFIG_TARGET_LS1088ARDB) || defined(CONFIG_TARGET_LS1088ARDB_PB) && defined(CONFIG_FSL_MC_ENET)
 	/* invert AQR105 IRQ pins polarity */
 	out_le32(irq_ccsr + IRQCR_OFFSET / 4, AQR105_IRQ_MASK);
 #endif
@@ -584,6 +598,9 @@ int ft_board_setup(void *blob, bd_t *bd)
 		return err;
 #endif
 
+#ifdef CONFIG_TARGET_LS1088ARDB_PB
+fixup_ls1088ardb_pb_banner(blob);
+#endif
 	return 0;
 }
 #endif
diff --git a/configs/ls1088ardb_qspi_SECURE_BOOT_defconfig b/configs/ls1088ardb_pb_qspi_SECURE_BOOT_defconfig
similarity index 97%
copy from configs/ls1088ardb_qspi_SECURE_BOOT_defconfig
copy to configs/ls1088ardb_pb_qspi_SECURE_BOOT_defconfig
index d0334a239f..d2faf25f39 100644
--- a/configs/ls1088ardb_qspi_SECURE_BOOT_defconfig
+++ b/configs/ls1088ardb_pb_qspi_SECURE_BOOT_defconfig
@@ -1,5 +1,5 @@
 CONFIG_ARM=y
-CONFIG_TARGET_LS1088ARDB=y
+CONFIG_TARGET_LS1088ARDB_PB=y
 CONFIG_SYS_TEXT_BASE=0x20100000
 CONFIG_SECURE_BOOT=y
 CONFIG_FSL_LS_PPA=y
diff --git a/configs/ls1088ardb_qspi_defconfig b/configs/ls1088ardb_pb_qspi_defconfig
similarity index 97%
copy from configs/ls1088ardb_qspi_defconfig
copy to configs/ls1088ardb_pb_qspi_defconfig
index d806966540..cb9eac88a9 100644
--- a/configs/ls1088ardb_qspi_defconfig
+++ b/configs/ls1088ardb_pb_qspi_defconfig
@@ -1,5 +1,5 @@
 CONFIG_ARM=y
-CONFIG_TARGET_LS1088ARDB=y
+CONFIG_TARGET_LS1088ARDB_PB=y
 CONFIG_SYS_TEXT_BASE=0x20100000
 CONFIG_FSL_LS_PPA=y
 CONFIG_QSPI_AHB_INIT=y
diff --git a/configs/ls1088ardb_sdcard_qspi_SECURE_BOOT_defconfig b/configs/ls1088ardb_pb_sdcard_qspi_SECURE_BOOT_defconfig
similarity index 98%
copy from configs/ls1088ardb_sdcard_qspi_SECURE_BOOT_defconfig
copy to configs/ls1088ardb_pb_sdcard_qspi_SECURE_BOOT_defconfig
index 08b9caeb34..0216974ca7 100644
--- a/configs/ls1088ardb_sdcard_qspi_SECURE_BOOT_defconfig
+++ b/configs/ls1088ardb_pb_sdcard_qspi_SECURE_BOOT_defconfig
@@ -1,5 +1,5 @@
 CONFIG_ARM=y
-CONFIG_TARGET_LS1088ARDB=y
+CONFIG_TARGET_LS1088ARDB_PB=y
 CONFIG_SYS_TEXT_BASE=0x80400000
 CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
diff --git a/configs/ls1088ardb_sdcard_qspi_defconfig b/configs/ls1088ardb_pb_sdcard_qspi_defconfig
similarity index 98%
copy from configs/ls1088ardb_sdcard_qspi_defconfig
copy to configs/ls1088ardb_pb_sdcard_qspi_defconfig
index bf1c0a2d7b..c501795ef0 100644
--- a/configs/ls1088ardb_sdcard_qspi_defconfig
+++ b/configs/ls1088ardb_pb_sdcard_qspi_defconfig
@@ -1,5 +1,5 @@
 CONFIG_ARM=y
-CONFIG_TARGET_LS1088ARDB=y
+CONFIG_TARGET_LS1088ARDB_PB=y
 CONFIG_SYS_TEXT_BASE=0x80400000
 CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
diff --git a/include/configs/ls1088ardb_pb.h b/include/configs/ls1088ardb_pb.h
new file mode 100644
index 0000000000..8f4612ae65
--- /dev/null
+++ b/include/configs/ls1088ardb_pb.h
@@ -0,0 +1,113 @@
+/*
+ * Copyright 2018 NXP
+ *
+ * SPDX-License-Identifier:	GPL-2.0+
+ */
+
+#ifndef __LS1088A_RDB_PB_H
+#define __LS1088A_RDB_PB_H
+
+#include "ls1088ardb.h"
+
+#ifndef SPL_NO_ENV
+/* Initial environment variables */
+#if defined(CONFIG_QSPI_BOOT)
+#define MC_INIT_CMD				\
+	"mcinitcmd=sf probe 0:0;sf read 0x80000000 0xA00000 0x100000;"	\
+	"sf read 0x80100000 0xE00000 0x100000;"				\
+	"env exists secureboot && "			\
+	"sf read 0x80700000 0x700000 0x40000 && "	\
+	"sf read 0x80740000 0x740000 0x40000 && "	\
+	"esbc_validate 0x80700000 && "			\
+	"esbc_validate 0x80740000 ;"			\
+	"fsl_mc start mc 0x80000000 0x80100000\0"	\
+	"mcmemsize=0x70000000\0"
+#elif defined(CONFIG_SD_BOOT)
+#define MC_INIT_CMD				\
+	"mcinitcmd=mmcinfo;mmc read 0x80000000 0x5000 0x800;"		\
+	"mmc read 0x80100000 0x7000 0x800;"				\
+	"env exists secureboot && "			\
+	"mmc read 0x80700000 0x3800 0x10 && "		\
+	"mmc read 0x80740000 0x3A00 0x10 && "		\
+	"esbc_validate 0x80700000 && "			\
+	"esbc_validate 0x80740000 ;"			\
+	"fsl_mc start mc 0x80000000 0x80100000\0"	\
+	"mcmemsize=0x70000000\0"
+#endif
+
+#undef CONFIG_EXTRA_ENV_SETTINGS
+#define CONFIG_EXTRA_ENV_SETTINGS		\
+	"BOARD=ls1088ardb_pb\0"			\
+	"hwconfig=fsl_ddr:bank_intlv=auto\0"	\
+	"ramdisk_addr=0x800000\0"		\
+	"ramdisk_size=0x2000000\0"		\
+	"fdt_high=0xa0000000\0"			\
+	"initrd_high=0xffffffffffffffff\0"	\
+	"fdt_addr=0x64f00000\0"			\
+	"kernel_addr=0x1000000\0"		\
+	"kernel_addr_sd=0x8000\0"		\
+	"kernelhdr_addr_sd=0x4000\0"		\
+	"kernel_start=0x580100000\0"		\
+	"kernelheader_start=0x580800000\0"	\
+	"scriptaddr=0x80000000\0"		\
+	"scripthdraddr=0x80080000\0"		\
+	"fdtheader_addr_r=0x80100000\0"		\
+	"kernelheader_addr=0x800000\0"		\
+	"kernelheader_addr_r=0x80200000\0"	\
+	"kernel_addr_r=0x81000000\0"		\
+	"kernelheader_size=0x40000\0"		\
+	"fdt_addr_r=0x90000000\0"		\
+	"load_addr=0xa0000000\0"		\
+	"kernel_size=0x2800000\0"		\
+	"kernel_size_sd=0x14000\0"		\
+	"kernelhdr_size_sd=0x10\0"		\
+	MC_INIT_CMD				\
+	BOOTENV					\
+	"boot_scripts=ls1088ardb_boot.scr\0"	\
+	"boot_script_hdr=hdr_ls1088ardb_bs.out\0"	\
+	"scan_dev_for_boot_part="		\
+		"part list ${devtype} ${devnum} devplist; "	\
+		"env exists devplist || setenv devplist 1; "	\
+		"for distro_bootpart in ${devplist}; do "	\
+			"if fstype ${devtype} "			\
+				"${devnum}:${distro_bootpart} "	\
+				"bootfstype; then "		\
+				"run scan_dev_for_boot; "	\
+			"fi; "					\
+		"done\0"					\
+	"scan_dev_for_boot="					\
+		"echo Scanning ${devtype} "			\
+		"${devnum}:${distro_bootpart}...; "		\
+		"for prefix in ${boot_prefixes}; do "		\
+			"run scan_dev_for_scripts; "		\
+		"done;\0"					\
+	"boot_a_script="					\
+		"load ${devtype} ${devnum}:${distro_bootpart} " \
+		"${scriptaddr} ${prefix}${script}; "		\
+	"env exists secureboot && load ${devtype} "		\
+		"${devnum}:${distro_bootpart} "			\
+		"${scripthdraddr} ${prefix}${boot_script_hdr} " \
+		"&& esbc_validate ${scripthdraddr};"		\
+		"source ${scriptaddr}\0"			\
+	"installer=load mmc 0:2 $load_addr "			\
+		"/flex_installer_arm64.itb; "			\
+		"env exists mcinitcmd && run mcinitcmd && "	\
+		"mmc read 0x80001000 0x6800 0x800;"		\
+		"fsl_mc lazyapply dpl 0x80001000;"			\
+		"bootm $load_addr#ls1088ardb\0"			\
+	"qspi_bootcmd=echo Trying load from qspi..;"		\
+		"sf probe && sf read $load_addr "		\
+		"$kernel_addr $kernel_size ; env exists secureboot "	\
+		"&& sf read $kernelheader_addr_r $kernelheader_addr "	\
+		"$kernelheader_size && esbc_validate ${kernelheader_addr_r}; "\
+		"bootm $load_addr#ls1088ardb\0"			\
+		"sd_bootcmd=echo Trying load from sd card..;"		\
+		"mmcinfo; mmc read $load_addr "			\
+		"$kernel_addr_sd $kernel_size_sd ;"		\
+		"env exists secureboot && mmc read $kernelheader_addr_r "\
+		"$kernelhdr_addr_sd $kernelhdr_size_sd "	\
+		" && esbc_validate ${kernelheader_addr_r};"	\
+		"bootm $load_addr#ls1088ardb\0"
+
+#endif
+#endif /* __LS1088A_RDB_H */
-- 
2.17.1



More information about the U-Boot mailing list