[Feature][T106_INTEST2WIFI]19.06_diff_19.09
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: Ib941cb9b9df99849ca9cc3758fb729011ae84ddd
diff --git a/esdk/layers/meta-zxic-custom/conf/distro/vehicle_dc_ref.conf b/esdk/layers/meta-zxic-custom/conf/distro/vehicle_dc_ref.conf
new file mode 100755
index 0000000..ea544cc
--- /dev/null
+++ b/esdk/layers/meta-zxic-custom/conf/distro/vehicle_dc_ref.conf
@@ -0,0 +1,479 @@
+require conf/distro/include/cpe-base.inc
+
+DISTRO = "vehicle_dc_ref"
+DISTRO_NAME = "zxic Distro vehicle_dc_ref"
+DISTRO_VERSION = "1.0"
+SDK_VENDOR = "-zxic"
+MAINTAINER = "Sanechips Co.,Ltd."
+TARGET_VENDOR = "-zxic"
+
+## OPTEE
+DISTRO_FEATURES += "OPTEE"
+meta_optee += " ${@bb.utils.contains("DISTRO_FEATURES", "OPTEE", " optee-client optee-example ", "", d)} "
+
+PREFERRED_PROVIDER_virtual/kernel = "linux-zxic"
+PREFERRED_VERSION_linux-zxic = "5.10.156"
+PREFERRED_VERSION_busybox = "1.33.1"
+#PREFERRED_VERSION_openssl = "1.1.1l"
+
+TCLIBC = "glibc"
+VIRTUAL-RUNTIME_dev_manager = "busybox-mdev"
+VIRTUAL-RUNTIME_login_manager = "busybox"
+VIRTUAL-RUNTIME_init_manager = "busybox"
+VIRTUAL-RUNTIME_initscripts = "initscripts"
+
+# #
+# # Use systemd for system initialization
+# #
+# VIRTUAL-RUNTIME_init_manager = "systemd"
+# PREFERRED_PROVIDER_udev = "systemd"
+# PREFERRED_PROVIDER_udev-utils = "systemd"
+# DISTRO_FEATURES_BACKFILL_CONSIDERED = "sysvinit"
+# VIRTUAL-RUNTIME_initscripts = ""
+# DEFAULT_DISTRO_FEATURES += "systemd"
+# DISTRO_FEATURES_append = " systemd"
+# DISTRO_FEATURES_remove = "sysvinit"
+
+KERNEL_DEVICETREE = " \
+ zx297520v3-vehicle_dc_ref.dtb \
+"
+# selinux 配置
+DISTRO_FEATURES_append=" selinux "
+
+# 默认是强制模式 enforcing ,调试建议采用宽容模式 permissive
+DEFAULT_ENFORCING = "permissive"
+
+# selinux 策略
+PREFERRED_PROVIDER_virtual/refpolicy ?= "refpolicy-mls"
+
+## adb login
+DISTRO_FEATURES += "adb_login"
+
+# storage type: nand or emmc
+STRORAGE_TYPE = "nand"
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_START
+STRORAGE_CONF = "nand-config-default"
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_END
+require conf/distro/include/${STRORAGE_CONF}.inc
+
+#rootfs文件系统类型
+IMAGE_FSTYPES = "squashfs"
+#IMAGE_FSTYPES = "cpio.gz"
+
+
+#rootfs文件系统squashfs参数配置,压缩方式和块大小可以更改
+#squashfs_xz squashfs_zstd
+DISTRO_FEATURES_append = " squashfs_zstd "
+ROOTFS_SQUASHFS_ARGS = "-nopad -noappend -root-owned -b 256k -p '/dev d 755 0 0' -p '/dev/console c 600 0 0 5 1' -processors 1"
+ROOTFS_SQUASHFS_ARGS += " ${@bb.utils.contains("DISTRO_FEATURES", "selinux", "-xattrs", "", d)} "
+ROOTFS_SQUASHFS_ARGS += "${@bb.utils.contains("DISTRO_FEATURES", "squashfs_zstd", " -comp zstd ","", d)}"
+ROOTFS_SQUASHFS_ARGS += "${@bb.utils.contains("DISTRO_FEATURES", "squashfs_xz", " -comp xz -Xpreset 9 -Xe -Xlc 0 -Xlp 2 -Xpb 2 ","", d)}"
+
+#userdata文件系统类型
+USERDATA_FSTYPE = "ubi"
+USERDATA_UBINIZE_CFG = "userdata-ubi-default.cfg"
+OEMDATA_UBINIZE_CFG = "oemdata-ubi-default.cfg"
+
+#userdata ext4 文件系统大小
+USERDATA_EXT4SIZE = "194018"
+
+#
+# system initialization
+#
+DISTRO_FEATURES_append = " sysvinit "
+
+
+#是否支持MMI LCD功能
+#DISTRO_FEATURES += "MMI_LCD"
+#语音控制
+DISTRO_FEATURES += "voice_alsa"
+DISTRO_FEATURES += "use_voice_buffer"
+#DISTRO_FEATURES += "voice_at"
+
+#cap_oem.img
+DISTRO_FEATURES += " oemfs "
+
+#dm-verity for squashfs
+DISTRO_FEATURES += " dm-verity "
+
+
+#CUSTOM_MACRO在各个产品不变的宏放到cpe-base.inc文件,变化的宏放在产品发布文件。
+CUSTOM_MACRO += " -D_GNU_SOURCE "
+
+#产品linux kernel配置,主要区分cpe、v2x、mdl,fpga文件在./meta-zxic/recipes-kernel/linux/files目录下
+#BOOT_CTL:版本的启动方式,normal/recovery,如:linux-5_4-fpga-normal.defconfig
+LINUX_BASE_CONFIG = "linux-5_10-${DISTRO}-${BOOT_CTL}-defconfig"
+
+#型号机linux kernel配置,主要区分mdlxx、mdlyy等型号机,文件在./meta-zxic-custom/recipes-kernel/linux/files目录下
+#BOOT_CTL:版本的启动方式,normal/recovery,如:linux-5_4-mdl-normal.cfg
+LINUX_CONFIG = "linux-5_10-${DISTRO}-${BOOT_CTL}.cfg"
+
+#busybox 配置 文件在./meta-zxic/recipes-core/busybox/files目录下
+BUSYBOX_CONFIG = "${DISTRO}-${BOOT_CTL}-busybox.cfg"
+
+##############################################################################
+# custom macro for lib and app
+CUSTOM_MACRO += " -DAPP_OS_LINUX=1 "
+CUSTOM_MACRO += " -DAPP_OS_TYPE=APP_OS_LINUX "
+
+ENABLE_TESTBENCH_TTY = "no"
+##testbench macro for mode,notty=0 single=1 uchm=2
+CUSTOM_MACRO += " -DTTY_MODE_NO=0 "
+CUSTOM_MACRO += " -DTTY_MODE_SINGLE=1 "
+CUSTOM_MACRO += " -DTTY_MODE_MUX=2 "
+CUSTOM_MACRO += " -DUSE_UBIFS "
+CUSTOM_MACRO += " -DUSE_CAP_SUPPORT "
+CUSTOM_MACRO += " -DFOTA_AB "
+CUSTOM_MACRO += "${@bb.utils.contains('ENABLE_TESTBENCH_TTY', 'yes', '-DTESTBENCH_TTY_MODE=TTY_MODE_SINGLE', '-DTESTBENCH_TTY_MODE=TTY_MODE_NO', d)}"
+CONFIG_MMI_LCD = "${@bb.utils.contains("DISTRO_FEATURES", "MMI_LCD", "yes","no", d)}"
+CUSTOM_MACRO += "${@bb.utils.contains('CONFIG_MMI_LCD', 'yes', '', '-DDISABLE_LCD', d)}"
+USE_ZXIC_WEBUI = "no"
+CONFIG_USE_WEBUI_SSL="yes"
+CONFIG_USE_WEBUI_SECURITY="yes"
+#security compile options
+CFLAGS_append = " -Wl,-z,noexecstack"
+SECURITY_PIE_CFLAGS = " -pie -fPIE"
+SECURITY_STACK_PROTECTOR = " -fstack-protector-all"
+#CUSTOM_MACRO += " -D_USE_CODEC_TI3100 "
+#CUSTOM_MACRO += " -D_USE_CODEC_NAU8810 "
+#CUSTOM_MACRO += " -D_USE_CODEC_TI3104 "
+#CUSTOM_MACRO += " -D_USE_CODEC_MAX9867 "
+CUSTOM_MACRO += " -D_USE_CODEC_ES8311 "
+CUSTOM_MACRO += "${@bb.utils.contains('DISTRO_FEATURES', 'voice_alsa', '-D_USE_VOICE_ALSA', '', d)}"
+CUSTOM_MACRO += "${@bb.utils.contains('DISTRO_FEATURES', 'use_voice_buffer', '-D_USE_VOICE_BUFFER', '', d)}"
+CUSTOM_MACRO += "${@bb.utils.contains('DISTRO_FEATURES', 'voice_at', '-D_USE_VOICE_AT', '', d)}"
+#CONFIG_VB_TRANSMIT_INTF = "RTP"
+#CONFIG_VB_TRANSMIT_INTF = "USB"
+CONFIG_VB_TRANSMIT_INTF = "NULL"
+CUSTOM_MACRO += "${@bb.utils.contains('CONFIG_VB_TRANSMIT_INTF', 'RTP', '-D_VB_TRANSMIT_INTF_RTP', '', d)}"
+CUSTOM_MACRO += "${@bb.utils.contains('CONFIG_VB_TRANSMIT_INTF', 'USB', '-D_VB_TRANSMIT_INTF_USB', '', d)}"
+#wifi 配置
+#"mt7916" "" "" ""
+CONFIG_WIFI_MODULE = "mt7916"
+#"apsta" "sta" "ap"
+CONFIG_WIFI_FUNCTION = "ap"
+#wificfg = "${@bb.utils.contains('CONFIG_WIFI_FUNCTION', 'ap', bb.utils.contains('CONFIG_WIFI_MODULE', 'esp8089', 'lib32-hostapd-2.6', '', d), '', d)}"
+
+#BL接口支持("BL"),RIL接口支持("RIL")
+CONFIG_TEL_API_SUPPORT = "RIL"
+
+CUSTOM_MACRO += "${@bb.utils.contains('CONFIG_TEL_API_SUPPORT', 'BL', '-D_USE_BL', '', d)}"
+
+#RIL AT通道支持RPMSG模式
+CUSTOM_MACRO += "${@bb.utils.contains('CONFIG_TEL_API_SUPPORT', 'RIL', '-DZXIC_ATCHN_RPMSG_MODE', '', d)}"
+CUSTOM_MACRO += "${@bb.utils.contains('CONFIG_TEL_API_SUPPORT', 'RIL', '-DUSE_CUSTOM_YK', '', d)}"
+
+DISTRO_FEATURES += " vehicle_dc_ref "
+CUSTOM_MACRO += "${@bb.utils.contains('DISTRO_FEATURES', 'vehicle_dc_ref', '-D_USE_VEHICLE_DC_REF', '', d)}"
+
+#多媒体编解码库支持类型"FFMPEG","NONE"
+CONFIG_MSMSVR_CODEC_TYPE = "NONE"
+CUSTOM_MACRO += "${@bb.utils.contains('CONFIG_MSMSVR_CODEC_TYPE', 'FFMPEG', '-D_USE_FFMPEG', '', d)}"
+
+#是否使用新的信号强度命令
+CONFIG_USE_NEW_SIGNAL_STRENGTH = "yes"
+
+# app and libs 配置
+#normal的版本应用及库
+zxic_lib += "\
+ libnvram \
+ libatchn \
+ libsofttimer \
+ libzxic-pbm \
+ libsoftap \
+ libatutils \
+ libsqlite \
+ libscipc \
+ libsctel \
+ libbsp \
+ libtinyalsa\
+ libvoice \
+ libmedia \
+ libdebug-info \
+ libmtd \
+ libsclog \
+ libupi-ab \
+ libbinder \
+ libflags \
+ libmsmsvr \
+ libscrtc \
+ liblynq-uci \
+ liblynq-shm \
+ liblynq-log \
+ libapn \
+ libpal \
+ libvendor-ril \
+ liblynq-call \
+ liblynq-sim \
+ liblynq-network \
+ liblynq-sms \
+ liblynq-data \
+ liblynq-qser-voice \
+ liblynq-qser-sim \
+ liblynq-qser-sms \
+ liblynq-qser-thermal \
+ liblynq-qser-data \
+ liblynq-qser-network \
+ liblynq-qser-gnss \
+ liblynq-qser-fota \
+ liblynq-qser-audio \
+ liblynq-qser-usb \
+ liblynq-qser-wifi \
+ libpoweralarm \
+ liblynq-systime \
+ liblynq-autosuspend \
+ liblynq-qser-autosuspend \
+ liblynq-at-factory \
+ liblynq-gpio \
+ liblynq-irq \
+ liblynq-at-common \
+ liblynq-led \
+ liblynq-adc \
+ liblynq-monitor \
+ "
+
+zxic_lib += "${@bb.utils.contains('CONFIG_TEL_API_SUPPORT', 'RIL', 'libril', 'libtelsvr', d)}"
+zxic_lib += "${@bb.utils.contains('CONFIG_VB_TRANSMIT_INTF', 'RTP', 'librtp', '', d)}"
+#zxic自研应用
+zxic_app_open += "\
+ nvserver cfg-tool adb ab-bootinfo \
+ at-ctl \
+ atchn-test \
+ zxic-mainctrl \
+ zxic-mmi \
+ zxic-script \
+ zxic-hotplug \
+ zxic-ramdump \
+ sntp \
+ zxic-ipv6-slaac \
+ zxic-ipv6-addr-conver \
+ zxic-ndp \
+ rtc-service \
+ dhcp6 \
+ fscheck \
+ nv-rpc-daemon \
+ zlog-agent \
+ cc-demo \
+ sim-demo \
+ sms-demo \
+ socket-demo \
+ i2ctest \
+ spitest \
+ uarttest \
+ bsp-test \
+ zxic-debug \
+ crc \
+ crc-api \
+ voiceipc-mainctrl \
+ voice-demo \
+ fsmonitor \
+ ethtest \
+ sc-at-test \
+ dialtest \
+ sc-nw-mgr-test \
+ sc-cfg-test \
+ sc-softtimer-test \
+ sc-log-test \
+ sc-shm-test \
+ sc-msg-test \
+ adctest \
+ rtc-timer-demo \
+ tsctest \
+ fota-upi-ab \
+ sc-net-test \
+ usbtest \
+ zxic-amt \
+ wlan-proxy \
+ wifi-demo \
+ mnet-whitelist \
+ mnet-whitelist-proxy \
+ flags-tool \
+ msm-svr \
+ phymiitest \
+ player-demo \
+ servicemanager \
+ service \
+ service-test \
+ i2cslavetest \
+ fota-auto-sync \
+ softap-demo \
+ lynq-ril-service \
+ lynq-sdk-ready \
+ lynq-led-demo \
+ lynq-led-sev \
+ uci \
+ gdb \
+ mobiletek-tester-rdit \
+ lynq-qser-voice-demo \
+ lynq-qser-fota-demo \
+ lynq-qser-gnss-demo \
+ lynq-qser-network-demo \
+ poweralarm-demo \
+ lynq-systime-demo \
+ lynq-fota-backup \
+ lynq-qser-sim-demo \
+ lynq-qser-sms-demo \
+ lynq-qser-data-demo \
+ lynq-qser-thermal-demo \
+ lynq-autosuspend \
+ lynq-atcid \
+ lynq-qser-autosuspend-demo \
+ lynq-gpio-demo \
+ lynq-irq-demo \
+ lynq-gnss-update \
+ lynq-audio-demo \
+ lynq-usb-demo \
+ lynq-wifi-demo \
+ lynq-adc-demo \
+ lynq-at-test \
+ lynq-monitor-demo \
+ lynq-vb-demo \
+ "
+
+zxic_app_open += "${@bb.utils.contains('CONFIG_TEL_API_SUPPORT', 'RIL', 'rild', '', d)}"
+zxic_app_open += "${@bb.utils.contains('CONFIG_TEL_API_SUPPORT', 'BL', 'tel-svr', '', d)}"
+zxic_app_open += "${@bb.utils.contains('CONFIG_VB_TRANSMIT_INTF', 'NULL', 'vb-demo', '', d)}"
+
+#开源应用及库
+meta_app_open += "\
+ dropbear \
+ dbus \
+ e2fsprogs \
+ iptables \
+ curl \
+ dnsmasq \
+ dhcp6 \
+ radvd \
+ iproute2 \
+ busybox-syslog \
+ ethtool \
+ sqlcipher \
+ iperf3 \
+ tcpdump \
+ python3 \
+ openssl-bin \
+ mtd-utils-ubifs \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'dm-verity', 'cryptsetup', '', d)} \
+ ${meta_optee} \
+ tzdata \
+ fdk-aac-master \
+ opencore-amr \
+ vo-amrwbenc \
+ ffmpeg \
+ python3 \
+ lrzsz \
+ "
+meta_app_open += "${@bb.utils.contains('CONFIG_MSMSVR_CODEC_TYPE', 'FFMPEG', 'fdk-aac-master opencore-amr vo-amrwbenc ffmpeg', '', d)}"
+
+#normal的版本应用及库
+zxic_app += "\
+ ${zxic_lib} \
+ ${zxic_app_open} \
+ ${meta_app_open} \
+ "
+
+#zxic自研recovery版本的应用
+zxic_app_open_recovery += "\
+ "
+#recovery版本的开源应用及库
+meta_app_open_recovery += "\
+ "
+#recovery的版本应用及库
+zxic_app_recovery += "\
+ ${zxic_app_open_recovery} \
+ ${meta_app_open_recovery} "
+
+IMAGE_INSTALL +="\
+ ${@bb.utils.contains("BOOT_CTL", "recovery", "${zxic_app_recovery}", "${zxic_app}", d)} \
+ "
+
+PACKAGE_EXCLUDE = "eudev eudev-dev eudev-dbg"
+PACKAGE_EXCLUDE = "eudev"
+
+#DISTRO = "lynq_vehicle_dc"
+#DISTRO_NAME = "lynq distro vehicle_dc"
+RAT_CONFIG_C2K_SUPPORT = "no"
+MTK_MULTI_SIM_SUPPORT = "dsds"
+TARGET_PLATFORM = "T106"
+MTK_LED_SUPPORT = "yes"
+#support lynq_atsvc [hong.liu add for lynq atsvc on 2022.12.1]
+LYNQ_ATSVC_SUPPORT = "yes"
+
+#GPIO_CFG value:"PLATFORM" , "GENVICT" ,"GSW"
+MOBILETEK_GPIO_CFG = "PLATFORM"
+
+#PLL_CFG value:"PLATFORM","GSW"
+MOBILETEK_PLL_CFG = "PLATFORM"
+
+#RTP_CFG value:"PLATFORM","GSW"
+MOBILETEK_RTP_CFG = "PLATFORM"
+
+#MEDIA_CFG value:"PLATFORM","GSW"
+MOBILETEK_MEDIA_CFG = "PLATFORM"
+
+#LOG_CFG value:"PLATFORM","GSW"
+MOBILETEK_LOG_CFG = "PLATFORM"
+
+#FOTA_CFG value:"PLATFORM","GSW"
+MOBILETEK_FOTA_CFG = "PLATFORM"
+
+#RIL_CFG value:"PLATFORM","GSW"
+MOBILETEK_RIL_CFG = "PLATFORM"
+
+#UART_CFG value:"PLATFORM","GSW"
+MOBILETEK_UART_CFG = "PLATFORM"
+
+#USB_CFG value:"PLATFORM","GSW"
+MOBILETEK_USB_CFG = "PLATFORM"
+
+#ndis_CFG value:"PLATFORM","GSW"
+MOBILETEK_NDIS_CFG = "PLATFORM"
+
+#SUSPEND_CFG value:"PLATFORM","GSW"
+MOBILETEK_SUSPEND_CFG = "PLATFORM"
+
+#MNLDLOG_CFG value:"PLATFORM","GSW"
+MOBILETEK_MNLDLOG_CFG = "PLATFORM"
+
+#OPTEE_CFG value:"PLATFORM","GSW"
+MOBILETEK_OPTEE_CFG = "PLATFORM"
+
+#EMMC_CFG value:"PLATFORM","GSW"
+MOBILETEK_EMMC_CFG = "PLATFORM"
+
+#WIFIKERNELCODE_CFG value:"PLATFORM","GSW"
+MOBILETEK_WIFIKERNELCODE_CFG = "PLATFORM"
+
+#SYSTEMD_CFG value:"PLATFORM","GSW"
+MOBILETEK_SYSTEMD_CFG = "PLATFORM"
+
+#GSTREAMER_CFG value:"PLATFORM","GSW"
+MOBILETEK_GSTREAMER_CFG = "PLATFORM"
+
+#BUSYBOX_CFG value:"PLATFORM","GSW"
+MOBILETEK_BUSYBOX_CFG = "PLATFORM"
+
+#OPENSSH_CFG value:"PLATFORM","GSW"
+MOBILETEK_OPENSSH_CFG = "PLATFORM"
+
+#OEMAPP_CFG value:"PLATFORM","GSW"
+MOBILETEK_OEMAPP_CFG = "PLATFORM"
+
+#cz.li@20240221 add for choosing GNSS's chip: "HD","HX"
+MOBILETEK_GNSS_TYPE = "HD"
+
+#MOBILETEK_ADB_LOGIN value:"YES","NO"
+MOBILETEK_ADB_LOGIN = "NO"
+
+#cz.li@20240221 add for MOBILETEK_GNSS_UPDATE_ENABLE value: "yes","no"
+MOBILETEK_GNSS_UPDATE_ENABLE = "yes"
+
+#xf.li@20240716 add for MOBILETEK_LOG_ENCRYPT value: "enable","disable"
+MOBILETEK_LOG_ENCRYPT = "disable"
+
+#xf.li@20250123 add for M22 SDK value (support M22 or not): "M22", "default"
+MOBILETEK_NAND_TYPE = "M22"
+
+LYNQ_CONFIG_COMMITID = "e2a3410390ff0ad762462ccb6af8faa5e16dcd61"
+LYNQ_CONFIG_VERSION = "T106-MXX-INTEST2WIFI-P56U11.AP.19.06_CAP.19.06"
+LYNQ_CONFIG_SW_VERSION = "T106-MXX-INTEST2WIFI-P56U11.AP.19.06_CAP.19.06"
diff --git a/esdk/layers/meta-zxic-custom/conf/lynq_base.conf b/esdk/layers/meta-zxic-custom/conf/lynq_base.conf
new file mode 100755
index 0000000..565e516
--- /dev/null
+++ b/esdk/layers/meta-zxic-custom/conf/lynq_base.conf
@@ -0,0 +1,72 @@
+#DISTRO = "lynq_vehicle_dc"
+#DISTRO_NAME = "lynq distro vehicle_dc"
+RAT_CONFIG_C2K_SUPPORT = "no"
+MTK_MULTI_SIM_SUPPORT = "dsds"
+TARGET_PLATFORM = "T106"
+MTK_LED_SUPPORT = "yes"
+#support lynq_atsvc [hong.liu add for lynq atsvc on 2022.12.1]
+LYNQ_ATSVC_SUPPORT = "yes"
+
+#GPIO_CFG value:"PLATFORM" , "GENVICT" ,"GSW"
+MOBILETEK_GPIO_CFG = "PLATFORM"
+
+#PLL_CFG value:"PLATFORM","GSW"
+MOBILETEK_PLL_CFG = "PLATFORM"
+
+#RTP_CFG value:"PLATFORM","GSW"
+MOBILETEK_RTP_CFG = "PLATFORM"
+
+#MEDIA_CFG value:"PLATFORM","GSW"
+MOBILETEK_MEDIA_CFG = "PLATFORM"
+
+#LOG_CFG value:"PLATFORM","GSW"
+MOBILETEK_LOG_CFG = "PLATFORM"
+
+#FOTA_CFG value:"PLATFORM","GSW"
+MOBILETEK_FOTA_CFG = "PLATFORM"
+
+#RIL_CFG value:"PLATFORM","GSW"
+MOBILETEK_RIL_CFG = "PLATFORM"
+
+#UART_CFG value:"PLATFORM","GSW"
+MOBILETEK_UART_CFG = "PLATFORM"
+
+#USB_CFG value:"PLATFORM","GSW"
+MOBILETEK_USB_CFG = "PLATFORM"
+
+#ndis_CFG value:"PLATFORM","GSW"
+MOBILETEK_NDIS_CFG = "PLATFORM"
+
+#SUSPEND_CFG value:"PLATFORM","GSW"
+MOBILETEK_SUSPEND_CFG = "PLATFORM"
+
+#MNLDLOG_CFG value:"PLATFORM","GSW"
+MOBILETEK_MNLDLOG_CFG = "PLATFORM"
+
+#OPTEE_CFG value:"PLATFORM","GSW"
+MOBILETEK_OPTEE_CFG = "PLATFORM"
+
+#EMMC_CFG value:"PLATFORM","GSW"
+MOBILETEK_EMMC_CFG = "PLATFORM"
+
+#WIFIKERNELCODE_CFG value:"PLATFORM","GSW"
+MOBILETEK_WIFIKERNELCODE_CFG = "PLATFORM"
+
+#SYSTEMD_CFG value:"PLATFORM","GSW"
+MOBILETEK_SYSTEMD_CFG = "PLATFORM"
+
+#GSTREAMER_CFG value:"PLATFORM","GSW"
+MOBILETEK_GSTREAMER_CFG = "PLATFORM"
+
+#BUSYBOX_CFG value:"PLATFORM","GSW"
+MOBILETEK_BUSYBOX_CFG = "PLATFORM"
+
+#OPENSSH_CFG value:"PLATFORM","GSW"
+MOBILETEK_OPENSSH_CFG = "PLATFORM"
+
+#OEMAPP_CFG value:"PLATFORM","GSW"
+MOBILETEK_OEMAPP_CFG = "PLATFORM"
+
+LYNQ_CONFIG_COMMITID = "42c9f78988359c468696bde525b9ac0cff3b251f"
+LYNQ_CONFIG_VERSION = "T106-MXX-INTEST2WIFI-P56U11.AP.19.06_CAP.19.06"
+LYNQ_CONFIG_SW_VERSION = "T106-MXX-INTEST2WIFI-P56U11.AP.19.06_CAP.19.06"
diff --git a/esdk/layers/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc_ref/fs/normal/rootfs/etc/init.d/first.sh b/esdk/layers/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc_ref/fs/normal/rootfs/etc/init.d/first.sh
new file mode 100755
index 0000000..b3dc7dd
--- /dev/null
+++ b/esdk/layers/meta-zxic-custom/recipes-core/images/files/zx297520v3/vehicle_dc_ref/fs/normal/rootfs/etc/init.d/first.sh
@@ -0,0 +1,67 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides: mountvirtfs
+# Required-Start:
+# Required-Stop:
+# Default-Start: S
+# Default-Stop:
+# Short-Description: Mount kernel virtual file systems.
+# Description: Mount initial set of virtual filesystems the kernel
+# provides and that are required by everything.
+### END INIT INFO
+
+if [ -e /proc ] && ! [ -e /proc/mounts ]; then
+ mount -t proc proc /proc
+fi
+
+if [ -e /sys ] && grep -q sysfs /proc/filesystems && ! [ -e /sys/class ]; then
+ mount -t sysfs sysfs /sys
+fi
+
+if [ -e /sys/kernel/debug ] && grep -q debugfs /proc/filesystems; then
+ mount -t debugfs debugfs /sys/kernel/debug
+fi
+
+if [ -e /sys/kernel/config ] && grep -q configfs /proc/filesystems; then
+ mount -t configfs configfs /sys/kernel/config
+fi
+
+if [ -e /sys/firmware/efi/efivars ] && grep -q efivarfs /proc/filesystems; then
+ mount -t efivarfs efivarfs /sys/firmware/efi/efivars
+fi
+
+if ! [ -e /dev/zero ] && [ -e /dev ] && grep -q devtmpfs /proc/filesystems; then
+ mount -n -t devtmpfs devtmpfs /dev
+fi
+
+mkdir -p /tmp
+#l.yang modify for T106BUG-387 start
+mount -t tmpfs tmpfs /tmp -o nodev,nosuid,noexec
+#l.yang modify for T106BUG-387 end
+mkdir -p /run
+#l.yang modify for T106BUG-387 start
+mount -t tmpfs tmpfs /run -o nodev,nosuid,noexec
+#l.yang modify for T106BUG-387 end
+mkdir -p /dev/pts
+mount -t devpts devpts /dev/pts
+
+mkdir -p /tmp/run
+
+#软锁panic
+#echo 1 > /proc/sys/kernel/softlockup_panic
+#内存耗尽oom panic
+echo 1 > /proc/sys/vm/panic_on_oom
+#警告panic
+#echo 1 > /proc/sys/kernel/panic_on_warn
+#echo 0 > /proc/sys/kernel/hung_task_timeout_secs
+
+echo "mount configfs..."
+mount none /sys/kernel/config -t configfs
+
+
+echo "ifconfig lo up"
+ifconfig lo 127.0.0.1 up
+
+echo 2 > /proc/sys/kernel/randomize_va_space
+echo 2 > /proc/sys/kernel/kptr_restrict
+
diff --git a/esdk/layers/meta-zxic-custom/recipes-core/images/zxic-image.bb b/esdk/layers/meta-zxic-custom/recipes-core/images/zxic-image.bb
new file mode 100755
index 0000000..ef3cdd5
--- /dev/null
+++ b/esdk/layers/meta-zxic-custom/recipes-core/images/zxic-image.bb
@@ -0,0 +1,294 @@
+SUMMARY = "zxic normal image"
+IMAGE_LINGUAS = " "
+LICENSE = "zte"
+PV = "1.0.0"
+PR = "r0"
+
+inherit core-image extrausers ${@bb.utils.contains("DISTRO_FEATURES", "selinux", "selinux-image", "", d)}
+
+OPENWRT_FULL ="\
+ packagegroup-openwrt-minimal \
+ packagegroup-openwrt-base \
+ packagegroup-openwrt-full \
+ ugps \
+ usbmode \
+ urngd \
+ mtd-utils-ubifs \
+ fwtool \
+ usign \
+ swconfig \
+ mtd-openwrt \
+ opkg \
+ cgi-io \
+ "
+OPENWRT_RECOVERY ="\
+ packagegroup-openwrt-minimal \
+ mtd-utils-ubifs \
+ mtd-openwrt \
+ "
+
+
+OPENWRT_PACKAGE = "${@bb.utils.contains("BOOT_CTL", "recovery", "${OPENWRT_RECOVERY}", "${OPENWRT_FULL}", d)}"
+IS_OPENWRT = "${@bb.utils.contains('DISTRO_FEATURES', 'OPENWRT', 'true', 'false', d)}"
+ROOT_FS_NAME = "${@bb.utils.contains("BOOT_CTL", "recovery", "ap_recoveryfs.bin", "ap_caprootfs.img", d)}"
+USEDATA_FS_NAME = "${@bb.utils.contains("BOOT_CTL", "recovery", "ap_userdata_recovery.bin", "ap_capuserdata.img", d)}"
+OEMDATA_FS_NAME = "${@bb.utils.contains("BOOT_CTL", "recovery", "ap_oemdata_recovery.bin", "cap_oemdata.img", d)}"
+
+CORE_IMAGE_BASE_INSTALL = '\
+ ${@bb.utils.contains("DISTRO_FEATURES", "OPENWRT", "${OPENWRT_PACKAGE}", "", d)} \
+ packagegroup-core-boot-zxic \
+ packagegroup-lynq-t106 \
+ ${@bb.utils.contains("DISTRO_FEATURES", "selinux", "packagegroup-selinux-minimal", "", d)} \
+ ${MACHINE_EXTRA_RDEPENDS} \
+ ${CORE_IMAGE_EXTRA_INSTALL} \
+ '
+
+# Include modules in rootfs
+IMAGE_INSTALL += "${CORE_IMAGE_BASE_INSTALL}"
+
+IMAGE_INSTALL += " \
+ kernel-modules \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'dpkg-start-stop', '', d)} \
+ "
+
+#pub include
+include ${BSPDIR}/sources/meta-zxic/conf/pub.inc
+
+DEPENDS += "\
+ u-boot-tools-native rsync-native \
+ ${@bb.utils.contains("USERDATA_FSTYPE", "ubi", "mtd-utils-native", "", d)} \
+ ${@bb.utils.contains('IMAGE_FSTYPES', 'squashfs', 'squashfskit-native', '', d)} \
+ ${@bb.utils.contains('DISTRO_FEATURES','dm-verity','cryptsetup-native','',d)} \
+ ${@bb.utils.contains('DISTRO_FEATURES','dm-verity','coreutils-native','',d)} \
+ "
+
+# Add \ in front of $
+ROOT_PASSWD = "\$6\$GnJN6BAFj7TmbOS\$o4tptoaFJYZe79CWh2VzAgGhQGqfDHoraVUs0nr4TT2e9V2ubq.l.nLrF80ECrtfvPrJDL1J3fbR62nei9A3F1"
+#EXTRA_USERS_PARAMS += "usermod -p '${ROOT_PASSWD}' root;"
+EXTRA_USERS_PARAMS += "${@bb.utils.contains("DISTRO_FEATURES", "OPENWRT", "usermod -p '${ROOT_PASSWD}' root;", "", d)}"
+
+fakeroot distro_rootfs_files_systemd() {
+ rm -rf ${IMAGE_ROOTFS}/boot
+ cp -arfp ${FS-DIR}/fs/${BOOT_CTL}/rootfs/* ${IMAGE_ROOTFS}/
+}
+
+fakeroot distro_rootfs_files_fpga() {
+ rm -rf ${IMAGE_ROOTFS}/boot
+ rm -rf ${IMAGE_ROOTFS}/linuxrc
+ rm -rf ${IMAGE_ROOTFS}/etc/systemd/system.conf
+ cp -arfp ${FS-DIR}/fs/${BOOT_CTL}/rootfs/* ${IMAGE_ROOTFS}/
+ chmod 644 ${IMAGE_ROOTFS}/etc/passwd
+ chmod 644 ${IMAGE_ROOTFS}/etc/group
+ chmod 644 ${IMAGE_ROOTFS}/etc/inittab
+ chmod 400 ${IMAGE_ROOTFS}/etc/shadow
+ chmod a+x ${IMAGE_ROOTFS}/etc/init.d/rcS
+ chmod a+r ${IMAGE_ROOTFS}/etc/init.d/rcS
+}
+
+fakeroot distro_rootfs_files_sysvinit() {
+ rm -rf ${IMAGE_ROOTFS}/boot
+ cp -arfp ${FS-DIR}/fs/${BOOT_CTL}/rootfs/* ${IMAGE_ROOTFS}/
+
+ rm -rf ${IMAGE_ROOTFS}/etc/rc[0-6].d
+ rm -f ${IMAGE_ROOTFS}/etc/fstab
+ rm -f ${IMAGE_ROOTFS}/etc/default/rcS
+ chmod 644 ${IMAGE_ROOTFS}/etc/passwd
+ chmod 644 ${IMAGE_ROOTFS}/etc/group
+ chmod 644 ${IMAGE_ROOTFS}/etc/inittab
+ chmod 400 ${IMAGE_ROOTFS}/etc/shadow
+ chmod a+x ${IMAGE_ROOTFS}/etc/init.d/rcS
+ find ${IMAGE_ROOTFS}/ -name '.gitkeep' -print0 | xargs -0 rm -fr
+}
+
+ROOTFS_POSTPROCESS_COMMAND += "\
+ ${@bb.utils.contains("DISTRO_FEATURES", "sysvinit", "distro_rootfs_files_sysvinit;", "", d)} \
+ ${@bb.utils.contains("DISTRO_FEATURES", "systemd", "distro_rootfs_files_systemd;", "", d)} \
+ "
+
+fakeroot do_cprootfs() {
+ #rm -fv ${BINS-PATH}/${ROOT_FS_NAME}
+ mkdir -p ${BINS-PATH} ${ELFS-PATH}
+
+ if [ ${IMAGE_FSTYPES} = 'cpio.gz' ]; then
+ cd ${IMAGE_ROOTFS} && find . | cpio -o -H newc | gzip -9 > ${IMAGE_ROOTFS}/ramdisk.image.gz
+ mv ${IMAGE_ROOTFS}/ramdisk.image.gz ${BINS-PATH}/${ROOT_FS_NAME}
+ if [ -d "${TMPDIR}/work/zx298501-zxic-linux-musl/linux-zxic/5.4.154-r0" ]; then
+ cp -arfp ${THISDIR}/files/Makefile_dtb ${B}/Makefile
+ cp -arfp ${THISDIR}/files/fix_rootfs_dts.sh ${B}/
+ ${B}/fix_rootfs_dts.sh ${MACHINE}-${DISTRO} ${TMPDIR}/work-shared/zx298501/kernel-source ${BINS-PATH}
+ oe_runmake -C ${B} S=${TMPDIR}/work/zx298501-zxic-linux-musl/linux-zxic/5.4.154-r0 BINS-PATH=${ELFS-PATH} DTB=${MACHINE}-${DISTRO}.dtb
+ fi
+ else
+ #cp -v ${IMGDEPLOYDIR}/${IMAGE_LINK_NAME}.${IMAGE_FSTYPES} ${BINS-PATH}/${ROOT_FS_NAME}
+ cp -v ${IMGDEPLOYDIR}/rootfs.tgz ${ELFS-PATH}/${ROOT_FS_NAME}.tgz
+ fi
+}
+
+fakeroot do_cleanrootfs () {
+ rm -fv ${BINS-PATH}/${ROOT_FS_NAME}
+ rm -fv ${BINS-PATH}/${USEDATA_FS_NAME}
+ rm -fv ${BINS-PATH}/*.img*
+}
+
+do_product_ini() {
+ mkdir -p ${BINS-PATH}
+ echo "[imagefs]" > ${BINS-PATH}/product.ini
+ echo "mkfs_ubifs=${IMAGEFS_MKUBIFS_ARGS}" >> ${BINS-PATH}/product.ini
+ echo "ubinize=${IMAGEFS_UBINIZE_ARGS}" >> ${BINS-PATH}/product.ini
+}
+
+do_all_flags_bin() {
+ ${BSPDIR}/zxic_code/pub/tools/libflags/flags_tool -f ${BINS-PATH}/all_flags.bin ${FLAGS_ARGS}
+}
+
+fakeroot do_mkubifs(){
+ if [ ${BOOT_CTL} = 'normal' ]; then
+ cp -arfp ${THISDIR}/files/ubinize-cfg.sh ${B}
+ cp -arfp ${BSPDIR}/sources/meta-zxic-custom/conf/distro/include/${USERDATA_UBINIZE_CFG} ${B}
+ mkdir -p ${BINS-PATH}
+ ${B}/ubinize-cfg.sh "${BINS-PATH}/${USEDATA_FS_NAME}" "${B}/${USERDATA_UBINIZE_CFG}" "${USERDATA_UBINIZE_ARGS}"
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_START
+if ${@bb.utils.contains('MOBILETEK_NAND_TYPE','M22','true','false',d)}; then
+ ${B}/ubinize-cfg.sh "${BINS-PATH}/ap_capuserdata_M22.img" "${B}/${USERDATA_UBINIZE_CFG}" "${LYNQ_M22_USERDATA_UBINIZE_ARGS}"
+fi
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_END
+ mkdir -p ${IMAGE_ROOTFS}/etc_ro/
+ cp -v "${BINS-PATH}/${USEDATA_FS_NAME}" ${IMAGE_ROOTFS}/etc_ro/
+ fi
+}
+
+
+fakeroot do_rootfs_squashfs(){
+ cp -arfp ${THISDIR}/files/ubinize-static.sh ${B}
+ if ${@bb.utils.contains('DISTRO_FEATURES','dm-verity','true','false',d)}; then
+ cp -arfp ${THISDIR}/files/squashfs_dm-verity.sh ${B}
+ cp -arfp ${THISDIR}/files/zxic_generate_squashfs_verity ${B}
+ fi
+ if ${@bb.utils.contains('DISTRO_FEATURES','dm-verity','true','false',d)}; then
+ touch ${IMAGE_ROOTFS}/etc_ro/dm-verity
+ else
+ rm -fv ${IMAGE_ROOTFS}/etc_ro/dm-verity
+ fi
+
+ rm -fv ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.squashfs_tmp
+ mksquashfs4 ${IMAGE_ROOTFS} ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.squashfs_tmp ${ROOTFS_SQUASHFS_ARGS}
+ if ${@bb.utils.contains('DISTRO_FEATURES','dm-verity','true','false',d)}; then
+ cp ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.squashfs_tmp ${S}/${ROOT_FS_NAME}.unsigned
+ echo "veritysetup and ubinize in do_dm_verity() later ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}"
+ else
+ echo "rootfs squashfs need ubinize-image on nand flash"
+ ${B}/ubinize-static.sh vol_rootfs "${BINS-PATH}/ap_caprootfs.img" ${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.squashfs_tmp "${UBINIZE_ARGS}"
+ fi
+ cd ${IMAGE_ROOTFS}/../ && tar -czvf ${IMGDEPLOYDIR}/rootfs.tgz rootfs
+}
+
+fakeroot do_oemfs_squashfs(){
+ cp -arfp ${THISDIR}/files/ubinize-static.sh ${B}
+ cp -arfp ${FS-DIR}/fs/normal/oem/ ${S}/
+ if ${@bb.utils.contains('DISTRO_FEATURES','dm-verity','true','false',d)}; then
+ cp -arfp ${THISDIR}/files/squashfs_dm-verity.sh ${B}
+ cp -arfp ${THISDIR}/files/zxic_generate_squashfs_verity ${B}
+ fi
+
+ rm -fv ${IMGDEPLOYDIR}/oem.squashfs_tmp
+ mksquashfs4 ${S}/oem ${IMGDEPLOYDIR}/oem.squashfs_tmp ${ROOTFS_SQUASHFS_ARGS}
+ if ${@bb.utils.contains('DISTRO_FEATURES','dm-verity','true','false',d)}; then
+ cp ${IMGDEPLOYDIR}/oem.squashfs_tmp ${S}/cap_oem.img.unsigned
+ echo "veritysetup and ubinize in do_dm_verity() later"
+ else
+ echo "oem squashfs need ubinize-image on nand flash"
+ ${B}/ubinize-static.sh vol_oem "${BINS-PATH}/cap_oem.img" ${IMGDEPLOYDIR}/oem.squashfs_tmp "${UBINIZE_ARGS}"
+ mkdir -p ${ELFS-PATH}
+ rm -rf ${IMGDEPLOYDIR}/oem.squashfs_tmp
+ fi
+ mkdir -p ${ELFS-PATH}
+ cd ${S}/oem/../ && tar -czvf ${ELFS-PATH}/oem.tgz oem
+
+}
+
+fakeroot do_oemfs_oemdata(){
+ if [ ${BOOT_CTL} = 'normal' ]; then
+ cp -arfp ${THISDIR}/files/ubinize-cfg.sh ${B}
+ cp -arfp ${BSPDIR}/sources/meta-zxic-custom/conf/distro/include/${OEMDATA_UBINIZE_CFG} ${B}
+ mkdir -p ${BINS-PATH}
+ ${B}/ubinize-cfg.sh "${BINS-PATH}/${OEMDATA_FS_NAME}" "${B}/${OEMDATA_UBINIZE_CFG}" "${USERDATA_UBINIZE_ARGS}"
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_START
+if ${@bb.utils.contains('MOBILETEK_NAND_TYPE','M22','true','false',d)}; then
+ ${B}/ubinize-cfg.sh "${BINS-PATH}/cap_oemdata_M22.img" "${B}/${OEMDATA_UBINIZE_CFG}" "${LYNQ_M22_USERDATA_UBINIZE_ARGS}"
+fi
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_END
+ mkdir -p ${IMAGE_ROOTFS}/etc_ro/
+ cp -v "${BINS-PATH}/${OEMDATA_FS_NAME}" ${IMAGE_ROOTFS}/etc_ro/
+ fi
+}
+
+ROOTFS_POSTPROCESS_COMMAND_remove += 'empty_var_volatile;'
+
+fakeroot do_postinstall(){
+ if [ -f ${IMAGE_ROOTFS}/postinstall.sh ]; then
+ cd ${IMAGE_ROOTFS} && sh postinstall.sh && rm -v ${IMAGE_ROOTFS}/postinstall.sh
+ fi
+}
+
+fakeroot do_ln_musl_ld(){
+ if [ ! -L ${IMAGE_ROOTFS}/lib/ld-linux-aarch64.so.1 ]; then
+ if [ -L ${IMAGE_ROOTFS}/lib/ld-musl-aarch64.so.1 ]; then
+ cd ${IMAGE_ROOTFS}/lib && ln -snf ld-musl-aarch64.so.1 ld-linux-aarch64.so.1
+ fi
+ fi
+}
+
+do_dm_verity(){
+ if ${@bb.utils.contains('DISTRO_FEATURES','dm-verity','true','false',d)}; then
+ rm -fv ${BINS-PATH}/ap_caprootfs.dm
+ ${S}/squashfs_dm-verity.sh ${S}/${ROOT_FS_NAME}.unsigned ${S} \
+ ${BINS-PATH}/ap_caprootfs.img.dm ${SIGNIMAGE_PRIVATE_KEY} ${BSPDIR}/tools/SignTool/SignImage
+ ${S}/ubinize-static.sh vol_rootfs "${BINS-PATH}/ap_caprootfs.img" ${BINS-PATH}/ap_caprootfs.img.dm "${UBINIZE_ARGS}"
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_START
+if ${@bb.utils.contains('MOBILETEK_NAND_TYPE','M22','true','false',d)}; then
+ ${S}/ubinize-static.sh vol_rootfs "${BINS-PATH}/ap_caprootfs_M22.img" ${BINS-PATH}/ap_caprootfs.img.dm "${LYNQ_M22_UBINIZE_ARGS}"
+fi
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_END
+ if ${@bb.utils.contains('DISTRO_FEATURES','oemfs','true','false',d)}; then
+ rm -fv ${BINS-PATH}/cap_oem.img.dm
+ ${B}/squashfs_dm-verity.sh ${S}/cap_oem.img.unsigned ${B} \
+ ${BINS-PATH}/cap_oem.img.dm ${SIGNIMAGE_PRIVATE_KEY} ${BSPDIR}/tools/SignTool/SignImage
+ ${B}/ubinize-static.sh vol_oem "${BINS-PATH}/cap_oem.img" ${BINS-PATH}/cap_oem.img.dm "${UBINIZE_ARGS}"
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_START
+if ${@bb.utils.contains('MOBILETEK_NAND_TYPE','M22','true','false',d)}; then
+ ${B}/ubinize-static.sh vol_oem "${BINS-PATH}/cap_oem_M22.img" ${BINS-PATH}/cap_oem.img.dm "${LYNQ_M22_UBINIZE_ARGS}"
+fi
+#LYNQ_MODIFY_ZXW_TASK944_XF.Li_20250123_END
+ fi
+ fi
+}
+
+IMAGE_POSTPROCESS_COMMAND_prepend = ' \
+ do_postinstall; \
+ ${@bb.utils.contains("TCLIBC", "musl", "do_ln_musl_ld;", "", d)} \
+ ${@bb.utils.contains("DISTRO_FEATURES", "selinux", "selinux_set_labels ;", "", d)} \
+ '
+
+IMAGE_POSTPROCESS_COMMAND += "\
+ ${@bb.utils.contains("USERDATA_FSTYPE", "ubi", "do_mkubifs;", "", d)} \
+ ${@bb.utils.contains("DISTRO_FEATURES", "oemfs", "do_oemfs_squashfs;", "", d)} \
+ ${@bb.utils.contains("DISTRO_FEATURES", "oemfs", "do_oemfs_oemdata;", "", d)} \
+ ${@bb.utils.contains("IMAGE_FSTYPES", "squashfs", "do_rootfs_squashfs;", "", d)} \
+ "
+#xf.li@20240716 add start
+do_oem_config() {
+ LYNQ_INSIDE_VERSION_UCI=" option LYNQ_SW_INSIDE_VERSION '${LYNQ_CONFIG_VERSION}'"
+ eval sed -i 's/^.*LYNQ_SW_INSIDE_VERSION.*$/"${LYNQ_INSIDE_VERSION_UCI}"/' ${IMAGE_ROOTFS}/etc/config/lynq_uci_ro
+ if [ "${MOBILETEK_LOG_ENCRYPT}" = "enable" ]; then
+ touch ${IMAGE_ROOTFS}/etc/syslog_encrypt_flag
+ else
+ rm -rf ${IMAGE_ROOTFS}/etc/syslog_encrypt_flag
+ touch ${IMAGE_ROOTFS}/etc/no_log_encrypt
+ fi
+}
+addtask do_oem_config after do_rootfs before do_image
+#xf.li@20240716 add end
+addtask cprootfs after do_dm_verity before do_build
+addtask do_dm_verity after do_image_complete before do_build
+addtask cleanrootfs after do_clean before do_cleansstate
+
diff --git a/esdk/layers/meta-zxic-custom/recipes-kernel/linux/linux-zxic_5.10.bbappend b/esdk/layers/meta-zxic-custom/recipes-kernel/linux/linux-zxic_5.10.bbappend
new file mode 100755
index 0000000..3d328f4
--- /dev/null
+++ b/esdk/layers/meta-zxic-custom/recipes-kernel/linux/linux-zxic_5.10.bbappend
@@ -0,0 +1,7 @@
+FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:${THISDIR}/files:"
+
+SRC_URI_append = "\
+ file://${LINUX_CONFIG} \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'OPTEE', 'file://optee.cfg', '', d)} \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'dm-verity', 'file://dm-verity.cfg', '', d)} \
+"
\ No newline at end of file
diff --git a/esdk/layers/meta-zxic-custom/recipes-lynq/liblynq-autosuspend/liblynq-autosuspend.bb b/esdk/layers/meta-zxic-custom/recipes-lynq/liblynq-autosuspend/liblynq-autosuspend.bb
new file mode 100755
index 0000000..fc81884
--- /dev/null
+++ b/esdk/layers/meta-zxic-custom/recipes-lynq/liblynq-autosuspend/liblynq-autosuspend.bb
@@ -0,0 +1,53 @@
+#inherit externalsrc package
+
+DESCRIPTION = "liblynq-autosuspend"
+LICENSE = "CLOSED"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=b1e07e8d88e26263e71d3a9e2aa9a2ff"
+DEPENDS += "libbsp liblynq-log"
+#inherit workonsrc
+WORKONSRC = "${TOPDIR}/../src/lynq/lib/liblynq-autosuspend"
+FILESEXTRAPATHS_prepend :="${TOPDIR}/../src/lynq/lib/:"
+SRC_URI = " \
+ file://liblynq-autosuspend \
+ "
+
+SRC-DIR = "${S}/../liblynq-autosuspend"
+TARGET_CC_ARCH += "${LDFLAGS}"
+BB_INCLUDE_ADD = "--sysroot=${STAGING_DIR_HOST}"
+BB_LDFLAGS_ADD = "--sysroot=${STAGING_DIR_HOST} -Wl,--hash-style=gnu"
+#Parameters passed to do_compile()
+EXTRA_OEMAKE = "'TARGET_PLATFORM = ${TARGET_PLATFORM}'"
+
+FILES_${PN} = "${base_libdir}/*.so \
+ ${base_bindir}\
+ ${base_sbindir} \
+ /etc/dbus-1/system.d/"
+FILES_${PN}-dev = "/test \
+ ${includedir}"
+FILES_${PN}-doc = "/doc"
+FILES_${PN}-dbg ="${base_bindir}/.debug \
+ ${base_libdir}/.debug \
+ ${base_sbindir}/.debug"
+INSANE_SKIP_${PN} += "already-stripped"
+INSANE_SKIP_${PN} += "installed-vs-shipped"
+#INHIBIT_PACKAGE_STRIP = "1"
+do_compile () {
+ if [ "${PACKAGE_ARCH}" = "cortexa7hf-vfp-vfpv4-neon" ]; then
+ oe_runmake all -C ${SRC-DIR} ROOT=${STAGING_DIR_HOST} OFLAGS="--sysroot=${STAGING_DIR_HOST} -Os -mfpu=neon-vfpv4 -mhard-float -Wl,--hash-style=gnu"
+ elif [ "${PACKAGE_ARCH}" = "cortexa7hf-neon-vfpv4" ]; then
+ oe_runmake all -C ${SRC-DIR} ROOT=${STAGING_DIR_HOST} OFLAGS="--sysroot=${STAGING_DIR_HOST} -Os -mfpu=neon-vfpv4 -mhard-float -Wl,--hash-style=gnu"
+ elif [ "${PACKAGE_ARCH}" = "cortexa53hf-neon-fp-armv8" ]; then
+ oe_runmake all -C ${SRC-DIR} ROOT=${STAGING_DIR_HOST} OFLAGS="--sysroot=${STAGING_DIR_HOST} -Os -mfpu=neon-vfpv4 -mhard-float -Wl,--hash-style=gnu -mhard-float -mfpu=neon-fp-armv8 -mfloat-abi=hard -mcpu=cortex-a53 -mtune=cortex-a53"
+ else
+ oe_runmake all -C ${SRC-DIR} ROOT=${STAGING_DIR_HOST} OFLAGS="--sysroot=${STAGING_DIR_HOST} -Os -Wl,--hash-style=gnu -DTELEPHONYWARE"
+ fi
+}
+
+do_install() {
+ oe_runmake install -C ${SRC-DIR} ROOT=${D}
+ if [ -d "${WORKONSRC}" ] ; then
+ install -d ${D}${includedir}
+ cp -af ${SRC-DIR}/include/libauto/ ${D}${includedir}/libauto
+ fi
+}
+
diff --git a/esdk/layers/poky/meta/recipes-core/base-passwd/base-passwd_3.5.29.bb b/esdk/layers/poky/meta/recipes-core/base-passwd/base-passwd_3.5.29.bb
new file mode 100755
index 0000000..65b3cd7
--- /dev/null
+++ b/esdk/layers/poky/meta/recipes-core/base-passwd/base-passwd_3.5.29.bb
@@ -0,0 +1,117 @@
+SUMMARY = "Base system master password/group files"
+DESCRIPTION = "The master copies of the user database files (/etc/passwd and /etc/group). The update-passwd tool is also provided to keep the system databases synchronized with these master files."
+HOMEPAGE = "https://launchpad.net/base-passwd"
+SECTION = "base"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=eb723b61539feef013de476e68b5c50a"
+
+RECIPE_NO_UPDATE_REASON = "Version 3.5.38 requires cdebconf for update-passwd utility"
+
+SRC_URI = "https://launchpad.net/debian/+archive/primary/+files/${BPN}_${PV}.tar.gz \
+ file://add_shutdown.patch \
+ file://nobash.patch \
+ file://noshadow.patch \
+ file://input.patch \
+ file://disable-docs.patch \
+ file://kvm.patch \
+ "
+
+SRC_URI[md5sum] = "6beccac48083fe8ae5048acd062e5421"
+SRC_URI[sha256sum] = "f0b66388b2c8e49c15692439d2bee63bcdd4bbbf7a782c7f64accc55986b6a36"
+
+# the package is taken from launchpad; that source is static and goes stale
+# so we check the latest upstream from a directory that does get updated
+UPSTREAM_CHECK_URI = "${DEBIAN_MIRROR}/main/b/base-passwd/"
+
+inherit autotools
+
+do_install () {
+ install -d -m 755 ${D}${sbindir}
+ install -o root -g root -p -m 755 ${B}/update-passwd ${D}${sbindir}/
+ install -d -m 755 ${D}${mandir}/man8 ${D}${mandir}/pl/man8
+ install -p -m 644 ${S}/man/update-passwd.8 ${D}${mandir}/man8/
+ install -p -m 644 ${S}/man/update-passwd.pl.8 \
+ ${D}${mandir}/pl/man8/update-passwd.8
+ gzip -9 ${D}${mandir}/man8/* ${D}${mandir}/pl/man8/*
+ install -d -m 755 ${D}${datadir}/base-passwd
+ install -o root -g root -p -m 644 ${S}/passwd.master ${D}${datadir}/base-passwd/
+ sed -i 's#:/root:#:${ROOT_HOME}:#' ${D}${datadir}/base-passwd/passwd.master
+ install -o root -g root -p -m 644 ${S}/group.master ${D}${datadir}/base-passwd/
+
+ install -d -m 755 ${D}${docdir}/${BPN}
+ install -p -m 644 ${S}/debian/changelog ${D}${docdir}/${BPN}/
+ gzip -9 ${D}${docdir}/${BPN}/*
+ install -p -m 644 ${S}/README ${D}${docdir}/${BPN}/
+ install -p -m 644 ${S}/debian/copyright ${D}${docdir}/${BPN}/
+}
+
+basepasswd_sysroot_postinst() {
+#!/bin/sh
+
+# Install passwd.master and group.master to sysconfdir
+install -d -m 755 ${STAGING_DIR_TARGET}${sysconfdir}
+for i in passwd group; do
+ install -p -m 644 ${STAGING_DIR_TARGET}${datadir}/base-passwd/\$i.master \
+ ${STAGING_DIR_TARGET}${sysconfdir}/\$i
+done
+
+# Run any useradd postinsts
+for script in ${STAGING_DIR_TARGET}${bindir}/postinst-useradd-*; do
+ if [ -f \$script ]; then
+ \$script
+ fi
+done
+}
+
+SYSROOT_DIRS += "${sysconfdir}"
+SYSROOT_PREPROCESS_FUNCS += "base_passwd_tweaksysroot"
+
+base_passwd_tweaksysroot () {
+ mkdir -p ${SYSROOT_DESTDIR}${bindir}
+ dest=${SYSROOT_DESTDIR}${bindir}/postinst-${PN}
+ echo "${basepasswd_sysroot_postinst}" > $dest
+ chmod 0755 $dest
+}
+
+python populate_packages_prepend() {
+ # Add in the preinst function for ${PN}
+ # We have to do this here as prior to this, passwd/group.master
+ # would be unavailable. We need to create these files at preinst
+ # time before the files from the package may be available, hence
+ # storing the data from the files in the preinst directly.
+
+ f = open(d.expand("${STAGING_DATADIR}/base-passwd/passwd.master"), 'r')
+ passwd = "".join(f.readlines())
+ f.close()
+ f = open(d.expand("${STAGING_DATADIR}/base-passwd/group.master"), 'r')
+ group = "".join(f.readlines())
+ f.close()
+
+ preinst = """#!/bin/sh
+mkdir -p $D${sysconfdir}
+if [ ! -e $D${sysconfdir}/passwd ]; then
+\tcat << 'EOF' > $D${sysconfdir}/passwd
+""" + passwd + """EOF
+fi
+if [ ! -e $D${sysconfdir}/group ]; then
+\tcat << 'EOF' > $D${sysconfdir}/group
+""" + group + """EOF
+fi
+"""
+ d.setVar(d.expand('pkg_preinst_${PN}'), preinst)
+}
+
+addtask do_package after do_populate_sysroot
+
+ALLOW_EMPTY_${PN} = "1"
+
+PACKAGES =+ "${PN}-update"
+FILES_${PN}-update = "${sbindir}/* ${datadir}/${PN}"
+
+pkg_postinst_${PN}-update () {
+#!/bin/sh
+if [ -n "$D" ]; then
+ exit 0
+fi
+${sbindir}/update-passwd
+}