diff mbox series

imx: add imx8mplus platform support

Message ID 20220704072408.15793-1-andy.tang@nxp.com
State Changes Requested, archived
Delegated to: Piotr Dymacz
Headers show
Series imx: add imx8mplus platform support | expand

Commit Message

Andy Tang July 4, 2022, 7:24 a.m. UTC
Imx8mplus_evk device is built to meet the needs of Smart Home,
Building, City and Industry 4.0, 5G gateway and router  applications.

Hardware specifications:
CPU: 4x or 2x Cortex-A53 up to 1.8 GHz
DRAM: 32-bit DDR4 & LPDDR4 up to 4.0GT/s
Board: imx8mp_evk
SoC: imx8mplus
On-board WiFi/Bluetooth chip: NXP 88W8997
Ethernet: 2x Gigabit Ethernet with AVB, IEEE 1588, EEE and 1x w/ TSN

Signed-off-by: Yuantian Tang <andy.tang@nxp.com>
---
 package/boot/atf-imx/Makefile                 |   51 +
 package/boot/uboot-imx/Makefile               |   48 +-
 .../uboot-imx/files/imx8mp-sdboot-uEnv.txt    |   12 +
 package/firmware/imx/Makefile                 |   47 +
 package/utils/imx-mkimage/Makefile            |   38 +
 target/linux/imx/Makefile                     |    5 +-
 target/linux/imx/config-5.15                  |  443 ---
 target/linux/imx/cortexa7/config-default      |  441 +++
 target/linux/imx/cortexa7/target.mk           |    2 +
 target/linux/imx/cortexa9/config-default      |  441 +++
 target/linux/imx/cortexa9/target.mk           |    2 +
 target/linux/imx/image/gen_sdcard_head_img.sh |   21 +
 target/linux/imx/image/imx8.mk                |   98 +
 .../linux/imx/image/mkits-multiple-config.sh  |  600 ++++
 target/linux/imx/imx8/config-5.15             | 2661 +++++++++++++++++
 target/linux/imx/imx8/target.mk               |   11 +
 .../0001-fix-the-compiling-error.patch        |   39 +
 17 files changed, 4508 insertions(+), 452 deletions(-)
 create mode 100644 package/boot/atf-imx/Makefile
 create mode 100644 package/boot/uboot-imx/files/imx8mp-sdboot-uEnv.txt
 create mode 100644 package/firmware/imx/Makefile
 create mode 100644 package/utils/imx-mkimage/Makefile
 delete mode 100644 target/linux/imx/config-5.15
 create mode 100755 target/linux/imx/image/gen_sdcard_head_img.sh
 create mode 100644 target/linux/imx/image/imx8.mk
 create mode 100755 target/linux/imx/image/mkits-multiple-config.sh
 create mode 100644 target/linux/imx/imx8/config-5.15
 create mode 100644 target/linux/imx/imx8/target.mk
 create mode 100644 target/linux/imx/patches-5.15/0001-fix-the-compiling-error.patch

Comments

Piotr Dymacz Aug. 16, 2022, 11:16 a.m. UTC | #1
Hi Andy,

Sorry for late reply. Please, see my comments inline below.

Rafał, Petr, it would be great if you could give your thoughts regarding 
my concerns about the 'firmware-imx' package.

On 04.07.2022 09:24, Yuantian Tang wrote:
> Imx8mplus_evk device is built to meet the needs of Smart Home,
> Building, City and Industry 4.0, 5G gateway and router  applications.
> 
> Hardware specifications:
> CPU: 4x or 2x Cortex-A53 up to 1.8 GHz
> DRAM: 32-bit DDR4 & LPDDR4 up to 4.0GT/s
> Board: imx8mp_evk
> SoC: imx8mplus
> On-board WiFi/Bluetooth chip: NXP 88W8997
> Ethernet: 2x Gigabit Ethernet with AVB, IEEE 1588, EEE and 1x w/ TSN
> 
> Signed-off-by: Yuantian Tang <andy.tang@nxp.com>
> ---
>   package/boot/atf-imx/Makefile                 |   51 +
>   package/boot/uboot-imx/Makefile               |   48 +-
>   .../uboot-imx/files/imx8mp-sdboot-uEnv.txt    |   12 +
>   package/firmware/imx/Makefile                 |   47 +
>   package/utils/imx-mkimage/Makefile            |   38 +
>   target/linux/imx/Makefile                     |    5 +-
>   target/linux/imx/config-5.15                  |  443 ---
>   target/linux/imx/cortexa7/config-default      |  441 +++
>   target/linux/imx/cortexa7/target.mk           |    2 +
>   target/linux/imx/cortexa9/config-default      |  441 +++
>   target/linux/imx/cortexa9/target.mk           |    2 +
>   target/linux/imx/image/gen_sdcard_head_img.sh |   21 +
>   target/linux/imx/image/imx8.mk                |   98 +
>   .../linux/imx/image/mkits-multiple-config.sh  |  600 ++++
>   target/linux/imx/imx8/config-5.15             | 2661 +++++++++++++++++
>   target/linux/imx/imx8/target.mk               |   11 +
>   .../0001-fix-the-compiling-error.patch        |   39 +
>   17 files changed, 4508 insertions(+), 452 deletions(-)
>   create mode 100644 package/boot/atf-imx/Makefile
>   create mode 100644 package/boot/uboot-imx/files/imx8mp-sdboot-uEnv.txt
>   create mode 100644 package/firmware/imx/Makefile
>   create mode 100644 package/utils/imx-mkimage/Makefile
>   delete mode 100644 target/linux/imx/config-5.15
>   create mode 100755 target/linux/imx/image/gen_sdcard_head_img.sh
>   create mode 100644 target/linux/imx/image/imx8.mk
>   create mode 100755 target/linux/imx/image/mkits-multiple-config.sh
>   create mode 100644 target/linux/imx/imx8/config-5.15
>   create mode 100644 target/linux/imx/imx8/target.mk
>   create mode 100644 target/linux/imx/patches-5.15/0001-fix-the-compiling-error.patch
> 
> diff --git a/package/boot/atf-imx/Makefile b/package/boot/atf-imx/Makefile
> new file mode 100644
> index 0000000000..e76393d1e9
> --- /dev/null
> +++ b/package/boot/atf-imx/Makefile

We already have bunch of arm-trusted-firmware-* packages for other 
targets and also 'include/trusted-firmware-a.mk' template.

Is there any reason to use custom approach here?

[snip]

> diff --git a/package/boot/uboot-imx/Makefile b/package/boot/uboot-imx/Makefile
> index 305d127557..f323f92dce 100644
> --- a/package/boot/uboot-imx/Makefile
> +++ b/package/boot/uboot-imx/Makefile
> @@ -7,10 +7,14 @@
>   
>   include $(TOPDIR)/rules.mk
>   
> -PKG_VERSION:=2022.01
> +PKG_NAME:=uboot-imx
> +PKG_VERSION:=lf-5.15.5-1.0.0
>  PKG_RELEASE:=$(AUTORELEASE)
>   
> -PKG_HASH:=81b4543227db228c03f8a1bf5ddbc813b0bb8f6555ce46064ef721a6fc680413
> +PKG_SOURCE_PROTO:=git
> +PKG_SOURCE_URL:=https://source.codeaurora.org/external/imx/uboot-imx

Please, use the upstream U-Boot. The 'imx8mp_evk' is supported since 
U-Boot ~2020.01 if I'm right.

Are there any specific changes in your U-Boot fork required by this 
board/platform?

[snip]

> diff --git a/package/firmware/imx/Makefile b/package/firmware/imx/Makefile
> new file mode 100644
> index 0000000000..880a882aa2
> --- /dev/null
> +++ b/package/firmware/imx/Makefile
> @@ -0,0 +1,47 @@
> +# SPDX-License-Identifier: GPL-2.0-only
> +#
> +# Copyright 2022 NXP
> +#
> +
> +include $(TOPDIR)/rules.mk
> +
> +PKG_NAME:=firmware-imx
> +PKG_VERSION:=8.15
> +PKG_RELEASE:=1
> +
> +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).bin
> +PKG_SOURCE_URL:=https://www.nxp.com/lgfiles/NMG/MAD/YOCTO/
> +PKG_HASH:=ef91390da6c8a6a48c8121a5dd667de8

OK, so a 'firmware-imx-8.15.bin' file, hosted somewhere on NXP servers 
which seems to be a self-extracting package with bunch of proprietary 
binary blobs and almost 700 lines license. And it asks for EULA 
acceptance when extracting:

"Welcome to NXP firmware-imx-8.15.bin

You need to read and accept the EULA before you can continue.

LA_OPT_NXP_Software_License v34 February 2022
[...]
"
I don't think we can accept this (Rafał, Petr, any opinions?). Looking 
at other open source projects, e.g. Barebox requires users to manually 
obtain and extract the firmware [1]. U-Boot documentation for this board 
mentions only the DDR training and ATF firmware [2].

Are all the blobs really required by this platform? Is there any other, 
more open source friendly way to get these binary blobs?

> +
> +include $(INCLUDE_DIR)/package.mk
> +
> +define Package/firmware-imx
> +  SECTION:=firmware
> +  CATEGORY:=Firmware
> +  TITLE:=NXP firmware for imx soc
> +  MKIMG_DIR:=`find $(STAGING_DIR_IMAGE) -name imx-mkimage*  | xargs basename`/iMX8M
> +  BUILD_TARGET:=imx
> +  BUILD_SUBTARGET:=imx8
> +  DEPENDS:=+imx-mkimage
> +endef
> +
> +define Package/firmware-imx/install
> +endef
> +
> +define Build/Compile
> +endef
> +
> +define Build/Install
> +endef
> +
> +UNPACK_CMD:=
> +define Build/InstallDev
> +	$(PKG_UNPACK)
> +	$(CP) $(DL_DIR)/$(PKG_SOURCE) $(PKG_BUILD_DIR)
> +	chmod a+x $(PKG_BUILD_DIR)/$(PKG_SOURCE)
> +	cd $(PKG_BUILD_DIR) && ./$(PKG_SOURCE) --auto-accept

Ach, the '--auto-accept' deals with the EULA acceptance...

> +	$(CP) $(PKG_BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)/firmware/ddr/synopsys/* \
> +		$(STAGING_DIR_IMAGE)/$(MKIMG_DIR)
> +endef
> +
> +$(eval $(call BuildPackage,firmware-imx))
> diff --git a/package/utils/imx-mkimage/Makefile b/package/utils/imx-mkimage/Makefile
> new file mode 100644
> index 0000000000..4ad1b18773
> --- /dev/null
> +++ b/package/utils/imx-mkimage/Makefile
> @@ -0,0 +1,38 @@
> +# SPDX-License-Identifier: GPL-2.0-only
> +#
> +# Copyright 2022 NXP
> +#
> +include $(TOPDIR)/rules.mk
> +
> +PKG_NAME:=imx-mkimage
> +PKG_VERSION:=lf-5.15.5-1.0.0
> +PKG_RELEASE:=$(AUTORELEASE)
> +
> +PKG_SOURCE_PROTO:=git
> +PKG_SOURCE_URL:=https://source.codeaurora.org/external/imx/imx-mkimage.git
> +PKG_SOURCE_VERSION:=lf-5.15.5-1.0.0
> +PKG_MIRROR_HASH:=fdb2086a1182b2c96e8c8dcfb795f004

Another fork? Any good reason to use this instead of tools/mkimage (we 
use version from U-Boot 2022.07 at the moment)? Is there anything 
missing in the upstream so that we can't use it?

[snip]

> diff --git a/target/linux/imx/Makefile b/target/linux/imx/Makefile
> index 5fb7a4d339..351873beaa 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 imx8

Please, follow the pattern here and use 'cortexa53' instead of 'imx8'.

>   
>   KERNEL_PATCHVER:=5.15
>   
>   include $(INCLUDE_DIR)/target.mk
>   
> -KERNELNAME:=zImage dtbs
> -
>   DEFAULT_PACKAGES += uboot-envtools mkf2fs e2fsprogs blkid
>   
>   $(eval $(call BuildTarget))
> diff --git a/target/linux/imx/config-5.15 b/target/linux/imx/config-5.15
> deleted file mode 100644
> index 1a3c83274c..0000000000
> --- a/target/linux/imx/config-5.15
> +++ /dev/null

Any reason you don't want to keep common config for the whole target?
Have a look at sunxi and mvebu targets.

> @@ -1,443 +0,0 @@

[snip]

> diff --git a/target/linux/imx/cortexa7/config-default b/target/linux/imx/cortexa7/config-default
> index 480e98867f..20c77cbcbd 100644
> --- a/target/linux/imx/cortexa7/config-default
> +++ b/target/linux/imx/cortexa7/config-default
> @@ -26,3 +26,444 @@ CONFIG_SPI_FSL_QUADSPI=y
>   CONFIG_SPI_MEM=y
>   CONFIG_USB_CHIPIDEA_IMX=y
>   CONFIG_USB_EHCI_MXC=y

[snip]

> diff --git a/target/linux/imx/cortexa7/target.mk b/target/linux/imx/cortexa7/target.mk
> index 11de87507d..1fec64b00c 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/config-default b/target/linux/imx/cortexa9/config-default
> index d829bc7741..42ca6ce8b5 100644
> --- a/target/linux/imx/cortexa9/config-default
> +++ b/target/linux/imx/cortexa9/config-default
> @@ -56,3 +56,444 @@ CONFIG_SOC_IMX6=y
>   CONFIG_SOC_IMX6Q=y
>   CONFIG_SOC_IMX6SL=y
>   CONFIG_SOC_IMX6SX=y

[snip]

> diff --git a/target/linux/imx/cortexa9/target.mk b/target/linux/imx/cortexa9/target.mk
> index 9bd63c7be1..cc48a8dbd0 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/gen_sdcard_head_img.sh b/target/linux/imx/image/gen_sdcard_head_img.sh
> new file mode 100755
> index 0000000000..583ec1bd95
> --- /dev/null
> +++ b/target/linux/imx/image/gen_sdcard_head_img.sh
> @@ -0,0 +1,21 @@
> +#!/bin/sh
> +# SPDX-License-Identifier: GPL-2.0-only
> +#
> +# Copyright 2022 NXP
> +
> +set -x
> +[ $# -eq 5 ] || {
> +    echo "SYNTAX: $0 <file> <kernel part offset> <kernel size> <rootfs part offset> <rootfs size>"
> +    exit 1
> +}
> +
> +OUTPUT="$1"
> +KERNELOFFSET="$(($2 * 1024))"
> +KERNELSIZE="$3"
> +ROOTFSOFFSET="$(($4 * 1024))"
> +ROOTFSSIZE="$5"
> +
> +head=4
> +sect=63
> +
> +set $(ptgen -o $OUTPUT -h $head -s $sect -t 83 -p ${KERNELSIZE}M@${KERNELOFFSET} -p ${ROOTFSSIZE}M@${ROOTFSOFFSET})
> diff --git a/target/linux/imx/image/imx8.mk b/target/linux/imx/image/imx8.mk
> new file mode 100644
> index 0000000000..0695389607
> --- /dev/null
> +++ b/target/linux/imx/image/imx8.mk
> @@ -0,0 +1,98 @@
> +# SPDX-License-Identifier: GPL-2.0-only
> +#
> +# Copyright 2022 NXP
> +
> +# 16MB bootloader + 40MB kernel
> +IMX_SD_KERNELPART_SIZE = 40
> +IMX_SD_KERNELPART_OFFSET = 16
> +IMX_SD_ROOTFSPART_OFFSET = 64
> +IMX_SD_IMAGE_SIZE = $(shell echo $$((($(IMX_SD_ROOTFSPART_OFFSET) + \
> +	$(CONFIG_TARGET_ROOTFS_PARTSIZE)))))
> +
> +define Build/imx-clean
> +	# Clean the target
> +	rm -f $@
> +endef
> +
> +define Build/imx-compile-dtb
> +	# Compile dts file to dtb
> +	$(call Image/BuildDTB,$(DTS_DIR)/$(DEVICE_DTS).dts,$(DTS_DIR)/$(DEVICE_DTS).dtb)
> +endef
> +
> +define Build/imx-create-flash
> +	# Combile firmware + bl31 + uboot to flash.bin
> +	cd $(STAGING_DIR_IMAGE)/$(MKIMG_DIR) && $(MAKE) SOC=$(PLAT) $(DEVICE_TYPE)
> +endef
> +
> +define Build/imx-append
> +	# append binary
> +	dd if=$(STAGING_DIR_IMAGE)/$(1) >> $@
> +endef
> +
> +define Build/imx-append-boot
> +	# Append the uboot, firmware etc.
> +	dd if=$(STAGING_DIR_IMAGE)/$(MKIMG_DIR)/$(SOC_TYPE)/flash.bin >> $@
> +endef
> +
> +define Build/imx-append-dtb
> +	# Append the dtb file
> +	dd if=$(DTS_DIR)/$(1).dtb >> $@
> +endef
> +
> +define Build/imx-append-kernel
> +	# append the kernel
> +	mkdir -p $@.tmp && \
> +	cp $(IMAGE_KERNEL) $@.tmp && \
> +	cp $(DTS_DIR)/$(DEVICE_DTS).dtb $@.tmp && \
> +	make_ext4fs -J -L kernel -l "$(IMX_SD_KERNELPART_SIZE)M" "$@.kernel.part" "$@.tmp" && \
> +	dd if=$@.kernel.part >> $@ && \
> +	rm -rf $@.tmp && \
> +	rm -f $@.kernel.part
> +endef
> +
> +define Build/imx-append-sdhead
> +	# Create the sd file table
> +	./gen_sdcard_head_img.sh $(STAGING_DIR_IMAGE)/$(1)-sdcard-head.img \
> +		$(IMX_SD_KERNELPART_OFFSET) $(IMX_SD_KERNELPART_SIZE) \
> +		$(IMX_SD_ROOTFSPART_OFFSET) $(CONFIG_TARGET_ROOTFS_PARTSIZE)
> +	dd if=$(STAGING_DIR_IMAGE)/$(1)-sdcard-head.img >> $@
> +endef
> +
> +define Device/Default
> +  PROFILES := Default
> +  FILESYSTEMS := squashfs
> +  KERNEL_INITRAMFS = kernel-bin
> +  KERNEL_LOADADDR := 0x80080000
> +  KERNEL_ENTRY_POINT := 0x80080000
> +  IMAGE_SIZE := 64m
> +  KERNEL = kernel-bin
> +  IMAGES := sdcard.img sysupgrade.bin
> +  IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
> +endef
> +
> +define Device/imx8mplus
> +  DEVICE_VENDOR := NXP
> +  DEVICE_MODEL := IMX8MPLUS
> +  DEVICE_VARIANT := SD Card Boot
> +  PLAT := iMX8MP

Any better and more self-explaining name than 'PLAT'?

> +  SOC_TYPE := iMX8M
> +  DEVICE_TYPE := flash_evk

This looks wrong, have a look at 'DEVICE_TYPE' in include/target.mk.

> +  ENV_NAME:=imx8mp-sdboot
> +  MKIMG_DIR:= `find $(STAGING_DIR_IMAGE) -name imx-mkimage* | xargs basename`
> +  DEVICE_PACKAGES += \
> +	atf-imx8mp \
> +	firmware-imx \
> +	imx-mkimage \
> +	u-boot-imx8mp
> +  DEVICE_DTS := freescale/imx8mp-evk
> +  IMAGE/sdcard.img := \
> +	imx-compile-dtb | \
> +	imx-create-flash | \
> +	imx-clean | \
> +	imx-append-sdhead $(1) | pad-to 32K | \
> +	imx-append-boot | pad-to 4M | \
> +	imx-append $$(ENV_NAME)-uboot-env.bin | pad-to $(IMX_SD_KERNELPART_OFFSET)M | \
> +	imx-append-kernel | pad-to $(IMX_SD_ROOTFSPART_OFFSET)M | \
> +	append-rootfs | pad-to $(IMX_SD_IMAGE_SIZE)M

I'm pretty sure all of that custom image receipts could be re-worked and 
in case of some of them a generic ones might be use but we can deal with 
that later, when other things are resolved.

> +endef
> +TARGET_DEVICES += imx8mplus
> diff --git a/target/linux/imx/image/mkits-multiple-config.sh b/target/linux/imx/image/mkits-multiple-config.sh
> new file mode 100755
> index 0000000000..0d83f9e34d
> --- /dev/null
> +++ b/target/linux/imx/image/mkits-multiple-config.sh

[snip]

Maybe instead of introducing another copy of the same script (see the 
'layerscape' target) you could reuse existing one and make some generic 
image commands out of it?

> diff --git a/target/linux/imx/imx8/config-5.15 b/target/linux/imx/imx8/config-5.15
> new file mode 100644
> index 0000000000..2b6ab299a0
> --- /dev/null
> +++ b/target/linux/imx/imx8/config-5.15
> @@ -0,0 +1,2661 @@

[snip]

> diff --git a/target/linux/imx/imx8/target.mk b/target/linux/imx/imx8/target.mk
> new file mode 100644
> index 0000000000..f990298d80
> --- /dev/null
> +++ b/target/linux/imx/imx8/target.mk
> @@ -0,0 +1,11 @@
> +# SPDX-License-Identifier: GPL-2.0-only
> +#
> +# Copyright 2022 NXP
> +
> +ARCH:=aarch64
> +BOARDNAME:=NXP i.MX8 boards
> +KERNELNAME:=Image
> +
> +define Target/Description
> +	Build firmware images for NXP imx8 boards.
> +endef
> diff --git a/target/linux/imx/patches-5.15/0001-fix-the-compiling-error.patch b/target/linux/imx/patches-5.15/0001-fix-the-compiling-error.patch
> new file mode 100644
> index 0000000000..bd2cd68be8
> --- /dev/null
> +++ b/target/linux/imx/patches-5.15/0001-fix-the-compiling-error.patch
> @@ -0,0 +1,39 @@
> +From b671acdd69098b12ff7f567b1b6211ab4f38bf20 Mon Sep 17 00:00:00 2001
> +From: Yuantian Tang <andy.tang@nxp.com>
> +Date: Tue, 28 Jun 2022 14:26:12 +0800
> +Subject: [PATCH] fix the compiling error

Please, be more specific.

> +
> +Signed-off-by: Andy Tang <andy.tang@nxp.com>
> +---
> + arch/arm64/kvm/hyp/nvhe/gen-hyprel.c | 1 +
> + scripts/Makefile                     | 2 +-
> + 2 files changed, 2 insertions(+), 1 deletion(-)
> +
> +diff --git a/arch/arm64/kvm/hyp/nvhe/gen-hyprel.c b/arch/arm64/kvm/hyp/nvhe/gen-hyprel.c
> +index 6bc88a756cb7..99506facd30e 100644
> +--- a/arch/arm64/kvm/hyp/nvhe/gen-hyprel.c
> ++++ b/arch/arm64/kvm/hyp/nvhe/gen-hyprel.c
> +@@ -36,6 +36,7 @@
> + #include <sys/types.h>
> + #include <sys/stat.h>
> + #include <unistd.h>
> ++#include <uapi/linux/elf-em.h>
> +
> + #include <generated/autoconf.h>
> +
> +diff --git a/scripts/Makefile b/scripts/Makefile
> +index 9adb6d247818..7013da949282 100644
> +--- a/scripts/Makefile
> ++++ b/scripts/Makefile
> +@@ -21,7 +21,7 @@ HOSTCFLAGS_asn1_compiler.o = -I$(srctree)/include
> + HOSTCFLAGS_sign-file.o = $(CRYPTO_CFLAGS)
> + HOSTLDLIBS_sign-file = $(CRYPTO_LIBS)
> + HOSTCFLAGS_extract-cert.o = $(CRYPTO_CFLAGS)
> +-HOSTLDLIBS_extract-cert = $(CRYPTO_LIBS)
> ++HOSTLDLIBS_extract-cert = $(CRYPTO_LIBS) -lpthread
> +
> + ifdef CONFIG_UNWINDER_ORC
> + ifeq ($(ARCH),x86_64)
> +--
> +2.25.1
> +

[1] https://barebox.org/doc/latest/boards/imx/nxp-imx8mq-evk.html
[2] 
https://github.com/u-boot/u-boot/blob/master/doc/board/nxp/imx8mp_evk.rst
Petr Štetiar Aug. 16, 2022, 12:50 p.m. UTC | #2
Piotr Dymacz <pepe2k@gmail.com> [2022-08-16 13:16:23]:

Hi,

> > +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).bin
> > +PKG_SOURCE_URL:=https://www.nxp.com/lgfiles/NMG/MAD/YOCTO/
> > +PKG_HASH:=ef91390da6c8a6a48c8121a5dd667de8
> 
> OK, so a 'firmware-imx-8.15.bin' file, hosted somewhere on NXP servers which
> seems to be a self-extracting package with bunch of proprietary binary blobs
> and almost 700 lines license. And it asks for EULA acceptance when
> extracting:
> 
> "Welcome to NXP firmware-imx-8.15.bin
> 
> You need to read and accept the EULA before you can continue.
> 
> LA_OPT_NXP_Software_License v34 February 2022
> [...]
> "
> I don't think we can accept this (Rafał, Petr, any opinions?).

I second your conclusion. BTW IANAL, but following part in EULA possibly
forbids redistribution in binary form:

 "If you are not expressly granted the distribution license in Section 2.3"

Cheers,

Petr
Andy Tang Aug. 17, 2022, 7:36 a.m. UTC | #3
Hi Piotr,

Thanks for your valuable suggestions.

I will address most of your concern.
Some responses are inline.

> -----Original Message-----
> From: Piotr Dymacz <pepe2k@gmail.com>
> Sent: 2022年8月16日 19:16
> To: Andy Tang <andy.tang@nxp.com>
> Cc: openwrt-devel@lists.openwrt.org; Rafał Miłecki <zajec5@gmail.com>;
> Petr Štetiar <ynezz@true.cz>
> Subject: [EXT] Re: [PATCH] imx: add imx8mplus platform support
> 
> Caution: EXT Email
> 
> Hi Andy,
> 
> Sorry for late reply. Please, see my comments inline below.
> 
> Rafał, Petr, it would be great if you could give your thoughts regarding my
> concerns about the 'firmware-imx' package.
> > > +++ b/package/firmware/imx/Makefile
> > @@ -0,0 +1,47 @@
> > +# SPDX-License-Identifier: GPL-2.0-only # # Copyright 2022 NXP #
> > +
> > +include $(TOPDIR)/rules.mk
> > +
> > +PKG_NAME:=firmware-imx
> > +PKG_VERSION:=8.15
> > +PKG_RELEASE:=1
> > +
> > +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).bin
> >
> +PKG_SOURCE_URL:=https://eur01.safelinks.protection.outlook.com/?url=h
> >
> +ttps%3A%2F%2Fwww.nxp.com%2Flgfiles%2FNMG%2FMAD%2FYOCTO%2F&
> amp;data=05
> >
> +%7C01%7Candy.tang%40nxp.com%7C3b32776df9fc458bdc3308da7f78c352
> %7C686e
> >
> +a1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C637962453910142398%7C
> Unknown%7
> >
> +CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haW
> wiLCJX
> >
> +VCI6Mn0%3D%7C3000%7C%7C%7C&amp;sdata=XYCuUHEbBXHxYglYSPaox
> nQVEGD0ivXF
> > +Ci0MaZllnKk%3D&amp;reserved=0
> > +PKG_HASH:=ef91390da6c8a6a48c8121a5dd667de8
> 
> OK, so a 'firmware-imx-8.15.bin' file, hosted somewhere on NXP servers
> which seems to be a self-extracting package with bunch of proprietary binary
> blobs and almost 700 lines license. And it asks for EULA acceptance when
> extracting:
> 
> "Welcome to NXP firmware-imx-8.15.bin
> 
> You need to read and accept the EULA before you can continue.
> 
> LA_OPT_NXP_Software_License v34 February 2022 [...] "
> I don't think we can accept this (Rafał, Petr, any opinions?). Looking at other
> open source projects, e.g. Barebox requires users to manually obtain and
> extract the firmware [1]. U-Boot documentation for this board mentions only
> the DDR training and ATF firmware [2].
> 
> Are all the blobs really required by this platform? Is there any other, more
> open source friendly way to get these binary blobs?
Since the license issue, these blobs have been released together.
This is the only format to release these binaries even though not all of them are used on a specific platform.

If this is not acceptable, what's your suggestion for it? Let the user do this manually?

> > +endef
> > +TARGET_DEVICES += imx8mplus
> > diff --git a/target/linux/imx/image/mkits-multiple-config.sh
> > b/target/linux/imx/image/mkits-multiple-config.sh
> > new file mode 100755
> > index 0000000000..0d83f9e34d
> > --- /dev/null
> > +++ b/target/linux/imx/image/mkits-multiple-config.sh
> 
> [snip]
> 
> Maybe instead of introducing another copy of the same script (see the
> 'layerscape' target) you could reuse existing one and make some generic
> image commands out of it?
Could you please instruct me how I can reuse the script that belongs to other targets like this?

BR,
Andy

> 
> > diff --git a/target/linux/imx/imx8/config-5.15
> > b/target/linux/imx/imx8/config-5.15
> > new file mode 100644
> > index 0000000000..2b6ab299a0
> > --- /dev/null
> > +++ b/target/linux/imx/imx8/config-5.15
> > @@ -0,0 +1,2661 @@
> 
> [snip]
> 
> > diff --git a/target/linux/imx/imx8/target.mk
> > b/target/linux/imx/imx8/target.mk new file mode 100644 index
> > 0000000000..f990298d80
> > --- /dev/null
> > +++ b/target/linux/imx/imx8/target.mk
> > @@ -0,0 +1,11 @@
> > +# SPDX-License-Identifier: GPL-2.0-only # # Copyright 2022 NXP
> > +
> > +ARCH:=aarch64
> > +BOARDNAME:=NXP i.MX8 boards
> > +KERNELNAME:=Image
> > +
> > +define Target/Description
> > +     Build firmware images for NXP imx8 boards.
> > +endef
> > diff --git
> > a/target/linux/imx/patches-5.15/0001-fix-the-compiling-error.patch
> > b/target/linux/imx/patches-5.15/0001-fix-the-compiling-error.patch
> > new file mode 100644
> > index 0000000000..bd2cd68be8
> > --- /dev/null
> > +++ b/target/linux/imx/patches-5.15/0001-fix-the-compiling-error.patch
> > @@ -0,0 +1,39 @@
> > +From b671acdd69098b12ff7f567b1b6211ab4f38bf20 Mon Sep 17 00:00:00
> > +2001
> > +From: Yuantian Tang <andy.tang@nxp.com>
> > +Date: Tue, 28 Jun 2022 14:26:12 +0800
> > +Subject: [PATCH] fix the compiling error
> 
> Please, be more specific.
> 
> > +
> > +Signed-off-by: Andy Tang <andy.tang@nxp.com>
> > +---
> > + arch/arm64/kvm/hyp/nvhe/gen-hyprel.c | 1 +
> > + scripts/Makefile                     | 2 +-
> > + 2 files changed, 2 insertions(+), 1 deletion(-)
> > +
> > +diff --git a/arch/arm64/kvm/hyp/nvhe/gen-hyprel.c
> > +b/arch/arm64/kvm/hyp/nvhe/gen-hyprel.c
> > +index 6bc88a756cb7..99506facd30e 100644
> > +--- a/arch/arm64/kvm/hyp/nvhe/gen-hyprel.c
> > ++++ b/arch/arm64/kvm/hyp/nvhe/gen-hyprel.c
> > +@@ -36,6 +36,7 @@
> > + #include <sys/types.h>
> > + #include <sys/stat.h>
> > + #include <unistd.h>
> > ++#include <uapi/linux/elf-em.h>
> > +
> > + #include <generated/autoconf.h>
> > +
> > +diff --git a/scripts/Makefile b/scripts/Makefile index
> > +9adb6d247818..7013da949282 100644
> > +--- a/scripts/Makefile
> > ++++ b/scripts/Makefile
> > +@@ -21,7 +21,7 @@ HOSTCFLAGS_asn1_compiler.o = -I$(srctree)/include
> > +HOSTCFLAGS_sign-file.o = $(CRYPTO_CFLAGS)  HOSTLDLIBS_sign-file =
> > +$(CRYPTO_LIBS)  HOSTCFLAGS_extract-cert.o = $(CRYPTO_CFLAGS)
> > +-HOSTLDLIBS_extract-cert = $(CRYPTO_LIBS)
> > ++HOSTLDLIBS_extract-cert = $(CRYPTO_LIBS) -lpthread
> > +
> > + ifdef CONFIG_UNWINDER_ORC
> > + ifeq ($(ARCH),x86_64)
> > +--
> > +2.25.1
> > +
> 
> [1]
> https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fbareb
> ox.org%2Fdoc%2Flatest%2Fboards%2Fimx%2Fnxp-imx8mq-evk.html&amp;da
> ta=05%7C01%7Candy.tang%40nxp.com%7C3b32776df9fc458bdc3308da7f78
> c352%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C63796245391
> 0142398%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV
> 2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&amp;sdat
> a=KWtnO0mxLOUx5SgC%2B1Cha9h8ZhyUqqHP7p8vB7hLyNI%3D&amp;reser
> ved=0
> [2]
> https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.
> com%2Fu-boot%2Fu-boot%2Fblob%2Fmaster%2Fdoc%2Fboard%2Fnxp%2Fim
> x8mp_evk.rst&amp;data=05%7C01%7Candy.tang%40nxp.com%7C3b32776df
> 9fc458bdc3308da7f78c352%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%
> 7C0%7C637962453910142398%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC
> 4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000
> %7C%7C%7C&amp;sdata=AAm%2FwwuvUD%2FnVLCcIWFbYmGJljZkoc4q9K
> O8G9qIkGU%3D&amp;reserved=0
> 
> --
> Cheers,
> Piotr
Piotr Dymacz Aug. 23, 2022, 11:23 a.m. UTC | #4
Hi Andy,

On 17.08.2022 09:36, Andy Tang wrote:
> Hi Piotr,
> 
> Thanks for your valuable suggestions.
> 
> I will address most of your concern.
> Some responses are inline.
> 
>> -----Original Message-----
>> From: Piotr Dymacz <pepe2k@gmail.com>
>> Sent: 2022年8月16日 19:16
>> To: Andy Tang <andy.tang@nxp.com>
>> Cc: openwrt-devel@lists.openwrt.org; Rafał Miłecki <zajec5@gmail.com>;
>> Petr Štetiar <ynezz@true.cz>
>> Subject: [EXT] Re: [PATCH] imx: add imx8mplus platform support
>> 
>> Caution: EXT Email
>> 
>> Hi Andy,
>> 
>> Sorry for late reply. Please, see my comments inline below.
>> 
>> Rafał, Petr, it would be great if you could give your thoughts regarding my
>> concerns about the 'firmware-imx' package.
>> > > +++ b/package/firmware/imx/Makefile
>> > @@ -0,0 +1,47 @@
>> > +# SPDX-License-Identifier: GPL-2.0-only # # Copyright 2022 NXP #
>> > +
>> > +include $(TOPDIR)/rules.mk
>> > +
>> > +PKG_NAME:=firmware-imx
>> > +PKG_VERSION:=8.15
>> > +PKG_RELEASE:=1
>> > +
>> > +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).bin
>> >
>> +PKG_SOURCE_URL:=https://eur01.safelinks.protection.outlook.com/?url=h
>> >
>> +ttps%3A%2F%2Fwww.nxp.com%2Flgfiles%2FNMG%2FMAD%2FYOCTO%2F&
>> amp;data=05
>> >
>> +%7C01%7Candy.tang%40nxp.com%7C3b32776df9fc458bdc3308da7f78c352
>> %7C686e
>> >
>> +a1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C637962453910142398%7C
>> Unknown%7
>> >
>> +CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haW
>> wiLCJX
>> >
>> +VCI6Mn0%3D%7C3000%7C%7C%7C&amp;sdata=XYCuUHEbBXHxYglYSPaox
>> nQVEGD0ivXF
>> > +Ci0MaZllnKk%3D&amp;reserved=0
>> > +PKG_HASH:=ef91390da6c8a6a48c8121a5dd667de8
>> 
>> OK, so a 'firmware-imx-8.15.bin' file, hosted somewhere on NXP servers
>> which seems to be a self-extracting package with bunch of proprietary binary
>> blobs and almost 700 lines license. And it asks for EULA acceptance when
>> extracting:
>> 
>> "Welcome to NXP firmware-imx-8.15.bin
>> 
>> You need to read and accept the EULA before you can continue.
>> 
>> LA_OPT_NXP_Software_License v34 February 2022 [...] "
>> I don't think we can accept this (Rafał, Petr, any opinions?). Looking at other
>> open source projects, e.g. Barebox requires users to manually obtain and
>> extract the firmware [1]. U-Boot documentation for this board mentions only
>> the DDR training and ATF firmware [2].
>> 
>> Are all the blobs really required by this platform? Is there any other, more
>> open source friendly way to get these binary blobs?
> Since the license issue, these blobs have been released together.
> This is the only format to release these binaries even though not all of them are used on a specific platform.

As Petr already stated, the EULA forbids re-distribution of that 
firmware (maybe this topic should be discussed with some lawyer but 
that's not our job). For now I don't see any (legal) way to 
re-distribute these binaries by OpenWrt project (embedded within a 
pre-built image for the platform you are adding support for).

> If this is not acceptable, what's your suggestion for it? Let the user do this manually?

I don't see any other option and honestly I'm not exactly sure how this 
would work. Maybe you could describe in the Wiki how to built the image 
after manually obtaining and extracting firmware and at the same time 
mark the platform as broken in the main codebase so it won't get built 
automatically (no official pre-built images)? From what I can see, 
that's how other projects handle that kind of restrictive EULA and 
binary blobs... madness.

>> > +endef
>> > +TARGET_DEVICES += imx8mplus
>> > diff --git a/target/linux/imx/image/mkits-multiple-config.sh
>> > b/target/linux/imx/image/mkits-multiple-config.sh
>> > new file mode 100755
>> > index 0000000000..0d83f9e34d
>> > --- /dev/null
>> > +++ b/target/linux/imx/image/mkits-multiple-config.sh
>> 
>> [snip]
>> 
>> Maybe instead of introducing another copy of the same script (see the
>> 'layerscape' target) you could reuse existing one and make some generic
>> image commands out of it?
> Could you please instruct me how I can reuse the script that belongs to other targets like this?

Have a look for example at 'mkits-qsdk-ipq-image.sh' script [1]. It's 
used by two recipes defined in image-commands.mk [2]: 
'qsdk-ipq-factory-nand' and 'qsdk-ipq-factory-nor'. This way, we can 
make use of them within any (sub)target, like e.g. here: [3].

[1] 
https://github.com/openwrt/openwrt/blob/master/scripts/mkits-qsdk-ipq-image.sh

[2] 
https://github.com/openwrt/openwrt/blob/master/include/image-commands.mk#L455

[3] 
https://github.com/openwrt/openwrt/blob/master/target/linux/ipq40xx/image/generic.mk#L477
Andy Tang Sept. 20, 2022, 6:47 a.m. UTC | #5
Hi Piotr,

Please look at my response about your concerns below.

> -----Original Message-----
> From: Piotr Dymacz <pepe2k@gmail.com>
> Sent: 2022年8月23日 19:23
> To: Andy Tang <andy.tang@nxp.com>
> Cc: openwrt-devel@lists.openwrt.org; Rafał Miłecki <zajec5@gmail.com>;
> Petr Štetiar <ynezz@true.cz>
> Subject: Re: [EXT] Re: [PATCH] imx: add imx8mplus platform support
> 
[snip]

> >> > +
> >> > +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).bin
> >> >
> >>
> +PKG_SOURCE_URL:=https://eur01.safelinks.protection.outlook.com/?url=
> >> +h
> >> >
> >>
> +ttps%3A%2F%2Fwww.nxp.com%2Flgfiles%2FNMG%2FMAD%2FYOCTO%2F&
> >> amp;data=05
> >> >
> >>
> +%7C01%7Candy.tang%40nxp.com%7C3b32776df9fc458bdc3308da7f78c352
> >> %7C686e
> >> >
> >>
> +a1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C637962453910142398%7C
> >> Unknown%7
> >> >
> >>
> +CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haW
> >> wiLCJX
> >> >
> >>
> +VCI6Mn0%3D%7C3000%7C%7C%7C&amp;sdata=XYCuUHEbBXHxYglYSPaox
> >> nQVEGD0ivXF
> >> > +Ci0MaZllnKk%3D&amp;reserved=0
> >> > +PKG_HASH:=ef91390da6c8a6a48c8121a5dd667de8
> >>
> >> OK, so a 'firmware-imx-8.15.bin' file, hosted somewhere on NXP
> >> servers which seems to be a self-extracting package with bunch of
> >> proprietary binary blobs and almost 700 lines license. And it asks
> >> for EULA acceptance when
> >> extracting:
> >>
> >> "Welcome to NXP firmware-imx-8.15.bin
> >>
> >> You need to read and accept the EULA before you can continue.
> >>
> >> LA_OPT_NXP_Software_License v34 February 2022 [...] "
> >> I don't think we can accept this (Rafał, Petr, any opinions?).
> >> Looking at other open source projects, e.g. Barebox requires users to
> >> manually obtain and extract the firmware [1]. U-Boot documentation
> >> for this board mentions only the DDR training and ATF firmware [2].
> >>
> >> Are all the blobs really required by this platform? Is there any
> >> other, more open source friendly way to get these binary blobs?
> > Since the license issue, these blobs have been released together.
> > This is the only format to release these binaries even though not all of them
> are used on a specific platform.
> 
> As Petr already stated, the EULA forbids re-distribution of that firmware
> (maybe this topic should be discussed with some lawyer but that's not our job).
> For now I don't see any (legal) way to re-distribute these binaries by OpenWrt
> project (embedded within a pre-built image for the platform you are adding
> support for).
I have checked with our legal team. They say EULA doesn't forbid re-distribution the binaries.
Actually we already did this on Yocto project.
Please see:
1. https://git.yoctoproject.org/meta-freescale/tree/recipes-bsp/imx-sc-firmware/imx-sc-firmware_1.13.0.bb
2. https://git.yoctoproject.org/meta-freescale/tree/classes/fsl-eula-unpack.bbclass
In this project, firmware binary was downloaded and self-extracted automatically.
Customer should define a variable in local.conf file to indicate that the agreement is accepted although.
So I think it should be ok too in OpenWRT project.

> 
> > If this is not acceptable, what's your suggestion for it? Let the user do this
> manually?
> 
> I don't see any other option and honestly I'm not exactly sure how this would
> work. Maybe you could describe in the Wiki how to built the image after
> manually obtaining and extracting firmware and at the same time mark the
> platform as broken in the main codebase so it won't get built automatically
> (no official pre-built images)? From what I can see, that's how other projects
> handle that kind of restrictive EULA and binary blobs... madness.
> 
> +     $(CP) $(PKG_BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)/firmware/ddr/synopsys/* \
> +             $(STAGING_DIR_IMAGE)/$(MKIMG_DIR) endef
> +
> +$(eval $(call BuildPackage,firmware-imx))
[snip]

> > +$(eval $(call BuildPackage,firmware-imx))
> > diff --git a/package/utils/imx-mkimage/Makefile
> > b/package/utils/imx-mkimage/Makefile
> > new file mode 100644
> > index 0000000000..4ad1b18773
> > --- /dev/null
> > +++ b/package/utils/imx-mkimage/Makefile
> > @@ -0,0 +1,38 @@
> > +# SPDX-License-Identifier: GPL-2.0-only # # Copyright 2022 NXP #
> > +include $(TOPDIR)/rules.mk
> > +
> > +PKG_NAME:=imx-mkimage
> > +PKG_VERSION:=lf-5.15.5-1.0.0
> > +PKG_RELEASE:=$(AUTORELEASE)
> > +
> > +PKG_SOURCE_PROTO:=git
> >
> +PKG_SOURCE_URL:=https://eur01.safelinks.protection.outlook.com/?url=h
> >
> +ttps%3A%2F%2Fsource.codeaurora.org%2Fexternal%2Fimx%2Fimx-mkimag
> e.git
> >
> +&amp;data=05%7C01%7Candy.tang%40nxp.com%7C3b32776df9fc458bdc3
> 308da7f7
> >
> +8c352%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C637962453
> 910142398
> >
> +%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIi
> LCJBTiI6
> >
> +Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&amp;sdata=zPKKNJ9d1
> Q44ffY5ukbQ
> > +DwV9XbaJf2qsEHPS9njrdKA%3D&amp;reserved=0
> > +PKG_SOURCE_VERSION:=lf-5.15.5-1.0.0
> > +PKG_MIRROR_HASH:=fdb2086a1182b2c96e8c8dcfb795f004
> 
> Another fork? Any good reason to use this instead of tools/mkimage (we use
> version from U-Boot 2022.07 at the moment)? Is there anything missing in the
> upstream so that we can't use it?
The tools/mkimage can't meet our requirement. Basically repo imx-mkimage does following things:
1. pad the related binary to N-byte-alined.
2. combine u-boot-nodtb.bin + spl/u-boot-spl.bin + bl31.bin + ddr_binaries + imx8mp-evk.dtb
3. add specific head for specific boot mode to uboot
The item 1 and 2 can be done by shell script. Item 3 was done by .C file.
If we don't use our own repo, then at least 2 script file and 1 .C file were needed.
To keep compatibility, it is better to keep it.
Do you think so?

BR,
Andy
> >> > +endef
> >> > +TARGET_DEVICES += imx8mplus
> >> > diff --git a/target/linux/imx/image/mkits-multiple-config.sh
> >> > b/target/linux/imx/image/mkits-multiple-config.sh
> >> > new file mode 100755
> >> > index 0000000000..0d83f9e34d
> >> > --- /dev/null
> >> > +++ b/target/linux/imx/image/mkits-multiple-config.sh
> >>
> >> [snip]
> >>
> >> Maybe instead of introducing another copy of the same script (see the
> >> 'layerscape' target) you could reuse existing one and make some
> >> generic image commands out of it?
> > Could you please instruct me how I can reuse the script that belongs to
> other targets like this?
> 
> Have a look for example at 'mkits-qsdk-ipq-image.sh' script [1]. It's used by
> two recipes defined in image-commands.mk [2]:
> 'qsdk-ipq-factory-nand' and 'qsdk-ipq-factory-nor'. This way, we can make use
> of them within any (sub)target, like e.g. here: [3].
> 
> [1]
> https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.
> com%2Fopenwrt%2Fopenwrt%2Fblob%2Fmaster%2Fscripts%2Fmkits-qsdk-ip
> q-image.sh&amp;data=05%7C01%7Candy.tang%40nxp.com%7C78ef493bf7a
> e48b7c44808da84f9e6ce%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7
> C0%7C637968506098935776%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4
> wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%
> 7C%7C%7C&amp;sdata=8uJRzgA75MAs0fIomFP2rfN9p7b0bk8hqzueWIqdquE
> %3D&amp;reserved=0
> 
> [2]
> https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.
> com%2Fopenwrt%2Fopenwrt%2Fblob%2Fmaster%2Finclude%2Fimage-comm
> ands.mk%23L455&amp;data=05%7C01%7Candy.tang%40nxp.com%7C78ef49
> 3bf7ae48b7c44808da84f9e6ce%7C686ea1d3bc2b4c6fa92cd99c5c301635%7
> C0%7C0%7C637968506098935776%7CUnknown%7CTWFpbGZsb3d8eyJWIjoi
> MC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C30
> 00%7C%7C%7C&amp;sdata=2KHqDtA0pS6i6548BhMrLEZxGAaMY0vWFTXh5
> mPhm5M%3D&amp;reserved=0
> 
> [3]
> https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.
> com%2Fopenwrt%2Fopenwrt%2Fblob%2Fmaster%2Ftarget%2Flinux%2Fipq4
> 0xx%2Fimage%2Fgeneric.mk%23L477&amp;data=05%7C01%7Candy.tang%4
> 0nxp.com%7C78ef493bf7ae48b7c44808da84f9e6ce%7C686ea1d3bc2b4c6fa
> 92cd99c5c301635%7C0%7C0%7C637968506098935776%7CUnknown%7CT
> WFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLC
> JXVCI6Mn0%3D%7C3000%7C%7C%7C&amp;sdata=nqiHfllL8Ejom%2Fi9xTrRR
> r1VSYHAU%2FUEEcuSKmEtqo0%3D&amp;reserved=0
> 
> --
> Cheers,
> Piotr
> 
> >
> > BR,
> > Andy
> >
> >>
> >> > diff --git a/target/linux/imx/imx8/config-5.15
> >> > b/target/linux/imx/imx8/config-5.15
> >> > new file mode 100644
> >> > index 0000000000..2b6ab299a0
> >> > --- /dev/null
> >> > +++ b/target/linux/imx/imx8/config-5.15
> >> > @@ -0,0 +1,2661 @@
> >>
> >> [snip]
> >>
> >> > diff --git a/target/linux/imx/imx8/target.mk
> >> > b/target/linux/imx/imx8/target.mk new file mode 100644 index
> >> > 0000000000..f990298d80
> >> > --- /dev/null
> >> > +++ b/target/linux/imx/imx8/target.mk
> >> > @@ -0,0 +1,11 @@
> >> > +# SPDX-License-Identifier: GPL-2.0-only # # Copyright 2022 NXP
> >> > +
> >> > +ARCH:=aarch64
> >> > +BOARDNAME:=NXP i.MX8 boards
> >> > +KERNELNAME:=Image
> >> > +
> >> > +define Target/Description
> >> > +     Build firmware images for NXP imx8 boards.
> >> > +endef
> >> > diff --git
> >> > a/target/linux/imx/patches-5.15/0001-fix-the-compiling-error.patch
> >> > b/target/linux/imx/patches-5.15/0001-fix-the-compiling-error.patch
> >> > new file mode 100644
> >> > index 0000000000..bd2cd68be8
> >> > --- /dev/null
> >> > +++ b/target/linux/imx/patches-5.15/0001-fix-the-compiling-error.pa
> >> > +++ tch
> >> > @@ -0,0 +1,39 @@
> >> > +From b671acdd69098b12ff7f567b1b6211ab4f38bf20 Mon Sep 17
> 00:00:00
> >> > +2001
> >> > +From: Yuantian Tang <andy.tang@nxp.com>
> >> > +Date: Tue, 28 Jun 2022 14:26:12 +0800
> >> > +Subject: [PATCH] fix the compiling error
> >>
> >> Please, be more specific.
> >>
> >> > +
> >> > +Signed-off-by: Andy Tang <andy.tang@nxp.com>
> >> > +---
> >> > + arch/arm64/kvm/hyp/nvhe/gen-hyprel.c | 1 +
> >> > + scripts/Makefile                     | 2 +-
> >> > + 2 files changed, 2 insertions(+), 1 deletion(-)
> >> > +
> >> > +diff --git a/arch/arm64/kvm/hyp/nvhe/gen-hyprel.c
> >> > +b/arch/arm64/kvm/hyp/nvhe/gen-hyprel.c
> >> > +index 6bc88a756cb7..99506facd30e 100644
> >> > +--- a/arch/arm64/kvm/hyp/nvhe/gen-hyprel.c
> >> > ++++ b/arch/arm64/kvm/hyp/nvhe/gen-hyprel.c
> >> > +@@ -36,6 +36,7 @@
> >> > + #include <sys/types.h>
> >> > + #include <sys/stat.h>
> >> > + #include <unistd.h>
> >> > ++#include <uapi/linux/elf-em.h>
> >> > +
> >> > + #include <generated/autoconf.h>
> >> > +
> >> > +diff --git a/scripts/Makefile b/scripts/Makefile index
> >> > +9adb6d247818..7013da949282 100644
> >> > +--- a/scripts/Makefile
> >> > ++++ b/scripts/Makefile
> >> > +@@ -21,7 +21,7 @@ HOSTCFLAGS_asn1_compiler.o =
> >> > +-I$(srctree)/include HOSTCFLAGS_sign-file.o = $(CRYPTO_CFLAGS)
> >> > +HOSTLDLIBS_sign-file =
> >> > +$(CRYPTO_LIBS)  HOSTCFLAGS_extract-cert.o = $(CRYPTO_CFLAGS)
> >> > +-HOSTLDLIBS_extract-cert = $(CRYPTO_LIBS)
> >> > ++HOSTLDLIBS_extract-cert = $(CRYPTO_LIBS) -lpthread
> >> > +
> >> > + ifdef CONFIG_UNWINDER_ORC
> >> > + ifeq ($(ARCH),x86_64)
> >> > +--
> >> > +2.25.1
> >> > +
> >>
> >> [1]
> >> https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fbar
> >> eb
> ox.org%2Fdoc%2Flatest%2Fboards%2Fimx%2Fnxp-imx8mq-evk.html&amp;d
> a
> >>
> ta=05%7C01%7Candy.tang%40nxp.com%7C3b32776df9fc458bdc3308da7f78
> >>
> c352%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C63796245391
> >>
> 0142398%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV
> >>
> 2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&amp;sdat
> >>
> a=KWtnO0mxLOUx5SgC%2B1Cha9h8ZhyUqqHP7p8vB7hLyNI%3D&amp;reser
> >> ved=0
> >> [2]
> >>
> https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.
> >>
> com%2Fu-boot%2Fu-boot%2Fblob%2Fmaster%2Fdoc%2Fboard%2Fnxp%2Fim
> >>
> x8mp_evk.rst&amp;data=05%7C01%7Candy.tang%40nxp.com%7C3b32776df
> >>
> 9fc458bdc3308da7f78c352%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%
> >>
> 7C0%7C637962453910142398%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC
> >>
> 4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000
> >> %7C%7C%7C&amp;sdata=AAm%2FwwuvUD%2FnVLCcIWFbYmGJljZkoc4q
> 9K
> >> O8G9qIkGU%3D&amp;reserved=0
> >>
> >> --
> >> Cheers,
> >> Piotr
Andy Tang Oct. 11, 2022, 3:20 a.m. UTC | #6
Hi Piotr,

Any comments?

BR,
Andy

> -----Original Message-----
> From: Andy Tang
> Sent: 2022年9月20日 14:48
> To: Piotr Dymacz <pepe2k@gmail.com>
> Cc: openwrt-devel@lists.openwrt.org; Rafał Miłecki <zajec5@gmail.com>;
> Petr Štetiar <ynezz@true.cz>
> Subject: RE: [EXT] Re: [PATCH] imx: add imx8mplus platform support
> 
> Hi Piotr,
> 
> Please look at my response about your concerns below.
> 
> > -----Original Message-----
> > From: Piotr Dymacz <pepe2k@gmail.com>
> > Sent: 2022年8月23日 19:23
> > To: Andy Tang <andy.tang@nxp.com>
> > Cc: openwrt-devel@lists.openwrt.org; Rafał Miłecki
> <zajec5@gmail.com>;
> > Petr Štetiar <ynezz@true.cz>
> > Subject: Re: [EXT] Re: [PATCH] imx: add imx8mplus platform support
> >
> [snip]
> 
> > >> > +
> > >> > +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).bin
> > >> >
> > >>
> > +PKG_SOURCE_URL:=https://eur01.safelinks.protection.outlook.com/?url=
> > >> +h
> > >> >
> > >>
> >
> +ttps%3A%2F%2Fwww.nxp.com%2Flgfiles%2FNMG%2FMAD%2FYOCTO%2F&
> > >> amp;data=05
> > >> >
> > >>
> >
> +%7C01%7Candy.tang%40nxp.com%7C3b32776df9fc458bdc3308da7f78c352
> > >> %7C686e
> > >> >
> > >>
> >
> +a1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C637962453910142398%7C
> > >> Unknown%7
> > >> >
> > >>
> >
> +CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haW
> > >> wiLCJX
> > >> >
> > >>
> >
> +VCI6Mn0%3D%7C3000%7C%7C%7C&amp;sdata=XYCuUHEbBXHxYglYSPaox
> > >> nQVEGD0ivXF
> > >> > +Ci0MaZllnKk%3D&amp;reserved=0
> > >> > +PKG_HASH:=ef91390da6c8a6a48c8121a5dd667de8
> > >>
> > >> OK, so a 'firmware-imx-8.15.bin' file, hosted somewhere on NXP
> > >> servers which seems to be a self-extracting package with bunch of
> > >> proprietary binary blobs and almost 700 lines license. And it asks
> > >> for EULA acceptance when
> > >> extracting:
> > >>
> > >> "Welcome to NXP firmware-imx-8.15.bin
> > >>
> > >> You need to read and accept the EULA before you can continue.
> > >>
> > >> LA_OPT_NXP_Software_License v34 February 2022 [...] "
> > >> I don't think we can accept this (Rafał, Petr, any opinions?).
> > >> Looking at other open source projects, e.g. Barebox requires users
> > >> to manually obtain and extract the firmware [1]. U-Boot
> > >> documentation for this board mentions only the DDR training and ATF
> firmware [2].
> > >>
> > >> Are all the blobs really required by this platform? Is there any
> > >> other, more open source friendly way to get these binary blobs?
> > > Since the license issue, these blobs have been released together.
> > > This is the only format to release these binaries even though not
> > > all of them
> > are used on a specific platform.
> >
> > As Petr already stated, the EULA forbids re-distribution of that
> > firmware (maybe this topic should be discussed with some lawyer but that's
> not our job).
> > For now I don't see any (legal) way to re-distribute these binaries by
> > OpenWrt project (embedded within a pre-built image for the platform
> > you are adding support for).
> I have checked with our legal team. They say EULA doesn't forbid
> re-distribution the binaries.
> Actually we already did this on Yocto project.
> Please see:
> 1.
> https://git.yoctoproject.org/meta-freescale/tree/recipes-bsp/imx-sc-firmwar
> e/imx-sc-firmware_1.13.0.bb
> 2.
> https://git.yoctoproject.org/meta-freescale/tree/classes/fsl-eula-unpack.bbc
> lass
> In this project, firmware binary was downloaded and self-extracted
> automatically.
> Customer should define a variable in local.conf file to indicate that the
> agreement is accepted although.
> So I think it should be ok too in OpenWRT project.
> 
> >
> > > If this is not acceptable, what's your suggestion for it? Let the
> > > user do this
> > manually?
> >
> > I don't see any other option and honestly I'm not exactly sure how
> > this would work. Maybe you could describe in the Wiki how to built the
> > image after manually obtaining and extracting firmware and at the same
> > time mark the platform as broken in the main codebase so it won't get
> > built automatically (no official pre-built images)? From what I can
> > see, that's how other projects handle that kind of restrictive EULA and
> binary blobs... madness.
> >
> > +     $(CP)
> $(PKG_BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)/firmware/ddr/synopsys/
> * \
> > +             $(STAGING_DIR_IMAGE)/$(MKIMG_DIR) endef
> > +
> > +$(eval $(call BuildPackage,firmware-imx))
> [snip]
> 
> > > +$(eval $(call BuildPackage,firmware-imx))
> > > diff --git a/package/utils/imx-mkimage/Makefile
> > > b/package/utils/imx-mkimage/Makefile
> > > new file mode 100644
> > > index 0000000000..4ad1b18773
> > > --- /dev/null
> > > +++ b/package/utils/imx-mkimage/Makefile
> > > @@ -0,0 +1,38 @@
> > > +# SPDX-License-Identifier: GPL-2.0-only # # Copyright 2022 NXP #
> > > +include $(TOPDIR)/rules.mk
> > > +
> > > +PKG_NAME:=imx-mkimage
> > > +PKG_VERSION:=lf-5.15.5-1.0.0
> > > +PKG_RELEASE:=$(AUTORELEASE)
> > > +
> > > +PKG_SOURCE_PROTO:=git
> > >
> >
> +PKG_SOURCE_URL:=https://eur01.safelinks.protection.outlook.com/?url=h
> > >
> >
> +ttps%3A%2F%2Fsource.codeaurora.org%2Fexternal%2Fimx%2Fimx-mkimag
> > e.git
> > >
> >
> +&amp;data=05%7C01%7Candy.tang%40nxp.com%7C3b32776df9fc458bdc3
> > 308da7f7
> > >
> >
> +8c352%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C637962453
> > 910142398
> > >
> >
> +%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIi
> > LCJBTiI6
> > >
> >
> +Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&amp;sdata=zPKKNJ9d1
> > Q44ffY5ukbQ
> > > +DwV9XbaJf2qsEHPS9njrdKA%3D&amp;reserved=0
> > > +PKG_SOURCE_VERSION:=lf-5.15.5-1.0.0
> > > +PKG_MIRROR_HASH:=fdb2086a1182b2c96e8c8dcfb795f004
> >
> > Another fork? Any good reason to use this instead of tools/mkimage (we
> > use version from U-Boot 2022.07 at the moment)? Is there anything
> > missing in the upstream so that we can't use it?
> The tools/mkimage can't meet our requirement. Basically repo imx-mkimage
> does following things:
> 1. pad the related binary to N-byte-alined.
> 2. combine u-boot-nodtb.bin + spl/u-boot-spl.bin + bl31.bin + ddr_binaries +
> imx8mp-evk.dtb 3. add specific head for specific boot mode to uboot The
> item 1 and 2 can be done by shell script. Item 3 was done by .C file.
> If we don't use our own repo, then at least 2 script file and 1 .C file were
> needed.
> To keep compatibility, it is better to keep it.
> Do you think so?
> 
> BR,
> Andy
> > >> > +endef
> > >> > +TARGET_DEVICES += imx8mplus
> > >> > diff --git a/target/linux/imx/image/mkits-multiple-config.sh
> > >> > b/target/linux/imx/image/mkits-multiple-config.sh
> > >> > new file mode 100755
> > >> > index 0000000000..0d83f9e34d
> > >> > --- /dev/null
> > >> > +++ b/target/linux/imx/image/mkits-multiple-config.sh
> > >>
> > >> [snip]
> > >>
> > >> Maybe instead of introducing another copy of the same script (see
> > >> the 'layerscape' target) you could reuse existing one and make some
> > >> generic image commands out of it?
> > > Could you please instruct me how I can reuse the script that belongs
> > > to
> > other targets like this?
> >
> > Have a look for example at 'mkits-qsdk-ipq-image.sh' script [1]. It's
> > used by two recipes defined in image-commands.mk [2]:
> > 'qsdk-ipq-factory-nand' and 'qsdk-ipq-factory-nor'. This way, we can
> > make use of them within any (sub)target, like e.g. here: [3].
> >
> > [1]
> >
> https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.
> >
> com%2Fopenwrt%2Fopenwrt%2Fblob%2Fmaster%2Fscripts%2Fmkits-qsdk-ip
> >
> q-image.sh&amp;data=05%7C01%7Candy.tang%40nxp.com%7C78ef493bf7a
> >
> e48b7c44808da84f9e6ce%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7
> >
> C0%7C637968506098935776%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4
> >
> wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%
> >
> 7C%7C%7C&amp;sdata=8uJRzgA75MAs0fIomFP2rfN9p7b0bk8hqzueWIqdquE
> > %3D&amp;reserved=0
> >
> > [2]
> >
> https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.
> >
> com%2Fopenwrt%2Fopenwrt%2Fblob%2Fmaster%2Finclude%2Fimage-comm
> >
> ands.mk%23L455&amp;data=05%7C01%7Candy.tang%40nxp.com%7C78ef49
> >
> 3bf7ae48b7c44808da84f9e6ce%7C686ea1d3bc2b4c6fa92cd99c5c301635%7
> >
> C0%7C0%7C637968506098935776%7CUnknown%7CTWFpbGZsb3d8eyJWIjoi
> >
> MC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C30
> >
> 00%7C%7C%7C&amp;sdata=2KHqDtA0pS6i6548BhMrLEZxGAaMY0vWFTXh5
> > mPhm5M%3D&amp;reserved=0
> >
> > [3]
> >
> https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.
> >
> com%2Fopenwrt%2Fopenwrt%2Fblob%2Fmaster%2Ftarget%2Flinux%2Fipq4
> >
> 0xx%2Fimage%2Fgeneric.mk%23L477&amp;data=05%7C01%7Candy.tang%4
> >
> 0nxp.com%7C78ef493bf7ae48b7c44808da84f9e6ce%7C686ea1d3bc2b4c6fa
> >
> 92cd99c5c301635%7C0%7C0%7C637968506098935776%7CUnknown%7CT
> >
> WFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLC
> >
> JXVCI6Mn0%3D%7C3000%7C%7C%7C&amp;sdata=nqiHfllL8Ejom%2Fi9xTrRR
> > r1VSYHAU%2FUEEcuSKmEtqo0%3D&amp;reserved=0
> >
> > --
> > Cheers,
> > Piotr
> >
> > >
> > > BR,
> > > Andy
> > >
> > >>
> > >> > diff --git a/target/linux/imx/imx8/config-5.15
> > >> > b/target/linux/imx/imx8/config-5.15
> > >> > new file mode 100644
> > >> > index 0000000000..2b6ab299a0
> > >> > --- /dev/null
> > >> > +++ b/target/linux/imx/imx8/config-5.15
> > >> > @@ -0,0 +1,2661 @@
> > >>
> > >> [snip]
> > >>
> > >> > diff --git a/target/linux/imx/imx8/target.mk
> > >> > b/target/linux/imx/imx8/target.mk new file mode 100644 index
> > >> > 0000000000..f990298d80
> > >> > --- /dev/null
> > >> > +++ b/target/linux/imx/imx8/target.mk
> > >> > @@ -0,0 +1,11 @@
> > >> > +# SPDX-License-Identifier: GPL-2.0-only # # Copyright 2022 NXP
> > >> > +
> > >> > +ARCH:=aarch64
> > >> > +BOARDNAME:=NXP i.MX8 boards
> > >> > +KERNELNAME:=Image
> > >> > +
> > >> > +define Target/Description
> > >> > +     Build firmware images for NXP imx8 boards.
> > >> > +endef
> > >> > diff --git
> > >> > a/target/linux/imx/patches-5.15/0001-fix-the-compiling-error.patc
> > >> > h
> > >> > b/target/linux/imx/patches-5.15/0001-fix-the-compiling-error.patc
> > >> > h
> > >> > new file mode 100644
> > >> > index 0000000000..bd2cd68be8
> > >> > --- /dev/null
> > >> > +++ b/target/linux/imx/patches-5.15/0001-fix-the-compiling-error.
> > >> > +++ pa
> > >> > +++ tch
> > >> > @@ -0,0 +1,39 @@
> > >> > +From b671acdd69098b12ff7f567b1b6211ab4f38bf20 Mon Sep 17
> > 00:00:00
> > >> > +2001
> > >> > +From: Yuantian Tang <andy.tang@nxp.com>
> > >> > +Date: Tue, 28 Jun 2022 14:26:12 +0800
> > >> > +Subject: [PATCH] fix the compiling error
> > >>
> > >> Please, be more specific.
> > >>
> > >> > +
> > >> > +Signed-off-by: Andy Tang <andy.tang@nxp.com>
> > >> > +---
> > >> > + arch/arm64/kvm/hyp/nvhe/gen-hyprel.c | 1 +
> > >> > + scripts/Makefile                     | 2 +-
> > >> > + 2 files changed, 2 insertions(+), 1 deletion(-)
> > >> > +
> > >> > +diff --git a/arch/arm64/kvm/hyp/nvhe/gen-hyprel.c
> > >> > +b/arch/arm64/kvm/hyp/nvhe/gen-hyprel.c
> > >> > +index 6bc88a756cb7..99506facd30e 100644
> > >> > +--- a/arch/arm64/kvm/hyp/nvhe/gen-hyprel.c
> > >> > ++++ b/arch/arm64/kvm/hyp/nvhe/gen-hyprel.c
> > >> > +@@ -36,6 +36,7 @@
> > >> > + #include <sys/types.h>
> > >> > + #include <sys/stat.h>
> > >> > + #include <unistd.h>
> > >> > ++#include <uapi/linux/elf-em.h>
> > >> > +
> > >> > + #include <generated/autoconf.h>
> > >> > +
> > >> > +diff --git a/scripts/Makefile b/scripts/Makefile index
> > >> > +9adb6d247818..7013da949282 100644
> > >> > +--- a/scripts/Makefile
> > >> > ++++ b/scripts/Makefile
> > >> > +@@ -21,7 +21,7 @@ HOSTCFLAGS_asn1_compiler.o =
> > >> > +-I$(srctree)/include HOSTCFLAGS_sign-file.o = $(CRYPTO_CFLAGS)
> > >> > +HOSTLDLIBS_sign-file =
> > >> > +$(CRYPTO_LIBS)  HOSTCFLAGS_extract-cert.o = $(CRYPTO_CFLAGS)
> > >> > +-HOSTLDLIBS_extract-cert = $(CRYPTO_LIBS)
> > >> > ++HOSTLDLIBS_extract-cert = $(CRYPTO_LIBS) -lpthread
> > >> > +
> > >> > + ifdef CONFIG_UNWINDER_ORC
> > >> > + ifeq ($(ARCH),x86_64)
> > >> > +--
> > >> > +2.25.1
> > >> > +
> > >>
> > >> [1]
> > >> https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fb
> > >> ar
> > >> eb
> >
> ox.org%2Fdoc%2Flatest%2Fboards%2Fimx%2Fnxp-imx8mq-evk.html&amp;d
> > a
> > >>
> >
> ta=05%7C01%7Candy.tang%40nxp.com%7C3b32776df9fc458bdc3308da7f78
> > >>
> >
> c352%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C63796245391
> > >>
> >
> 0142398%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV
> > >>
> >
> 2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&amp;sdat
> > >>
> >
> a=KWtnO0mxLOUx5SgC%2B1Cha9h8ZhyUqqHP7p8vB7hLyNI%3D&amp;reser
> > >> ved=0
> > >> [2]
> > >>
> >
> https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.
> > >>
> >
> com%2Fu-boot%2Fu-boot%2Fblob%2Fmaster%2Fdoc%2Fboard%2Fnxp%2Fim
> > >>
> >
> x8mp_evk.rst&amp;data=05%7C01%7Candy.tang%40nxp.com%7C3b32776df
> > >>
> >
> 9fc458bdc3308da7f78c352%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%
> > >>
> >
> 7C0%7C637962453910142398%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC
> > >>
> >
> 4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000
> > >> %7C%7C%7C&amp;sdata=AAm%2FwwuvUD%2FnVLCcIWFbYmGJljZkoc4
> q
> > 9K
> > >> O8G9qIkGU%3D&amp;reserved=0
> > >>
> > >> --
> > >> Cheers,
> > >> Piotr
Piotr Dymacz Oct. 13, 2022, 8:21 a.m. UTC | #7
Hi Andy,

On 20.09.2022 08:47, Andy Tang wrote:
> Hi Piotr,
> 
> Please look at my response about your concerns below.

See my reply below.

>> -----Original Message-----
>> From: Piotr Dymacz <pepe2k@gmail.com>
>> Sent: 2022年8月23日 19:23
>> To: Andy Tang <andy.tang@nxp.com>
>> Cc: openwrt-devel@lists.openwrt.org; Rafał Miłecki <zajec5@gmail.com>;
>> Petr Štetiar <ynezz@true.cz>
>> Subject: Re: [EXT] Re: [PATCH] imx: add imx8mplus platform support
>> 
> [snip]
> 
>> >> > +
>> >> > +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).bin
>> >> >
>> >>
>> +PKG_SOURCE_URL:=https://eur01.safelinks.protection.outlook.com/?url=
>> >> +h
>> >> >
>> >>
>> +ttps%3A%2F%2Fwww.nxp.com%2Flgfiles%2FNMG%2FMAD%2FYOCTO%2F&
>> >> amp;data=05
>> >> >
>> >>
>> +%7C01%7Candy.tang%40nxp.com%7C3b32776df9fc458bdc3308da7f78c352
>> >> %7C686e
>> >> >
>> >>
>> +a1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C637962453910142398%7C
>> >> Unknown%7
>> >> >
>> >>
>> +CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haW
>> >> wiLCJX
>> >> >
>> >>
>> +VCI6Mn0%3D%7C3000%7C%7C%7C&amp;sdata=XYCuUHEbBXHxYglYSPaox
>> >> nQVEGD0ivXF
>> >> > +Ci0MaZllnKk%3D&amp;reserved=0
>> >> > +PKG_HASH:=ef91390da6c8a6a48c8121a5dd667de8
>> >>
>> >> OK, so a 'firmware-imx-8.15.bin' file, hosted somewhere on NXP
>> >> servers which seems to be a self-extracting package with bunch of
>> >> proprietary binary blobs and almost 700 lines license. And it asks
>> >> for EULA acceptance when
>> >> extracting:
>> >>
>> >> "Welcome to NXP firmware-imx-8.15.bin
>> >>
>> >> You need to read and accept the EULA before you can continue.
>> >>
>> >> LA_OPT_NXP_Software_License v34 February 2022 [...] "
>> >> I don't think we can accept this (Rafał, Petr, any opinions?).
>> >> Looking at other open source projects, e.g. Barebox requires users to
>> >> manually obtain and extract the firmware [1]. U-Boot documentation
>> >> for this board mentions only the DDR training and ATF firmware [2].
>> >>
>> >> Are all the blobs really required by this platform? Is there any
>> >> other, more open source friendly way to get these binary blobs?
>> > Since the license issue, these blobs have been released together.
>> > This is the only format to release these binaries even though not all of them
>> are used on a specific platform.
>> 
>> As Petr already stated, the EULA forbids re-distribution of that firmware
>> (maybe this topic should be discussed with some lawyer but that's not our job).
>> For now I don't see any (legal) way to re-distribute these binaries by OpenWrt
>> project (embedded within a pre-built image for the platform you are adding
>> support for).
> I have checked with our legal team. They say EULA doesn't forbid re-distribution the binaries.

Could you then please ask your legal team to distribute those binaries 
under different EULA and in different form, without the statements we 
pointed out before?

I'm sorry but your assurances here, at least for me, isn't enough.

> Actually we already did this on Yocto project.
> Please see:
> 1. https://git.yoctoproject.org/meta-freescale/tree/recipes-bsp/imx-sc-firmware/imx-sc-firmware_1.13.0.bb
> 2. https://git.yoctoproject.org/meta-freescale/tree/classes/fsl-eula-unpack.bbclass

See here: 
https://git.yoctoproject.org/meta-freescale/tree/classes/fsl-eula-unpack.bbclass#n113

> In this project, firmware binary was downloaded and self-extracted automatically.

With assumption that the end customer/user has read EULA and accepted it 
(manually or automatically). And the whole process of downloading, 
accepting the license and extracting binaries is done on the end user 
machine.

Based on my experience, the Yocto project doesn't host those proprietary 
binaries and doesn't share ready to use firmware images with them 
(please, correct me if I'm wrong here). Yocto is more like a platform 
for building firmware _yourself_, not a ready-to-use Linux distribution 
you could just download and install on the hardware. OpenWrt _is_ a 
Linux distribution.

> Customer should define a variable in local.conf file to indicate that the agreement is accepted although.
> So I think it should be ok too in OpenWRT project.

Sorry but for me this is still a no-go for OpenWrt.

As I wrote before, we could add a "generic" support for this platform, 
mark it as "broken" (this would result with no prebuilt images available 
for download from OpenWrt servers), with some kind of a note for users, 
with instructions (in Wiki?) how to download proprietary binaries, 
accept the license and then _manually_ build OpenWrt for the platform.
diff mbox series

Patch

diff --git a/package/boot/atf-imx/Makefile b/package/boot/atf-imx/Makefile
new file mode 100644
index 0000000000..e76393d1e9
--- /dev/null
+++ b/package/boot/atf-imx/Makefile
@@ -0,0 +1,51 @@ 
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# Copyright 2022 NXP
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=atf-imx
+PKG_VERSION:=lf-5.15.5-1.0.0
+PKG_RELEASE:=$(AUTORELEASE)
+
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE_URL:=https://source.codeaurora.org/external/imx/imx-atf
+PKG_SOURCE_VERSION:=lf-5.15.5-1.0.0
+PKG_MIRROR_HASH:=0ed19fc34a11824cecc874ce09f4031b
+PKG_FLAGS:=nonshared
+
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/host-build.mk
+
+HOST_CFLAGS += -Wall -Werror -pedantic -std=c99
+
+define Host/Compile
+endef
+
+define Host/Install
+endef
+
+define Package/atf-imx8mp
+  SECTION:=boot
+  CATEGORY:=Boot Loaders
+  TITLE:=NXP i.MX8Mplus SD Boot Trusted Firmware
+  PLAT:=imx8mp
+  MKIMG_DIR:=`find $(STAGING_DIR_IMAGE) -name imx-mkimage*  | xargs basename`/iMX8M
+  BUILD_TARGET:=imx
+  BUILD_SUBTARGET:=imx8
+  DEPENDS:=@TARGET_imx_imx8
+endef
+
+define Build/Compile
+	$(MAKE) -C $(PKG_BUILD_DIR) CROSS_COMPILE=$(TARGET_CROSS) \
+		PLAT=$(PLAT) bl31
+endef
+
+define Build/InstallDev
+	$(INSTALL_DIR) $(STAGING_DIR_IMAGE)
+	$(CP) $(PKG_BUILD_DIR)/build/$(PLAT)/release/bl31.bin \
+		$(STAGING_DIR_IMAGE)/$(MKIMG_DIR)
+endef
+
+$(eval $(call BuildPackage,atf-imx8mp))
diff --git a/package/boot/uboot-imx/Makefile b/package/boot/uboot-imx/Makefile
index 305d127557..f323f92dce 100644
--- a/package/boot/uboot-imx/Makefile
+++ b/package/boot/uboot-imx/Makefile
@@ -7,10 +7,14 @@ 
 
 include $(TOPDIR)/rules.mk
 
-PKG_VERSION:=2022.01
+PKG_NAME:=uboot-imx
+PKG_VERSION:=lf-5.15.5-1.0.0
 PKG_RELEASE:=$(AUTORELEASE)
 
-PKG_HASH:=81b4543227db228c03f8a1bf5ddbc813b0bb8f6555ce46064ef721a6fc680413
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE_URL:=https://source.codeaurora.org/external/imx/uboot-imx
+PKG_SOURCE_VERSION:=lf-5.15.5-1.0.0
+PKG_MIRROR_HASH:=fdb2086a1182b2c96e8c8dcfb795f004
 
 include $(INCLUDE_DIR)/u-boot.mk
 include $(INCLUDE_DIR)/package.mk
@@ -26,6 +30,7 @@  define U-Boot/apalis_imx6
   UBOOT_MAKE_FLAGS+=SPL u-boot.img u-boot-with-spl.imx
   BUILD_SUBTARGET:=cortexa9
   BUILD_DEVICES:=toradex_apalis
+  UBOOT_MAKE_FLAGS += u-boot.imx
 endef
 
 define U-Boot/mx6cuboxi
@@ -34,26 +39,59 @@  define U-Boot/mx6cuboxi
   UBOOT_MAKE_FLAGS+=SPL u-boot-dtb.img
   BUILD_SUBTARGET:=cortexa9
   BUILD_DEVICES:=solidrun_cubox-i
+  UBOOT_MAKE_FLAGS += u-boot.imx
 endef
 
 define U-Boot/wandboard
   NAME:=Wandboard Dual Lite/Quad/Solo
   BUILD_SUBTARGET:=cortexa9
   BUILD_DEVICES:=wandboard_dual
+  UBOOT_MAKE_FLAGS += u-boot.imx
+endef
+
+define U-Boot/imx8mp
+  NAME:=imx8mplus lpddr4 board
+  BUILD_TARGET:=imx
+  BUILD_SUBTARGET:=imx8
+  UBOOT_CONFIG:=imx8mp_evk
+  ENV_NAME:=imx8mp-sdboot
+  MKIMG_DIR:=`find $(STAGING_DIR_IMAGE) -name imx-mkimage*  | xargs basename`/iMX8M
+  DTB_NAME:=imx8mp-evk.dtb
+  DEPENDS:=+imx-mkimage
+  ENV_SIZE:=0x4000
 endef
 
 UBOOT_TARGETS := \
 	apalis_imx6 \
 	mx6cuboxi \
-	wandboard
-
-UBOOT_MAKE_FLAGS += u-boot.imx
+	wandboard \
+	imx8mp
 
+ifeq ($(SUBTARGET),imx8)
+define Build/InstallDev
+	$(INSTALL_DIR) $(STAGING_DIR_IMAGE)
+	$(CP) $(PKG_BUILD_DIR)/u-boot-nodtb.bin \
+		$(STAGING_DIR_IMAGE)/$(MKIMG_DIR)
+	$(CP) $(PKG_BUILD_DIR)/spl/u-boot-spl.bin \
+		$(STAGING_DIR_IMAGE)/$(MKIMG_DIR)
+	$(CP) $(PKG_BUILD_DIR)/arch/arm/dts/$(DTB_NAME) \
+		$(STAGING_DIR_IMAGE)/$(MKIMG_DIR)
+	$(CP) $(PKG_BUILD_DIR)/tools/mkimage \
+		$(STAGING_DIR_IMAGE)/$(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)
 	$(foreach img,$(UBOOT_IMAGE), \
 		$(CP) $(PKG_BUILD_DIR)/$(img) $(STAGING_DIR_IMAGE)/$(BUILD_VARIANT)-$(img); \
 	)
 endef
+endif
+
+define Package/u-boot/install/default
+endef
 
 $(eval $(call BuildPackage/U-Boot))
diff --git a/package/boot/uboot-imx/files/imx8mp-sdboot-uEnv.txt b/package/boot/uboot-imx/files/imx8mp-sdboot-uEnv.txt
new file mode 100644
index 0000000000..75dd0d0efd
--- /dev/null
+++ b/package/boot/uboot-imx/files/imx8mp-sdboot-uEnv.txt
@@ -0,0 +1,12 @@ 
+fdt_addr=0x43000000
+loadaddr=0x40480000
+fdt_high=0x8fffffff
+kernel_img=imx8mplus-kernel.bin
+fdt_img=imx8mp-evk.dtb
+initrd_high=0xffffffffffffffff
+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=ttymxc1,115200
+bootcmd=echo starting openwrt ...;run sd_boot
+bootdelay=3
diff --git a/package/firmware/imx/Makefile b/package/firmware/imx/Makefile
new file mode 100644
index 0000000000..880a882aa2
--- /dev/null
+++ b/package/firmware/imx/Makefile
@@ -0,0 +1,47 @@ 
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# Copyright 2022 NXP
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=firmware-imx
+PKG_VERSION:=8.15
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).bin
+PKG_SOURCE_URL:=https://www.nxp.com/lgfiles/NMG/MAD/YOCTO/
+PKG_HASH:=ef91390da6c8a6a48c8121a5dd667de8
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/firmware-imx
+  SECTION:=firmware
+  CATEGORY:=Firmware
+  TITLE:=NXP firmware for imx soc
+  MKIMG_DIR:=`find $(STAGING_DIR_IMAGE) -name imx-mkimage*  | xargs basename`/iMX8M
+  BUILD_TARGET:=imx
+  BUILD_SUBTARGET:=imx8
+  DEPENDS:=+imx-mkimage
+endef
+
+define Package/firmware-imx/install
+endef
+
+define Build/Compile
+endef
+
+define Build/Install
+endef
+
+UNPACK_CMD:=
+define Build/InstallDev
+	$(PKG_UNPACK)
+	$(CP) $(DL_DIR)/$(PKG_SOURCE) $(PKG_BUILD_DIR)
+	chmod a+x $(PKG_BUILD_DIR)/$(PKG_SOURCE)
+	cd $(PKG_BUILD_DIR) && ./$(PKG_SOURCE) --auto-accept
+	$(CP) $(PKG_BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)/firmware/ddr/synopsys/* \
+		$(STAGING_DIR_IMAGE)/$(MKIMG_DIR)
+endef
+
+$(eval $(call BuildPackage,firmware-imx))
diff --git a/package/utils/imx-mkimage/Makefile b/package/utils/imx-mkimage/Makefile
new file mode 100644
index 0000000000..4ad1b18773
--- /dev/null
+++ b/package/utils/imx-mkimage/Makefile
@@ -0,0 +1,38 @@ 
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# Copyright 2022 NXP
+#
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=imx-mkimage
+PKG_VERSION:=lf-5.15.5-1.0.0
+PKG_RELEASE:=$(AUTORELEASE)
+
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE_URL:=https://source.codeaurora.org/external/imx/imx-mkimage.git
+PKG_SOURCE_VERSION:=lf-5.15.5-1.0.0
+PKG_MIRROR_HASH:=fdb2086a1182b2c96e8c8dcfb795f004
+
+PKG_FLAGS:=nonshared
+
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/host-build.mk
+
+define Package/imx-mkimage
+  SECTION:=utils
+  CATEGORY:=Utilities
+  TITLE:=Combine uboot and other firmware together
+  BUILD_TARGET:=imx
+  BUILD_SUBTARGET:=imx8
+  DEPENDS:=@TARGET_imx_imx8
+endef
+
+define Build/Compile
+endef
+
+define Build/InstallDev
+	$(INSTALL_DIR) $(STAGING_DIR_IMAGE)
+	$(CP) -rp $(PKG_BUILD_DIR) $(STAGING_DIR_IMAGE)
+endef
+
+$(eval $(call BuildPackage,imx-mkimage))
diff --git a/target/linux/imx/Makefile b/target/linux/imx/Makefile
index 5fb7a4d339..351873beaa 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 imx8
 
 KERNEL_PATCHVER:=5.15
 
 include $(INCLUDE_DIR)/target.mk
 
-KERNELNAME:=zImage dtbs
-
 DEFAULT_PACKAGES += uboot-envtools mkf2fs e2fsprogs blkid
 
 $(eval $(call BuildTarget))
diff --git a/target/linux/imx/config-5.15 b/target/linux/imx/config-5.15
deleted file mode 100644
index 1a3c83274c..0000000000
--- a/target/linux/imx/config-5.15
+++ /dev/null
@@ -1,443 +0,0 @@ 
-CONFIG_ALIGNMENT_TRAP=y
-CONFIG_ARCH_32BIT_OFF_T=y
-CONFIG_ARCH_HIBERNATION_POSSIBLE=y
-CONFIG_ARCH_KEEP_MEMBLOCK=y
-CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
-CONFIG_ARCH_MMAP_RND_BITS_MAX=15
-CONFIG_ARCH_MULTIPLATFORM=y
-CONFIG_ARCH_MULTI_V6_V7=y
-CONFIG_ARCH_MULTI_V7=y
-CONFIG_ARCH_MXC=y
-CONFIG_ARCH_NR_GPIO=0
-CONFIG_ARCH_OPTIONAL_KERNEL_RWX=y
-CONFIG_ARCH_OPTIONAL_KERNEL_RWX_DEFAULT=y
-CONFIG_ARCH_SELECT_MEMORY_MODEL=y
-CONFIG_ARCH_SPARSEMEM_ENABLE=y
-CONFIG_ARCH_SUSPEND_POSSIBLE=y
-CONFIG_ARM=y
-CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y
-CONFIG_ARM_CRYPTO=y
-CONFIG_ARM_ERRATA_754322=y
-CONFIG_ARM_ERRATA_764369=y
-CONFIG_ARM_ERRATA_775420=y
-CONFIG_ARM_ERRATA_814220=y
-CONFIG_ARM_HAS_SG_CHAIN=y
-CONFIG_ARM_HEAVY_MB=y
-# CONFIG_ARM_IMX_CPUFREQ_DT is not set
-CONFIG_ARM_L1_CACHE_SHIFT=6
-CONFIG_ARM_L1_CACHE_SHIFT_6=y
-CONFIG_ARM_PATCH_IDIV=y
-CONFIG_ARM_PATCH_PHYS_VIRT=y
-CONFIG_ARM_THUMB=y
-CONFIG_ARM_UNWIND=y
-CONFIG_ARM_VIRT_EXT=y
-CONFIG_ASN1=y
-CONFIG_ASSOCIATIVE_ARRAY=y
-CONFIG_ATA=y
-CONFIG_ATAGS=y
-# CONFIG_ATA_SFF is not set
-CONFIG_AUTO_ZRELADDR=y
-CONFIG_BINFMT_FLAT_ARGVP_ENVP_ON_STACK=y
-CONFIG_BLK_DEV_LOOP=y
-CONFIG_BLK_PM=y
-CONFIG_CACHE_L2X0=y
-CONFIG_CLKSRC_IMX_GPT=y
-CONFIG_CLKSRC_MMIO=y
-# CONFIG_CLK_IMX8MM is not set
-# CONFIG_CLK_IMX8MN is not set
-# CONFIG_CLK_IMX8MP is not set
-# CONFIG_CLK_IMX8MQ is not set
-CONFIG_CLONE_BACKWARDS=y
-CONFIG_CLZ_TAB=y
-CONFIG_COMMON_CLK=y
-CONFIG_COMPAT_32BIT_TIME=y
-CONFIG_CPUFREQ_DT=y
-CONFIG_CPUFREQ_DT_PLATDEV=y
-CONFIG_CPU_32v6K=y
-CONFIG_CPU_32v7=y
-CONFIG_CPU_ABRT_EV7=y
-CONFIG_CPU_CACHE_V7=y
-CONFIG_CPU_CACHE_VIPT=y
-CONFIG_CPU_COPY_V6=y
-CONFIG_CPU_CP15=y
-CONFIG_CPU_CP15_MMU=y
-CONFIG_CPU_FREQ=y
-CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
-CONFIG_CPU_FREQ_GOV_ATTR_SET=y
-CONFIG_CPU_FREQ_GOV_COMMON=y
-CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
-CONFIG_CPU_FREQ_GOV_ONDEMAND=y
-CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
-CONFIG_CPU_FREQ_GOV_POWERSAVE=y
-CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y
-CONFIG_CPU_FREQ_GOV_USERSPACE=y
-CONFIG_CPU_FREQ_STAT=y
-CONFIG_CPU_HAS_ASID=y
-CONFIG_CPU_PABRT_V7=y
-CONFIG_CPU_RMAP=y
-CONFIG_CPU_SPECTRE=y
-CONFIG_CPU_THERMAL=y
-CONFIG_CPU_THUMB_CAPABLE=y
-CONFIG_CPU_TLB_V7=y
-CONFIG_CPU_V7=y
-CONFIG_CRC16=y
-CONFIG_CRYPTO_AES_ARM=y
-CONFIG_CRYPTO_AES_ARM_BS=y
-CONFIG_CRYPTO_ARCH_HAVE_LIB_CHACHA=y
-CONFIG_CRYPTO_AUTHENC=y
-CONFIG_CRYPTO_BLAKE2S_ARM=y
-CONFIG_CRYPTO_CBC=y
-CONFIG_CRYPTO_CHACHA20=y
-CONFIG_CRYPTO_CHACHA20_NEON=y
-CONFIG_CRYPTO_CRC32=y
-CONFIG_CRYPTO_CRC32C=y
-CONFIG_CRYPTO_CRC32_ARM_CE=y
-CONFIG_CRYPTO_CRYPTD=y
-CONFIG_CRYPTO_CTS=y
-CONFIG_CRYPTO_DEFLATE=y
-CONFIG_CRYPTO_DEV_FSL_CAAM=y
-CONFIG_CRYPTO_DEV_FSL_CAAM_AHASH_API=y
-CONFIG_CRYPTO_DEV_FSL_CAAM_AHASH_API_DESC=y
-CONFIG_CRYPTO_DEV_FSL_CAAM_COMMON=y
-CONFIG_CRYPTO_DEV_FSL_CAAM_CRYPTO_API=y
-CONFIG_CRYPTO_DEV_FSL_CAAM_CRYPTO_API_DESC=y
-# CONFIG_CRYPTO_DEV_FSL_CAAM_DEBUG is not set
-# CONFIG_CRYPTO_DEV_FSL_CAAM_INTC is not set
-CONFIG_CRYPTO_DEV_FSL_CAAM_JR=y
-CONFIG_CRYPTO_DEV_FSL_CAAM_PKC_API=y
-CONFIG_CRYPTO_DEV_FSL_CAAM_RINGSIZE=9
-CONFIG_CRYPTO_DEV_FSL_CAAM_RNG_API=y
-CONFIG_CRYPTO_DRBG=y
-CONFIG_CRYPTO_DRBG_HMAC=y
-CONFIG_CRYPTO_DRBG_MENU=y
-CONFIG_CRYPTO_ECB=y
-CONFIG_CRYPTO_ENGINE=y
-CONFIG_CRYPTO_HASH_INFO=y
-CONFIG_CRYPTO_HMAC=y
-CONFIG_CRYPTO_HW=y
-CONFIG_CRYPTO_JITTERENTROPY=y
-CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
-CONFIG_CRYPTO_LIB_CHACHA_GENERIC=y
-CONFIG_CRYPTO_LIB_DES=y
-CONFIG_CRYPTO_LIB_SHA256=y
-CONFIG_CRYPTO_LZO=y
-CONFIG_CRYPTO_RNG=y
-CONFIG_CRYPTO_RNG2=y
-CONFIG_CRYPTO_RNG_DEFAULT=y
-CONFIG_CRYPTO_RSA=y
-CONFIG_CRYPTO_SEQIV=y
-CONFIG_CRYPTO_SHA1=y
-CONFIG_CRYPTO_SHA1_ARM=y
-CONFIG_CRYPTO_SHA1_ARM_NEON=y
-CONFIG_CRYPTO_SHA256=y
-CONFIG_CRYPTO_SHA256_ARM=y
-CONFIG_CRYPTO_SHA512=y
-CONFIG_CRYPTO_SHA512_ARM=y
-CONFIG_CRYPTO_SIMD=y
-CONFIG_CRYPTO_XTS=y
-CONFIG_CRYPTO_ZSTD=y
-CONFIG_DCACHE_WORD_ACCESS=y
-CONFIG_DEBUG_LL_INCLUDE="mach/debug-macro.S"
-CONFIG_DEBUG_MISC=y
-CONFIG_DECOMPRESS_BZIP2=y
-CONFIG_DECOMPRESS_GZIP=y
-CONFIG_DECOMPRESS_LZO=y
-CONFIG_DECOMPRESS_XZ=y
-CONFIG_DMADEVICES=y
-CONFIG_DMA_ENGINE=y
-CONFIG_DMA_OF=y
-CONFIG_DMA_OPS=y
-CONFIG_DMA_REMAP=y
-CONFIG_DMA_VIRTUAL_CHANNELS=y
-CONFIG_DTC=y
-CONFIG_EDAC_ATOMIC_SCRUB=y
-CONFIG_EDAC_SUPPORT=y
-CONFIG_ENCRYPTED_KEYS=y
-CONFIG_EXT4_FS=y
-CONFIG_EXT4_FS_POSIX_ACL=y
-CONFIG_EXT4_FS_SECURITY=y
-CONFIG_EXTCON=y
-CONFIG_EXTRA_FIRMWARE="imx/sdma/sdma-imx6q.bin"
-CONFIG_EXTRA_FIRMWARE_DIR="firmware"
-CONFIG_F2FS_FS=y
-# CONFIG_FEC is not set
-CONFIG_FIXED_PHY=y
-CONFIG_FIX_EARLYCON_MEM=y
-# CONFIG_FSL_DPAA2_SWITCH is not set
-# CONFIG_FSL_ENETC_IERB is not set
-# CONFIG_FSL_IMX8_DDR_PMU is not set
-CONFIG_FS_ENCRYPTION=y
-CONFIG_FS_ENCRYPTION_ALGS=y
-CONFIG_FS_IOMAP=y
-CONFIG_FS_MBCACHE=y
-CONFIG_FS_POSIX_ACL=y
-CONFIG_FWNODE_MDIO=y
-CONFIG_FW_LOADER_PAGED_BUF=y
-CONFIG_GENERIC_ALLOCATOR=y
-CONFIG_GENERIC_ARCH_TOPOLOGY=y
-CONFIG_GENERIC_BUG=y
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
-CONFIG_GENERIC_CPU_AUTOPROBE=y
-CONFIG_GENERIC_CPU_VULNERABILITIES=y
-CONFIG_GENERIC_EARLY_IOREMAP=y
-CONFIG_GENERIC_GETTIMEOFDAY=y
-CONFIG_GENERIC_IDLE_POLL_SETUP=y
-CONFIG_GENERIC_IRQ_CHIP=y
-CONFIG_GENERIC_IRQ_MULTI_HANDLER=y
-CONFIG_GENERIC_IRQ_SHOW=y
-CONFIG_GENERIC_IRQ_SHOW_LEVEL=y
-CONFIG_GENERIC_LIB_DEVMEM_IS_ALLOWED=y
-CONFIG_GENERIC_PCI_IOMAP=y
-CONFIG_GENERIC_PINCONF=y
-CONFIG_GENERIC_PINCTRL_GROUPS=y
-CONFIG_GENERIC_PINMUX_FUNCTIONS=y
-CONFIG_GENERIC_SCHED_CLOCK=y
-CONFIG_GENERIC_SMP_IDLE_THREAD=y
-CONFIG_GENERIC_STRNCPY_FROM_USER=y
-CONFIG_GENERIC_STRNLEN_USER=y
-CONFIG_GENERIC_TIME_VSYSCALL=y
-CONFIG_GENERIC_VDSO_32=y
-# CONFIG_GIANFAR is not set
-CONFIG_GLOB=y
-CONFIG_GPIOLIB=y
-CONFIG_GPIO_CDEV=y
-CONFIG_GPIO_GENERIC=y
-CONFIG_GPIO_MXC=y
-CONFIG_GRO_CELLS=y
-CONFIG_HANDLE_DOMAIN_IRQ=y
-CONFIG_HARDEN_BRANCH_PREDICTOR=y
-CONFIG_HARDIRQS_SW_RESEND=y
-CONFIG_HAS_DMA=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT_MAP=y
-CONFIG_HAVE_ARM_ARCH_TIMER=y
-CONFIG_HAVE_SMP=y
-CONFIG_HWMON=y
-CONFIG_HW_RANDOM=y
-CONFIG_HZ_FIXED=0
-CONFIG_HZ_PERIODIC=y
-CONFIG_I2C=y
-CONFIG_I2C_BOARDINFO=y
-CONFIG_I2C_CHARDEV=y
-CONFIG_I2C_IMX=y
-# CONFIG_I2C_IMX_LPI2C is not set
-CONFIG_I2C_SLAVE=y
-# CONFIG_I2C_SLAVE_TESTUNIT is not set
-CONFIG_IMX2_WDT=y
-# CONFIG_IMX7ULP_WDT is not set
-# CONFIG_IMX8MM_THERMAL is not set
-CONFIG_IMX_DMA=y
-# CONFIG_IMX_GPCV2_PM_DOMAINS is not set
-CONFIG_IMX_INTMUX=y
-CONFIG_IMX_IRQSTEER=y
-CONFIG_IMX_SDMA=y
-CONFIG_IMX_THERMAL=y
-# CONFIG_IMX_WEIM is not set
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_IO_URING=y
-CONFIG_IRQCHIP=y
-CONFIG_IRQ_DOMAIN=y
-CONFIG_IRQ_DOMAIN_HIERARCHY=y
-CONFIG_IRQ_FORCED_THREADING=y
-CONFIG_IRQ_WORK=y
-CONFIG_JBD2=y
-# CONFIG_JFFS2_FS is not set
-CONFIG_KEYS=y
-CONFIG_LIBFDT=y
-CONFIG_LOCK_DEBUGGING_SUPPORT=y
-CONFIG_LOCK_SPIN_ON_OWNER=y
-CONFIG_LZO_COMPRESS=y
-CONFIG_LZO_DECOMPRESS=y
-CONFIG_MDIO_BUS=y
-CONFIG_MDIO_DEVICE=y
-CONFIG_MDIO_DEVRES=y
-CONFIG_MEMFD_CREATE=y
-CONFIG_MFD_SYSCON=y
-CONFIG_MIGHT_HAVE_CACHE_L2X0=y
-CONFIG_MIGRATION=y
-CONFIG_MMC=y
-CONFIG_MMC_BLOCK=y
-CONFIG_MMC_CQHCI=y
-# CONFIG_MMC_MXC is not set
-CONFIG_MMC_SDHCI=y
-# CONFIG_MMC_SDHCI_ESDHC_IMX is not set
-CONFIG_MMC_SDHCI_PLTFM=y
-CONFIG_MODULES_USE_ELF_REL=y
-CONFIG_MPILIB=y
-CONFIG_MTD_NAND_CORE=y
-CONFIG_MTD_NAND_ECC=y
-CONFIG_MTD_NAND_ECC_SW_HAMMING=y
-CONFIG_MTD_NAND_GPMI_NAND=y
-CONFIG_MTD_RAW_NAND=y
-CONFIG_MTD_UBI=y
-CONFIG_MTD_UBI_BEB_LIMIT=20
-CONFIG_MTD_UBI_BLOCK=y
-CONFIG_MTD_UBI_WL_THRESHOLD=4096
-CONFIG_MUTEX_SPIN_ON_OWNER=y
-# CONFIG_MX3_IPU is not set
-CONFIG_MXC_CLK=y
-CONFIG_MXS_DMA=y
-CONFIG_NEED_DMA_MAP_STATE=y
-CONFIG_NEON=y
-CONFIG_NET_DEVLINK=y
-CONFIG_NET_DSA=y
-CONFIG_NET_DSA_TAG_DSA=y
-CONFIG_NET_DSA_TAG_DSA_COMMON=y
-CONFIG_NET_DSA_TAG_EDSA=y
-CONFIG_NET_FLOW_LIMIT=y
-CONFIG_NET_PTP_CLASSIFY=y
-CONFIG_NET_SELFTESTS=y
-CONFIG_NET_SWITCHDEV=y
-CONFIG_NLS=y
-CONFIG_NLS_CODEPAGE_437=y
-CONFIG_NR_CPUS=4
-CONFIG_NVMEM=y
-# CONFIG_NVMEM_IMX_IIM is not set
-CONFIG_NVMEM_IMX_OCOTP=y
-# CONFIG_NVMEM_SNVS_LPGPR is not set
-CONFIG_NVMEM_SYSFS=y
-CONFIG_OF=y
-CONFIG_OF_ADDRESS=y
-CONFIG_OF_EARLY_FLATTREE=y
-CONFIG_OF_FLATTREE=y
-CONFIG_OF_GPIO=y
-CONFIG_OF_IRQ=y
-CONFIG_OF_KOBJ=y
-CONFIG_OF_MDIO=y
-CONFIG_OLD_SIGACTION=y
-CONFIG_OLD_SIGSUSPEND3=y
-CONFIG_OUTER_CACHE=y
-CONFIG_OUTER_CACHE_SYNC=y
-CONFIG_PADATA=y
-CONFIG_PAGE_OFFSET=0x80000000
-CONFIG_PERF_USE_VMALLOC=y
-CONFIG_PGTABLE_LEVELS=2
-CONFIG_PHYLIB=y
-CONFIG_PHYLINK=y
-CONFIG_PINCTRL=y
-# CONFIG_PINCTRL_IMX8MM is not set
-# CONFIG_PINCTRL_IMX8MN is not set
-# CONFIG_PINCTRL_IMX8MP is not set
-# CONFIG_PINCTRL_IMX8MQ is not set
-# CONFIG_PINCTRL_IMX8ULP is not set
-CONFIG_PL310_ERRATA_769419=y
-CONFIG_PM=y
-CONFIG_PM_CLK=y
-CONFIG_PM_OPP=y
-CONFIG_PPS=y
-CONFIG_PTP_1588_CLOCK=y
-CONFIG_PTP_1588_CLOCK_OPTIONAL=y
-CONFIG_PWM=y
-# CONFIG_PWM_IMX1 is not set
-CONFIG_PWM_IMX27=y
-# CONFIG_PWM_IMX_TPM is not set
-CONFIG_PWM_SYSFS=y
-CONFIG_RAS=y
-CONFIG_RATIONAL=y
-CONFIG_RD_BZIP2=y
-CONFIG_RD_GZIP=y
-CONFIG_RD_LZO=y
-CONFIG_RD_XZ=y
-CONFIG_REGMAP=y
-CONFIG_REGMAP_MMIO=y
-CONFIG_REGULATOR=y
-CONFIG_REGULATOR_FIXED_VOLTAGE=y
-CONFIG_RESET_CONTROLLER=y
-CONFIG_RFS_ACCEL=y
-CONFIG_RPS=y
-CONFIG_RTC_CLASS=y
-# CONFIG_RTC_DRV_CMOS is not set
-# CONFIG_RTC_DRV_IMXDI is not set
-# CONFIG_RTC_DRV_MXC is not set
-# CONFIG_RTC_DRV_MXC_V2 is not set
-CONFIG_RTC_I2C_AND_SPI=y
-CONFIG_RWSEM_SPIN_ON_OWNER=y
-CONFIG_SCSI=y
-CONFIG_SCSI_COMMON=y
-CONFIG_SERIAL_8250_FSL=y
-CONFIG_SERIAL_IMX=y
-CONFIG_SERIAL_IMX_CONSOLE=y
-CONFIG_SERIAL_IMX_EARLYCON=y
-CONFIG_SERIAL_MCTRL_GPIO=y
-CONFIG_SGL_ALLOC=y
-CONFIG_SG_POOL=y
-CONFIG_SMP=y
-CONFIG_SMP_ON_UP=y
-# CONFIG_SND_SOC_IMX_CARD is not set
-# CONFIG_SND_SOC_IMX_HDMI is not set
-CONFIG_SOCK_RX_QUEUE_MAPPING=y
-CONFIG_SOC_BUS=y
-# CONFIG_SOC_IMX50 is not set
-# CONFIG_SOC_IMX51 is not set
-# CONFIG_SOC_IMX53 is not set
-# CONFIG_SOC_IMX6Q is not set
-# CONFIG_SOC_IMX6SL is not set
-# CONFIG_SOC_IMX6SLL is not set
-# CONFIG_SOC_IMX6SX is not set
-# CONFIG_SOC_IMX6UL is not set
-# CONFIG_SOC_IMX7D is not set
-# CONFIG_SOC_IMX7ULP is not set
-# CONFIG_SOC_IMX8M is not set
-# CONFIG_SOC_LS1021A is not set
-# CONFIG_SOC_VF610 is not set
-CONFIG_SPARSE_IRQ=y
-CONFIG_SPI=y
-CONFIG_SPI_BITBANG=y
-# CONFIG_SPI_FSL_LPSPI is not set
-# CONFIG_SPI_FSL_QUADSPI is not set
-CONFIG_SPI_IMX=y
-CONFIG_SPI_MASTER=y
-CONFIG_SRAM=y
-CONFIG_SRAM_EXEC=y
-CONFIG_SRCU=y
-CONFIG_STMP_DEVICE=y
-CONFIG_SWPHY=y
-CONFIG_SWP_EMULATE=y
-CONFIG_SYS_SUPPORTS_APM_EMULATION=y
-CONFIG_THERMAL=y
-CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
-CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0
-CONFIG_THERMAL_GOV_STEP_WISE=y
-CONFIG_THERMAL_OF=y
-CONFIG_TICK_CPU_ACCOUNTING=y
-CONFIG_TIMER_OF=y
-CONFIG_TIMER_PROBE=y
-CONFIG_TREE_RCU=y
-CONFIG_TREE_SRCU=y
-CONFIG_UBIFS_FS=y
-# CONFIG_UCLAMP_TASK is not set
-CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h"
-CONFIG_UNWINDER_ARM=y
-CONFIG_USB=y
-CONFIG_USB_CHIPIDEA=y
-CONFIG_USB_CHIPIDEA_HOST=y
-CONFIG_USB_CHIPIDEA_IMX=y
-CONFIG_USB_CHIPIDEA_UDC=y
-CONFIG_USB_COMMON=y
-CONFIG_USB_EHCI_HCD=y
-# CONFIG_USB_EHCI_HCD_PLATFORM is not set
-CONFIG_USB_GADGET=y
-CONFIG_USB_MXS_PHY=y
-CONFIG_USB_OTG=y
-CONFIG_USB_PHY=y
-CONFIG_USB_ROLE_SWITCH=y
-CONFIG_USB_SUPPORT=y
-CONFIG_USB_ULPI_BUS=y
-CONFIG_USE_OF=y
-CONFIG_VFP=y
-CONFIG_VFPv3=y
-CONFIG_VMSPLIT_2G=y
-# CONFIG_VMSPLIT_3G is not set
-CONFIG_WATCHDOG_CORE=y
-CONFIG_XPS=y
-CONFIG_XXHASH=y
-CONFIG_XZ_DEC_ARM=y
-CONFIG_XZ_DEC_ARMTHUMB=y
-CONFIG_XZ_DEC_BCJ=y
-CONFIG_ZBOOT_ROM_BSS=0
-CONFIG_ZBOOT_ROM_TEXT=0
-CONFIG_ZLIB_DEFLATE=y
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZSTD_COMPRESS=y
-CONFIG_ZSTD_DECOMPRESS=y
diff --git a/target/linux/imx/cortexa7/config-default b/target/linux/imx/cortexa7/config-default
index 480e98867f..20c77cbcbd 100644
--- a/target/linux/imx/cortexa7/config-default
+++ b/target/linux/imx/cortexa7/config-default
@@ -26,3 +26,444 @@  CONFIG_SPI_FSL_QUADSPI=y
 CONFIG_SPI_MEM=y
 CONFIG_USB_CHIPIDEA_IMX=y
 CONFIG_USB_EHCI_MXC=y
+CONFIG_ALIGNMENT_TRAP=y
+CONFIG_ARCH_32BIT_OFF_T=y
+CONFIG_ARCH_HIBERNATION_POSSIBLE=y
+CONFIG_ARCH_KEEP_MEMBLOCK=y
+CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
+CONFIG_ARCH_MMAP_RND_BITS_MAX=15
+CONFIG_ARCH_MULTIPLATFORM=y
+CONFIG_ARCH_MULTI_V6_V7=y
+CONFIG_ARCH_MULTI_V7=y
+CONFIG_ARCH_MXC=y
+CONFIG_ARCH_NR_GPIO=0
+CONFIG_ARCH_OPTIONAL_KERNEL_RWX=y
+CONFIG_ARCH_OPTIONAL_KERNEL_RWX_DEFAULT=y
+CONFIG_ARCH_SELECT_MEMORY_MODEL=y
+CONFIG_ARCH_SPARSEMEM_ENABLE=y
+CONFIG_ARCH_SUSPEND_POSSIBLE=y
+CONFIG_ARM=y
+CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y
+CONFIG_ARM_CRYPTO=y
+CONFIG_ARM_ERRATA_754322=y
+CONFIG_ARM_ERRATA_764369=y
+CONFIG_ARM_ERRATA_775420=y
+CONFIG_ARM_ERRATA_814220=y
+CONFIG_ARM_HAS_SG_CHAIN=y
+CONFIG_ARM_HEAVY_MB=y
+# CONFIG_ARM_IMX_CPUFREQ_DT is not set
+CONFIG_ARM_L1_CACHE_SHIFT=6
+CONFIG_ARM_L1_CACHE_SHIFT_6=y
+CONFIG_ARM_PATCH_IDIV=y
+CONFIG_ARM_PATCH_PHYS_VIRT=y
+CONFIG_ARM_THUMB=y
+CONFIG_ARM_UNWIND=y
+CONFIG_ARM_VIRT_EXT=y
+CONFIG_ASN1=y
+CONFIG_ASSOCIATIVE_ARRAY=y
+CONFIG_ATA=y
+CONFIG_ATAGS=y
+# CONFIG_ATA_SFF is not set
+CONFIG_AUTO_ZRELADDR=y
+CONFIG_BINFMT_FLAT_ARGVP_ENVP_ON_STACK=y
+CONFIG_BLK_DEV_LOOP=y
+CONFIG_BLK_PM=y
+CONFIG_CACHE_L2X0=y
+CONFIG_CLKSRC_IMX_GPT=y
+CONFIG_CLKSRC_MMIO=y
+# CONFIG_CLK_IMX8MM is not set
+# CONFIG_CLK_IMX8MN is not set
+# CONFIG_CLK_IMX8MP is not set
+# CONFIG_CLK_IMX8MQ is not set
+CONFIG_CLONE_BACKWARDS=y
+CONFIG_CLZ_TAB=y
+CONFIG_COMMON_CLK=y
+CONFIG_COMPAT_32BIT_TIME=y
+CONFIG_CPUFREQ_DT=y
+CONFIG_CPUFREQ_DT_PLATDEV=y
+CONFIG_CPU_32v6K=y
+CONFIG_CPU_32v7=y
+CONFIG_CPU_ABRT_EV7=y
+CONFIG_CPU_CACHE_V7=y
+CONFIG_CPU_CACHE_VIPT=y
+CONFIG_CPU_COPY_V6=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
+CONFIG_CPU_FREQ_GOV_ATTR_SET=y
+CONFIG_CPU_FREQ_GOV_COMMON=y
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+CONFIG_CPU_FREQ_GOV_ONDEMAND=y
+CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y
+CONFIG_CPU_FREQ_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_STAT=y
+CONFIG_CPU_HAS_ASID=y
+CONFIG_CPU_PABRT_V7=y
+CONFIG_CPU_RMAP=y
+CONFIG_CPU_SPECTRE=y
+CONFIG_CPU_THERMAL=y
+CONFIG_CPU_THUMB_CAPABLE=y
+CONFIG_CPU_TLB_V7=y
+CONFIG_CPU_V7=y
+CONFIG_CRC16=y
+CONFIG_CRYPTO_AES_ARM=y
+CONFIG_CRYPTO_AES_ARM_BS=y
+CONFIG_CRYPTO_ARCH_HAVE_LIB_CHACHA=y
+CONFIG_CRYPTO_AUTHENC=y
+CONFIG_CRYPTO_CBC=y
+CONFIG_CRYPTO_CHACHA20=y
+CONFIG_CRYPTO_CHACHA20_NEON=y
+CONFIG_CRYPTO_CRC32=y
+CONFIG_CRYPTO_CRC32C=y
+CONFIG_CRYPTO_CRC32_ARM_CE=y
+CONFIG_CRYPTO_CRYPTD=y
+CONFIG_CRYPTO_CTS=y
+CONFIG_CRYPTO_DEFLATE=y
+CONFIG_CRYPTO_DEV_FSL_CAAM=y
+CONFIG_CRYPTO_DEV_FSL_CAAM_AHASH_API=y
+CONFIG_CRYPTO_DEV_FSL_CAAM_AHASH_API_DESC=y
+CONFIG_CRYPTO_DEV_FSL_CAAM_COMMON=y
+CONFIG_CRYPTO_DEV_FSL_CAAM_CRYPTO_API=y
+CONFIG_CRYPTO_DEV_FSL_CAAM_CRYPTO_API_DESC=y
+# CONFIG_CRYPTO_DEV_FSL_CAAM_DEBUG is not set
+# CONFIG_CRYPTO_DEV_FSL_CAAM_INTC is not set
+CONFIG_CRYPTO_DEV_FSL_CAAM_JR=y
+CONFIG_CRYPTO_DEV_FSL_CAAM_PKC_API=y
+CONFIG_CRYPTO_DEV_FSL_CAAM_RINGSIZE=9
+CONFIG_CRYPTO_DEV_FSL_CAAM_RNG_API=y
+CONFIG_CRYPTO_DRBG=y
+CONFIG_CRYPTO_DRBG_HMAC=y
+CONFIG_CRYPTO_DRBG_MENU=y
+CONFIG_CRYPTO_ECB=y
+CONFIG_CRYPTO_ENGINE=y
+CONFIG_CRYPTO_HASH_INFO=y
+CONFIG_CRYPTO_HMAC=y
+CONFIG_CRYPTO_HW=y
+CONFIG_CRYPTO_JITTERENTROPY=y
+CONFIG_CRYPTO_LIB_CHACHA_GENERIC=y
+CONFIG_CRYPTO_LIB_DES=y
+CONFIG_CRYPTO_LIB_SHA256=y
+CONFIG_CRYPTO_LZO=y
+CONFIG_CRYPTO_RNG=y
+CONFIG_CRYPTO_RNG2=y
+CONFIG_CRYPTO_RNG_DEFAULT=y
+CONFIG_CRYPTO_RSA=y
+CONFIG_CRYPTO_SEQIV=y
+CONFIG_CRYPTO_SHA1=y
+CONFIG_CRYPTO_SHA1_ARM=y
+CONFIG_CRYPTO_SHA1_ARM_NEON=y
+CONFIG_CRYPTO_SHA256=y
+CONFIG_CRYPTO_SHA256_ARM=y
+CONFIG_CRYPTO_SHA512=y
+CONFIG_CRYPTO_SHA512_ARM=y
+CONFIG_CRYPTO_SIMD=y
+CONFIG_CRYPTO_XTS=y
+CONFIG_CRYPTO_ZSTD=y
+CONFIG_DCACHE_WORD_ACCESS=y
+CONFIG_DEBUG_LL_INCLUDE="mach/debug-macro.S"
+CONFIG_DEBUG_MISC=y
+CONFIG_DECOMPRESS_BZIP2=y
+CONFIG_DECOMPRESS_GZIP=y
+CONFIG_DECOMPRESS_LZO=y
+CONFIG_DECOMPRESS_XZ=y
+CONFIG_DMADEVICES=y
+CONFIG_DMA_ENGINE=y
+CONFIG_DMA_OF=y
+CONFIG_DMA_OPS=y
+CONFIG_DMA_REMAP=y
+CONFIG_DMA_VIRTUAL_CHANNELS=y
+CONFIG_DTC=y
+CONFIG_EDAC_ATOMIC_SCRUB=y
+CONFIG_EDAC_SUPPORT=y
+CONFIG_ENCRYPTED_KEYS=y
+CONFIG_EXT4_FS=y
+CONFIG_EXT4_FS_POSIX_ACL=y
+CONFIG_EXT4_FS_SECURITY=y
+CONFIG_EXTCON=y
+CONFIG_EXTRA_FIRMWARE="imx/sdma/sdma-imx6q.bin"
+CONFIG_EXTRA_FIRMWARE_DIR="firmware"
+CONFIG_F2FS_FS=y
+# CONFIG_FEC is not set
+CONFIG_FIXED_PHY=y
+CONFIG_FIX_EARLYCON_MEM=y
+# CONFIG_FSL_DPAA2_SWITCH is not set
+# CONFIG_FSL_ENETC_IERB is not set
+# CONFIG_FSL_IMX8_DDR_PMU is not set
+CONFIG_FS_ENCRYPTION=y
+CONFIG_FS_ENCRYPTION_ALGS=y
+CONFIG_FS_IOMAP=y
+CONFIG_FS_MBCACHE=y
+CONFIG_FS_POSIX_ACL=y
+CONFIG_FWNODE_MDIO=y
+CONFIG_FW_LOADER_PAGED_BUF=y
+CONFIG_GENERIC_ALLOCATOR=y
+CONFIG_GENERIC_ARCH_TOPOLOGY=y
+CONFIG_GENERIC_BUG=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
+CONFIG_GENERIC_CPU_AUTOPROBE=y
+CONFIG_GENERIC_CPU_VULNERABILITIES=y
+CONFIG_GENERIC_EARLY_IOREMAP=y
+CONFIG_GENERIC_GETTIMEOFDAY=y
+CONFIG_GENERIC_IDLE_POLL_SETUP=y
+CONFIG_GENERIC_IRQ_CHIP=y
+CONFIG_GENERIC_IRQ_MULTI_HANDLER=y
+CONFIG_GENERIC_IRQ_SHOW=y
+CONFIG_GENERIC_IRQ_SHOW_LEVEL=y
+CONFIG_GENERIC_LIB_DEVMEM_IS_ALLOWED=y
+CONFIG_GENERIC_PCI_IOMAP=y
+CONFIG_GENERIC_PINCONF=y
+CONFIG_GENERIC_PINCTRL_GROUPS=y
+CONFIG_GENERIC_PINMUX_FUNCTIONS=y
+CONFIG_GENERIC_SCHED_CLOCK=y
+CONFIG_GENERIC_SMP_IDLE_THREAD=y
+CONFIG_GENERIC_STRNCPY_FROM_USER=y
+CONFIG_GENERIC_STRNLEN_USER=y
+CONFIG_GENERIC_TIME_VSYSCALL=y
+CONFIG_GENERIC_VDSO_32=y
+# CONFIG_GIANFAR is not set
+CONFIG_GLOB=y
+CONFIG_GPIOLIB=y
+CONFIG_GPIO_CDEV=y
+CONFIG_GPIO_GENERIC=y
+CONFIG_GPIO_MXC=y
+CONFIG_GRO_CELLS=y
+CONFIG_HANDLE_DOMAIN_IRQ=y
+CONFIG_HARDEN_BRANCH_PREDICTOR=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_HAS_DMA=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT_MAP=y
+CONFIG_HAVE_ARM_ARCH_TIMER=y
+CONFIG_HAVE_SMP=y
+CONFIG_HWMON=y
+CONFIG_HW_RANDOM=y
+CONFIG_HZ_FIXED=0
+CONFIG_HZ_PERIODIC=y
+CONFIG_I2C=y
+CONFIG_I2C_BOARDINFO=y
+CONFIG_I2C_CHARDEV=y
+CONFIG_I2C_IMX=y
+# CONFIG_I2C_IMX_LPI2C is not set
+CONFIG_I2C_SLAVE=y
+# CONFIG_I2C_SLAVE_TESTUNIT is not set
+CONFIG_IMX2_WDT=y
+# CONFIG_IMX7ULP_WDT is not set
+# CONFIG_IMX8MM_THERMAL is not set
+CONFIG_IMX_DMA=y
+# CONFIG_IMX_GPCV2_PM_DOMAINS is not set
+CONFIG_IMX_INTMUX=y
+CONFIG_IMX_IRQSTEER=y
+CONFIG_IMX_SDMA=y
+CONFIG_IMX_THERMAL=y
+# CONFIG_IMX_WEIM is not set
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_IO_URING=y
+CONFIG_IRQCHIP=y
+CONFIG_IRQ_DOMAIN=y
+CONFIG_IRQ_DOMAIN_HIERARCHY=y
+CONFIG_IRQ_FORCED_THREADING=y
+CONFIG_IRQ_WORK=y
+CONFIG_JBD2=y
+# CONFIG_JFFS2_FS is not set
+CONFIG_KEYS=y
+CONFIG_LIBFDT=y
+CONFIG_LOCK_DEBUGGING_SUPPORT=y
+CONFIG_LOCK_SPIN_ON_OWNER=y
+CONFIG_LZO_COMPRESS=y
+CONFIG_LZO_DECOMPRESS=y
+CONFIG_MDIO_BUS=y
+CONFIG_MDIO_DEVICE=y
+CONFIG_MDIO_DEVRES=y
+CONFIG_MEMFD_CREATE=y
+CONFIG_MFD_SYSCON=y
+CONFIG_MIGHT_HAVE_CACHE_L2X0=y
+CONFIG_MIGRATION=y
+CONFIG_MMC=y
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_CQHCI=y
+# CONFIG_MMC_MXC is not set
+CONFIG_MMC_SDHCI=y
+# CONFIG_MMC_SDHCI_ESDHC_IMX is not set
+CONFIG_MMC_SDHCI_PLTFM=y
+CONFIG_MODULES_USE_ELF_REL=y
+CONFIG_MPILIB=y
+CONFIG_MTD_NAND_CORE=y
+CONFIG_MTD_NAND_ECC=y
+CONFIG_MTD_NAND_ECC_SW_HAMMING=y
+CONFIG_MTD_NAND_GPMI_NAND=y
+CONFIG_MTD_RAW_NAND=y
+CONFIG_MTD_UBI=y
+CONFIG_MTD_UBI_BEB_LIMIT=20
+CONFIG_MTD_UBI_BLOCK=y
+CONFIG_MTD_UBI_WL_THRESHOLD=4096
+CONFIG_MUTEX_SPIN_ON_OWNER=y
+# CONFIG_MX3_IPU is not set
+CONFIG_MXC_CLK=y
+CONFIG_MXS_DMA=y
+CONFIG_NEED_DMA_MAP_STATE=y
+CONFIG_NEON=y
+CONFIG_NET_DEVLINK=y
+CONFIG_NET_DSA=y
+CONFIG_NET_DSA_TAG_DSA=y
+CONFIG_NET_DSA_TAG_DSA_COMMON=y
+CONFIG_NET_DSA_TAG_EDSA=y
+CONFIG_NET_FLOW_LIMIT=y
+CONFIG_NET_PTP_CLASSIFY=y
+CONFIG_NET_SELFTESTS=y
+CONFIG_NET_SWITCHDEV=y
+CONFIG_NLS=y
+CONFIG_NLS_CODEPAGE_437=y
+CONFIG_NR_CPUS=4
+CONFIG_NVMEM=y
+# CONFIG_NVMEM_IMX_IIM is not set
+CONFIG_NVMEM_IMX_OCOTP=y
+# CONFIG_NVMEM_SNVS_LPGPR is not set
+CONFIG_NVMEM_SYSFS=y
+CONFIG_OF=y
+CONFIG_OF_ADDRESS=y
+CONFIG_OF_EARLY_FLATTREE=y
+CONFIG_OF_FLATTREE=y
+CONFIG_OF_GPIO=y
+CONFIG_OF_IRQ=y
+CONFIG_OF_KOBJ=y
+CONFIG_OF_MDIO=y
+CONFIG_OLD_SIGACTION=y
+CONFIG_OLD_SIGSUSPEND3=y
+CONFIG_OUTER_CACHE=y
+CONFIG_OUTER_CACHE_SYNC=y
+CONFIG_PADATA=y
+CONFIG_PAGE_OFFSET=0x80000000
+CONFIG_PERF_USE_VMALLOC=y
+CONFIG_PGTABLE_LEVELS=2
+CONFIG_PHYLIB=y
+CONFIG_PHYLINK=y
+CONFIG_PINCTRL=y
+# CONFIG_PINCTRL_IMX8MM is not set
+# CONFIG_PINCTRL_IMX8MN is not set
+# CONFIG_PINCTRL_IMX8MP is not set
+# CONFIG_PINCTRL_IMX8MQ is not set
+# CONFIG_PINCTRL_IMX8ULP is not set
+CONFIG_PL310_ERRATA_769419=y
+CONFIG_PM=y
+CONFIG_PM_CLK=y
+CONFIG_PM_OPP=y
+CONFIG_PPS=y
+CONFIG_PTP_1588_CLOCK=y
+CONFIG_PTP_1588_CLOCK_OPTIONAL=y
+CONFIG_PWM=y
+# CONFIG_PWM_IMX1 is not set
+CONFIG_PWM_IMX27=y
+# CONFIG_PWM_IMX_TPM is not set
+CONFIG_PWM_SYSFS=y
+CONFIG_RAS=y
+CONFIG_RATIONAL=y
+CONFIG_RD_BZIP2=y
+CONFIG_RD_GZIP=y
+CONFIG_RD_LZO=y
+CONFIG_RD_XZ=y
+CONFIG_REGMAP=y
+CONFIG_REGMAP_MMIO=y
+CONFIG_REGULATOR=y
+CONFIG_REGULATOR_FIXED_VOLTAGE=y
+CONFIG_RESET_CONTROLLER=y
+CONFIG_RFS_ACCEL=y
+CONFIG_RPS=y
+CONFIG_RTC_CLASS=y
+# CONFIG_RTC_DRV_CMOS is not set
+# CONFIG_RTC_DRV_IMXDI is not set
+# CONFIG_RTC_DRV_MXC is not set
+# CONFIG_RTC_DRV_MXC_V2 is not set
+CONFIG_RTC_I2C_AND_SPI=y
+CONFIG_RWSEM_SPIN_ON_OWNER=y
+CONFIG_SCSI=y
+CONFIG_SCSI_COMMON=y
+CONFIG_SERIAL_8250_FSL=y
+CONFIG_SERIAL_IMX=y
+CONFIG_SERIAL_IMX_CONSOLE=y
+CONFIG_SERIAL_IMX_EARLYCON=y
+CONFIG_SERIAL_MCTRL_GPIO=y
+CONFIG_SGL_ALLOC=y
+CONFIG_SG_POOL=y
+CONFIG_SMP=y
+CONFIG_SMP_ON_UP=y
+# CONFIG_SND_SOC_IMX_CARD is not set
+# CONFIG_SND_SOC_IMX_HDMI is not set
+CONFIG_SOCK_RX_QUEUE_MAPPING=y
+CONFIG_SOC_BUS=y
+# CONFIG_SOC_IMX50 is not set
+# CONFIG_SOC_IMX51 is not set
+# CONFIG_SOC_IMX53 is not set
+# CONFIG_SOC_IMX6Q is not set
+# CONFIG_SOC_IMX6SL is not set
+# CONFIG_SOC_IMX6SLL is not set
+# CONFIG_SOC_IMX6SX is not set
+# CONFIG_SOC_IMX6UL is not set
+# CONFIG_SOC_IMX7D is not set
+# CONFIG_SOC_IMX7ULP is not set
+# CONFIG_SOC_IMX8M is not set
+# CONFIG_SOC_LS1021A is not set
+# CONFIG_SOC_VF610 is not set
+CONFIG_SPARSE_IRQ=y
+CONFIG_SPI=y
+CONFIG_SPI_BITBANG=y
+# CONFIG_SPI_FSL_LPSPI is not set
+# CONFIG_SPI_FSL_QUADSPI is not set
+CONFIG_SPI_IMX=y
+CONFIG_SPI_MASTER=y
+CONFIG_SRAM=y
+CONFIG_SRAM_EXEC=y
+CONFIG_SRCU=y
+CONFIG_STMP_DEVICE=y
+CONFIG_SWPHY=y
+CONFIG_SWP_EMULATE=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_THERMAL=y
+CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
+CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0
+CONFIG_THERMAL_GOV_STEP_WISE=y
+CONFIG_THERMAL_OF=y
+CONFIG_TICK_CPU_ACCOUNTING=y
+CONFIG_TIMER_OF=y
+CONFIG_TIMER_PROBE=y
+CONFIG_TREE_RCU=y
+CONFIG_TREE_SRCU=y
+CONFIG_UBIFS_FS=y
+# CONFIG_UCLAMP_TASK is not set
+CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h"
+CONFIG_UNWINDER_ARM=y
+CONFIG_USB=y
+CONFIG_USB_CHIPIDEA=y
+CONFIG_USB_CHIPIDEA_HOST=y
+CONFIG_USB_CHIPIDEA_IMX=y
+CONFIG_USB_CHIPIDEA_UDC=y
+CONFIG_USB_COMMON=y
+CONFIG_USB_EHCI_HCD=y
+# CONFIG_USB_EHCI_HCD_PLATFORM is not set
+CONFIG_USB_GADGET=y
+CONFIG_USB_MXS_PHY=y
+CONFIG_USB_OTG=y
+CONFIG_USB_PHY=y
+CONFIG_USB_ROLE_SWITCH=y
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_ULPI_BUS=y
+CONFIG_USE_OF=y
+CONFIG_VFP=y
+CONFIG_VFPv3=y
+CONFIG_VMSPLIT_2G=y
+# CONFIG_VMSPLIT_3G is not set
+CONFIG_WATCHDOG_CORE=y
+CONFIG_XPS=y
+CONFIG_XXHASH=y
+CONFIG_XZ_DEC_ARM=y
+CONFIG_XZ_DEC_ARMTHUMB=y
+CONFIG_XZ_DEC_BCJ=y
+CONFIG_ZBOOT_ROM_BSS=0
+CONFIG_ZBOOT_ROM_TEXT=0
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZSTD_COMPRESS=y
+CONFIG_ZSTD_DECOMPRESS=y
diff --git a/target/linux/imx/cortexa7/target.mk b/target/linux/imx/cortexa7/target.mk
index 11de87507d..1fec64b00c 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/config-default b/target/linux/imx/cortexa9/config-default
index d829bc7741..42ca6ce8b5 100644
--- a/target/linux/imx/cortexa9/config-default
+++ b/target/linux/imx/cortexa9/config-default
@@ -56,3 +56,444 @@  CONFIG_SOC_IMX6=y
 CONFIG_SOC_IMX6Q=y
 CONFIG_SOC_IMX6SL=y
 CONFIG_SOC_IMX6SX=y
+CONFIG_ALIGNMENT_TRAP=y
+CONFIG_ARCH_32BIT_OFF_T=y
+CONFIG_ARCH_HIBERNATION_POSSIBLE=y
+CONFIG_ARCH_KEEP_MEMBLOCK=y
+CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
+CONFIG_ARCH_MMAP_RND_BITS_MAX=15
+CONFIG_ARCH_MULTIPLATFORM=y
+CONFIG_ARCH_MULTI_V6_V7=y
+CONFIG_ARCH_MULTI_V7=y
+CONFIG_ARCH_MXC=y
+CONFIG_ARCH_NR_GPIO=0
+CONFIG_ARCH_OPTIONAL_KERNEL_RWX=y
+CONFIG_ARCH_OPTIONAL_KERNEL_RWX_DEFAULT=y
+CONFIG_ARCH_SELECT_MEMORY_MODEL=y
+CONFIG_ARCH_SPARSEMEM_ENABLE=y
+CONFIG_ARCH_SUSPEND_POSSIBLE=y
+CONFIG_ARM=y
+CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y
+CONFIG_ARM_CRYPTO=y
+CONFIG_ARM_ERRATA_754322=y
+CONFIG_ARM_ERRATA_764369=y
+CONFIG_ARM_ERRATA_775420=y
+CONFIG_ARM_ERRATA_814220=y
+CONFIG_ARM_HAS_SG_CHAIN=y
+CONFIG_ARM_HEAVY_MB=y
+# CONFIG_ARM_IMX_CPUFREQ_DT is not set
+CONFIG_ARM_L1_CACHE_SHIFT=6
+CONFIG_ARM_L1_CACHE_SHIFT_6=y
+CONFIG_ARM_PATCH_IDIV=y
+CONFIG_ARM_PATCH_PHYS_VIRT=y
+CONFIG_ARM_THUMB=y
+CONFIG_ARM_UNWIND=y
+CONFIG_ARM_VIRT_EXT=y
+CONFIG_ASN1=y
+CONFIG_ASSOCIATIVE_ARRAY=y
+CONFIG_ATA=y
+CONFIG_ATAGS=y
+# CONFIG_ATA_SFF is not set
+CONFIG_AUTO_ZRELADDR=y
+CONFIG_BINFMT_FLAT_ARGVP_ENVP_ON_STACK=y
+CONFIG_BLK_DEV_LOOP=y
+CONFIG_BLK_PM=y
+CONFIG_CACHE_L2X0=y
+CONFIG_CLKSRC_IMX_GPT=y
+CONFIG_CLKSRC_MMIO=y
+# CONFIG_CLK_IMX8MM is not set
+# CONFIG_CLK_IMX8MN is not set
+# CONFIG_CLK_IMX8MP is not set
+# CONFIG_CLK_IMX8MQ is not set
+CONFIG_CLONE_BACKWARDS=y
+CONFIG_CLZ_TAB=y
+CONFIG_COMMON_CLK=y
+CONFIG_COMPAT_32BIT_TIME=y
+CONFIG_CPUFREQ_DT=y
+CONFIG_CPUFREQ_DT_PLATDEV=y
+CONFIG_CPU_32v6K=y
+CONFIG_CPU_32v7=y
+CONFIG_CPU_ABRT_EV7=y
+CONFIG_CPU_CACHE_V7=y
+CONFIG_CPU_CACHE_VIPT=y
+CONFIG_CPU_COPY_V6=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
+CONFIG_CPU_FREQ_GOV_ATTR_SET=y
+CONFIG_CPU_FREQ_GOV_COMMON=y
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+CONFIG_CPU_FREQ_GOV_ONDEMAND=y
+CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y
+CONFIG_CPU_FREQ_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_STAT=y
+CONFIG_CPU_HAS_ASID=y
+CONFIG_CPU_PABRT_V7=y
+CONFIG_CPU_RMAP=y
+CONFIG_CPU_SPECTRE=y
+CONFIG_CPU_THERMAL=y
+CONFIG_CPU_THUMB_CAPABLE=y
+CONFIG_CPU_TLB_V7=y
+CONFIG_CPU_V7=y
+CONFIG_CRC16=y
+CONFIG_CRYPTO_AES_ARM=y
+CONFIG_CRYPTO_AES_ARM_BS=y
+CONFIG_CRYPTO_ARCH_HAVE_LIB_CHACHA=y
+CONFIG_CRYPTO_AUTHENC=y
+CONFIG_CRYPTO_CBC=y
+CONFIG_CRYPTO_CHACHA20=y
+CONFIG_CRYPTO_CHACHA20_NEON=y
+CONFIG_CRYPTO_CRC32=y
+CONFIG_CRYPTO_CRC32C=y
+CONFIG_CRYPTO_CRC32_ARM_CE=y
+CONFIG_CRYPTO_CRYPTD=y
+CONFIG_CRYPTO_CTS=y
+CONFIG_CRYPTO_DEFLATE=y
+CONFIG_CRYPTO_DEV_FSL_CAAM=y
+CONFIG_CRYPTO_DEV_FSL_CAAM_AHASH_API=y
+CONFIG_CRYPTO_DEV_FSL_CAAM_AHASH_API_DESC=y
+CONFIG_CRYPTO_DEV_FSL_CAAM_COMMON=y
+CONFIG_CRYPTO_DEV_FSL_CAAM_CRYPTO_API=y
+CONFIG_CRYPTO_DEV_FSL_CAAM_CRYPTO_API_DESC=y
+# CONFIG_CRYPTO_DEV_FSL_CAAM_DEBUG is not set
+# CONFIG_CRYPTO_DEV_FSL_CAAM_INTC is not set
+CONFIG_CRYPTO_DEV_FSL_CAAM_JR=y
+CONFIG_CRYPTO_DEV_FSL_CAAM_PKC_API=y
+CONFIG_CRYPTO_DEV_FSL_CAAM_RINGSIZE=9
+CONFIG_CRYPTO_DEV_FSL_CAAM_RNG_API=y
+CONFIG_CRYPTO_DRBG=y
+CONFIG_CRYPTO_DRBG_HMAC=y
+CONFIG_CRYPTO_DRBG_MENU=y
+CONFIG_CRYPTO_ECB=y
+CONFIG_CRYPTO_ENGINE=y
+CONFIG_CRYPTO_HASH_INFO=y
+CONFIG_CRYPTO_HMAC=y
+CONFIG_CRYPTO_HW=y
+CONFIG_CRYPTO_JITTERENTROPY=y
+CONFIG_CRYPTO_LIB_CHACHA_GENERIC=y
+CONFIG_CRYPTO_LIB_DES=y
+CONFIG_CRYPTO_LIB_SHA256=y
+CONFIG_CRYPTO_LZO=y
+CONFIG_CRYPTO_RNG=y
+CONFIG_CRYPTO_RNG2=y
+CONFIG_CRYPTO_RNG_DEFAULT=y
+CONFIG_CRYPTO_RSA=y
+CONFIG_CRYPTO_SEQIV=y
+CONFIG_CRYPTO_SHA1=y
+CONFIG_CRYPTO_SHA1_ARM=y
+CONFIG_CRYPTO_SHA1_ARM_NEON=y
+CONFIG_CRYPTO_SHA256=y
+CONFIG_CRYPTO_SHA256_ARM=y
+CONFIG_CRYPTO_SHA512=y
+CONFIG_CRYPTO_SHA512_ARM=y
+CONFIG_CRYPTO_SIMD=y
+CONFIG_CRYPTO_XTS=y
+CONFIG_CRYPTO_ZSTD=y
+CONFIG_DCACHE_WORD_ACCESS=y
+CONFIG_DEBUG_LL_INCLUDE="mach/debug-macro.S"
+CONFIG_DEBUG_MISC=y
+CONFIG_DECOMPRESS_BZIP2=y
+CONFIG_DECOMPRESS_GZIP=y
+CONFIG_DECOMPRESS_LZO=y
+CONFIG_DECOMPRESS_XZ=y
+CONFIG_DMADEVICES=y
+CONFIG_DMA_ENGINE=y
+CONFIG_DMA_OF=y
+CONFIG_DMA_OPS=y
+CONFIG_DMA_REMAP=y
+CONFIG_DMA_VIRTUAL_CHANNELS=y
+CONFIG_DTC=y
+CONFIG_EDAC_ATOMIC_SCRUB=y
+CONFIG_EDAC_SUPPORT=y
+CONFIG_ENCRYPTED_KEYS=y
+CONFIG_EXT4_FS=y
+CONFIG_EXT4_FS_POSIX_ACL=y
+CONFIG_EXT4_FS_SECURITY=y
+CONFIG_EXTCON=y
+CONFIG_EXTRA_FIRMWARE="imx/sdma/sdma-imx6q.bin"
+CONFIG_EXTRA_FIRMWARE_DIR="firmware"
+CONFIG_F2FS_FS=y
+# CONFIG_FEC is not set
+CONFIG_FIXED_PHY=y
+CONFIG_FIX_EARLYCON_MEM=y
+# CONFIG_FSL_DPAA2_SWITCH is not set
+# CONFIG_FSL_ENETC_IERB is not set
+# CONFIG_FSL_IMX8_DDR_PMU is not set
+CONFIG_FS_ENCRYPTION=y
+CONFIG_FS_ENCRYPTION_ALGS=y
+CONFIG_FS_IOMAP=y
+CONFIG_FS_MBCACHE=y
+CONFIG_FS_POSIX_ACL=y
+CONFIG_FWNODE_MDIO=y
+CONFIG_FW_LOADER_PAGED_BUF=y
+CONFIG_GENERIC_ALLOCATOR=y
+CONFIG_GENERIC_ARCH_TOPOLOGY=y
+CONFIG_GENERIC_BUG=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
+CONFIG_GENERIC_CPU_AUTOPROBE=y
+CONFIG_GENERIC_CPU_VULNERABILITIES=y
+CONFIG_GENERIC_EARLY_IOREMAP=y
+CONFIG_GENERIC_GETTIMEOFDAY=y
+CONFIG_GENERIC_IDLE_POLL_SETUP=y
+CONFIG_GENERIC_IRQ_CHIP=y
+CONFIG_GENERIC_IRQ_MULTI_HANDLER=y
+CONFIG_GENERIC_IRQ_SHOW=y
+CONFIG_GENERIC_IRQ_SHOW_LEVEL=y
+CONFIG_GENERIC_LIB_DEVMEM_IS_ALLOWED=y
+CONFIG_GENERIC_PCI_IOMAP=y
+CONFIG_GENERIC_PINCONF=y
+CONFIG_GENERIC_PINCTRL_GROUPS=y
+CONFIG_GENERIC_PINMUX_FUNCTIONS=y
+CONFIG_GENERIC_SCHED_CLOCK=y
+CONFIG_GENERIC_SMP_IDLE_THREAD=y
+CONFIG_GENERIC_STRNCPY_FROM_USER=y
+CONFIG_GENERIC_STRNLEN_USER=y
+CONFIG_GENERIC_TIME_VSYSCALL=y
+CONFIG_GENERIC_VDSO_32=y
+# CONFIG_GIANFAR is not set
+CONFIG_GLOB=y
+CONFIG_GPIOLIB=y
+CONFIG_GPIO_CDEV=y
+CONFIG_GPIO_GENERIC=y
+CONFIG_GPIO_MXC=y
+CONFIG_GRO_CELLS=y
+CONFIG_HANDLE_DOMAIN_IRQ=y
+CONFIG_HARDEN_BRANCH_PREDICTOR=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_HAS_DMA=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT_MAP=y
+CONFIG_HAVE_ARM_ARCH_TIMER=y
+CONFIG_HAVE_SMP=y
+CONFIG_HWMON=y
+CONFIG_HW_RANDOM=y
+CONFIG_HZ_FIXED=0
+CONFIG_HZ_PERIODIC=y
+CONFIG_I2C=y
+CONFIG_I2C_BOARDINFO=y
+CONFIG_I2C_CHARDEV=y
+CONFIG_I2C_IMX=y
+# CONFIG_I2C_IMX_LPI2C is not set
+CONFIG_I2C_SLAVE=y
+# CONFIG_I2C_SLAVE_TESTUNIT is not set
+CONFIG_IMX2_WDT=y
+# CONFIG_IMX7ULP_WDT is not set
+# CONFIG_IMX8MM_THERMAL is not set
+CONFIG_IMX_DMA=y
+# CONFIG_IMX_GPCV2_PM_DOMAINS is not set
+CONFIG_IMX_INTMUX=y
+CONFIG_IMX_IRQSTEER=y
+CONFIG_IMX_SDMA=y
+CONFIG_IMX_THERMAL=y
+# CONFIG_IMX_WEIM is not set
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_IO_URING=y
+CONFIG_IRQCHIP=y
+CONFIG_IRQ_DOMAIN=y
+CONFIG_IRQ_DOMAIN_HIERARCHY=y
+CONFIG_IRQ_FORCED_THREADING=y
+CONFIG_IRQ_WORK=y
+CONFIG_JBD2=y
+# CONFIG_JFFS2_FS is not set
+CONFIG_KEYS=y
+CONFIG_LIBFDT=y
+CONFIG_LOCK_DEBUGGING_SUPPORT=y
+CONFIG_LOCK_SPIN_ON_OWNER=y
+CONFIG_LZO_COMPRESS=y
+CONFIG_LZO_DECOMPRESS=y
+CONFIG_MDIO_BUS=y
+CONFIG_MDIO_DEVICE=y
+CONFIG_MDIO_DEVRES=y
+CONFIG_MEMFD_CREATE=y
+CONFIG_MFD_SYSCON=y
+CONFIG_MIGHT_HAVE_CACHE_L2X0=y
+CONFIG_MIGRATION=y
+CONFIG_MMC=y
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_CQHCI=y
+# CONFIG_MMC_MXC is not set
+CONFIG_MMC_SDHCI=y
+# CONFIG_MMC_SDHCI_ESDHC_IMX is not set
+CONFIG_MMC_SDHCI_PLTFM=y
+CONFIG_MODULES_USE_ELF_REL=y
+CONFIG_MPILIB=y
+CONFIG_MTD_NAND_CORE=y
+CONFIG_MTD_NAND_ECC=y
+CONFIG_MTD_NAND_ECC_SW_HAMMING=y
+CONFIG_MTD_NAND_GPMI_NAND=y
+CONFIG_MTD_RAW_NAND=y
+CONFIG_MTD_UBI=y
+CONFIG_MTD_UBI_BEB_LIMIT=20
+CONFIG_MTD_UBI_BLOCK=y
+CONFIG_MTD_UBI_WL_THRESHOLD=4096
+CONFIG_MUTEX_SPIN_ON_OWNER=y
+# CONFIG_MX3_IPU is not set
+CONFIG_MXC_CLK=y
+CONFIG_MXS_DMA=y
+CONFIG_NEED_DMA_MAP_STATE=y
+CONFIG_NEON=y
+CONFIG_NET_DEVLINK=y
+CONFIG_NET_DSA=y
+CONFIG_NET_DSA_TAG_DSA=y
+CONFIG_NET_DSA_TAG_DSA_COMMON=y
+CONFIG_NET_DSA_TAG_EDSA=y
+CONFIG_NET_FLOW_LIMIT=y
+CONFIG_NET_PTP_CLASSIFY=y
+CONFIG_NET_SELFTESTS=y
+CONFIG_NET_SWITCHDEV=y
+CONFIG_NLS=y
+CONFIG_NLS_CODEPAGE_437=y
+CONFIG_NR_CPUS=4
+CONFIG_NVMEM=y
+# CONFIG_NVMEM_IMX_IIM is not set
+CONFIG_NVMEM_IMX_OCOTP=y
+# CONFIG_NVMEM_SNVS_LPGPR is not set
+CONFIG_NVMEM_SYSFS=y
+CONFIG_OF=y
+CONFIG_OF_ADDRESS=y
+CONFIG_OF_EARLY_FLATTREE=y
+CONFIG_OF_FLATTREE=y
+CONFIG_OF_GPIO=y
+CONFIG_OF_IRQ=y
+CONFIG_OF_KOBJ=y
+CONFIG_OF_MDIO=y
+CONFIG_OLD_SIGACTION=y
+CONFIG_OLD_SIGSUSPEND3=y
+CONFIG_OUTER_CACHE=y
+CONFIG_OUTER_CACHE_SYNC=y
+CONFIG_PADATA=y
+CONFIG_PAGE_OFFSET=0x80000000
+CONFIG_PERF_USE_VMALLOC=y
+CONFIG_PGTABLE_LEVELS=2
+CONFIG_PHYLIB=y
+CONFIG_PHYLINK=y
+CONFIG_PINCTRL=y
+# CONFIG_PINCTRL_IMX8MM is not set
+# CONFIG_PINCTRL_IMX8MN is not set
+# CONFIG_PINCTRL_IMX8MP is not set
+# CONFIG_PINCTRL_IMX8MQ is not set
+# CONFIG_PINCTRL_IMX8ULP is not set
+CONFIG_PL310_ERRATA_769419=y
+CONFIG_PM=y
+CONFIG_PM_CLK=y
+CONFIG_PM_OPP=y
+CONFIG_PPS=y
+CONFIG_PTP_1588_CLOCK=y
+CONFIG_PTP_1588_CLOCK_OPTIONAL=y
+CONFIG_PWM=y
+# CONFIG_PWM_IMX1 is not set
+CONFIG_PWM_IMX27=y
+# CONFIG_PWM_IMX_TPM is not set
+CONFIG_PWM_SYSFS=y
+CONFIG_RAS=y
+CONFIG_RATIONAL=y
+CONFIG_RD_BZIP2=y
+CONFIG_RD_GZIP=y
+CONFIG_RD_LZO=y
+CONFIG_RD_XZ=y
+CONFIG_REGMAP=y
+CONFIG_REGMAP_MMIO=y
+CONFIG_REGULATOR=y
+CONFIG_REGULATOR_FIXED_VOLTAGE=y
+CONFIG_RESET_CONTROLLER=y
+CONFIG_RFS_ACCEL=y
+CONFIG_RPS=y
+CONFIG_RTC_CLASS=y
+# CONFIG_RTC_DRV_CMOS is not set
+# CONFIG_RTC_DRV_IMXDI is not set
+# CONFIG_RTC_DRV_MXC is not set
+# CONFIG_RTC_DRV_MXC_V2 is not set
+CONFIG_RTC_I2C_AND_SPI=y
+CONFIG_RWSEM_SPIN_ON_OWNER=y
+CONFIG_SCSI=y
+CONFIG_SCSI_COMMON=y
+CONFIG_SERIAL_8250_FSL=y
+CONFIG_SERIAL_IMX=y
+CONFIG_SERIAL_IMX_CONSOLE=y
+CONFIG_SERIAL_IMX_EARLYCON=y
+CONFIG_SERIAL_MCTRL_GPIO=y
+CONFIG_SGL_ALLOC=y
+CONFIG_SG_POOL=y
+CONFIG_SMP=y
+CONFIG_SMP_ON_UP=y
+# CONFIG_SND_SOC_IMX_CARD is not set
+# CONFIG_SND_SOC_IMX_HDMI is not set
+CONFIG_SOCK_RX_QUEUE_MAPPING=y
+CONFIG_SOC_BUS=y
+# CONFIG_SOC_IMX50 is not set
+# CONFIG_SOC_IMX51 is not set
+# CONFIG_SOC_IMX53 is not set
+# CONFIG_SOC_IMX6Q is not set
+# CONFIG_SOC_IMX6SL is not set
+# CONFIG_SOC_IMX6SLL is not set
+# CONFIG_SOC_IMX6SX is not set
+# CONFIG_SOC_IMX6UL is not set
+# CONFIG_SOC_IMX7D is not set
+# CONFIG_SOC_IMX7ULP is not set
+# CONFIG_SOC_IMX8M is not set
+# CONFIG_SOC_LS1021A is not set
+# CONFIG_SOC_VF610 is not set
+CONFIG_SPARSE_IRQ=y
+CONFIG_SPI=y
+CONFIG_SPI_BITBANG=y
+# CONFIG_SPI_FSL_LPSPI is not set
+# CONFIG_SPI_FSL_QUADSPI is not set
+CONFIG_SPI_IMX=y
+CONFIG_SPI_MASTER=y
+CONFIG_SRAM=y
+CONFIG_SRAM_EXEC=y
+CONFIG_SRCU=y
+CONFIG_STMP_DEVICE=y
+CONFIG_SWPHY=y
+CONFIG_SWP_EMULATE=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_THERMAL=y
+CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
+CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0
+CONFIG_THERMAL_GOV_STEP_WISE=y
+CONFIG_THERMAL_OF=y
+CONFIG_TICK_CPU_ACCOUNTING=y
+CONFIG_TIMER_OF=y
+CONFIG_TIMER_PROBE=y
+CONFIG_TREE_RCU=y
+CONFIG_TREE_SRCU=y
+CONFIG_UBIFS_FS=y
+# CONFIG_UCLAMP_TASK is not set
+CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h"
+CONFIG_UNWINDER_ARM=y
+CONFIG_USB=y
+CONFIG_USB_CHIPIDEA=y
+CONFIG_USB_CHIPIDEA_HOST=y
+CONFIG_USB_CHIPIDEA_IMX=y
+CONFIG_USB_CHIPIDEA_UDC=y
+CONFIG_USB_COMMON=y
+CONFIG_USB_EHCI_HCD=y
+# CONFIG_USB_EHCI_HCD_PLATFORM is not set
+CONFIG_USB_GADGET=y
+CONFIG_USB_MXS_PHY=y
+CONFIG_USB_OTG=y
+CONFIG_USB_PHY=y
+CONFIG_USB_ROLE_SWITCH=y
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_ULPI_BUS=y
+CONFIG_USE_OF=y
+CONFIG_VFP=y
+CONFIG_VFPv3=y
+CONFIG_VMSPLIT_2G=y
+# CONFIG_VMSPLIT_3G is not set
+CONFIG_WATCHDOG_CORE=y
+CONFIG_XPS=y
+CONFIG_XXHASH=y
+CONFIG_XZ_DEC_ARM=y
+CONFIG_XZ_DEC_ARMTHUMB=y
+CONFIG_XZ_DEC_BCJ=y
+CONFIG_ZBOOT_ROM_BSS=0
+CONFIG_ZBOOT_ROM_TEXT=0
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZSTD_COMPRESS=y
+CONFIG_ZSTD_DECOMPRESS=y
diff --git a/target/linux/imx/cortexa9/target.mk b/target/linux/imx/cortexa9/target.mk
index 9bd63c7be1..cc48a8dbd0 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/gen_sdcard_head_img.sh b/target/linux/imx/image/gen_sdcard_head_img.sh
new file mode 100755
index 0000000000..583ec1bd95
--- /dev/null
+++ b/target/linux/imx/image/gen_sdcard_head_img.sh
@@ -0,0 +1,21 @@ 
+#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# Copyright 2022 NXP
+
+set -x
+[ $# -eq 5 ] || {
+    echo "SYNTAX: $0 <file> <kernel part offset> <kernel size> <rootfs part offset> <rootfs size>"
+    exit 1
+}
+
+OUTPUT="$1"
+KERNELOFFSET="$(($2 * 1024))"
+KERNELSIZE="$3"
+ROOTFSOFFSET="$(($4 * 1024))"
+ROOTFSSIZE="$5"
+
+head=4
+sect=63
+
+set $(ptgen -o $OUTPUT -h $head -s $sect -t 83 -p ${KERNELSIZE}M@${KERNELOFFSET} -p ${ROOTFSSIZE}M@${ROOTFSOFFSET})
diff --git a/target/linux/imx/image/imx8.mk b/target/linux/imx/image/imx8.mk
new file mode 100644
index 0000000000..0695389607
--- /dev/null
+++ b/target/linux/imx/image/imx8.mk
@@ -0,0 +1,98 @@ 
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# Copyright 2022 NXP
+
+# 16MB bootloader + 40MB kernel
+IMX_SD_KERNELPART_SIZE = 40
+IMX_SD_KERNELPART_OFFSET = 16
+IMX_SD_ROOTFSPART_OFFSET = 64
+IMX_SD_IMAGE_SIZE = $(shell echo $$((($(IMX_SD_ROOTFSPART_OFFSET) + \
+	$(CONFIG_TARGET_ROOTFS_PARTSIZE)))))
+
+define Build/imx-clean
+	# Clean the target
+	rm -f $@
+endef
+
+define Build/imx-compile-dtb
+	# Compile dts file to dtb
+	$(call Image/BuildDTB,$(DTS_DIR)/$(DEVICE_DTS).dts,$(DTS_DIR)/$(DEVICE_DTS).dtb)
+endef
+
+define Build/imx-create-flash
+	# Combile firmware + bl31 + uboot to flash.bin
+	cd $(STAGING_DIR_IMAGE)/$(MKIMG_DIR) && $(MAKE) SOC=$(PLAT) $(DEVICE_TYPE)
+endef
+
+define Build/imx-append
+	# append binary
+	dd if=$(STAGING_DIR_IMAGE)/$(1) >> $@
+endef
+
+define Build/imx-append-boot
+	# Append the uboot, firmware etc.
+	dd if=$(STAGING_DIR_IMAGE)/$(MKIMG_DIR)/$(SOC_TYPE)/flash.bin >> $@
+endef
+
+define Build/imx-append-dtb
+	# Append the dtb file
+	dd if=$(DTS_DIR)/$(1).dtb >> $@
+endef
+
+define Build/imx-append-kernel
+	# append the kernel
+	mkdir -p $@.tmp && \
+	cp $(IMAGE_KERNEL) $@.tmp && \
+	cp $(DTS_DIR)/$(DEVICE_DTS).dtb $@.tmp && \
+	make_ext4fs -J -L kernel -l "$(IMX_SD_KERNELPART_SIZE)M" "$@.kernel.part" "$@.tmp" && \
+	dd if=$@.kernel.part >> $@ && \
+	rm -rf $@.tmp && \
+	rm -f $@.kernel.part
+endef
+
+define Build/imx-append-sdhead
+	# Create the sd file table
+	./gen_sdcard_head_img.sh $(STAGING_DIR_IMAGE)/$(1)-sdcard-head.img \
+		$(IMX_SD_KERNELPART_OFFSET) $(IMX_SD_KERNELPART_SIZE) \
+		$(IMX_SD_ROOTFSPART_OFFSET) $(CONFIG_TARGET_ROOTFS_PARTSIZE)
+	dd if=$(STAGING_DIR_IMAGE)/$(1)-sdcard-head.img >> $@
+endef
+
+define Device/Default
+  PROFILES := Default
+  FILESYSTEMS := squashfs
+  KERNEL_INITRAMFS = kernel-bin
+  KERNEL_LOADADDR := 0x80080000
+  KERNEL_ENTRY_POINT := 0x80080000
+  IMAGE_SIZE := 64m
+  KERNEL = kernel-bin
+  IMAGES := sdcard.img sysupgrade.bin
+  IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
+endef
+
+define Device/imx8mplus
+  DEVICE_VENDOR := NXP
+  DEVICE_MODEL := IMX8MPLUS
+  DEVICE_VARIANT := SD Card Boot
+  PLAT := iMX8MP
+  SOC_TYPE := iMX8M
+  DEVICE_TYPE := flash_evk
+  ENV_NAME:=imx8mp-sdboot
+  MKIMG_DIR:= `find $(STAGING_DIR_IMAGE) -name imx-mkimage* | xargs basename`
+  DEVICE_PACKAGES += \
+	atf-imx8mp \
+	firmware-imx \
+	imx-mkimage \
+	u-boot-imx8mp
+  DEVICE_DTS := freescale/imx8mp-evk
+  IMAGE/sdcard.img := \
+	imx-compile-dtb | \
+	imx-create-flash | \
+	imx-clean | \
+	imx-append-sdhead $(1) | pad-to 32K | \
+	imx-append-boot | pad-to 4M | \
+	imx-append $$(ENV_NAME)-uboot-env.bin | pad-to $(IMX_SD_KERNELPART_OFFSET)M | \
+	imx-append-kernel | pad-to $(IMX_SD_ROOTFSPART_OFFSET)M | \
+	append-rootfs | pad-to $(IMX_SD_IMAGE_SIZE)M
+endef
+TARGET_DEVICES += imx8mplus
diff --git a/target/linux/imx/image/mkits-multiple-config.sh b/target/linux/imx/image/mkits-multiple-config.sh
new file mode 100755
index 0000000000..0d83f9e34d
--- /dev/null
+++ b/target/linux/imx/image/mkits-multiple-config.sh
@@ -0,0 +1,600 @@ 
+#!/usr/bin/env bash
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# Author: Jason Wu <jason.hy.wu@gmail.com>
+# with modifications for multi-DTB-same-image by:
+# Mathew McBride <matt@traverse.com.au>
+#
+# U-Boot firmware supports the booting of images in the Flattened Image
+# Tree (FIT) format.  The FIT format uses a device tree structure to
+# describe a kernel image, device tree blob, ramdisk, etc.  This script
+# creates an Image Tree Source (.its file) which can be passed to the
+# 'mkimage' utility to generate an Image Tree Blob (.itb file).  The .itb
+# file can then be booted by U-Boot (or other bootloaders which support
+# FIT images).  See doc/uImage.FIT/howto.txt in U-Boot source code for
+# additional information on FIT images.
+#
+# This tools supports:
+#   - multi-configuration
+#   - multi-image support - multiple kernel/fdt/ramdsik
+#   - per image configuration:
+#     - hash algorithm and generated required subnodes
+#     - compression
+#     - signature and generated required subnodes
+#
+set -e
+
+# image config limit
+MAX_IMG=50
+# conf config limit
+MAX_CONF=10
+
+# declare main data array
+declare -a img_array
+declare -a conf_array
+
+# initialize array with empty values
+for (( index=1; index<=$MAX_IMG; index++ )); do
+	declare -a img$index
+	for i in {0..13}; do
+		eval img${index}[$i]=""
+	done
+done
+
+for (( index=1; index<=$MAX_CONF; index++ )); do
+	declare -a conf$index
+	for i in {0..9}; do
+		eval conf${index}[$i]=""
+	done
+done
+
+# imgX array index information
+#	0: type of image - kernel, fdt, ramdsik
+#	1: image location
+#	2: image index
+#	3: loadaddr of image
+#	4: entrypoint of image
+#	5: compression
+#	6: hash algorithm
+#	7: part of the configuration
+#	8: Human friend name for the image
+#	9: key file name
+#	10: signature
+# 	11: conf friendly name
+
+# confX array index information
+#	0: conf number
+#	1: kernel conf
+#	2: fdt conf
+#	3: rootfs conf
+#	4: kernel key file
+#	5: fdt key file
+#	6: rootfs key file
+#	7: kernel sign_algorithm
+#	8: fdt sign_algorithm
+#	9: rootfs sign_algorithm
+#	10: conf friendly name
+
+usage() {
+	echo "Usage: `basename $0` -A arch -v version -o its_file" \
+		"-k kernel -a addr -e entry [-C none] [-h sha1] [-c conf]"
+	echo -e "Example1:\n\tkernel image ker_img1 with no compression +"
+	echo -e "\tsha1 hash + fdt dtb1 with sha1 and crc32 hash for conf 1"
+	echo -e "\t $ `basename $0` -A arm -v 4.4 \ "
+	echo -e "\t      -k ker_img1 -C none -h sha1 -e 0x8000 -a 0x8000 -c 1 \ "
+	echo -e "\t      -d dtb1 -h sha1 -h crc32 -c 1\n"
+	echo "General settings:"
+	echo -e "\t-A ==> set architecture to 'arch'"
+	echo -e "\t-v ==> set kernel version to 'version'"
+	echo -e "\t-o ==> create output file 'its_file' [optional]"
+	echo "Input image type:"
+	echo -e "\t-k ==> kernel image 'kernel'"
+	echo -e "\t-d ==> Device Tree Blob 'dtb'"
+	echo -e "\t-r ==> ramdisk image 'ramdisk"
+	echo "Per image configurations:"
+	echo -e "\t-C ==> set compression type 'comp'"
+	echo -e "\t-c ==> set image config (multiple -c allowed)"
+	echo -e "\t-a ==> set load address to 'addr' (hex)"
+	echo -e "\t-e ==> set entry point to 'entry' (hex)"
+	echo -e "\t-D ==> human friendly 'name' (one word only)"
+	echo -e "\t-h ==> set hash algorithm (multiple -h allowed)"
+	echo -e "\t-s ==> set signature for given config image"
+	echo -e "\t-K ==> set key file for given config image"
+	exit 1
+}
+
+array_check()
+{
+	local a=999
+	local max_a=0
+	local max_i=0
+
+	if echo $1 | grep -q img; then
+		max_a=$MAX_IMG
+		max_i=13
+		let a=$(echo $1 | awk -F "img" '{print $2}')
+	elif echo $1 | grep -q conf; then
+		max_a=$MAX_CONF
+		max_i=10
+		let a=$(echo $1 | awk -F "conf" '{print $2}')
+	fi
+	if [ ${a} -lt 0 -o ${a} -gt ${max_a} -o \
+		${2} -lt 0 -o ${2} -gt ${max_i} ]; then
+		echo "WARNING: Invalid array name, skipping!!!"
+		return 255
+	fi
+}
+
+#
+# $1:	array name
+# $2:	index
+# $3:	value
+# $4:	append operation
+#
+array_put()
+{
+	# check if array is declared
+	array_check $1 $2 || return 0
+	if [ -z "$4" ]; then
+		eval $1[$2]=$3
+	else
+		eval $1[$2]=\"\${$1[$2]} $3\"
+	fi
+}
+
+#
+# $1:	array name
+# $2:	index
+#
+array_get()
+{
+	local val
+	eval val=\${$1[$2]}
+	echo $val
+}
+
+parse_args() {
+	local i=-1 k=-1 d=-1 r=-1
+	while getopts ":A:a:C:c:D:d:e:h:k:K:o:v:r:s:n:" OPTION; do
+		case $OPTION in
+			A ) ARCH=$OPTARG;;
+			a ) array_put img$i 3 $OPTARG;;
+			C ) value_sanity_chk compression $OPTARG;
+				array_put img$i 5 $OPTARG;;
+			c ) array_put img$i 7 $OPTARG append;;
+			D ) array_put img$i 8 $OPTARG;;
+			d ) i=$(($i + 1));
+				d=$(($d + 1));
+				img_array[$i]=img$i;
+				array_put img$i 0 fdt;
+				array_put img$i 1 $OPTARG;
+				array_put img$i 2 $d;
+				;;
+			e ) array_put img$i 4 $OPTARG;;
+			h ) value_sanity_chk hash $OPTARG;
+				array_put img$i 6 $OPTARG append;;
+			k ) i=$(($i + 1));
+				k=$(($k + 1));
+				img_array[$i]=img$i;
+				array_put img$i 0 "kernel";
+				array_put img$i 1 $OPTARG;
+				array_put img$i 2 $k;
+				;;
+			K ) array_put img$i 9 $OPTARG;;
+			n ) array_put img$i 11 $OPTARG;;
+			o ) OUTPUT=$OPTARG;;
+			v ) VERSION=$OPTARG;;
+			r ) i=$(($i + 1));
+				r=$(($r + 1));
+				img_array[$i]=img$i;
+				array_put img$i 0 "ramdisk";
+				array_put img$i 1 $OPTARG;
+				array_put img$i 2 $r;
+				;;
+			s ) value_sanity_chk signature $OPTARG;
+				array_put img$i 10 $OPTARG;
+				;;
+			* ) echo "Invalid option passed to '$0' (options:$@)"
+			usage;;
+		esac
+	done
+	shift $(($OPTIND - 1))
+	[ $# -gt 0 ] && {
+		echo "Failed to parse all passed arguments (unrecognized: \"$@\")"
+		exit 1
+	}
+	[ -n "${OUTPUT}" ] || OUTPUT=fitimage.its
+	[ -n "${VERSION}" ] || VERSION="Unknown"
+	[ -n "${ARCH}" ] || ARCH=arm
+}
+
+#
+# sanity check for signature, compression and hash
+#
+value_sanity_chk()
+{
+	local valid=""
+	case $1 in
+		signature) valid="sha-1,rsa-2048 sha-256,rsa-2048 sha-256,rsa-4096";;
+		compression) valid="gzip bzip2 none";;
+		hash) valid="sha1 md5 crc32";;
+	esac
+	if ! echo $valid | grep -q "$2"; then
+		echo "Error: Invalid $1 provided '$2'"
+		echo "Valid options are: $valid"
+		exit 255
+	fi
+}
+
+#
+# Emit the fitImage section bits
+#
+# $1: Section bit type: fitstart   - its header
+#                       imagestart - image section start
+#                       confstart  - configuration section start
+#                       sectend    - section end
+#                       fitend     - fitimage end
+# $2: optional variable for confstart section
+#
+emit_its() {
+	case $1 in
+	fitstart)
+		cat << EOF > ${OUTPUT}
+/dts-v1/;
+
+/ {
+	description = "U-Boot fitImage for ${VERSION} kernel";
+	#address-cells = <1>;
+EOF
+	;;
+	imagestart)
+		echo -e "\n\timages {" >> ${OUTPUT};;
+	confstart)
+#		echo -e "\tconfigurations {\n\t\tdefault = \"conf@${2:-0}\";" \
+	echo -e "\tconfigurations {\n" \
+			>> ${OUTPUT};;
+	sectend)
+		echo -e "\t};" >> ${OUTPUT};;
+	fitend)
+		echo -e "};" >> ${OUTPUT};;
+	esac
+}
+
+#
+# Emit kernel image node
+#
+emit_kernel() {
+	local image=${1}
+	local count=${2:-${MAX_IMG}}
+	local loaddaddr=${3:-0x8000}
+	local entrypoint=${4:-0x8000}
+	local compresson=${5:-none}
+	local checksum=${6:-sha1}
+	local name=${7}
+
+	[ -z "${name}" ] || name=" ${name}"
+	cat << EOF >> ${OUTPUT}
+		kernel@${count} {
+			description = "Linux Kernel${name}";
+			data = /incbin/("${image}");
+			type = "kernel";
+			arch = "${ARCH}";
+			os = "linux";
+			compression = "${compresson}";
+			load = <${loaddaddr}>;
+			entry = <${entrypoint}>;
+EOF
+	emit_cksum ${checksum}
+
+	if [ -z "$SIGN_IN_CONF" ] ; then
+		emit_signature "$9" "" "" "$8" "" ""
+	fi
+
+	echo "		};" >> ${OUTPUT}
+}
+
+#
+# Emit fdt node
+#
+emit_fdt() {
+	local image=${1}
+	local count=${2:-${MAX_IMG}}
+	local compresson=${3:-none}
+	local checksum=${4:-sha1}
+	local name=${5}
+	local loadaddr=${6}
+
+	[ -z "${name}" ] || name=" ${name}"
+	cat << EOF >> ${OUTPUT}
+		fdt@${count} {
+			description = "Flattened Device Tree blob${name}";
+			data = /incbin/("${image}");
+			type = "flat_dt";
+			arch = "${ARCH}";
+			load = <${loadaddr}>;
+			compression = "none";
+EOF
+	emit_cksum ${checksum}
+	if [ -z "$SIGN_IN_CONF" ] ; then
+		emit_signature "" "$7" "" "" "$6" ""
+	fi
+	echo "		};" >> ${OUTPUT}
+}
+
+#
+# Emit ramdisk node
+#
+emit_ramdisk() {
+	local image=${1}
+	local count=${2:-${MAX_IMG}}
+	local compresson=${3:-none}
+	local checksum=${4:-sha1}
+	local name=${5}
+
+	[ -z "${name}" ] || name=" ${name}"
+	cat << EOF >> ${OUTPUT}
+		ramdisk@${count} {
+			description = "ramdisk${name}";
+			data = /incbin/("${image}");
+			type = "ramdisk";
+			arch = "${ARCH}";
+			os = "linux";
+			compression = "${compresson}";
+EOF
+	emit_cksum ${checksum}
+	if [ -z "$SIGN_IN_CONF" ] ; then
+		emit_signature "" "" "$7" "" "" "$6"
+	fi
+	echo "		};" >> ${OUTPUT}
+}
+
+#
+# Emit check sum sub node
+#
+emit_cksum() {
+	csum_list=$@
+	count=1
+	for csum in ${csum_list}; do
+		cat << EOF >> ${OUTPUT}
+			hash@${count} {
+				algo = "${csum}";
+			};
+EOF
+		count=`expr ${count} + 1`
+	done
+}
+
+#
+# Emit signature sub node
+#
+emit_signature() {
+	local kernel=$1
+	local fdt=$2
+	local rootfs=$3
+	local kernel_key=$4
+	local fdt_key=$5
+	local rootfs_key=$6
+	local imgs=""
+	local count=0
+	local chk_list="" algo="" algos="" i=""
+
+	for i in kernel fdt rootfs; do
+		eval algo=\$$i
+		eval key=\$${i}_key
+		[ -n "$algo" ] || continue
+		if ! echo "$algos" | grep -q $algo; then
+			if [ -z "$algos" ]; then
+				algos=$algo
+			else
+				algos="${algos} $algo"
+			fi
+		fi
+		if ! echo "$keys" | grep -q $key; then
+			if [ -z "$keys" ]; then
+				keys=$key
+			else
+				keys="${keys} $key"
+			fi
+		fi
+	done
+
+	for algo in $algos; do
+		for key in $keys; do
+			img=""
+			for i in kernel fdt rootfs; do
+				eval tmp_algo=\$$i
+				eval tmp_key=\$${i}_key
+				[ "$tmp_algo" == "$algo" ] || continue
+				[ "$tmp_key" == "$key" ] || continue
+				if [ -z "$img" ]; then
+					img=$i
+				else
+					img=${img},$i
+				fi
+			done
+
+			[ -n "$img" ] || continue
+			cat << EOF >> ${OUTPUT}
+			signature@${count} {
+				algo = "${algo}";
+				key-name-hint = "${key}";
+EOF
+			if [ -n "$SIGN_IN_CONF" ] ; then
+				echo "			sign-images = \"$img\";" >> ${OUTPUT}
+			fi
+			echo "			};" >> ${OUTPUT}
+
+			count=`expr ${count} + 1`
+		done
+	done
+}
+
+#
+# Emit config sub nodes
+#
+emit_config() {
+	local conf_csum="sha1"
+
+	config_name="conf@${1}"
+	if [ ! -z "${11}" ]; then
+		config_name="${11}"
+	fi
+	if [ -z "${2}" ]; then
+		echo "Error: config has no kernel img, skipping conf node!"
+		return 0
+	fi
+
+	# Test if we have any DTBs at all
+	if [ -z "${3}" ] ; then
+		conf_desc="Boot Linux kernel"
+		fdt_line=""
+	else
+		conf_desc="Boot Linux kernel with FDT blob"
+		fdt_line="
+			fdt = \"fdt@${3}\";"
+	fi
+
+	# Test if we have any ROOTFS at all
+	if [ -n "${4}" ] ; then
+		conf_desc="$conf_desc + ramdisk"
+		fdt_line="${fdt_line}
+			ramdisk = \"ramdisk@${4}\";"
+	fi
+
+	kernel_line="kernel = \"kernel@${2}\";"
+
+	cat << EOF >> ${OUTPUT}
+		${config_name} {
+			description = "${conf_desc}";
+			${kernel_line}${fdt_line}
+			hash@1 {
+				algo = "${conf_csum}";
+			};
+EOF
+	if [ -n "$SIGN_IN_CONF" ] ; then
+		emit_signature "$5" "$6" "$7" "$8" "$9" "${10}"
+	fi
+
+	echo "		};" >> ${OUTPUT}
+}
+
+#
+# remove prefix space
+#
+remove_prefix_space()
+{
+	echo "$@" | sed "s:^ ::g"
+}
+
+#
+# generate image nodes and its subnodes
+#
+emit_image_nodes()
+{
+	local t img_c img_i img_index chk
+	local img_type img_path img_count img_loadadr img_entrypoint \
+		img_compression img_hash img_conf img_name img_key img_sign \
+		img_index
+
+	emit_its imagestart
+	for t in "kernel" "fdt" "ramdisk"; do
+		img_index=0
+		for a in ${img_array[@]}; do
+			img_type=$(array_get $a 0)
+			img_path=$(array_get $a 1)
+			img_count=$(array_get $a 2)
+			img_loadadr=$(array_get $a 3)
+			img_entrypoint=$(array_get $a 4)
+			img_compression=$(array_get $a 5)
+			img_hash=$(array_get $a 6)
+			img_conf=$(array_get $a 7)
+			img_name=$(array_get $a 8)
+			img_key=$(array_get $a 9)
+			img_sign=$(array_get $a 10)
+			img_cname=$(array_get $a 11)
+
+			img_conf=$(remove_prefix_space $img_conf)
+			img_hash=$(remove_prefix_space $img_hash)
+
+			[ "${img_type}" == $t ] || continue
+			# generate sub nodes
+			eval chk=\$DEF_$t
+			[ -n "${chk}" ] || eval DEF_$t=$img_count
+			case $t in
+				kernel) emit_kernel "$img_path" "$img_count" \
+					"$img_loadadr" "$img_entrypoint" \
+					"$img_compression" "$img_hash" \
+					"$img_name" "$img_key" "$img_sign";;
+				fdt) emit_fdt "$img_path" "$img_count" \
+					"$img_compression" "$img_hash" \
+					"$img_name" "$img_loadadr" "$img_key" "$img_sign"  ;;
+
+				ramdisk) emit_ramdisk "$img_path" "$img_count" \
+					"$img_compression" "$img_hash" \
+					"$img_name" "$img_key" "$img_sign";;
+			esac
+
+			# set up configuration data
+			for img_c in $img_conf; do
+				img_i=""
+				#set up default configuration if its not set
+				[ -n "$DEF_CONFIG" ] || DEF_CONFIG=$img_c
+				[ -z "${img_c}" ] || conf_array[$img_c]=conf$img_c
+				array_put conf$img_c 0 ${img_c}
+				case $t in
+					kernel) img_i=1;;
+					fdt) img_i=2;;
+					ramdisk) img_i=3;;
+				esac
+				array_put conf$img_c $img_i $img_index
+				array_put conf$img_c $(($img_i + 3)) ${img_sign}
+				array_put conf$img_c $(($img_i + 6)) ${img_key}
+				array_put conf$img_c 10 $img_cname
+			done
+			img_index=$((img_index + 1))
+		done
+	done
+	emit_its sectend
+}
+
+#
+# generate configuration node and its subnodes
+#
+emit_configuration_nodes ()
+{
+	local count kernel fdt ramdisk ker_file fdt_file rfs_file ker_sign \
+		fdt_sign rfs_sign
+	emit_its confstart $DEF_CONFIG
+	for a in ${conf_array[@]}; do
+		count=$(array_get $a 0)
+		kernel=$(array_get $a 1)
+		fdt=$(array_get $a 2)
+		ramdisk=$(array_get $a 3)
+		er_file=$(array_get $a 4)
+		fdt_file=$(array_get $a 5)
+		rfs_file=$(array_get $a 6)
+		ker_sign=$(array_get $a 7)
+		fdt_sign=$(array_get $a 8)
+		rfs_sign=$(array_get $a 9)
+		cname=$(array_get $a 10)
+		emit_config "$count" "$kernel" "$fdt" "$ramdisk" "$ker_file" \
+			"$fdt_file" "$rfs_file" "$ker_sign" "$fdt_sign" \
+			"$rfs_sign" "${cname}"
+	done
+	if [ -z "${DEF_CONFIG}" ]; then
+		emit_config "0" "$DEF_kernel" "$DEF_fdt" "$DEF_ramdisk"
+	fi
+	emit_its sectend
+}
+
+# Set to none empty to create signature sub node under images node
+SIGN_IN_CONF=${SIGN_IN_CONF:-""}
+# Set to default config used
+DEF_CONFIG=${DEF_CONFIG:-""}
+
+parse_args $@
+
+emit_its fitstart
+emit_image_nodes
+emit_configuration_nodes
+emit_its fitend
diff --git a/target/linux/imx/imx8/config-5.15 b/target/linux/imx/imx8/config-5.15
new file mode 100644
index 0000000000..2b6ab299a0
--- /dev/null
+++ b/target/linux/imx/imx8/config-5.15
@@ -0,0 +1,2661 @@ 
+CONFIG_64BIT=y
+CONFIG_9P_FS=y
+# CONFIG_9P_FS_POSIX_ACL is not set
+# CONFIG_9P_FS_SECURITY is not set
+CONFIG_ACPI=y
+CONFIG_ACPI_AC=y
+CONFIG_ACPI_APEI=y
+CONFIG_ACPI_APEI_EINJ=y
+# CONFIG_ACPI_APEI_ERST_DEBUG is not set
+CONFIG_ACPI_APEI_GHES=y
+CONFIG_ACPI_APEI_MEMORY_FAILURE=y
+CONFIG_ACPI_APEI_SEA=y
+CONFIG_ACPI_BATTERY=y
+# CONFIG_ACPI_BGRT is not set
+CONFIG_ACPI_BUTTON=y
+CONFIG_ACPI_CCA_REQUIRED=y
+CONFIG_ACPI_CONTAINER=y
+CONFIG_ACPI_CPPC_CPUFREQ=m
+CONFIG_ACPI_CPPC_CPUFREQ_FIE=y
+CONFIG_ACPI_CPPC_LIB=y
+# CONFIG_ACPI_DEBUG is not set
+# CONFIG_ACPI_DEBUGGER is not set
+# CONFIG_ACPI_DOCK is not set
+# CONFIG_ACPI_EC_DEBUGFS is not set
+CONFIG_ACPI_FAN=y
+CONFIG_ACPI_GENERIC_GSI=y
+CONFIG_ACPI_GTDT=y
+CONFIG_ACPI_HED=y
+# CONFIG_ACPI_HMAT is not set
+CONFIG_ACPI_HOTPLUG_CPU=y
+CONFIG_ACPI_I2C_OPREGION=y
+CONFIG_ACPI_IORT=y
+# CONFIG_ACPI_IPMI is not set
+CONFIG_ACPI_MCFG=y
+CONFIG_ACPI_MDIO=y
+CONFIG_ACPI_NUMA=y
+# CONFIG_ACPI_PCI_SLOT is not set
+CONFIG_ACPI_PPTT=y
+CONFIG_ACPI_PROCESSOR=y
+CONFIG_ACPI_PROCESSOR_IDLE=y
+CONFIG_ACPI_REDUCED_HARDWARE_ONLY=y
+CONFIG_ACPI_SPCR_TABLE=y
+CONFIG_ACPI_TABLE_UPGRADE=y
+# CONFIG_ACPI_TAD is not set
+CONFIG_ACPI_THERMAL=y
+CONFIG_AHCI_CEVA=y
+CONFIG_AHCI_IMX=y
+CONFIG_AHCI_QORIQ=y
+CONFIG_AHCI_XGENE=y
+CONFIG_ALTERA_FREEZE_BRIDGE=m
+# CONFIG_ALTERA_PR_IP_CORE is not set
+CONFIG_AMD_XGBE=y
+CONFIG_AQUANTIA_PHY=y
+CONFIG_ARCH_DMA_ADDR_T_64BIT=y
+CONFIG_ARCH_HIBERNATION_POSSIBLE=y
+CONFIG_ARCH_KEEMBAY=y
+CONFIG_ARCH_KEEP_MEMBLOCK=y
+CONFIG_ARCH_LAYERSCAPE=y
+CONFIG_ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE=y
+CONFIG_ARCH_MMAP_RND_BITS=18
+CONFIG_ARCH_MMAP_RND_BITS_MAX=33
+CONFIG_ARCH_MMAP_RND_BITS_MIN=18
+CONFIG_ARCH_MMAP_RND_COMPAT_BITS=11
+CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=11
+CONFIG_ARCH_MXC=y
+CONFIG_ARCH_PROC_KCORE_TEXT=y
+CONFIG_ARCH_RANDOM=y
+CONFIG_ARCH_S32=y
+CONFIG_ARCH_SPARSEMEM_ENABLE=y
+CONFIG_ARCH_STACKWALK=y
+CONFIG_ARCH_SUSPEND_POSSIBLE=y
+CONFIG_ARCH_USES_HIGH_VMA_FLAGS=y
+CONFIG_ARCH_WANTS_NO_INSTR=y
+CONFIG_ARM64=y
+CONFIG_ARM64_4K_PAGES=y
+# CONFIG_ARM64_ACPI_PARKING_PROTOCOL is not set
+CONFIG_ARM64_AMU_EXTN=y
+CONFIG_ARM64_BTI=y
+# CONFIG_ARM64_BTI_KERNEL is not set
+CONFIG_ARM64_CNP=y
+CONFIG_ARM64_CRYPTO=y
+CONFIG_ARM64_E0PD=y
+CONFIG_ARM64_EPAN=y
+CONFIG_ARM64_ERRATUM_1024718=y
+CONFIG_ARM64_ERRATUM_1165522=y
+CONFIG_ARM64_ERRATUM_1286807=y
+CONFIG_ARM64_ERRATUM_1319367=y
+CONFIG_ARM64_ERRATUM_1418040=y
+CONFIG_ARM64_ERRATUM_1463225=y
+CONFIG_ARM64_ERRATUM_1508412=y
+CONFIG_ARM64_ERRATUM_1530923=y
+CONFIG_ARM64_ERRATUM_1542419=y
+CONFIG_ARM64_ERRATUM_819472=y
+CONFIG_ARM64_ERRATUM_824069=y
+CONFIG_ARM64_ERRATUM_826319=y
+CONFIG_ARM64_ERRATUM_827319=y
+CONFIG_ARM64_ERRATUM_832075=y
+CONFIG_ARM64_ERRATUM_834220=y
+CONFIG_ARM64_ERRATUM_843419=y
+CONFIG_ARM64_ERRATUM_845719=y
+CONFIG_ARM64_ERRATUM_858921=y
+CONFIG_ARM64_HW_AFDBM=y
+CONFIG_ARM64_LD_HAS_FIX_ERRATUM_843419=y
+CONFIG_ARM64_LSE_ATOMICS=y
+CONFIG_ARM64_MODULE_PLTS=y
+CONFIG_ARM64_MTE=y
+CONFIG_ARM64_PAGE_SHIFT=12
+CONFIG_ARM64_PAN=y
+CONFIG_ARM64_PA_BITS=48
+CONFIG_ARM64_PA_BITS_48=y
+CONFIG_ARM64_PTR_AUTH=y
+CONFIG_ARM64_PTR_AUTH_KERNEL=y
+CONFIG_ARM64_RAS_EXTN=y
+CONFIG_ARM64_SVE=y
+# CONFIG_ARM64_SW_TTBR0_PAN is not set
+CONFIG_ARM64_TAGGED_ADDR_ABI=y
+CONFIG_ARM64_TLB_RANGE=y
+CONFIG_ARM64_USE_LSE_ATOMICS=y
+CONFIG_ARM64_VA_BITS=48
+# CONFIG_ARM64_VA_BITS_39 is not set
+CONFIG_ARM64_VA_BITS_48=y
+CONFIG_ARM64_WORKAROUND_CLEAN_CACHE=y
+CONFIG_ARM64_WORKAROUND_REPEAT_TLBI=y
+CONFIG_ARM64_WORKAROUND_SPECULATIVE_AT=y
+# CONFIG_ARMV8_DEPRECATED is not set
+CONFIG_ARM_AMBA=y
+CONFIG_ARM_ARCH_TIMER=y
+CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y
+CONFIG_ARM_ARCH_TIMER_OOL_WORKAROUND=y
+CONFIG_ARM_CPUIDLE=y
+# CONFIG_ARM_DMC620_PMU is not set
+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_FSL_MC=y
+CONFIG_ARM_GIC_V3_ITS_PCI=y
+CONFIG_ARM_IMX8M_DDRC_DEVFREQ=m
+CONFIG_ARM_IMX_BUS_DEVFREQ=m
+CONFIG_ARM_IMX_CPUFREQ_DT=y
+CONFIG_ARM_MHU=y
+# CONFIG_ARM_MHU_V2 is not set
+# CONFIG_ARM_PL172_MPMC is not set
+CONFIG_ARM_PMU=y
+CONFIG_ARM_PMU_ACPI=y
+CONFIG_ARM_PSCI_CPUIDLE=y
+CONFIG_ARM_PSCI_CPUIDLE_DOMAIN=y
+CONFIG_ARM_PSCI_FW=y
+CONFIG_ARM_SBSA_WATCHDOG=y
+CONFIG_ARM_SCMI_CPUFREQ=y
+CONFIG_ARM_SCMI_HAVE_SHMEM=y
+CONFIG_ARM_SCMI_HAVE_TRANSPORT=y
+CONFIG_ARM_SCMI_POWER_DOMAIN=y
+CONFIG_ARM_SCMI_PROTOCOL=y
+CONFIG_ARM_SCMI_TRANSPORT_MAILBOX=y
+CONFIG_ARM_SCMI_TRANSPORT_SMC=y
+# CONFIG_ARM_SCMI_TRANSPORT_VIRTIO is not set
+CONFIG_ARM_SCPI_CPUFREQ=y
+CONFIG_ARM_SCPI_POWER_DOMAIN=y
+CONFIG_ARM_SCPI_PROTOCOL=y
+CONFIG_ARM_SMCCC_SOC_ID=y
+CONFIG_ARM_SMC_WATCHDOG=y
+CONFIG_ARM_SMMU=y
+CONFIG_ARM_SMMU_DISABLE_BYPASS_BY_DEFAULT=y
+# CONFIG_ARM_SMMU_LEGACY_DT_BINDINGS is not set
+CONFIG_ARM_SMMU_V3=y
+CONFIG_ARM_SMMU_V3_PMU=m
+# CONFIG_ARM_SMMU_V3_SVA is not set
+CONFIG_ARM_SP805_WATCHDOG=y
+CONFIG_ASM_MODVERSIONS=y
+CONFIG_ASN1=y
+CONFIG_ASN1_ENCODER=m
+CONFIG_ASSOCIATIVE_ARRAY=y
+CONFIG_ASYMMETRIC_KEY_TYPE=y
+CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=y
+# CONFIG_ASYMMETRIC_TPM_KEY_SUBTYPE is not set
+CONFIG_ASYNC_TX_DISABLE_PQ_VAL_DMA=y
+CONFIG_ASYNC_TX_DISABLE_XOR_VAL_DMA=y
+CONFIG_ASYNC_TX_ENABLE_CHANNEL_SWITCH=y
+CONFIG_AT803X_PHY=y
+CONFIG_ATA=y
+CONFIG_ATA_ACPI=y
+CONFIG_ATA_FORCE=y
+CONFIG_ATA_VERBOSE_ERROR=y
+# CONFIG_ATH11K is not set
+# CONFIG_ATH5K_PCI is not set
+CONFIG_ATL1C=m
+CONFIG_AUDIT=y
+CONFIG_AUDITSYSCALL=y
+CONFIG_AUDIT_ARCH_COMPAT_GENERIC=y
+CONFIG_AUDIT_COMPAT_GENERIC=y
+CONFIG_AUDIT_GENERIC=y
+CONFIG_AUTOFS4_FS=y
+CONFIG_AUTOFS_FS=y
+CONFIG_AUXILIARY_BUS=y
+CONFIG_AX88796B_PHY=m
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_BACKLIGHT_LP855X=m
+CONFIG_BACKLIGHT_PWM=y
+CONFIG_BALLOON_COMPACTION=y
+CONFIG_BATTERY_BQ27XXX=y
+# CONFIG_BATTERY_BQ27XXX_DT_UPDATES_NVM is not set
+CONFIG_BATTERY_BQ27XXX_I2C=y
+CONFIG_BATTERY_MAX17042=m
+CONFIG_BATTERY_SBS=m
+CONFIG_BCM54140_PHY=m
+CONFIG_BCM7XXX_PHY=m
+CONFIG_BCMGENET=m
+CONFIG_BCM_NET_PHYLIB=m
+CONFIG_BCM_SBA_RAID=m
+CONFIG_BLK_CGROUP=y
+CONFIG_BLK_DEBUG_FS=y
+CONFIG_BLK_DEV_BSG=y
+CONFIG_BLK_DEV_BSGLIB=y
+CONFIG_BLK_DEV_BSG_COMMON=y
+CONFIG_BLK_DEV_DM=m
+CONFIG_BLK_DEV_DM_BUILTIN=y
+CONFIG_BLK_DEV_INTEGRITY=y
+CONFIG_BLK_DEV_INTEGRITY_T10=y
+CONFIG_BLK_DEV_LOOP=y
+CONFIG_BLK_DEV_MD=m
+CONFIG_BLK_DEV_NBD=m
+CONFIG_BLK_DEV_NVME=y
+CONFIG_BLK_DEV_SD=y
+CONFIG_BLK_MQ_PCI=y
+CONFIG_BLK_MQ_VIRTIO=y
+CONFIG_BLK_PM=y
+CONFIG_BLOCK_COMPAT=y
+CONFIG_BLOCK_HOLDER_DEPRECATED=y
+CONFIG_BNX2X=m
+CONFIG_BNX2X_SRIOV=y
+# CONFIG_BPF_SYSCALL is not set
+CONFIG_BRCMSTB_GISB_ARB=y
+CONFIG_BROADCOM_PHY=m
+CONFIG_BSD_PROCESS_ACCT=y
+CONFIG_BSD_PROCESS_ACCT_V3=y
+CONFIG_BT=y
+CONFIG_BTRFS_FS=m
+# CONFIG_BTRFS_FS_CHECK_INTEGRITY is not set
+CONFIG_BTRFS_FS_POSIX_ACL=y
+CONFIG_BT_BCM=y
+CONFIG_BT_BNEP=y
+CONFIG_BT_BREDR=y
+# CONFIG_BT_DEBUGFS is not set
+CONFIG_BT_HCIBTUSB=m
+CONFIG_BT_HCIBTUSB_BCM=y
+CONFIG_BT_HCIBTUSB_RTL=y
+CONFIG_BT_HCIUART=y
+CONFIG_BT_HCIUART_3WIRE=y
+CONFIG_BT_HCIUART_ATH3K=y
+CONFIG_BT_HCIUART_BCM=y
+# CONFIG_BT_HCIUART_INTEL is not set
+CONFIG_BT_HCIUART_LL=y
+# CONFIG_BT_HCIUART_NOKIA is not set
+CONFIG_BT_HCIUART_QCA=y
+CONFIG_BT_HCIUART_SERDEV=y
+CONFIG_BT_HCIVHCI=y
+CONFIG_BT_HIDP=y
+CONFIG_BT_INTEL=m
+CONFIG_BT_LE=y
+CONFIG_BT_LEDS=y
+CONFIG_BT_QCA=y
+CONFIG_BT_RFCOMM=y
+CONFIG_BT_RTL=m
+CONFIG_CAN=m
+# CONFIG_CAN_8DEV_USB is not set
+CONFIG_CAN_BCM=m
+CONFIG_CAN_CALC_BITTIMING=y
+# CONFIG_CAN_CC770 is not set
+# CONFIG_CAN_C_CAN is not set
+CONFIG_CAN_DEV=m
+# CONFIG_CAN_EMS_USB is not set
+# CONFIG_CAN_ESD_USB2 is not set
+CONFIG_CAN_FLEXCAN=m
+# CONFIG_CAN_GRCAN is not set
+CONFIG_CAN_GW=m
+# CONFIG_CAN_KVASER_USB is not set
+# CONFIG_CAN_MCP251X is not set
+# CONFIG_CAN_PEAK_USB is not set
+CONFIG_CAN_RAW=m
+# CONFIG_CAN_SJA1000 is not set
+# CONFIG_CAN_SOFTING is not set
+# CONFIG_CAN_XILINXCAN is not set
+CONFIG_CAVIUM_ERRATUM_22375=y
+CONFIG_CAVIUM_ERRATUM_23144=y
+CONFIG_CAVIUM_ERRATUM_23154=y
+CONFIG_CAVIUM_ERRATUM_27456=y
+CONFIG_CAVIUM_ERRATUM_30115=y
+CONFIG_CAVIUM_TX2_ERRATUM_219=y
+CONFIG_CC_HAVE_STACKPROTECTOR_SYSREG=y
+# CONFIG_CDNS_I3C_MASTER is not set
+CONFIG_CEC_CORE=y
+CONFIG_CEC_NOTIFIER=y
+CONFIG_CFG80211=y
+CONFIG_CFG80211_CRDA_SUPPORT=y
+# CONFIG_CFG80211_DEBUGFS is not set
+CONFIG_CFG80211_DEFAULT_PS=y
+# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set
+CONFIG_CFG80211_REQUIRE_SIGNED_REGDB=y
+CONFIG_CFG80211_USE_KERNEL_REGDB_KEYS=y
+CONFIG_CFG80211_WEXT=y
+# CONFIG_CFS_BANDWIDTH is not set
+CONFIG_CGROUPS=y
+CONFIG_CGROUP_CPUACCT=y
+# CONFIG_CGROUP_DEBUG is not set
+CONFIG_CGROUP_DEVICE=y
+CONFIG_CGROUP_FREEZER=y
+CONFIG_CGROUP_HUGETLB=y
+# CONFIG_CGROUP_NET_CLASSID is not set
+# CONFIG_CGROUP_NET_PRIO is not set
+CONFIG_CGROUP_PERF=y
+CONFIG_CGROUP_PIDS=y
+# CONFIG_CGROUP_RDMA is not set
+CONFIG_CGROUP_SCHED=y
+CONFIG_CGROUP_WRITEBACK=y
+CONFIG_CHARGER_BQ25890=m
+CONFIG_CHARGER_BQ25980=m
+CONFIG_CHARGER_CROS_PCHG=y
+# CONFIG_CHARGER_CROS_USBPD is not set
+# CONFIG_CHROMEOS_TBMC is not set
+CONFIG_CHROME_PLATFORMS=y
+CONFIG_CLK_IMX8MM=y
+CONFIG_CLK_IMX8MN=y
+CONFIG_CLK_IMX8MP=y
+CONFIG_CLK_IMX8MQ=y
+CONFIG_CLK_IMX8QXP=y
+CONFIG_CLK_LS1028A_PLLDIG=y
+CONFIG_CLK_QORIQ=y
+CONFIG_CLK_VEXPRESS_OSC=y
+CONFIG_CLONE_BACKWARDS=y
+CONFIG_CLZ_TAB=y
+CONFIG_CMA=y
+CONFIG_CMA_ALIGNMENT=8
+CONFIG_CMA_AREAS=19
+# CONFIG_CMA_DEBUG is not set
+# CONFIG_CMA_DEBUGFS is not set
+CONFIG_CMA_SIZE_MBYTES=32
+# CONFIG_CMA_SIZE_SEL_MAX is not set
+CONFIG_CMA_SIZE_SEL_MBYTES=y
+# CONFIG_CMA_SIZE_SEL_MIN is not set
+# CONFIG_CMA_SIZE_SEL_PERCENTAGE is not set
+# CONFIG_CMA_SYSFS is not set
+CONFIG_COMMON_CLK=y
+# CONFIG_COMMON_CLK_BD718XX is not set
+CONFIG_COMMON_CLK_CS2000_CP=y
+CONFIG_COMMON_CLK_FSL_FLEXSPI=y
+CONFIG_COMMON_CLK_FSL_SAI=y
+# CONFIG_COMMON_CLK_MAX77686 is not set
+CONFIG_COMMON_CLK_PWM=y
+CONFIG_COMMON_CLK_RK808=y
+CONFIG_COMMON_CLK_S2MPS11=y
+CONFIG_COMMON_CLK_SCMI=y
+CONFIG_COMMON_CLK_SCPI=y
+CONFIG_COMMON_CLK_VC5=y
+CONFIG_COMMON_CLK_XGENE=y
+CONFIG_COMPAT=y
+CONFIG_COMPAT_32BIT_TIME=y
+CONFIG_COMPAT_BINFMT_ELF=y
+CONFIG_COMPAT_NETLINK_MESSAGES=y
+CONFIG_COMPAT_OLD_SIGACTION=y
+CONFIG_CONFIGFS_FS=y
+CONFIG_CONSOLE_TRANSLATIONS=y
+CONFIG_CONTIG_ALLOC=y
+CONFIG_COREDUMP=y
+CONFIG_CORESIGHT=y
+# CONFIG_CORESIGHT_CATU is not set
+# CONFIG_CORESIGHT_CPU_DEBUG is not set
+# CONFIG_CORESIGHT_CTI is not set
+CONFIG_CORESIGHT_LINKS_AND_SINKS=y
+CONFIG_CORESIGHT_LINK_AND_SINK_TMC=y
+# CONFIG_CORESIGHT_SINK_ETBV10 is not set
+# CONFIG_CORESIGHT_SINK_TPIU is not set
+CONFIG_CORESIGHT_SOURCE_ETM4X=y
+# CONFIG_CORESIGHT_STM is not set
+# CONFIG_CORESIGHT_TRBE is not set
+CONFIG_CPUFREQ_DT=y
+CONFIG_CPUFREQ_DT_PLATDEV=y
+CONFIG_CPUSETS=y
+CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
+CONFIG_CPU_FREQ_GOV_ATTR_SET=y
+CONFIG_CPU_FREQ_GOV_COMMON=y
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+CONFIG_CPU_FREQ_GOV_ONDEMAND=y
+CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y
+CONFIG_CPU_FREQ_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_STAT=y
+CONFIG_CPU_FREQ_THERMAL=y
+CONFIG_CPU_IDLE=y
+CONFIG_CPU_IDLE_GOV_MENU=y
+CONFIG_CPU_IDLE_MULTIPLE_DRIVERS=y
+CONFIG_CPU_ISOLATION=y
+CONFIG_CPU_PM=y
+CONFIG_CPU_RMAP=y
+CONFIG_CPU_THERMAL=y
+CONFIG_CRASH_CORE=y
+CONFIG_CRASH_DUMP=y
+CONFIG_CRC16=y
+# CONFIG_CRC32_SARWATE is not set
+CONFIG_CRC32_SLICEBY8=y
+CONFIG_CRC7=y
+CONFIG_CRC8=y
+CONFIG_CRC_CCITT=m
+CONFIG_CRC_ITU_T=y
+CONFIG_CRC_T10DIF=y
+CONFIG_CROSS_MEMORY_ATTACH=y
+CONFIG_CROS_EC=y
+CONFIG_CROS_EC_CHARDEV=m
+CONFIG_CROS_EC_DEBUGFS=y
+CONFIG_CROS_EC_I2C=y
+CONFIG_CROS_EC_LIGHTBAR=y
+# CONFIG_CROS_EC_MKBP_PROXIMITY is not set
+CONFIG_CROS_EC_PROTO=y
+# CONFIG_CROS_EC_RPMSG is not set
+CONFIG_CROS_EC_SENSORHUB=y
+CONFIG_CROS_EC_SPI=y
+CONFIG_CROS_EC_SYSFS=y
+CONFIG_CROS_EC_TYPEC=y
+CONFIG_CROS_EC_VBC=y
+# CONFIG_CROS_KBD_LED_BACKLIGHT is not set
+CONFIG_CROS_USBPD_NOTIFY=y
+CONFIG_CRYPTO_AES_ARM64=y
+CONFIG_CRYPTO_AES_ARM64_BS=m
+CONFIG_CRYPTO_AES_ARM64_CE=y
+CONFIG_CRYPTO_AES_ARM64_CE_BLK=y
+CONFIG_CRYPTO_AES_ARM64_CE_CCM=y
+CONFIG_CRYPTO_AES_ARM64_NEON_BLK=m
+CONFIG_CRYPTO_ANSI_CPRNG=y
+CONFIG_CRYPTO_ANUBIS=m
+CONFIG_CRYPTO_ARC4=m
+CONFIG_CRYPTO_ARCH_HAVE_LIB_CHACHA=m
+CONFIG_CRYPTO_AUTHENC=m
+CONFIG_CRYPTO_BLAKE2B=m
+CONFIG_CRYPTO_BLAKE2S=m
+CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_BLOWFISH_COMMON=m
+CONFIG_CRYPTO_CAMELLIA=m
+CONFIG_CRYPTO_CAST5=m
+CONFIG_CRYPTO_CAST6=m
+CONFIG_CRYPTO_CAST_COMMON=m
+CONFIG_CRYPTO_CBC=m
+CONFIG_CRYPTO_CFB=m
+CONFIG_CRYPTO_CHACHA20=m
+CONFIG_CRYPTO_CHACHA20POLY1305=m
+CONFIG_CRYPTO_CHACHA20_NEON=m
+CONFIG_CRYPTO_CMAC=y
+CONFIG_CRYPTO_CRC32C=y
+CONFIG_CRYPTO_CRCT10DIF=y
+CONFIG_CRYPTO_CRCT10DIF_ARM64_CE=m
+CONFIG_CRYPTO_CRYPTD=y
+CONFIG_CRYPTO_CTS=m
+CONFIG_CRYPTO_CURVE25519=m
+CONFIG_CRYPTO_DEFLATE=y
+CONFIG_CRYPTO_DES=m
+CONFIG_CRYPTO_DEV_AMLOGIC_GXL=m
+# CONFIG_CRYPTO_DEV_AMLOGIC_GXL_DEBUG is not set
+CONFIG_CRYPTO_DEV_CCREE=m
+CONFIG_CRYPTO_DEV_FSL_CAAM=m
+CONFIG_CRYPTO_DEV_FSL_CAAM_AHASH_API=y
+CONFIG_CRYPTO_DEV_FSL_CAAM_AHASH_API_DESC=m
+CONFIG_CRYPTO_DEV_FSL_CAAM_COMMON=m
+CONFIG_CRYPTO_DEV_FSL_CAAM_CRYPTO_API=y
+CONFIG_CRYPTO_DEV_FSL_CAAM_CRYPTO_API_DESC=m
+# CONFIG_CRYPTO_DEV_FSL_CAAM_CRYPTO_API_QI is not set
+# CONFIG_CRYPTO_DEV_FSL_CAAM_DEBUG is not set
+# CONFIG_CRYPTO_DEV_FSL_CAAM_INTC is not set
+CONFIG_CRYPTO_DEV_FSL_CAAM_JR=m
+CONFIG_CRYPTO_DEV_FSL_CAAM_PKC_API=y
+CONFIG_CRYPTO_DEV_FSL_CAAM_RINGSIZE=9
+CONFIG_CRYPTO_DEV_FSL_CAAM_RNG_API=y
+CONFIG_CRYPTO_DEV_FSL_DPAA2_CAAM=m
+CONFIG_CRYPTO_DEV_HISI_HPRE=m
+CONFIG_CRYPTO_DEV_HISI_QM=m
+CONFIG_CRYPTO_DEV_HISI_SEC2=m
+CONFIG_CRYPTO_DEV_HISI_TRNG=m
+CONFIG_CRYPTO_DEV_HISI_ZIP=m
+# CONFIG_CRYPTO_DEV_KEEMBAY_OCS_AES_SM4 is not set
+# CONFIG_CRYPTO_DEV_KEEMBAY_OCS_HCU is not set
+CONFIG_CRYPTO_DH=m
+CONFIG_CRYPTO_DRBG=y
+CONFIG_CRYPTO_DRBG_HMAC=y
+CONFIG_CRYPTO_DRBG_MENU=y
+CONFIG_CRYPTO_ECB=y
+CONFIG_CRYPTO_ECC=y
+CONFIG_CRYPTO_ECDH=y
+CONFIG_CRYPTO_ECHAINIV=y
+CONFIG_CRYPTO_ENGINE=m
+CONFIG_CRYPTO_ESSIV=m
+CONFIG_CRYPTO_FCRYPT=m
+CONFIG_CRYPTO_GHASH_ARM64_CE=y
+CONFIG_CRYPTO_HASH_INFO=y
+CONFIG_CRYPTO_HMAC=y
+CONFIG_CRYPTO_HW=y
+CONFIG_CRYPTO_JITTERENTROPY=y
+CONFIG_CRYPTO_KHAZAD=m
+CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
+CONFIG_CRYPTO_LIB_CHACHA_GENERIC=m
+CONFIG_CRYPTO_LIB_CURVE25519_GENERIC=m
+CONFIG_CRYPTO_LIB_DES=m
+CONFIG_CRYPTO_LIB_POLY1305_GENERIC=m
+CONFIG_CRYPTO_LIB_SHA256=y
+CONFIG_CRYPTO_LIB_SM4=m
+CONFIG_CRYPTO_LRW=m
+CONFIG_CRYPTO_LZO=y
+CONFIG_CRYPTO_MD4=m
+CONFIG_CRYPTO_MD5=m
+CONFIG_CRYPTO_MICHAEL_MIC=y
+CONFIG_CRYPTO_OFB=m
+CONFIG_CRYPTO_PCBC=m
+# CONFIG_CRYPTO_PCRYPT is not set
+CONFIG_CRYPTO_POLY1305=m
+CONFIG_CRYPTO_RMD160=m
+CONFIG_CRYPTO_RNG=y
+CONFIG_CRYPTO_RNG2=y
+CONFIG_CRYPTO_RNG_DEFAULT=y
+CONFIG_CRYPTO_RSA=y
+CONFIG_CRYPTO_SEED=m
+CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_SHA1=y
+CONFIG_CRYPTO_SHA1_ARM64_CE=y
+CONFIG_CRYPTO_SHA256=y
+CONFIG_CRYPTO_SHA256_ARM64=y
+CONFIG_CRYPTO_SHA2_ARM64_CE=y
+CONFIG_CRYPTO_SHA3=m
+CONFIG_CRYPTO_SHA3_ARM64=m
+CONFIG_CRYPTO_SHA512=y
+CONFIG_CRYPTO_SHA512_ARM64=m
+CONFIG_CRYPTO_SHA512_ARM64_CE=m
+CONFIG_CRYPTO_SIMD=y
+CONFIG_CRYPTO_SM3=m
+CONFIG_CRYPTO_SM3_ARM64_CE=m
+CONFIG_CRYPTO_SM4=m
+CONFIG_CRYPTO_STREEBOG=m
+CONFIG_CRYPTO_TEA=m
+CONFIG_CRYPTO_TEST=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_TWOFISH_COMMON=m
+CONFIG_CRYPTO_USER=y
+CONFIG_CRYPTO_USER_API=m
+CONFIG_CRYPTO_USER_API_AEAD=m
+CONFIG_CRYPTO_USER_API_ENABLE_OBSOLETE=y
+CONFIG_CRYPTO_USER_API_HASH=m
+CONFIG_CRYPTO_USER_API_RNG=m
+CONFIG_CRYPTO_USER_API_SKCIPHER=m
+CONFIG_CRYPTO_VMAC=m
+CONFIG_CRYPTO_WP512=m
+CONFIG_CRYPTO_XCBC=m
+CONFIG_CRYPTO_XTS=m
+CONFIG_CRYPTO_XXHASH=m
+CONFIG_CRYPTO_ZSTD=y
+CONFIG_CUSE=m
+CONFIG_CXD2880_SPI_DRV=m
+CONFIG_DCACHE_WORD_ACCESS=y
+CONFIG_DEBUG_BUGVERBOSE=y
+CONFIG_DEBUG_INFO=y
+CONFIG_DEBUG_INFO_REDUCED=y
+CONFIG_DEBUG_MEMORY_INIT=y
+CONFIG_DEBUG_MISC=y
+CONFIG_DECOMPRESS_BZIP2=y
+CONFIG_DECOMPRESS_GZIP=y
+CONFIG_DECOMPRESS_LZ4=y
+CONFIG_DECOMPRESS_LZMA=y
+CONFIG_DECOMPRESS_LZO=y
+CONFIG_DECOMPRESS_XZ=y
+CONFIG_DECOMPRESS_ZSTD=y
+# 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=y
+CONFIG_DEVFREQ_GOV_USERSPACE=m
+# CONFIG_DEVFREQ_THERMAL is not set
+CONFIG_DEVMEM=y
+CONFIG_DEVTMPFS=y
+CONFIG_DEVTMPFS_MOUNT=y
+CONFIG_DEV_COREDUMP=y
+CONFIG_DIMLIB=y
+CONFIG_DMABUF_HEAPS=y
+CONFIG_DMABUF_HEAPS_CMA=y
+CONFIG_DMABUF_HEAPS_SYSTEM=y
+CONFIG_DMADEVICES=y
+CONFIG_DMATEST=y
+CONFIG_DMA_ACPI=y
+CONFIG_DMA_CMA=y
+CONFIG_DMA_DIRECT_REMAP=y
+CONFIG_DMA_ENGINE=y
+CONFIG_DMA_ENGINE_RAID=y
+CONFIG_DMA_OF=y
+CONFIG_DMA_OPS=y
+CONFIG_DMA_PERNUMA_CMA=y
+CONFIG_DMA_REMAP=y
+CONFIG_DMA_SHARED_BUFFER=y
+CONFIG_DMA_VIRTUAL_CHANNELS=y
+CONFIG_DMI=y
+CONFIG_DMIID=y
+# CONFIG_DMI_SYSFS is not set
+CONFIG_DM_CRYPT=m
+CONFIG_DM_MIRROR=m
+# CONFIG_DM_SNAPSHOT is not set
+CONFIG_DM_ZERO=m
+CONFIG_DNOTIFY=y
+CONFIG_DNS_RESOLVER=y
+CONFIG_DPAA2_CONSOLE=y
+CONFIG_DPAA_ERRATUM_A050385=y
+CONFIG_DRM=y
+CONFIG_DRM_BRIDGE=y
+# CONFIG_DRM_CROS_EC_ANX7688 is not set
+CONFIG_DRM_DISPLAY_CONNECTOR=m
+CONFIG_DRM_DP_AUX_BUS=y
+CONFIG_DRM_DW_HDMI=m
+CONFIG_DRM_DW_HDMI_AHB_AUDIO=m
+CONFIG_DRM_DW_HDMI_CEC=m
+CONFIG_DRM_DW_HDMI_I2S_AUDIO=m
+CONFIG_DRM_ETNAVIV=m
+CONFIG_DRM_ETNAVIV_THERMAL=y
+CONFIG_DRM_FBDEV_EMULATION=y
+CONFIG_DRM_FBDEV_OVERALLOC=100
+CONFIG_DRM_GEM_CMA_HELPER=y
+CONFIG_DRM_GEM_SHMEM_HELPER=y
+CONFIG_DRM_HISI_HIBMC=m
+CONFIG_DRM_HISI_KIRIN=m
+CONFIG_DRM_I2C_ADV7511=y
+CONFIG_DRM_I2C_ADV7511_AUDIO=y
+CONFIG_DRM_I2C_ADV7511_CEC=y
+CONFIG_DRM_I2C_CH7006=m
+CONFIG_DRM_I2C_NXP_TDA998X=m
+CONFIG_DRM_I2C_SIL164=m
+CONFIG_DRM_IMX_DCSS=y
+# CONFIG_DRM_KMB_DISPLAY is not set
+CONFIG_DRM_KMS_CMA_HELPER=y
+CONFIG_DRM_KMS_HELPER=y
+CONFIG_DRM_LEGACY=y
+CONFIG_DRM_LIMA=m
+CONFIG_DRM_LONTIUM_LT8912B=m
+CONFIG_DRM_LONTIUM_LT9611=m
+CONFIG_DRM_LONTIUM_LT9611UXC=m
+CONFIG_DRM_MALI_DISPLAY=m
+# CONFIG_DRM_MGA is not set
+CONFIG_DRM_MIPI_DSI=y
+CONFIG_DRM_MXS=y
+CONFIG_DRM_MXSFB=y
+CONFIG_DRM_NOUVEAU=m
+CONFIG_DRM_NOUVEAU_BACKLIGHT=y
+CONFIG_DRM_NWL_MIPI_DSI=y
+CONFIG_DRM_PANEL=y
+CONFIG_DRM_PANEL_BOE_TV101WUM_NL6=m
+CONFIG_DRM_PANEL_BRIDGE=y
+CONFIG_DRM_PANEL_LVDS=m
+CONFIG_DRM_PANEL_MANTIX_MLAF057WE51=m
+CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y
+CONFIG_DRM_PANEL_RAYDIUM_RM67191=y
+CONFIG_DRM_PANEL_RAYDIUM_RM68200=y
+CONFIG_DRM_PANEL_SEIKO_43WVF1G=y
+CONFIG_DRM_PANEL_SIMPLE=y
+CONFIG_DRM_PANEL_SITRONIX_ST7703=m
+CONFIG_DRM_PANEL_TRULY_NT35597_WQXGA=m
+CONFIG_DRM_PANFROST=m
+CONFIG_DRM_PARADE_PS8640=m
+CONFIG_DRM_PL111=m
+# CONFIG_DRM_R128 is not set
+CONFIG_DRM_RCAR_DW_HDMI=m
+CONFIG_DRM_RCAR_LVDS=m
+# CONFIG_DRM_SAVAGE is not set
+CONFIG_DRM_SCHED=m
+CONFIG_DRM_SII902X=m
+CONFIG_DRM_SIMPLE_BRIDGE=m
+# CONFIG_DRM_TDFX is not set
+CONFIG_DRM_THINE_THC63LVD1024=m
+CONFIG_DRM_TI_SN65DSI86=m
+CONFIG_DRM_TTM=m
+CONFIG_DRM_TTM_HELPER=m
+# CONFIG_DRM_VIA is not set
+CONFIG_DRM_VRAM_HELPER=m
+# CONFIG_DRM_XEN_FRONTEND is not set
+CONFIG_DST_CACHE=y
+CONFIG_DTC=y
+CONFIG_DT_IDLE_STATES=y
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_DVB_A8293=m
+CONFIG_DVB_AF9013=m
+CONFIG_DVB_AF9033=m
+CONFIG_DVB_ASCOT2E=m
+CONFIG_DVB_ATBM8830=m
+CONFIG_DVB_AU8522=m
+CONFIG_DVB_AU8522_DTV=m
+CONFIG_DVB_AU8522_V4L=m
+# CONFIG_DVB_AV7110 is not set
+CONFIG_DVB_BCM3510=m
+CONFIG_DVB_CORE=y
+CONFIG_DVB_CX22700=m
+CONFIG_DVB_CX22702=m
+CONFIG_DVB_CX24110=m
+CONFIG_DVB_CX24116=m
+CONFIG_DVB_CX24117=m
+CONFIG_DVB_CX24120=m
+CONFIG_DVB_CX24123=m
+CONFIG_DVB_CXD2099=m
+CONFIG_DVB_CXD2820R=m
+CONFIG_DVB_CXD2841ER=m
+CONFIG_DVB_CXD2880=m
+CONFIG_DVB_DIB3000MB=m
+CONFIG_DVB_DIB3000MC=m
+CONFIG_DVB_DIB7000M=m
+CONFIG_DVB_DIB7000P=m
+CONFIG_DVB_DIB8000=m
+CONFIG_DVB_DIB9000=m
+CONFIG_DVB_DRX39XYJ=m
+CONFIG_DVB_DRXD=m
+CONFIG_DVB_DRXK=m
+CONFIG_DVB_DS3000=m
+CONFIG_DVB_DYNAMIC_MINORS=y
+CONFIG_DVB_EC100=m
+CONFIG_DVB_HELENE=m
+CONFIG_DVB_HORUS3A=m
+CONFIG_DVB_ISL6405=m
+CONFIG_DVB_ISL6421=m
+CONFIG_DVB_ISL6423=m
+CONFIG_DVB_IX2505V=m
+CONFIG_DVB_L64781=m
+CONFIG_DVB_LG2160=m
+CONFIG_DVB_LGDT3305=m
+CONFIG_DVB_LGDT3306A=m
+CONFIG_DVB_LGDT330X=m
+CONFIG_DVB_LGS8GL5=m
+CONFIG_DVB_LGS8GXX=m
+CONFIG_DVB_LNBH25=m
+CONFIG_DVB_LNBH29=m
+CONFIG_DVB_LNBP21=m
+CONFIG_DVB_LNBP22=m
+CONFIG_DVB_M88DS3103=m
+CONFIG_DVB_M88RS2000=m
+CONFIG_DVB_MB86A16=m
+CONFIG_DVB_MB86A20S=m
+CONFIG_DVB_MN88443X=m
+CONFIG_DVB_MN88472=m
+CONFIG_DVB_MN88473=m
+CONFIG_DVB_MT312=m
+CONFIG_DVB_MT352=m
+CONFIG_DVB_MXL5XX=m
+CONFIG_DVB_MXL692=m
+CONFIG_DVB_NXT200X=m
+CONFIG_DVB_NXT6000=m
+CONFIG_DVB_OR51132=m
+CONFIG_DVB_OR51211=m
+CONFIG_DVB_PLL=m
+CONFIG_DVB_RTL2830=m
+CONFIG_DVB_RTL2832=m
+CONFIG_DVB_RTL2832_SDR=m
+CONFIG_DVB_S5H1409=m
+CONFIG_DVB_S5H1411=m
+CONFIG_DVB_S5H1420=m
+CONFIG_DVB_S5H1432=m
+CONFIG_DVB_S921=m
+CONFIG_DVB_SI2165=m
+CONFIG_DVB_SI2168=m
+CONFIG_DVB_SI21XX=m
+CONFIG_DVB_SP2=m
+CONFIG_DVB_SP887X=m
+CONFIG_DVB_STB0899=m
+CONFIG_DVB_STB6000=m
+CONFIG_DVB_STB6100=m
+CONFIG_DVB_STV0288=m
+CONFIG_DVB_STV0297=m
+CONFIG_DVB_STV0299=m
+CONFIG_DVB_STV0367=m
+CONFIG_DVB_STV0900=m
+CONFIG_DVB_STV090x=m
+CONFIG_DVB_STV0910=m
+CONFIG_DVB_STV6110=m
+CONFIG_DVB_STV6110x=m
+CONFIG_DVB_STV6111=m
+CONFIG_DVB_TC90522=m
+CONFIG_DVB_TDA10021=m
+CONFIG_DVB_TDA10023=m
+CONFIG_DVB_TDA10048=m
+CONFIG_DVB_TDA1004X=m
+CONFIG_DVB_TDA10071=m
+CONFIG_DVB_TDA10086=m
+CONFIG_DVB_TDA18271C2DD=m
+CONFIG_DVB_TDA665x=m
+CONFIG_DVB_TDA8083=m
+CONFIG_DVB_TDA8261=m
+CONFIG_DVB_TDA826X=m
+CONFIG_DVB_TS2020=m
+CONFIG_DVB_TUA6100=m
+CONFIG_DVB_TUNER_CX24113=m
+CONFIG_DVB_TUNER_DIB0070=m
+CONFIG_DVB_TUNER_DIB0090=m
+CONFIG_DVB_TUNER_ITD1000=m
+# CONFIG_DVB_USB is not set
+CONFIG_DVB_VES1820=m
+CONFIG_DVB_VES1X93=m
+CONFIG_DVB_ZD1301_DEMOD=m
+CONFIG_DVB_ZL10036=m
+CONFIG_DVB_ZL10039=m
+CONFIG_DVB_ZL10353=m
+CONFIG_DWMAC_GENERIC=m
+CONFIG_DWMAC_IMX8=y
+# CONFIG_DW_I3C_MASTER is not set
+CONFIG_DW_WATCHDOG=y
+# CONFIG_DYNAMIC_DEBUG_CORE is not set
+CONFIG_E1000=y
+CONFIG_E1000E=y
+CONFIG_EDAC=y
+# CONFIG_EDAC_DEBUG is not set
+# CONFIG_EDAC_DMC520 is not set
+CONFIG_EDAC_GHES=y
+CONFIG_EDAC_LAYERSCAPE=m
+CONFIG_EDAC_LEGACY_SYSFS=y
+CONFIG_EDAC_SUPPORT=y
+# CONFIG_EDAC_THUNDERX is not set
+# CONFIG_EDAC_XGENE is not set
+CONFIG_EEPROM_AT24=m
+CONFIG_EEPROM_AT25=m
+CONFIG_EFI=y
+CONFIG_EFIVAR_FS=y
+CONFIG_EFI_ARMSTUB_DTB_LOADER=y
+# CONFIG_EFI_BOOTLOADER_CONTROL is not set
+CONFIG_EFI_CAPSULE_LOADER=y
+CONFIG_EFI_CUSTOM_SSDT_OVERLAYS=y
+# CONFIG_EFI_DISABLE_PCI_DMA is not set
+CONFIG_EFI_EARLYCON=y
+CONFIG_EFI_ESRT=y
+CONFIG_EFI_GENERIC_STUB=y
+# CONFIG_EFI_GENERIC_STUB_INITRD_CMDLINE_LOADER is not set
+CONFIG_EFI_PARAMS_FROM_FDT=y
+CONFIG_EFI_RUNTIME_WRAPPERS=y
+CONFIG_EFI_STUB=y
+# CONFIG_EFI_TEST is not set
+CONFIG_EFI_VARS_PSTORE=y
+# CONFIG_EFI_VARS_PSTORE_DEFAULT_DISABLE is not set
+CONFIG_ELF_CORE=y
+# CONFIG_EMBEDDED is not set
+CONFIG_ENERGY_MODEL=y
+# CONFIG_ETM4X_IMPDEF_FEATURE is not set
+# CONFIG_EXPERT is not set
+CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+CONFIG_EXT3_FS=y
+# CONFIG_EXT3_FS_POSIX_ACL is not set
+# CONFIG_EXT3_FS_SECURITY is not set
+CONFIG_EXT4_FS=y
+CONFIG_EXT4_FS_POSIX_ACL=y
+CONFIG_EXTCON=y
+CONFIG_EXTCON_PTN5150=m
+CONFIG_EXTCON_USBC_CROS_EC=y
+CONFIG_EXTCON_USB_GPIO=y
+CONFIG_FAILOVER=y
+CONFIG_FAIR_GROUP_SCHED=y
+CONFIG_FANOTIFY=y
+CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y
+CONFIG_FAT_FS=y
+CONFIG_FB=y
+CONFIG_FB_ARMCLCD=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+CONFIG_FB_CMDLINE=y
+CONFIG_FB_DEFERRED_IO=y
+CONFIG_FB_EFI=y
+CONFIG_FB_MODE_HELPERS=y
+CONFIG_FB_MX3=y
+CONFIG_FB_SYS_COPYAREA=y
+CONFIG_FB_SYS_FILLRECT=y
+CONFIG_FB_SYS_FOPS=y
+CONFIG_FB_SYS_IMAGEBLIT=y
+CONFIG_FEC=y
+CONFIG_FHANDLE=y
+CONFIG_FIXED_PHY=y
+CONFIG_FIX_EARLYCON_MEM=y
+CONFIG_FONT_8x16=y
+CONFIG_FONT_8x8=y
+CONFIG_FONT_SUPPORT=y
+# CONFIG_FORTIFY_SOURCE is not set
+CONFIG_FPGA=y
+CONFIG_FPGA_BRIDGE=m
+# CONFIG_FPGA_DFL is not set
+# CONFIG_FPGA_MGR_ALTERA_CVP is not set
+# CONFIG_FPGA_MGR_ALTERA_PS_SPI is not set
+# CONFIG_FPGA_MGR_ICE40_SPI is not set
+# CONFIG_FPGA_MGR_MACHXO2_SPI is not set
+# CONFIG_FPGA_MGR_XILINX_SPI is not set
+CONFIG_FPGA_REGION=m
+CONFIG_FRAMEBUFFER_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
+# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
+CONFIG_FRAME_POINTER=y
+CONFIG_FRAME_WARN=2048
+CONFIG_FREEZER=y
+# CONFIG_FSL_BMAN_TEST is not set
+CONFIG_FSL_DPAA=y
+CONFIG_FSL_DPAA2_ETH=y
+CONFIG_FSL_DPAA2_PTP_CLOCK=y
+CONFIG_FSL_DPAA2_QDMA=m
+CONFIG_FSL_DPAA2_SWITCH=y
+# CONFIG_FSL_DPAA_CHECKING is not set
+CONFIG_FSL_DPAA_ETH=y
+CONFIG_FSL_EDMA=y
+CONFIG_FSL_ENETC=y
+CONFIG_FSL_ENETC_IERB=y
+CONFIG_FSL_ENETC_MDIO=y
+CONFIG_FSL_ENETC_PTP_CLOCK=y
+CONFIG_FSL_ENETC_QOS=y
+CONFIG_FSL_ENETC_VF=y
+CONFIG_FSL_ERRATUM_A008585=y
+CONFIG_FSL_FMAN=y
+CONFIG_FSL_GUTS=y
+CONFIG_FSL_IFC=y
+CONFIG_FSL_IMX8_DDR_PMU=y
+CONFIG_FSL_MC_BUS=y
+CONFIG_FSL_MC_DPIO=y
+CONFIG_FSL_MC_UAPI_SUPPORT=y
+CONFIG_FSL_QDMA=m
+# CONFIG_FSL_QMAN_TEST is not set
+CONFIG_FSL_RCPM=y
+CONFIG_FSL_XGMAC_MDIO=y
+CONFIG_FS_IOMAP=y
+CONFIG_FS_MBCACHE=y
+CONFIG_FS_POSIX_ACL=y
+CONFIG_FUJITSU_ERRATUM_010001=y
+CONFIG_FUSE_FS=m
+CONFIG_FWNODE_MDIO=y
+CONFIG_FW_CACHE=y
+CONFIG_FW_LOADER_PAGED_BUF=y
+CONFIG_FXAS21002C=y
+CONFIG_FXAS21002C_I2C=y
+CONFIG_FXAS21002C_SPI=y
+CONFIG_FXLS8962AF=m
+CONFIG_FXLS8962AF_I2C=m
+CONFIG_FXOS8700=y
+CONFIG_FXOS8700_I2C=y
+# CONFIG_GACT_PROB is not set
+CONFIG_GARP=y
+CONFIG_GENERIC_ALLOCATOR=y
+CONFIG_GENERIC_ARCH_NUMA=y
+CONFIG_GENERIC_ARCH_TOPOLOGY=y
+CONFIG_GENERIC_BUG=y
+CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
+CONFIG_GENERIC_CPU_AUTOPROBE=y
+CONFIG_GENERIC_CPU_VULNERABILITIES=y
+CONFIG_GENERIC_CSUM=y
+CONFIG_GENERIC_EARLY_IOREMAP=y
+CONFIG_GENERIC_FIND_FIRST_BIT=y
+CONFIG_GENERIC_GETTIMEOFDAY=y
+CONFIG_GENERIC_IDLE_POLL_SETUP=y
+CONFIG_GENERIC_IRQ_CHIP=y
+CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y
+CONFIG_GENERIC_IRQ_MIGRATION=y
+CONFIG_GENERIC_IRQ_SHOW=y
+CONFIG_GENERIC_IRQ_SHOW_LEVEL=y
+CONFIG_GENERIC_LIB_DEVMEM_IS_ALLOWED=y
+CONFIG_GENERIC_MSI_IRQ=y
+CONFIG_GENERIC_MSI_IRQ_DOMAIN=y
+CONFIG_GENERIC_PCI_IOMAP=y
+CONFIG_GENERIC_PHY=y
+CONFIG_GENERIC_PHY_MIPI_DPHY=y
+CONFIG_GENERIC_PINCONF=y
+CONFIG_GENERIC_PINCTRL_GROUPS=y
+CONFIG_GENERIC_PINMUX_FUNCTIONS=y
+CONFIG_GENERIC_SCHED_CLOCK=y
+CONFIG_GENERIC_SMP_IDLE_THREAD=y
+CONFIG_GENERIC_STRNCPY_FROM_USER=y
+CONFIG_GENERIC_STRNLEN_USER=y
+CONFIG_GENERIC_TIME_VSYSCALL=y
+# CONFIG_GIANFAR is not set
+CONFIG_GLOB=y
+CONFIG_GNSS=m
+CONFIG_GNSS_MTK_SERIAL=m
+CONFIG_GNSS_SERIAL=m
+# CONFIG_GNSS_SIRF_SERIAL is not set
+# CONFIG_GNSS_UBX_SERIAL is not set
+CONFIG_GPIOLIB=y
+CONFIG_GPIOLIB_IRQCHIP=y
+CONFIG_GPIO_ACPI=y
+CONFIG_GPIO_ALTERA=m
+CONFIG_GPIO_BD9571MWV=m
+CONFIG_GPIO_CDEV=y
+CONFIG_GPIO_CDEV_V1=y
+CONFIG_GPIO_DWAPB=y
+CONFIG_GPIO_GENERIC=y
+CONFIG_GPIO_GENERIC_PLATFORM=y
+# CONFIG_GPIO_HISI is not set
+CONFIG_GPIO_MAX732X=y
+# CONFIG_GPIO_MAX732X_IRQ is not set
+CONFIG_GPIO_MAX77620=y
+CONFIG_GPIO_MB86S7X=y
+CONFIG_GPIO_MPC8XXX=y
+CONFIG_GPIO_MXC=y
+CONFIG_GPIO_PCA953X=y
+CONFIG_GPIO_PCA953X_IRQ=y
+CONFIG_GPIO_PL061=y
+CONFIG_GPIO_REGMAP=m
+CONFIG_GPIO_SL28CPLD=m
+CONFIG_GPIO_WCD934X=m
+# CONFIG_GPIO_WM8994 is not set
+CONFIG_GPIO_XGENE=y
+CONFIG_GRACE_PERIOD=y
+CONFIG_GRO_CELLS=y
+CONFIG_HANDLE_DOMAIN_IRQ=y
+# CONFIG_HARDENED_USERCOPY is not set
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_HAS_DMA=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT_MAP=y
+CONFIG_HDMI=y
+CONFIG_HID=y
+CONFIG_HID_A4TECH=y
+CONFIG_HID_APPLE=y
+CONFIG_HID_BELKIN=y
+CONFIG_HID_CHERRY=y
+CONFIG_HID_CHICONY=y
+CONFIG_HID_CYPRESS=y
+CONFIG_HID_EZKEY=y
+CONFIG_HID_GENERIC=y
+CONFIG_HID_ITE=y
+CONFIG_HID_KENSINGTON=y
+CONFIG_HID_LOGITECH=y
+CONFIG_HID_MICROSOFT=y
+CONFIG_HID_MONTEREY=y
+CONFIG_HID_MULTITOUCH=m
+CONFIG_HID_REDRAGON=y
+CONFIG_HISILICON_ERRATUM_161010101=y
+CONFIG_HISILICON_ERRATUM_161600802=y
+CONFIG_HISI_PMU=y
+CONFIG_HIX5HD2_GMAC=y
+CONFIG_HNS=y
+CONFIG_HNS3=y
+CONFIG_HNS3_ENET=y
+CONFIG_HNS3_HCLGE=y
+# CONFIG_HNS3_HCLGEVF is not set
+CONFIG_HNS_DSAF=y
+CONFIG_HNS_ENET=y
+CONFIG_HNS_MDIO=y
+CONFIG_HOSTAP=y
+# CONFIG_HOSTAP_FIRMWARE is not set
+CONFIG_HOTPLUG_CPU=y
+CONFIG_HOTPLUG_PCI=y
+CONFIG_HOTPLUG_PCI_ACPI=y
+# CONFIG_HOTPLUG_PCI_ACPI_IBM is not set
+# CONFIG_HOTPLUG_PCI_CPCI is not set
+# CONFIG_HOTPLUG_PCI_PCIE is not set
+# CONFIG_HOTPLUG_PCI_SHPC is not set
+CONFIG_HUGETLBFS=y
+CONFIG_HUGETLB_PAGE=y
+CONFIG_HVC_DRIVER=y
+CONFIG_HVC_IRQ=y
+CONFIG_HVC_XEN=y
+CONFIG_HVC_XEN_FRONTEND=y
+CONFIG_HWMON=y
+# CONFIG_HWPOISON_INJECT is not set
+CONFIG_HWSPINLOCK=y
+CONFIG_HW_CONSOLE=y
+CONFIG_HW_RANDOM=m
+CONFIG_HW_RANDOM_ARM_SMCCC_TRNG=m
+CONFIG_HW_RANDOM_OPTEE=m
+CONFIG_HZ=250
+# CONFIG_HZ_100 is not set
+CONFIG_HZ_250=y
+CONFIG_I2C=y
+CONFIG_I2C_ALGOBIT=y
+# CONFIG_I2C_AMD_MP2 is not set
+CONFIG_I2C_BOARDINFO=y
+CONFIG_I2C_CHARDEV=y
+CONFIG_I2C_COMPAT=y
+CONFIG_I2C_CROS_EC_TUNNEL=y
+CONFIG_I2C_DESIGNWARE_CORE=y
+CONFIG_I2C_DESIGNWARE_PLATFORM=y
+CONFIG_I2C_GPIO=m
+CONFIG_I2C_HELPER_AUTO=y
+CONFIG_I2C_HID_ACPI=m
+CONFIG_I2C_HID_CORE=m
+CONFIG_I2C_HID_OF=m
+# CONFIG_I2C_HISI is not set
+CONFIG_I2C_IMX=y
+CONFIG_I2C_IMX_LPI2C=y
+CONFIG_I2C_MUX=y
+CONFIG_I2C_MUX_PCA954x=y
+CONFIG_I2C_RK3X=y
+CONFIG_I2C_SLAVE=y
+# CONFIG_I2C_SLAVE_TESTUNIT is not set
+CONFIG_I3C=y
+CONFIG_IGB=y
+CONFIG_IGBVF=y
+CONFIG_IGB_HWMON=y
+CONFIG_IIO=y
+CONFIG_IIO_BUFFER=y
+CONFIG_IIO_CROS_EC_BARO=m
+CONFIG_IIO_CROS_EC_LIGHT_PROX=m
+CONFIG_IIO_CROS_EC_SENSORS=m
+CONFIG_IIO_CROS_EC_SENSORS_CORE=m
+# CONFIG_IIO_CROS_EC_SENSORS_LID_ANGLE is not set
+CONFIG_IIO_KFIFO_BUF=y
+# CONFIG_IIO_SCMI is not set
+CONFIG_IIO_ST_LSM6DSX=y
+CONFIG_IIO_ST_LSM6DSX_I2C=y
+CONFIG_IIO_ST_LSM6DSX_I3C=y
+CONFIG_IIO_ST_LSM6DSX_SPI=y
+CONFIG_IIO_ST_MAGN_3AXIS=m
+CONFIG_IIO_ST_MAGN_I2C_3AXIS=m
+CONFIG_IIO_ST_MAGN_SPI_3AXIS=m
+CONFIG_IIO_ST_SENSORS_CORE=m
+CONFIG_IIO_ST_SENSORS_I2C=m
+CONFIG_IIO_ST_SENSORS_SPI=m
+CONFIG_IIO_TRIGGER=y
+CONFIG_IIO_TRIGGERED_BUFFER=y
+CONFIG_IKCONFIG=y
+CONFIG_IKCONFIG_PROC=y
+CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000
+# CONFIG_IMA_SECURE_AND_OR_TRUSTED_BOOT is not set
+CONFIG_IMX2_WDT=y
+CONFIG_IMX7ULP_WDT=y
+CONFIG_IMX8MM_THERMAL=y
+# CONFIG_IMX_DMA is not set
+CONFIG_IMX_DSP=y
+CONFIG_IMX_GPCV2=y
+CONFIG_IMX_GPCV2_PM_DOMAINS=y
+CONFIG_IMX_INTMUX=y
+CONFIG_IMX_IRQSTEER=y
+CONFIG_IMX_MBOX=y
+CONFIG_IMX_REMOTEPROC=y
+CONFIG_IMX_SCU=y
+CONFIG_IMX_SCU_PD=y
+CONFIG_IMX_SC_THERMAL=y
+CONFIG_IMX_SC_WDT=y
+CONFIG_IMX_SDMA=y
+# CONFIG_IMX_WEIM is not set
+CONFIG_INDIRECT_PIO=y
+CONFIG_INET_DIAG=y
+# CONFIG_INET_DIAG_DESTROY is not set
+# CONFIG_INET_RAW_DIAG is not set
+CONFIG_INET_TCP_DIAG=y
+CONFIG_INET_TUNNEL=m
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_INPUT=y
+CONFIG_INPUT_EVDEV=y
+CONFIG_INPUT_FF_MEMLESS=y
+CONFIG_INPUT_KEYBOARD=y
+CONFIG_INPUT_LEDS=y
+CONFIG_INPUT_MATRIXKMAP=y
+CONFIG_INPUT_MOUSE=y
+CONFIG_INPUT_PWM_VIBRA=m
+# CONFIG_INPUT_RK805_PWRKEY is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+CONFIG_INPUT_XEN_KBDDEV_FRONTEND=y
+CONFIG_INTEGRITY=y
+CONFIG_INTEGRITY_AUDIT=y
+CONFIG_INTERCONNECT=y
+CONFIG_INTERCONNECT_IMX=m
+# CONFIG_INTERCONNECT_IMX8MM is not set
+# CONFIG_INTERCONNECT_IMX8MN is not set
+CONFIG_INTERCONNECT_IMX8MQ=m
+CONFIG_INTERVAL_TREE=y
+CONFIG_IOMMU_API=y
+# CONFIG_IOMMU_DEBUGFS is not set
+# CONFIG_IOMMU_DEFAULT_DMA_LAZY is not set
+CONFIG_IOMMU_DEFAULT_DMA_STRICT=y
+# CONFIG_IOMMU_DEFAULT_PASSTHROUGH is not set
+CONFIG_IOMMU_DMA=y
+CONFIG_IOMMU_IOVA=y
+CONFIG_IOMMU_IO_PGTABLE=y
+CONFIG_IOMMU_IO_PGTABLE_ARMV7S=y
+# CONFIG_IOMMU_IO_PGTABLE_ARMV7S_SELFTEST is not set
+CONFIG_IOMMU_IO_PGTABLE_LPAE=y
+# CONFIG_IOMMU_IO_PGTABLE_LPAE_SELFTEST is not set
+CONFIG_IOMMU_SUPPORT=y
+# CONFIG_IO_STRICT_DEVMEM is not set
+CONFIG_IO_URING=y
+CONFIG_IP6_NF_FILTER=m
+CONFIG_IP6_NF_IPTABLES=m
+CONFIG_IP6_NF_MANGLE=m
+CONFIG_IP6_NF_NAT=m
+CONFIG_IP6_NF_TARGET_MASQUERADE=m
+# CONFIG_IP6_NF_TARGET_NPT is not set
+CONFIG_IP6_NF_TARGET_REJECT=m
+CONFIG_IPC_NS=y
+CONFIG_IPMI_DEVICE_INTERFACE=m
+CONFIG_IPMI_DMI_DECODE=y
+CONFIG_IPMI_HANDLER=m
+# CONFIG_IPMI_PANIC_EVENT is not set
+CONFIG_IPMI_PLAT_DATA=y
+# CONFIG_IPMI_POWEROFF is not set
+CONFIG_IPMI_SI=m
+# CONFIG_IPMI_SSIF is not set
+# CONFIG_IPMI_WATCHDOG is not set
+CONFIG_IPV6=y
+CONFIG_IPV6_SIT=m
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_NAT=m
+CONFIG_IP_NF_TARGET_MASQUERADE=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_BOOTP=y
+CONFIG_IP_PNP_DHCP=y
+# CONFIG_IP_PNP_RARP is not set
+CONFIG_IRQCHIP=y
+CONFIG_IRQ_BYPASS_MANAGER=y
+CONFIG_IRQ_DOMAIN=y
+CONFIG_IRQ_DOMAIN_HIERARCHY=y
+CONFIG_IRQ_FORCED_THREADING=y
+CONFIG_IRQ_MSI_IOMMU=y
+CONFIG_IRQ_POLL=y
+CONFIG_IRQ_TIME_ACCOUNTING=y
+CONFIG_IRQ_WORK=y
+# CONFIG_IR_ENE is not set
+# CONFIG_IR_FINTEK is not set
+CONFIG_IR_GPIO_CIR=m
+CONFIG_IR_IMON_DECODER=m
+# CONFIG_IR_ITE_CIR is not set
+CONFIG_IR_JVC_DECODER=m
+CONFIG_IR_MCE_KBD_DECODER=m
+CONFIG_IR_NEC_DECODER=m
+# CONFIG_IR_NUVOTON is not set
+CONFIG_IR_RC5_DECODER=m
+CONFIG_IR_RC6_DECODER=m
+CONFIG_IR_RCMM_DECODER=m
+CONFIG_IR_SANYO_DECODER=m
+# CONFIG_IR_SERIAL is not set
+CONFIG_IR_SHARP_DECODER=m
+# CONFIG_IR_SIR is not set
+CONFIG_IR_SONY_DECODER=m
+# CONFIG_IR_TOY is not set
+CONFIG_IR_XMP_DECODER=m
+# CONFIG_ISCSI_IBFT is not set
+# CONFIG_ISDN is not set
+# CONFIG_IWL4965 is not set
+CONFIG_JBD2=y
+# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
+# CONFIG_JFFS2_FS_XATTR is not set
+# CONFIG_JFFS2_SUMMARY is not set
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JUMP_LABEL=y
+CONFIG_KALLSYMS=y
+CONFIG_KALLSYMS_ALL=y
+CONFIG_KCMP=y
+# CONFIG_KEEMBAY_WATCHDOG is not set
+CONFIG_KEXEC=y
+CONFIG_KEXEC_CORE=y
+CONFIG_KEXEC_FILE=y
+CONFIG_KEYBOARD_ADC=m
+CONFIG_KEYBOARD_ATKBD=y
+CONFIG_KEYBOARD_CROS_EC=y
+CONFIG_KEYBOARD_GPIO=y
+# CONFIG_KEYBOARD_IMX is not set
+# CONFIG_KEYBOARD_IMX_SC_KEY is not set
+# CONFIG_KEYBOARD_MTK_PMIC is not set
+CONFIG_KEYBOARD_SNVS_PWRKEY=y
+CONFIG_KEYS=y
+CONFIG_KSM=y
+CONFIG_KVM=y
+CONFIG_KVM_GENERIC_DIRTYLOG_READ_PROTECT=y
+CONFIG_KVM_MMIO=y
+CONFIG_KVM_VFIO=y
+CONFIG_KVM_XFER_TO_GUEST_WORK=y
+# CONFIG_LEDS_BRIGHTNESS_HW_CHANGED is not set
+# CONFIG_LEDS_CLASS_MULTICOLOR is not set
+CONFIG_LEDS_GPIO=y
+CONFIG_LEDS_LM3692X=m
+# CONFIG_LEDS_MT6323 is not set
+CONFIG_LEDS_PCA9532=m
+# CONFIG_LEDS_PCA9532_GPIO is not set
+CONFIG_LEDS_PWM=y
+CONFIG_LEDS_SYSCON=y
+CONFIG_LEDS_TRIGGER_CPU=y
+CONFIG_LEDS_TRIGGER_DISK=y
+# CONFIG_LEDS_TRIGGER_NETDEV is not set
+CONFIG_LEDS_TRIGGER_PANIC=y
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=16
+CONFIG_LIB80211=y
+CONFIG_LIB80211_CRYPT_CCMP=y
+CONFIG_LIB80211_CRYPT_TKIP=y
+CONFIG_LIB80211_CRYPT_WEP=y
+CONFIG_LIBCRC32C=y
+CONFIG_LIBFDT=y
+# CONFIG_LIRC is not set
+CONFIG_LLC2=y
+CONFIG_LOCALVERSION_AUTO=y
+CONFIG_LOCKD=y
+CONFIG_LOCK_DEBUGGING_SUPPORT=y
+CONFIG_LOCK_SPIN_ON_OWNER=y
+CONFIG_LOGO=y
+CONFIG_LOGO_LINUX_CLUT224=y
+# CONFIG_LOGO_LINUX_MONO is not set
+# CONFIG_LOGO_LINUX_VGA16 is not set
+CONFIG_LSM="landlock,lockdown,yama,loadpin,safesetid,integrity,bpf"
+CONFIG_LS_EXTIRQ=y
+CONFIG_LS_SCFG_MSI=y
+CONFIG_LZ4_DECOMPRESS=y
+CONFIG_LZO_COMPRESS=y
+CONFIG_LZO_DECOMPRESS=y
+CONFIG_MAC80211=y
+# CONFIG_MAC80211_DEBUGFS is not set
+# CONFIG_MAC80211_DEBUG_MENU is not set
+CONFIG_MAC80211_HAS_RC=y
+# CONFIG_MAC80211_HWSIM is not set
+CONFIG_MAC80211_LEDS=y
+# CONFIG_MAC80211_MESH is not set
+CONFIG_MAC80211_RC_DEFAULT="minstrel_ht"
+CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
+CONFIG_MAC80211_RC_MINSTREL=y
+CONFIG_MACB=y
+# CONFIG_MACB_PCI is not set
+CONFIG_MACB_USE_HWSTAMP=y
+CONFIG_MACVLAN=m
+CONFIG_MACVTAP=m
+CONFIG_MAGIC_SYSRQ=y
+CONFIG_MAGIC_SYSRQ_SERIAL=y
+CONFIG_MAILBOX=y
+# CONFIG_MAILBOX_TEST is not set
+CONFIG_MARVELL_10G_PHY=m
+CONFIG_MARVELL_PHY=m
+# CONFIG_MAX77620_THERMAL is not set
+# CONFIG_MAX77620_WATCHDOG is not set
+CONFIG_MAX9611=m
+CONFIG_MD=y
+CONFIG_MDIO=m
+CONFIG_MDIO_BCM_UNIMAC=m
+CONFIG_MDIO_BITBANG=y
+CONFIG_MDIO_BUS=y
+CONFIG_MDIO_BUS_MUX=y
+CONFIG_MDIO_BUS_MUX_MMIOREG=y
+CONFIG_MDIO_BUS_MUX_MULTIPLEXER=y
+CONFIG_MDIO_CAVIUM=y
+CONFIG_MDIO_DEVICE=y
+CONFIG_MDIO_DEVRES=y
+# CONFIG_MDIO_GPIO is not set
+CONFIG_MDIO_THUNDER=y
+# CONFIG_MD_LINEAR is not set
+# CONFIG_MD_MULTIPATH is not set
+# CONFIG_MD_RAID0 is not set
+# CONFIG_MD_RAID1 is not set
+# CONFIG_MD_RAID10 is not set
+# CONFIG_MD_RAID456 is not set
+CONFIG_MEDIA_ANALOG_TV_SUPPORT=y
+CONFIG_MEDIA_ATTACH=y
+CONFIG_MEDIA_CAMERA_SUPPORT=y
+CONFIG_MEDIA_CONTROLLER=y
+# CONFIG_MEDIA_CONTROLLER_DVB is not set
+CONFIG_MEDIA_CONTROLLER_REQUEST_API=y
+CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y
+CONFIG_MEDIA_PLATFORM_SUPPORT=y
+CONFIG_MEDIA_SDR_SUPPORT=y
+CONFIG_MEDIA_SUPPORT=y
+CONFIG_MEDIA_SUPPORT_FILTER=y
+CONFIG_MEDIA_TUNER=y
+CONFIG_MEDIA_TUNER_E4000=m
+CONFIG_MEDIA_TUNER_FC0011=m
+CONFIG_MEDIA_TUNER_FC0012=m
+CONFIG_MEDIA_TUNER_FC0013=m
+CONFIG_MEDIA_TUNER_FC2580=m
+CONFIG_MEDIA_TUNER_IT913X=m
+CONFIG_MEDIA_TUNER_M88RS6000T=m
+CONFIG_MEDIA_TUNER_MAX2165=m
+CONFIG_MEDIA_TUNER_MC44S803=m
+CONFIG_MEDIA_TUNER_MSI001=m
+CONFIG_MEDIA_TUNER_MT2060=m
+CONFIG_MEDIA_TUNER_MT2063=m
+CONFIG_MEDIA_TUNER_MT20XX=m
+CONFIG_MEDIA_TUNER_MT2131=m
+CONFIG_MEDIA_TUNER_MT2266=m
+CONFIG_MEDIA_TUNER_MXL301RF=m
+CONFIG_MEDIA_TUNER_MXL5005S=m
+CONFIG_MEDIA_TUNER_MXL5007T=m
+CONFIG_MEDIA_TUNER_QM1D1B0004=m
+CONFIG_MEDIA_TUNER_QM1D1C0042=m
+CONFIG_MEDIA_TUNER_QT1010=m
+CONFIG_MEDIA_TUNER_R820T=m
+CONFIG_MEDIA_TUNER_SI2157=m
+CONFIG_MEDIA_TUNER_SIMPLE=m
+CONFIG_MEDIA_TUNER_TDA18212=m
+CONFIG_MEDIA_TUNER_TDA18218=m
+CONFIG_MEDIA_TUNER_TDA18250=m
+CONFIG_MEDIA_TUNER_TDA18271=m
+CONFIG_MEDIA_TUNER_TDA827X=m
+CONFIG_MEDIA_TUNER_TDA8290=m
+CONFIG_MEDIA_TUNER_TDA9887=m
+CONFIG_MEDIA_TUNER_TEA5761=m
+CONFIG_MEDIA_TUNER_TEA5767=m
+CONFIG_MEDIA_TUNER_TUA9001=m
+CONFIG_MEDIA_TUNER_XC2028=m
+CONFIG_MEDIA_TUNER_XC4000=m
+CONFIG_MEDIA_TUNER_XC5000=m
+CONFIG_MEDIA_USB_SUPPORT=y
+CONFIG_MEGARAID_SAS=y
+CONFIG_MEMCG=y
+CONFIG_MEMCG_KMEM=y
+CONFIG_MEMCG_SWAP=y
+CONFIG_MEMFD_CREATE=y
+CONFIG_MEMORY=y
+CONFIG_MEMORY_BALLOON=y
+CONFIG_MEMORY_FAILURE=y
+CONFIG_MEMORY_ISOLATION=y
+CONFIG_MEMTEST=y
+CONFIG_MFD_AXP20X=y
+CONFIG_MFD_AXP20X_I2C=y
+CONFIG_MFD_BD9571MWV=y
+CONFIG_MFD_CORE=y
+CONFIG_MFD_CROS_EC_DEV=y
+CONFIG_MFD_HI6421_PMIC=y
+# CONFIG_MFD_HI6421_SPMI is not set
+CONFIG_MFD_MAX77620=y
+CONFIG_MFD_MT6397=y
+CONFIG_MFD_RK808=y
+CONFIG_MFD_ROHM_BD718XX=y
+CONFIG_MFD_SEC_CORE=y
+CONFIG_MFD_SIMPLE_MFD_I2C=y
+CONFIG_MFD_SL28CPLD=y
+CONFIG_MFD_SYSCON=y
+CONFIG_MFD_VEXPRESS_SYSREG=y
+CONFIG_MFD_WCD934X=m
+CONFIG_MFD_WM8994=m
+CONFIG_MICREL_PHY=y
+CONFIG_MICROCHIP_PHY=m
+CONFIG_MICROSEMI_PHY=y
+CONFIG_MIGRATION=y
+# CONFIG_MIPI_I3C_HCI is not set
+CONFIG_MLX4_CORE=m
+CONFIG_MLX4_CORE_GEN2=y
+CONFIG_MLX4_DEBUG=y
+CONFIG_MLX4_EN=m
+CONFIG_MLX5_BRIDGE=y
+CONFIG_MLX5_CLS_ACT=y
+CONFIG_MLX5_CORE=m
+CONFIG_MLX5_CORE_EN=y
+# CONFIG_MLX5_CORE_IPOIB is not set
+CONFIG_MLX5_EN_ARFS=y
+CONFIG_MLX5_EN_RXNFC=y
+CONFIG_MLX5_ESWITCH=y
+# CONFIG_MLX5_FPGA is not set
+CONFIG_MLX5_MPFS=y
+CONFIG_MLX5_SW_STEERING=y
+CONFIG_MLX5_TC_SAMPLE=y
+# CONFIG_MLX5_TLS is not set
+# CONFIG_MLXBF_GIGE is not set
+CONFIG_MMC=y
+CONFIG_MMC_ARMMMCI=y
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_BLOCK_MINORS=32
+CONFIG_MMC_CQHCI=y
+CONFIG_MMC_DW=y
+# CONFIG_MMC_DW_BLUEFIELD is not set
+CONFIG_MMC_DW_EXYNOS=y
+CONFIG_MMC_DW_HI3798CV200=y
+CONFIG_MMC_DW_K3=y
+# CONFIG_MMC_DW_PCI is not set
+CONFIG_MMC_DW_PLTFM=y
+CONFIG_MMC_MTK=y
+# CONFIG_MMC_MXC is not set
+CONFIG_MMC_SDHCI=y
+CONFIG_MMC_SDHCI_ACPI=y
+CONFIG_MMC_SDHCI_AM654=y
+CONFIG_MMC_SDHCI_CADENCE=y
+CONFIG_MMC_SDHCI_ESDHC_IMX=y
+CONFIG_MMC_SDHCI_F_SDH30=y
+CONFIG_MMC_SDHCI_IO_ACCESSORS=y
+CONFIG_MMC_SDHCI_OF_ARASAN=y
+CONFIG_MMC_SDHCI_OF_ESDHC=y
+# CONFIG_MMC_SDHCI_PCI is not set
+CONFIG_MMC_SDHCI_PLTFM=y
+CONFIG_MMC_SDHCI_XENON=y
+CONFIG_MMC_SPI=y
+CONFIG_MMC_STM32_SDMMC=y
+CONFIG_MMU_NOTIFIER=y
+CONFIG_MODULES_TREE_LOOKUP=y
+CONFIG_MODULES_USE_ELF_RELA=y
+CONFIG_MODVERSIONS=y
+# CONFIG_MOUSE_BCM5974 is not set
+# CONFIG_MOUSE_CYAPA is not set
+CONFIG_MOUSE_PS2=y
+CONFIG_MOUSE_PS2_ALPS=y
+CONFIG_MOUSE_PS2_BYD=y
+CONFIG_MOUSE_PS2_CYPRESS=y
+# CONFIG_MOUSE_PS2_ELANTECH is not set
+CONFIG_MOUSE_PS2_FOCALTECH=y
+CONFIG_MOUSE_PS2_LOGIPS2PP=y
+CONFIG_MOUSE_PS2_SMBUS=y
+CONFIG_MOUSE_PS2_SYNAPTICS=y
+CONFIG_MOUSE_PS2_SYNAPTICS_SMBUS=y
+# CONFIG_MOUSE_PS2_TOUCHKIT is not set
+CONFIG_MOUSE_PS2_TRACKPOINT=y
+# CONFIG_MOUSE_SERIAL is not set
+# CONFIG_MOUSE_VSXXXAA is not set
+CONFIG_MPILIB=y
+CONFIG_MPL3115=y
+CONFIG_MQ_IOSCHED_DEADLINE=y
+CONFIG_MQ_IOSCHED_KYBER=y
+CONFIG_MRP=y
+CONFIG_MSCC_OCELOT_SWITCH=y
+CONFIG_MSCC_OCELOT_SWITCH_LIB=y
+# CONFIG_MT7601U is not set
+# CONFIG_MT7603E is not set
+# CONFIG_MT7615E is not set
+# CONFIG_MT7663S is not set
+# CONFIG_MT7663U is not set
+# CONFIG_MT76x0E is not set
+# CONFIG_MT76x0U is not set
+# CONFIG_MT76x2E is not set
+# CONFIG_MT76x2U is not set
+# CONFIG_MT7915E is not set
+# CONFIG_MT7921E is not set
+CONFIG_MTD_CFI_ADV_OPTIONS=y
+# CONFIG_MTD_CFI_GEOMETRY is not set
+CONFIG_MTD_CFI_STAA=y
+CONFIG_MTD_CMDLINE_PARTS=y
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+CONFIG_MTD_DATAFLASH=y
+# CONFIG_MTD_DATAFLASH_OTP is not set
+# CONFIG_MTD_DATAFLASH_WRITE_VERIFY is not set
+CONFIG_MTD_NAND_CORE=y
+CONFIG_MTD_NAND_DENALI=y
+CONFIG_MTD_NAND_DENALI_DT=y
+CONFIG_MTD_NAND_ECC=y
+CONFIG_MTD_NAND_ECC_SW_HAMMING=y
+CONFIG_MTD_NAND_FSL_IFC=y
+CONFIG_MTD_NAND_GPMI_NAND=y
+CONFIG_MTD_PHYSMAP=y
+CONFIG_MTD_RAW_NAND=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_SST25L=y
+CONFIG_MTD_UBI=y
+CONFIG_MTD_UBI_BEB_LIMIT=20
+# CONFIG_MTD_UBI_BLOCK is not set
+CONFIG_MTD_UBI_WL_THRESHOLD=4096
+CONFIG_MULTIPLEXER=y
+# CONFIG_MUSB_PIO_ONLY is not set
+CONFIG_MUTEX_SPIN_ON_OWNER=y
+CONFIG_MUX_MMIO=y
+CONFIG_MVMDIO=y
+CONFIG_MV_XOR_V2=y
+# CONFIG_MWIFIEX is not set
+CONFIG_MX3_IPU=y
+CONFIG_MX3_IPU_IRQS=4
+CONFIG_MXC_CLK=y
+CONFIG_MXC_CLK_SCU=y
+CONFIG_MXS_DMA=y
+CONFIG_NAMESPACES=y
+CONFIG_NEED_DMA_MAP_STATE=y
+CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y
+CONFIG_NEED_SG_DMA_LENGTH=y
+CONFIG_NETFILTER=y
+CONFIG_NETFILTER_ADVANCED=y
+CONFIG_NETFILTER_INGRESS=y
+CONFIG_NETFILTER_XTABLES=y
+CONFIG_NETFILTER_XTABLES_COMPAT=y
+CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m
+CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
+CONFIG_NETFILTER_XT_NAT=m
+CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m
+CONFIG_NETFILTER_XT_TARGET_LOG=m
+CONFIG_NETFILTER_XT_TARGET_MASQUERADE=m
+CONFIG_NET_9P=y
+# CONFIG_NET_9P_DEBUG is not set
+CONFIG_NET_9P_VIRTIO=y
+# CONFIG_NET_9P_XEN is not set
+# CONFIG_NET_ACT_CONNMARK is not set
+# CONFIG_NET_ACT_CTINFO is not set
+CONFIG_NET_ACT_GACT=m
+CONFIG_NET_ACT_GATE=m
+CONFIG_NET_ACT_MIRRED=m
+CONFIG_NET_CLS_ACT=y
+CONFIG_NET_CLS_BASIC=m
+# CONFIG_NET_CLS_CGROUP is not set
+CONFIG_NET_CLS_FLOWER=m
+CONFIG_NET_CLS_TCINDEX=m
+CONFIG_NET_DEVLINK=y
+CONFIG_NET_DSA=m
+# CONFIG_NET_DSA_HIRSCHMANN_HELLCREEK is not set
+CONFIG_NET_DSA_MSCC_FELIX=m
+CONFIG_NET_DSA_TAG_OCELOT=m
+CONFIG_NET_DSA_TAG_OCELOT_8021Q=m
+CONFIG_NET_EGRESS=y
+CONFIG_NET_FAILOVER=y
+CONFIG_NET_FLOW_LIMIT=y
+CONFIG_NET_INGRESS=y
+CONFIG_NET_IP_TUNNEL=m
+CONFIG_NET_NS=y
+CONFIG_NET_PKTGEN=m
+CONFIG_NET_PTP_CLASSIFY=y
+CONFIG_NET_SCH_CBS=m
+# CONFIG_NET_SCH_DEFAULT is not set
+CONFIG_NET_SCH_ETF=m
+# CONFIG_NET_SCH_FQ_CODEL is not set
+CONFIG_NET_SCH_INGRESS=m
+CONFIG_NET_SCH_MQPRIO=m
+CONFIG_NET_SCH_MULTIQ=m
+CONFIG_NET_SCH_TAPRIO=m
+CONFIG_NET_SELFTESTS=y
+CONFIG_NET_SWITCHDEV=y
+CONFIG_NET_VENDOR_LITEX=y
+CONFIG_NET_VENDOR_MICROSOFT=y
+CONFIG_NFC=m
+# CONFIG_NFC_DIGITAL is not set
+# CONFIG_NFC_FDP is not set
+# CONFIG_NFC_HCI is not set
+# CONFIG_NFC_MRVL_USB is not set
+CONFIG_NFC_NCI=m
+# CONFIG_NFC_NCI_SPI is not set
+# CONFIG_NFC_NCI_UART is not set
+# CONFIG_NFC_NXP_NCI is not set
+# CONFIG_NFC_PN532_UART is not set
+# CONFIG_NFC_PN533_I2C is not set
+# CONFIG_NFC_PN533_USB is not set
+CONFIG_NFC_S3FWRN5=m
+CONFIG_NFC_S3FWRN5_I2C=m
+# CONFIG_NFC_S3FWRN82_UART is not set
+# CONFIG_NFC_ST_NCI_I2C is not set
+# CONFIG_NFC_ST_NCI_SPI is not set
+# CONFIG_NFC_VIRTUAL_NCI is not set
+CONFIG_NFS_DISABLE_UDP_SUPPORT=y
+CONFIG_NFS_FS=y
+CONFIG_NFS_USE_KERNEL_DNS=y
+# CONFIG_NFS_USE_LEGACY_DNS is not set
+CONFIG_NFS_V2=y
+CONFIG_NFS_V4=y
+CONFIG_NFS_V4_1=y
+CONFIG_NFS_V4_1_IMPLEMENTATION_ID_DOMAIN="kernel.org"
+# CONFIG_NFS_V4_1_MIGRATION is not set
+CONFIG_NFS_V4_2=y
+# CONFIG_NFS_V4_2_READ_PLUS is not set
+CONFIG_NFS_V4_2_SSC_HELPER=y
+CONFIG_NFS_V4_SECURITY_LABEL=y
+CONFIG_NF_CONNTRACK=m
+CONFIG_NF_CONNTRACK_EVENTS=y
+CONFIG_NF_CONNTRACK_MARK=y
+CONFIG_NF_CONNTRACK_ZONES=y
+CONFIG_NF_CT_PROTO_DCCP=y
+CONFIG_NF_CT_PROTO_SCTP=y
+CONFIG_NF_CT_PROTO_UDPLITE=y
+CONFIG_NF_DEFRAG_IPV4=m
+CONFIG_NF_DEFRAG_IPV6=m
+CONFIG_NF_LOG_IPV6=m
+CONFIG_NF_LOG_SYSLOG=m
+CONFIG_NF_NAT=m
+CONFIG_NF_NAT_MASQUERADE=y
+CONFIG_NF_REJECT_IPV4=m
+CONFIG_NF_REJECT_IPV6=m
+CONFIG_NL80211_TESTMODE=y
+CONFIG_NLS=y
+CONFIG_NLS_CODEPAGE_437=y
+CONFIG_NLS_ISO8859_1=y
+CONFIG_NODES_SHIFT=4
+CONFIG_NOP_USB_XCEIV=y
+CONFIG_NOUVEAU_DEBUG=5
+CONFIG_NOUVEAU_DEBUG_DEFAULT=3
+# CONFIG_NOUVEAU_DEBUG_MMU is not set
+# CONFIG_NOUVEAU_DEBUG_PUSH is not set
+CONFIG_NOUVEAU_LEGACY_CTX_SUPPORT=y
+CONFIG_NO_HZ_COMMON=y
+CONFIG_NO_HZ_IDLE=y
+CONFIG_NR_CPUS=256
+CONFIG_NUMA=y
+CONFIG_NUMA_BALANCING=y
+CONFIG_NUMA_BALANCING_DEFAULT_ENABLED=y
+# CONFIG_NVHE_EL2_DEBUG is not set
+CONFIG_NVIDIA_CARMEL_CNP_ERRATUM=y
+CONFIG_NVMEM=y
+# CONFIG_NVMEM_IMX_IIM is not set
+CONFIG_NVMEM_IMX_OCOTP=y
+CONFIG_NVMEM_IMX_OCOTP_SCU=y
+CONFIG_NVMEM_RMEM=m
+# CONFIG_NVMEM_SNVS_LPGPR is not set
+# CONFIG_NVMEM_SPMI_SDAM is not set
+CONFIG_NVMEM_SYSFS=y
+CONFIG_NVME_CORE=y
+# CONFIG_NVME_HWMON is not set
+# CONFIG_NVME_MULTIPATH is not set
+CONFIG_NXP_TJA11XX_PHY=y
+CONFIG_OF=y
+CONFIG_OF_ADDRESS=y
+CONFIG_OF_DYNAMIC=y
+CONFIG_OF_EARLY_FLATTREE=y
+CONFIG_OF_FLATTREE=y
+CONFIG_OF_FPGA_REGION=m
+CONFIG_OF_GPIO=y
+CONFIG_OF_IOMMU=y
+CONFIG_OF_IRQ=y
+CONFIG_OF_KOBJ=y
+CONFIG_OF_MDIO=y
+CONFIG_OF_NUMA=y
+CONFIG_OF_OVERLAY=y
+CONFIG_OF_RESOLVE=y
+CONFIG_OID_REGISTRY=y
+CONFIG_OLD_SIGSUSPEND3=y
+CONFIG_OPTEE=y
+CONFIG_OPTEE_SHM_NUM_PRIV_PAGES=1
+CONFIG_OVERLAY_FS=m
+# CONFIG_OVERLAY_FS_XINO_AUTO is not set
+CONFIG_PACKING=y
+CONFIG_PAGE_COUNTER=y
+CONFIG_PAGE_POOL=y
+CONFIG_PAGE_REPORTING=y
+# CONFIG_PANIC_ON_OOPS is not set
+CONFIG_PANIC_ON_OOPS_VALUE=0
+CONFIG_PANIC_TIMEOUT=0
+CONFIG_PARAVIRT=y
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_PARTITION_PERCPU=y
+# CONFIG_PATA_ACPI is not set
+CONFIG_PATA_OF_PLATFORM=y
+CONFIG_PATA_PLATFORM=y
+CONFIG_PATA_TIMINGS=y
+CONFIG_PCC=y
+CONFIG_PCI=y
+CONFIG_PCIEASPM=y
+CONFIG_PCIEASPM_DEFAULT=y
+# CONFIG_PCIEASPM_PERFORMANCE is not set
+# CONFIG_PCIEASPM_POWERSAVE is not set
+# CONFIG_PCIEASPM_POWER_SUPERSAVE is not set
+CONFIG_PCIEPORTBUS=y
+CONFIG_PCIE_ALTERA=y
+CONFIG_PCIE_ALTERA_MSI=y
+# CONFIG_PCIE_CADENCE_PLAT_EP is not set
+CONFIG_PCIE_DW=y
+CONFIG_PCIE_DW_HOST=y
+# CONFIG_PCIE_DW_PLAT_EP is not set
+# CONFIG_PCIE_HISI_ERR is not set
+# CONFIG_PCIE_KEEMBAY_EP is not set
+# CONFIG_PCIE_KEEMBAY_HOST is not set
+CONFIG_PCIE_KIRIN=y
+CONFIG_PCIE_LAYERSCAPE_GEN4=y
+CONFIG_PCIE_MOBIVEIL=y
+CONFIG_PCIE_MOBIVEIL_HOST=y
+CONFIG_PCIE_PME=y
+CONFIG_PCI_ATS=y
+CONFIG_PCI_DOMAINS=y
+CONFIG_PCI_DOMAINS_GENERIC=y
+CONFIG_PCI_ECAM=y
+CONFIG_PCI_ENDPOINT=y
+CONFIG_PCI_ENDPOINT_CONFIGFS=y
+CONFIG_PCI_ENDPOINT_TEST=y
+# CONFIG_PCI_EPF_NTB is not set
+CONFIG_PCI_EPF_TEST=y
+CONFIG_PCI_HISI=y
+CONFIG_PCI_HOST_COMMON=y
+CONFIG_PCI_HOST_GENERIC=y
+CONFIG_PCI_HOST_THUNDER_ECAM=y
+CONFIG_PCI_HOST_THUNDER_PEM=y
+CONFIG_PCI_IMX6=y
+CONFIG_PCI_IOV=y
+# CONFIG_PCI_J721E_EP is not set
+CONFIG_PCI_LABEL=y
+CONFIG_PCI_LAYERSCAPE=y
+# CONFIG_PCI_LAYERSCAPE_EP is not set
+CONFIG_PCI_MESON=m
+CONFIG_PCI_MSI=y
+CONFIG_PCI_MSI_IRQ_DOMAIN=y
+CONFIG_PCI_PASID=y
+CONFIG_PCI_XGENE=y
+CONFIG_PCI_XGENE_MSI=y
+CONFIG_PCPU_DEV_REFCNT=y
+CONFIG_PCS_LYNX=y
+CONFIG_PCS_XPCS=y
+CONFIG_PERF_EVENTS=y
+CONFIG_PGTABLE_LEVELS=4
+CONFIG_PHYLIB=y
+CONFIG_PHYLINK=y
+CONFIG_PHYS_ADDR_T_64BIT=y
+CONFIG_PHY_CADENCE_SALVO=y
+CONFIG_PHY_FSL_IMX8MQ_USB=y
+# CONFIG_PHY_INTEL_KEEMBAY_USB is not set
+CONFIG_PHY_MIXEL_MIPI_DPHY=y
+CONFIG_PHY_QCOM_USB_HS=y
+CONFIG_PHY_SAMSUNG_USB2=y
+CONFIG_PHY_XGENE=y
+CONFIG_PID_IN_CONTEXTIDR=y
+CONFIG_PID_NS=y
+CONFIG_PINCTRL=y
+CONFIG_PINCTRL_IMX=y
+CONFIG_PINCTRL_IMX8DXL=y
+CONFIG_PINCTRL_IMX8MM=y
+CONFIG_PINCTRL_IMX8MN=y
+CONFIG_PINCTRL_IMX8MP=y
+CONFIG_PINCTRL_IMX8MQ=y
+CONFIG_PINCTRL_IMX8QM=y
+CONFIG_PINCTRL_IMX8QXP=y
+CONFIG_PINCTRL_IMX8ULP=y
+CONFIG_PINCTRL_IMX_SCU=y
+# CONFIG_PINCTRL_KEEMBAY is not set
+CONFIG_PINCTRL_MAX77620=y
+# CONFIG_PINCTRL_RK805 is not set
+CONFIG_PKCS7_MESSAGE_PARSER=y
+# CONFIG_PKCS7_TEST_KEY is not set
+# CONFIG_PKCS8_PRIVATE_KEY_PARSER is not set
+CONFIG_PL330_DMA=y
+CONFIG_PLATFORM_MHU=y
+CONFIG_PM=y
+# CONFIG_PMIC_OPREGION is not set
+# CONFIG_PM_ADVANCED_DEBUG is not set
+CONFIG_PM_CLK=y
+CONFIG_PM_DEBUG=y
+CONFIG_PM_DEVFREQ=y
+# CONFIG_PM_DEVFREQ_EVENT is not set
+CONFIG_PM_GENERIC_DOMAINS=y
+CONFIG_PM_GENERIC_DOMAINS_OF=y
+CONFIG_PM_GENERIC_DOMAINS_SLEEP=y
+CONFIG_PM_OPP=y
+CONFIG_PM_SLEEP=y
+CONFIG_PM_SLEEP_DEBUG=y
+CONFIG_PM_SLEEP_SMP=y
+CONFIG_PM_TEST_SUSPEND=y
+CONFIG_PNFS_BLOCK=m
+CONFIG_PNFS_FILE_LAYOUT=y
+CONFIG_PNFS_FLEXFILE_LAYOUT=y
+CONFIG_PNP=y
+CONFIG_PNPACPI=y
+CONFIG_PNP_DEBUG_MESSAGES=y
+CONFIG_POSIX_MQUEUE=y
+CONFIG_POSIX_MQUEUE_SYSCTL=y
+CONFIG_POWER_RESET=y
+CONFIG_POWER_RESET_BRCMSTB=y
+# CONFIG_POWER_RESET_MT6323 is not set
+CONFIG_POWER_RESET_SYSCON=y
+# CONFIG_POWER_RESET_VEXPRESS is not set
+CONFIG_POWER_RESET_XGENE=y
+CONFIG_POWER_SUPPLY=y
+CONFIG_POWER_SUPPLY_HWMON=y
+CONFIG_PPS=y
+CONFIG_PREEMPT=y
+CONFIG_PREEMPTION=y
+CONFIG_PREEMPT_COUNT=y
+# CONFIG_PREEMPT_NONE is not set
+CONFIG_PREEMPT_NOTIFIERS=y
+CONFIG_PREEMPT_RCU=y
+CONFIG_PRINTK_TIME=y
+CONFIG_PRINT_QUOTA_WARNING=y
+CONFIG_PROC_PAGE_MONITOR=y
+CONFIG_PROC_PID_CPUSET=y
+CONFIG_PROC_VMCORE=y
+CONFIG_PROFILING=y
+CONFIG_PSTORE=y
+CONFIG_PSTORE_COMPRESS=y
+CONFIG_PSTORE_COMPRESS_DEFAULT="deflate"
+CONFIG_PSTORE_DEFLATE_COMPRESS=y
+CONFIG_PSTORE_DEFLATE_COMPRESS_DEFAULT=y
+CONFIG_PTP_1588_CLOCK=y
+CONFIG_PTP_1588_CLOCK_KVM=y
+CONFIG_PTP_1588_CLOCK_OPTIONAL=y
+CONFIG_PTP_1588_CLOCK_QORIQ=y
+CONFIG_PWM=y
+CONFIG_PWM_CROS_EC=m
+CONFIG_PWM_FSL_FTM=m
+# CONFIG_PWM_IMX1 is not set
+CONFIG_PWM_IMX27=y
+# CONFIG_PWM_IMX_TPM is not set
+# CONFIG_PWM_KEEMBAY is not set
+CONFIG_PWM_SL28CPLD=m
+CONFIG_PWM_SYSFS=y
+CONFIG_QCOM_EMAC=m
+CONFIG_QCOM_FALKOR_ERRATUM_1003=y
+CONFIG_QCOM_FALKOR_ERRATUM_1009=y
+CONFIG_QCOM_FALKOR_ERRATUM_E1041=y
+CONFIG_QCOM_HIDMA=y
+CONFIG_QCOM_HIDMA_MGMT=y
+CONFIG_QCOM_QDF2400_ERRATUM_0065=y
+CONFIG_QCOM_SPMI_ADC5=m
+CONFIG_QCOM_SPMI_VADC=m
+CONFIG_QCOM_VADC_COMMON=m
+# CONFIG_QFMT_V2 is not set
+CONFIG_QORIQ_CPUFREQ=y
+CONFIG_QORIQ_THERMAL=y
+CONFIG_QRTR=m
+CONFIG_QRTR_SMD=m
+CONFIG_QRTR_TUN=m
+# CONFIG_QTNFMAC_PCIE is not set
+CONFIG_QUEUED_RWLOCKS=y
+CONFIG_QUEUED_SPINLOCKS=y
+CONFIG_QUOTA=y
+CONFIG_QUOTACTL=y
+CONFIG_RAID6_PQ=m
+CONFIG_RAID6_PQ_BENCHMARK=y
+CONFIG_RAID_ATTRS=m
+CONFIG_RANDOMIZE_BASE=y
+CONFIG_RANDOMIZE_MODULE_REGION_FULL=y
+CONFIG_RAS=y
+CONFIG_RATIONAL=y
+# CONFIG_RAVE_SP_CORE is not set
+CONFIG_RCU_CPU_STALL_TIMEOUT=21
+CONFIG_RCU_TRACE=y
+CONFIG_RC_CORE=m
+CONFIG_RC_DECODERS=y
+CONFIG_RC_DEVICES=y
+CONFIG_RC_MAP=m
+# CONFIG_RC_XBOX_DVD is not set
+CONFIG_RD_BZIP2=y
+CONFIG_RD_GZIP=y
+CONFIG_RD_LZ4=y
+CONFIG_RD_LZMA=y
+CONFIG_RD_LZO=y
+CONFIG_RD_XZ=y
+CONFIG_RD_ZSTD=y
+CONFIG_REALTEK_PHY=y
+CONFIG_REBOOT_MODE=y
+CONFIG_REGMAP=y
+CONFIG_REGMAP_I2C=y
+CONFIG_REGMAP_I3C=y
+CONFIG_REGMAP_IRQ=y
+CONFIG_REGMAP_MMIO=y
+CONFIG_REGMAP_SLIMBUS=m
+CONFIG_REGMAP_SOUNDWIRE=m
+CONFIG_REGMAP_SPI=y
+CONFIG_REGMAP_SPMI=m
+CONFIG_REGULATOR=y
+# CONFIG_REGULATOR_ARM_SCMI is not set
+CONFIG_REGULATOR_AXP20X=y
+CONFIG_REGULATOR_BD718XX=y
+CONFIG_REGULATOR_BD9571MWV=y
+# CONFIG_REGULATOR_CROS_EC is not set
+CONFIG_REGULATOR_FAN53555=y
+CONFIG_REGULATOR_FIXED_VOLTAGE=y
+CONFIG_REGULATOR_GPIO=y
+# CONFIG_REGULATOR_HI6421 is not set
+CONFIG_REGULATOR_HI6421V530=y
+CONFIG_REGULATOR_MAX77620=y
+CONFIG_REGULATOR_MAX8973=y
+CONFIG_REGULATOR_MP8859=y
+# CONFIG_REGULATOR_MT6323 is not set
+CONFIG_REGULATOR_MT6358=y
+CONFIG_REGULATOR_MT6397=y
+CONFIG_REGULATOR_PCA9450=y
+CONFIG_REGULATOR_PF8X00=y
+CONFIG_REGULATOR_PFUZE100=y
+CONFIG_REGULATOR_PWM=y
+# CONFIG_REGULATOR_QCOM_LABIBB is not set
+CONFIG_REGULATOR_QCOM_SPMI=y
+# CONFIG_REGULATOR_QCOM_USB_VBUS is not set
+CONFIG_REGULATOR_RK808=y
+CONFIG_REGULATOR_ROHM=y
+# CONFIG_REGULATOR_S2MPA01 is not set
+CONFIG_REGULATOR_S2MPS11=y
+# CONFIG_REGULATOR_S5M8767 is not set
+CONFIG_REGULATOR_TPS65132=m
+CONFIG_REGULATOR_VCTRL=m
+# CONFIG_REGULATOR_VEXPRESS is not set
+# CONFIG_REGULATOR_WM8994 is not set
+CONFIG_RELAY=y
+CONFIG_RELOCATABLE=y
+CONFIG_REMOTEPROC=y
+# CONFIG_REMOTEPROC_CDEV is not set
+# CONFIG_RESET_ATTACK_MITIGATION is not set
+CONFIG_RESET_CONTROLLER=y
+CONFIG_RESET_IMX7=y
+CONFIG_RESET_SCMI=y
+CONFIG_RFS_ACCEL=y
+CONFIG_RMNET=m
+CONFIG_ROCKCHIP_PHY=y
+CONFIG_RODATA_FULL_DEFAULT_ENABLED=y
+CONFIG_ROOT_NFS=y
+CONFIG_RPCSEC_GSS_KRB5=m
+CONFIG_RPMSG=y
+CONFIG_RPMSG_CHAR=m
+CONFIG_RPMSG_NS=y
+CONFIG_RPMSG_QCOM_GLINK=y
+CONFIG_RPMSG_QCOM_GLINK_RPM=y
+CONFIG_RPMSG_VIRTIO=y
+CONFIG_RPS=y
+CONFIG_RSEQ=y
+# CONFIG_RSI_91X is not set
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_DRV_CROS_EC=y
+CONFIG_RTC_DRV_DS1307=m
+CONFIG_RTC_DRV_DS3232=y
+CONFIG_RTC_DRV_DS3232_HWMON=y
+CONFIG_RTC_DRV_EFI=y
+CONFIG_RTC_DRV_FSL_FTM_ALARM=m
+CONFIG_RTC_DRV_HYM8563=m
+# CONFIG_RTC_DRV_IMXDI is not set
+CONFIG_RTC_DRV_IMX_SC=y
+CONFIG_RTC_DRV_M41T80=m
+# CONFIG_RTC_DRV_M41T80_WDT is not set
+CONFIG_RTC_DRV_MAX77686=y
+# CONFIG_RTC_DRV_MT6397 is not set
+# CONFIG_RTC_DRV_MXC is not set
+# CONFIG_RTC_DRV_MXC_V2 is not set
+CONFIG_RTC_DRV_PCF2127=m
+CONFIG_RTC_DRV_PCF85363=m
+CONFIG_RTC_DRV_PL031=y
+CONFIG_RTC_DRV_RK808=m
+CONFIG_RTC_DRV_RV3028=m
+CONFIG_RTC_DRV_RV8803=m
+CONFIG_RTC_DRV_RX8581=m
+CONFIG_RTC_DRV_S5M=y
+CONFIG_RTC_DRV_SNVS=y
+CONFIG_RTC_I2C_AND_SPI=y
+CONFIG_RTC_NVMEM=y
+# CONFIG_RTL8188EE is not set
+# CONFIG_RTL8192CE is not set
+# CONFIG_RTL8192CU is not set
+# CONFIG_RTL8192DE is not set
+# CONFIG_RTL8192EE is not set
+# CONFIG_RTL8192SE is not set
+# CONFIG_RTL8723AE is not set
+# CONFIG_RTL8723BE is not set
+# CONFIG_RTL8723BS is not set
+# CONFIG_RTL8821AE is not set
+# CONFIG_RTL8XXXU is not set
+CONFIG_RTL_CARDS=y
+# CONFIG_RTW88 is not set
+# CONFIG_RT_GROUP_SCHED is not set
+CONFIG_RWSEM_SPIN_ON_OWNER=y
+CONFIG_SATA_AHCI=y
+CONFIG_SATA_AHCI_PLATFORM=y
+CONFIG_SATA_HOST=y
+CONFIG_SATA_PMP=y
+CONFIG_SATA_SIL24=y
+# CONFIG_SATA_ZPODD is not set
+CONFIG_SCHED_AUTOGROUP=y
+# CONFIG_SCHED_CORE is not set
+CONFIG_SCHED_INFO=y
+CONFIG_SCHED_MC=y
+CONFIG_SCHED_SMT=y
+CONFIG_SCHED_THERMAL_PRESSURE=y
+CONFIG_SCSI=y
+CONFIG_SCSI_COMMON=y
+CONFIG_SCSI_HISI_SAS=y
+# CONFIG_SCSI_HISI_SAS_DEBUGFS_DEFAULT_ENABLE is not set
+CONFIG_SCSI_HISI_SAS_PCI=y
+CONFIG_SCSI_MPT2SAS_MAX_SGE=128
+CONFIG_SCSI_MPT3SAS=m
+CONFIG_SCSI_MPT3SAS_MAX_SGE=128
+# CONFIG_SCSI_PROC_FS is not set
+CONFIG_SCSI_SAS_ATA=y
+CONFIG_SCSI_SAS_ATTRS=y
+CONFIG_SCSI_SAS_HOST_SMP=y
+CONFIG_SCSI_SAS_LIBSAS=y
+CONFIG_SCSI_UFSHCD=y
+# CONFIG_SCSI_UFSHCD_PCI is not set
+CONFIG_SCSI_UFSHCD_PLATFORM=y
+# CONFIG_SCSI_UFS_BSG is not set
+# CONFIG_SCSI_UFS_CDNS_PLATFORM is not set
+# CONFIG_SCSI_UFS_DWC_TC_PLATFORM is not set
+# CONFIG_SCSI_UFS_HPB is not set
+CONFIG_SDR_PLATFORM_DRIVERS=y
+CONFIG_SECCOMP=y
+CONFIG_SECCOMP_FILTER=y
+# CONFIG_SECONDARY_TRUSTED_KEYRING is not set
+CONFIG_SECRETMEM=y
+CONFIG_SECURITY=y
+CONFIG_SECURITYFS=y
+# CONFIG_SECURITY_DMESG_RESTRICT is not set
+# CONFIG_SECURITY_NETWORK is not set
+CONFIG_SENSORS_ARM_SCMI=y
+CONFIG_SENSORS_ARM_SCPI=y
+# CONFIG_SENSORS_IBMAEM is not set
+# CONFIG_SENSORS_IBMPEX is not set
+CONFIG_SENSORS_INA2XX=m
+CONFIG_SENSORS_INA3221=m
+CONFIG_SENSORS_ISL29018=y
+CONFIG_SENSORS_LM90=m
+CONFIG_SENSORS_PWM_FAN=m
+CONFIG_SENSORS_SL28CPLD=m
+CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y
+CONFIG_SERIAL_8250_DW=y
+CONFIG_SERIAL_8250_DWLIB=y
+CONFIG_SERIAL_8250_EXAR=y
+CONFIG_SERIAL_8250_EXTENDED=y
+CONFIG_SERIAL_8250_FSL=y
+CONFIG_SERIAL_8250_NR_UARTS=4
+CONFIG_SERIAL_8250_PCI=y
+CONFIG_SERIAL_8250_PNP=y
+CONFIG_SERIAL_8250_RUNTIME_UARTS=4
+CONFIG_SERIAL_8250_SHARE_IRQ=y
+CONFIG_SERIAL_AMBA_PL011=y
+CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
+CONFIG_SERIAL_DEV_BUS=y
+CONFIG_SERIAL_DEV_CTRL_TTYPORT=y
+CONFIG_SERIAL_FSL_LINFLEXUART=y
+CONFIG_SERIAL_FSL_LINFLEXUART_CONSOLE=y
+CONFIG_SERIAL_FSL_LPUART=y
+CONFIG_SERIAL_FSL_LPUART_CONSOLE=y
+CONFIG_SERIAL_IMX=y
+CONFIG_SERIAL_IMX_CONSOLE=y
+CONFIG_SERIAL_IMX_EARLYCON=y
+CONFIG_SERIAL_MCTRL_GPIO=y
+CONFIG_SERIAL_OF_PLATFORM=y
+CONFIG_SERIAL_XILINX_PS_UART=y
+CONFIG_SERIAL_XILINX_PS_UART_CONSOLE=y
+CONFIG_SERIO=y
+CONFIG_SERIO_AMBAKMI=y
+CONFIG_SERIO_LIBPS2=y
+CONFIG_SGL_ALLOC=y
+CONFIG_SG_POOL=y
+CONFIG_SKY2=y
+CONFIG_SL28CPLD_INTC=y
+CONFIG_SL28CPLD_WATCHDOG=m
+CONFIG_SLIMBUS=m
+CONFIG_SLIM_QCOM_CTRL=m
+CONFIG_SLUB_DEBUG=y
+CONFIG_SMC91X=y
+CONFIG_SMP=y
+CONFIG_SMSC911X=y
+CONFIG_SMSC_PHY=m
+CONFIG_SND=y
+CONFIG_SND_ALOOP=m
+CONFIG_SND_AUDIO_GRAPH_CARD=y
+CONFIG_SND_COMPRESS_OFFLOAD=y
+CONFIG_SND_DMAENGINE_PCM=y
+CONFIG_SND_DYNAMIC_MINORS=y
+CONFIG_SND_HWDEP=m
+CONFIG_SND_IMX_SOC=m
+CONFIG_SND_JACK=y
+CONFIG_SND_JACK_INPUT_DEV=y
+CONFIG_SND_MAX_CARDS=32
+# CONFIG_SND_OSSEMUL is not set
+CONFIG_SND_PCM=y
+CONFIG_SND_PCM_ELD=y
+CONFIG_SND_PCM_IEC958=y
+CONFIG_SND_PCM_TIMER=y
+CONFIG_SND_RAWMIDI=y
+CONFIG_SND_SIMPLE_CARD=y
+CONFIG_SND_SIMPLE_CARD_UTILS=y
+CONFIG_SND_SOC=y
+CONFIG_SND_SOC_AK4458=m
+CONFIG_SND_SOC_AK4613=m
+CONFIG_SND_SOC_AK5558=m
+CONFIG_SND_SOC_BT_SCO=y
+CONFIG_SND_SOC_CROS_EC_CODEC=m
+CONFIG_SND_SOC_CS42XX8=y
+CONFIG_SND_SOC_CS42XX8_I2C=y
+CONFIG_SND_SOC_DMIC=m
+CONFIG_SND_SOC_ES7134=m
+CONFIG_SND_SOC_ES7241=m
+CONFIG_SND_SOC_FSL_ASOC_CARD=m
+CONFIG_SND_SOC_FSL_ASRC=m
+CONFIG_SND_SOC_FSL_AUD2HTX=m
+CONFIG_SND_SOC_FSL_AUDMIX=m
+CONFIG_SND_SOC_FSL_EASRC=m
+CONFIG_SND_SOC_FSL_ESAI=m
+CONFIG_SND_SOC_FSL_MICFIL=m
+CONFIG_SND_SOC_FSL_MQS=m
+CONFIG_SND_SOC_FSL_RPMSG=m
+CONFIG_SND_SOC_FSL_SAI=m
+CONFIG_SND_SOC_FSL_SPDIF=m
+CONFIG_SND_SOC_FSL_SSI=m
+CONFIG_SND_SOC_FSL_XCVR=m
+CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y
+CONFIG_SND_SOC_GTM601=m
+CONFIG_SND_SOC_HDMI_CODEC=y
+CONFIG_SND_SOC_I2C_AND_SPI=y
+CONFIG_SND_SOC_IMX_AUDIO_RPMSG=m
+CONFIG_SND_SOC_IMX_AUDMIX=m
+CONFIG_SND_SOC_IMX_AUDMUX=m
+CONFIG_SND_SOC_IMX_CARD=m
+CONFIG_SND_SOC_IMX_HDMI=m
+CONFIG_SND_SOC_IMX_PCM_DMA=m
+CONFIG_SND_SOC_IMX_PCM_RPMSG=m
+CONFIG_SND_SOC_IMX_RPMSG=m
+CONFIG_SND_SOC_IMX_SGTL5000=m
+CONFIG_SND_SOC_IMX_SPDIF=m
+CONFIG_SND_SOC_LPASS_VA_MACRO=m
+CONFIG_SND_SOC_LPASS_WSA_MACRO=m
+CONFIG_SND_SOC_MAX98357A=m
+# CONFIG_SND_SOC_MAX98373_SDW is not set
+CONFIG_SND_SOC_MAX98927=m
+CONFIG_SND_SOC_MSM8916_WCD_ANALOG=m
+CONFIG_SND_SOC_MSM8916_WCD_DIGITAL=m
+CONFIG_SND_SOC_PCM3168A=m
+CONFIG_SND_SOC_PCM3168A_I2C=m
+CONFIG_SND_SOC_PCM512x=m
+CONFIG_SND_SOC_PCM512x_I2C=m
+# CONFIG_SND_SOC_RK817 is not set
+CONFIG_SND_SOC_RL6231=m
+# CONFIG_SND_SOC_RT1308_SDW is not set
+# CONFIG_SND_SOC_RT1316_SDW is not set
+CONFIG_SND_SOC_RT5659=m
+# CONFIG_SND_SOC_RT5682_SDW is not set
+# CONFIG_SND_SOC_RT700_SDW is not set
+# CONFIG_SND_SOC_RT711_SDCA_SDW is not set
+# CONFIG_SND_SOC_RT711_SDW is not set
+# CONFIG_SND_SOC_RT715_SDCA_SDW is not set
+# CONFIG_SND_SOC_RT715_SDW is not set
+CONFIG_SND_SOC_SGTL5000=m
+CONFIG_SND_SOC_SIMPLE_AMPLIFIER=m
+CONFIG_SND_SOC_SIMPLE_MUX=m
+CONFIG_SND_SOC_SOF=m
+# CONFIG_SND_SOC_SOF_ACPI is not set
+# CONFIG_SND_SOC_SOF_DEBUG_PROBES is not set
+CONFIG_SND_SOC_SOF_IMX8M=m
+CONFIG_SND_SOC_SOF_IMX8M_SUPPORT=y
+# CONFIG_SND_SOC_SOF_IMX8_SUPPORT is not set
+CONFIG_SND_SOC_SOF_IMX_COMMON=m
+CONFIG_SND_SOC_SOF_IMX_OF=m
+CONFIG_SND_SOC_SOF_IMX_TOPLEVEL=y
+CONFIG_SND_SOC_SOF_OF=m
+# CONFIG_SND_SOC_SOF_PCI is not set
+CONFIG_SND_SOC_SOF_TOPLEVEL=y
+CONFIG_SND_SOC_SOF_XTENSA=m
+CONFIG_SND_SOC_SPDIF=m
+CONFIG_SND_SOC_TAS571X=m
+CONFIG_SND_SOC_TOPOLOGY=y
+CONFIG_SND_SOC_TPA6130A2=m
+# CONFIG_SND_SOC_WCD9335 is not set
+CONFIG_SND_SOC_WCD934X=m
+# CONFIG_SND_SOC_WCD938X_SDW is not set
+CONFIG_SND_SOC_WCD_MBHC=m
+CONFIG_SND_SOC_WM8524=y
+CONFIG_SND_SOC_WM8904=m
+CONFIG_SND_SOC_WM8960=m
+CONFIG_SND_SOC_WM8962=m
+CONFIG_SND_SOC_WM8994=m
+CONFIG_SND_SOC_WM_HUBS=m
+CONFIG_SND_SOC_WSA881X=m
+CONFIG_SND_SPI=y
+CONFIG_SND_SUPPORT_OLD_API=y
+CONFIG_SND_TIMER=y
+CONFIG_SND_USB_AUDIO=m
+CONFIG_SND_USB_AUDIO_USE_MEDIA_CONTROLLER=y
+CONFIG_SOCIONEXT_SYNQUACER_PREITS=y
+CONFIG_SOCK_DIAG=y
+CONFIG_SOCK_RX_QUEUE_MAPPING=y
+CONFIG_SOCK_VALIDATE_XMIT=y
+CONFIG_SOC_BRCMSTB=y
+CONFIG_SOC_BUS=y
+CONFIG_SOC_IMX8M=y
+CONFIG_SOC_TI=y
+CONFIG_SOUND=y
+CONFIG_SOUNDWIRE=m
+# CONFIG_SOUNDWIRE_INTEL is not set
+CONFIG_SOUNDWIRE_QCOM=m
+CONFIG_SPARSEMEM=y
+CONFIG_SPARSEMEM_EXTREME=y
+CONFIG_SPARSEMEM_VMEMMAP=y
+CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
+CONFIG_SPARSE_IRQ=y
+CONFIG_SPI=y
+CONFIG_SPI_BITBANG=y
+CONFIG_SPI_CADENCE_QUADSPI=y
+CONFIG_SPI_DESIGNWARE=m
+CONFIG_SPI_DW_DMA=y
+CONFIG_SPI_DW_MMIO=m
+# CONFIG_SPI_DW_PCI is not set
+CONFIG_SPI_DYNAMIC=y
+CONFIG_SPI_FSL_DSPI=y
+CONFIG_SPI_FSL_LPSPI=y
+CONFIG_SPI_FSL_QUADSPI=y
+# CONFIG_SPI_HISI_KUNPENG is not set
+# CONFIG_SPI_HISI_SFC_V3XX is not set
+CONFIG_SPI_IMX=y
+CONFIG_SPI_MASTER=y
+CONFIG_SPI_MEM=y
+CONFIG_SPI_NXP_FLEXSPI=y
+CONFIG_SPI_PL022=y
+CONFIG_SPI_ROCKCHIP=y
+CONFIG_SPI_SLAVE=y
+CONFIG_SPI_SLAVE_SYSTEM_CONTROL=y
+CONFIG_SPI_SLAVE_TIME=y
+CONFIG_SPI_SPIDEV=y
+CONFIG_SPMI=y
+# CONFIG_SPMI_HISI3670 is not set
+# CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU is not set
+CONFIG_SQUASHFS_DECOMP_SINGLE=y
+# CONFIG_SQUASHFS_EMBEDDED is not set
+CONFIG_SQUASHFS_FILE_CACHE=y
+# CONFIG_SQUASHFS_FILE_DIRECT is not set
+CONFIG_SQUASHFS_ZLIB=y
+CONFIG_SRAM=y
+CONFIG_SRCU=y
+CONFIG_STACKPROTECTOR=y
+CONFIG_STACKPROTECTOR_PER_TASK=y
+CONFIG_STACKPROTECTOR_STRONG=y
+CONFIG_STAGING_MEDIA=y
+CONFIG_STMMAC_ETH=y
+CONFIG_STMMAC_PLATFORM=y
+CONFIG_STMP_DEVICE=y
+CONFIG_STREAM_PARSER=y
+CONFIG_STRICT_DEVMEM=y
+# CONFIG_STRIP_ASM_SYMS is not set
+CONFIG_SUNRPC=y
+CONFIG_SUNRPC_BACKCHANNEL=y
+# CONFIG_SUNRPC_DISABLE_INSECURE_ENCTYPES is not set
+CONFIG_SUNRPC_GSS=y
+# CONFIG_SURFACE_3_POWER_OPREGION is not set
+# CONFIG_SURFACE_AGGREGATOR is not set
+# CONFIG_SURFACE_GPE is not set
+# CONFIG_SURFACE_HOTPLUG is not set
+CONFIG_SURFACE_PLATFORMS=y
+# CONFIG_SURFACE_PRO3_BUTTON is not set
+CONFIG_SUSPEND=y
+CONFIG_SUSPEND_FREEZER=y
+CONFIG_SVC_I3C_MASTER=y
+CONFIG_SWIOTLB=y
+CONFIG_SWIOTLB_XEN=y
+CONFIG_SWPHY=y
+CONFIG_SYNC_FILE=y
+# CONFIG_SYN_COOKIES is not set
+CONFIG_SYSCON_REBOOT_MODE=y
+CONFIG_SYSCTL_EXCEPTION_TRACE=y
+CONFIG_SYSFB=y
+# CONFIG_SYSFB_SIMPLEFB is not set
+CONFIG_SYSFS_SYSCALL=y
+CONFIG_SYSTEM_DATA_VERIFICATION=y
+# CONFIG_SYSTEM_EXTRA_CERTIFICATE is not set
+CONFIG_SYSTEM_TRUSTED_KEYRING=y
+CONFIG_SYSVIPC_COMPAT=y
+CONFIG_SYS_HYPERVISOR=y
+CONFIG_TAP=m
+CONFIG_TCG_TIS_I2C_INFINEON=y
+CONFIG_TCG_TPM=y
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TEE=y
+CONFIG_THERMAL=y
+CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
+CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0
+CONFIG_THERMAL_EMULATION=y
+CONFIG_THERMAL_GOV_POWER_ALLOCATOR=y
+CONFIG_THERMAL_GOV_STEP_WISE=y
+CONFIG_THERMAL_HWMON=y
+CONFIG_THERMAL_OF=y
+CONFIG_THERMAL_WRITABLE_TRIPS=y
+CONFIG_THREAD_INFO_IN_TASK=y
+CONFIG_THUNDER_NIC_BGX=y
+CONFIG_THUNDER_NIC_PF=y
+CONFIG_THUNDER_NIC_RGX=y
+CONFIG_TICK_CPU_ACCOUNTING=y
+CONFIG_TIMER_ACPI=y
+CONFIG_TIMER_IMX_SYS_CTR=y
+CONFIG_TIMER_OF=y
+CONFIG_TIMER_PROBE=y
+CONFIG_TIME_NS=y
+CONFIG_TLS=y
+CONFIG_TLS_DEVICE=y
+# CONFIG_TLS_TOE is not set
+CONFIG_TMPFS_POSIX_ACL=y
+CONFIG_TOUCHSCREEN_ATMEL_MXT=m
+CONFIG_TOUCHSCREEN_EDT_FT5X06=m
+CONFIG_TOUCHSCREEN_EXC3000=m
+CONFIG_TOUCHSCREEN_GOODIX=m
+CONFIG_TRACE_CLOCK=y
+CONFIG_TRANSPARENT_HUGEPAGE=y
+CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y
+# CONFIG_TRANSPARENT_HUGEPAGE_MADVISE is not set
+CONFIG_TREE_RCU=y
+CONFIG_TREE_SRCU=y
+CONFIG_TRUSTED_KEYS=m
+CONFIG_TUN=y
+CONFIG_TYPEC=y
+# CONFIG_TYPEC_DP_ALTMODE is not set
+CONFIG_TYPEC_FUSB302=m
+CONFIG_TYPEC_HD3SS3220=m
+# CONFIG_TYPEC_MUX_PI3USB30532 is not set
+# CONFIG_TYPEC_RT1711H is not set
+# CONFIG_TYPEC_STUSB160X is not set
+CONFIG_TYPEC_TCPCI=y
+# CONFIG_TYPEC_TCPCI_MAXIM is not set
+CONFIG_TYPEC_TCPM=y
+CONFIG_TYPEC_TPS6598X=m
+CONFIG_UACCE=m
+CONFIG_UBIFS_FS=y
+CONFIG_UBIFS_FS_SECURITY=y
+# CONFIG_UCLAMP_TASK is not set
+CONFIG_UCS2_STRING=y
+CONFIG_UEFI_CPER=y
+CONFIG_UEFI_CPER_ARM=y
+# CONFIG_UEVENT_HELPER is not set
+CONFIG_UIO=y
+# CONFIG_UIO_AEC is not set
+# CONFIG_UIO_CIF is not set
+# CONFIG_UIO_DMEM_GENIRQ is not set
+# CONFIG_UIO_MF624 is not set
+# CONFIG_UIO_NETX is not set
+CONFIG_UIO_PCI_GENERIC=y
+# CONFIG_UIO_PDRV_GENIRQ is not set
+# CONFIG_UIO_PRUSS is not set
+# CONFIG_UIO_SERCOS3 is not set
+CONFIG_UNINLINE_SPIN_UNLOCK=y
+CONFIG_UNMAP_KERNEL_AT_EL0=y
+CONFIG_USB=y
+CONFIG_USB_ACM=m
+# CONFIG_USB_ALI_M5632 is not set
+# CONFIG_USB_AN2720 is not set
+CONFIG_USB_AUDIO=m
+CONFIG_USB_BDC_UDC=y
+CONFIG_USB_CDNS3=y
+CONFIG_USB_CDNS3_GADGET=y
+CONFIG_USB_CDNS3_HOST=y
+CONFIG_USB_CDNS3_IMX=y
+CONFIG_USB_CDNS3_PCI_WRAP=y
+# CONFIG_USB_CDNSP_PCI is not set
+CONFIG_USB_CDNS_HOST=y
+CONFIG_USB_CDNS_SUPPORT=y
+CONFIG_USB_CHIPIDEA=y
+CONFIG_USB_CHIPIDEA_GENERIC=y
+CONFIG_USB_CHIPIDEA_HOST=y
+CONFIG_USB_CHIPIDEA_IMX=y
+CONFIG_USB_CHIPIDEA_MSM=y
+CONFIG_USB_CHIPIDEA_PCI=y
+CONFIG_USB_CHIPIDEA_TEGRA=y
+CONFIG_USB_CHIPIDEA_UDC=y
+CONFIG_USB_COMMON=y
+CONFIG_USB_CONFIGFS=y
+CONFIG_USB_CONFIGFS_ACM=y
+CONFIG_USB_CONFIGFS_ECM=y
+CONFIG_USB_CONFIGFS_ECM_SUBSET=y
+CONFIG_USB_CONFIGFS_EEM=y
+CONFIG_USB_CONFIGFS_F_FS=y
+CONFIG_USB_CONFIGFS_F_HID=y
+CONFIG_USB_CONFIGFS_F_LB_SS=y
+CONFIG_USB_CONFIGFS_F_MIDI=y
+# CONFIG_USB_CONFIGFS_F_PRINTER is not set
+CONFIG_USB_CONFIGFS_F_UAC1=y
+CONFIG_USB_CONFIGFS_F_UAC1_LEGACY=y
+CONFIG_USB_CONFIGFS_F_UAC2=y
+CONFIG_USB_CONFIGFS_F_UVC=y
+CONFIG_USB_CONFIGFS_MASS_STORAGE=y
+CONFIG_USB_CONFIGFS_NCM=y
+CONFIG_USB_CONFIGFS_OBEX=y
+CONFIG_USB_CONFIGFS_RNDIS=y
+CONFIG_USB_CONFIGFS_SERIAL=y
+CONFIG_USB_CONN_GPIO=y
+CONFIG_USB_DWC2=y
+CONFIG_USB_DWC2_DUAL_ROLE=y
+# CONFIG_USB_DWC2_PCI is not set
+CONFIG_USB_DWC3=y
+CONFIG_USB_DWC3_DUAL_ROLE=y
+# CONFIG_USB_DWC3_GADGET is not set
+CONFIG_USB_DWC3_HAPS=y
+# CONFIG_USB_DWC3_HOST is not set
+CONFIG_USB_DWC3_IMX8MP=y
+CONFIG_USB_DWC3_OF_SIMPLE=y
+CONFIG_USB_DWC3_PCI=y
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_EHCI_HCD_PLATFORM=y
+CONFIG_USB_EHCI_PCI=y
+CONFIG_USB_EHSET_TEST_FIXTURE=y
+CONFIG_USB_ETH=m
+# CONFIG_USB_ETH_EEM is not set
+CONFIG_USB_ETH_RNDIS=y
+CONFIG_USB_F_ACM=y
+CONFIG_USB_F_ECM=y
+CONFIG_USB_F_EEM=y
+CONFIG_USB_F_FS=y
+CONFIG_USB_F_HID=y
+CONFIG_USB_F_MASS_STORAGE=y
+CONFIG_USB_F_MIDI=y
+CONFIG_USB_F_NCM=y
+CONFIG_USB_F_OBEX=y
+CONFIG_USB_F_RNDIS=y
+CONFIG_USB_F_SERIAL=y
+CONFIG_USB_F_SS_LB=y
+CONFIG_USB_F_SUBSET=y
+CONFIG_USB_F_UAC1=y
+CONFIG_USB_F_UAC1_LEGACY=y
+CONFIG_USB_F_UAC2=y
+CONFIG_USB_F_UVC=y
+CONFIG_USB_GADGET=y
+CONFIG_USB_G_SERIAL=m
+CONFIG_USB_HCD_TEST_MODE=y
+CONFIG_USB_HID=y
+CONFIG_USB_HSIC_USB3503=y
+CONFIG_USB_ISP1760=y
+CONFIG_USB_ISP1760_DUAL_ROLE=y
+# CONFIG_USB_ISP1760_GADGET_ROLE is not set
+CONFIG_USB_ISP1760_HCD=y
+# CONFIG_USB_ISP1760_HOST_ROLE is not set
+CONFIG_USB_ISP1761_UDC=y
+CONFIG_USB_LAN78XX=m
+CONFIG_USB_LIBCOMPOSITE=y
+CONFIG_USB_MASS_STORAGE=m
+CONFIG_USB_MUSB_DUAL_ROLE=y
+CONFIG_USB_MUSB_HDRC=y
+CONFIG_USB_MXS_PHY=y
+CONFIG_USB_NET_AX88179_178A=m
+CONFIG_USB_NET_AX8817X=m
+CONFIG_USB_NET_CDCETHER=m
+CONFIG_USB_NET_CDC_NCM=m
+CONFIG_USB_NET_CDC_SUBSET=m
+CONFIG_USB_NET_CDC_SUBSET_ENABLE=m
+CONFIG_USB_NET_DM9601=m
+CONFIG_USB_NET_DRIVERS=y
+CONFIG_USB_NET_MCS7830=m
+CONFIG_USB_NET_NET1080=m
+CONFIG_USB_NET_PLUSB=m
+CONFIG_USB_NET_SMSC75XX=m
+CONFIG_USB_NET_SMSC95XX=m
+CONFIG_USB_NET_SR9800=m
+CONFIG_USB_NET_ZAURUS=m
+CONFIG_USB_OHCI_HCD=y
+CONFIG_USB_OHCI_HCD_PCI=y
+CONFIG_USB_OHCI_HCD_PLATFORM=y
+CONFIG_USB_OTG=y
+CONFIG_USB_PCI=y
+CONFIG_USB_PEGASUS=m
+CONFIG_USB_PHY=y
+# CONFIG_USB_PWC is not set
+CONFIG_USB_ROLE_SWITCH=y
+CONFIG_USB_RTL8150=m
+CONFIG_USB_RTL8152=y
+CONFIG_USB_SERIAL=y
+CONFIG_USB_SERIAL_CONSOLE=y
+CONFIG_USB_SERIAL_CP210X=m
+CONFIG_USB_SERIAL_FTDI_SIO=y
+CONFIG_USB_SERIAL_OPTION=m
+CONFIG_USB_SERIAL_SIMPLE=y
+CONFIG_USB_SERIAL_WWAN=m
+CONFIG_USB_SNP_CORE=y
+CONFIG_USB_SNP_UDC_PLAT=y
+CONFIG_USB_STORAGE=y
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_TEST=m
+CONFIG_USB_UAS=y
+# CONFIG_USB_UHCI_HCD is not set
+CONFIG_USB_ULPI=y
+CONFIG_USB_ULPI_BUS=y
+CONFIG_USB_ULPI_VIEWPORT=y
+CONFIG_USB_USBNET=y
+CONFIG_USB_U_AUDIO=y
+CONFIG_USB_U_ETHER=y
+CONFIG_USB_U_SERIAL=y
+CONFIG_USB_VIDEO_CLASS=m
+CONFIG_USB_XHCI_HCD=y
+CONFIG_USB_XHCI_PCI=m
+CONFIG_USB_XHCI_PCI_RENESAS=m
+CONFIG_USB_XHCI_PLATFORM=y
+CONFIG_USB_ZERO=m
+# CONFIG_USB_ZERO_HNPTEST is not set
+CONFIG_USER_NS=y
+CONFIG_USE_PERCPU_NUMA_NODE_ID=y
+CONFIG_UTS_NS=y
+CONFIG_V4L2_ASYNC=y
+CONFIG_V4L2_FWNODE=y
+CONFIG_V4L2_H264=m
+CONFIG_V4L2_JPEG_HELPER=m
+CONFIG_V4L2_MEM2MEM_DEV=m
+CONFIG_V4L_MEM2MEM_DRIVERS=y
+CONFIG_V4L_PLATFORM_DRIVERS=y
+CONFIG_VCNL4000=m
+CONFIG_VETH=m
+CONFIG_VEXPRESS_CONFIG=y
+CONFIG_VFAT_FS=y
+CONFIG_VFIO=y
+CONFIG_VFIO_FSL_MC=y
+CONFIG_VFIO_IOMMU_TYPE1=y
+# CONFIG_VFIO_MDEV is not set
+# CONFIG_VFIO_NOIOMMU is not set
+CONFIG_VFIO_PCI=y
+CONFIG_VFIO_PCI_CORE=y
+CONFIG_VFIO_PCI_INTX=y
+CONFIG_VFIO_PCI_MMAP=y
+# CONFIG_VFIO_PLATFORM is not set
+CONFIG_VFIO_VIRQFD=y
+CONFIG_VGA_ARB=y
+CONFIG_VGA_ARB_MAX_GPUS=16
+CONFIG_VIDEOBUF2_CORE=y
+CONFIG_VIDEOBUF2_DMA_CONTIG=m
+CONFIG_VIDEOBUF2_DMA_SG=y
+CONFIG_VIDEOBUF2_MEMOPS=y
+CONFIG_VIDEOBUF2_V4L2=y
+CONFIG_VIDEOBUF2_VMALLOC=y
+CONFIG_VIDEOMODE_HELPERS=y
+# CONFIG_VIDEO_CODA is not set
+# CONFIG_VIDEO_CPIA2 is not set
+CONFIG_VIDEO_DEV=y
+CONFIG_VIDEO_HANTRO=m
+CONFIG_VIDEO_HANTRO_IMX8M=y
+# CONFIG_VIDEO_IMX208 is not set
+CONFIG_VIDEO_IMX219=m
+CONFIG_VIDEO_IMX8_JPEG=m
+# CONFIG_VIDEO_IMX_MEDIA is not set
+# CONFIG_VIDEO_IMX_PXP is not set
+CONFIG_VIDEO_IR_I2C=m
+# CONFIG_VIDEO_MEM2MEM_DEINTERLACE is not set
+CONFIG_VIDEO_OV5640=y
+CONFIG_VIDEO_OV5645=m
+CONFIG_VIDEO_V4L2=y
+CONFIG_VIDEO_V4L2_I2C=y
+CONFIG_VIDEO_V4L2_SUBDEV_API=y
+CONFIG_VIRTIO=y
+CONFIG_VIRTIO_BALLOON=y
+CONFIG_VIRTIO_BLK=y
+CONFIG_VIRTIO_CONSOLE=y
+# CONFIG_VIRTIO_IOMMU is not set
+CONFIG_VIRTIO_MMIO=y
+CONFIG_VIRTIO_NET=y
+CONFIG_VIRTIO_PCI=y
+CONFIG_VIRTIO_PCI_LEGACY=y
+CONFIG_VIRTIO_PCI_LIB=y
+CONFIG_VIRTUALIZATION=y
+# CONFIG_VIRT_WIFI is not set
+CONFIG_VITESSE_PHY=y
+CONFIG_VLAN_8021Q_GVRP=y
+CONFIG_VLAN_8021Q_MVRP=y
+CONFIG_VMAP_STACK=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_VT_CONSOLE_SLEEP=y
+CONFIG_VT_HW_CONSOLE_BINDING=y
+CONFIG_WANT_DEV_COREDUMP=y
+CONFIG_WATCHDOG_CORE=y
+# CONFIG_WCN36XX is not set
+# CONFIG_WFX is not set
+# CONFIG_WIL6210 is not set
+# CONFIG_WILC1000_SDIO is not set
+# CONFIG_WILC1000_SPI is not set
+CONFIG_WL18XX=m
+CONFIG_WLAN_VENDOR_ADMTEK=y
+CONFIG_WLAN_VENDOR_ATH=y
+CONFIG_WLAN_VENDOR_ATMEL=y
+CONFIG_WLAN_VENDOR_BROADCOM=y
+CONFIG_WLAN_VENDOR_CISCO=y
+CONFIG_WLAN_VENDOR_INTEL=y
+CONFIG_WLAN_VENDOR_INTERSIL=y
+CONFIG_WLAN_VENDOR_MARVELL=y
+CONFIG_WLAN_VENDOR_MEDIATEK=y
+CONFIG_WLAN_VENDOR_MICROCHIP=y
+CONFIG_WLAN_VENDOR_QUANTENNA=y
+CONFIG_WLAN_VENDOR_RALINK=y
+CONFIG_WLAN_VENDOR_REALTEK=y
+CONFIG_WLAN_VENDOR_RSI=y
+CONFIG_WLAN_VENDOR_ST=y
+CONFIG_WLAN_VENDOR_TI=y
+CONFIG_WLAN_VENDOR_ZYDAS=y
+CONFIG_WLCORE=m
+CONFIG_WLCORE_SDIO=m
+# CONFIG_WLCORE_SPI is not set
+CONFIG_X509_CERTIFICATE_PARSER=y
+CONFIG_XARRAY_MULTI=y
+CONFIG_XEN=y
+CONFIG_XENFS=y
+CONFIG_XEN_AUTO_XLATE=y
+CONFIG_XEN_BACKEND=y
+CONFIG_XEN_BALLOON=y
+CONFIG_XEN_BLKDEV_BACKEND=m
+CONFIG_XEN_BLKDEV_FRONTEND=y
+CONFIG_XEN_COMPAT_XENFS=y
+CONFIG_XEN_DEV_EVTCHN=y
+CONFIG_XEN_DOM0=y
+CONFIG_XEN_EFI=y
+CONFIG_XEN_FBDEV_FRONTEND=y
+CONFIG_XEN_GNTDEV=y
+CONFIG_XEN_GRANT_DEV_ALLOC=y
+CONFIG_XEN_NETDEV_BACKEND=m
+CONFIG_XEN_NETDEV_FRONTEND=y
+CONFIG_XEN_PRIVCMD=y
+# CONFIG_XEN_PVCALLS_BACKEND is not set
+# CONFIG_XEN_SCSI_FRONTEND is not set
+CONFIG_XEN_SYS_HYPERVISOR=y
+CONFIG_XEN_WDT=y
+CONFIG_XEN_XENBUS_FRONTEND=y
+# CONFIG_XILINX_PR_DECOUPLER is not set
+CONFIG_XOR_BLOCKS=m
+CONFIG_XPS=y
+CONFIG_XXHASH=y
+CONFIG_XZ_DEC_ARM=y
+CONFIG_XZ_DEC_ARMTHUMB=y
+CONFIG_XZ_DEC_BCJ=y
+CONFIG_XZ_DEC_IA64=y
+CONFIG_XZ_DEC_POWERPC=y
+CONFIG_XZ_DEC_SPARC=y
+CONFIG_XZ_DEC_X86=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZONE_DMA32=y
+CONFIG_ZSTD_COMPRESS=y
+CONFIG_ZSTD_DECOMPRESS=y
diff --git a/target/linux/imx/imx8/target.mk b/target/linux/imx/imx8/target.mk
new file mode 100644
index 0000000000..f990298d80
--- /dev/null
+++ b/target/linux/imx/imx8/target.mk
@@ -0,0 +1,11 @@ 
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# Copyright 2022 NXP
+
+ARCH:=aarch64
+BOARDNAME:=NXP i.MX8 boards
+KERNELNAME:=Image
+
+define Target/Description
+	Build firmware images for NXP imx8 boards.
+endef
diff --git a/target/linux/imx/patches-5.15/0001-fix-the-compiling-error.patch b/target/linux/imx/patches-5.15/0001-fix-the-compiling-error.patch
new file mode 100644
index 0000000000..bd2cd68be8
--- /dev/null
+++ b/target/linux/imx/patches-5.15/0001-fix-the-compiling-error.patch
@@ -0,0 +1,39 @@ 
+From b671acdd69098b12ff7f567b1b6211ab4f38bf20 Mon Sep 17 00:00:00 2001
+From: Yuantian Tang <andy.tang@nxp.com>
+Date: Tue, 28 Jun 2022 14:26:12 +0800
+Subject: [PATCH] fix the compiling error
+
+Signed-off-by: Andy Tang <andy.tang@nxp.com>
+---
+ arch/arm64/kvm/hyp/nvhe/gen-hyprel.c | 1 +
+ scripts/Makefile                     | 2 +-
+ 2 files changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/arch/arm64/kvm/hyp/nvhe/gen-hyprel.c b/arch/arm64/kvm/hyp/nvhe/gen-hyprel.c
+index 6bc88a756cb7..99506facd30e 100644
+--- a/arch/arm64/kvm/hyp/nvhe/gen-hyprel.c
++++ b/arch/arm64/kvm/hyp/nvhe/gen-hyprel.c
+@@ -36,6 +36,7 @@
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ #include <unistd.h>
++#include <uapi/linux/elf-em.h>
+ 
+ #include <generated/autoconf.h>
+ 
+diff --git a/scripts/Makefile b/scripts/Makefile
+index 9adb6d247818..7013da949282 100644
+--- a/scripts/Makefile
++++ b/scripts/Makefile
+@@ -21,7 +21,7 @@ HOSTCFLAGS_asn1_compiler.o = -I$(srctree)/include
+ HOSTCFLAGS_sign-file.o = $(CRYPTO_CFLAGS)
+ HOSTLDLIBS_sign-file = $(CRYPTO_LIBS)
+ HOSTCFLAGS_extract-cert.o = $(CRYPTO_CFLAGS)
+-HOSTLDLIBS_extract-cert = $(CRYPTO_LIBS)
++HOSTLDLIBS_extract-cert = $(CRYPTO_LIBS) -lpthread
+ 
+ ifdef CONFIG_UNWINDER_ORC
+ ifeq ($(ARCH),x86_64)
+-- 
+2.25.1
+