From ae8bf1a26e15f89d17deca031253c3261b3a6c36 Mon Sep 17 00:00:00 2001 From: Tim Harvey Date: Mon, 8 Jan 2024 14:04:15 -0800 Subject: [PATCH] imx: add imx8m support Add imx8m support: - add a cortexa53 subtarget to imx - move ARCH and KERNELNAME to subtargets - account for kernel modules that are not used for cortexa53 No device-specific targets or firmware images are created yet but all imx8m* dtbs will be built. enabling CONFIG_TARGET_ROOTFS_INITRAMFS results in openwrt-imx-cortexa53-imx8m-initramfs-kernel.bin which has been successfully booted on an imx8mm-evk using the following: u-boot=> tftpboot $fdt_addr_r image-imx8mm-evk.dtb && \ tftpboot $kernel_addr_r openwrt-imx-cortexa53-imx8m-initramfs-kernel.bin && \ booti $kernel_addr_r - $fdt_addr_r Signed-off-by: Tim Harvey --- package/kernel/linux/modules/crypto.mk | 9 +- package/kernel/linux/modules/video.mk | 4 +- target/linux/imx/Makefile | 5 +- target/linux/imx/cortexa53/config-default | 164 ++++++++++++++++++++++ target/linux/imx/cortexa53/target.mk | 8 ++ target/linux/imx/cortexa7/target.mk | 2 + target/linux/imx/cortexa9/target.mk | 2 + target/linux/imx/image/cortexa53.mk | 15 ++ 8 files changed, 200 insertions(+), 9 deletions(-) create mode 100644 target/linux/imx/cortexa53/config-default create mode 100644 target/linux/imx/cortexa53/target.mk create mode 100644 target/linux/imx/image/cortexa53.mk diff --git a/package/kernel/linux/modules/crypto.mk b/package/kernel/linux/modules/crypto.mk index 21b7aa51bd50..be9893d45396 100644 --- a/package/kernel/linux/modules/crypto.mk +++ b/package/kernel/linux/modules/crypto.mk @@ -319,7 +319,8 @@ define KernelPackage/crypto-ghash/arm-ce AUTOLOAD+=$(call AutoLoad,09,ghash-arm-ce) endef -KernelPackage/crypto-ghash/imx=$(KernelPackage/crypto-ghash/arm-ce) +KernelPackage/crypto-ghash/imx/cortexa7=$(KernelPackage/crypto-ghash/arm-ce) +KernelPackage/crypto-ghash/imx/cortexa9=$(KernelPackage/crypto-ghash/arm-ce) KernelPackage/crypto-ghash/ipq40xx=$(KernelPackage/crypto-ghash/arm-ce) KernelPackage/crypto-ghash/mvebu/cortexa9=$(KernelPackage/crypto-ghash/arm-ce) @@ -952,7 +953,8 @@ define KernelPackage/crypto-sha1/aarch64-ce AUTOLOAD+=$(call AutoLoad,09,sha1-ce) endef -KernelPackage/crypto-sha1/imx=$(KernelPackage/crypto-sha1/arm-neon) +KernelPackage/crypto-sha1/imx/cortexa7=$(KernelPackage/crypto-sha1/arm-neon) +KernelPackage/crypto-sha1/imx/cortexa9=$(KernelPackage/crypto-sha1/arm-neon) KernelPackage/crypto-sha1/ipq40xx=$(KernelPackage/crypto-sha1/arm-neon) KernelPackage/crypto-sha1/mediatek/filogic=$(KernelPackage/crypto-sha1/aarch64-ce) KernelPackage/crypto-sha1/mediatek/mt7622=$(KernelPackage/crypto-sha1/aarch64-ce) @@ -1085,7 +1087,8 @@ define KernelPackage/crypto-sha512/aarch64 AUTOLOAD+=$(call AutoLoad,09,sha512-arm64) endef -KernelPackage/crypto-sha512/imx=$(KernelPackage/crypto-sha512/arm) +KernelPackage/crypto-sha512/imx/cortexa7=$(KernelPackage/crypto-sha512/arm) +KernelPackage/crypto-sha512/imx/cortexa9=$(KernelPackage/crypto-sha512/arm) KernelPackage/crypto-sha512/ipq40xx=$(KernelPackage/crypto-sha512/arm) KernelPackage/crypto-sha512/mvebu/cortexa9=$(KernelPackage/crypto-sha512/arm) diff --git a/package/kernel/linux/modules/video.mk b/package/kernel/linux/modules/video.mk index 16c4f51f5b1c..b282d7695c92 100644 --- a/package/kernel/linux/modules/video.mk +++ b/package/kernel/linux/modules/video.mk @@ -448,7 +448,7 @@ $(eval $(call KernelPackage,drm-imx-hdmi)) define KernelPackage/drm-imx-ldb SUBMENU:=$(VIDEO_MENU) TITLE:=Freescale i.MX LVDS DRM support - DEPENDS:=+kmod-backlight kmod-drm-imx + DEPENDS:=@(TARGET_imx&&!TARGET_imx_cortexa53) +kmod-backlight kmod-drm-imx KCONFIG:=CONFIG_DRM_IMX_LDB \ CONFIG_DRM_PANEL_SIMPLE \ CONFIG_DRM_PANEL=y \ @@ -1182,7 +1182,7 @@ $(eval $(call KernelPackage,video-dma)) define KernelPackage/video-coda TITLE:=i.MX VPU support - DEPENDS:=@(TARGET_imx&&!TARGET_imx_cortexa7) +kmod-video-mem2mem +kmod-video-dma + DEPENDS:=@(TARGET_imx&&TARGET_imx_cortexa9) +kmod-video-mem2mem +kmod-video-dma KCONFIG:= \ CONFIG_VIDEO_CODA \ CONFIG_VIDEO_IMX_VDOA diff --git a/target/linux/imx/Makefile b/target/linux/imx/Makefile index 8fd6f2395092..4f70933d1800 100644 --- a/target/linux/imx/Makefile +++ b/target/linux/imx/Makefile @@ -4,18 +4,15 @@ include $(TOPDIR)/rules.mk -ARCH:=arm 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 +SUBTARGETS:=cortexa7 cortexa9 cortexa53 KERNEL_PATCHVER:=6.1 include $(INCLUDE_DIR)/target.mk -KERNELNAME:=zImage dtbs - DEFAULT_PACKAGES += uboot-envtools mkf2fs e2fsprogs blkid $(eval $(call BuildTarget)) diff --git a/target/linux/imx/cortexa53/config-default b/target/linux/imx/cortexa53/config-default new file mode 100644 index 000000000000..2076395ee8f6 --- /dev/null +++ b/target/linux/imx/cortexa53/config-default @@ -0,0 +1,164 @@ +CONFIG_64BIT=y +CONFIG_ARCH_BINFMT_ELF_EXTRA_PHDRS=y +CONFIG_ARCH_CORRECT_STACKTRACE_ON_KRETPROBE=y +CONFIG_ARCH_DMA_ADDR_T_64BIT=y +CONFIG_ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE=y +CONFIG_ARCH_MMAP_RND_BITS=18 +CONFIG_ARCH_MMAP_RND_BITS_MAX=24 +CONFIG_ARCH_MMAP_RND_BITS_MIN=18 +CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=11 +CONFIG_ARCH_NXP=y +CONFIG_ARCH_PROC_KCORE_TEXT=y +CONFIG_ARCH_STACKWALK=y +CONFIG_ARCH_WANTS_NO_INSTR=y +CONFIG_ARCH_WANTS_THP_SWAP=y +CONFIG_ARM64=y +CONFIG_ARM64_4K_PAGES=y +CONFIG_ARM64_ERRATUM_843419=y +CONFIG_ARM64_LD_HAS_FIX_ERRATUM_843419=y +CONFIG_ARM64_PAGE_SHIFT=12 +CONFIG_ARM64_PA_BITS=48 +CONFIG_ARM64_PA_BITS_48=y +CONFIG_ARM64_TAGGED_ADDR_ABI=y +CONFIG_ARM64_VA_BITS=39 +CONFIG_ARM64_VA_BITS_39=y +CONFIG_ARM_AMBA=y +CONFIG_ARM_GIC=y +CONFIG_ARM_GIC_V2M=y +CONFIG_ARM_GIC_V3=y +CONFIG_ARM_GIC_V3_ITS=y +CONFIG_ARM_GIC_V3_ITS_PCI=y +# CONFIG_ARM_IMX8M_DDRC_DEVFREQ is not set +CONFIG_ARM_IMX_BUS_DEVFREQ=y +CONFIG_ARM_IMX_CPUFREQ_DT=y +CONFIG_ARM_PSCI_FW=y +CONFIG_AUDIT_ARCH_COMPAT_GENERIC=y +CONFIG_BLK_MQ_PCI=y +CONFIG_CC_HAVE_SHADOW_CALL_STACK=y +CONFIG_CC_HAVE_STACKPROTECTOR_SYSREG=y +CONFIG_CLK_IMX8MM=y +CONFIG_CLK_IMX8MN=y +CONFIG_CLK_IMX8MP=y +CONFIG_CLK_IMX8MQ=y +CONFIG_CMA=y +CONFIG_CMA_AREAS=7 +# CONFIG_CMA_DEBUG is not set +# CONFIG_CMA_DEBUGFS is not set +# CONFIG_CMA_SYSFS is not set +CONFIG_CONSOLE_TRANSLATIONS=y +CONFIG_CONTIG_ALLOC=y +CONFIG_CRYPTO_AES_ARM64=y +CONFIG_CRYPTO_AES_ARM64_CE=y +CONFIG_CRYPTO_AES_ARM64_CE_BLK=y +CONFIG_CRYPTO_AES_ARM64_CE_CCM=y +CONFIG_CRYPTO_GHASH_ARM64_CE=y +CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y +CONFIG_CRYPTO_SHA1_ARM64_CE=y +CONFIG_CRYPTO_SHA256_ARM64=y +CONFIG_CRYPTO_SHA2_ARM64_CE=y +CONFIG_CRYPTO_SHA512_ARM64=y +CONFIG_CRYPTO_SHA512_ARM64_CE=y +# CONFIG_DRM_IMX_DCSS is not set +# CONFIG_DEVFREQ_GOV_PASSIVE is not set +# CONFIG_DEVFREQ_GOV_PERFORMANCE is not set +# CONFIG_DEVFREQ_GOV_POWERSAVE is not set +# CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND is not set +CONFIG_DEVFREQ_GOV_USERSPACE=y +# CONFIG_DEVFREQ_THERMAL is not set +# CONFIG_DMA_CMA is not set +CONFIG_DMA_DIRECT_REMAP=y +CONFIG_DUMMY_CONSOLE=y +CONFIG_DWMAC_DWC_QOS_ETH=y +CONFIG_DWMAC_GENERIC=y +CONFIG_DWMAC_IMX8=y +CONFIG_EXTCON_USB_GPIO=y +CONFIG_EXTRA_FIRMWARE="imx/sdma/sdma-imx7d.bin" +CONFIG_EXTRA_FIRMWARE_DIR="firmware" +CONFIG_FRAME_POINTER=y +CONFIG_GCC_SUPPORTS_DYNAMIC_FTRACE_WITH_REGS=y +CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y +CONFIG_GENERIC_CSUM=y +CONFIG_GENERIC_IOREMAP=y +CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y +CONFIG_GENERIC_PHY=y +CONFIG_GPIO_PCA953X=y +CONFIG_GPIO_PCA953X_IRQ=y +CONFIG_HW_CONSOLE=y +CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000 +CONFIG_IMX8MM_THERMAL=y +CONFIG_IMX_GPCV2=y +CONFIG_IMX_GPCV2_PM_DOMAINS=y +CONFIG_INPUT=y +CONFIG_INTERCONNECT=y +CONFIG_INTERCONNECT_IMX=y +CONFIG_INTERCONNECT_IMX8MM=y +CONFIG_INTERCONNECT_IMX8MN=y +CONFIG_INTERCONNECT_IMX8MP=y +CONFIG_INTERCONNECT_IMX8MQ=y +CONFIG_MEMORY_ISOLATION=y +# CONFIG_MMC_SDHCI_PCI is not set +CONFIG_MODULES_USE_ELF_RELA=y +CONFIG_NEED_SG_DMA_LENGTH=y +CONFIG_NOP_USB_XCEIV=y +CONFIG_PARTITION_PERCPU=y +CONFIG_PCI=y +CONFIG_PCIEAER=y +CONFIG_PCIEPORTBUS=y +CONFIG_PCIE_DW=y +CONFIG_PCIE_DW_HOST=y +CONFIG_PCIE_PME=y +CONFIG_PCI_DOMAINS=y +CONFIG_PCI_DOMAINS_GENERIC=y +CONFIG_PCI_IMX6=y +CONFIG_PCI_MSI=y +CONFIG_PCI_MSI_IRQ_DOMAIN=y +CONFIG_PCS_XPCS=y +CONFIG_PGTABLE_LEVELS=3 +CONFIG_PHYLIB_LEDS=y +CONFIG_PHYS_ADDR_T_64BIT=y +CONFIG_PHY_FSL_IMX8MQ_USB=y +CONFIG_PHY_FSL_IMX8M_PCIE=y +# CONFIG_PHY_MIXEL_LVDS_PHY is not set +CONFIG_PINCTRL_IMX=y +CONFIG_PINCTRL_IMX8MM=y +CONFIG_PINCTRL_IMX8MN=y +CONFIG_PINCTRL_IMX8MP=y +CONFIG_PINCTRL_IMX8MQ=y +CONFIG_PM_DEVFREQ=y +# CONFIG_PM_DEVFREQ_EVENT is not set +CONFIG_PM_GENERIC_DOMAINS=y +CONFIG_PM_GENERIC_DOMAINS_OF=y +CONFIG_POSIX_CPU_TIMERS_TASK_WORK=y +CONFIG_POWER_RESET=y +CONFIG_POWER_SUPPLY=y +CONFIG_QUEUED_RWLOCKS=y +CONFIG_QUEUED_SPINLOCKS=y +CONFIG_REGULATOR_MP5416=y +CONFIG_REGULATOR_PCA9450=y +CONFIG_RESET_IMX7=y +CONFIG_RODATA_FULL_DEFAULT_ENABLED=y +CONFIG_SOC_IMX8M=y +CONFIG_SPARSEMEM=y +CONFIG_SPARSEMEM_EXTREME=y +CONFIG_SPARSEMEM_VMEMMAP=y +CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y +CONFIG_STMMAC_ETH=y +CONFIG_STMMAC_PLATFORM=y +CONFIG_SWIOTLB=y +CONFIG_SYSCTL_EXCEPTION_TRACE=y +CONFIG_TIMER_IMX_SYS_CTR=y +CONFIG_TRACE_IRQFLAGS_NMI_SUPPORT=y +CONFIG_UNMAP_KERNEL_AT_EL0=y +CONFIG_USB_CONN_GPIO=y +CONFIG_USB_DWC3=y +CONFIG_USB_DWC3_DUAL_ROLE=y +# CONFIG_USB_DWC3_GADGET is not set +# CONFIG_USB_DWC3_HOST is not set +CONFIG_USB_DWC3_IMX8MP=y +CONFIG_USB_XHCI_HCD=y +CONFIG_USB_XHCI_PLATFORM=y +CONFIG_VMAP_STACK=y +CONFIG_VT=y +CONFIG_VT_CONSOLE=y +CONFIG_VT_HW_CONSOLE_BINDING=y +CONFIG_ZONE_DMA32=y diff --git a/target/linux/imx/cortexa53/target.mk b/target/linux/imx/cortexa53/target.mk new file mode 100644 index 000000000000..b9b32d182905 --- /dev/null +++ b/target/linux/imx/cortexa53/target.mk @@ -0,0 +1,8 @@ +ARCH:=aarch64 +BOARDNAME:=NXP i.MX with Cortex-A53 (ARM64) +CPU_TYPE:=cortex-a53 +KERNELNAME:=Image dtbs + +define Target/Description + Build firmware images for NXP i.MX (Cortex-A53) based boards. +endef diff --git a/target/linux/imx/cortexa7/target.mk b/target/linux/imx/cortexa7/target.mk index 11de87507d3f..1fec64b00c0e 100644 --- a/target/linux/imx/cortexa7/target.mk +++ b/target/linux/imx/cortexa7/target.mk @@ -1,6 +1,8 @@ +ARCH:=arm BOARDNAME:=NXP i.MX with Cortex-A7 CPU_TYPE:=cortex-a7 CPU_SUBTYPE:=neon-vfpv4 +KERNELNAME:=zImage dtbs define Target/Description Build firmware images for NXP i.MX (Cortex-A7) based boards. diff --git a/target/linux/imx/cortexa9/target.mk b/target/linux/imx/cortexa9/target.mk index 9bd63c7be1cf..cc48a8dbd0f0 100644 --- a/target/linux/imx/cortexa9/target.mk +++ b/target/linux/imx/cortexa9/target.mk @@ -1,6 +1,8 @@ +ARCH:=arm BOARDNAME:=NXP i.MX with Cortex-A9 CPU_TYPE:=cortex-a9 CPU_SUBTYPE:=neon +KERNELNAME:=zImage dtbs define Target/Description Build firmware images for NXP i.MX (Cortex-A9) based boards. diff --git a/target/linux/imx/image/cortexa53.mk b/target/linux/imx/image/cortexa53.mk new file mode 100644 index 000000000000..d8bf33407b69 --- /dev/null +++ b/target/linux/imx/image/cortexa53.mk @@ -0,0 +1,15 @@ +define Device/Default + PROFILES := Default + FILESYSTEMS := squashfs ubifs ext4 + DEVICE_DTS_DIR := $(DTS_DIR)/freescale + KERNEL_INSTALL := 1 + KERNEL_NAME := Image + KERNEL := kernel-bin +endef + +define Device/imx8m + DEVICE_VENDOR := NXP + DEVICE_MODEL := i.MX8M + DEVICE_DTS := $(basename $(notdir $(wildcard $(DTS_DIR)/freescale/imx8m*.dts))) +endef +TARGET_DEVICES += imx8m -- 2.30.2