All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH v5 0/3] Add Xilinx ZynqMP and ZCU106 board support
@ 2018-07-25 14:35 Luca Ceresoli
  2018-07-25 14:35 ` [Buildroot] [PATCH v5 1/3] uboot: zynqmp: generate SPL image with PMUFW binary Luca Ceresoli
                   ` (2 more replies)
  0 siblings, 3 replies; 12+ messages in thread
From: Luca Ceresoli @ 2018-07-25 14:35 UTC (permalink / raw)
  To: buildroot

Hi,

this patchset adds basic support for the ZynqMP family of ARM64
SoC+FPGA by Xilinx and for the ZCU106 board based on it.

The ZynqMP sets a few challenges that needed some work besides the
usual defconfig + readme that is enough for more classic and simple
SoCs.

This v5 addresses the comments received to v4 by Joel (BR2_EXTERNAL
not working). It also fixes support for providing a PMU firmware as a
local file, while keeping the ability to download it.

I reordered the patches w.r.t. v4. Here's their summary.

The first issue is the PMU (Platform Management Unit). It is a
Microblaze core that handles power and clock gating and the like, and
reprogramming it during early boot is necessary to boot any modern
U-Boot and Linux. Since we can't build Microblaze code out of the
ARM64 toolchain, U-Boot obtains a pre-built binary either from a local
file or downloaded using EXTRA_DOWNLOADS. This is added in patch
1. Until v3, the PMUFW had to be copied inside the U-Boot source. With
a patch from upstream it is now possible to avoid the copy.

With this in place, patch 2 just adds the defconfig and board files.

Patch 3 allows to pass an externally-supplied init file to U-Boot,
which is needed to boot boards not supported in the U-Boot source
code, or on the same boards but with a different
configuration. Instead of copying the user-provided file inside the
U-Boot source as in v3, I applied a patch from upstream so U-Boot is
able to build that file without any copy. ZCU106 is supported by
mainline U-Boot with a default configuration and thus it does not need
this patch, so I have moved it at the end.

Luca


Luca Ceresoli (3):
  uboot: zynqmp: generate SPL image with PMUFW binary
  configs/zynqmp_zcu106_defconfig: add Xilinx ZCU106 board (ZynqMP SoC)
  uboot: zynqmp: allow to use custom psu_init files

 DEVELOPERS                                    |   2 +
 board/zynqmp/genimage.cfg                     |  28 +++
 ...64-zynqmp-zcu106-fix-SPL-MMC-booting.patch |  52 ++++++
 ...2-arm64-zynqmp-Enable-booting-to-ATF.patch | 114 ++++++++++++
 ...ept-an-absolute-path-for-PMUFW_INIT_.patch |  68 +++++++
 ...ynqmp-pass-the-PS-init-file-as-a-kco.patch | 175 ++++++++++++++++++
 board/zynqmp/post-image.sh                    |  13 ++
 board/zynqmp/readme.txt                       |  51 +++++
 boot/uboot/Config.in                          |  52 ++++++
 boot/uboot/uboot.mk                           |  34 ++++
 configs/zynqmp_zcu106_defconfig               |  34 ++++
 11 files changed, 623 insertions(+)
 create mode 100644 board/zynqmp/genimage.cfg
 create mode 100644 board/zynqmp/patches/uboot/0001-arm64-zynqmp-zcu106-fix-SPL-MMC-booting.patch
 create mode 100644 board/zynqmp/patches/uboot/0002-arm64-zynqmp-Enable-booting-to-ATF.patch
 create mode 100644 board/zynqmp/patches/uboot/0003-arm64-zynqmp-accept-an-absolute-path-for-PMUFW_INIT_.patch
 create mode 100644 board/zynqmp/patches/uboot/0004-arm-arm64-zynq-zynqmp-pass-the-PS-init-file-as-a-kco.patch
 create mode 100755 board/zynqmp/post-image.sh
 create mode 100644 board/zynqmp/readme.txt
 create mode 100644 configs/zynqmp_zcu106_defconfig

-- 
2.17.1

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Buildroot] [PATCH v5 1/3] uboot: zynqmp: generate SPL image with PMUFW binary
  2018-07-25 14:35 [Buildroot] [PATCH v5 0/3] Add Xilinx ZynqMP and ZCU106 board support Luca Ceresoli
@ 2018-07-25 14:35 ` Luca Ceresoli
  2018-07-26 20:04   ` Joel Carlson
  2018-07-28 17:37   ` Thomas Petazzoni
  2018-07-25 14:35 ` [Buildroot] [PATCH v5 2/3] configs/zynqmp_zcu106_defconfig: add Xilinx ZCU106 board (ZynqMP SoC) Luca Ceresoli
  2018-07-25 14:35 ` [Buildroot] [PATCH v5 3/3] uboot: zynqmp: allow to use custom psu_init files Luca Ceresoli
  2 siblings, 2 replies; 12+ messages in thread
From: Luca Ceresoli @ 2018-07-25 14:35 UTC (permalink / raw)
  To: buildroot

In order to boot on the Xilinx ZynqMP SoCs, U-Boot SPL requires a
recent PMU firmware loaded. Instruct U-Boot to add pmufw.bin to the
boot.bin file together with U-Boot SPL, and the boot ROM will load
both.

For this to work properly, a patch to U-Boot is needed. However this
patch must be applied by each defconfig that wishes to use
BR2_TARGET_UBOOT_ZYNQMP_PMUFW. If it were in boot/uboot/ to be applied
unconditionally, it would break the build for configs using a U-Boot
version higher than 2018.7-rc1 where the patch is already applied.

Signed-off-by: Luca Ceresoli <luca@lucaceresoli.net>
Cc: Joel Carlson <joelsoncarl@gmail.com>

---
Changes v4 -> v5:
 - accept either a path (absolute or relative) or an URL to be
   downloaded
 - moved before "uboot: zynqmp: allow to use custom psu_init files"

Changes v3 -> v4:
 - don't copy the pmufw binary in the source tree, use an absolute path
   to the download dir (which needs a patch from upstream to work)
 - depend on BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG (Thomas)

Changes v2 -> v3:
 - don't use a "zynqmp-pmufw-binaries" package, just download a file
 - define kconfig fixups in a variable, then define
   UBOOT_KCONFIG_FIXUP_CMDS unconditionally at global scope (Thomas)
 - use $(INSTALL), not cp (Thomas)
 - $(...) instead of ${...} to reference make variables (Thomas)

Changes v1 -> v2:
 - split from a larger patch doing 2 things.
---
 ...ept-an-absolute-path-for-PMUFW_INIT_.patch | 68 +++++++++++++++++++
 boot/uboot/Config.in                          | 29 ++++++++
 boot/uboot/uboot.mk                           | 24 +++++++
 3 files changed, 121 insertions(+)
 create mode 100644 board/zynqmp/patches/uboot/0003-arm64-zynqmp-accept-an-absolute-path-for-PMUFW_INIT_.patch

diff --git a/board/zynqmp/patches/uboot/0003-arm64-zynqmp-accept-an-absolute-path-for-PMUFW_INIT_.patch b/board/zynqmp/patches/uboot/0003-arm64-zynqmp-accept-an-absolute-path-for-PMUFW_INIT_.patch
new file mode 100644
index 000000000000..95ab7b3b75ca
--- /dev/null
+++ b/board/zynqmp/patches/uboot/0003-arm64-zynqmp-accept-an-absolute-path-for-PMUFW_INIT_.patch
@@ -0,0 +1,68 @@
+From c7df098a71e05dc81cee818747759e8060b59626 Mon Sep 17 00:00:00 2001
+From: Luca Ceresoli <luca@lucaceresoli.net>
+Date: Mon, 4 Jun 2018 12:21:01 +0200
+Subject: [PATCH] arm64: zynqmp: accept an absolute path for PMUFW_INIT_FILE
+
+The value of PMUFW_INIT_FILE is prefixed with "$(srctree)/", thus
+forcing it to be a relative path inside the U-Boot source tree. Since
+the PMUFW is a binary file generated outside of U-Boot, the PMUFW
+binary must be copied inside the U-Boot source tree before the
+build.
+
+This generates a few problems:
+
+ * if the source tree is shared among different out-of-tree builds,
+   they will pollute (and potentially corrupt) each other
+ * the source tree cannot be read-only
+ * any buildsystem must add a command to copy the PMUFW binary
+ * putting an externally-generated binary in the source tree is ugly
+   as hell
+
+Avoid these problems by accepting an absolute path for
+PMUFW_INIT_FILE. This would be as simple as removing the "$(srctree)/"
+prefix, but in order to keep backward compatibility we rather use the
+shell and readlink to get the absolute path even when starting from a
+relative path.
+
+Since 'readlink -f' produces an empty string if the file does not
+exist, we also add a check to ensure the file configured in
+PMUFW_INIT_FILE exists. Otherwise the build would exit successfully,
+but produce a boot.bin without PMUFW as if PMUFW_INIT_FILE were empty.
+
+Tested in the 12 possible combinations of:
+ - PMUFW_INIT_FILE empty, relative, absolute, non-existing
+ - building in-tree, in subdir, in other directory
+
+Signed-off-by: Luca Ceresoli <luca@lucaceresoli.net>
+Cc: Michal Simek <michal.simek@xilinx.com>
+Cc: Simon Glass <sjg@chromium.org>
+Cc: Emmanuel Vadot <manu@bidouilliste.com>
+Signed-off-by: Michal Simek <michal.simek@xilinx.com>
+Backported from upstream: https://git.denx.de/?p=u-boot.git;a=commit;h=c7df098a71e05dc81cee818747759e8060b59626
+---
+ scripts/Makefile.spl | 8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
+
+diff --git a/scripts/Makefile.spl b/scripts/Makefile.spl
+index ef018b5b4056..252f13826d4c 100644
+--- a/scripts/Makefile.spl
++++ b/scripts/Makefile.spl
+@@ -167,8 +167,14 @@ ifdef CONFIG_ARCH_ZYNQ
+ MKIMAGEFLAGS_boot.bin = -T zynqimage -R $(srctree)/$(CONFIG_BOOT_INIT_FILE)
+ endif
+ ifdef CONFIG_ARCH_ZYNQMP
++ifneq ($(CONFIG_PMUFW_INIT_FILE),"")
++spl/boot.bin: zynqmp-check-pmufw
++zynqmp-check-pmufw: FORCE
++	( cd $(srctree) && test -r $(CONFIG_PMUFW_INIT_FILE) ) \
++		|| ( echo "Cannot read $(CONFIG_PMUFW_INIT_FILE)" && false )
++endif
+ MKIMAGEFLAGS_boot.bin = -T zynqmpimage -R $(srctree)/$(CONFIG_BOOT_INIT_FILE) \
+-	-n $(srctree)/$(CONFIG_PMUFW_INIT_FILE)
++	-n "$(shell cd $(srctree); readlink -f $(CONFIG_PMUFW_INIT_FILE))"
+ endif
+ 
+ spl/boot.bin: $(obj)/u-boot-spl.bin FORCE
+-- 
+2.7.4
+
diff --git a/boot/uboot/Config.in b/boot/uboot/Config.in
index 7f8291abe894..a4aeefc7ae16 100644
--- a/boot/uboot/Config.in
+++ b/boot/uboot/Config.in
@@ -368,6 +368,35 @@ config BR2_TARGET_UBOOT_ZYNQ_IMAGE
 	  for u-boot-dtb.img file so this U-Boot format is required
 	  to be set.
 
+config BR2_TARGET_UBOOT_ZYNQMP
+	bool "Boot on the Xilinx ZynqMP SoCs"
+	depends on BR2_aarch64
+	help
+	  Enable options specific to the Xilinx ZynqMP family of SoCs.
+
+if BR2_TARGET_UBOOT_ZYNQMP
+
+config BR2_TARGET_UBOOT_ZYNQMP_PMUFW
+	string "PMU firmware location"
+	depends on BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG
+	help
+	  Location of a PMU firmware binary.
+
+	  If not empty, instructs the U-Boot build process to generate
+	  a boot.bin (to be loaded by the ZynqMP boot ROM) containing
+	  both the U-Boot SPL and the PMU firmware in the
+	  Xilinx-specific boot format.
+
+	  The value can be an absolute or relative path, and will be
+	  used directly from where it is located, or an URI
+	  (e.g. http://...), and it will be downloaded and used from
+	  the download directory.
+
+	  If empty, the generated boot.bin will not contain a PMU
+	  firmware.
+
+endif
+
 config BR2_TARGET_UBOOT_ALTERA_SOCFPGA_IMAGE_CRC
 	bool "CRC image for Altera SoC FPGA (mkpimage)"
 	depends on BR2_arm
diff --git a/boot/uboot/uboot.mk b/boot/uboot/uboot.mk
index bf227f28934f..53da0f39594b 100644
--- a/boot/uboot/uboot.mk
+++ b/boot/uboot/uboot.mk
@@ -287,6 +287,26 @@ define UBOOT_INSTALL_IMAGES_CMDS
 			$(BINARIES_DIR)/boot.scr)
 endef
 
+ifeq ($(BR2_TARGET_UBOOT_ZYNQMP),y)
+
+UBOOT_ZYNQMP_PMUFW = $(call qstrip,$(BR2_TARGET_UBOOT_ZYNQMP_PMUFW))
+
+ifneq ($(findstring ://,$(UBOOT_ZYNQMP_PMUFW)),)
+UBOOT_EXTRA_DOWNLOADS += $(UBOOT_ZYNQMP_PMUFW)
+BR_NO_CHECK_HASH_FOR += $(notdir $(UBOOT_ZYNQMP_PMUFW))
+define UBOOT_ZYNQMP_KCONFIG_PMUFW
+	$(call KCONFIG_SET_OPT,CONFIG_PMUFW_INIT_FILE,"$(UBOOT_DL_DIR)/$(notdir $(UBOOT_ZYNQMP_PMUFW))", \
+	       $(@D)/.config)
+endef
+else ifneq ($(UBOOT_ZYNQMP_PMUFW),)
+define UBOOT_ZYNQMP_KCONFIG_PMUFW
+	$(call KCONFIG_SET_OPT,CONFIG_PMUFW_INIT_FILE,"$(shell readlink -f $(UBOOT_ZYNQMP_PMUFW))", \
+	       $(@D)/.config)
+endef
+endif
+
+endif # BR2_TARGET_UBOOT_ZYNQMP
+
 define UBOOT_INSTALL_OMAP_IFT_IMAGE
 	cp -dpf $(@D)/$(UBOOT_BIN_IFT) $(BINARIES_DIR)/
 endef
@@ -336,6 +356,10 @@ UBOOT_DEPENDENCIES += host-mkpimage
 UBOOT_POST_INSTALL_IMAGES_HOOKS += UBOOT_CRC_ALTERA_SOCFPGA_IMAGE
 endif
 
+define UBOOT_KCONFIG_FIXUP_CMDS
+	$(UBOOT_ZYNQMP_KCONFIG_PMUFW)
+endef
+
 ifeq ($(BR2_TARGET_UBOOT_ENVIMAGE),y)
 ifeq ($(BR_BUILDING),y)
 ifeq ($(call qstrip,$(BR2_TARGET_UBOOT_ENVIMAGE_SOURCE)),)
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [Buildroot] [PATCH v5 2/3] configs/zynqmp_zcu106_defconfig: add Xilinx ZCU106 board (ZynqMP SoC)
  2018-07-25 14:35 [Buildroot] [PATCH v5 0/3] Add Xilinx ZynqMP and ZCU106 board support Luca Ceresoli
  2018-07-25 14:35 ` [Buildroot] [PATCH v5 1/3] uboot: zynqmp: generate SPL image with PMUFW binary Luca Ceresoli
@ 2018-07-25 14:35 ` Luca Ceresoli
  2018-07-26 20:14   ` Joel Carlson
  2018-07-28 17:38   ` Thomas Petazzoni
  2018-07-25 14:35 ` [Buildroot] [PATCH v5 3/3] uboot: zynqmp: allow to use custom psu_init files Luca Ceresoli
  2 siblings, 2 replies; 12+ messages in thread
From: Luca Ceresoli @ 2018-07-25 14:35 UTC (permalink / raw)
  To: buildroot

This adds support the Xilinx ZCU106 development board.

[Tested on the ES2 (Engineering Sample 2) version of the board]
Signed-off-by: Luca Ceresoli <luca@lucaceresoli.net>
Cc: Joel Carlson <joelsoncarl@gmail.com>

---
Changes v4 -> v5:
 - bump pmufw binary from 2017.1 to 2017.4

Changes v3 -> v4:
 - specify an explicit ATF version in the defconfig and use 1.5
   (Thomas)
 - update readme.txt

Changes v2 -> v3:
 - adapt to changed ATF option name
   (BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31_UBOOT)
 - adapt to the new pmufw implementation in uboot (no
   zynqmp-pmufw-binaries package, just a downloadable file)
 - patches now upstream, update patch files

Changes v1 -> v2:
 - don't provide psu_init files: the xilinx master branch has a
   defconfig that works (with 2 patches)
---
 DEVELOPERS                                    |   2 +
 board/zynqmp/genimage.cfg                     |  28 +++++
 ...64-zynqmp-zcu106-fix-SPL-MMC-booting.patch |  52 ++++++++
 ...2-arm64-zynqmp-Enable-booting-to-ATF.patch | 114 ++++++++++++++++++
 board/zynqmp/post-image.sh                    |  13 ++
 board/zynqmp/readme.txt                       |  51 ++++++++
 configs/zynqmp_zcu106_defconfig               |  34 ++++++
 7 files changed, 294 insertions(+)
 create mode 100644 board/zynqmp/genimage.cfg
 create mode 100644 board/zynqmp/patches/uboot/0001-arm64-zynqmp-zcu106-fix-SPL-MMC-booting.patch
 create mode 100644 board/zynqmp/patches/uboot/0002-arm64-zynqmp-Enable-booting-to-ATF.patch
 create mode 100755 board/zynqmp/post-image.sh
 create mode 100644 board/zynqmp/readme.txt
 create mode 100644 configs/zynqmp_zcu106_defconfig

diff --git a/DEVELOPERS b/DEVELOPERS
index 3605032da3ec..014b245b3dbe 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -1162,8 +1162,10 @@ F:	package/ti-sgx-um/
 N:	Luca Ceresoli <luca@lucaceresoli.net>
 F:	board/olimex/a20_olinuxino/
 F:	board/zynq/
+F:	board/zynqmp/
 F:	configs/olimex_a20_olinuxino_*
 F:	configs/zynq_zed_defconfig
+F:	configs/zynqmp_zcu106_defconfig
 F:	package/agentpp/
 F:	package/exim/
 F:	package/libpjsip/
diff --git a/board/zynqmp/genimage.cfg b/board/zynqmp/genimage.cfg
new file mode 100644
index 000000000000..30be086d7d42
--- /dev/null
+++ b/board/zynqmp/genimage.cfg
@@ -0,0 +1,28 @@
+image boot.vfat {
+	vfat {
+		files = {
+			"boot.bin",
+			"u-boot.bin",
+			"atf-uboot.ub",
+			"system.dtb",
+			"Image"
+		}
+	}
+	size = 32M
+}
+
+image sdcard.img {
+	hdimage {
+	}
+
+	partition boot {
+		partition-type = 0xC
+		bootable = "true"
+		image = "boot.vfat"
+	}
+
+	partition rootfs {
+		partition-type = 0x83
+		image = "rootfs.ext4"
+	}
+}
diff --git a/board/zynqmp/patches/uboot/0001-arm64-zynqmp-zcu106-fix-SPL-MMC-booting.patch b/board/zynqmp/patches/uboot/0001-arm64-zynqmp-zcu106-fix-SPL-MMC-booting.patch
new file mode 100644
index 000000000000..3d834a4d2ddb
--- /dev/null
+++ b/board/zynqmp/patches/uboot/0001-arm64-zynqmp-zcu106-fix-SPL-MMC-booting.patch
@@ -0,0 +1,52 @@
+From e5d72ed8339eb05285448aad3c89d21e4d18fd29 Mon Sep 17 00:00:00 2001
+From: Luca Ceresoli <luca@lucaceresoli.net>
+Date: Mon, 26 Feb 2018 09:40:34 +0100
+Subject: [PATCH 1/2] arm64: zynqmp: zcu106: fix SPL MMC booting
+
+The U-Boot SPL generated with the current zcu106 defconfig cannot boot
+from MMC:
+
+  [...]
+  U-Boot SPL 2018.01 (Feb 21 2018 - 17:47:14)
+  EL Level:  EL3
+  Trying to boot from MMC1
+  sdhci_transfer_data: Error detected in status(0x408020)!
+  spl_load_image_fat_os: error reading image u-boot.bin, err - -2
+  spl_load_image_fat: error reading image u-boot.img, err - -6
+  SPL: failed to boot from all boot devices
+  ### ERROR ### Please RESET the board ###
+
+Fix by lowering the rpll value. The new value for the RPLL_CTRL
+register comes from the current psu_init_gpl.c from the HDF file at
+https://github.com/xilinx/hdf-examples/tree/01ad8ea5fd1989abf4ea5a072d019a16cb2bc546/zcu106-zynqmp
+(generated by Vivado v2017.4).
+
+RPLL and sdio1_ref clocks before and after this change:
+
+ - Old values: RPLL 1.36 GHz, sdio1_ref 272 MHz
+ - New values: RPLL 1.16 GHz, sdio1_ref 233 MHz
+
+Signed-off-by: Luca Ceresoli <luca@lucaceresoli.net>
+Cc: Michal Simek <michal.simek@xilinx.com>
+Upstream-status: accepted upstream in a different form
+---
+
+ board/xilinx/zynqmp/zynqmp-zcu106-revA/psu_init_gpl.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/board/xilinx/zynqmp/zynqmp-zcu106-revA/psu_init_gpl.c b/board/xilinx/zynqmp/zynqmp-zcu106-revA/psu_init_gpl.c
+index 4d18abe000ca..e6fa477e53e7 100644
+--- a/board/xilinx/zynqmp/zynqmp-zcu106-revA/psu_init_gpl.c
++++ b/board/xilinx/zynqmp/zynqmp-zcu106-revA/psu_init_gpl.c
+@@ -10,7 +10,7 @@
+ static unsigned long psu_pll_init_data(void)
+ {
+ 	psu_mask_write(0xFF5E0034, 0xFE7FEDEFU, 0x7E4E2C62U);
+-	psu_mask_write(0xFF5E0030, 0x00717F00U, 0x00013C00U);
++	psu_mask_write(0xFF5E0030, 0x00717F00U, 0x00014600U);
+ 	psu_mask_write(0xFF5E0030, 0x00000008U, 0x00000008U);
+ 	psu_mask_write(0xFF5E0030, 0x00000001U, 0x00000001U);
+ 	psu_mask_write(0xFF5E0030, 0x00000001U, 0x00000000U);
+-- 
+2.7.4
+
diff --git a/board/zynqmp/patches/uboot/0002-arm64-zynqmp-Enable-booting-to-ATF.patch b/board/zynqmp/patches/uboot/0002-arm64-zynqmp-Enable-booting-to-ATF.patch
new file mode 100644
index 000000000000..487fff681210
--- /dev/null
+++ b/board/zynqmp/patches/uboot/0002-arm64-zynqmp-Enable-booting-to-ATF.patch
@@ -0,0 +1,114 @@
+From 5e3cac50cc981e01d9072241035a8d4162560c71 Mon Sep 17 00:00:00 2001
+From: Luca Ceresoli <luca@lucaceresoli.net>
+Date: Mon, 12 Mar 2018 17:18:38 +0100
+Subject: [PATCH] arm64: zynqmp: Enable booting to ATF
+
+U-Boot is now able to boot to ARM Trusted Firmware (ATF). The boot
+flow is SPL(EL3) loads ATF and full u-boot and jump to ATF(EL3) which
+pass control to full u-boot(EL2). This has been tested on zcu106, so
+enable it in this defconfig.
+
+To generate an image that triggers this booting flow, you need to pass
+'-O arm-trusted-firmware' to mkimage.
+
+Signed-off-by: Luca Ceresoli <luca@lucaceresoli.net>
+Signed-off-by: Michal Simek <michal.simek@xilinx.com>
+Backported from upstream: http://git.denx.de/?p=u-boot.git;a=commit;h=5e3cac50cc981e01d9072241035a8d4162560c71
+---
+
+ configs/xilinx_zynqmp_zc1751_xm015_dc1_defconfig | 1 +
+ configs/xilinx_zynqmp_zc1751_xm016_dc2_defconfig | 1 +
+ configs/xilinx_zynqmp_zc1751_xm018_dc4_defconfig | 1 +
+ configs/xilinx_zynqmp_zc1751_xm019_dc5_defconfig | 1 +
+ configs/xilinx_zynqmp_zcu102_rev1_0_defconfig    | 1 +
+ configs/xilinx_zynqmp_zcu102_revA_defconfig      | 1 +
+ configs/xilinx_zynqmp_zcu102_revB_defconfig      | 1 +
+ 7 files changed, 7 insertions(+)
+
+diff --git a/configs/xilinx_zynqmp_zc1751_xm015_dc1_defconfig b/configs/xilinx_zynqmp_zc1751_xm015_dc1_defconfig
+index c5bfa2b12638..488c72258b0e 100644
+--- a/configs/xilinx_zynqmp_zc1751_xm015_dc1_defconfig
++++ b/configs/xilinx_zynqmp_zc1751_xm015_dc1_defconfig
+@@ -19,6 +19,7 @@ CONFIG_BOARD_EARLY_INIT_R=y
+ CONFIG_SPL_OS_BOOT=y
+ CONFIG_SPL_RAM_SUPPORT=y
+ CONFIG_SPL_RAM_DEVICE=y
++CONFIG_SPL_ATF=y
+ CONFIG_SYS_PROMPT="ZynqMP> "
+ CONFIG_FASTBOOT=y
+ CONFIG_FASTBOOT_FLASH=y
+diff --git a/configs/xilinx_zynqmp_zc1751_xm016_dc2_defconfig b/configs/xilinx_zynqmp_zc1751_xm016_dc2_defconfig
+index f86dce403a42..5d501eec0edd 100644
+--- a/configs/xilinx_zynqmp_zc1751_xm016_dc2_defconfig
++++ b/configs/xilinx_zynqmp_zc1751_xm016_dc2_defconfig
+@@ -20,6 +20,7 @@ CONFIG_BOARD_EARLY_INIT_R=y
+ CONFIG_SPL_OS_BOOT=y
+ CONFIG_SPL_RAM_SUPPORT=y
+ CONFIG_SPL_RAM_DEVICE=y
++CONFIG_SPL_ATF=y
+ CONFIG_SYS_PROMPT="ZynqMP> "
+ CONFIG_FASTBOOT=y
+ CONFIG_FASTBOOT_FLASH=y
+diff --git a/configs/xilinx_zynqmp_zc1751_xm018_dc4_defconfig b/configs/xilinx_zynqmp_zc1751_xm018_dc4_defconfig
+index 6e947cf56827..6f7eaebd7676 100644
+--- a/configs/xilinx_zynqmp_zc1751_xm018_dc4_defconfig
++++ b/configs/xilinx_zynqmp_zc1751_xm018_dc4_defconfig
+@@ -16,6 +16,7 @@ CONFIG_BOARD_EARLY_INIT_R=y
+ CONFIG_SPL_OS_BOOT=y
+ CONFIG_SPL_RAM_SUPPORT=y
+ CONFIG_SPL_RAM_DEVICE=y
++CONFIG_SPL_ATF=y
+ CONFIG_SYS_PROMPT="ZynqMP> "
+ CONFIG_CMD_MEMTEST=y
+ CONFIG_SYS_ALT_MEMTEST=y
+diff --git a/configs/xilinx_zynqmp_zc1751_xm019_dc5_defconfig b/configs/xilinx_zynqmp_zc1751_xm019_dc5_defconfig
+index 1c934858c61c..7a3806cba4b5 100644
+--- a/configs/xilinx_zynqmp_zc1751_xm019_dc5_defconfig
++++ b/configs/xilinx_zynqmp_zc1751_xm019_dc5_defconfig
+@@ -17,6 +17,7 @@ CONFIG_BOARD_EARLY_INIT_R=y
+ CONFIG_SPL_OS_BOOT=y
+ CONFIG_SPL_RAM_SUPPORT=y
+ CONFIG_SPL_RAM_DEVICE=y
++CONFIG_SPL_ATF=y
+ CONFIG_SYS_PROMPT="ZynqMP> "
+ CONFIG_CMD_MEMTEST=y
+ CONFIG_SYS_ALT_MEMTEST=y
+diff --git a/configs/xilinx_zynqmp_zcu102_rev1_0_defconfig b/configs/xilinx_zynqmp_zcu102_rev1_0_defconfig
+index e13c7c56f310..e4408f182ca0 100644
+--- a/configs/xilinx_zynqmp_zcu102_rev1_0_defconfig
++++ b/configs/xilinx_zynqmp_zcu102_rev1_0_defconfig
+@@ -19,6 +19,7 @@ CONFIG_BOARD_EARLY_INIT_R=y
+ CONFIG_SPL_OS_BOOT=y
+ CONFIG_SPL_RAM_SUPPORT=y
+ CONFIG_SPL_RAM_DEVICE=y
++CONFIG_SPL_ATF=y
+ CONFIG_SYS_PROMPT="ZynqMP> "
+ CONFIG_FASTBOOT=y
+ CONFIG_FASTBOOT_FLASH=y
+diff --git a/configs/xilinx_zynqmp_zcu102_revA_defconfig b/configs/xilinx_zynqmp_zcu102_revA_defconfig
+index 5b2cd495ee85..b52f6789fd4b 100644
+--- a/configs/xilinx_zynqmp_zcu102_revA_defconfig
++++ b/configs/xilinx_zynqmp_zcu102_revA_defconfig
+@@ -19,6 +19,7 @@ CONFIG_BOARD_EARLY_INIT_R=y
+ CONFIG_SPL_OS_BOOT=y
+ CONFIG_SPL_RAM_SUPPORT=y
+ CONFIG_SPL_RAM_DEVICE=y
++CONFIG_SPL_ATF=y
+ CONFIG_SYS_PROMPT="ZynqMP> "
+ CONFIG_FASTBOOT=y
+ CONFIG_FASTBOOT_FLASH=y
+diff --git a/configs/xilinx_zynqmp_zcu102_revB_defconfig b/configs/xilinx_zynqmp_zcu102_revB_defconfig
+index e6530fbfe7ff..80592554f682 100644
+--- a/configs/xilinx_zynqmp_zcu102_revB_defconfig
++++ b/configs/xilinx_zynqmp_zcu102_revB_defconfig
+@@ -19,6 +19,7 @@ CONFIG_BOARD_EARLY_INIT_R=y
+ CONFIG_SPL_OS_BOOT=y
+ CONFIG_SPL_RAM_SUPPORT=y
+ CONFIG_SPL_RAM_DEVICE=y
++CONFIG_SPL_ATF=y
+ CONFIG_SYS_PROMPT="ZynqMP> "
+ CONFIG_FASTBOOT=y
+ CONFIG_FASTBOOT_FLASH=y
+-- 
+2.7.4
+
diff --git a/board/zynqmp/post-image.sh b/board/zynqmp/post-image.sh
new file mode 100755
index 000000000000..2e7bcbaab60f
--- /dev/null
+++ b/board/zynqmp/post-image.sh
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+# By default U-Boot loads DTB from a file named "system.dtb", so
+# let's use a symlink with that name that points to the *first*
+# devicetree listed in the config.
+
+FIRST_DT=$(sed -nr \
+               -e 's|^BR2_LINUX_KERNEL_INTREE_DTS_NAME="xilinx/([-_/[:alnum:]]*).*"$|\1|p' \
+               ${BR2_CONFIG})
+
+[ -z "${FIRST_DT}" ] || ln -fs ${FIRST_DT}.dtb ${BINARIES_DIR}/system.dtb
+
+support/scripts/genimage.sh -c board/zynqmp/genimage.cfg
diff --git a/board/zynqmp/readme.txt b/board/zynqmp/readme.txt
new file mode 100644
index 000000000000..da37f4ccc9c5
--- /dev/null
+++ b/board/zynqmp/readme.txt
@@ -0,0 +1,51 @@
+********************************
+Xilinx ZCU106 board - ZynqMP SoC
+********************************
+
+This document describes the Buildroot support for the ZCU106 board by
+Xilinx, based on the Zynq UltraScale+ MPSoC (aka ZynqMP). It has been
+tested with the EK-U1-ZCU106-ES2 pre-production board.
+
+How to build it
+===============
+
+Configure Buildroot:
+
+    $ make zynqmp_zcu106_defconfig
+
+Compile everything and build the rootfs image:
+
+    $ make
+
+Result of the build
+-------------------
+
+After building, you should get a tree like this:
+
+    output/images/
+    +-- atf-uboot.ub
+    +-- bl31.bin
+    +-- boot.bin
+    +-- boot.vfat
+    +-- Image
+    +-- rootfs.ext2
+    +-- rootfs.ext4 -> rootfs.ext2
+    +-- sdcard.img
+    +-- system.dtb -> zynqmp-zcu106-revA.dtb
+    +-- u-boot.bin
+    `-- zynqmp-zcu106-revA.dtb
+
+How to write the SD card
+========================
+
+WARNING! This will destroy all the card content. Use with care!
+
+The sdcard.img file is a complete bootable image ready to be written
+on the boot medium. To install it, simply copy the image to an SD
+card:
+
+    # dd if=output/images/sdcard.img of=/dev/sdX
+
+Where 'sdX' is the device node of the SD.
+
+Eject the SD card, insert it in the board, and power it up.
diff --git a/configs/zynqmp_zcu106_defconfig b/configs/zynqmp_zcu106_defconfig
new file mode 100644
index 000000000000..bee7c1daf704
--- /dev/null
+++ b/configs/zynqmp_zcu106_defconfig
@@ -0,0 +1,34 @@
+BR2_aarch64=y
+BR2_GLOBAL_PATCH_DIR="board/zynqmp/patches/"
+BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y
+BR2_ROOTFS_POST_IMAGE_SCRIPT="board/zynqmp/post-image.sh"
+BR2_LINUX_KERNEL=y
+BR2_LINUX_KERNEL_CUSTOM_GIT=y
+BR2_LINUX_KERNEL_CUSTOM_REPO_URL="git://github.com/Xilinx/linux-xlnx.git"
+BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="xilinx-v2017.4"
+BR2_LINUX_KERNEL_DEFCONFIG="xilinx_zynqmp"
+BR2_LINUX_KERNEL_DTS_SUPPORT=y
+BR2_LINUX_KERNEL_INTREE_DTS_NAME="xilinx/zynqmp-zcu106-revA"
+BR2_TARGET_ROOTFS_EXT2=y
+BR2_TARGET_ROOTFS_EXT2_4=y
+# BR2_TARGET_ROOTFS_TAR is not set
+BR2_TARGET_ARM_TRUSTED_FIRMWARE=y
+BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT=y
+BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL="https://github.com/ARM-software/arm-trusted-firmware.git"
+BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_VERSION="v1.5"
+BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="zynqmp"
+BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31_UBOOT=y
+BR2_TARGET_UBOOT=y
+BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y
+BR2_TARGET_UBOOT_CUSTOM_GIT=y
+BR2_TARGET_UBOOT_CUSTOM_REPO_URL="git://github.com/xilinx/u-boot-xlnx.git"
+BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="228801a215909365ae1dcdd799034195ad7264f7"
+BR2_TARGET_UBOOT_BOARD_DEFCONFIG="xilinx_zynqmp_zcu106_revA"
+BR2_TARGET_UBOOT_NEEDS_DTC=y
+BR2_TARGET_UBOOT_SPL=y
+BR2_TARGET_UBOOT_SPL_NAME="spl/boot.bin"
+BR2_TARGET_UBOOT_ZYNQMP=y
+BR2_TARGET_UBOOT_ZYNQMP_PMUFW="https://github.com/lucaceresoli/zynqmp-pmufw-binaries/raw/53fdb7b6c92860ceb0ec5fd14deee302f4a84269/bin/pmufw-zcu106-default-v2017.4.bin"
+BR2_PACKAGE_HOST_DOSFSTOOLS=y
+BR2_PACKAGE_HOST_GENIMAGE=y
+BR2_PACKAGE_HOST_MTOOLS=y
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [Buildroot] [PATCH v5 3/3] uboot: zynqmp: allow to use custom psu_init files
  2018-07-25 14:35 [Buildroot] [PATCH v5 0/3] Add Xilinx ZynqMP and ZCU106 board support Luca Ceresoli
  2018-07-25 14:35 ` [Buildroot] [PATCH v5 1/3] uboot: zynqmp: generate SPL image with PMUFW binary Luca Ceresoli
  2018-07-25 14:35 ` [Buildroot] [PATCH v5 2/3] configs/zynqmp_zcu106_defconfig: add Xilinx ZCU106 board (ZynqMP SoC) Luca Ceresoli
@ 2018-07-25 14:35 ` Luca Ceresoli
  2018-07-26 20:12   ` Joel Carlson
  2018-07-28 17:39   ` Thomas Petazzoni
  2 siblings, 2 replies; 12+ messages in thread
From: Luca Ceresoli @ 2018-07-25 14:35 UTC (permalink / raw)
  To: buildroot

U-Boot SPL configures pinmuxes, clocks and other low-level devices. On
the Xilinx ZynqMP SoCs the code to do this resides in a file called
psu_init_gpl.c which is initially generated by the Xilinx development
tools. Add an option to pass these files from the outside (e.g. in the
board files).

For this to work properly, a patch to U-Boot is needed. However this
patch must be applied by each defconfig using
BR2_TARGET_UBOOT_ZYNQMP_PSU_INIT_DIR. If it were in boot/uboot/ to be
applied unconditionally, it would break the build for configs using a
U-Boot version where the patch is already applied.

Signed-off-by: Luca Ceresoli <luca@lucaceresoli.net>
Cc: Joel Carlson <joelsoncarl@gmail.com>

---
Changes v4 -> v5:
 - Use readlink to always point to the correct file, to fix
   BR2_EXTERNAL (Joel)
 - Define an intermediate UBOOT_ZYNQMP_PSU_INIT variable instead of
   calculating its qstripped value twice (Thomas)
 - the patch is now upstream, update it

Changes v3 -> v4:
 - don't copy the psu_init file(s) in the source tree, point to its
   path (which needs a patch sent upstream to work)
 - depend on BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG (Thomas)
 - point to the file, not the directory

Changes v2 -> v3:
 - Add a bool option to show/hidw all ZynqMP-specific config knobs
 - Move this patch before "uboot: zynqmp: generate SPL image with
   PMUFW binary"
 - Reword Config.in text

Changes v1 -> v2:
 - split from a larger patch doing 2 things
 - document the option of having psu_init_gpl.c without .h
---
 ...ynqmp-pass-the-PS-init-file-as-a-kco.patch | 175 ++++++++++++++++++
 boot/uboot/Config.in                          |  23 +++
 boot/uboot/uboot.mk                           |  10 +
 3 files changed, 208 insertions(+)
 create mode 100644 board/zynqmp/patches/uboot/0004-arm-arm64-zynq-zynqmp-pass-the-PS-init-file-as-a-kco.patch

diff --git a/board/zynqmp/patches/uboot/0004-arm-arm64-zynq-zynqmp-pass-the-PS-init-file-as-a-kco.patch b/board/zynqmp/patches/uboot/0004-arm-arm64-zynq-zynqmp-pass-the-PS-init-file-as-a-kco.patch
new file mode 100644
index 000000000000..b32e162780b0
--- /dev/null
+++ b/board/zynqmp/patches/uboot/0004-arm-arm64-zynq-zynqmp-pass-the-PS-init-file-as-a-kco.patch
@@ -0,0 +1,175 @@
+From 4c9d54ab5a41d65000c8d249b6fb1b76056f1812 Mon Sep 17 00:00:00 2001
+From: Luca Ceresoli <luca@lucaceresoli.net>
+Date: Wed, 20 Jun 2018 12:11:50 +0200
+Subject: [PATCH] arm/arm64: zynq/zynqmp: pass the PS init file as a kconfig
+ variable
+
+U-Boot needs to link ps7_init_gpl.c on Zynq or psu_init_gpl.c on
+ZynqMP (PS init for short). The current logic to locate this file for
+both platforms is:
+
+ 1. if a board-specific file exists in
+    board/xilinx/zynq[mp]/$(CONFIG_DEFAULT_DEVICE_TREE)/ps?_init_gpl.c
+    then use it
+ 2. otherwise use board/xilinx/zynq/ps?_init_gpl.c
+
+In the latter case the file does not exist in the U-Boot sources and
+must be copied in the source tree from the outside before starting the
+build. This is typical when it is generated from Xilinx tools while
+developing a custom hardware. However making sure that a
+board-specific file is _not_ found (and used) requires some trickery
+such as removing or overwriting all PS init files (e.g.: the current
+meta-xilinx yocto layer [0]).
+
+This generates a few problems:
+
+ * if the source tree is shared among different out-of-tree builds,
+   they will pollute (and potentially corrupt) each other
+ * the source tree cannot be read-only
+ * any buildsystem must add a command to copy the PS init file binary
+ * overwriting or deleting files in the source tree is ugly as hell
+
+Simplify usage by allowing to pass the path to the desired PS init
+file in kconfig variable XILINX_PS_INIT_FILE. It can be an absolute
+path or relative to $(srctree). If the variable is set, the
+user-specified file will always be used without being copied
+around. If the the variable is left empty, for backward compatibility
+fall back to the old behaviour.
+
+Since the issue is the same for Zynq and ZynqMP, add one kconfig
+variable in a common place and use it for both.
+
+Also use the new kconfig help text to document all the ways to give
+U-Boot the PS init file.
+
+Build-tested with all combinations of:
+ - platform: zynq or zynqmp
+ - PS init file: from XILINX_PS_INIT_FILE (absolute, relative path,
+   non-existing), in-tree board-specific, in board/xilinx/zynq[mp]/
+ - building in-tree, in subdir, in other directory
+
+[0] https://github.com/Xilinx/meta-xilinx/blob/b2f74cc7fe5c4881589d5e440a17cb51fc66a7ab/meta-xilinx-bsp/recipes-bsp/u-boot/u-boot-spl-zynq-init.inc#L9
+
+Signed-off-by: Luca Ceresoli <luca@lucaceresoli.net>
+Cc: Albert Aribaud <albert.u.boot@aribaud.net>
+Cc: Michal Simek <michal.simek@xilinx.com>
+Cc: Nathan Rossi <nathan@nathanrossi.com>
+Backported from upstream: https://git.denx.de/?p=u-boot.git;a=commit;h=6da4f67ad09cd8b311d77b2b04e557b7ef65b56c
+---
+ arch/arm/Kconfig             |  1 +
+ board/xilinx/Kconfig         | 41 +++++++++++++++++++++++++++++++++++++++++
+ board/xilinx/zynq/Makefile   | 10 +++++++++-
+ board/xilinx/zynqmp/Makefile | 10 +++++++++-
+ 4 files changed, 60 insertions(+), 2 deletions(-)
+ create mode 100644 board/xilinx/Kconfig
+
+diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
+index 22234cde2ab6..e04979d0ef7e 100644
+--- a/arch/arm/Kconfig
++++ b/arch/arm/Kconfig
+@@ -1293,4 +1293,5 @@ source "board/technologic/ts4600/Kconfig"
+ source "board/vscom/baltos/Kconfig"
+ source "board/woodburn/Kconfig"
+ source "board/work-microwave/work_92105/Kconfig"
++source "board/xilinx/Kconfig"
+ source "board/zipitz2/Kconfig"
+
+ source "arch/arm/Kconfig.debug"
+diff --git a/board/xilinx/Kconfig b/board/xilinx/Kconfig
+new file mode 100644
+index 000000000000..aa3fa061edef
+--- /dev/null
++++ b/board/xilinx/Kconfig
+@@ -0,0 +1,41 @@
++# Copyright (c) 2018, Luca Ceresoli <luca@lucaceresoli.net>
++#
++# SPDX-License-Identifier: GPL-2.0
++
++if ARCH_ZYNQ || ARCH_ZYNQMP
++
++config XILINX_PS_INIT_FILE
++	string "Zynq/ZynqMP PS init file(s) location"
++	help
++	  On Zynq and ZynqMP U-Boot SPL (or U-Boot proper if
++	  ZYNQMP_PSU_INIT_ENABLED is set) is responsible for some
++	  basic initializations, such as enabling peripherals and
++	  configuring pinmuxes. The PS init file (called
++	  psu_init_gpl.c on ZynqMP, ps7_init_gpl.c for Zynq-7000)
++	  contains the code for such initializations.
++
++	  U-Boot contains PS init files for some boards, but each of
++	  them describes only one specific configuration. Users of a
++	  different board, or needing a different configuration, can
++	  generate custom files using the Xilinx development tools.
++
++	  There are three ways to give a PS init file to U-Boot:
++
++	  1. Set this variable to the path, either relative to the
++	     source tree or absolute, where the psu_init_gpl.c or
++	     ps7_init_gpl.c file is located. U-Boot will build this
++	     file.
++
++	  2. If you leave an empty string here, U-Boot will use
++	     board/xilinx/zynq/$(CONFIG_DEFAULT_DEVICE_TREE)/ps7_init_gpl.c
++	     for Zynq-7000, or
++	     board/xilinx/zynqmp/$(CONFIG_DEFAULT_DEVICE_TREE)/psu_init_gpl.c
++	     for ZynqMP.
++
++	  3. If the above file does not exist, U-Boot will use
++	     board/xilinx/zynq/ps7_init_gpl.c for Zynq-7000, or
++	     board/xilinx/zynqmp/psu_init_gpl.c for ZynqMP. This file
++	     is not provided by U-Boot, you have to copy it there
++	     before the build.
++
++endif
+diff --git a/board/xilinx/zynq/Makefile b/board/xilinx/zynq/Makefile
+index 5a76a26720cd..03ad5f0532ee 100644
+--- a/board/xilinx/zynq/Makefile
++++ b/board/xilinx/zynq/Makefile
+@@ -5,10 +5,18 @@
+ 
+ obj-y	:= board.o
+ 
+-hw-platform-y :=$(shell echo $(CONFIG_DEFAULT_DEVICE_TREE))
++ifneq ($(CONFIG_XILINX_PS_INIT_FILE),"")
++PS_INIT_FILE := $(shell cd $(srctree); readlink -f $(CONFIG_XILINX_PS_INIT_FILE))
++init-objs := ps_init_gpl.o
++spl/board/xilinx/zynq/ps_init_gpl.o board/xilinx/zynq/ps_init_gpl.o: $(PS_INIT_FILE)
++	$(CC) $(c_flags) -I $(srctree)/$(src) -c -o $@ $^
++endif
+ 
++ifeq ($(init-objs),)
++hw-platform-y :=$(shell echo $(CONFIG_DEFAULT_DEVICE_TREE))
+ init-objs := $(if $(wildcard $(srctree)/$(src)/$(hw-platform-y)/ps7_init_gpl.c),\
+ 	$(hw-platform-y)/ps7_init_gpl.o)
++endif
+ 
+ ifeq ($(init-objs),)
+ ifneq ($(wildcard $(srctree)/$(src)/ps7_init_gpl.c),)
+diff --git a/board/xilinx/zynqmp/Makefile b/board/xilinx/zynqmp/Makefile
+index 05ccd25dcef3..960b81fc5853 100644
+--- a/board/xilinx/zynqmp/Makefile
++++ b/board/xilinx/zynqmp/Makefile
+@@ -5,10 +5,18 @@
+ 
+ obj-y	:= zynqmp.o
+ 
+-hw-platform-y :=$(shell echo $(CONFIG_DEFAULT_DEVICE_TREE))
++ifneq ($(CONFIG_XILINX_PS_INIT_FILE),"")
++PS_INIT_FILE := $(shell cd $(srctree); readlink -f $(CONFIG_XILINX_PS_INIT_FILE))
++init-objs := ps_init_gpl.o
++spl/board/xilinx/zynqmp/ps_init_gpl.o board/xilinx/zynqmp/ps_init_gpl.o: $(PS_INIT_FILE)
++	$(CC) $(c_flags) -I $(srctree)/$(src) -c -o $@ $^
++endif
+ 
++ifeq ($(init-objs),)
++hw-platform-y :=$(shell echo $(CONFIG_DEFAULT_DEVICE_TREE))
+ init-objs := $(if $(wildcard $(srctree)/$(src)/$(hw-platform-y)/psu_init_gpl.c),\
+ 	$(hw-platform-y)/psu_init_gpl.o)
++endif
+ 
+ ifeq ($(init-objs),)
+ ifneq ($(wildcard $(srctree)/$(src)/psu_init_gpl.c),)
+-- 
+2.7.4
+
diff --git a/boot/uboot/Config.in b/boot/uboot/Config.in
index a4aeefc7ae16..147c389d3f4e 100644
--- a/boot/uboot/Config.in
+++ b/boot/uboot/Config.in
@@ -395,6 +395,29 @@ config BR2_TARGET_UBOOT_ZYNQMP_PMUFW
 	  If empty, the generated boot.bin will not contain a PMU
 	  firmware.
 
+config BR2_TARGET_UBOOT_ZYNQMP_PSU_INIT_FILE
+	string "Custom psu_init_gpl file"
+	depends on BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG
+	help
+	  On ZynqMP the booloader is responsible for some basic
+	  initializations, such as enabling peripherals and
+	  configuring pinmuxes. The psu_init_gpl.c file (and,
+	  optionally, psu_init_gpl.h) contains the code for such
+	  initializations.
+
+	  Although U-Boot contains psu_init_gpl.c files for some
+	  boards, each of them describes only one specific
+	  configuration. Users of a different board, or needing a
+	  different configuration, can generate custom files using the
+	  Xilinx development tools.
+
+	  Set this variable to the path to your psu_init_gpl.c file
+	  (e.g. "board/myboard/psu_init_gpl.c"). psu_init_gpl.h, if
+	  needed, should be in the same directory. U-Boot will build
+	  and link the user-provided file instead of the built-in one.
+
+	  Leave empty to use the files provided by U-Boot.
+
 endif
 
 config BR2_TARGET_UBOOT_ALTERA_SOCFPGA_IMAGE_CRC
diff --git a/boot/uboot/uboot.mk b/boot/uboot/uboot.mk
index 53da0f39594b..b3c75634ddc6 100644
--- a/boot/uboot/uboot.mk
+++ b/boot/uboot/uboot.mk
@@ -305,6 +305,15 @@ define UBOOT_ZYNQMP_KCONFIG_PMUFW
 endef
 endif
 
+UBOOT_ZYNQMP_PSU_INIT = $(call qstrip,$(BR2_TARGET_UBOOT_ZYNQMP_PSU_INIT_FILE))
+
+ifneq ($(UBOOT_ZYNQMP_PSU_INIT),)
+define UBOOT_ZYNQMP_KCONFIG_PSU_INIT
+	$(call KCONFIG_SET_OPT,CONFIG_XILINX_PS_INIT_FILE,"$(shell readlink -f $(UBOOT_ZYNQMP_PSU_INIT))", \
+           $(@D)/.config)
+endef
+endif
+
 endif # BR2_TARGET_UBOOT_ZYNQMP
 
 define UBOOT_INSTALL_OMAP_IFT_IMAGE
@@ -358,6 +367,7 @@ endif
 
 define UBOOT_KCONFIG_FIXUP_CMDS
 	$(UBOOT_ZYNQMP_KCONFIG_PMUFW)
+	$(UBOOT_ZYNQMP_KCONFIG_PSU_INIT)
 endef
 
 ifeq ($(BR2_TARGET_UBOOT_ENVIMAGE),y)
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [Buildroot] [PATCH v5 1/3] uboot: zynqmp: generate SPL image with PMUFW binary
  2018-07-25 14:35 ` [Buildroot] [PATCH v5 1/3] uboot: zynqmp: generate SPL image with PMUFW binary Luca Ceresoli
@ 2018-07-26 20:04   ` Joel Carlson
  2018-07-28 17:37   ` Thomas Petazzoni
  1 sibling, 0 replies; 12+ messages in thread
From: Joel Carlson @ 2018-07-26 20:04 UTC (permalink / raw)
  To: buildroot

Luca,

On 07/25/2018 08:35 AM, Luca Ceresoli wrote:
> In order to boot on the Xilinx ZynqMP SoCs, U-Boot SPL requires a
> recent PMU firmware loaded. Instruct U-Boot to add pmufw.bin to the
> boot.bin file together with U-Boot SPL, and the boot ROM will load
> both.
> 
> For this to work properly, a patch to U-Boot is needed. However this
> patch must be applied by each defconfig that wishes to use
> BR2_TARGET_UBOOT_ZYNQMP_PMUFW. If it were in boot/uboot/ to be applied
> unconditionally, it would break the build for configs using a U-Boot
> version higher than 2018.7-rc1 where the patch is already applied.
> 
> Signed-off-by: Luca Ceresoli <luca@lucaceresoli.net>
> Cc: Joel Carlson <joelsoncarl@gmail.com>

Reviewed-by: Joel Carlson <JoelsonCarl@gmail.com>
Tested-by: Joel Carlson <JoelsonCarl@gmail.com>

My testing: I have my own branch off of 2018.05.1.  I removed the v4 
patches and applied these v5 patches. With minor changes to my defconfig 
to match the changes in this version, I did a clean build and verified 
my zynqmp dev board still boots.  I am using U-Boot 2018.07 which 
already contains the patch here, so I did not use the provided patch in 
my build.  The PMUFW I obtain is a local path using a $(BR2_EXTERNAL) 
variable, rather than a URI of some sort.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Buildroot] [PATCH v5 3/3] uboot: zynqmp: allow to use custom psu_init files
  2018-07-25 14:35 ` [Buildroot] [PATCH v5 3/3] uboot: zynqmp: allow to use custom psu_init files Luca Ceresoli
@ 2018-07-26 20:12   ` Joel Carlson
  2018-07-28 17:39   ` Thomas Petazzoni
  1 sibling, 0 replies; 12+ messages in thread
From: Joel Carlson @ 2018-07-26 20:12 UTC (permalink / raw)
  To: buildroot

Luca,

On Wed, Jul 25, 2018 at 8:35 AM, Luca Ceresoli <luca@lucaceresoli.net> wrote:
> U-Boot SPL configures pinmuxes, clocks and other low-level devices. On
> the Xilinx ZynqMP SoCs the code to do this resides in a file called
> psu_init_gpl.c which is initially generated by the Xilinx development
> tools. Add an option to pass these files from the outside (e.g. in the
> board files).
>
> For this to work properly, a patch to U-Boot is needed. However this
> patch must be applied by each defconfig using
> BR2_TARGET_UBOOT_ZYNQMP_PSU_INIT_DIR. If it were in boot/uboot/ to be
> applied unconditionally, it would break the build for configs using a
> U-Boot version where the patch is already applied.
>
> Signed-off-by: Luca Ceresoli <luca@lucaceresoli.net>
> Cc: Joel Carlson <joelsoncarl@gmail.com>

Reviewed-by: Joel Carlson <JoelsonCarl@gmail.com>
Tested-by: Joel Carlson <JoelsonCarl@gmail.com>

My testing: I have a buildroot branch off of 2018.05.1.  I removed v4
of these patches, applied v5 here, then did a clean build and made
sure my zynqmp dev board still boots.
My U-Boot version is a branch off of 2018.07 with the upstream patch
cherry-picked in, so I did not use the patch supplied with this
change.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Buildroot] [PATCH v5 2/3] configs/zynqmp_zcu106_defconfig: add Xilinx ZCU106 board (ZynqMP SoC)
  2018-07-25 14:35 ` [Buildroot] [PATCH v5 2/3] configs/zynqmp_zcu106_defconfig: add Xilinx ZCU106 board (ZynqMP SoC) Luca Ceresoli
@ 2018-07-26 20:14   ` Joel Carlson
  2018-07-28 17:38   ` Thomas Petazzoni
  1 sibling, 0 replies; 12+ messages in thread
From: Joel Carlson @ 2018-07-26 20:14 UTC (permalink / raw)
  To: buildroot

Luca,

On Wed, Jul 25, 2018 at 8:35 AM, Luca Ceresoli <luca@lucaceresoli.net> wrote:
> This adds support the Xilinx ZCU106 development board.
>
> [Tested on the ES2 (Engineering Sample 2) version of the board]
> Signed-off-by: Luca Ceresoli <luca@lucaceresoli.net>
> Cc: Joel Carlson <joelsoncarl@gmail.com>

Tested-by: Joel Carlson <JoelsonCarl@gmail.com>

Just did a basic compile check to make sure everything built
successfully.  I unfortunately don't have a ZCU106 board to try this
on.  But I wanted to do something since I was reviewing/testing
patches 1 and 3 in this series as well.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Buildroot] [PATCH v5 1/3] uboot: zynqmp: generate SPL image with PMUFW binary
  2018-07-25 14:35 ` [Buildroot] [PATCH v5 1/3] uboot: zynqmp: generate SPL image with PMUFW binary Luca Ceresoli
  2018-07-26 20:04   ` Joel Carlson
@ 2018-07-28 17:37   ` Thomas Petazzoni
  2018-07-28 22:36     ` Luca Ceresoli
  1 sibling, 1 reply; 12+ messages in thread
From: Thomas Petazzoni @ 2018-07-28 17:37 UTC (permalink / raw)
  To: buildroot

Hello,

On Wed, 25 Jul 2018 16:35:36 +0200, Luca Ceresoli wrote:
> In order to boot on the Xilinx ZynqMP SoCs, U-Boot SPL requires a
> recent PMU firmware loaded. Instruct U-Boot to add pmufw.bin to the
> boot.bin file together with U-Boot SPL, and the boot ROM will load
> both.
> 
> For this to work properly, a patch to U-Boot is needed. However this
> patch must be applied by each defconfig that wishes to use
> BR2_TARGET_UBOOT_ZYNQMP_PMUFW. If it were in boot/uboot/ to be applied
> unconditionally, it would break the build for configs using a U-Boot
> version higher than 2018.7-rc1 where the patch is already applied.
> 
> Signed-off-by: Luca Ceresoli <luca@lucaceresoli.net>
> Cc: Joel Carlson <joelsoncarl@gmail.com>

I have applied, with some minor changes, see below.


> +config BR2_TARGET_UBOOT_ZYNQMP_PMUFW
> +	string "PMU firmware location"
> +	depends on BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG
> +	help
> +	  Location of a PMU firmware binary.
> +
> +	  If not empty, instructs the U-Boot build process to generate
> +	  a boot.bin (to be loaded by the ZynqMP boot ROM) containing
> +	  both the U-Boot SPL and the PMU firmware in the
> +	  Xilinx-specific boot format.
> +
> +	  The value can be an absolute or relative path, and will be
> +	  used directly from where it is located, or an URI
> +	  (e.g. http://...), and it will be downloaded and used from
> +	  the download directory.
> +
> +	  If empty, the generated boot.bin will not contain a PMU
> +	  firmware.

I've added a note explaining that this feature requires U-Boot >=
2018.07.

> +ifeq ($(BR2_TARGET_UBOOT_ZYNQMP),y)
> +
> +UBOOT_ZYNQMP_PMUFW = $(call qstrip,$(BR2_TARGET_UBOOT_ZYNQMP_PMUFW))
> +
> +ifneq ($(findstring ://,$(UBOOT_ZYNQMP_PMUFW)),)
> +UBOOT_EXTRA_DOWNLOADS += $(UBOOT_ZYNQMP_PMUFW)
> +BR_NO_CHECK_HASH_FOR += $(notdir $(UBOOT_ZYNQMP_PMUFW))
> +define UBOOT_ZYNQMP_KCONFIG_PMUFW
> +	$(call KCONFIG_SET_OPT,CONFIG_PMUFW_INIT_FILE,"$(UBOOT_DL_DIR)/$(notdir $(UBOOT_ZYNQMP_PMUFW))", \
> +	       $(@D)/.config)
> +endef
> +else ifneq ($(UBOOT_ZYNQMP_PMUFW),)
> +define UBOOT_ZYNQMP_KCONFIG_PMUFW
> +	$(call KCONFIG_SET_OPT,CONFIG_PMUFW_INIT_FILE,"$(shell readlink -f $(UBOOT_ZYNQMP_PMUFW))", \
> +	       $(@D)/.config)
> +endef
> +endif

I've refactored this to avoid the duplication of
UBOOT_ZYNQMP_KCONFIG_PMUFW. Instead, I've defined
UBOOT_ZYNQMP_PMUFW_PATH which contains the path to the PMU firmware,
and used it in a single definition of UBOOT_ZYNQMP_KCONFIG_PMUFW.

Thanks!

Thomas
-- 
Thomas Petazzoni, CTO, Bootlin (formerly Free Electrons)
Embedded Linux and Kernel engineering
https://bootlin.com

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Buildroot] [PATCH v5 2/3] configs/zynqmp_zcu106_defconfig: add Xilinx ZCU106 board (ZynqMP SoC)
  2018-07-25 14:35 ` [Buildroot] [PATCH v5 2/3] configs/zynqmp_zcu106_defconfig: add Xilinx ZCU106 board (ZynqMP SoC) Luca Ceresoli
  2018-07-26 20:14   ` Joel Carlson
@ 2018-07-28 17:38   ` Thomas Petazzoni
  1 sibling, 0 replies; 12+ messages in thread
From: Thomas Petazzoni @ 2018-07-28 17:38 UTC (permalink / raw)
  To: buildroot

Hello,

On Wed, 25 Jul 2018 16:35:37 +0200, Luca Ceresoli wrote:
> This adds support the Xilinx ZCU106 development board.
> 
> [Tested on the ES2 (Engineering Sample 2) version of the board]
> Signed-off-by: Luca Ceresoli <luca@lucaceresoli.net>
> Cc: Joel Carlson <joelsoncarl@gmail.com>

I've applied. Just two minor nits below.

>  DEVELOPERS                                    |   2 +
>  board/zynqmp/genimage.cfg                     |  28 +++++
>  ...64-zynqmp-zcu106-fix-SPL-MMC-booting.patch |  52 ++++++++
>  ...2-arm64-zynqmp-Enable-booting-to-ATF.patch | 114 ++++++++++++++++++
>  board/zynqmp/post-image.sh                    |  13 ++
>  board/zynqmp/readme.txt                       |  51 ++++++++
>  configs/zynqmp_zcu106_defconfig               |  34 ++++++

I've regenerated the .gitlab-ci.yml file.


> +Subject: [PATCH 1/2] arm64: zynqmp: zcu106: fix SPL MMC booting

The [PATCH 1/2] should have been just [PATCH].

Thanks!

Thomas
-- 
Thomas Petazzoni, CTO, Bootlin (formerly Free Electrons)
Embedded Linux and Kernel engineering
https://bootlin.com

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Buildroot] [PATCH v5 3/3] uboot: zynqmp: allow to use custom psu_init files
  2018-07-25 14:35 ` [Buildroot] [PATCH v5 3/3] uboot: zynqmp: allow to use custom psu_init files Luca Ceresoli
  2018-07-26 20:12   ` Joel Carlson
@ 2018-07-28 17:39   ` Thomas Petazzoni
  2018-08-21  9:09     ` Luca Ceresoli
  1 sibling, 1 reply; 12+ messages in thread
From: Thomas Petazzoni @ 2018-07-28 17:39 UTC (permalink / raw)
  To: buildroot

Hello,

On Wed, 25 Jul 2018 16:35:38 +0200, Luca Ceresoli wrote:

> +config BR2_TARGET_UBOOT_ZYNQMP_PSU_INIT_FILE
> +	string "Custom psu_init_gpl file"
> +	depends on BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG
> +	help
> +	  On ZynqMP the booloader is responsible for some basic
> +	  initializations, such as enabling peripherals and
> +	  configuring pinmuxes. The psu_init_gpl.c file (and,
> +	  optionally, psu_init_gpl.h) contains the code for such
> +	  initializations.
> +
> +	  Although U-Boot contains psu_init_gpl.c files for some
> +	  boards, each of them describes only one specific
> +	  configuration. Users of a different board, or needing a
> +	  different configuration, can generate custom files using the
> +	  Xilinx development tools.
> +
> +	  Set this variable to the path to your psu_init_gpl.c file
> +	  (e.g. "board/myboard/psu_init_gpl.c"). psu_init_gpl.h, if
> +	  needed, should be in the same directory. U-Boot will build
> +	  and link the user-provided file instead of the built-in one.
> +
> +	  Leave empty to use the files provided by U-Boot.

I've also added a comment here that explains which U-Boot upstream
commit is necessary for this feature to work.

> +UBOOT_ZYNQMP_PSU_INIT = $(call qstrip,$(BR2_TARGET_UBOOT_ZYNQMP_PSU_INIT_FILE))
> +
> +ifneq ($(UBOOT_ZYNQMP_PSU_INIT),)
> +define UBOOT_ZYNQMP_KCONFIG_PSU_INIT
> +	$(call KCONFIG_SET_OPT,CONFIG_XILINX_PS_INIT_FILE,"$(shell readlink -f $(UBOOT_ZYNQMP_PSU_INIT))", \
> +           $(@D)/.config)
> +endef
> +endif

To be "consistent" with what I did for the PMU firmware, I introduced
an intermediate UBOOT_ZYNQMP_PSU_INIT_PATH variable.

Applied with those changes. Please don't hesitate to verify the
resulting commits to make sure I didn't screw up anything.

Thanks for this work on ZynqMP!

Thomas
-- 
Thomas Petazzoni, CTO, Bootlin (formerly Free Electrons)
Embedded Linux and Kernel engineering
https://bootlin.com

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Buildroot] [PATCH v5 1/3] uboot: zynqmp: generate SPL image with PMUFW binary
  2018-07-28 17:37   ` Thomas Petazzoni
@ 2018-07-28 22:36     ` Luca Ceresoli
  0 siblings, 0 replies; 12+ messages in thread
From: Luca Ceresoli @ 2018-07-28 22:36 UTC (permalink / raw)
  To: buildroot

Hi Thomas,

On 28/07/2018 19:37, Thomas Petazzoni wrote:
> Hello,
> 
> On Wed, 25 Jul 2018 16:35:36 +0200, Luca Ceresoli wrote:
>> In order to boot on the Xilinx ZynqMP SoCs, U-Boot SPL requires a
>> recent PMU firmware loaded. Instruct U-Boot to add pmufw.bin to the
>> boot.bin file together with U-Boot SPL, and the boot ROM will load
>> both.
>>
>> For this to work properly, a patch to U-Boot is needed. However this
>> patch must be applied by each defconfig that wishes to use
>> BR2_TARGET_UBOOT_ZYNQMP_PMUFW. If it were in boot/uboot/ to be applied
>> unconditionally, it would break the build for configs using a U-Boot
>> version higher than 2018.7-rc1 where the patch is already applied.
>>
>> Signed-off-by: Luca Ceresoli <luca@lucaceresoli.net>
>> Cc: Joel Carlson <joelsoncarl@gmail.com>
> 
> I have applied, with some minor changes, see below.
> 
> 
>> +config BR2_TARGET_UBOOT_ZYNQMP_PMUFW
>> +	string "PMU firmware location"
>> +	depends on BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG
>> +	help
>> +	  Location of a PMU firmware binary.
>> +
>> +	  If not empty, instructs the U-Boot build process to generate
>> +	  a boot.bin (to be loaded by the ZynqMP boot ROM) containing
>> +	  both the U-Boot SPL and the PMU firmware in the
>> +	  Xilinx-specific boot format.
>> +
>> +	  The value can be an absolute or relative path, and will be
>> +	  used directly from where it is located, or an URI
>> +	  (e.g. http://...), and it will be downloaded and used from
>> +	  the download directory.
>> +
>> +	  If empty, the generated boot.bin will not contain a PMU
>> +	  firmware.
> 
> I've added a note explaining that this feature requires U-Boot >=
> 2018.07.
> 
>> +ifeq ($(BR2_TARGET_UBOOT_ZYNQMP),y)
>> +
>> +UBOOT_ZYNQMP_PMUFW = $(call qstrip,$(BR2_TARGET_UBOOT_ZYNQMP_PMUFW))
>> +
>> +ifneq ($(findstring ://,$(UBOOT_ZYNQMP_PMUFW)),)
>> +UBOOT_EXTRA_DOWNLOADS += $(UBOOT_ZYNQMP_PMUFW)
>> +BR_NO_CHECK_HASH_FOR += $(notdir $(UBOOT_ZYNQMP_PMUFW))
>> +define UBOOT_ZYNQMP_KCONFIG_PMUFW
>> +	$(call KCONFIG_SET_OPT,CONFIG_PMUFW_INIT_FILE,"$(UBOOT_DL_DIR)/$(notdir $(UBOOT_ZYNQMP_PMUFW))", \
>> +	       $(@D)/.config)
>> +endef
>> +else ifneq ($(UBOOT_ZYNQMP_PMUFW),)
>> +define UBOOT_ZYNQMP_KCONFIG_PMUFW
>> +	$(call KCONFIG_SET_OPT,CONFIG_PMUFW_INIT_FILE,"$(shell readlink -f $(UBOOT_ZYNQMP_PMUFW))", \
>> +	       $(@D)/.config)
>> +endef
>> +endif
> 
> I've refactored this to avoid the duplication of
> UBOOT_ZYNQMP_KCONFIG_PMUFW. Instead, I've defined
> UBOOT_ZYNQMP_PMUFW_PATH which contains the path to the PMU firmware,
> and used it in a single definition of UBOOT_ZYNQMP_KCONFIG_PMUFW.

Good idea.

Thanks for taking care of this.
-- 
Luca

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Buildroot] [PATCH v5 3/3] uboot: zynqmp: allow to use custom psu_init files
  2018-07-28 17:39   ` Thomas Petazzoni
@ 2018-08-21  9:09     ` Luca Ceresoli
  0 siblings, 0 replies; 12+ messages in thread
From: Luca Ceresoli @ 2018-08-21  9:09 UTC (permalink / raw)
  To: buildroot

Hi Thomas,

On 28/07/2018 19:39, Thomas Petazzoni wrote:
> Hello,
> 
> On Wed, 25 Jul 2018 16:35:38 +0200, Luca Ceresoli wrote:
> 
>> +config BR2_TARGET_UBOOT_ZYNQMP_PSU_INIT_FILE
>> +	string "Custom psu_init_gpl file"
>> +	depends on BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG
>> +	help
>> +	  On ZynqMP the booloader is responsible for some basic
>> +	  initializations, such as enabling peripherals and
>> +	  configuring pinmuxes. The psu_init_gpl.c file (and,
>> +	  optionally, psu_init_gpl.h) contains the code for such
>> +	  initializations.
>> +
>> +	  Although U-Boot contains psu_init_gpl.c files for some
>> +	  boards, each of them describes only one specific
>> +	  configuration. Users of a different board, or needing a
>> +	  different configuration, can generate custom files using the
>> +	  Xilinx development tools.
>> +
>> +	  Set this variable to the path to your psu_init_gpl.c file
>> +	  (e.g. "board/myboard/psu_init_gpl.c"). psu_init_gpl.h, if
>> +	  needed, should be in the same directory. U-Boot will build
>> +	  and link the user-provided file instead of the built-in one.
>> +
>> +	  Leave empty to use the files provided by U-Boot.
> 
> I've also added a comment here that explains which U-Boot upstream
> commit is necessary for this feature to work.
> 
>> +UBOOT_ZYNQMP_PSU_INIT = $(call qstrip,$(BR2_TARGET_UBOOT_ZYNQMP_PSU_INIT_FILE))
>> +
>> +ifneq ($(UBOOT_ZYNQMP_PSU_INIT),)
>> +define UBOOT_ZYNQMP_KCONFIG_PSU_INIT
>> +	$(call KCONFIG_SET_OPT,CONFIG_XILINX_PS_INIT_FILE,"$(shell readlink -f $(UBOOT_ZYNQMP_PSU_INIT))", \
>> +           $(@D)/.config)
>> +endef
>> +endif
> 
> To be "consistent" with what I did for the PMU firmware, I introduced
> an intermediate UBOOT_ZYNQMP_PSU_INIT_PATH variable.
> 
> Applied with those changes. Please don't hesitate to verify the
> resulting commits to make sure I didn't screw up anything.

Just build- and run-time tested, it works fine.

Thank you for the cleanups!

Bye,
-- 
Luca

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2018-08-21  9:09 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-07-25 14:35 [Buildroot] [PATCH v5 0/3] Add Xilinx ZynqMP and ZCU106 board support Luca Ceresoli
2018-07-25 14:35 ` [Buildroot] [PATCH v5 1/3] uboot: zynqmp: generate SPL image with PMUFW binary Luca Ceresoli
2018-07-26 20:04   ` Joel Carlson
2018-07-28 17:37   ` Thomas Petazzoni
2018-07-28 22:36     ` Luca Ceresoli
2018-07-25 14:35 ` [Buildroot] [PATCH v5 2/3] configs/zynqmp_zcu106_defconfig: add Xilinx ZCU106 board (ZynqMP SoC) Luca Ceresoli
2018-07-26 20:14   ` Joel Carlson
2018-07-28 17:38   ` Thomas Petazzoni
2018-07-25 14:35 ` [Buildroot] [PATCH v5 3/3] uboot: zynqmp: allow to use custom psu_init files Luca Ceresoli
2018-07-26 20:12   ` Joel Carlson
2018-07-28 17:39   ` Thomas Petazzoni
2018-08-21  9:09     ` Luca Ceresoli

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.