All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH v2 0/5] imx: add i.MX8M Nano EVK board support
@ 2020-04-29  9:12 Stephane Viau
  2020-04-29  9:12 ` [Buildroot] [PATCH v2 1/5] package/freescale-imx: Add option for DDR FW need Stephane Viau
                   ` (5 more replies)
  0 siblings, 6 replies; 14+ messages in thread
From: Stephane Viau @ 2020-04-29  9:12 UTC (permalink / raw)
  To: buildroot

This series adds support for the NXP i.MX8M Nano EVK board.

Since the i.MX8M Nano CPU was added for the Nitrogen8MNano board, which has a
type of memory (LPDDR4) different from the NXP reference board (DDR4), the first
half of the series introduce the DDR training selection for the whole i.MX8 M
SoC family.

The second half of the series adds support for i.MX8M Nano EVK Board with kernel/
U-Boot based on 4.19.35_1.1.0, which is the current preferred version for all NXP
reference boards.

Stephane Viau (5):
  package/freescale-imx: Add option for DDR FW need
  package/freescale-imx/firmware-imx: add choice for DDR training
    binaries
  board/freescale/common/imx: use generic ddr_fw.bin name
  board/freescale/common/imx: add support for i.MX8M Nano
  configs/freescale_imx8mnevk: new defconfig

 .gitlab-ci.yml                                     |  1 +
 DEVELOPERS                                         |  4 ++
 .../common/imx/imx8-bootloader-prepare.sh          |  6 +-
 board/freescale/common/imx/post-image.sh           |  2 +
 board/freescale/imx8mnevk/readme.txt               | 74 ++++++++++++++++++++++
 configs/freescale_imx8mnevk_defconfig              | 43 +++++++++++++
 package/freescale-imx/Config.in                    |  7 ++
 package/freescale-imx/firmware-imx/Config.in       | 24 +++++++
 package/freescale-imx/firmware-imx/firmware-imx.mk | 29 ++++++++-
 9 files changed, 186 insertions(+), 4 deletions(-)
 create mode 100644 board/freescale/imx8mnevk/readme.txt
 create mode 100644 configs/freescale_imx8mnevk_defconfig

-- 
2.7.4

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

* [Buildroot] [PATCH v2 1/5] package/freescale-imx: Add option for DDR FW need
  2020-04-29  9:12 [Buildroot] [PATCH v2 0/5] imx: add i.MX8M Nano EVK board support Stephane Viau
@ 2020-04-29  9:12 ` Stephane Viau
  2020-05-20  7:58   ` Gary Bisson
  2020-04-29  9:12 ` [Buildroot] [PATCH v2 2/5] package/freescale-imx/firmware-imx: add choice for DDR training binaries Stephane Viau
                   ` (4 subsequent siblings)
  5 siblings, 1 reply; 14+ messages in thread
From: Stephane Viau @ 2020-04-29  9:12 UTC (permalink / raw)
  To: buildroot

Only some i.MX8 need a DDR training firmware (8M, 8MM, 8MN). Some other
i.MX8 (QuadMax, QuadXPlus) rely on system controller for that task.

Suggested-by: Julien Olivain <julien.olivain@oss.nxp.com>
Signed-off-by: Stephane Viau <stephane.viau@oss.nxp.com>
---
v2:
  - introduce BR2_PACKAGE_FREESCALE_IMX_NEED_DDR_FW to extend the DDR
    firmware selection to the whole i.MX 8M family (suggested by Gary)

Signed-off-by: Stephane Viau <stephane.viau@oss.nxp.com>
---
 package/freescale-imx/Config.in | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/package/freescale-imx/Config.in b/package/freescale-imx/Config.in
index b0c7de8..6b10d2c 100644
--- a/package/freescale-imx/Config.in
+++ b/package/freescale-imx/Config.in
@@ -96,6 +96,13 @@ config BR2_PACKAGE_FREESCALE_IMX_HAS_VIV_GPU
 		BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MN || \
 		BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8X
 
+config BR2_PACKAGE_FREESCALE_IMX_NEED_DDR_FW
+	bool
+	default y if \
+		BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8M || \
+		BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MM || \
+		BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MN
+
 source "package/freescale-imx/imx-alsa-plugins/Config.in"
 source "package/freescale-imx/imx-codec/Config.in"
 source "package/freescale-imx/imx-kobs/Config.in"
-- 
2.7.4

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

* [Buildroot] [PATCH v2 2/5] package/freescale-imx/firmware-imx: add choice for DDR training binaries
  2020-04-29  9:12 [Buildroot] [PATCH v2 0/5] imx: add i.MX8M Nano EVK board support Stephane Viau
  2020-04-29  9:12 ` [Buildroot] [PATCH v2 1/5] package/freescale-imx: Add option for DDR FW need Stephane Viau
@ 2020-04-29  9:12 ` Stephane Viau
  2020-05-20  8:15   ` Gary Bisson
  2020-04-29  9:12 ` [Buildroot] [PATCH v2 3/5] board/freescale/common/imx: use generic ddr_fw.bin name Stephane Viau
                   ` (3 subsequent siblings)
  5 siblings, 1 reply; 14+ messages in thread
From: Stephane Viau @ 2020-04-29  9:12 UTC (permalink / raw)
  To: buildroot

Several i.MX8 (e.g.: 8M, 8MM, 8MN) support many DDR types (LPDDR4, DDR4,
etc.), for which the DDR training is performed in the bootloader.
Some boards have LPDDR4 (e.g.: nitrogen8mn) and some others have the DDR4
(e.g.: NXP's reference board EVK). This patch allows the selection of either
of the binaries used to train the DDR.

Signed-off-by: Stephane Viau <stephane.viau@oss.nxp.com>
Reviewed-by: Maeva Manuel <maeva.manuel@oss.nxp.com>
Reviewed-by: Julien Olivain <julien.olivain@oss.nxp.com>
---
v2:
  - use BR2_PACKAGE_FREESCALE_IMX_NEED_DDR_FW to extend the DDR
    firmware selection for 8M, 8MM and 8MN (suggested by Gary)

Signed-off-by: Stephane Viau <stephane.viau@oss.nxp.com>
---
 package/freescale-imx/firmware-imx/Config.in       | 24 ++++++++++++++++++
 package/freescale-imx/firmware-imx/firmware-imx.mk | 29 +++++++++++++++++++++-
 2 files changed, 52 insertions(+), 1 deletion(-)

diff --git a/package/freescale-imx/firmware-imx/Config.in b/package/freescale-imx/firmware-imx/Config.in
index 56d5b80..4962992 100644
--- a/package/freescale-imx/firmware-imx/Config.in
+++ b/package/freescale-imx/firmware-imx/Config.in
@@ -8,3 +8,27 @@ config BR2_PACKAGE_FIRMWARE_IMX
 
 	  This library is provided by Freescale as-is and doesn't have
 	  an upstream.
+
+if BR2_PACKAGE_FREESCALE_IMX_NEED_DDR_FW
+
+choice
+	bool "DDR training binaries"
+	default BR2_PACKAGE_FIRMWARE_DDRFW_LPDDR4
+	help
+	  Choose the DDR training binaries to be used depending on the
+	  kind of memory that is available on the target board (DDR4,
+	  LPDDR4, etc...).
+
+config BR2_PACKAGE_FIRMWARE_DDRFW_LPDDR4
+	bool "lpddr4"
+	help
+	  Use LPDDR4 binaries (i.e.: lpddr4_pmu_train_*.bin)
+
+config BR2_PACKAGE_FIRMWARE_DDRFW_DDR4
+	bool "DDR4"
+	help
+	  Use DDR4 binaries (i.e.: ddr4_*_201810.bin).
+
+endchoice # DDR training FW
+
+endif
diff --git a/package/freescale-imx/firmware-imx/firmware-imx.mk b/package/freescale-imx/firmware-imx/firmware-imx.mk
index cd0dafb..fc2f69a 100644
--- a/package/freescale-imx/firmware-imx/firmware-imx.mk
+++ b/package/freescale-imx/firmware-imx/firmware-imx.mk
@@ -18,7 +18,7 @@ define FIRMWARE_IMX_EXTRACT_CMDS
 	$(call FREESCALE_IMX_EXTRACT_HELPER,$(FIRMWARE_IMX_DL_DIR)/$(FIRMWARE_IMX_SOURCE))
 endef
 
-ifeq ($(BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8M)$(BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MM)$(BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MN),y)
+ifeq ($(BR2_PACKAGE_FIRMWARE_DDRFW_LPDDR4),y)
 FIRMWARE_IMX_INSTALL_IMAGES = YES
 FIRMWARE_IMX_DDRFW_DIR = $(@D)/firmware/ddr/synopsys
 define FIRMWARE_IMX_PREPARE_LPDDR4_FW
@@ -42,9 +42,36 @@ define FIRMWARE_IMX_INSTALL_IMAGES_CMDS
 	cat $(FIRMWARE_IMX_DDRFW_DIR)/lpddr4_pmu_train_1d_fw.bin \
 		$(FIRMWARE_IMX_DDRFW_DIR)/lpddr4_pmu_train_2d_fw.bin > \
 		$(BINARIES_DIR)/lpddr4_pmu_train_fw.bin
+	ln -sf $(BINARIES_DIR)/lpddr4_pmu_train_fw.bin $(BINARIES_DIR)/ddr_fw.bin
 	cp $(@D)/firmware/hdmi/cadence/signed_hdmi_imx8m.bin \
 		$(BINARIES_DIR)/signed_hdmi_imx8m.bin
 endef
+else ifeq ($(BR2_PACKAGE_FIRMWARE_DDRFW_DDR4),y)
+FIRMWARE_IMX_INSTALL_IMAGES = YES
+FIRMWARE_IMX_DDRFW_DIR = $(@D)/firmware/ddr/synopsys
+define FIRMWARE_IMX_PREPARE_DDR4_FW
+	$(TARGET_OBJCOPY) -I binary -O binary --pad-to 0x8000 --gap-fill=0x0 \
+		$(FIRMWARE_IMX_DDRFW_DIR)/ddr4_imem_$(1)_201810.bin \
+		$(FIRMWARE_IMX_DDRFW_DIR)/ddr4_imem_$(1)_201810_pad.bin
+	$(TARGET_OBJCOPY) -I binary -O binary --pad-to 0x4000 --gap-fill=0x0 \
+		$(FIRMWARE_IMX_DDRFW_DIR)/ddr4_dmem_$(1)_201810.bin \
+		$(FIRMWARE_IMX_DDRFW_DIR)/ddr4_dmem_$(1)_201810_pad.bin
+	cat $(FIRMWARE_IMX_DDRFW_DIR)/ddr4_imem_$(1)_201810_pad.bin \
+		$(FIRMWARE_IMX_DDRFW_DIR)/ddr4_dmem_$(1)_201810_pad.bin > \
+		$(FIRMWARE_IMX_DDRFW_DIR)/ddr4_$(1)_201810_fw.bin
+endef
+
+define FIRMWARE_IMX_INSTALL_IMAGES_CMDS
+	# Create padded versions of ddr4_* and generate ddr4_fw.bin.
+	# ddr4_fw.bin is needed when generating imx8-boot-sd.bin
+	# which is done in post-image script.
+	$(call FIRMWARE_IMX_PREPARE_DDR4_FW,1d)
+	$(call FIRMWARE_IMX_PREPARE_DDR4_FW,2d)
+	cat $(FIRMWARE_IMX_DDRFW_DIR)/ddr4_1d_201810_fw.bin \
+		$(FIRMWARE_IMX_DDRFW_DIR)/ddr4_2d_201810_fw.bin > \
+		$(BINARIES_DIR)/ddr4_201810_fw.bin
+	ln -sf $(BINARIES_DIR)/ddr4_201810_fw.bin $(BINARIES_DIR)/ddr_fw.bin
+endef
 else ifeq ($(BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8X),y)
 define FIRMWARE_IMX_INSTALL_TARGET_CMDS
 	$(INSTALL) -D -m 0644 $(@D)/firmware/vpu/vpu_fw_imx8_dec.bin \
-- 
2.7.4

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

* [Buildroot] [PATCH v2 3/5] board/freescale/common/imx: use generic ddr_fw.bin name
  2020-04-29  9:12 [Buildroot] [PATCH v2 0/5] imx: add i.MX8M Nano EVK board support Stephane Viau
  2020-04-29  9:12 ` [Buildroot] [PATCH v2 1/5] package/freescale-imx: Add option for DDR FW need Stephane Viau
  2020-04-29  9:12 ` [Buildroot] [PATCH v2 2/5] package/freescale-imx/firmware-imx: add choice for DDR training binaries Stephane Viau
@ 2020-04-29  9:12 ` Stephane Viau
  2020-04-29  9:12 ` [Buildroot] [PATCH v2 4/5] board/freescale/common/imx: add support for i.MX8M Nano Stephane Viau
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 14+ messages in thread
From: Stephane Viau @ 2020-04-29  9:12 UTC (permalink / raw)
  To: buildroot

For some SoCs (i.e.: i.MX8M Nano for now), the DDR training firmware
in the boot image depends on the type of memory installed on a board
(LPDDR4, DDR4, etc...). The previous patch makes this firmware name
agnostic of the DDR type and uses ddr_fw.bin as a generic name. This
patch makes imx8-bootloader-prepare.sh use this generic name,
independently of the kind board DDR type.

Signed-off-by: Stephane Viau <stephane.viau@oss.nxp.com>
Reviewed-by: Maeva Manuel <maeva.manuel@oss.nxp.com>
Reviewed-by: Julien Olivain <julien.olivain@oss.nxp.com>
---
v2:
  - generic ddr_fw.bin name is now used also for 8M and 8MM, along with
    8MN (suggested by Gary)

Signed-off-by: Stephane Viau <stephane.viau@oss.nxp.com>
---
 board/freescale/common/imx/imx8-bootloader-prepare.sh | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/board/freescale/common/imx/imx8-bootloader-prepare.sh b/board/freescale/common/imx/imx8-bootloader-prepare.sh
index abf2e43..cb7c37b 100755
--- a/board/freescale/common/imx/imx8-bootloader-prepare.sh
+++ b/board/freescale/common/imx/imx8-bootloader-prepare.sh
@@ -9,21 +9,21 @@ main ()
 	fi
 
 	if grep -Eq "^BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8M=y$" ${BR2_CONFIG}; then
-		cat ${BINARIES_DIR}/u-boot-spl.bin ${BINARIES_DIR}/lpddr4_pmu_train_fw.bin > ${BINARIES_DIR}/u-boot-spl-ddr.bin
+		cat ${BINARIES_DIR}/u-boot-spl.bin ${BINARIES_DIR}/ddr_fw.bin > ${BINARIES_DIR}/u-boot-spl-ddr.bin
 		BL31=${BINARIES_DIR}/bl31.bin BL33=${BINARIES_DIR}/u-boot-nodtb.bin ATF_LOAD_ADDR=0x00910000 ${HOST_DIR}/bin/mkimage_fit_atf.sh ${UBOOT_DTB} > ${BINARIES_DIR}/u-boot.its
 		${HOST_DIR}/bin/mkimage -E -p 0x3000 -f ${BINARIES_DIR}/u-boot.its ${BINARIES_DIR}/u-boot.itb
 		rm -f ${BINARIES_DIR}/u-boot.its
 
 		${HOST_DIR}/bin/mkimage_imx8 -fit -signed_hdmi ${BINARIES_DIR}/signed_hdmi_imx8m.bin -loader ${BINARIES_DIR}/u-boot-spl-ddr.bin 0x7E1000 -second_loader ${BINARIES_DIR}/u-boot.itb 0x40200000 0x60000 -out ${BINARIES_DIR}/imx8-boot-sd.bin
 	elif grep -Eq "^BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MM=y$" ${BR2_CONFIG}; then
-		cat ${BINARIES_DIR}/u-boot-spl.bin ${BINARIES_DIR}/lpddr4_pmu_train_fw.bin > ${BINARIES_DIR}/u-boot-spl-ddr.bin
+		cat ${BINARIES_DIR}/u-boot-spl.bin ${BINARIES_DIR}/ddr_fw.bin > ${BINARIES_DIR}/u-boot-spl-ddr.bin
 		BL31=${BINARIES_DIR}/bl31.bin BL33=${BINARIES_DIR}/u-boot-nodtb.bin ATF_LOAD_ADDR=0x00920000 ${HOST_DIR}/bin/mkimage_fit_atf.sh ${UBOOT_DTB} > ${BINARIES_DIR}/u-boot.its
 		${HOST_DIR}/bin/mkimage -E -p 0x3000 -f ${BINARIES_DIR}/u-boot.its ${BINARIES_DIR}/u-boot.itb
 		rm -f ${BINARIES_DIR}/u-boot.its
 
 		${HOST_DIR}/bin/mkimage_imx8 -fit -loader ${BINARIES_DIR}/u-boot-spl-ddr.bin 0x7E1000 -second_loader ${BINARIES_DIR}/u-boot.itb 0x40200000 0x60000 -out ${BINARIES_DIR}/imx8-boot-sd.bin
 	elif grep -Eq "^BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MN=y$" ${BR2_CONFIG}; then
-		cat ${BINARIES_DIR}/u-boot-spl.bin ${BINARIES_DIR}/lpddr4_pmu_train_fw.bin > ${BINARIES_DIR}/u-boot-spl-ddr.bin
+		cat ${BINARIES_DIR}/u-boot-spl.bin ${BINARIES_DIR}/ddr_fw.bin > ${BINARIES_DIR}/u-boot-spl-ddr.bin
 		BL31=${BINARIES_DIR}/bl31.bin BL33=${BINARIES_DIR}/u-boot-nodtb.bin ATF_LOAD_ADDR=0x00960000 ${HOST_DIR}/bin/mkimage_fit_atf.sh ${UBOOT_DTB} > ${BINARIES_DIR}/u-boot.its
 		${HOST_DIR}/bin/mkimage -E -p 0x3000 -f ${BINARIES_DIR}/u-boot.its ${BINARIES_DIR}/u-boot.itb
 		rm -f ${BINARIES_DIR}/u-boot.its
-- 
2.7.4

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

* [Buildroot] [PATCH v2 4/5] board/freescale/common/imx: add support for i.MX8M Nano
  2020-04-29  9:12 [Buildroot] [PATCH v2 0/5] imx: add i.MX8M Nano EVK board support Stephane Viau
                   ` (2 preceding siblings ...)
  2020-04-29  9:12 ` [Buildroot] [PATCH v2 3/5] board/freescale/common/imx: use generic ddr_fw.bin name Stephane Viau
@ 2020-04-29  9:12 ` Stephane Viau
  2020-04-29  9:12 ` [Buildroot] [PATCH v2 5/5] configs/freescale_imx8mnevk: new defconfig Stephane Viau
  2020-04-29 20:22 ` [Buildroot] [PATCH v2 0/5] imx: add i.MX8M Nano EVK board support Thomas Petazzoni
  5 siblings, 0 replies; 14+ messages in thread
From: Stephane Viau @ 2020-04-29  9:12 UTC (permalink / raw)
  To: buildroot

Signed-off-by: Stephane Viau <stephane.viau@oss.nxp.com>
Reviewed-by: Maeva Manuel <maeva.manuel@oss.nxp.com>
Reviewed-by: Julien Olivain <julien.olivain@oss.nxp.com>
Reviewed-by: Gary Bisson <gary.bisson@boundarydevices.com>
---
 board/freescale/common/imx/post-image.sh | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/board/freescale/common/imx/post-image.sh b/board/freescale/common/imx/post-image.sh
index 138ea7b..06ccaac 100755
--- a/board/freescale/common/imx/post-image.sh
+++ b/board/freescale/common/imx/post-image.sh
@@ -38,6 +38,8 @@ genimage_type()
 		echo "genimage.cfg.template_imx8"
 	elif grep -Eq "^BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MM=y$" ${BR2_CONFIG}; then
 		echo "genimage.cfg.template_imx8"
+	elif grep -Eq "^BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MN=y$" ${BR2_CONFIG}; then
+		echo "genimage.cfg.template_imx8"
 	elif grep -Eq "^BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8X=y$" ${BR2_CONFIG}; then
 		echo "genimage.cfg.template_imx8"
 	elif grep -Eq "^BR2_LINUX_KERNEL_INSTALL_TARGET=y$" ${BR2_CONFIG}; then
-- 
2.7.4

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

* [Buildroot] [PATCH v2 5/5] configs/freescale_imx8mnevk: new defconfig
  2020-04-29  9:12 [Buildroot] [PATCH v2 0/5] imx: add i.MX8M Nano EVK board support Stephane Viau
                   ` (3 preceding siblings ...)
  2020-04-29  9:12 ` [Buildroot] [PATCH v2 4/5] board/freescale/common/imx: add support for i.MX8M Nano Stephane Viau
@ 2020-04-29  9:12 ` Stephane Viau
  2020-04-29 20:22 ` [Buildroot] [PATCH v2 0/5] imx: add i.MX8M Nano EVK board support Thomas Petazzoni
  5 siblings, 0 replies; 14+ messages in thread
From: Stephane Viau @ 2020-04-29  9:12 UTC (permalink / raw)
  To: buildroot

This patch adds support for the i.MX8M Nano EVK Board [1].

The final boot image is created from uboot and firmware binaries in post
image script board/freescale/common/imx/imx8-bootloader-prepare.sh

Note that this config is based on 4.19.35_1.1.0 ; hence, the kernel
configuration needs host-openssl to build.

[1] https://www.nxp.com/design/development-boards/i-mx-evaluation-and-development-boards/evaluation-kit-for-the-i-mx-8m-nano-applications-processor:8MNANOD4-EVK

Signed-off-by: Stephane Viau <stephane.viau@oss.nxp.com>
Reviewed-by: Maeva Manuel <maeva.manuel@oss.nxp.com>
Reviewed-by: Julien Olivain <julien.olivain@oss.nxp.com>
---
v2:
  - reword commit title about uboot.imx generation: sentence removed (Gary)
  - replace link which was confusing because mentioning LPD4 when DDR4
    EVK is actually available (suggested by Gary)

Signed-off-by: Stephane Viau <stephane.viau@oss.nxp.com>
---
 .gitlab-ci.yml                        |  1 +
 DEVELOPERS                            |  4 ++
 board/freescale/imx8mnevk/readme.txt  | 74 +++++++++++++++++++++++++++++++++++
 configs/freescale_imx8mnevk_defconfig | 43 ++++++++++++++++++++
 4 files changed, 122 insertions(+)
 create mode 100644 board/freescale/imx8mnevk/readme.txt
 create mode 100644 configs/freescale_imx8mnevk_defconfig

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index fa8e077..0bf8a73 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -190,6 +190,7 @@ freescale_imx8mmevk_defconfig: { extends: .defconfig }
 freescale_imx8mqevk_defconfig: { extends: .defconfig }
 freescale_imx8qmmek_defconfig: { extends: .defconfig }
 freescale_imx8qxpmek_defconfig: { extends: .defconfig }
+freescale_imx8mnevk_defconfig: { extends: .defconfig }
 freescale_p1025twr_defconfig: { extends: .defconfig }
 freescale_t1040d4rdb_defconfig: { extends: .defconfig }
 freescale_t2080_qds_rdb_defconfig: { extends: .defconfig }
diff --git a/DEVELOPERS b/DEVELOPERS
index cc72b28..6fb2d84 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -2402,6 +2402,10 @@ F:	package/mtdev2tuio/
 N:	Stephan Hoffmann <stephan.hoffmann@ext.grandcentrix.net>
 F:	package/libhttpserver/
 
+N:	Stephane Viau <stephane.viau@oss.nxp.com>
+F:	board/freescale/imx8mnevk/
+F:	configs/freescale_imx8mnevk_defconfig
+
 N:	Steve Calfee <stevecalfee@gmail.com>
 F:	package/python-pymysql/
 F:	package/python-pyratemp/
diff --git a/board/freescale/imx8mnevk/readme.txt b/board/freescale/imx8mnevk/readme.txt
new file mode 100644
index 0000000..379d851
--- /dev/null
+++ b/board/freescale/imx8mnevk/readme.txt
@@ -0,0 +1,74 @@
+***************************
+Freescale i.MX8MN EVK board
+***************************
+
+This file documents the Buildroot support for the i.MX8M Nano EVK board.
+
+Build
+=====
+
+First, configure Buildroot for the i.MX8MN EVK board:
+
+  make freescale_imx8mnevk_defconfig
+
+Build all components:
+
+  make
+
+You will find in output/images/ the following files:
+  - bl31.bin
+  - boot.vfat
+  - ddr4_201810_fw.bin
+  - ddr_fw.bin
+  - fsl-imx8mn-ddr4-evk.dtb
+  - Image
+  - imx8-boot-sd.bin
+  - rootfs.ext2
+  - rootfs.ext4
+  - rootfs.tar
+  - sdcard.img
+  - signed_hdmi_imx8m.bin
+  - u-boot.bin
+  - u-boot.imx
+  - u-boot.itb
+  - u-boot-nodtb.bin
+  - u-boot-spl.bin
+  - u-boot-spl-ddr.bin
+
+Create a bootable SD card
+=========================
+
+To determine the device associated to the SD card have a look in the
+/proc/partitions file:
+
+  cat /proc/partitions
+
+Buildroot prepares a bootable "sdcard.img" image in the output/images/
+directory, ready to be dumped on a SD card. Launch the following
+command as root:
+
+  dd if=output/images/sdcard.img of=/dev/<your-sd-device>
+
+*** WARNING! This will destroy all the card content. Use with care! ***
+
+For details about the medium image layout, see the definition in
+board/freescale/common/imx/genimage.cfg.template_imx8.
+
+Boot the i.MX8MN EVK board
+==========================
+
+To boot your newly created system (refer to the i.MX8MNano EVK Quick Start Guide
+[1] for guidance):
+- insert the SD card in the SD slot of the board;
+- Configure the switches as follows (X = "don't care"):
+SW1101:	1100XXXXXX [D1-D10]
+SW1102:	XXXXXXXXXX [D1-D10]
+- put a micro USB cable into the Debug USB Port and connect using a terminal
+  emulator at 115200 bps, 8n1;
+- power on the board.
+
+Enjoy!
+
+References
+==========
+[1] https://www.nxp.com/design/development-boards/i-mx-evaluation-and-development-boards/evaluation-kit-for-the-i-mx-8m-nano-applications-processor:8MNANOD4-EVK
diff --git a/configs/freescale_imx8mnevk_defconfig b/configs/freescale_imx8mnevk_defconfig
new file mode 100644
index 0000000..a859d1c
--- /dev/null
+++ b/configs/freescale_imx8mnevk_defconfig
@@ -0,0 +1,43 @@
+BR2_aarch64=y
+BR2_ARM_FPU_VFPV3=y
+BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y
+BR2_TARGET_GENERIC_GETTY_PORT="ttymxc1"
+BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/imx8-bootloader-prepare.sh board/freescale/common/imx/post-image.sh"
+BR2_ROOTFS_POST_SCRIPT_ARGS="${UBOOT_DIR}/arch/arm/dts/fsl-imx8mn-ddr4-evk.dtb"
+BR2_LINUX_KERNEL=y
+BR2_LINUX_KERNEL_CUSTOM_GIT=y
+BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://source.codeaurora.org/external/imx/linux-imx"
+BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="rel_imx_4.19.35_1.1.0"
+BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y
+BR2_LINUX_KERNEL_DTS_SUPPORT=y
+BR2_LINUX_KERNEL_INTREE_DTS_NAME="freescale/fsl-imx8mn-ddr4-evk"
+BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
+BR2_PACKAGE_FREESCALE_IMX=y
+BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MN=y
+BR2_PACKAGE_FIRMWARE_IMX=y
+BR2_PACKAGE_FIRMWARE_DDRFW_DDR4=y
+BR2_TARGET_ROOTFS_EXT2=y
+BR2_TARGET_ROOTFS_EXT2_4=y
+BR2_TARGET_ROOTFS_EXT2_SIZE="120M"
+BR2_TARGET_ARM_TRUSTED_FIRMWARE=y
+BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT=y
+BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL="https://source.codeaurora.org/external/imx/imx-atf"
+BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_VERSION="rel_imx_4.19.35_1.1.0"
+BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="imx8mn"
+BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y
+BR2_TARGET_UBOOT=y
+BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y
+BR2_TARGET_UBOOT_CUSTOM_GIT=y
+BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://source.codeaurora.org/external/imx/uboot-imx"
+BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="rel_imx_4.19.35_1.1.0"
+BR2_TARGET_UBOOT_BOARD_DEFCONFIG="imx8mn_ddr4_evk"
+BR2_TARGET_UBOOT_NEEDS_DTC=y
+BR2_TARGET_UBOOT_FORMAT_CUSTOM=y
+BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-nodtb.bin"
+BR2_TARGET_UBOOT_SPL=y
+BR2_PACKAGE_HOST_DOSFSTOOLS=y
+BR2_PACKAGE_HOST_GENIMAGE=y
+BR2_PACKAGE_HOST_IMX_MKIMAGE=y
+BR2_PACKAGE_HOST_MTOOLS=y
+BR2_PACKAGE_HOST_UBOOT_TOOLS=y
+BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT=y
-- 
2.7.4

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

* [Buildroot] [PATCH v2 0/5] imx: add i.MX8M Nano EVK board support
  2020-04-29  9:12 [Buildroot] [PATCH v2 0/5] imx: add i.MX8M Nano EVK board support Stephane Viau
                   ` (4 preceding siblings ...)
  2020-04-29  9:12 ` [Buildroot] [PATCH v2 5/5] configs/freescale_imx8mnevk: new defconfig Stephane Viau
@ 2020-04-29 20:22 ` Thomas Petazzoni
  2020-04-29 20:36   ` Stephane Viau
  5 siblings, 1 reply; 14+ messages in thread
From: Thomas Petazzoni @ 2020-04-29 20:22 UTC (permalink / raw)
  To: buildroot

Hello,

On Wed, 29 Apr 2020 11:12:20 +0200
Stephane Viau <stephane.viau@oss.nxp.com> wrote:

> This series adds support for the NXP i.MX8M Nano EVK board.
> 
> Since the i.MX8M Nano CPU was added for the Nitrogen8MNano board, which has a
> type of memory (LPDDR4) different from the NXP reference board (DDR4), the first
> half of the series introduce the DDR training selection for the whole i.MX8 M
> SoC family.
> 
> The second half of the series adds support for i.MX8M Nano EVK Board with kernel/
> U-Boot based on 4.19.35_1.1.0, which is the current preferred version for all NXP
> reference boards.

Thanks for this new iteration. It was in our patchwork patch tracking
system, and it just disappeared. Has anyone removed these patches? You
Stephane? Someone else?

Thanks,

Thomas
-- 
Thomas Petazzoni, CTO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com

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

* [Buildroot] [PATCH v2 0/5] imx: add i.MX8M Nano EVK board support
  2020-04-29 20:22 ` [Buildroot] [PATCH v2 0/5] imx: add i.MX8M Nano EVK board support Thomas Petazzoni
@ 2020-04-29 20:36   ` Stephane Viau
  2020-04-29 20:48     ` Thomas Petazzoni
  0 siblings, 1 reply; 14+ messages in thread
From: Stephane Viau @ 2020-04-29 20:36 UTC (permalink / raw)
  To: buildroot


>
>Hello,
>
>On Wed, 29 Apr 2020 11:12:20 +0200
>Stephane Viau <stephane.viau@oss.nxp.com> wrote:
>
>> This series adds support for the NXP i.MX8M Nano EVK board.
>>
>> Since the i.MX8M Nano CPU was added for the Nitrogen8MNano board, which has a
>> type of memory (LPDDR4) different from the NXP reference board (DDR4), the first
>> half of the series introduce the DDR training selection for the whole i.MX8 M
>> SoC family.
>>
>> The second half of the series adds support for i.MX8M Nano EVK Board with kernel/
>> U-Boot based on 4.19.35_1.1.0, which is the current preferred version for all NXP
>> reference boards.
>
>Thanks for this new iteration. It was in our patchwork patch tracking
>system, and it just disappeared. Has anyone removed these patches? You
>Stephane? Someone else?

Hi Thomas, 

Yeah, sorry about that. It should be back now ; can you please check?

Regards, 
Stephane.

>
>Thanks,
>
>Thomas
>--
>Thomas Petazzoni, CTO, Bootlin
>Embedded Linux and Kernel engineering
>https://bootlin.com
>

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

* [Buildroot] [PATCH v2 0/5] imx: add i.MX8M Nano EVK board support
  2020-04-29 20:36   ` Stephane Viau
@ 2020-04-29 20:48     ` Thomas Petazzoni
  0 siblings, 0 replies; 14+ messages in thread
From: Thomas Petazzoni @ 2020-04-29 20:48 UTC (permalink / raw)
  To: buildroot

On Wed, 29 Apr 2020 20:36:31 +0000
"Stephane Viau (OSS)" <stephane.viau@oss.nxp.com> wrote:

> >Thanks for this new iteration. It was in our patchwork patch tracking
> >system, and it just disappeared. Has anyone removed these patches? You
> >Stephane? Someone else?  
> 
> Yeah, sorry about that. It should be back now ; can you please check?

Confirmed, thanks!

Thomas
-- 
Thomas Petazzoni, CTO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com

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

* [Buildroot] [PATCH v2 1/5] package/freescale-imx: Add option for DDR FW need
  2020-04-29  9:12 ` [Buildroot] [PATCH v2 1/5] package/freescale-imx: Add option for DDR FW need Stephane Viau
@ 2020-05-20  7:58   ` Gary Bisson
  2020-05-25 16:17     ` Stephane Viau
  0 siblings, 1 reply; 14+ messages in thread
From: Gary Bisson @ 2020-05-20  7:58 UTC (permalink / raw)
  To: buildroot

Hi Stephane,

On Wed, Apr 29, 2020 at 11:12:21AM +0200, Stephane Viau wrote:
> Only some i.MX8 need a DDR training firmware (8M, 8MM, 8MN). Some other
> i.MX8 (QuadMax, QuadXPlus) rely on system controller for that task.
> 
> Suggested-by: Julien Olivain <julien.olivain@oss.nxp.com>
> Signed-off-by: Stephane Viau <stephane.viau@oss.nxp.com>
> ---
> v2:
>   - introduce BR2_PACKAGE_FREESCALE_IMX_NEED_DDR_FW to extend the DDR
>     firmware selection to the whole i.MX 8M family (suggested by Gary)
> 
> Signed-off-by: Stephane Viau <stephane.viau@oss.nxp.com>
> ---
>  package/freescale-imx/Config.in | 7 +++++++
>  1 file changed, 7 insertions(+)
> 
> diff --git a/package/freescale-imx/Config.in b/package/freescale-imx/Config.in
> index b0c7de8..6b10d2c 100644
> --- a/package/freescale-imx/Config.in
> +++ b/package/freescale-imx/Config.in
> @@ -96,6 +96,13 @@ config BR2_PACKAGE_FREESCALE_IMX_HAS_VIV_GPU
>  		BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MN || \
>  		BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8X
>  
> +config BR2_PACKAGE_FREESCALE_IMX_NEED_DDR_FW
> +	bool
> +	default y if \
> +		BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8M || \
> +		BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MM || \
> +		BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MN

I'm not against this approach but if I recall correctly Thomas is not a
fan of those. Clearly it's useful and we'll soon add one more SoC to
that macro (IMX8MP).

As Yann mentioned on IRC:
"Usually, when we introduce such option, it does not 'default y' based
on some other options. Instead, the other options 'select' it."

Let's try to use that approach this time, although I know the rest of
the file is doing it wrong :-/ (my bad)

But I'll answer to next patch as well, I don't think this is necessary
to have that variable as it might be confusing for firmware-imx.

Regards,
Gary

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

* [Buildroot] [PATCH v2 2/5] package/freescale-imx/firmware-imx: add choice for DDR training binaries
  2020-04-29  9:12 ` [Buildroot] [PATCH v2 2/5] package/freescale-imx/firmware-imx: add choice for DDR training binaries Stephane Viau
@ 2020-05-20  8:15   ` Gary Bisson
  2020-05-25 16:17     ` Stephane Viau
  0 siblings, 1 reply; 14+ messages in thread
From: Gary Bisson @ 2020-05-20  8:15 UTC (permalink / raw)
  To: buildroot

Hi Stephane,

On Wed, Apr 29, 2020 at 11:12:22AM +0200, Stephane Viau wrote:
> Several i.MX8 (e.g.: 8M, 8MM, 8MN) support many DDR types (LPDDR4, DDR4,
> etc.), for which the DDR training is performed in the bootloader.
> Some boards have LPDDR4 (e.g.: nitrogen8mn) and some others have the DDR4
> (e.g.: NXP's reference board EVK). This patch allows the selection of either
> of the binaries used to train the DDR.
> 
> Signed-off-by: Stephane Viau <stephane.viau@oss.nxp.com>
> Reviewed-by: Maeva Manuel <maeva.manuel@oss.nxp.com>
> Reviewed-by: Julien Olivain <julien.olivain@oss.nxp.com>
> ---
> v2:
>   - use BR2_PACKAGE_FREESCALE_IMX_NEED_DDR_FW to extend the DDR
>     firmware selection for 8M, 8MM and 8MN (suggested by Gary)
> 
> Signed-off-by: Stephane Viau <stephane.viau@oss.nxp.com>
> ---
>  package/freescale-imx/firmware-imx/Config.in       | 24 ++++++++++++++++++
>  package/freescale-imx/firmware-imx/firmware-imx.mk | 29 +++++++++++++++++++++-
>  2 files changed, 52 insertions(+), 1 deletion(-)
> 
> diff --git a/package/freescale-imx/firmware-imx/Config.in b/package/freescale-imx/firmware-imx/Config.in
> index 56d5b80..4962992 100644
> --- a/package/freescale-imx/firmware-imx/Config.in
> +++ b/package/freescale-imx/firmware-imx/Config.in
> @@ -8,3 +8,27 @@ config BR2_PACKAGE_FIRMWARE_IMX
>  
>  	  This library is provided by Freescale as-is and doesn't have
>  	  an upstream.
> +
> +if BR2_PACKAGE_FREESCALE_IMX_NEED_DDR_FW

Here is the only place where the previous variable is used, not sure it
brings a lot of value.

> +choice
> +	bool "DDR training binaries"
> +	default BR2_PACKAGE_FIRMWARE_DDRFW_LPDDR4
> +	help
> +	  Choose the DDR training binaries to be used depending on the
> +	  kind of memory that is available on the target board (DDR4,
> +	  LPDDR4, etc...).
> +
> +config BR2_PACKAGE_FIRMWARE_DDRFW_LPDDR4
> +	bool "lpddr4"
> +	help
> +	  Use LPDDR4 binaries (i.e.: lpddr4_pmu_train_*.bin)
> +
> +config BR2_PACKAGE_FIRMWARE_DDRFW_DDR4
> +	bool "DDR4"
> +	help
> +	  Use DDR4 binaries (i.e.: ddr4_*_201810.bin).
> +
> +endchoice # DDR training FW
> +
> +endif
> diff --git a/package/freescale-imx/firmware-imx/firmware-imx.mk b/package/freescale-imx/firmware-imx/firmware-imx.mk
> index cd0dafb..fc2f69a 100644
> --- a/package/freescale-imx/firmware-imx/firmware-imx.mk
> +++ b/package/freescale-imx/firmware-imx/firmware-imx.mk
> @@ -18,7 +18,7 @@ define FIRMWARE_IMX_EXTRACT_CMDS
>  	$(call FREESCALE_IMX_EXTRACT_HELPER,$(FIRMWARE_IMX_DL_DIR)/$(FIRMWARE_IMX_SOURCE))
>  endef
>  
> -ifeq ($(BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8M)$(BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MM)$(BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MN),y)
> +ifeq ($(BR2_PACKAGE_FIRMWARE_DDRFW_LPDDR4),y)
>  FIRMWARE_IMX_INSTALL_IMAGES = YES
>  FIRMWARE_IMX_DDRFW_DIR = $(@D)/firmware/ddr/synopsys
>  define FIRMWARE_IMX_PREPARE_LPDDR4_FW
> @@ -42,9 +42,36 @@ define FIRMWARE_IMX_INSTALL_IMAGES_CMDS
>  	cat $(FIRMWARE_IMX_DDRFW_DIR)/lpddr4_pmu_train_1d_fw.bin \
>  		$(FIRMWARE_IMX_DDRFW_DIR)/lpddr4_pmu_train_2d_fw.bin > \
>  		$(BINARIES_DIR)/lpddr4_pmu_train_fw.bin
> +	ln -sf $(BINARIES_DIR)/lpddr4_pmu_train_fw.bin $(BINARIES_DIR)/ddr_fw.bin
>  	cp $(@D)/firmware/hdmi/cadence/signed_hdmi_imx8m.bin \
>  		$(BINARIES_DIR)/signed_hdmi_imx8m.bin

And here is why I'm worried the name of the previous variable might be
misleading. You don't only copy the DDR FW training under that
BR2_PACKAGE_FIRMWARE_DDRFW_LPDDR4 macro, you also copy the HDMI FW.
Note that the DP FW should be added as well.

The way I see it, it'd be best to have a common
FIRMWARE_IMX_INSTALL_IMAGES_CMDS for all i.MX8M platforms (hence not
necessarily using a macro for it).
Then this CMD could have FIRMWARE_IMX_PREPARE_DDR_FW which would be
different depending on the choice made before (DDR4 vs. LPDDR4) and then
also something like FIRMWARE_IMX_PREPARE_HDMI_FW which would only be
populated for IMX8M and empty for the others.

Does it make sense?

>  endef
> +else ifeq ($(BR2_PACKAGE_FIRMWARE_DDRFW_DDR4),y)
> +FIRMWARE_IMX_INSTALL_IMAGES = YES
> +FIRMWARE_IMX_DDRFW_DIR = $(@D)/firmware/ddr/synopsys
> +define FIRMWARE_IMX_PREPARE_DDR4_FW
> +	$(TARGET_OBJCOPY) -I binary -O binary --pad-to 0x8000 --gap-fill=0x0 \
> +		$(FIRMWARE_IMX_DDRFW_DIR)/ddr4_imem_$(1)_201810.bin \
> +		$(FIRMWARE_IMX_DDRFW_DIR)/ddr4_imem_$(1)_201810_pad.bin
> +	$(TARGET_OBJCOPY) -I binary -O binary --pad-to 0x4000 --gap-fill=0x0 \
> +		$(FIRMWARE_IMX_DDRFW_DIR)/ddr4_dmem_$(1)_201810.bin \
> +		$(FIRMWARE_IMX_DDRFW_DIR)/ddr4_dmem_$(1)_201810_pad.bin
> +	cat $(FIRMWARE_IMX_DDRFW_DIR)/ddr4_imem_$(1)_201810_pad.bin \
> +		$(FIRMWARE_IMX_DDRFW_DIR)/ddr4_dmem_$(1)_201810_pad.bin > \
> +		$(FIRMWARE_IMX_DDRFW_DIR)/ddr4_$(1)_201810_fw.bin
> +endef
> +
> +define FIRMWARE_IMX_INSTALL_IMAGES_CMDS
> +	# Create padded versions of ddr4_* and generate ddr4_fw.bin.
> +	# ddr4_fw.bin is needed when generating imx8-boot-sd.bin
> +	# which is done in post-image script.
> +	$(call FIRMWARE_IMX_PREPARE_DDR4_FW,1d)
> +	$(call FIRMWARE_IMX_PREPARE_DDR4_FW,2d)
> +	cat $(FIRMWARE_IMX_DDRFW_DIR)/ddr4_1d_201810_fw.bin \
> +		$(FIRMWARE_IMX_DDRFW_DIR)/ddr4_2d_201810_fw.bin > \
> +		$(BINARIES_DIR)/ddr4_201810_fw.bin
> +	ln -sf $(BINARIES_DIR)/ddr4_201810_fw.bin $(BINARIES_DIR)/ddr_fw.bin
> +endef

The approach above would also fix this case:
- What about i.MX8MQ with DDR4? HDMI FW is missing from this code.

Let me know if you have any questions.

Regards,
Gary

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

* [Buildroot] [PATCH v2 1/5] package/freescale-imx: Add option for DDR FW need
  2020-05-20  7:58   ` Gary Bisson
@ 2020-05-25 16:17     ` Stephane Viau
  0 siblings, 0 replies; 14+ messages in thread
From: Stephane Viau @ 2020-05-25 16:17 UTC (permalink / raw)
  To: buildroot


>Hi Stephane,

Hi Gary, 

>> Only some i.MX8 need a DDR training firmware (8M, 8MM, 8MN). Some other
>> i.MX8 (QuadMax, QuadXPlus) rely on system controller for that task.
>> 
>> Suggested-by: Julien Olivain <julien.olivain@oss.nxp.com>
>> Signed-off-by: Stephane Viau <stephane.viau@oss.nxp.com>
>> ---
>> v2:
>>   - introduce BR2_PACKAGE_FREESCALE_IMX_NEED_DDR_FW to extend the DDR
>>     firmware selection to the whole i.MX 8M family (suggested by Gary)
>> 
>> Signed-off-by: Stephane Viau <stephane.viau@oss.nxp.com>
>> ---
>>  package/freescale-imx/Config.in | 7 +++++++
>>  1 file changed, 7 insertions(+)
>> 
>> diff --git a/package/freescale-imx/Config.in b/package/freescale-imx/Config.in
>> index b0c7de8..6b10d2c 100644
>> --- a/package/freescale-imx/Config.in
>> +++ b/package/freescale-imx/Config.in
>> @@ -96,6 +96,13 @@ config BR2_PACKAGE_FREESCALE_IMX_HAS_VIV_GPU
>>                BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MN || \
>>                BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8X
>>  
>> +config BR2_PACKAGE_FREESCALE_IMX_NEED_DDR_FW
>> +     bool
>> +     default y if \
>> +             BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8M || \
>> +             BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MM || \
>> +             BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MN
>
>I'm not against this approach but if I recall correctly Thomas is not a
>fan of those. Clearly it's useful and we'll soon add one more SoC to
>that macro (IMX8MP).
>
>As Yann mentioned on IRC:
>"Usually, when we introduce such option, it does not 'default y' based
>on some other options. Instead, the other options 'select' it."
>
>Let's try to use that approach this time, although I know the rest of
>the file is doing it wrong :-/ (my bad)
>

Makes sense, actually. I like this better too.

>But I'll answer to next patch as well, I don't think this is necessary
>to have that variable as it might be confusing for firmware-imx.

Please see my comment in the next patch.

BR, 
Stephane.

>
>Regards,
>Gary

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

* [Buildroot] [PATCH v2 2/5] package/freescale-imx/firmware-imx: add choice for DDR training binaries
  2020-05-20  8:15   ` Gary Bisson
@ 2020-05-25 16:17     ` Stephane Viau
  0 siblings, 0 replies; 14+ messages in thread
From: Stephane Viau @ 2020-05-25 16:17 UTC (permalink / raw)
  To: buildroot


>Hi Stephane,

Hi Gary,

>> Several i.MX8 (e.g.: 8M, 8MM, 8MN) support many DDR types (LPDDR4, DDR4,
>> etc.), for which the DDR training is performed in the bootloader.
>> Some boards have LPDDR4 (e.g.: nitrogen8mn) and some others have the DDR4
>> (e.g.: NXP's reference board EVK). This patch allows the selection of either
>> of the binaries used to train the DDR.
>> 
>> Signed-off-by: Stephane Viau <stephane.viau@oss.nxp.com>
>> Reviewed-by: Maeva Manuel <maeva.manuel@oss.nxp.com>
>> Reviewed-by: Julien Olivain <julien.olivain@oss.nxp.com>
>> ---
>> v2:
>>   - use BR2_PACKAGE_FREESCALE_IMX_NEED_DDR_FW to extend the DDR
>>     firmware selection for 8M, 8MM and 8MN (suggested by Gary)
>> 
>> Signed-off-by: Stephane Viau <stephane.viau@oss.nxp.com>
>> ---
>>  package/freescale-imx/firmware-imx/Config.in       | 24 ++++++++++++++++++
>>  package/freescale-imx/firmware-imx/firmware-imx.mk | 29 +++++++++++++++++++++-
>>  2 files changed, 52 insertions(+), 1 deletion(-)
>> 
>> diff --git a/package/freescale-imx/firmware-imx/Config.in b/package/freescale-imx/firmware-imx/Config.in
>> index 56d5b80..4962992 100644
>> --- a/package/freescale-imx/firmware-imx/Config.in
>> +++ b/package/freescale-imx/firmware-imx/Config.in
>> @@ -8,3 +8,27 @@ config BR2_PACKAGE_FIRMWARE_IMX
>>  
>>          This library is provided by Freescale as-is and doesn't have
>>          an upstream.
>> +
>> +if BR2_PACKAGE_FREESCALE_IMX_NEED_DDR_FW
>
>Here is the only place where the previous variable is used, not sure it
>brings a lot of value.

I believe BR2_PACKAGE_FREESCALE_IMX_NEED_DDR_FW is still required here in
order to avoid seeing the below DDR FW options when they are not required
(e.g. i.MX 8 family). We want this choice to pop up only for i.MX 8M SoCs.

>
>> +choice
>> +     bool "DDR training binaries"
>> +     default BR2_PACKAGE_FIRMWARE_DDRFW_LPDDR4
>> +     help
>> +       Choose the DDR training binaries to be used depending on the
>> +       kind of memory that is available on the target board (DDR4,
>> +       LPDDR4, etc...).
>> +
>> +config BR2_PACKAGE_FIRMWARE_DDRFW_LPDDR4
>> +     bool "lpddr4"
>> +     help
>> +       Use LPDDR4 binaries (i.e.: lpddr4_pmu_train_*.bin)
>> +
>> +config BR2_PACKAGE_FIRMWARE_DDRFW_DDR4
>> +     bool "DDR4"
>> +     help
>> +       Use DDR4 binaries (i.e.: ddr4_*_201810.bin).
>> +
>> +endchoice # DDR training FW
>> +
>> +endif
>> diff --git a/package/freescale-imx/firmware-imx/firmware-imx.mk b/package/freescale-imx/firmware-imx/firmware-imx.mk
>> index cd0dafb..fc2f69a 100644
>> --- a/package/freescale-imx/firmware-imx/firmware-imx.mk
>> +++ b/package/freescale-imx/firmware-imx/firmware-imx.mk
>> @@ -18,7 +18,7 @@ define FIRMWARE_IMX_EXTRACT_CMDS
>>        $(call FREESCALE_IMX_EXTRACT_HELPER,$(FIRMWARE_IMX_DL_DIR)/$(FIRMWARE_IMX_SOURCE))
>>  endef
>>  
>> -ifeq ($(BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8M)$(BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MM)$(BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MN),y)
>> +ifeq ($(BR2_PACKAGE_FIRMWARE_DDRFW_LPDDR4),y)
>>  FIRMWARE_IMX_INSTALL_IMAGES = YES
>>  FIRMWARE_IMX_DDRFW_DIR = $(@D)/firmware/ddr/synopsys
>>  define FIRMWARE_IMX_PREPARE_LPDDR4_FW
>> @@ -42,9 +42,36 @@ define FIRMWARE_IMX_INSTALL_IMAGES_CMDS
>>        cat $(FIRMWARE_IMX_DDRFW_DIR)/lpddr4_pmu_train_1d_fw.bin \
>>                $(FIRMWARE_IMX_DDRFW_DIR)/lpddr4_pmu_train_2d_fw.bin > \
>>                $(BINARIES_DIR)/lpddr4_pmu_train_fw.bin
>> +     ln -sf $(BINARIES_DIR)/lpddr4_pmu_train_fw.bin $(BINARIES_DIR)/ddr_fw.bin
>>        cp $(@D)/firmware/hdmi/cadence/signed_hdmi_imx8m.bin \
>>                $(BINARIES_DIR)/signed_hdmi_imx8m.bin
>
>And here is why I'm worried the name of the previous variable might be
>misleading. You don't only copy the DDR FW training under that
>BR2_PACKAGE_FIRMWARE_DDRFW_LPDDR4 macro, you also copy the HDMI FW.
>Note that the DP FW should be added as well.
>
>The way I see it, it'd be best to have a common
>FIRMWARE_IMX_INSTALL_IMAGES_CMDS for all i.MX8M platforms (hence not
>necessarily using a macro for it).
>Then this CMD could have FIRMWARE_IMX_PREPARE_DDR_FW which would be
>different depending on the choice made before (DDR4 vs. LPDDR4) and then
>also something like FIRMWARE_IMX_PREPARE_HDMI_FW which would only be
>populated for IMX8M and empty for the others.
>
>Does it make sense?

Agreed. please check the v3 patch series:
https://patchwork.ozlabs.org/project/buildroot/list/?series=179135

Regards, 
Stephane.

>
>>  endef
>> +else ifeq ($(BR2_PACKAGE_FIRMWARE_DDRFW_DDR4),y)
>> +FIRMWARE_IMX_INSTALL_IMAGES = YES
>> +FIRMWARE_IMX_DDRFW_DIR = $(@D)/firmware/ddr/synopsys
>> +define FIRMWARE_IMX_PREPARE_DDR4_FW
>> +     $(TARGET_OBJCOPY) -I binary -O binary --pad-to 0x8000 --gap-fill=0x0 \
>> +             $(FIRMWARE_IMX_DDRFW_DIR)/ddr4_imem_$(1)_201810.bin \
>> +             $(FIRMWARE_IMX_DDRFW_DIR)/ddr4_imem_$(1)_201810_pad.bin
>> +     $(TARGET_OBJCOPY) -I binary -O binary --pad-to 0x4000 --gap-fill=0x0 \
>> +             $(FIRMWARE_IMX_DDRFW_DIR)/ddr4_dmem_$(1)_201810.bin \
>> +             $(FIRMWARE_IMX_DDRFW_DIR)/ddr4_dmem_$(1)_201810_pad.bin
>> +     cat $(FIRMWARE_IMX_DDRFW_DIR)/ddr4_imem_$(1)_201810_pad.bin \
>> +             $(FIRMWARE_IMX_DDRFW_DIR)/ddr4_dmem_$(1)_201810_pad.bin > \
>> +             $(FIRMWARE_IMX_DDRFW_DIR)/ddr4_$(1)_201810_fw.bin
>> +endef
>> +
>> +define FIRMWARE_IMX_INSTALL_IMAGES_CMDS
>> +     # Create padded versions of ddr4_* and generate ddr4_fw.bin.
>> +     # ddr4_fw.bin is needed when generating imx8-boot-sd.bin
>> +     # which is done in post-image script.
>> +     $(call FIRMWARE_IMX_PREPARE_DDR4_FW,1d)
>> +     $(call FIRMWARE_IMX_PREPARE_DDR4_FW,2d)
>> +     cat $(FIRMWARE_IMX_DDRFW_DIR)/ddr4_1d_201810_fw.bin \
>> +             $(FIRMWARE_IMX_DDRFW_DIR)/ddr4_2d_201810_fw.bin > \
>> +             $(BINARIES_DIR)/ddr4_201810_fw.bin
>> +     ln -sf $(BINARIES_DIR)/ddr4_201810_fw.bin $(BINARIES_DIR)/ddr_fw.bin
>> +endef
>
>The approach above would also fix this case:
>- What about i.MX8MQ with DDR4? HDMI FW is missing from this code.
>
>Let me know if you have any questions.
>
>Regards,
>Gary

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

* [Buildroot] [PATCH v2 3/5] board/freescale/common/imx: use generic ddr_fw.bin name
  2020-04-29  8:31 ` [Buildroot] [PATCH v2 0/5] " Stephane Viau
@ 2020-04-29  8:31   ` Stephane Viau
  0 siblings, 0 replies; 14+ messages in thread
From: Stephane Viau @ 2020-04-29  8:31 UTC (permalink / raw)
  To: buildroot

For some SoCs (i.e.: i.MX8M Nano for now), the DDR training firmware
in the boot image depends on the type of memory installed on a board
(LPDDR4, DDR4, etc...). The previous patch makes this firmware name
agnostic of the DDR type and uses ddr_fw.bin as a generic name. This
patch makes imx8-bootloader-prepare.sh use this generic name,
independently of the kind board DDR type.

Signed-off-by: Stephane Viau <stephane.viau@oss.nxp.com>
Reviewed-by: Maeva Manuel <maeva.manuel@oss.nxp.com>
Reviewed-by: Julien Olivain <julien.olivain@oss.nxp.com>
---
v2:
  - generic ddr_fw.bin name is now used also for 8M and 8MM, along with
    8MN (suggested by Gary)

Signed-off-by: Stephane Viau <stephane.viau@oss.nxp.com>
---
 board/freescale/common/imx/imx8-bootloader-prepare.sh | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/board/freescale/common/imx/imx8-bootloader-prepare.sh b/board/freescale/common/imx/imx8-bootloader-prepare.sh
index abf2e43..cb7c37b 100755
--- a/board/freescale/common/imx/imx8-bootloader-prepare.sh
+++ b/board/freescale/common/imx/imx8-bootloader-prepare.sh
@@ -9,21 +9,21 @@ main ()
 	fi
 
 	if grep -Eq "^BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8M=y$" ${BR2_CONFIG}; then
-		cat ${BINARIES_DIR}/u-boot-spl.bin ${BINARIES_DIR}/lpddr4_pmu_train_fw.bin > ${BINARIES_DIR}/u-boot-spl-ddr.bin
+		cat ${BINARIES_DIR}/u-boot-spl.bin ${BINARIES_DIR}/ddr_fw.bin > ${BINARIES_DIR}/u-boot-spl-ddr.bin
 		BL31=${BINARIES_DIR}/bl31.bin BL33=${BINARIES_DIR}/u-boot-nodtb.bin ATF_LOAD_ADDR=0x00910000 ${HOST_DIR}/bin/mkimage_fit_atf.sh ${UBOOT_DTB} > ${BINARIES_DIR}/u-boot.its
 		${HOST_DIR}/bin/mkimage -E -p 0x3000 -f ${BINARIES_DIR}/u-boot.its ${BINARIES_DIR}/u-boot.itb
 		rm -f ${BINARIES_DIR}/u-boot.its
 
 		${HOST_DIR}/bin/mkimage_imx8 -fit -signed_hdmi ${BINARIES_DIR}/signed_hdmi_imx8m.bin -loader ${BINARIES_DIR}/u-boot-spl-ddr.bin 0x7E1000 -second_loader ${BINARIES_DIR}/u-boot.itb 0x40200000 0x60000 -out ${BINARIES_DIR}/imx8-boot-sd.bin
 	elif grep -Eq "^BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MM=y$" ${BR2_CONFIG}; then
-		cat ${BINARIES_DIR}/u-boot-spl.bin ${BINARIES_DIR}/lpddr4_pmu_train_fw.bin > ${BINARIES_DIR}/u-boot-spl-ddr.bin
+		cat ${BINARIES_DIR}/u-boot-spl.bin ${BINARIES_DIR}/ddr_fw.bin > ${BINARIES_DIR}/u-boot-spl-ddr.bin
 		BL31=${BINARIES_DIR}/bl31.bin BL33=${BINARIES_DIR}/u-boot-nodtb.bin ATF_LOAD_ADDR=0x00920000 ${HOST_DIR}/bin/mkimage_fit_atf.sh ${UBOOT_DTB} > ${BINARIES_DIR}/u-boot.its
 		${HOST_DIR}/bin/mkimage -E -p 0x3000 -f ${BINARIES_DIR}/u-boot.its ${BINARIES_DIR}/u-boot.itb
 		rm -f ${BINARIES_DIR}/u-boot.its
 
 		${HOST_DIR}/bin/mkimage_imx8 -fit -loader ${BINARIES_DIR}/u-boot-spl-ddr.bin 0x7E1000 -second_loader ${BINARIES_DIR}/u-boot.itb 0x40200000 0x60000 -out ${BINARIES_DIR}/imx8-boot-sd.bin
 	elif grep -Eq "^BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MN=y$" ${BR2_CONFIG}; then
-		cat ${BINARIES_DIR}/u-boot-spl.bin ${BINARIES_DIR}/lpddr4_pmu_train_fw.bin > ${BINARIES_DIR}/u-boot-spl-ddr.bin
+		cat ${BINARIES_DIR}/u-boot-spl.bin ${BINARIES_DIR}/ddr_fw.bin > ${BINARIES_DIR}/u-boot-spl-ddr.bin
 		BL31=${BINARIES_DIR}/bl31.bin BL33=${BINARIES_DIR}/u-boot-nodtb.bin ATF_LOAD_ADDR=0x00960000 ${HOST_DIR}/bin/mkimage_fit_atf.sh ${UBOOT_DTB} > ${BINARIES_DIR}/u-boot.its
 		${HOST_DIR}/bin/mkimage -E -p 0x3000 -f ${BINARIES_DIR}/u-boot.its ${BINARIES_DIR}/u-boot.itb
 		rm -f ${BINARIES_DIR}/u-boot.its
-- 
2.7.4

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

end of thread, other threads:[~2020-05-25 16:17 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-04-29  9:12 [Buildroot] [PATCH v2 0/5] imx: add i.MX8M Nano EVK board support Stephane Viau
2020-04-29  9:12 ` [Buildroot] [PATCH v2 1/5] package/freescale-imx: Add option for DDR FW need Stephane Viau
2020-05-20  7:58   ` Gary Bisson
2020-05-25 16:17     ` Stephane Viau
2020-04-29  9:12 ` [Buildroot] [PATCH v2 2/5] package/freescale-imx/firmware-imx: add choice for DDR training binaries Stephane Viau
2020-05-20  8:15   ` Gary Bisson
2020-05-25 16:17     ` Stephane Viau
2020-04-29  9:12 ` [Buildroot] [PATCH v2 3/5] board/freescale/common/imx: use generic ddr_fw.bin name Stephane Viau
2020-04-29  9:12 ` [Buildroot] [PATCH v2 4/5] board/freescale/common/imx: add support for i.MX8M Nano Stephane Viau
2020-04-29  9:12 ` [Buildroot] [PATCH v2 5/5] configs/freescale_imx8mnevk: new defconfig Stephane Viau
2020-04-29 20:22 ` [Buildroot] [PATCH v2 0/5] imx: add i.MX8M Nano EVK board support Thomas Petazzoni
2020-04-29 20:36   ` Stephane Viau
2020-04-29 20:48     ` Thomas Petazzoni
  -- strict thread matches above, loose matches on Subject: below --
2020-04-28  7:33 [Buildroot] [PATCH 0/4] " Stephane Viau
2020-04-29  8:31 ` [Buildroot] [PATCH v2 0/5] " Stephane Viau
2020-04-29  8:31   ` [Buildroot] [PATCH v2 3/5] board/freescale/common/imx: use generic ddr_fw.bin name Stephane Viau

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.