[Add kernel in UBI feature]

[Description]
Add kernel in UBI feature
1. create factory and sysupgrade image align to openwrt
2. align openwrt image framework: kernel in UBI and rootfs is squashfs format
3. remove the partition patch for dts
4. enable CONFIG_XZ_DEC_ARM in kernel to fix squashfs xz decompression
fail issue

[Release-log]

diff --git a/classes/image_types-mtk.bbclass b/classes/image_types-mtk.bbclass
index 0927296..7d9fae8 100644
--- a/classes/image_types-mtk.bbclass
+++ b/classes/image_types-mtk.bbclass
@@ -131,26 +131,48 @@
     assemble_sd_image
 }
 
-#NAND_ROOTFS_TYPE ?= "squashfs-xz"
-NAND_ROOTFS_TYPE ?= "ubi"
+NAND_ROOTFS_TYPE ?= "squashfs-xz"
+#NAND_ROOTFS_TYPE ?= "ubi"
 NAND_FILE ?= "${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.mtk.nand"
 
 IMAGE_CMD_mtk.nand () {
-    rm -f ${NAND_FILE}
 
-    # 1. dump fitImage into firmware
-    dd if=${DEPLOY_DIR_IMAGE}/fitImage >> ${NAND_FILE}
+# create factory image align to openwrt (kernel in ubi)   
 
-    # 2. pad to 256K
-    dd if=${NAND_FILE} of=${NAND_FILE}.new bs=256k conv=sync
-    mv -f ${NAND_FILE}.new ${NAND_FILE}
+    echo \[kernel\] > ubinize.cfg
+    echo mode=ubi >> ubinize.cfg
+    echo image=${DEPLOY_DIR_IMAGE}/fitImage >> ubinize.cfg
+    echo vol_id=0 >> ubinize.cfg
+    echo vol_type=dynamic >> ubinize.cfg
+    echo vol_name=kernel >> ubinize.cfg
+    echo \[rootfs\] >> ubinize.cfg
+    echo mode=ubi >> ubinize.cfg
+    echo image=${IMGDEPLOYDIR}/${PN}-${MACHINE}.squashfs-xz >> ubinize.cfg
+    echo vol_id=1 >> ubinize.cfg
+    echo vol_type=dynamic >> ubinize.cfg
+    echo vol_name=rootfs >> ubinize.cfg
+    echo \[rootfs_data\] >> ubinize.cfg
+    echo mode=ubi >> ubinize.cfg
+    echo vol_id=2 >> ubinize.cfg
+    echo vol_type=dynamic >> ubinize.cfg
+    echo vol_name=rootfs_data >> ubinize.cfg
+    echo vol_size=1MiB >> ubinize.cfg
+    echo vol_flags=autoresize >> ubinize.cfg
+    ubinize -o ${DEPLOY_DIR_IMAGE}/${PN}-${MACHINE}-factory.bin ${UBINIZE_ARGS} ubinize.cfg
+    mv ubinize.cfg ${DEPLOY_DIR_IMAGE}/
 
-    # 3. pad to kernel size = 0x800000 = 8388608
-    dd if=${NAND_FILE} of=${NAND_FILE}.new bs=8388608 conv=sync
-    mv -f ${NAND_FILE}.new ${NAND_FILE}
+# create sysupgrade image align to openwrt
+
+    rm -rf ${IMGDEPLOYDIR}/sysupgrade-${PN}-${MACHINE}
+    rm -rf ${IMGDEPLOYDIR}/${PN}-${MACHINE}-sysupgrade.bin
+
+    mkdir ${IMGDEPLOYDIR}/sysupgrade-${PN}-${MACHINE}
+
+    cp ${DEPLOY_DIR_IMAGE}/fitImage ${IMGDEPLOYDIR}/sysupgrade-${PN}-${MACHINE}/kernel
+    cp ${IMGDEPLOYDIR}/${PN}-${MACHINE}.squashfs-xz ${IMGDEPLOYDIR}/sysupgrade-${PN}-${MACHINE}/root
 
-    # 4. dump filesystem into firmware
-    dd if=${IMGDEPLOYDIR}/${PN}-${MACHINE}.${NAND_ROOTFS_TYPE} >> ${NAND_FILE}
+    cd ${IMGDEPLOYDIR}
+    tar cvf ${PN}-${MACHINE}-sysupgrade.bin sysupgrade-${PN}-${MACHINE}
 }
 
 # Both eMMC and SD requires the ext4 rootfs filesystem to be built before using
diff --git a/conf/machine/filogic-32bit.conf b/conf/machine/filogic-32bit.conf
index 794613a..812680b 100644
--- a/conf/machine/filogic-32bit.conf
+++ b/conf/machine/filogic-32bit.conf
@@ -36,7 +36,7 @@
 
 PREFERRED_PROVIDER_hal-wifi = "hal-wifi-cfg80211"
 
-IMAGE_FSTYPES += "ubi mtk.nand ${INITRAMFS_FSTYPES}"
+IMAGE_FSTYPES += "ubi squashfs-xz mtk.nand ${INITRAMFS_FSTYPES}"
 # Parameters for MT7986 RFB1 NAND (byte)
 # NAND_LOG_BLOCK_SIZE = NAND_PHY_BLOCK_SIZE - 2 Pages
 # NAND_LBLOCK_COUNT = NAND_PHY_BLOCK_COUNT - 53
diff --git a/conf/machine/filogic.conf b/conf/machine/filogic.conf
index 03a50a2..d95bf2d 100644
--- a/conf/machine/filogic.conf
+++ b/conf/machine/filogic.conf
@@ -36,7 +36,7 @@
 
 PREFERRED_PROVIDER_hal-wifi = "hal-wifi-cfg80211"
 
-IMAGE_FSTYPES += "ubi mtk.nand ${INITRAMFS_FSTYPES}"
+IMAGE_FSTYPES += "ubi squashfs-xz mtk.nand ${INITRAMFS_FSTYPES}"
 # Parameters for MT7986 RFB1 NAND (byte)
 # NAND_LOG_BLOCK_SIZE = NAND_PHY_BLOCK_SIZE - 2 Pages
 # NAND_LBLOCK_COUNT = NAND_PHY_BLOCK_COUNT - 53
diff --git a/recipes-kernel/linux/linux-mediatek-5.4/rdkb_cfg/filogic_rdkb.cfg b/recipes-kernel/linux/linux-mediatek-5.4/rdkb_cfg/filogic_rdkb.cfg
new file mode 100644
index 0000000..52cbc2d
--- /dev/null
+++ b/recipes-kernel/linux/linux-mediatek-5.4/rdkb_cfg/filogic_rdkb.cfg
@@ -0,0 +1 @@
+CONFIG_XZ_DEC_ARM=y
diff --git a/recipes-kernel/linux/linux-mediatek_5.4.bb b/recipes-kernel/linux/linux-mediatek_5.4.bb
index 4877f37..7bcc946 100644
--- a/recipes-kernel/linux/linux-mediatek_5.4.bb
+++ b/recipes-kernel/linux/linux-mediatek_5.4.bb
@@ -37,6 +37,7 @@
     file://rdkb_cfg/openvswitch.cfg \
     file://rdkb_cfg/mac80211.cfg \
     file://rdkb_cfg/prplmesh.cfg \
+    file://rdkb_cfg/filogic_rdkb.cfg \
 "
 require ${PN}-${PV}/generic/backport-5.4/backport-5.4.inc
 
@@ -68,7 +69,7 @@
     cd ${S}
         if [ ! -e patch_applied ]; then
             patch -p1 < ${WORKDIR}/001-rdkb-eth-mtk-change-ifname-for.patch
-            patch -p1 < ${WORKDIR}/002-rdkb-mtd-ubi-relayout.patch
+            
             patch -p1 < ${WORKDIR}/0600-net-phylink-propagate-resolved-link-config-via-mac_l.patch
             patch -p1 < ${WORKDIR}/9010-iwconfig-wireless-rate-fix.patch
             touch patch_applied