[Feature][T106_eSDK]T106-V2.01.01.02P56U06.AP.15.11_CAP.15.11(SDK4.6)diff_16.08(SDK4.7)

Only Configure: No
Affected branch: master
Affected module: unknow
Is it affected on both ZXIC and MTK: only ZXIC
Self-test: Yes
Doc Update: No

Change-Id: I7a7c42775e2ffdd23aaec4fff782adcc99d7890b
diff --git a/esdk/layers/meta-zxic/recipes-kernel/linux/linux-zxic_5.10.bb b/esdk/layers/meta-zxic/recipes-kernel/linux/linux-zxic_5.10.bb
new file mode 100755
index 0000000..a8c7f65
--- /dev/null
+++ b/esdk/layers/meta-zxic/recipes-kernel/linux/linux-zxic_5.10.bb
@@ -0,0 +1,93 @@
+SUMMARY = "zxic Linux kernel"
+SECTION = "kernel"
+PV      = "${LINUX_VERSION}"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM ?= "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
+LINUX_VERSION    ?= "5.10.156"
+BSPDIR = "${TOPDIR}/../upstream"
+#pub include
+include ${TOPDIR}/layers/meta-zxic/conf/pub_esdk.inc
+
+DEPENDS += "kern-tools-native"
+DEPENDS += "${@bb.utils.contains('DISTRO_FEATURES','dm-verity','zstd-native','',d)}"
+inherit kernel  siteinfo  
+
+EXTRA_OEMAKE_append = " LOADADDR=${KERNEL_LOADADDR} EXTRA_CFLAGS='${ZXIC_EXTRA_CFLAGS}' "
+FILESEXTRAPATHS_prepend :="${TOPDIR}/../upstream:"
+# PR_CONFIG_cpe = "linux-5_10-cpe-${BOOT_CTL}-defconfig"
+# PR_CONFIG_v2x = "linux-5_10-v2x-${BOOT_CTL}-defconfig"
+PR_CONFIG_vehicle_dc = "linux-5_10-vehicle_dc-${BOOT_CTL}-defconfig"
+PR_CONFIG_vehicle_dc_4Gb = "linux-5_10-vehicle_dc_4Gb-${BOOT_CTL}-defconfig"
+S = "${WORKDIR}/linux-5.10"
+
+do_install[nostamp] = "1"
+
+SRC_URI = "\
+    file://linux-5.10    \
+    file://${MACHINE}/${LINUX_BASE_CONFIG} \
+    "
+
+# returns all the elements from the src uri that are .cfg files
+def find_cfgs(d):
+    sources=src_patches(d, True)
+    sources_list=[]
+    for s in sources:
+        if s.endswith('.cfg'):
+            sources_list.append(s)
+
+    return sources_list
+
+kernel_do_configure() {
+	# fixes extra + in /lib/modules/2.6.37+
+	# $ scripts/setlocalversion . => +
+	# $ make kernelversion => 2.6.37
+	# $ make kernelrelease => 2.6.37+
+	touch ${B}/.scmversion ${S}/.scmversion
+	
+	cp ${WORKDIR}/${MACHINE}/${LINUX_BASE_CONFIG}  ${WORKDIR}/defconfig 
+	if [ "${S}" != "${B}" ] && [ -f "${S}/.config" ] && [ ! -f "${B}/.config" ]; then
+		mv "${S}/.config" "${B}/.config"
+	fi
+
+	# Copy defconfig to .config if .config does not exist. This allows
+	# recipes to manage the .config themselves in do_configure_prepend().
+	if [ -f "${WORKDIR}/defconfig" ] && [ ! -f "${B}/.config" ]; then
+		cp "${WORKDIR}/defconfig" "${B}/.config"
+	fi
+	
+	merge_config.sh -m  ${WORKDIR}/defconfig ${@" ".join(find_cfgs(d))}
+	${KERNEL_CONFIG_COMMAND}
+}
+
+fakeroot do_cpio () {
+	if ${@bb.utils.contains('DISTRO_FEATURES','dm-verity','true','false',d)}; then
+		cp  -v  ${BSPDIR}/../esdk/sources/meta-zxic-custom/conf/distro/dm-verity/${KERNEL_INITRAMFS_CPIO}   ${B}/
+	fi
+}
+
+do_install_append () {
+	#install elfs
+	install -d ${ELFS-PATH}/
+	install -d ${BINS-PATH}/
+	install -m 0755 ${WORKDIR}/image/boot/uImage ${ELFS-PATH}/uImage
+	install -m 0755 ${WORKDIR}/image/boot/${MACHINE}-${DISTRO}.dtb  ${BINS-PATH}/ap_cpucap.dtb
+	install -m 0755 ${WORKDIR}/image/boot/${MACHINE}-${DISTRO}.dtb  ${ELFS-PATH}/
+
+	install -m 0755 ${B}/vmlinux              ${ELFS-PATH}/vmlinux
+	install -m 0755 ${B}/System.map           ${ELFS-PATH}/System.map
+	if [ -d ${WORKDIR}/image/lib/modules ]; then
+		cp -rf  ${WORKDIR}/image/lib/modules      ${ELFS-PATH}/${PN}/
+	fi
+}
+
+do_cleanlibs () {
+	rm -fr ${ELFS-PATH}/uImage
+	rm -fr ${ELFS-PATH}/${MACHINE}-${DISTRO}.dtb
+	rm -fr ${ELFS-PATH}/vmlinux
+	rm -fr ${ELFS-PATH}/System.map
+	rm -fr ${ELFS-PATH}/${PN}/modules	
+}
+addtask  cleanlibs after do_clean  before do_cleansstate
+addtask  do_cpio   after do_configure before do_compile
+
+COMPATIBLE_MACHINE = "^zxic$"