* [Buildroot] [PATCH 0/4] imx: add i.MX8M Nano EVK board support @ 2020-04-28 7:33 Stephane Viau 2020-04-28 7:33 ` [Buildroot] [PATCH 1/4] package/freescale-imx/firmware-imx: add choice for DDR training binaries Stephane Viau ` (4 more replies) 0 siblings, 5 replies; 21+ messages in thread From: Stephane Viau @ 2020-04-28 7:33 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 couple of patches introduce the DDR training selection. 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. BR, Stephane. Stephane Viau (4): 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 | 2 +- board/freescale/common/imx/post-image.sh | 2 + board/freescale/imx8mnevk/readme.txt | 74 ++++++++++++++++++++++ configs/freescale_imx8mnevk_defconfig | 43 +++++++++++++ package/freescale-imx/firmware-imx/Config.in | 24 +++++++ package/freescale-imx/firmware-imx/firmware-imx.mk | 29 ++++++++- 8 files changed, 177 insertions(+), 2 deletions(-) create mode 100644 board/freescale/imx8mnevk/readme.txt create mode 100644 configs/freescale_imx8mnevk_defconfig -- 2.7.4 ^ permalink raw reply [flat|nested] 21+ messages in thread
* [Buildroot] [PATCH 1/4] package/freescale-imx/firmware-imx: add choice for DDR training binaries 2020-04-28 7:33 [Buildroot] [PATCH 0/4] imx: add i.MX8M Nano EVK board support Stephane Viau @ 2020-04-28 7:33 ` Stephane Viau 2020-04-28 8:21 ` Gary Bisson 2020-04-28 7:33 ` [Buildroot] [PATCH 2/4] board/freescale/common/imx: use generic ddr_fw.bin name Stephane Viau ` (3 subsequent siblings) 4 siblings, 1 reply; 21+ messages in thread From: Stephane Viau @ 2020-04-28 7:33 UTC (permalink / raw) To: buildroot i.MX 8M Nano support many DDR types (LPDDR4, DDR4, DDR3L). 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> --- 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..e6ae993 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_PLATFORM_IMX8MN + +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..33ee4bb 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_FREESCALE_IMX_PLATFORM_IMX8M)$(BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MM)$(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] 21+ messages in thread
* [Buildroot] [PATCH 1/4] package/freescale-imx/firmware-imx: add choice for DDR training binaries 2020-04-28 7:33 ` [Buildroot] [PATCH 1/4] package/freescale-imx/firmware-imx: add choice for DDR training binaries Stephane Viau @ 2020-04-28 8:21 ` Gary Bisson 2020-04-29 7:57 ` Stephane Viau ` (2 more replies) 0 siblings, 3 replies; 21+ messages in thread From: Gary Bisson @ 2020-04-28 8:21 UTC (permalink / raw) To: buildroot Hi Stephane, Thanks for this patch, it would indeed be nice to support several DDR options. However I have a few remarks, see below. On Tue, Apr 28, 2020 at 09:33:50AM +0200, Stephane Viau wrote: > i.MX 8M Nano support many DDR types (LPDDR4, DDR4, DDR3L). Some boards This is not i.MX8M Nano specific, this actually applies to the whole i.MX8M family. You can have a i.MX8MQ platform with DDR4 too. > 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> > --- > 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..e6ae993 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_PLATFORM_IMX8MN Please do not limit to IMX8MN > +choice > + bool "DDR training binaries" > + default BR2_PACKAGE_FIRMWARE_DDRFW_LPDDR4 Good that default is LPDDR4 for backward compatibility, thanks. > + 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). Where is the DDR3 option? > +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..33ee4bb 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_FREESCALE_IMX_PLATFORM_IMX8M)$(BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MM)$(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 Can you tell me the difference between ddr4_dmem_Xd_201810.bin and ddr4_dmem_Xd.bin? Regards, Gary ^ permalink raw reply [flat|nested] 21+ messages in thread
* [Buildroot] [PATCH 1/4] package/freescale-imx/firmware-imx: add choice for DDR training binaries 2020-04-28 8:21 ` Gary Bisson @ 2020-04-29 7:57 ` Stephane Viau 2020-04-29 8:30 ` Stephane Viau 2020-05-19 16:01 ` Stephane Viau 2 siblings, 0 replies; 21+ messages in thread From: Stephane Viau @ 2020-04-29 7:57 UTC (permalink / raw) To: buildroot > Hi Stephane, Hi Gary, > > Thanks for this patch, it would indeed be nice to support several DDR > options. However I have a few remarks, see below. Thanks for your review. > > On Tue, Apr 28, 2020 at 09:33:50AM +0200, Stephane Viau wrote: >> i.MX 8M Nano support many DDR types (LPDDR4, DDR4, DDR3L). Some boards > This is not i.MX8M Nano specific, this actually applies to the whole > i.MX8M family. You can have a i.MX8MQ platform with DDR4 too. Agreed. Will extend the comment to i.MX8 (e.g.: 8M, 8MM, 8MN). > >> 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> >> --- >> 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..e6ae993 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_PLATFORM_IMX8MN > Please do not limit to IMX8MN Upcoming v2 will extend this feature to the whole 8M family, introducing a BR2_PACKAGE_FREESCALE_IMX_NEED_DDR_FW symbol. > >> +choice >> + bool "DDR training binaries" >> + default BR2_PACKAGE_FIRMWARE_DDRFW_LPDDR4 > Good that default is LPDDR4 for backward compatibility, thanks. you're welcome :-) > >> + 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). > Where is the DDR3 option? Even though 8M Nano supports DDR3, we do not have any reference board with this type of DDR afaik, nor do I know if there is a need for a specific firmware. > >> +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..33ee4bb 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_FREESCALE_IMX_PLATFORM_IMX8M)$(BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MM)$(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 > Can you tell me the difference between ddr4_dmem_Xd_201810.bin and ddr4_dmem_Xd.bin? Not sure ; probably an update of the latter by the former. I'll let you know if I get more info on this. BR, Stephane. > > Regards, > Gary -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20200429/36ed5e77/attachment-0001.html> ^ permalink raw reply [flat|nested] 21+ messages in thread
* [Buildroot] [PATCH 1/4] package/freescale-imx/firmware-imx: add choice for DDR training binaries 2020-04-28 8:21 ` Gary Bisson 2020-04-29 7:57 ` Stephane Viau @ 2020-04-29 8:30 ` Stephane Viau 2020-05-19 16:01 ` Stephane Viau 2 siblings, 0 replies; 21+ messages in thread From: Stephane Viau @ 2020-04-29 8:30 UTC (permalink / raw) To: buildroot > Hi Stephane, Hi Gary, > > > Thanks for this patch, it would indeed be nice to support several DDR > options. However I have a few remarks, see below. Thanks for your review. > > > On Tue, Apr 28, 2020 at 09:33:50AM +0200, Stephane Viau wrote: >> i.MX 8M Nano support many DDR types (LPDDR4, DDR4, DDR3L). Some boards > > This is not i.MX8M Nano specific, this actually applies to the whole > i.MX8M family. You can have a i.MX8MQ platform with DDR4 too. Agreed. Will extend the comment to i.MX8 (e.g.: 8M, 8MM, 8MN). > > >> 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> >> --- >> 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..e6ae993 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_PLATFORM_IMX8MN > > Please do not limit to IMX8MN Upcoming v2 will extend this feature to the whole 8M family, introducing a BR2_PACKAGE_FREESCALE_IMX_NEED_DDR_FW symbol. > > >> +choice >> + bool "DDR training binaries" >> + default BR2_PACKAGE_FIRMWARE_DDRFW_LPDDR4 > > Good that default is LPDDR4 for backward compatibility, thanks. you're welcome :-) > > >> + 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). > > Where is the DDR3 option? Even though 8M Nano supports DDR3, we do not have any reference board with this type of DDR afaik, nor do I know if there is a need for a specific firmware. > > >> +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..33ee4bb 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_FREESCALE_IMX_PLATFORM_IMX8M)$(BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MM)$(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 > > Can you tell me the difference between ddr4_dmem_Xd_201810.bin and ddr4_dmem_Xd.bin? Not sure ; probably an update of the latter by the former. I'll let you know if I get more info on this. BR, Stephane. > > > Regards, > Gary ^ permalink raw reply [flat|nested] 21+ messages in thread
* [Buildroot] [PATCH 1/4] package/freescale-imx/firmware-imx: add choice for DDR training binaries 2020-04-28 8:21 ` Gary Bisson 2020-04-29 7:57 ` Stephane Viau 2020-04-29 8:30 ` Stephane Viau @ 2020-05-19 16:01 ` Stephane Viau 2020-05-20 7:24 ` Gary Bisson 2 siblings, 1 reply; 21+ messages in thread From: Stephane Viau @ 2020-05-19 16:01 UTC (permalink / raw) To: buildroot >Hi Stephane, > >Thanks for this patch, it would indeed be nice to support several DDR >options. However I have a few remarks, see below. > Hi Gary, Did you get a chance to review the v2 patch set I sent a few weeks ago? (https://patchwork.ozlabs.org/project/buildroot/list/?series=173449) Best regards, Stephane. >On Tue, Apr 28, 2020 at 09:33:50AM +0200, Stephane Viau wrote: >> i.MX 8M Nano support many DDR types (LPDDR4, DDR4, DDR3L). Some boards > >This is not i.MX8M Nano specific, this actually applies to the whole >i.MX8M family. You can have a i.MX8MQ platform with DDR4 too. > >> 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> >> --- >> 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..e6ae993 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_PLATFORM_IMX8MN > >Please do not limit to IMX8MN > >> +choice >> + bool "DDR training binaries" >> + default BR2_PACKAGE_FIRMWARE_DDRFW_LPDDR4 > >Good that default is LPDDR4 for backward compatibility, thanks. > >> + 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). > >Where is the DDR3 option? > >> +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..33ee4bb 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_FREESCALE_IMX_PLATFORM_IMX8M)$(BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8MM)$(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 > >Can you tell me the difference between ddr4_dmem_Xd_201810.bin and ddr4_dmem_Xd.bin? > >Regards, >Gary > ^ permalink raw reply [flat|nested] 21+ messages in thread
* [Buildroot] [PATCH 1/4] package/freescale-imx/firmware-imx: add choice for DDR training binaries 2020-05-19 16:01 ` Stephane Viau @ 2020-05-20 7:24 ` Gary Bisson 2020-05-20 15:58 ` Stephane Viau 0 siblings, 1 reply; 21+ messages in thread From: Gary Bisson @ 2020-05-20 7:24 UTC (permalink / raw) To: buildroot Hi Stephane, On Tue, May 19, 2020 at 04:01:21PM +0000, Stephane Viau (OSS) wrote: > >Hi Stephane, > > > >Thanks for this patch, it would indeed be nice to support several DDR > >options. However I have a few remarks, see below. > > > > Hi Gary, > > Did you get a chance to review the v2 patch set I sent a few weeks ago? > (https://patchwork.ozlabs.org/project/buildroot/list/?series=173449) I haven't got a chance to look at it no. But I'm doing so this morning. Mainly I only one remark on the first patch, I'll reply to it. All the other patches look good. Regards, Gary ^ permalink raw reply [flat|nested] 21+ messages in thread
* [Buildroot] [PATCH 1/4] package/freescale-imx/firmware-imx: add choice for DDR training binaries 2020-05-20 7:24 ` Gary Bisson @ 2020-05-20 15:58 ` Stephane Viau 0 siblings, 0 replies; 21+ messages in thread From: Stephane Viau @ 2020-05-20 15:58 UTC (permalink / raw) To: buildroot Hi Gary, >Hi Stephane, > >> >Hi Stephane, >> > >> >Thanks for this patch, it would indeed be nice to support several DDR >> >options. However I have a few remarks, see below. >> > >> >> Hi Gary, >> >> Did you get a chance to review the v2 patch set I sent a few weeks ago? >> (https://patchwork.ozlabs.org/project/buildroot/list/?series=173449) > >I haven't got a chance to look at it no. But I'm doing so this morning. >Mainly I only one remark on the first patch, I'll reply to it. >All the other patches look good. I got your feedback on the v2 patches, thanks! Will have a look and send out a v3 patch set in the coming days. BR, Stephane. > >Regards, >Gary ^ permalink raw reply [flat|nested] 21+ messages in thread
* [Buildroot] [PATCH 2/4] board/freescale/common/imx: use generic ddr_fw.bin name 2020-04-28 7:33 [Buildroot] [PATCH 0/4] imx: add i.MX8M Nano EVK board support Stephane Viau 2020-04-28 7:33 ` [Buildroot] [PATCH 1/4] package/freescale-imx/firmware-imx: add choice for DDR training binaries Stephane Viau @ 2020-04-28 7:33 ` Stephane Viau 2020-04-28 7:33 ` [Buildroot] [PATCH 3/4] board/freescale/common/imx: add support for i.MX8M Nano Stephane Viau ` (2 subsequent siblings) 4 siblings, 0 replies; 21+ messages in thread From: Stephane Viau @ 2020-04-28 7:33 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> --- board/freescale/common/imx/imx8-bootloader-prepare.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/board/freescale/common/imx/imx8-bootloader-prepare.sh b/board/freescale/common/imx/imx8-bootloader-prepare.sh index abf2e43..ad01cde 100755 --- a/board/freescale/common/imx/imx8-bootloader-prepare.sh +++ b/board/freescale/common/imx/imx8-bootloader-prepare.sh @@ -23,7 +23,7 @@ main () ${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] 21+ messages in thread
* [Buildroot] [PATCH 3/4] board/freescale/common/imx: add support for i.MX8M Nano 2020-04-28 7:33 [Buildroot] [PATCH 0/4] imx: add i.MX8M Nano EVK board support Stephane Viau 2020-04-28 7:33 ` [Buildroot] [PATCH 1/4] package/freescale-imx/firmware-imx: add choice for DDR training binaries Stephane Viau 2020-04-28 7:33 ` [Buildroot] [PATCH 2/4] board/freescale/common/imx: use generic ddr_fw.bin name Stephane Viau @ 2020-04-28 7:33 ` Stephane Viau 2020-04-28 8:22 ` Gary Bisson 2020-04-28 7:33 ` [Buildroot] [PATCH 4/4] configs/freescale_imx8mnevk: new defconfig Stephane Viau 2020-04-29 8:31 ` [Buildroot] [PATCH v2 0/5] imx: add i.MX8M Nano EVK board support Stephane Viau 4 siblings, 1 reply; 21+ messages in thread From: Stephane Viau @ 2020-04-28 7:33 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> --- 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] 21+ messages in thread
* [Buildroot] [PATCH 3/4] board/freescale/common/imx: add support for i.MX8M Nano 2020-04-28 7:33 ` [Buildroot] [PATCH 3/4] board/freescale/common/imx: add support for i.MX8M Nano Stephane Viau @ 2020-04-28 8:22 ` Gary Bisson 2020-04-29 8:16 ` Stephane Viau 0 siblings, 1 reply; 21+ messages in thread From: Gary Bisson @ 2020-04-28 8:22 UTC (permalink / raw) To: buildroot Hi Stephane, On Tue, Apr 28, 2020 at 09:33:52AM +0200, Stephane Viau wrote: > 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> Regards, Gary ^ permalink raw reply [flat|nested] 21+ messages in thread
* [Buildroot] [PATCH 3/4] board/freescale/common/imx: add support for i.MX8M Nano 2020-04-28 8:22 ` Gary Bisson @ 2020-04-29 8:16 ` Stephane Viau 0 siblings, 0 replies; 21+ messages in thread From: Stephane Viau @ 2020-04-29 8:16 UTC (permalink / raw) To: buildroot >Hi Stephane, > >On Tue, Apr 28, 2020 at 09:33:52AM +0200, Stephane Viau wrote: >> 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> Hi Gary, Thank you ; will add this. BR, Stephane. > >Regards, >Gary > ^ permalink raw reply [flat|nested] 21+ messages in thread
* [Buildroot] [PATCH 4/4] configs/freescale_imx8mnevk: new defconfig 2020-04-28 7:33 [Buildroot] [PATCH 0/4] imx: add i.MX8M Nano EVK board support Stephane Viau ` (2 preceding siblings ...) 2020-04-28 7:33 ` [Buildroot] [PATCH 3/4] board/freescale/common/imx: add support for i.MX8M Nano Stephane Viau @ 2020-04-28 7:33 ` Stephane Viau 2020-04-28 8:27 ` Gary Bisson 2020-04-29 8:31 ` [Buildroot] [PATCH v2 0/5] imx: add i.MX8M Nano EVK board support Stephane Viau 4 siblings, 1 reply; 21+ messages in thread From: Stephane Viau @ 2020-04-28 7:33 UTC (permalink / raw) To: buildroot This patch adds support for the i.MX8M Nano EVK Board [1]. The creation of u-boot.imx image is disabled since it fails and is not required. 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/document/guide/i-mx-8m-nano-evk-board-getting-started-guide:GS-8MNANOLPD4-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> --- .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 34e19b4..8accbe7 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -2406,6 +2406,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..822aeb1 --- /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/document/guide/i-mx-8m-nano-evk-board-getting-started-guide:GS-8MNANOLPD4-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] 21+ messages in thread
* [Buildroot] [PATCH 4/4] configs/freescale_imx8mnevk: new defconfig 2020-04-28 7:33 ` [Buildroot] [PATCH 4/4] configs/freescale_imx8mnevk: new defconfig Stephane Viau @ 2020-04-28 8:27 ` Gary Bisson 2020-04-29 8:19 ` Stephane Viau 0 siblings, 1 reply; 21+ messages in thread From: Gary Bisson @ 2020-04-28 8:27 UTC (permalink / raw) To: buildroot Hi Stephane, On Tue, Apr 28, 2020 at 09:33:53AM +0200, Stephane Viau wrote: > This patch adds support for the i.MX8M Nano EVK Board [1]. > > The creation of u-boot.imx image is disabled since it fails and is not > required. I don't understand that sentence. What do you mean? AFAIK u-boot.imx is the i.MX6 format, not sure why it is relevant to i.MX8M. > 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/document/guide/i-mx-8m-nano-evk-board-getting-started-guide:GS-8MNANOLPD4-EVK Doesn't the name of the EVK suggest it's using LPDDR4? Is there several versions of the same board? Regards, Gary ^ permalink raw reply [flat|nested] 21+ messages in thread
* [Buildroot] [PATCH 4/4] configs/freescale_imx8mnevk: new defconfig 2020-04-28 8:27 ` Gary Bisson @ 2020-04-29 8:19 ` Stephane Viau 0 siblings, 0 replies; 21+ messages in thread From: Stephane Viau @ 2020-04-29 8:19 UTC (permalink / raw) To: buildroot > Hi Stephane, > > On Tue, Apr 28, 2020 at 09:33:53AM +0200, Stephane Viau wrote: >> This patch adds support for the i.MX8M Nano EVK Board [1]. >> >> The creation of u-boot.imx image is disabled since it fails and is not >> required. > > I don't understand that sentence. What do you mean? AFAIK u-boot.imx is > the i.MX6 format, not sure why it is relevant to i.MX8M. Hi Gary, You are right. I will remove this (confusing) sentence in v2. > > >> 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/document/guide/i-mx-8m-nano-evk-board-getting-started-guide:GS-8MNANOLPD4-EVK > > Doesn't the name of the EVK suggest it's using LPDDR4? > > Is there several versions of the same board? Not sure why this link contains "LPD4" in its name ; will use another one landing on a page, which is one step above and concerns i.MX8M Nano EVK[1]. On this page, you will notice that DDR4 is mentioned (and that is the one I have used for validation of this config). [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 BR, Stephane. > > > Regards, > Gary ^ permalink raw reply [flat|nested] 21+ messages in thread
* [Buildroot] [PATCH v2 0/5] imx: add i.MX8M Nano EVK board support 2020-04-28 7:33 [Buildroot] [PATCH 0/4] imx: add i.MX8M Nano EVK board support Stephane Viau ` (3 preceding siblings ...) 2020-04-28 7:33 ` [Buildroot] [PATCH 4/4] configs/freescale_imx8mnevk: new defconfig Stephane Viau @ 2020-04-29 8:31 ` Stephane Viau 2020-04-29 8:31 ` [Buildroot] [PATCH v2 1/5] package/freescale-imx: Add option for DDR FW need Stephane Viau ` (4 more replies) 4 siblings, 5 replies; 21+ messages in thread From: Stephane Viau @ 2020-04-29 8:31 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] 21+ messages in thread
* [Buildroot] [PATCH v2 1/5] package/freescale-imx: Add option for DDR FW need 2020-04-29 8:31 ` [Buildroot] [PATCH v2 0/5] imx: add i.MX8M Nano EVK board support Stephane Viau @ 2020-04-29 8:31 ` Stephane Viau 2020-04-29 8:31 ` [Buildroot] [PATCH v2 2/5] package/freescale-imx/firmware-imx: add choice for DDR training binaries Stephane Viau ` (3 subsequent siblings) 4 siblings, 0 replies; 21+ messages in thread From: Stephane Viau @ 2020-04-29 8:31 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] 21+ messages in thread
* [Buildroot] [PATCH v2 2/5] package/freescale-imx/firmware-imx: add choice for DDR training binaries 2020-04-29 8:31 ` [Buildroot] [PATCH v2 0/5] imx: add i.MX8M Nano EVK board support Stephane Viau 2020-04-29 8:31 ` [Buildroot] [PATCH v2 1/5] package/freescale-imx: Add option for DDR FW need Stephane Viau @ 2020-04-29 8:31 ` Stephane Viau 2020-04-29 8:31 ` [Buildroot] [PATCH v2 3/5] board/freescale/common/imx: use generic ddr_fw.bin name Stephane Viau ` (2 subsequent siblings) 4 siblings, 0 replies; 21+ messages in thread From: Stephane Viau @ 2020-04-29 8:31 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] 21+ 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] imx: add i.MX8M Nano EVK board support Stephane Viau 2020-04-29 8:31 ` [Buildroot] [PATCH v2 1/5] package/freescale-imx: Add option for DDR FW need Stephane Viau 2020-04-29 8:31 ` [Buildroot] [PATCH v2 2/5] package/freescale-imx/firmware-imx: add choice for DDR training binaries Stephane Viau @ 2020-04-29 8:31 ` Stephane Viau 2020-04-29 8:31 ` [Buildroot] [PATCH v2 4/5] board/freescale/common/imx: add support for i.MX8M Nano Stephane Viau 2020-04-29 8:31 ` [Buildroot] [PATCH v2 5/5] configs/freescale_imx8mnevk: new defconfig Stephane Viau 4 siblings, 0 replies; 21+ 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] 21+ messages in thread
* [Buildroot] [PATCH v2 4/5] board/freescale/common/imx: add support for i.MX8M Nano 2020-04-29 8:31 ` [Buildroot] [PATCH v2 0/5] imx: add i.MX8M Nano EVK board support Stephane Viau ` (2 preceding siblings ...) 2020-04-29 8:31 ` [Buildroot] [PATCH v2 3/5] board/freescale/common/imx: use generic ddr_fw.bin name Stephane Viau @ 2020-04-29 8:31 ` Stephane Viau 2020-04-29 8:31 ` [Buildroot] [PATCH v2 5/5] configs/freescale_imx8mnevk: new defconfig Stephane Viau 4 siblings, 0 replies; 21+ messages in thread From: Stephane Viau @ 2020-04-29 8:31 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] 21+ messages in thread
* [Buildroot] [PATCH v2 5/5] configs/freescale_imx8mnevk: new defconfig 2020-04-29 8:31 ` [Buildroot] [PATCH v2 0/5] imx: add i.MX8M Nano EVK board support Stephane Viau ` (3 preceding siblings ...) 2020-04-29 8:31 ` [Buildroot] [PATCH v2 4/5] board/freescale/common/imx: add support for i.MX8M Nano Stephane Viau @ 2020-04-29 8:31 ` Stephane Viau 4 siblings, 0 replies; 21+ messages in thread From: Stephane Viau @ 2020-04-29 8:31 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] 21+ messages in thread
end of thread, other threads:[~2020-05-20 15:58 UTC | newest] Thread overview: 21+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2020-04-28 7:33 [Buildroot] [PATCH 0/4] imx: add i.MX8M Nano EVK board support Stephane Viau 2020-04-28 7:33 ` [Buildroot] [PATCH 1/4] package/freescale-imx/firmware-imx: add choice for DDR training binaries Stephane Viau 2020-04-28 8:21 ` Gary Bisson 2020-04-29 7:57 ` Stephane Viau 2020-04-29 8:30 ` Stephane Viau 2020-05-19 16:01 ` Stephane Viau 2020-05-20 7:24 ` Gary Bisson 2020-05-20 15:58 ` Stephane Viau 2020-04-28 7:33 ` [Buildroot] [PATCH 2/4] board/freescale/common/imx: use generic ddr_fw.bin name Stephane Viau 2020-04-28 7:33 ` [Buildroot] [PATCH 3/4] board/freescale/common/imx: add support for i.MX8M Nano Stephane Viau 2020-04-28 8:22 ` Gary Bisson 2020-04-29 8:16 ` Stephane Viau 2020-04-28 7:33 ` [Buildroot] [PATCH 4/4] configs/freescale_imx8mnevk: new defconfig Stephane Viau 2020-04-28 8:27 ` Gary Bisson 2020-04-29 8:19 ` Stephane Viau 2020-04-29 8:31 ` [Buildroot] [PATCH v2 0/5] imx: add i.MX8M Nano EVK board support Stephane Viau 2020-04-29 8:31 ` [Buildroot] [PATCH v2 1/5] package/freescale-imx: Add option for DDR FW need Stephane Viau 2020-04-29 8:31 ` [Buildroot] [PATCH v2 2/5] package/freescale-imx/firmware-imx: add choice for DDR training binaries Stephane Viau 2020-04-29 8:31 ` [Buildroot] [PATCH v2 3/5] board/freescale/common/imx: use generic ddr_fw.bin name Stephane Viau 2020-04-29 8:31 ` [Buildroot] [PATCH v2 4/5] board/freescale/common/imx: add support for i.MX8M Nano Stephane Viau 2020-04-29 8:31 ` [Buildroot] [PATCH v2 5/5] configs/freescale_imx8mnevk: new defconfig 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.