Skip to content

Commit

Permalink
imx: add imx93 evk platform support
Browse files Browse the repository at this point in the history
Signed-off-by: Andy Tang <[email protected]>
  • Loading branch information
andynxp committed Aug 23, 2023
1 parent e1f5598 commit d84d20d
Show file tree
Hide file tree
Showing 15 changed files with 7,960 additions and 2,280 deletions.
2 changes: 2 additions & 0 deletions config.default
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ CONFIG_TARGET_imx=y
# CONFIG_TARGET_imx_cortexa7 is not set
# CONFIG_TARGET_imx_cortexa9 is not set
CONFIG_TARGET_imx_imx8=y
# CONFIG_TARGET_imx_cortexa55 is not set
# CONFIG_TARGET_MULTI_PROFILE is not set
# CONFIG_TARGET_imx_imx8_Default is not set
CONFIG_TARGET_imx_imx8_DEVICE_imx8mmini=y
Expand Down Expand Up @@ -1892,6 +1893,7 @@ CONFIG_PACKAGE_u-boot-imx8mm=y
# CONFIG_PACKAGE_eip197-mini-firmware is not set
CONFIG_PACKAGE_firmware-imx=y
# CONFIG_PACKAGE_firmware-sdma is not set
# CONFIG_PACKAGE_firmware-sentinel is not set
# CONFIG_PACKAGE_ibt-firmware is not set
# CONFIG_PACKAGE_iwl3945-firmware is not set
# CONFIG_PACKAGE_iwl4965-firmware is not set
Expand Down
28 changes: 21 additions & 7 deletions package/boot/atf-imx/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,13 @@
include $(TOPDIR)/rules.mk

PKG_NAME:=atf-imx
PKG_VERSION:=lf-5.15.5-1.0.0
PKG_VERSION:=lf-5.15.71-2.2.1
PKG_RELEASE:=$(AUTORELEASE)

PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/nxp-imx/imx-atf.git
PKG_SOURCE_VERSION:=lf-5.15.5-1.0.0
PKG_MIRROR_HASH:=c5de0a3152f2a0c30d25f23bb0c6cc4eab17c11f8270f5f566e998cc554180d2
PKG_SOURCE_VERSION:=lf-5.15.71-2.2.1
PKG_MIRROR_HASH:=c3298ae7b9058656954321167177734891383cd26ded1619da7cbbe658b09f6c
PKG_FLAGS:=nonshared

include $(INCLUDE_DIR)/package.mk
Expand All @@ -30,10 +30,8 @@ define Package/atf-imx8m/Default
SECTION:=boot
CATEGORY:=Boot Loaders
TITLE:=NXP i.MX8M SD Boot Trusted Firmware
MKIMG_DIR:=`find $(STAGING_DIR_IMAGE) -name imx-mkimage-*`/iMX8M
BUILD_TARGET:=imx
BUILD_SUBTARGET:=imx8
DEPENDS:=@TARGET_imx_imx8 +imx-mkimage
DEPENDS:=@TARGET_imx_imx8
endef

define Package/atf-imx8mp
Expand All @@ -56,6 +54,21 @@ define Package/atf-imx8mq
VARIANT:=imx8mq
endef

define Package/atf-imx93
SECTION:=boot
CATEGORY:=Boot Loaders
TITLE:=NXP i.MX9 SD Boot Trusted Firmware
BUILD_TARGET:=imx
VARIANT:=imx93
DEPENDS+=@TARGET_imx_cortexa55 +imx-mkimage
endef

ifeq ($(SUBTARGET),imx8)
MKIMG_PLAT:=iMX8M
else ifeq ($(SUBTARGET),cortexa55)
MKIMG_PLAT:=iMX9
endif

MAKE_VARS = \
CROSS_COMPILE="$(TARGET_CROSS)"

Expand All @@ -66,10 +79,11 @@ MAKE_FLAGS += \
define Build/InstallDev
$(INSTALL_DIR) $(STAGING_DIR_IMAGE)
$(CP) $(PKG_BUILD_DIR)/build/$(BUILD_VARIANT)/release/bl31.bin \
$$(MKIMG_DIR)
$(STAGING_DIR_IMAGE)/imx-mkimage/$(MKIMG_PLAT)
endef

$(eval $(call BuildPackage,atf-imx8mp))
$(eval $(call BuildPackage,atf-imx8mm))
$(eval $(call BuildPackage,atf-imx8mn))
$(eval $(call BuildPackage,atf-imx8mq))
$(eval $(call BuildPackage,atf-imx93))
63 changes: 38 additions & 25 deletions package/boot/uboot-imx/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -8,20 +8,19 @@
include $(TOPDIR)/rules.mk

PKG_NAME:=uboot-imx
PKG_VERSION:=lf-5.15.5-1.0.0
PKG_VERSION:=lf-5.15.71-2.2.1
PKG_RELEASE:=$(AUTORELEASE)

PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/nxp-imx/uboot-imx.git
PKG_SOURCE_VERSION:=lf-5.15.5-1.0.0
PKG_MIRROR_HASH:=fdb2086a1182b2c96e8c8dcfb795f004
PKG_SOURCE_VERSION:=lf-5.15.71-2.2.1
PKG_MIRROR_HASH:=9c7530f7d286e1c719a9c33100341bd07c50fedd84d7997507784f46bc22fdcd

include $(INCLUDE_DIR)/u-boot.mk
include $(INCLUDE_DIR)/package.mk

define U-Boot/Default
BUILD_TARGET:=imx
UBOOT_IMAGE:=u-boot.imx
endef

define U-Boot/apalis_imx6
Expand Down Expand Up @@ -56,6 +55,7 @@ define U-Boot/wandboard
BUILD_SUBTARGET:=cortexa9
BUILD_DEVICES:=wandboard_dual
UBOOT_MAKE_FLAGS += u-boot.imx
UBOOT_IMAGE:=u-boot.imx
endef

define U-Boot/imx6ull
Expand All @@ -75,7 +75,6 @@ define U-Boot/imx8mp
BUILD_SUBTARGET:=imx8
UBOOT_CONFIG:=imx8mp_evk
ENV_NAME:=imx8mp-sdboot
MKIMG_DIR:=`find $(STAGING_DIR_IMAGE) -name imx-mkimage-*`/iMX8M
DTB_NAME:=imx8mp-evk.dtb
DEPENDS:=+imx-mkimage
ENV_SIZE:=0x4000
Expand All @@ -87,7 +86,6 @@ define U-Boot/imx8mm
BUILD_SUBTARGET:=imx8
UBOOT_CONFIG:=imx8mm_evk
ENV_NAME:=imx8mm-sdboot
MKIMG_DIR:=`find $(STAGING_DIR_IMAGE) -name imx-mkimage-*`/iMX8M
DTB_NAME:=imx8mm-evk.dtb
DEPENDS:=+imx-mkimage
ENV_SIZE:=0x4000
Expand All @@ -99,7 +97,6 @@ define U-Boot/imx8mn
BUILD_SUBTARGET:=imx8
UBOOT_CONFIG:=imx8mn_evk
ENV_NAME:=imx8mn-sdboot
MKIMG_DIR:=`find $(STAGING_DIR_IMAGE) -name imx-mkimage-*`/iMX8M
DTB_NAME:=imx8mn-evk.dtb
DEPENDS:=+imx-mkimage
ENV_SIZE:=0x4000
Expand All @@ -111,12 +108,22 @@ define U-Boot/imx8mq
BUILD_SUBTARGET:=imx8
UBOOT_CONFIG:=imx8mq_evk
ENV_NAME:=imx8mq-sdboot
MKIMG_DIR:=`find $(STAGING_DIR_IMAGE) -name imx-mkimage-*`/iMX8M
DTB_NAME:=imx8mq-evk.dtb
DEPENDS:=+imx-mkimage
ENV_SIZE:=0x4000
endef

define U-Boot/imx93
BUILD_DEVICES:=imx93
NAME:=imx8mmini lpddr4 board
UBOOT_CONFIG:=imx93_11x11_evk
ENV_NAME:=imx93-sdboot
DTB_NAME:=imx93-11x11-evk.dtb
ENV_SIZE:=0x4000
BUILD_SUBTARGET:=cortexa55
DEPENDS:=@TARGET_imx_cortexa55
endef

UBOOT_TARGETS := \
apalis_imx6 \
mx6cuboxi \
Expand All @@ -126,34 +133,40 @@ UBOOT_TARGETS := \
imx8mp \
imx8mm \
imx8mn \
imx8mq
imx8mq \
imx93

ifeq ($(SUBTARGET),imx8)
define Build/InstallDev
$(INSTALL_DIR) $(STAGING_DIR_IMAGE)
ifeq ($(SUBTARGET),imx8)
$(CP) $(PKG_BUILD_DIR)/u-boot-nodtb.bin \
$(PKG_BUILD_DIR)/spl/u-boot-spl.bin \
$(PKG_BUILD_DIR)/arch/arm/dts/$(DTB_NAME) \
$$(MKIMG_DIR)
$(CP) $(PKG_BUILD_DIR)/tools/mkimage $$(MKIMG_DIR)/mkimage_uboot
$(PKG_BUILD_DIR)/tools/mkenvimage -s $(ENV_SIZE) \
-o $(STAGING_DIR_IMAGE)/$(ENV_NAME)-uboot-env.bin \
files/$(ENV_NAME)-uEnv.txt
endef
else
define Build/InstallDev
$(INSTALL_DIR) $(STAGING_DIR_IMAGE)
$(STAGING_DIR_IMAGE)/imx-mkimage/iMX8M
$(CP) $(PKG_BUILD_DIR)/tools/mkimage \
$(STAGING_DIR_IMAGE)/imx-mkimage/iMX8M/mkimage_uboot
else ifeq ($(SUBTARGET),cortexa55)
$(CP) $(PKG_BUILD_DIR)/u-boot.bin \
$(PKG_BUILD_DIR)/spl/u-boot-spl.bin \
$(PKG_BUILD_DIR)/arch/arm/dts/$(DTB_NAME) \
$(STAGING_DIR_IMAGE)/imx-mkimage/iMX9
$(CP) $(PKG_BUILD_DIR)/tools/mkimage \
$(STAGING_DIR_IMAGE)/imx-mkimage/iMX9/mkimage_uboot
endif

ifneq ($(UBOOT_IMAGE),)
$(foreach img,$(UBOOT_IMAGE), \
$(CP) $(PKG_BUILD_DIR)/$(img) $(STAGING_DIR_IMAGE)/$(BUILD_VARIANT)-$(img); \
)
ifneq ($(ENV_NAME),)
$(PKG_BUILD_DIR)/tools/mkenvimage -s $(ENV_SIZE) \
-o $(STAGING_DIR_IMAGE)/$(ENV_NAME)-uboot-env.bin \
files/$(ENV_NAME)-uEnv.txt
endif
endef
endif

ifneq ($(ENV_NAME),)
$(PKG_BUILD_DIR)/tools/mkenvimage -s $(ENV_SIZE) \
-o $(STAGING_DIR_IMAGE)/$(ENV_NAME)-uboot-env.bin \
files/$(ENV_NAME)-uEnv.txt
endif
endef

define Package/u-boot/install/default
endef

Expand Down
13 changes: 13 additions & 0 deletions package/boot/uboot-imx/files/imx93-sdboot-uEnv.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
fdt_addr=0x83000000
loadaddr=0x80400000
fdt_high=0x8fffffff
initrd_addr=0x83800000
initrd_high=0xffffffffffffffff
kernel_img=imx93evk-kernel.bin
fdt_img=imx93-11x11-evk.dtb
load_img=ext4load mmc 1:1 $loadaddr $kernel_img
load_fdt=ext4load mmc 1:1 $fdt_addr $fdt_img
sd_boot=run load_img && run load_fdt && booti $loadaddr - $fdt_addr
bootargs=root=/dev/mmcblk1p2 rw rootwait rootfstype=squashfs,f2fs noinitrd console=ttyLP0,115200 earlycon
bootcmd=echo starting openwrt ...;run sd_boot
bootdelay=3
36 changes: 33 additions & 3 deletions package/firmware/imx/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,15 @@ define Download/firmware-imx
endef
$(eval $(call Download,firmware-imx))

FIRMWARE_SENTINEL:=firmware-sentinel-0.5.1
FIRMWARE_SENTINEL_BIN:=$(FIRMWARE_SENTINEL).bin
define Download/firmware-sentinel
URL:=$(FIRMWARE_URL)
FILE:=$(FIRMWARE_SENTINEL_BIN)
HASH:=a4f249feef325fee59a67551d704511014fb5cf766b9ecaa4ba7d2a916056222
endef
$(eval $(call Download,firmware-sentinel))

define Package/fw-default
SECTION:=firmware
CATEGORY:=Firmware
Expand All @@ -43,18 +52,34 @@ endef
define Package/firmware-imx
$(Package/fw-default)
TITLE:=NXP firmware for imx8/9
MKIMG_DIR:=`find $(STAGING_DIR_IMAGE) -name imx-mkimage-*`/iMX8M
DEPENDS:=+imx-mkimage
endef

define Package/firmware-imx/install
$(INSTALL_DIR) $$(MKIMG_DIR)
$(INSTALL_DIR) $(1)/lib/firmware/imx/sdma
ifeq ($(SUBTARGET),imx8)
$(INSTALL_DATA) $(PKG_BUILD_DIR)/$(FIRMWARE_IMX)/firmware/ddr/synopsys/* \
$$(MKIMG_DIR)
$(STAGING_DIR_IMAGE)/imx-mkimage/iMX8M
$(INSTALL_DATA) \
$(PKG_BUILD_DIR)/$(FIRMWARE_IMX)/firmware/sdma/sdma-imx7d.bin \
$(1)/lib/firmware/imx/sdma
else ifeq ($(SUBTARGET),cortexa55)
$(INSTALL_DATA) $(PKG_BUILD_DIR)/$(FIRMWARE_IMX)/firmware/ddr/synopsys/* \
$(STAGING_DIR_IMAGE)/imx-mkimage/iMX9
endif
endef

define Package/firmware-sentinel
$(Package/fw-default)
TITLE:=NXP firmware for imx9
DEPENDS:=+imx-mkimage
endef

define Package/firmware-sentinel/install
$(INSTALL_DIR) $(STAGING_DIR_IMAGE)/imx-mkimage/iMX9
$(INSTALL_DATA) \
$(PKG_BUILD_DIR)/$(FIRMWARE_SENTINEL)/* \
$(STAGING_DIR_IMAGE)/imx-mkimage/iMX9
endef

UNPACK_CMD:=
Expand All @@ -63,6 +88,10 @@ define Build/Prepare
$(CP) $(DL_DIR)/$(FIRMWARE_IMX_BIN) $(PKG_BUILD_DIR)
chmod a+x $(PKG_BUILD_DIR)/$(FIRMWARE_IMX_BIN)
cd $(PKG_BUILD_DIR) && ./$(FIRMWARE_IMX_BIN) --auto-accept

$(CP) $(DL_DIR)/$(FIRMWARE_SENTINEL_BIN) $(PKG_BUILD_DIR)
chmod a+x $(PKG_BUILD_DIR)/$(FIRMWARE_SENTINEL_BIN)
cd $(PKG_BUILD_DIR) && ./$(FIRMWARE_SENTINEL_BIN) --auto-accept
endef

define Build/Compile
Expand All @@ -73,3 +102,4 @@ endef

$(eval $(call BuildPackage,firmware-sdma))
$(eval $(call BuildPackage,firmware-imx))
$(eval $(call BuildPackage,firmware-sentinel))
5 changes: 3 additions & 2 deletions package/utils/imx-mkimage/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ PKG_RELEASE:=$(AUTORELEASE)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/nxp-imx/imx-mkimage.git
PKG_SOURCE_VERSION:=lf-5.15.71-2.2.1
PKG_MIRROR_HASH:=9713189390c0f1d097f3d0a75b5ab05dd65ead0d0dcb42410ecf563c4ac473c1
PKG_MIRROR_HASH:=40df71bda4dbcf9a3782cf55b51630d076ec3fcf7bb11e338e97fc808b0df730

PKG_FLAGS:=nonshared

Expand All @@ -33,7 +33,8 @@ define Build/Compile
endef

define Build/InstallDev
$(CP) -rp $(PKG_BUILD_DIR) $(STAGING_DIR_IMAGE)
mkdir -p $(STAGING_DIR_IMAGE)
$(CP) $(PKG_BUILD_DIR) $(STAGING_DIR_IMAGE)/imx-mkimage
endef

$(eval $(call BuildPackage,imx-mkimage))
2 changes: 1 addition & 1 deletion target/linux/imx/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ include $(TOPDIR)/rules.mk
BOARD:=imx
BOARDNAME:=NXP i.MX
FEATURES:=audio display fpu gpio pcie rtc usb usbgadget squashfs targz nand ubifs boot-part rootfs-part
SUBTARGETS:=cortexa7 cortexa9 imx8
SUBTARGETS:=cortexa7 cortexa9 imx8 cortexa55

KERNEL_PATCHVER:=5.15

Expand Down
9 changes: 8 additions & 1 deletion target/linux/imx/README
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ users can bring up the board without difficulty.
IMX8MMini_LPDDR4 (SD boot)
IMX8MNano_LPDDR4 (SD boot)
IMX8MQuad_LPDDR4 (SD boot)
IMX93EVK (SD boot)

* cortexa7 and cortexa9
imx6 (not included in this doc)
Expand All @@ -36,7 +37,13 @@ $ ./scripts/feeds install -a
Target Devices: (Select devices. Available when Target Profile is "Multiple devices")
Target Images: (Disable "GZip images" if you don't want to unzip manually to use the images.)

Note: The first time make menuconfig would create a .config file which
Note 1: For ARMv8 platform, please select the compile toolchain as follows:
[*] Advanced configuration options (for developers) --->
[*] Toolchain Options --->
Binutils Version (Binutils 2.37) --->
GCC compiler Version (gcc 11.x) --->

Note 2: The first time make menuconfig would create a .config file which
would include all dependencies for selected target. After that, make
menuconfig still could be used to modify packages. If want to change
other target, please remove .config and make menuconfig to select again.
Expand Down
Loading

0 comments on commit d84d20d

Please sign in to comment.