--- /dev/null
+From patchwork Wed Mar 4 03:53:38 2026
+Content-Type: text/plain; charset="utf-8"
+MIME-Version: 1.0
+Content-Transfer-Encoding: 7bit
+X-Patchwork-Submitter: Daniel Golle <daniel@makrotopia.org>
+X-Patchwork-Id: 2204640
+Return-Path: <u-boot-bounces@lists.denx.de>
+X-Original-To: incoming@patchwork.ozlabs.org
+Delivered-To: patchwork-incoming@legolas.ozlabs.org
+Date: Wed, 4 Mar 2026 03:53:38 +0000
+From: Daniel Golle <daniel@makrotopia.org>
+To: Lukasz Majewski <lukma@denx.de>, Ryder Lee <ryder.lee@mediatek.com>,
+ Weijie Gao <weijie.gao@mediatek.com>,
+ Chunfeng Yun <chunfeng.yun@mediatek.com>,
+ Igor Belwon <igor.belwon@mentallysanemainliners.org>,
+ GSS_MTK_Uboot_upstream <GSS_MTK_Uboot_upstream@mediatek.com>,
+ Tom Rini <trini@konsulko.com>, David Lechner <dlechner@baylibre.com>,
+ Daniel Golle <daniel@makrotopia.org>, u-boot@lists.denx.de
+Subject: [PATCH] clk: mediatek: mt7622: fix infracfg and pericfg clock
+ operations
+Message-ID:
+ <a54fd4a7284da506020cb614919096067b195277.1772596281.git.daniel@makrotopia.org>
+MIME-Version: 1.0
+Content-Disposition: inline
+X-BeenThere: u-boot@lists.denx.de
+X-Mailman-Version: 2.1.39
+Precedence: list
+List-Id: U-Boot discussion <u-boot.lists.denx.de>
+List-Unsubscribe: <https://lists.denx.de/options/u-boot>,
+ <mailto:u-boot-request@lists.denx.de?subject=unsubscribe>
+List-Archive: <https://lists.denx.de/pipermail/u-boot/>
+List-Post: <mailto:u-boot@lists.denx.de>
+List-Help: <mailto:u-boot-request@lists.denx.de?subject=help>
+List-Subscribe: <https://lists.denx.de/listinfo/u-boot>,
+ <mailto:u-boot-request@lists.denx.de?subject=subscribe>
+Errors-To: u-boot-bounces@lists.denx.de
+Sender: "U-Boot" <u-boot-bounces@lists.denx.de>
+
+The MT7622 infracfg and pericfg drivers both use
+mtk_common_clk_infrasys_init() for probe, which populates struct
+mtk_clk_priv and stores gate definitions in the clk_tree. However,
+both drivers were incorrectly wired to mtk_clk_gate_ops which expects
+struct mtk_cg_priv with separately populated gates/num_gates/gates_offs
+fields from mtk_common_clk_gate_init().
+
+Since those fields were never set, any attempt to enable an infracfg or
+pericfg gate clock (e.g. CLK_INFRA_TRNG) would fail with -EINVAL.
+
+Switch both to mtk_clk_infrasys_ops and struct mtk_clk_priv to match
+the init function.
+
+Fixes: 72ab603b201 ("clk: mediatek: add driver for MT7622")
+Signed-off-by: Daniel Golle <daniel@makrotopia.org>
+---
+ drivers/clk/mediatek/clk-mt7622.c | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+--- a/drivers/clk/mediatek/clk-mt7622.c
++++ b/drivers/clk/mediatek/clk-mt7622.c
+@@ -805,8 +805,8 @@ U_BOOT_DRIVER(mtk_clk_infracfg) = {
+ .id = UCLASS_CLK,
+ .of_match = mt7622_infracfg_compat,
+ .probe = mt7622_infracfg_probe,
+- .priv_auto = sizeof(struct mtk_cg_priv),
+- .ops = &mtk_clk_gate_ops,
++ .priv_auto = sizeof(struct mtk_clk_priv),
++ .ops = &mtk_clk_infrasys_ops,
+ .flags = DM_FLAG_PRE_RELOC,
+ };
+
+@@ -815,8 +815,8 @@ U_BOOT_DRIVER(mtk_clk_pericfg) = {
+ .id = UCLASS_CLK,
+ .of_match = mt7622_pericfg_compat,
+ .probe = mt7622_pericfg_probe,
+- .priv_auto = sizeof(struct mtk_cg_priv),
+- .ops = &mtk_clk_gate_ops,
++ .priv_auto = sizeof(struct mtk_clk_priv),
++ .ops = &mtk_clk_infrasys_ops,
+ .flags = DM_FLAG_PRE_RELOC,
+ };
+
--- a/configs/mt7988_sd_rfb_defconfig
+++ b/configs/mt7988_sd_rfb_defconfig
-@@ -5,38 +5,77 @@ CONFIG_ARCH_MEDIATEK=y
+@@ -1,42 +1,83 @@
+ CONFIG_ARM=y
++CONFIG_ARM_SMCCC=y
+ CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+ CONFIG_POSITION_INDEPENDENT=y
+ CONFIG_ARCH_MEDIATEK=y
CONFIG_TEXT_BASE=0x41e00000
CONFIG_SYS_MALLOC_F_LEN=0x4000
CONFIG_NR_DRAM_BANKS=1
+CONFIG_CMD_PSTORE_MEM_ADDR=0x42ff0000
+CONFIG_CMD_UUID=y
+CONFIG_CMD_HASH=y
++CONFIG_CMD_RNG=y
CONFIG_CMD_SMC=y
-CONFIG_DOS_PARTITION=y
-CONFIG_EFI_PARTITION=y
CONFIG_USE_IPADDR=y
CONFIG_IPADDR="192.168.1.1"
CONFIG_USE_NETMASK=y
-@@ -45,28 +84,43 @@ CONFIG_USE_SERVERIP=y
+@@ -45,28 +86,45 @@ CONFIG_USE_SERVERIP=y
CONFIG_SERVERIP="192.168.1.2"
CONFIG_PROT_TCP=y
CONFIG_NET_RANDOM_ETHADDR=y
CONFIG_DM_PWM=y
CONFIG_PWM_MTK=y
CONFIG_RAM=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK_V2=y
CONFIG_DM_SERIAL=y
+CONFIG_SERIAL_RX_BUFFER=y
CONFIG_MTK_SERIAL=y
CONFIG_HEXDUMP=y
--- a/configs/mt7988_rfb_defconfig
+++ b/configs/mt7988_rfb_defconfig
-@@ -6,37 +6,77 @@ CONFIG_TEXT_BASE=0x41e00000
+@@ -1,4 +1,5 @@
+ CONFIG_ARM=y
++CONFIG_ARM_SMCCC=y
+ CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+ CONFIG_POSITION_INDEPENDENT=y
+ CONFIG_ARCH_MEDIATEK=y
+@@ -6,37 +7,78 @@ CONFIG_TEXT_BASE=0x41e00000
CONFIG_SYS_MALLOC_F_LEN=0x4000
CONFIG_NR_DRAM_BANKS=1
CONFIG_DEFAULT_DEVICE_TREE="mt7988-rfb"
+CONFIG_CMD_PSTORE_MEM_ADDR=0x42ff0000
+CONFIG_CMD_UUID=y
+CONFIG_CMD_HASH=y
++CONFIG_CMD_RNG=y
CONFIG_CMD_SMC=y
-CONFIG_DOS_PARTITION=y
-CONFIG_EFI_PARTITION=y
CONFIG_USE_IPADDR=y
CONFIG_IPADDR="192.168.1.1"
CONFIG_USE_NETMASK=y
-@@ -45,9 +85,13 @@ CONFIG_USE_SERVERIP=y
+@@ -45,9 +87,13 @@ CONFIG_USE_SERVERIP=y
CONFIG_SERVERIP="192.168.1.2"
CONFIG_PROT_TCP=y
CONFIG_NET_RANDOM_ETHADDR=y
CONFIG_MMC_HS200_SUPPORT=y
CONFIG_MMC_MTK=y
CONFIG_MTD=y
-@@ -65,20 +109,31 @@ CONFIG_SPI_FLASH_WINBOND=y
+@@ -65,20 +111,33 @@ CONFIG_SPI_FLASH_WINBOND=y
CONFIG_SPI_FLASH_XMC=y
CONFIG_SPI_FLASH_XTX=y
CONFIG_SPI_FLASH_MTD=y
CONFIG_DM_PWM=y
CONFIG_PWM_MTK=y
CONFIG_RAM=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK_V2=y
CONFIG_DM_SERIAL=y
+CONFIG_SERIAL_RX_BUFFER=y
CONFIG_MTK_SERIAL=y
--- a/configs/mt7981_emmc_rfb_defconfig
+++ b/configs/mt7981_emmc_rfb_defconfig
-@@ -8,38 +8,57 @@ CONFIG_NR_DRAM_BANKS=1
+@@ -1,4 +1,5 @@
+ CONFIG_ARM=y
++CONFIG_ARM_SMCCC=y
+ CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+ CONFIG_POSITION_INDEPENDENT=y
+ CONFIG_ARCH_MEDIATEK=y
+@@ -8,38 +9,58 @@ CONFIG_NR_DRAM_BANKS=1
CONFIG_ENV_SIZE=0x80000
CONFIG_ENV_OFFSET=0x300000
CONFIG_DEFAULT_DEVICE_TREE="mt7981-emmc-rfb"
+CONFIG_CMD_PSTORE_MEM_ADDR=0x42ff0000
+CONFIG_CMD_UUID=y
+CONFIG_CMD_HASH=y
++CONFIG_CMD_RNG=y
CONFIG_CMD_SMC=y
-CONFIG_CMD_FAT=y
-CONFIG_CMD_FS_GENERIC=y
CONFIG_PARTITION_TYPE_GUID=y
CONFIG_ENV_OVERWRITE=y
CONFIG_ENV_IS_IN_MMC=y
-@@ -47,7 +66,13 @@ CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
+@@ -47,7 +68,13 @@ CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
CONFIG_NET_RANDOM_ETHADDR=y
CONFIG_REGMAP=y
CONFIG_SYSCON=y
CONFIG_MMC_HS200_SUPPORT=y
CONFIG_MMC_MTK=y
CONFIG_PHY_FIXED=y
-@@ -60,6 +85,7 @@ CONFIG_MTK_POWER_DOMAIN=y
+@@ -59,7 +86,10 @@ CONFIG_POWER_DOMAIN=y
+ CONFIG_MTK_POWER_DOMAIN=y
CONFIG_DM_REGULATOR=y
CONFIG_DM_REGULATOR_FIXED=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK_V2=y
CONFIG_DM_SERIAL=y
+CONFIG_SERIAL_RX_BUFFER=y
CONFIG_MTK_SERIAL=y
CONFIG_HEXDUMP=y
--- a/configs/mt7981_rfb_defconfig
+++ b/configs/mt7981_rfb_defconfig
-@@ -6,39 +6,79 @@ CONFIG_TEXT_BASE=0x41e00000
+@@ -1,4 +1,5 @@
+ CONFIG_ARM=y
++CONFIG_ARM_SMCCC=y
+ CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+ CONFIG_POSITION_INDEPENDENT=y
+ CONFIG_ARCH_MEDIATEK=y
+@@ -6,39 +7,80 @@ CONFIG_TEXT_BASE=0x41e00000
CONFIG_SYS_MALLOC_F_LEN=0x4000
CONFIG_NR_DRAM_BANKS=1
CONFIG_DEFAULT_DEVICE_TREE="mt7981-rfb"
+CONFIG_CMD_PSTORE_MEM_ADDR=0x42ff0000
+CONFIG_CMD_UUID=y
+CONFIG_CMD_HASH=y
++CONFIG_CMD_RNG=y
CONFIG_CMD_SMC=y
+CONFIG_CMD_FS_GENERIC=y
+CONFIG_CMD_FS_UUID=y
# CONFIG_MMC is not set
CONFIG_MTD=y
CONFIG_DM_MTD=y
-@@ -63,6 +103,7 @@ CONFIG_PINCTRL_MT7981=y
+@@ -62,7 +104,10 @@ CONFIG_PINCONF=y
+ CONFIG_PINCTRL_MT7981=y
CONFIG_POWER_DOMAIN=y
CONFIG_MTK_POWER_DOMAIN=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK_V2=y
CONFIG_DM_SERIAL=y
+CONFIG_SERIAL_RX_BUFFER=y
CONFIG_MTK_SERIAL=y
CONFIG_DM_SPI=y
--- a/configs/mt7981_sd_rfb_defconfig
+++ b/configs/mt7981_sd_rfb_defconfig
-@@ -8,38 +8,57 @@ CONFIG_NR_DRAM_BANKS=1
+@@ -1,4 +1,5 @@
+ CONFIG_ARM=y
++CONFIG_ARM_SMCCC=y
+ CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+ CONFIG_POSITION_INDEPENDENT=y
+ CONFIG_ARCH_MEDIATEK=y
+@@ -8,38 +9,58 @@ CONFIG_NR_DRAM_BANKS=1
CONFIG_ENV_SIZE=0x80000
CONFIG_ENV_OFFSET=0x300000
CONFIG_DEFAULT_DEVICE_TREE="mt7981-sd-rfb"
+CONFIG_CMD_PSTORE_MEM_ADDR=0x42ff0000
+CONFIG_CMD_UUID=y
+CONFIG_CMD_HASH=y
++CONFIG_CMD_RNG=y
CONFIG_CMD_SMC=y
-CONFIG_CMD_FAT=y
-CONFIG_CMD_FS_GENERIC=y
CONFIG_PARTITION_TYPE_GUID=y
CONFIG_ENV_OVERWRITE=y
CONFIG_ENV_IS_IN_MMC=y
-@@ -47,7 +66,13 @@ CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
+@@ -47,7 +68,13 @@ CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
CONFIG_NET_RANDOM_ETHADDR=y
CONFIG_REGMAP=y
CONFIG_SYSCON=y
CONFIG_MMC_HS200_SUPPORT=y
CONFIG_MMC_MTK=y
CONFIG_PHY_FIXED=y
-@@ -60,6 +85,7 @@ CONFIG_MTK_POWER_DOMAIN=y
+@@ -59,7 +86,10 @@ CONFIG_POWER_DOMAIN=y
+ CONFIG_MTK_POWER_DOMAIN=y
CONFIG_DM_REGULATOR=y
CONFIG_DM_REGULATOR_FIXED=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK_V2=y
CONFIG_DM_SERIAL=y
+CONFIG_SERIAL_RX_BUFFER=y
CONFIG_MTK_SERIAL=y
CONFIG_HEXDUMP=y
--- a/configs/mt7981_snfi_nand_rfb_defconfig
+++ b/configs/mt7981_snfi_nand_rfb_defconfig
-@@ -7,37 +7,73 @@ CONFIG_SYS_MALLOC_F_LEN=0x4000
+@@ -1,4 +1,5 @@
+ CONFIG_ARM=y
++CONFIG_ARM_SMCCC=y
+ CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+ CONFIG_POSITION_INDEPENDENT=y
+ CONFIG_ARCH_MEDIATEK=y
+@@ -7,37 +8,74 @@ CONFIG_SYS_MALLOC_F_LEN=0x4000
CONFIG_NR_DRAM_BANKS=1
CONFIG_DEFAULT_DEVICE_TREE="mt7981-snfi-nand-rfb"
# CONFIG_BOARD_INIT is not set
+CONFIG_CMD_PSTORE_MEM_ADDR=0x42ff0000
+CONFIG_CMD_UUID=y
+CONFIG_CMD_HASH=y
++CONFIG_CMD_RNG=y
CONFIG_CMD_SMC=y
+CONFIG_CMD_FS_UUID=y
CONFIG_CMD_UBI=y
# CONFIG_MMC is not set
CONFIG_MTD=y
CONFIG_DM_MTD=y
-@@ -51,6 +87,6 @@ CONFIG_PINCTRL_MT7981=y
+@@ -50,7 +88,9 @@ CONFIG_PINCONF=y
+ CONFIG_PINCTRL_MT7981=y
CONFIG_POWER_DOMAIN=y
CONFIG_MTK_POWER_DOMAIN=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK_V2=y
CONFIG_DM_SERIAL=y
+CONFIG_SERIAL_RX_BUFFER=y
CONFIG_MTK_SERIAL=y
-CONFIG_LMB_MAX_REGIONS=64
--- a/configs/mt7981_nor_rfb_defconfig
+++ b/configs/mt7981_nor_rfb_defconfig
-@@ -5,38 +5,74 @@ CONFIG_ARCH_MEDIATEK=y
+@@ -1,42 +1,80 @@
+ CONFIG_ARM=y
++CONFIG_ARM_SMCCC=y
+ CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+ CONFIG_POSITION_INDEPENDENT=y
+ CONFIG_ARCH_MEDIATEK=y
CONFIG_TEXT_BASE=0x41e00000
CONFIG_SYS_MALLOC_F_LEN=0x4000
CONFIG_NR_DRAM_BANKS=1
+CONFIG_CMD_PSTORE_MEM_ADDR=0x42ff0000
+CONFIG_CMD_UUID=y
+CONFIG_CMD_HASH=y
++CONFIG_CMD_RNG=y
CONFIG_CMD_SMC=y
+CONFIG_CMD_FS_UUID=y
CONFIG_ENV_OVERWRITE=y
# CONFIG_MMC is not set
CONFIG_MTD=y
CONFIG_DM_MTD=y
-@@ -61,9 +97,9 @@ CONFIG_PINCTRL_MT7981=y
+@@ -60,10 +98,12 @@ CONFIG_PINCONF=y
+ CONFIG_PINCTRL_MT7981=y
CONFIG_POWER_DOMAIN=y
CONFIG_MTK_POWER_DOMAIN=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK_V2=y
CONFIG_DM_SERIAL=y
+CONFIG_SERIAL_RX_BUFFER=y
CONFIG_MTK_SERIAL=y
--- /dev/null
+From 088f508b247280588517540e71370b11e5f13d6a Mon Sep 17 00:00:00 2001
+From: Daniel Golle <daniel@makrotopia.org>
+Date: Tue, 3 Mar 2026 17:14:39 +0000
+Subject: [PATCH] rng: mtk-rng: convert Linux driver to U-Boot driver model
+
+Rewrite the Mediatek hardware RNG driver for U-Boot driver model,
+replacing Linux kernel infrastructure (hwrng, platform_driver,
+pm_runtime, devm helpers) with U-Boot equivalents (dm_rng_ops,
+dev_read_addr, clk_get_by_name). Add the corresponding Kconfig
+option and Makefile entry.
+
+Signed-off-by: Daniel Golle <daniel@makrotopia.org>
+---
+ drivers/rng/Kconfig | 7 +++
+ drivers/rng/Makefile | 1 +
+ drivers/rng/mtk-rng.c | 127 ++++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 135 insertions(+)
+ create mode 100644 drivers/rng/mtk-rng.c
+
+--- a/drivers/rng/Kconfig
++++ b/drivers/rng/Kconfig
+@@ -38,6 +38,13 @@ config RNG_MSM
+ This driver provides support for the Random Number
+ Generator hardware found on Qualcomm SoCs.
+
++config RNG_MTK
++ bool "Mediatek Random Number Generator support"
++ depends on DM_RNG && ARCH_MEDIATEK
++ help
++ Enable support for the hardware random number generator
++ on Mediatek SoCs (e.g. MT7623, MT7986).
++
+ config RNG_NPCM
+ bool "Nuvoton NPCM SoCs Random Number Generator support"
+ depends on DM_RNG && !LIB_RAND
+--- a/drivers/rng/Makefile
++++ b/drivers/rng/Makefile
+@@ -7,6 +7,7 @@ obj-$(CONFIG_$(PHASE_)DM_RNG) += rng-ucl
+ obj-$(CONFIG_RNG_MESON) += meson-rng.o
+ obj-$(CONFIG_RNG_SANDBOX) += sandbox_rng.o
+ obj-$(CONFIG_RNG_MSM) += msm_rng.o
++obj-$(CONFIG_RNG_MTK) += mtk-rng.o
+ obj-$(CONFIG_RNG_NPCM) += npcm_rng.o
+ obj-$(CONFIG_RNG_OPTEE) += optee_rng.o
+ obj-$(CONFIG_RNG_STM32) += stm32_rng.o
+--- /dev/null
++++ b/drivers/rng/mtk-rng.c
+@@ -0,0 +1,128 @@
++// SPDX-License-Identifier: GPL-2.0-or-later
++/*
++ * Driver for Mediatek Hardware Random Number Generator
++ *
++ * Copyright (C) 2017 Sean Wang <sean.wang@mediatek.com>
++ *
++ * Converted from Linux to U-Boot driver model.
++ */
++
++#include <clk.h>
++#include <dm.h>
++#include <dm/device_compat.h>
++#include <linux/delay.h>
++#include <rng.h>
++#include <asm/io.h>
++#include <linux/bitops.h>
++#include <linux/iopoll.h>
++
++#define RNG_CTRL 0x00
++#define RNG_EN BIT(0)
++#define RNG_READY BIT(31)
++
++#define RNG_DATA 0x08
++
++#define RNG_POLL_US 2
++#define RNG_TIMEOUT_US 500000
++
++struct mtk_rng_priv {
++ void __iomem *base;
++ struct clk clk;
++};
++
++static int mtk_rng_read(struct udevice *dev, void *data, size_t len)
++{
++ struct mtk_rng_priv *priv = dev_get_priv(dev);
++ u32 val;
++ char *buf = data;
++ int ret;
++
++ while (len) {
++ /* Poll until RNG has data ready */
++ ret = readl_poll_sleep_timeout(priv->base + RNG_CTRL, val,
++ val & RNG_READY,
++ RNG_POLL_US, RNG_TIMEOUT_US);
++ if (ret)
++ return -EIO;
++
++ val = readl(priv->base + RNG_DATA);
++ if (len >= sizeof(u32)) {
++ *(u32 *)buf = val;
++ buf += sizeof(u32);
++ len -= sizeof(u32);
++ } else {
++ memcpy(buf, &val, len);
++ len = 0;
++ }
++ }
++
++ return 0;
++}
++
++static int mtk_rng_probe(struct udevice *dev)
++{
++ struct mtk_rng_priv *priv = dev_get_priv(dev);
++ u32 val;
++ int ret;
++
++ priv->base = dev_read_addr_ptr(dev);
++ if (!priv->base)
++ return -EINVAL;
++
++ ret = clk_get_by_name(dev, "rng", &priv->clk);
++ if (ret)
++ return ret;
++
++ ret = clk_enable(&priv->clk);
++ if (ret)
++ return ret;
++
++ /* Enable the RNG */
++ val = readl(priv->base + RNG_CTRL);
++ val |= RNG_EN;
++ writel(val, priv->base + RNG_CTRL);
++
++ /* Verify RNG_EN took effect */
++ val = readl(priv->base + RNG_CTRL);
++ if (!(val & RNG_EN)) {
++ dev_err(dev, "failed to enable RNG (CTRL=0x%08x)\n", val);
++ clk_disable(&priv->clk);
++ return -EIO;
++ }
++
++ return 0;
++}
++
++static int mtk_rng_remove(struct udevice *dev)
++{
++ struct mtk_rng_priv *priv = dev_get_priv(dev);
++ u32 val;
++
++ /* Disable the RNG */
++ val = readl(priv->base + RNG_CTRL);
++ val &= ~RNG_EN;
++ writel(val, priv->base + RNG_CTRL);
++
++ clk_disable(&priv->clk);
++
++ return 0;
++}
++
++static const struct dm_rng_ops mtk_rng_ops = {
++ .read = mtk_rng_read,
++};
++
++static const struct udevice_id mtk_rng_match[] = {
++ { .compatible = "mediatek,mt7623-rng" },
++ {},
++};
++
++U_BOOT_DRIVER(mtk_rng) = {
++ .name = "mtk-rng",
++ .id = UCLASS_RNG,
++ .of_match = mtk_rng_match,
++ .ops = &mtk_rng_ops,
++ .probe = mtk_rng_probe,
++ .remove = mtk_rng_remove,
++ .priv_auto = sizeof(struct mtk_rng_priv),
++};
--- /dev/null
+From b56ce9aeb9679e0343de539c58ed4cdfe1c83a47 Mon Sep 17 00:00:00 2001
+From: Daniel Golle <daniel@makrotopia.org>
+Date: Tue, 3 Mar 2026 17:18:51 +0000
+Subject: [PATCH] rng: mtk-rng-v2: add U-Boot driver for Mediatek TRNG via SMC
+
+On newer Mediatek SoCs (MT7981, MT7987, MT7988) the RNG hardware is
+only accessible from secure world. On MT7986 it depends on the TF-A
+release used whether direct access to the HWRNG via MMIO is possible,
+or (on newer firmware) random bytes can only be acquired using SMC.
+
+This driver obtains random data through a vendor-defined Secure
+Monitor Call to ARM Trusted Firmware.
+
+Signed-off-by: Daniel Golle <daniel@makrotopia.org>
+---
+ drivers/rng/Kconfig | 9 ++++++
+ drivers/rng/Makefile | 1 +
+ drivers/rng/mtk-rng-v2.c | 70 ++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 80 insertions(+)
+ create mode 100644 drivers/rng/mtk-rng-v2.c
+
+--- a/drivers/rng/Kconfig
++++ b/drivers/rng/Kconfig
+@@ -45,6 +45,15 @@ config RNG_MTK
+ Enable support for the hardware random number generator
+ on Mediatek SoCs (e.g. MT7623, MT7986).
+
++config RNG_MTK_V2
++ bool "Mediatek Random Number Generator support (v2/SMC)"
++ depends on DM_RNG && ARCH_MEDIATEK && ARM_SMCCC
++ help
++ Enable support for the hardware random number generator
++ on newer Mediatek SoCs (e.g. MT7981, MT7987, MT7988) where
++ the RNG is only accessible via Secure Monitor Calls to
++ ARM Trusted Firmware.
++
+ config RNG_NPCM
+ bool "Nuvoton NPCM SoCs Random Number Generator support"
+ depends on DM_RNG && !LIB_RAND
+--- a/drivers/rng/Makefile
++++ b/drivers/rng/Makefile
+@@ -8,6 +8,7 @@ obj-$(CONFIG_RNG_MESON) += meson-rng.o
+ obj-$(CONFIG_RNG_SANDBOX) += sandbox_rng.o
+ obj-$(CONFIG_RNG_MSM) += msm_rng.o
+ obj-$(CONFIG_RNG_MTK) += mtk-rng.o
++obj-$(CONFIG_RNG_MTK_V2) += mtk-rng-v2.o
+ obj-$(CONFIG_RNG_NPCM) += npcm_rng.o
+ obj-$(CONFIG_RNG_OPTEE) += optee_rng.o
+ obj-$(CONFIG_RNG_STM32) += stm32_rng.o
+--- /dev/null
++++ b/drivers/rng/mtk-rng-v2.c
+@@ -0,0 +1,70 @@
++// SPDX-License-Identifier: GPL-2.0-or-later
++/*
++ * Driver for Mediatek Hardware Random Number Generator (v2/SMC)
++ *
++ * Copyright (C) 2023 Daniel Golle <daniel@makrotopia.org>
++ *
++ * On newer Mediatek SoCs the RNG hardware is only accessible from
++ * secure world. Random numbers are obtained via a vendor-defined
++ * Secure Monitor Call handled by ARM Trusted Firmware-A.
++ *
++ * Converted from Linux to U-Boot driver model.
++ */
++
++#include <dm.h>
++#include <rng.h>
++#include <linux/arm-smccc.h>
++
++/* MediaTek SIP SMC function ID for RNG — use SMC64 on AArch64, SMC32 on AArch32 */
++#ifdef CONFIG_ARM64
++#define MTK_SIP_SMC_CONVENTION ARM_SMCCC_SMC_64
++#else
++#define MTK_SIP_SMC_CONVENTION ARM_SMCCC_SMC_32
++#endif
++
++#define MTK_SIP_TRNG_GET_RND ARM_SMCCC_CALL_VAL(ARM_SMCCC_FAST_CALL, \
++ MTK_SIP_SMC_CONVENTION, \
++ ARM_SMCCC_OWNER_SIP, 0x550)
++
++static int mtk_rng_v2_read(struct udevice *dev, void *data, size_t len)
++{
++ struct arm_smccc_res res;
++ char *buf = data;
++
++ while (len) {
++ arm_smccc_smc(MTK_SIP_TRNG_GET_RND, 0, 0, 0, 0, 0, 0, 0,
++ &res);
++ if (res.a0)
++ return -EIO;
++
++ if (len >= sizeof(u32)) {
++ *(u32 *)buf = res.a1;
++ buf += sizeof(u32);
++ len -= sizeof(u32);
++ } else {
++ memcpy(buf, &res.a1, len);
++ len = 0;
++ }
++ }
++
++ return 0;
++}
++
++static const struct dm_rng_ops mtk_rng_v2_ops = {
++ .read = mtk_rng_v2_read,
++};
++
++static const struct udevice_id mtk_rng_v2_match[] = {
++ { .compatible = "mediatek,mt7981-rng" },
++ { .compatible = "mediatek,mt7986-rng" },
++ { .compatible = "mediatek,mt7987-rng" },
++ { .compatible = "mediatek,mt7988-rng" },
++ {},
++};
++
++U_BOOT_DRIVER(mtk_rng_v2) = {
++ .name = "mtk-rng-v2",
++ .id = UCLASS_RNG,
++ .of_match = mtk_rng_v2_match,
++ .ops = &mtk_rng_v2_ops,
++};
--- /dev/null
+From 93854d4c2f6a634c90ac0f86d724478a812e081d Mon Sep 17 00:00:00 2001
+From: Daniel Golle <daniel@makrotopia.org>
+Date: Wed, 4 Mar 2026 01:36:10 +0000
+Subject: [PATCH 3/8] mediatek: mt7623: add RNG node
+
+Add node representing the hardware random number generator
+found in the MediaTek MT7623 SoC family to the corresponding
+device tree.
+
+Signed-off-by: Daniel Golle <daniel@makrotopia.org>
+---
+ arch/arm/dts/mt7623.dtsi | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+--- a/arch/arm/dts/mt7623.dtsi
++++ b/arch/arm/dts/mt7623.dtsi
+@@ -168,6 +168,13 @@
+ #clock-cells = <1>;
+ };
+
++ rng: rng@1020f000 {
++ compatible = "mediatek,mt7623-rng";
++ reg = <0x1020f000 0x1000>;
++ clocks = <&infracfg CLK_INFRA_TRNG>;
++ clock-names = "rng";
++ };
++
+ gic: interrupt-controller@10211000 {
+ compatible = "arm,cortex-a7-gic";
+ interrupt-controller;
--- /dev/null
+From 40890db6a0447632697dfaa6933099b08787218d Mon Sep 17 00:00:00 2001
+From: Daniel Golle <daniel@makrotopia.org>
+Date: Wed, 4 Mar 2026 01:34:32 +0000
+Subject: [PATCH 4/8] mediatek: mt7622: add RNG node
+
+Add node representing the hardware random number generator
+found in the MediaTek MT7622 SoC family to the corresponding
+device tree.
+
+Signed-off-by: Daniel Golle <daniel@makrotopia.org>
+---
+ arch/arm/dts/mt7622.dtsi | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+--- a/arch/arm/dts/mt7622.dtsi
++++ b/arch/arm/dts/mt7622.dtsi
+@@ -168,6 +168,13 @@
+ #clock-cells = <1>;
+ };
+
++ rng: rng@1020f000 {
++ compatible = "mediatek,mt7623-rng";
++ reg = <0x1020f000 0x1000>;
++ clocks = <&infracfg CLK_INFRA_TRNG>;
++ clock-names = "rng";
++ };
++
+ topckgen: topckgen@10210000 {
+ compatible = "mediatek,mt7622-topckgen";
+ reg = <0x10210000 0x1000>;
--- /dev/null
+From 7363cc746a12e6c62a5c44dd4aab06860978197d Mon Sep 17 00:00:00 2001
+From: Daniel Golle <daniel@makrotopia.org>
+Date: Tue, 3 Mar 2026 17:47:14 +0000
+Subject: [PATCH 5/8] mediatek: mt7986: add RNG node
+
+found in the MediaTek MT7986 SoC family to the corresponding
+device tree.
+
+Depending on whether TF-A prevents direct hardware access to the HWRNG
+via MMIO you have to enable either RNG_MTK (classic MMIO) or
+RNG_MTK_V2 (TF-A SMC).
+
+Signed-off-by: Daniel Golle <daniel@makrotopia.org>
+---
+ arch/arm/dts/mt7986.dtsi | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+--- a/arch/arm/dts/mt7986.dtsi
++++ b/arch/arm/dts/mt7986.dtsi
+@@ -186,6 +186,14 @@
+ bootph-all;
+ };
+
++ rng@1020f000 {
++ compatible = "mediatek,mt7986-rng",
++ "mediatek,mt7623-rng";
++ reg = <0x1020f000 0x100>;
++ clocks = <&infracfg CLK_INFRA_TRNG_CK>;
++ clock-names = "rng";
++ };
++
+ uart0: serial@11002000 {
+ compatible = "mediatek,hsuart";
+ reg = <0x11002000 0x400>;
--- /dev/null
+From 3c8d362f0fe6821c8e0dfc7459511c1efe5138db Mon Sep 17 00:00:00 2001
+From: Daniel Golle <daniel@makrotopia.org>
+Date: Wed, 4 Mar 2026 01:04:52 +0000
+Subject: [PATCH 6/8] mediatek: mt7981: add RNG node
+
+Add node representing the hardware random number generator
+found in the MediaTek MT7981 SoC family to the corresponding
+device tree.
+
+Signed-off-by: Daniel Golle <daniel@makrotopia.org>
+---
+ arch/arm/dts/mt7981.dtsi | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+--- a/arch/arm/dts/mt7981.dtsi
++++ b/arch/arm/dts/mt7981.dtsi
+@@ -69,6 +69,10 @@
+ reg = <0x8000000 0x1000>;
+ };
+
++ rng {
++ compatible = "mediatek,mt7981-rng";
++ };
++
+ timer {
+ compatible = "arm,armv8-timer";
+ interrupt-parent = <&gic>;
--- /dev/null
+From 12a3ccb90a3e88ac60ccb06ea3e5aa1eabe565ac Mon Sep 17 00:00:00 2001
+From: Daniel Golle <daniel@makrotopia.org>
+Date: Wed, 4 Mar 2026 01:32:35 +0000
+Subject: [PATCH 7/8] mediatek: mt7988: add RNG node
+
+Add node representing the hardware random number generator
+found in the MediaTek MT7988 SoC family to the corresponding
+device tree.
+
+Signed-off-by: Daniel Golle <daniel@makrotopia.org>
+---
+ arch/arm/dts/mt7988.dtsi | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+--- a/arch/arm/dts/mt7988.dtsi
++++ b/arch/arm/dts/mt7988.dtsi
+@@ -92,6 +92,10 @@
+ reg = <0 0x8000000 0 0x1000>;
+ };
+
++ rng {
++ compatible = "mediatek,mt7988-rng";
++ };
++
+ timer {
+ compatible = "arm,armv8-timer";
+ interrupt-parent = <&gic>;
--- /dev/null
+From fc69f2d0657697097754dcf00f0e0ee8fb28e22f Mon Sep 17 00:00:00 2001
+From: Daniel Golle <daniel@makrotopia.org>
+Date: Wed, 4 Mar 2026 01:31:28 +0000
+Subject: [PATCH 8/8] mediatek: mt7987: add RNG node
+
+Add node representing the hardware random number generator
+found in the MediaTek MT7987 SoC family to the corresponding
+device tree.
+
+Signed-off-by: Daniel Golle <daniel@makrotopia.org>
+---
+ arch/arm/dts/mt7987.dtsi | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+--- a/arch/arm/dts/mt7987.dtsi
++++ b/arch/arm/dts/mt7987.dtsi
+@@ -44,6 +44,10 @@
+ };
+ };
+
++ rng {
++ compatible = "mediatek,mt7987-rng";
++ };
++
+ cpus {
+ #address-cells = <1>;
+ #size-cells = <0>;
CONFIG_USE_IPADDR=y
CONFIG_IPADDR="192.168.1.1"
CONFIG_USE_SERVERIP=y
-@@ -42,23 +75,38 @@ CONFIG_SERVERIP="192.168.1.2"
+@@ -42,23 +75,40 @@ CONFIG_SERVERIP="192.168.1.2"
CONFIG_NET_RANDOM_ETHADDR=y
CONFIG_REGMAP=y
CONFIG_SYSCON=y
+CONFIG_DM_REGULATOR_FIXED=y
+CONFIG_DM_REGULATOR_GPIO=y
+CONFIG_SCSI=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK=y
CONFIG_DM_SERIAL=y
+CONFIG_SERIAL_RX_BUFFER=y
CONFIG_MTK_SERIAL=y
CONFIG_USE_IPADDR=y
CONFIG_IPADDR="192.168.1.1"
CONFIG_USE_SERVERIP=y
-@@ -40,23 +73,38 @@ CONFIG_SERVERIP="192.168.1.2"
+@@ -40,23 +73,40 @@ CONFIG_SERVERIP="192.168.1.2"
CONFIG_NET_RANDOM_ETHADDR=y
CONFIG_REGMAP=y
CONFIG_SYSCON=y
+CONFIG_DM_REGULATOR_FIXED=y
+CONFIG_DM_REGULATOR_GPIO=y
+CONFIG_SCSI=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK=y
CONFIG_DM_SERIAL=y
+CONFIG_SERIAL_RX_BUFFER=y
CONFIG_MTK_SERIAL=y
--- /dev/null
+++ b/configs/mt7622_bananapi_bpi-r64-sdmmc_defconfig
-@@ -0,0 +1,129 @@
+@@ -0,0 +1,132 @@
+CONFIG_ARM=y
+CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+CONFIG_POSITION_INDEPENDENT=y
+CONFIG_CMD_PSTORE_MEM_ADDR=0x42ff0000
+CONFIG_CMD_UUID=y
+CONFIG_CMD_HASH=y
++CONFIG_CMD_RNG=y
+CONFIG_CMD_SMC=y
+CONFIG_CMD_EXT4=y
+CONFIG_CMD_FAT=y
+CONFIG_DM_PWM=y
+CONFIG_PWM_MTK=y
+CONFIG_RAM=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK=y
+CONFIG_SCSI=y
+CONFIG_DM_SERIAL=y
+CONFIG_SERIAL_RX_BUFFER=y
+_bootmenu_update_title=setenv _bootmenu_update_title ; setenv bootmenu_title "$bootmenu_title \e[33m$ver\e[0m"
--- /dev/null
+++ b/configs/mt7622_bananapi_bpi-r64-emmc_defconfig
-@@ -0,0 +1,118 @@
+@@ -0,0 +1,121 @@
+CONFIG_ARM=y
+CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+CONFIG_POSITION_INDEPENDENT=y
+CONFIG_CMD_PSTORE_MEM_ADDR=0x42ff0000
+CONFIG_CMD_UUID=y
+CONFIG_CMD_HASH=y
++CONFIG_CMD_RNG=y
+CONFIG_CMD_SMC=y
+CONFIG_CMD_EXT4=y
+CONFIG_CMD_FAT=y
+CONFIG_DM_PWM=y
+CONFIG_PWM_MTK=y
+CONFIG_RAM=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK=y
+CONFIG_SCSI=y
+CONFIG_DM_SERIAL=y
+CONFIG_SERIAL_RX_BUFFER=y
+_bootmenu_update_title=setenv _bootmenu_update_title ; setenv bootmenu_title "$bootmenu_title \e[33m$ver\e[0m"
--- /dev/null
+++ b/configs/mt7622_bananapi_bpi-r64-snand_defconfig
-@@ -0,0 +1,109 @@
+@@ -0,0 +1,112 @@
+CONFIG_ARM=y
+CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+CONFIG_POSITION_INDEPENDENT=y
+CONFIG_CMD_PSTORE_MEM_ADDR=0x42ff0000
+CONFIG_CMD_UUID=y
+CONFIG_CMD_HASH=y
++CONFIG_CMD_RNG=y
+CONFIG_CMD_SMC=y
+CONFIG_CMD_FS_UUID=y
+CONFIG_CMD_UBI=y
+CONFIG_DM_REGULATOR_FIXED=y
+CONFIG_DM_REGULATOR_GPIO=y
+CONFIG_RAM=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK=y
+CONFIG_DM_SERIAL=y
+CONFIG_SERIAL_RX_BUFFER=y
+CONFIG_MTK_SERIAL=y
--- /dev/null
+++ b/configs/mt7622_linksys_e8450_defconfig
-@@ -0,0 +1,111 @@
+@@ -0,0 +1,115 @@
+CONFIG_ARM=y
+CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+CONFIG_POSITION_INDEPENDENT=y
+# CONFIG_CMD_BOOTEFI_BOOTMGR is not set
+CONFIG_CMD_BOOTMENU=y
+CONFIG_CMD_ASKENV=y
++CONFIG_CMD_DM=y
+CONFIG_CMD_ERASEENV=y
+CONFIG_CMD_ENV_FLAGS=y
+CONFIG_CMD_GPIO=y
+CONFIG_CMD_PXE=y
+CONFIG_CMD_PSTORE=y
+CONFIG_CMD_PSTORE_MEM_ADDR=0x42ff0000
++CONFIG_CMD_RNG=y
+CONFIG_CMD_UUID=y
+CONFIG_CMD_HASH=y
+CONFIG_CMD_SMC=y
+CONFIG_DM_REGULATOR_FIXED=y
+CONFIG_DM_REGULATOR_GPIO=y
+CONFIG_RAM=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK=y
+CONFIG_DM_SERIAL=y
+CONFIG_SERIAL_RX_BUFFER=y
+CONFIG_MTK_SERIAL=y
--- /dev/null
+++ b/configs/mt7622_ubnt_unifi-6-lr-v1_defconfig
-@@ -0,0 +1,113 @@
+@@ -0,0 +1,116 @@
+CONFIG_ARM=y
+CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+CONFIG_POSITION_INDEPENDENT=y
+CONFIG_CMD_PXE=y
+CONFIG_CMD_PSTORE=y
+CONFIG_CMD_PSTORE_MEM_ADDR=0x42ff0000
++CONFIG_CMD_RNG=y
+CONFIG_CMD_UUID=y
+CONFIG_CMD_HASH=y
+CONFIG_CMD_SMC=y
+CONFIG_DM_REGULATOR_FIXED=y
+CONFIG_DM_REGULATOR_GPIO=y
+CONFIG_RAM=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK=y
+CONFIG_DM_SERIAL=y
+CONFIG_SERIAL_RX_BUFFER=y
+CONFIG_MTK_SERIAL=y
+CONFIG_HEXDUMP=y
--- /dev/null
+++ b/configs/mt7622_ubnt_unifi-6-lr-v2_defconfig
-@@ -0,0 +1,113 @@
+@@ -0,0 +1,115 @@
+CONFIG_ARM=y
+CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+CONFIG_POSITION_INDEPENDENT=y
+CONFIG_DM_REGULATOR_FIXED=y
+CONFIG_DM_REGULATOR_GPIO=y
+CONFIG_RAM=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK=y
+CONFIG_DM_SERIAL=y
+CONFIG_SERIAL_RX_BUFFER=y
+CONFIG_MTK_SERIAL=y
+CONFIG_HEXDUMP=y
--- /dev/null
+++ b/configs/mt7622_ubnt_unifi-6-lr-v3_defconfig
-@@ -0,0 +1,112 @@
+@@ -0,0 +1,114 @@
+CONFIG_ARM=y
+CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+CONFIG_POSITION_INDEPENDENT=y
+CONFIG_DM_REGULATOR_FIXED=y
+CONFIG_DM_REGULATOR_GPIO=y
+CONFIG_RAM=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK=y
+CONFIG_DM_SERIAL=y
+CONFIG_SERIAL_RX_BUFFER=y
+CONFIG_MTK_SERIAL=y
--- /dev/null
+++ b/configs/mt7986_netcore_n60_defconfig
-@@ -0,0 +1,129 @@
+@@ -0,0 +1,133 @@
+CONFIG_ARM=y
++CONFIG_ARM_SMCCC=y
+CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+CONFIG_POSITION_INDEPENDENT=y
+CONFIG_ARCH_MEDIATEK=y
+CONFIG_CMD_ASKENV=y
+CONFIG_CMD_ERASEENV=y
+CONFIG_CMD_ENV_FLAGS=y
++CONFIG_CMD_RNG=y
+CONFIG_CMD_STRINGS=y
+CONFIG_CMD_DM=y
+CONFIG_CMD_GPIO=y
+CONFIG_DM_PWM=y
+CONFIG_PWM_MTK=y
+CONFIG_RAM=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK_V2=y
+CONFIG_SCSI=y
+CONFIG_DM_SERIAL=y
+CONFIG_SERIAL_RX_BUFFER=y
--- /dev/null
+++ b/configs/mt7986a_bpi-r3-emmc_defconfig
-@@ -0,0 +1,138 @@
+@@ -0,0 +1,142 @@
+CONFIG_ARM=y
++CONFIG_ARM_SMCCC=y
+CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+CONFIG_POSITION_INDEPENDENT=y
+CONFIG_ARCH_MEDIATEK=y
+CONFIG_CMD_MTD=y
+CONFIG_CMD_PART=y
+CONFIG_CMD_PCI=y
++CONFIG_CMD_RNG=y
+CONFIG_CMD_SF_TEST=y
+CONFIG_CMD_USB=y
+CONFIG_CMD_TFTPSRV=y
+CONFIG_PWM_MTK=y
+CONFIG_RAM=y
+CONFIG_SCSI=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK_V2=y
+CONFIG_DM_SERIAL=y
+CONFIG_SERIAL_RX_BUFFER=y
+CONFIG_MTK_SERIAL=y
+CONFIG_HEXDUMP=y
--- /dev/null
+++ b/configs/mt7986a_bpi-r3-nor_defconfig
-@@ -0,0 +1,137 @@
+@@ -0,0 +1,141 @@
+CONFIG_ARM=y
++CONFIG_ARM_SMCCC=y
+CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+CONFIG_POSITION_INDEPENDENT=y
+CONFIG_ARCH_MEDIATEK=y
+CONFIG_CMD_MTD=y
+CONFIG_CMD_PART=y
+CONFIG_CMD_PCI=y
++CONFIG_CMD_RNG=y
+CONFIG_CMD_SF_TEST=y
+CONFIG_CMD_USB=y
+CONFIG_CMD_TFTPSRV=y
+CONFIG_DM_PWM=y
+CONFIG_PWM_MTK=y
+CONFIG_RAM=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK_V2=y
+CONFIG_SCSI=y
+CONFIG_DM_SERIAL=y
+CONFIG_SERIAL_RX_BUFFER=y
+CONFIG_HEXDUMP=y
--- /dev/null
+++ b/configs/mt7986a_bpi-r3-sd_defconfig
-@@ -0,0 +1,138 @@
+@@ -0,0 +1,142 @@
+CONFIG_ARM=y
++CONFIG_ARM_SMCCC=y
+CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+CONFIG_POSITION_INDEPENDENT=y
+CONFIG_ARCH_MEDIATEK=y
+CONFIG_CMD_MTD=y
+CONFIG_CMD_PART=y
+CONFIG_CMD_PCI=y
++CONFIG_CMD_RNG=y
+CONFIG_CMD_SF_TEST=y
+CONFIG_CMD_USB=y
+CONFIG_CMD_TFTPSRV=y
+CONFIG_DM_PWM=y
+CONFIG_PWM_MTK=y
+CONFIG_RAM=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK_V2=y
+CONFIG_SCSI=y
+CONFIG_DM_SERIAL=y
+CONFIG_SERIAL_RX_BUFFER=y
+CONFIG_HEXDUMP=y
--- /dev/null
+++ b/configs/mt7986a_bpi-r3-snand_defconfig
-@@ -0,0 +1,133 @@
+@@ -0,0 +1,137 @@
+CONFIG_ARM=y
++CONFIG_ARM_SMCCC=y
+CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+CONFIG_POSITION_INDEPENDENT=y
+CONFIG_ARCH_MEDIATEK=y
+CONFIG_CMD_MTD=y
+CONFIG_CMD_PART=y
+CONFIG_CMD_PCI=y
++CONFIG_CMD_RNG=y
+CONFIG_CMD_USB=y
+CONFIG_CMD_TFTPSRV=y
+CONFIG_CMD_RARP=y
+CONFIG_DM_PWM=y
+CONFIG_PWM_MTK=y
+CONFIG_RAM=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK_V2=y
+CONFIG_SCSI=y
+CONFIG_DM_SERIAL=y
+CONFIG_SERIAL_RX_BUFFER=y
--- /dev/null
+++ b/configs/mt7986_xiaomi_redmi-ax6000_defconfig
-@@ -0,0 +1,105 @@
+@@ -0,0 +1,109 @@
+CONFIG_ARM=y
++CONFIG_ARM_SMCCC=y
+CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+CONFIG_POSITION_INDEPENDENT=y
+CONFIG_ARCH_MEDIATEK=y
+CONFIG_CMD_ASKENV=y
+CONFIG_CMD_ERASEENV=y
+CONFIG_CMD_ENV_FLAGS=y
++CONFIG_CMD_RNG=y
+CONFIG_CMD_STRINGS=y
+CONFIG_CMD_DM=y
+CONFIG_CMD_GPIO=y
+CONFIG_DM_REGULATOR_FIXED=y
+CONFIG_DM_REGULATOR_GPIO=y
+CONFIG_RAM=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK_V2=y
+CONFIG_DM_SERIAL=y
+CONFIG_SERIAL_RX_BUFFER=y
+CONFIG_MTK_SERIAL=y
--- /dev/null
+++ b/configs/mt7986_tplink_tl-xdr4288_defconfig
-@@ -0,0 +1,129 @@
+@@ -0,0 +1,133 @@
+CONFIG_ARM=y
++CONFIG_ARM_SMCCC=y
+CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+CONFIG_POSITION_INDEPENDENT=y
+CONFIG_ARCH_MEDIATEK=y
+CONFIG_CMD_ASKENV=y
+CONFIG_CMD_ERASEENV=y
+CONFIG_CMD_ENV_FLAGS=y
++CONFIG_CMD_RNG=y
+CONFIG_CMD_STRINGS=y
+CONFIG_CMD_DM=y
+CONFIG_CMD_GPIO=y
+CONFIG_DM_PWM=y
+CONFIG_PWM_MTK=y
+CONFIG_RAM=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK_V2=y
+CONFIG_SCSI=y
+CONFIG_DM_SERIAL=y
+CONFIG_SERIAL_RX_BUFFER=y
+CONFIG_HEXDUMP=y
--- /dev/null
+++ b/configs/mt7986_tplink_tl-xdr6086_defconfig
-@@ -0,0 +1,129 @@
+@@ -0,0 +1,133 @@
+CONFIG_ARM=y
++CONFIG_ARM_SMCCC=y
+CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+CONFIG_POSITION_INDEPENDENT=y
+CONFIG_ARCH_MEDIATEK=y
+CONFIG_CMD_ASKENV=y
+CONFIG_CMD_ERASEENV=y
+CONFIG_CMD_ENV_FLAGS=y
++CONFIG_CMD_RNG=y
+CONFIG_CMD_STRINGS=y
+CONFIG_CMD_DM=y
+CONFIG_CMD_GPIO=y
+CONFIG_DM_PWM=y
+CONFIG_PWM_MTK=y
+CONFIG_RAM=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK_V2=y
+CONFIG_SCSI=y
+CONFIG_DM_SERIAL=y
+CONFIG_SERIAL_RX_BUFFER=y
+CONFIG_HEXDUMP=y
--- /dev/null
+++ b/configs/mt7986_tplink_tl-xdr6088_defconfig
-@@ -0,0 +1,129 @@
+@@ -0,0 +1,133 @@
+CONFIG_ARM=y
++CONFIG_ARM_SMCCC=y
+CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+CONFIG_POSITION_INDEPENDENT=y
+CONFIG_ARCH_MEDIATEK=y
+CONFIG_CMD_ASKENV=y
+CONFIG_CMD_ERASEENV=y
+CONFIG_CMD_ENV_FLAGS=y
++CONFIG_CMD_RNG=y
+CONFIG_CMD_STRINGS=y
+CONFIG_CMD_DM=y
+CONFIG_CMD_GPIO=y
+CONFIG_DM_PWM=y
+CONFIG_PWM_MTK=y
+CONFIG_RAM=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK_V2=y
+CONFIG_SCSI=y
+CONFIG_DM_SERIAL=y
+CONFIG_SERIAL_RX_BUFFER=y
--- /dev/null
+++ b/configs/mt7981_qihoo-360t7_defconfig
-@@ -0,0 +1,124 @@
+@@ -0,0 +1,128 @@
+CONFIG_ARM=y
++CONFIG_ARM_SMCCC=y
+CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+CONFIG_POSITION_INDEPENDENT=y
+CONFIG_ARCH_MEDIATEK=y
+CONFIG_CMD_ASKENV=y
+CONFIG_CMD_ERASEENV=y
+CONFIG_CMD_ENV_FLAGS=y
++CONFIG_CMD_RNG=y
+CONFIG_CMD_STRINGS=y
+CONFIG_CMD_DM=y
+CONFIG_CMD_GPIO=y
+CONFIG_DM_PWM=y
+CONFIG_PWM_MTK=y
+CONFIG_RAM=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK_V2=y
+CONFIG_SCSI=y
+CONFIG_DM_SERIAL=y
+CONFIG_SERIAL_RX_BUFFER=y
--- /dev/null
+++ b/configs/mt7981_xiaomi_mi-router-wr30u_defconfig
-@@ -0,0 +1,124 @@
+@@ -0,0 +1,128 @@
+CONFIG_ARM=y
++CONFIG_ARM_SMCCC=y
+CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+CONFIG_POSITION_INDEPENDENT=y
+CONFIG_ARCH_MEDIATEK=y
+CONFIG_CMD_ASKENV=y
+CONFIG_CMD_ERASEENV=y
+CONFIG_CMD_ENV_FLAGS=y
++CONFIG_CMD_RNG=y
+CONFIG_CMD_STRINGS=y
+CONFIG_CMD_DM=y
+CONFIG_CMD_GPIO=y
+CONFIG_DM_PWM=y
+CONFIG_PWM_MTK=y
+CONFIG_RAM=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK_V2=y
+CONFIG_SCSI=y
+CONFIG_DM_SERIAL=y
+CONFIG_SERIAL_RX_BUFFER=y
--- /dev/null
+++ b/configs/mt7981_h3c_magic-nx30-pro_defconfig
-@@ -0,0 +1,124 @@
+@@ -0,0 +1,128 @@
+CONFIG_ARM=y
++CONFIG_ARM_SMCCC=y
+CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+CONFIG_POSITION_INDEPENDENT=y
+CONFIG_ARCH_MEDIATEK=y
+CONFIG_CMD_ASKENV=y
+CONFIG_CMD_ERASEENV=y
+CONFIG_CMD_ENV_FLAGS=y
++CONFIG_CMD_RNG=y
+CONFIG_CMD_STRINGS=y
+CONFIG_CMD_DM=y
+CONFIG_CMD_GPIO=y
+CONFIG_DM_PWM=y
+CONFIG_PWM_MTK=y
+CONFIG_RAM=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK_V2=y
+CONFIG_SCSI=y
+CONFIG_DM_SERIAL=y
+CONFIG_SERIAL_RX_BUFFER=y
+};
--- /dev/null
+++ b/configs/mt7986a_glinet_gl-mt6000_defconfig
-@@ -0,0 +1,105 @@
+@@ -0,0 +1,109 @@
+CONFIG_ARM=y
++CONFIG_ARM_SMCCC=y
+CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+CONFIG_POSITION_INDEPENDENT=y
+CONFIG_ARCH_MEDIATEK=y
+CONFIG_CMD_ASKENV=y
+CONFIG_CMD_ERASEENV=y
+CONFIG_CMD_ENV_FLAGS=y
++CONFIG_CMD_RNG=y
+CONFIG_CMD_STRINGS=y
+CONFIG_CMD_DM=y
+CONFIG_CMD_GPIO=y
+CONFIG_DM_PWM=y
+CONFIG_PWM_MTK=y
+CONFIG_RAM=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK_V2=y
+CONFIG_DM_SERIAL=y
+CONFIG_SERIAL_RX_BUFFER=y
+CONFIG_MTK_SERIAL=y
--- /dev/null
+++ b/configs/mt7981_cmcc_rax3000m-emmc_defconfig
-@@ -0,0 +1,124 @@
+@@ -0,0 +1,128 @@
+CONFIG_ARM=y
++CONFIG_ARM_SMCCC=y
+CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+CONFIG_POSITION_INDEPENDENT=y
+CONFIG_ARCH_MEDIATEK=y
+CONFIG_CMD_ASKENV=y
+CONFIG_CMD_ERASEENV=y
+CONFIG_CMD_ENV_FLAGS=y
++CONFIG_CMD_RNG=y
+CONFIG_CMD_STRINGS=y
+CONFIG_CMD_DM=y
+CONFIG_CMD_GPIO=y
+CONFIG_DM_PWM=y
+CONFIG_PWM_MTK=y
+CONFIG_RAM=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK_V2=y
+CONFIG_SCSI=y
+CONFIG_DM_SERIAL=y
+CONFIG_SERIAL_RX_BUFFER=y
+CONFIG_HEXDUMP=y
--- /dev/null
+++ b/configs/mt7981_cmcc_rax3000m-nand_defconfig
-@@ -0,0 +1,124 @@
+@@ -0,0 +1,128 @@
+CONFIG_ARM=y
++CONFIG_ARM_SMCCC=y
+CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+CONFIG_POSITION_INDEPENDENT=y
+CONFIG_ARCH_MEDIATEK=y
+CONFIG_CMD_ASKENV=y
+CONFIG_CMD_ERASEENV=y
+CONFIG_CMD_ENV_FLAGS=y
++CONFIG_CMD_RNG=y
+CONFIG_CMD_STRINGS=y
+CONFIG_CMD_DM=y
+CONFIG_CMD_GPIO=y
+CONFIG_DM_PWM=y
+CONFIG_PWM_MTK=y
+CONFIG_RAM=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK_V2=y
+CONFIG_SCSI=y
+CONFIG_DM_SERIAL=y
+CONFIG_SERIAL_RX_BUFFER=y
--- /dev/null
+++ b/configs/mt7981_jcg_q30-pro_defconfig
-@@ -0,0 +1,124 @@
+@@ -0,0 +1,128 @@
+CONFIG_ARM=y
++CONFIG_ARM_SMCCC=y
+CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+CONFIG_POSITION_INDEPENDENT=y
+CONFIG_ARCH_MEDIATEK=y
+CONFIG_CMD_ASKENV=y
+CONFIG_CMD_ERASEENV=y
+CONFIG_CMD_ENV_FLAGS=y
++CONFIG_CMD_RNG=y
+CONFIG_CMD_STRINGS=y
+CONFIG_CMD_DM=y
+CONFIG_CMD_GPIO=y
+CONFIG_DM_PWM=y
+CONFIG_PWM_MTK=y
+CONFIG_RAM=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK_V2=y
+CONFIG_SCSI=y
+CONFIG_DM_SERIAL=y
+CONFIG_SERIAL_RX_BUFFER=y
--- /dev/null
+++ b/configs/mt7986_zyxel_ex5601-t0_defconfig
-@@ -0,0 +1,129 @@
+@@ -0,0 +1,133 @@
+CONFIG_ARM=y
++CONFIG_ARM_SMCCC=y
+CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+CONFIG_POSITION_INDEPENDENT=y
+CONFIG_ARCH_MEDIATEK=y
+CONFIG_CMD_ASKENV=y
+CONFIG_CMD_ERASEENV=y
+CONFIG_CMD_ENV_FLAGS=y
++CONFIG_CMD_RNG=y
+CONFIG_CMD_STRINGS=y
+CONFIG_CMD_DM=y
+CONFIG_CMD_GPIO=y
+CONFIG_DM_PWM=y
+CONFIG_PWM_MTK=y
+CONFIG_RAM=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK_V2=y
+CONFIG_SCSI=y
+CONFIG_DM_SERIAL=y
+CONFIG_SERIAL_RX_BUFFER=y
--- /dev/null
+++ b/configs/mt7981_xiaomi_mi-router-ax3000t_defconfig
-@@ -0,0 +1,108 @@
+@@ -0,0 +1,112 @@
+CONFIG_ARM=y
++CONFIG_ARM_SMCCC=y
+CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+CONFIG_POSITION_INDEPENDENT=y
+CONFIG_ARCH_MEDIATEK=y
+CONFIG_CMD_ASKENV=y
+CONFIG_CMD_ERASEENV=y
+CONFIG_CMD_ENV_FLAGS=y
++CONFIG_CMD_RNG=y
+CONFIG_CMD_STRINGS=y
+CONFIG_CMD_DM=y
+CONFIG_CMD_GPIO=y
+CONFIG_DM_REGULATOR_FIXED=y
+CONFIG_DM_REGULATOR_GPIO=y
+CONFIG_RAM=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK_V2=y
+CONFIG_DM_SERIAL=y
+CONFIG_SERIAL_RX_BUFFER=y
+CONFIG_MTK_SERIAL=y
--- /dev/null
+++ b/configs/mt7986a_jdcloud_re-cp-03_defconfig
-@@ -0,0 +1,111 @@
+@@ -0,0 +1,115 @@
+CONFIG_ARM=y
++CONFIG_ARM_SMCCC=y
+CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+CONFIG_POSITION_INDEPENDENT=y
+CONFIG_ARCH_MEDIATEK=y
+CONFIG_CMD_ASKENV=y
+CONFIG_CMD_ERASEENV=y
+CONFIG_CMD_ENV_FLAGS=y
++CONFIG_CMD_RNG=y
+CONFIG_CMD_STRINGS=y
+CONFIG_CMD_DM=y
+CONFIG_CMD_GPIO=y
+CONFIG_DM_PWM=y
+CONFIG_PWM_MTK=y
+CONFIG_RAM=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK_V2=y
+CONFIG_SCSI=y
+CONFIG_DM_SERIAL=y
+CONFIG_SERIAL_RX_BUFFER=y
--- /dev/null
+++ b/configs/mt7986a_bpi-r3-mini-emmc_defconfig
-@@ -0,0 +1,145 @@
+@@ -0,0 +1,149 @@
+CONFIG_ARM=y
++CONFIG_ARM_SMCCC=y
+CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+CONFIG_POSITION_INDEPENDENT=y
+CONFIG_ARCH_MEDIATEK=y
+CONFIG_CMD_ASKENV=y
+CONFIG_CMD_ERASEENV=y
+CONFIG_CMD_ENV_FLAGS=y
++CONFIG_CMD_RNG=y
+CONFIG_CMD_STRINGS=y
+CONFIG_CMD_DM=y
+CONFIG_CMD_GPIO=y
+CONFIG_DM_PWM=y
+CONFIG_PWM_MTK=y
+CONFIG_RAM=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK_V2=y
+CONFIG_SCSI=y
+CONFIG_DM_SERIAL=y
+CONFIG_SERIAL_RX_BUFFER=y
+CONFIG_HEXDUMP=y
--- /dev/null
+++ b/configs/mt7986a_bpi-r3-mini-snand_defconfig
-@@ -0,0 +1,138 @@
+@@ -0,0 +1,142 @@
+CONFIG_ARM=y
++CONFIG_ARM_SMCCC=y
+CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+CONFIG_POSITION_INDEPENDENT=y
+CONFIG_ARCH_MEDIATEK=y
+CONFIG_CMD_ASKENV=y
+CONFIG_CMD_ERASEENV=y
+CONFIG_CMD_ENV_FLAGS=y
++CONFIG_CMD_RNG=y
+CONFIG_CMD_STRINGS=y
+CONFIG_CMD_DM=y
+CONFIG_CMD_GPIO=y
+CONFIG_DM_PWM=y
+CONFIG_PWM_MTK=y
+CONFIG_RAM=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK_V2=y
+CONFIG_SCSI=y
+CONFIG_DM_SERIAL=y
+CONFIG_SERIAL_RX_BUFFER=y
--- /dev/null
+++ b/configs/mt7981_nokia_ea0326gmp_defconfig
-@@ -0,0 +1,108 @@
+@@ -0,0 +1,112 @@
+CONFIG_ARM=y
++CONFIG_ARM_SMCCC=y
+CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+CONFIG_POSITION_INDEPENDENT=y
+CONFIG_ARCH_MEDIATEK=y
+CONFIG_CMD_ASKENV=y
+CONFIG_CMD_ERASEENV=y
+CONFIG_CMD_ENV_FLAGS=y
++CONFIG_CMD_RNG=y
+CONFIG_CMD_STRINGS=y
+CONFIG_CMD_DM=y
+CONFIG_CMD_GPIO=y
+CONFIG_DM_REGULATOR_FIXED=y
+CONFIG_DM_REGULATOR_GPIO=y
+CONFIG_RAM=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK_V2=y
+CONFIG_DM_SERIAL=y
+CONFIG_SERIAL_RX_BUFFER=y
+CONFIG_MTK_SERIAL=y
--- /dev/null
+++ b/configs/mt7981_abt_asr3000_defconfig
-@@ -0,0 +1,108 @@
+@@ -0,0 +1,112 @@
+CONFIG_ARM=y
++CONFIG_ARM_SMCCC=y
+CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+CONFIG_POSITION_INDEPENDENT=y
+CONFIG_ARCH_MEDIATEK=y
+CONFIG_CMD_ASKENV=y
+CONFIG_CMD_ERASEENV=y
+CONFIG_CMD_ENV_FLAGS=y
++CONFIG_CMD_RNG=y
+CONFIG_CMD_STRINGS=y
+CONFIG_CMD_DM=y
+CONFIG_CMD_GPIO=y
+CONFIG_DM_REGULATOR_FIXED=y
+CONFIG_DM_REGULATOR_GPIO=y
+CONFIG_RAM=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK_V2=y
+CONFIG_DM_SERIAL=y
+CONFIG_SERIAL_RX_BUFFER=y
+CONFIG_MTK_SERIAL=y
--- /dev/null
+++ b/configs/mt7981_cudy_tr3000-v1_defconfig
-@@ -0,0 +1,108 @@
+@@ -0,0 +1,112 @@
+CONFIG_ARM=y
++CONFIG_ARM_SMCCC=y
+CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+CONFIG_POSITION_INDEPENDENT=y
+CONFIG_ARCH_MEDIATEK=y
+CONFIG_CMD_ASKENV=y
+CONFIG_CMD_ERASEENV=y
+CONFIG_CMD_ENV_FLAGS=y
++CONFIG_CMD_RNG=y
+CONFIG_CMD_STRINGS=y
+CONFIG_CMD_DM=y
+CONFIG_CMD_GPIO=y
+CONFIG_DM_REGULATOR_FIXED=y
+CONFIG_DM_REGULATOR_GPIO=y
+CONFIG_RAM=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK_V2=y
+CONFIG_DM_SERIAL=y
+CONFIG_SERIAL_RX_BUFFER=y
+CONFIG_MTK_SERIAL=y
--- /dev/null
+++ b/configs/mt7981_netis_nx31_defconfig
-@@ -0,0 +1,107 @@
+@@ -0,0 +1,111 @@
+CONFIG_ARM=y
++CONFIG_ARM_SMCCC=y
+CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+CONFIG_POSITION_INDEPENDENT=y
+CONFIG_ARCH_MEDIATEK=y
+CONFIG_CMD_ASKENV=y
+CONFIG_CMD_ERASEENV=y
+CONFIG_CMD_ENV_FLAGS=y
++CONFIG_CMD_RNG=y
+CONFIG_CMD_STRINGS=y
+CONFIG_CMD_DM=y
+CONFIG_CMD_GPIO=y
+CONFIG_DM_REGULATOR_FIXED=y
+CONFIG_DM_REGULATOR_GPIO=y
+CONFIG_RAM=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK_V2=y
+CONFIG_DM_SERIAL=y
+CONFIG_SERIAL_RX_BUFFER=y
+CONFIG_MTK_SERIAL=y
--- /dev/null
+++ b/configs/mt7981_netis_nx32u_defconfig
-@@ -0,0 +1,108 @@
+@@ -0,0 +1,112 @@
+CONFIG_ARM=y
++CONFIG_ARM_SMCCC=y
+CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+CONFIG_POSITION_INDEPENDENT=y
+CONFIG_ARCH_MEDIATEK=y
+CONFIG_CMD_ASKENV=y
+CONFIG_CMD_ERASEENV=y
+CONFIG_CMD_ENV_FLAGS=y
++CONFIG_CMD_RNG=y
+CONFIG_CMD_STRINGS=y
+CONFIG_CMD_DM=y
+CONFIG_CMD_GPIO=y
+CONFIG_DM_REGULATOR_FIXED=y
+CONFIG_DM_REGULATOR_GPIO=y
+CONFIG_RAM=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK_V2=y
+CONFIG_DM_SERIAL=y
+CONFIG_SERIAL_RX_BUFFER=y
+CONFIG_MTK_SERIAL=y
--- /dev/null
+++ b/configs/mt7981_cmcc_a10_defconfig
-@@ -0,0 +1,107 @@
+@@ -0,0 +1,111 @@
+CONFIG_ARM=y
++CONFIG_ARM_SMCCC=y
+CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+CONFIG_POSITION_INDEPENDENT=y
+CONFIG_ARCH_MEDIATEK=y
+CONFIG_CMD_ASKENV=y
+CONFIG_CMD_ERASEENV=y
+CONFIG_CMD_ENV_FLAGS=y
++CONFIG_CMD_RNG=y
+CONFIG_CMD_STRINGS=y
+CONFIG_CMD_DM=y
+CONFIG_CMD_GPIO=y
+CONFIG_DM_REGULATOR_FIXED=y
+CONFIG_DM_REGULATOR_GPIO=y
+CONFIG_RAM=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK_V2=y
+CONFIG_DM_SERIAL=y
+CONFIG_MTK_SERIAL=y
+CONFIG_SPI=y
--- /dev/null
+++ b/configs/mt7981_konka_komi-a31_defconfig
-@@ -0,0 +1,108 @@
+@@ -0,0 +1,112 @@
+CONFIG_ARM=y
++CONFIG_ARM_SMCCC=y
+CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+CONFIG_POSITION_INDEPENDENT=y
+CONFIG_ARCH_MEDIATEK=y
+CONFIG_CMD_ASKENV=y
+CONFIG_CMD_ERASEENV=y
+CONFIG_CMD_ENV_FLAGS=y
++CONFIG_CMD_RNG=y
+CONFIG_CMD_STRINGS=y
+CONFIG_CMD_DM=y
+CONFIG_CMD_GPIO=y
+CONFIG_DM_REGULATOR_FIXED=y
+CONFIG_DM_REGULATOR_GPIO=y
+CONFIG_RAM=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK_V2=y
+CONFIG_DM_SERIAL=y
+CONFIG_SERIAL_RX_BUFFER=y
+CONFIG_MTK_SERIAL=y
+};
--- /dev/null
+++ b/configs/mt7981_comfast_cf-wr632ax_defconfig
-@@ -0,0 +1,107 @@
+@@ -0,0 +1,111 @@
+CONFIG_ARM=y
++CONFIG_ARM_SMCCC=y
+CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+CONFIG_POSITION_INDEPENDENT=y
+CONFIG_ARCH_MEDIATEK=y
+CONFIG_CMD_ASKENV=y
+CONFIG_CMD_ERASEENV=y
+CONFIG_CMD_ENV_FLAGS=y
++CONFIG_CMD_RNG=y
+CONFIG_CMD_STRINGS=y
+CONFIG_CMD_DM=y
+CONFIG_CMD_GPIO=y
+CONFIG_DM_REGULATOR_FIXED=y
+CONFIG_DM_REGULATOR_GPIO=y
+CONFIG_RAM=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK_V2=y
+CONFIG_DM_SERIAL=y
+CONFIG_MTK_SERIAL=y
+CONFIG_SPI=y
--- /dev/null
+++ b/configs/mt7981_cudy_wbr3000uax-v1_defconfig
-@@ -0,0 +1,108 @@
+@@ -0,0 +1,112 @@
+CONFIG_ARM=y
++CONFIG_ARM_SMCCC=y
+CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+CONFIG_POSITION_INDEPENDENT=y
+CONFIG_ARCH_MEDIATEK=y
+CONFIG_CMD_ASKENV=y
+CONFIG_CMD_ERASEENV=y
+CONFIG_CMD_ENV_FLAGS=y
++CONFIG_CMD_RNG=y
+CONFIG_CMD_STRINGS=y
+CONFIG_CMD_DM=y
+CONFIG_CMD_GPIO=y
+CONFIG_DM_REGULATOR_FIXED=y
+CONFIG_DM_REGULATOR_GPIO=y
+CONFIG_RAM=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK_V2=y
+CONFIG_DM_SERIAL=y
+CONFIG_SERIAL_RX_BUFFER=y
+CONFIG_MTK_SERIAL=y
--- /dev/null
+++ b/configs/mt7988a_bananapi_bpi-r4-emmc_defconfig
-@@ -0,0 +1,140 @@
+@@ -0,0 +1,144 @@
+CONFIG_ARM=y
++CONFIG_ARM_SMCCC=y
+CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+CONFIG_POSITION_INDEPENDENT=y
+CONFIG_ARCH_MEDIATEK=y
+CONFIG_CMD_ASKENV=y
+CONFIG_CMD_ERASEENV=y
+CONFIG_CMD_ENV_FLAGS=y
++CONFIG_CMD_RNG=y
+CONFIG_CMD_STRINGS=y
+CONFIG_CMD_DM=y
+CONFIG_CMD_GPIO=y
+CONFIG_DM_PWM=y
+CONFIG_PWM_MTK=y
+CONFIG_RAM=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK_V2=y
+CONFIG_SCSI=y
+CONFIG_DM_SERIAL=y
+CONFIG_SERIAL_RX_BUFFER=y
+CONFIG_HEXDUMP=y
--- /dev/null
+++ b/configs/mt7988a_bananapi_bpi-r4-sdmmc_defconfig
-@@ -0,0 +1,139 @@
+@@ -0,0 +1,143 @@
+CONFIG_ARM=y
++CONFIG_ARM_SMCCC=y
+CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+CONFIG_POSITION_INDEPENDENT=y
+CONFIG_ARCH_MEDIATEK=y
+CONFIG_CMD_ASKENV=y
+CONFIG_CMD_ERASEENV=y
+CONFIG_CMD_ENV_FLAGS=y
++CONFIG_CMD_RNG=y
+CONFIG_CMD_STRINGS=y
+CONFIG_CMD_DM=y
+CONFIG_CMD_GPIO=y
+CONFIG_DM_PWM=y
+CONFIG_PWM_MTK=y
+CONFIG_RAM=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK_V2=y
+CONFIG_SCSI=y
+CONFIG_DM_SERIAL=y
+CONFIG_SERIAL_RX_BUFFER=y
+CONFIG_HEXDUMP=y
--- /dev/null
+++ b/configs/mt7988a_bananapi_bpi-r4-snand_defconfig
-@@ -0,0 +1,140 @@
+@@ -0,0 +1,144 @@
+CONFIG_ARM=y
++CONFIG_ARM_SMCCC=y
+CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+CONFIG_POSITION_INDEPENDENT=y
+CONFIG_ARCH_MEDIATEK=y
+CONFIG_CMD_ASKENV=y
+CONFIG_CMD_ERASEENV=y
+CONFIG_CMD_ENV_FLAGS=y
++CONFIG_CMD_RNG=y
+CONFIG_CMD_STRINGS=y
+CONFIG_CMD_DM=y
+CONFIG_CMD_GPIO=y
+CONFIG_DM_PWM=y
+CONFIG_PWM_MTK=y
+CONFIG_RAM=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK_V2=y
+CONFIG_SCSI=y
+CONFIG_DM_SERIAL=y
+CONFIG_SERIAL_RX_BUFFER=y
+};
--- /dev/null
+++ b/configs/mt7988a_bananapi_bpi-r4-poe-emmc_defconfig
-@@ -0,0 +1,140 @@
+@@ -0,0 +1,144 @@
+CONFIG_ARM=y
++CONFIG_ARM_SMCCC=y
+CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+CONFIG_POSITION_INDEPENDENT=y
+CONFIG_ARCH_MEDIATEK=y
+CONFIG_CMD_ASKENV=y
+CONFIG_CMD_ERASEENV=y
+CONFIG_CMD_ENV_FLAGS=y
++CONFIG_CMD_RNG=y
+CONFIG_CMD_STRINGS=y
+CONFIG_CMD_DM=y
+CONFIG_CMD_GPIO=y
+CONFIG_DM_PWM=y
+CONFIG_PWM_MTK=y
+CONFIG_RAM=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK_V2=y
+CONFIG_SCSI=y
+CONFIG_DM_SERIAL=y
+CONFIG_SERIAL_RX_BUFFER=y
+CONFIG_HEXDUMP=y
--- /dev/null
+++ b/configs/mt7988a_bananapi_bpi-r4-poe-sdmmc_defconfig
-@@ -0,0 +1,139 @@
+@@ -0,0 +1,143 @@
+CONFIG_ARM=y
++CONFIG_ARM_SMCCC=y
+CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+CONFIG_POSITION_INDEPENDENT=y
+CONFIG_ARCH_MEDIATEK=y
+CONFIG_CMD_ASKENV=y
+CONFIG_CMD_ERASEENV=y
+CONFIG_CMD_ENV_FLAGS=y
++CONFIG_CMD_RNG=y
+CONFIG_CMD_STRINGS=y
+CONFIG_CMD_DM=y
+CONFIG_CMD_GPIO=y
+CONFIG_DM_PWM=y
+CONFIG_PWM_MTK=y
+CONFIG_RAM=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK_V2=y
+CONFIG_SCSI=y
+CONFIG_DM_SERIAL=y
+CONFIG_SERIAL_RX_BUFFER=y
+CONFIG_HEXDUMP=y
--- /dev/null
+++ b/configs/mt7988a_bananapi_bpi-r4-poe-snand_defconfig
-@@ -0,0 +1,140 @@
+@@ -0,0 +1,144 @@
+CONFIG_ARM=y
++CONFIG_ARM_SMCCC=y
+CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+CONFIG_POSITION_INDEPENDENT=y
+CONFIG_ARCH_MEDIATEK=y
+CONFIG_CMD_ASKENV=y
+CONFIG_CMD_ERASEENV=y
+CONFIG_CMD_ENV_FLAGS=y
++CONFIG_CMD_RNG=y
+CONFIG_CMD_STRINGS=y
+CONFIG_CMD_DM=y
+CONFIG_CMD_GPIO=y
+CONFIG_DM_PWM=y
+CONFIG_PWM_MTK=y
+CONFIG_RAM=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK_V2=y
+CONFIG_SCSI=y
+CONFIG_DM_SERIAL=y
+CONFIG_SERIAL_RX_BUFFER=y
--- /dev/null
+++ b/configs/mt7986_tplink_tl-xtr8488_defconfig
-@@ -0,0 +1,129 @@
+@@ -0,0 +1,133 @@
+CONFIG_ARM=y
++CONFIG_ARM_SMCCC=y
+CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+CONFIG_POSITION_INDEPENDENT=y
+CONFIG_ARCH_MEDIATEK=y
+CONFIG_CMD_ASKENV=y
+CONFIG_CMD_ERASEENV=y
+CONFIG_CMD_ENV_FLAGS=y
++CONFIG_CMD_RNG=y
+CONFIG_CMD_STRINGS=y
+CONFIG_CMD_DM=y
+CONFIG_CMD_GPIO=y
+CONFIG_DM_PWM=y
+CONFIG_PWM_MTK=y
+CONFIG_RAM=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK_V2=y
+CONFIG_SCSI=y
+CONFIG_DM_SERIAL=y
+CONFIG_SERIAL_RX_BUFFER=y
+};
--- /dev/null
+++ b/configs/mt7622_xiaomi_redmi-router-ax6s-ubi-loader_defconfig
-@@ -0,0 +1,99 @@
+@@ -0,0 +1,102 @@
+CONFIG_ARM=y
+CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+CONFIG_POSITION_INDEPENDENT=y
+CONFIG_CMD_FS_UUID=y
+CONFIG_CMD_MTDPARTS=y
+CONFIG_MTDPARTS_DEFAULT="mtdparts=spi-nand0:512k(preloader),2816k(reserved),117248k(ubi)"
++CONFIG_CMD_RNG=y
+CONFIG_CMD_UBI=y
+CONFIG_CMD_UBI_RENAME=y
+CONFIG_DOS_PARTITION=y
+CONFIG_DM_REGULATOR_FIXED=y
+CONFIG_DM_REGULATOR_GPIO=y
+CONFIG_RAM=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK=y
+CONFIG_DM_SERIAL=y
+CONFIG_SERIAL_RX_BUFFER=y
+CONFIG_MTK_SERIAL=y
+};
--- /dev/null
+++ b/configs/mt7981_openwrt-one-nor_defconfig
-@@ -0,0 +1,126 @@
+@@ -0,0 +1,130 @@
+CONFIG_ARM=y
++CONFIG_ARM_SMCCC=y
+CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+CONFIG_POSITION_INDEPENDENT=y
+CONFIG_ARCH_MEDIATEK=y
+CONFIG_CMD_ASKENV=y
+CONFIG_CMD_ERASEENV=y
+CONFIG_CMD_ENV_FLAGS=y
++CONFIG_CMD_RNG=y
+CONFIG_CMD_STRINGS=y
+# CONFIG_CMD_UNLZ4 is not set
+# CONFIG_CMD_UNZIP is not set
+CONFIG_MTK_POWER_DOMAIN=y
+CONFIG_DM_PWM=y
+CONFIG_PWM_MTK=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK_V2=y
+CONFIG_DM_SERIAL=y
+CONFIG_SERIAL_RX_BUFFER=y
+CONFIG_MTK_SERIAL=y
+CONFIG_HEXDUMP=y
--- /dev/null
+++ b/configs/mt7981_openwrt-one-spi-nand_defconfig
-@@ -0,0 +1,127 @@
+@@ -0,0 +1,131 @@
+CONFIG_ARM=y
++CONFIG_ARM_SMCCC=y
+CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+CONFIG_POSITION_INDEPENDENT=y
+CONFIG_ARCH_MEDIATEK=y
+CONFIG_CMD_ASKENV=y
+CONFIG_CMD_ERASEENV=y
+CONFIG_CMD_ENV_FLAGS=y
++CONFIG_CMD_RNG=y
+CONFIG_CMD_STRINGS=y
+# CONFIG_CMD_UNLZ4 is not set
+# CONFIG_CMD_UNZIP is not set
+CONFIG_MTK_POWER_DOMAIN=y
+CONFIG_DM_PWM=y
+CONFIG_PWM_MTK=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK_V2=y
+CONFIG_DM_SERIAL=y
+CONFIG_SERIAL_RX_BUFFER=y
+CONFIG_MTK_SERIAL=y
+};
--- /dev/null
+++ b/configs/mt7981_glinet_gl-x3000_defconfig
-@@ -0,0 +1,100 @@
+@@ -0,0 +1,104 @@
+CONFIG_ARM=y
++CONFIG_ARM_SMCCC=y
+CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+CONFIG_POSITION_INDEPENDENT=y
+CONFIG_ARCH_MEDIATEK=y
+CONFIG_CMD_ASKENV=y
+CONFIG_CMD_ERASEENV=y
+CONFIG_CMD_ENV_FLAGS=y
++CONFIG_CMD_RNG=y
+CONFIG_CMD_STRINGS=y
+# CONFIG_CMD_UNLZ4 is not set
+# CONFIG_CMD_UNZIP is not set
+CONFIG_MTK_POWER_DOMAIN=y
+CONFIG_DM_REGULATOR=y
+CONFIG_DM_REGULATOR_FIXED=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK_V2=y
+CONFIG_DM_SERIAL=y
+CONFIG_SERIAL_RX_BUFFER=y
+CONFIG_MTK_SERIAL=y
--- /dev/null
+++ b/configs/mt7988a_arcadyan_mozart_defconfig
-@@ -0,0 +1,115 @@
+@@ -0,0 +1,119 @@
+CONFIG_ARM=y
++CONFIG_ARM_SMCCC=y
+CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+CONFIG_POSITION_INDEPENDENT=y
+CONFIG_ARCH_MEDIATEK=y
+CONFIG_CMD_ASKENV=y
+CONFIG_CMD_ERASEENV=y
+CONFIG_CMD_ENV_FLAGS=y
++CONFIG_CMD_RNG=y
+CONFIG_CMD_STRINGS=y
+CONFIG_CMD_DM=y
+CONFIG_CMD_GPIO=y
+CONFIG_DM_PWM=y
+CONFIG_PWM_MTK=y
+CONFIG_RAM=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK_V2=y
+CONFIG_SCSI=y
+CONFIG_DM_SERIAL=y
+CONFIG_SERIAL_RX_BUFFER=y
+};
--- /dev/null
+++ b/configs/mt7981_gatonetworks_gdsp_defconfig
-@@ -0,0 +1,146 @@
+@@ -0,0 +1,150 @@
+CONFIG_ARM=y
++CONFIG_ARM_SMCCC=y
+CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+CONFIG_POSITION_INDEPENDENT=y
+CONFIG_ARCH_MEDIATEK=y
+CONFIG_LOOPW=y
+CONFIG_CMD_MEMINFO=y
+CONFIG_CMD_MEMTEST=y
++CONFIG_CMD_RNG=y
+CONFIG_CMD_STRINGS=y
+# CONFIG_CMD_UNLZ4 is not set
+# CONFIG_CMD_UNZIP is not set
+CONFIG_MTK_POWER_DOMAIN=y
+CONFIG_DM_PWM=y
+CONFIG_PWM_MTK=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK_V2=y
+CONFIG_DM_SERIAL=y
+CONFIG_SERIAL_RX_BUFFER=y
+CONFIG_MTK_SERIAL=y
--- /dev/null
+++ b/configs/mt7986_mercusys_mr90x-v1_defconfig
-@@ -0,0 +1,108 @@
+@@ -0,0 +1,112 @@
+CONFIG_ARM=y
++CONFIG_ARM_SMCCC=y
+CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+CONFIG_POSITION_INDEPENDENT=y
+CONFIG_ARCH_MEDIATEK=y
+CONFIG_CMD_ASKENV=y
+CONFIG_CMD_ERASEENV=y
+CONFIG_CMD_ENV_FLAGS=y
++CONFIG_CMD_RNG=y
+CONFIG_CMD_STRINGS=y
+CONFIG_CMD_DM=y
+CONFIG_CMD_GPIO=y
+CONFIG_DM_REGULATOR_FIXED=y
+CONFIG_DM_REGULATOR_GPIO=y
+CONFIG_RAM=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK_V2=y
+CONFIG_DM_SERIAL=y
+CONFIG_SERIAL_RX_BUFFER=y
+CONFIG_MTK_SERIAL=y
--- /dev/null
+++ b/configs/mt7981_routerich_ax3000_defconfig
-@@ -0,0 +1,107 @@
+@@ -0,0 +1,111 @@
+CONFIG_ARM=y
++CONFIG_ARM_SMCCC=y
+CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+CONFIG_POSITION_INDEPENDENT=y
+CONFIG_ARCH_MEDIATEK=y
+CONFIG_CMD_ASKENV=y
+CONFIG_CMD_ERASEENV=y
+CONFIG_CMD_ENV_FLAGS=y
++CONFIG_CMD_RNG=y
+CONFIG_CMD_STRINGS=y
+CONFIG_CMD_DM=y
+CONFIG_CMD_GPIO=y
+CONFIG_DM_REGULATOR_FIXED=y
+CONFIG_DM_REGULATOR_GPIO=y
+CONFIG_RAM=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK_V2=y
+CONFIG_DM_SERIAL=y
+CONFIG_SERIAL_RX_BUFFER=y
+CONFIG_MTK_SERIAL=y
--- /dev/null
+++ b/configs/mt7988a_asus_zenwifi-bt8_defconfig
-@@ -0,0 +1,131 @@
+@@ -0,0 +1,135 @@
+CONFIG_ARM=y
++CONFIG_ARM_SMCCC=y
+CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+CONFIG_POSITION_INDEPENDENT=y
+CONFIG_ARCH_MEDIATEK=y
+CONFIG_CMD_ASKENV=y
+CONFIG_CMD_ERASEENV=y
+CONFIG_CMD_ENV_FLAGS=y
++CONFIG_CMD_RNG=y
+CONFIG_CMD_STRINGS=y
+CONFIG_CMD_DM=y
+CONFIG_CMD_GPIO=y
+CONFIG_DM_PWM=y
+CONFIG_PWM_MTK=y
+CONFIG_RAM=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK_V2=y
+CONFIG_SCSI=y
+CONFIG_DM_SERIAL=y
+CONFIG_MTK_SERIAL=y
+};
--- /dev/null
+++ b/configs/mt7981_netis_nx30v2_defconfig
-@@ -0,0 +1,157 @@
+@@ -0,0 +1,161 @@
+CONFIG_ARM=y
++CONFIG_ARM_SMCCC=y
+CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+CONFIG_POSITION_INDEPENDENT=y
+CONFIG_ARCH_MEDIATEK=y
+CONFIG_CMD_PSTORE_MEM_ADDR=0x42ff0000
+CONFIG_CMD_PING=y
+CONFIG_CMD_PXE=y
++CONFIG_CMD_RNG=y
+CONFIG_CMD_SF=y
+CONFIG_CMD_SF_TEST=y
+CONFIG_CMD_SMC=y
+CONFIG_PINCTRL_MT7981=y
+CONFIG_POWER_DOMAIN=y
+CONFIG_MTK_POWER_DOMAIN=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK_V2=y
+CONFIG_DM_SERIAL=y
+CONFIG_SERIAL_RX_BUFFER=y
+CONFIG_SERIAL_RX_BUFFER_SIZE=256
--- /dev/null
+++ b/configs/mt7986_netcore_n60-pro_defconfig
-@@ -0,0 +1,129 @@
+@@ -0,0 +1,133 @@
+CONFIG_ARM=y
++CONFIG_ARM_SMCCC=y
+CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+CONFIG_POSITION_INDEPENDENT=y
+CONFIG_ARCH_MEDIATEK=y
+CONFIG_CMD_ASKENV=y
+CONFIG_CMD_ERASEENV=y
+CONFIG_CMD_ENV_FLAGS=y
++CONFIG_CMD_RNG=y
+CONFIG_CMD_STRINGS=y
+CONFIG_CMD_DM=y
+CONFIG_CMD_GPIO=y
+CONFIG_DM_PWM=y
+CONFIG_PWM_MTK=y
+CONFIG_RAM=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK_V2=y
+CONFIG_SCSI=y
+CONFIG_DM_SERIAL=y
+CONFIG_SERIAL_RX_BUFFER=y
--- /dev/null
+++ b/configs/mt7981_snr_snr-cpe-ax2_defconfig
-@@ -0,0 +1,107 @@
+@@ -0,0 +1,111 @@
+CONFIG_ARM=y
++CONFIG_ARM_SMCCC=y
+CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+CONFIG_POSITION_INDEPENDENT=y
+CONFIG_ARCH_MEDIATEK=y
+CONFIG_CMD_ASKENV=y
+CONFIG_CMD_ERASEENV=y
+CONFIG_CMD_ENV_FLAGS=y
++CONFIG_CMD_RNG=y
+CONFIG_CMD_STRINGS=y
+CONFIG_CMD_DM=y
+CONFIG_CMD_GPIO=y
+CONFIG_DM_REGULATOR_FIXED=y
+CONFIG_DM_REGULATOR_GPIO=y
+CONFIG_RAM=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK_V2=y
+CONFIG_DM_SERIAL=y
+CONFIG_SERIAL_RX_BUFFER=y
+CONFIG_MTK_SERIAL=y
+};
--- /dev/null
+++ b/configs/mt7981_glinet_gl-mt2500_defconfig
-@@ -0,0 +1,114 @@
+@@ -0,0 +1,118 @@
+CONFIG_ARM=y
++CONFIG_ARM_SMCCC=y
+CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+CONFIG_POSITION_INDEPENDENT=y
+CONFIG_ARCH_MEDIATEK=y
+CONFIG_CMD_ERASEENV=y
+CONFIG_CMD_ENV_CALLBACK=y
+CONFIG_CMD_ENV_FLAGS=y
++CONFIG_CMD_RNG=y
+CONFIG_CMD_STRINGS=y
+# CONFIG_CMD_UNLZ4 is not set
+# CONFIG_CMD_UNZIP is not set
+CONFIG_MTK_POWER_DOMAIN=y
+CONFIG_DM_REGULATOR=y
+CONFIG_DM_REGULATOR_FIXED=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK_V2=y
+CONFIG_DM_SERIAL=y
+CONFIG_SERIAL_RX_BUFFER=y
+CONFIG_MTK_SERIAL=y
+};
--- /dev/null
+++ b/configs/mt7986_acer_predator-w6x_defconfig
-@@ -0,0 +1,105 @@
+@@ -0,0 +1,109 @@
+CONFIG_ARM=y
++CONFIG_ARM_SMCCC=y
+CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+CONFIG_POSITION_INDEPENDENT=y
+CONFIG_ARCH_MEDIATEK=y
+CONFIG_CMD_ASKENV=y
+CONFIG_CMD_ERASEENV=y
+CONFIG_CMD_ENV_FLAGS=y
++CONFIG_CMD_RNG=y
+CONFIG_CMD_STRINGS=y
+CONFIG_CMD_DM=y
+CONFIG_CMD_GPIO=y
+CONFIG_DM_REGULATOR_FIXED=y
+CONFIG_DM_REGULATOR_GPIO=y
+CONFIG_RAM=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK_V2=y
+CONFIG_DM_SERIAL=y
+CONFIG_SERIAL_RX_BUFFER=y
+CONFIG_MTK_SERIAL=y
--- /dev/null
+++ b/configs/mt7981_imou_hx21_defconfig
-@@ -0,0 +1,108 @@
+@@ -0,0 +1,112 @@
+CONFIG_ARM=y
++CONFIG_ARM_SMCCC=y
+CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+CONFIG_POSITION_INDEPENDENT=y
+CONFIG_ARCH_MEDIATEK=y
+CONFIG_CMD_ASKENV=y
+CONFIG_CMD_ERASEENV=y
+CONFIG_CMD_ENV_FLAGS=y
++CONFIG_CMD_RNG=y
+CONFIG_CMD_STRINGS=y
+CONFIG_CMD_DM=y
+CONFIG_CMD_GPIO=y
+CONFIG_DM_REGULATOR_FIXED=y
+CONFIG_DM_REGULATOR_GPIO=y
+CONFIG_RAM=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK_V2=y
+CONFIG_DM_SERIAL=y
+CONFIG_SERIAL_RX_BUFFER=y
+CONFIG_MTK_SERIAL=y
--- /dev/null
+++ b/configs/mt7987a_routerich_be7200_defconfig
-@@ -0,0 +1,133 @@
+@@ -0,0 +1,137 @@
+CONFIG_ARM=y
++CONFIG_ARM_SMCCC=y
+CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+CONFIG_POSITION_INDEPENDENT=y
+CONFIG_ARCH_MEDIATEK=y
+CONFIG_CMD_ASKENV=y
+CONFIG_CMD_ERASEENV=y
+CONFIG_CMD_ENV_FLAGS=y
++CONFIG_CMD_RNG=y
+CONFIG_CMD_STRINGS=y
+CONFIG_CMD_CPU=y
+CONFIG_CMD_DM=y
+CONFIG_DM_REGULATOR_GPIO=y
+CONFIG_DM_PWM=y
+CONFIG_PWM_MTK=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK_V2=y
+CONFIG_SCSI=y
+CONFIG_DM_SERIAL=y
+CONFIG_SERIAL_RX_BUFFER=y
--- /dev/null
+++ b/configs/mt7987a_bpi-r4-lite-emmc_defconfig
-@@ -0,0 +1,155 @@
+@@ -0,0 +1,159 @@
+CONFIG_ARM=y
++CONFIG_ARM_SMCCC=y
+CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+CONFIG_POSITION_INDEPENDENT=y
+CONFIG_ARCH_MEDIATEK=y
+CONFIG_CMD_ASKENV=y
+CONFIG_CMD_ERASEENV=y
+CONFIG_CMD_ENV_FLAGS=y
++CONFIG_CMD_RNG=y
+CONFIG_CMD_STRINGS=y
+CONFIG_CMD_CPU=y
+CONFIG_CMD_DM=y
+CONFIG_DM_REGULATOR_GPIO=y
+CONFIG_DM_PWM=y
+CONFIG_PWM_MTK=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK_V2=y
+CONFIG_SCSI=y
+CONFIG_DM_SERIAL=y
+CONFIG_SERIAL_RX_BUFFER=y
+# CONFIG_TOOLS_MKEFICAPSULE is not set
--- /dev/null
+++ b/configs/mt7987a_bpi-r4-lite-nor_defconfig
-@@ -0,0 +1,156 @@
+@@ -0,0 +1,160 @@
+CONFIG_ARM=y
++CONFIG_ARM_SMCCC=y
+CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+CONFIG_POSITION_INDEPENDENT=y
+CONFIG_ARCH_MEDIATEK=y
+CONFIG_CMD_ASKENV=y
+CONFIG_CMD_ERASEENV=y
+CONFIG_CMD_ENV_FLAGS=y
++CONFIG_CMD_RNG=y
+CONFIG_CMD_STRINGS=y
+CONFIG_CMD_CPU=y
+CONFIG_CMD_DM=y
+CONFIG_DM_REGULATOR_GPIO=y
+CONFIG_DM_PWM=y
+CONFIG_PWM_MTK=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK_V2=y
+CONFIG_SCSI=y
+CONFIG_DM_SERIAL=y
+CONFIG_SERIAL_RX_BUFFER=y
+# CONFIG_TOOLS_MKEFICAPSULE is not set
--- /dev/null
+++ b/configs/mt7987a_bpi-r4-lite-sd_defconfig
-@@ -0,0 +1,155 @@
+@@ -0,0 +1,159 @@
+CONFIG_ARM=y
++CONFIG_ARM_SMCCC=y
+CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+CONFIG_POSITION_INDEPENDENT=y
+CONFIG_ARCH_MEDIATEK=y
+CONFIG_CMD_ASKENV=y
+CONFIG_CMD_ERASEENV=y
+CONFIG_CMD_ENV_FLAGS=y
++CONFIG_CMD_RNG=y
+CONFIG_CMD_STRINGS=y
+CONFIG_CMD_CPU=y
+CONFIG_CMD_DM=y
+CONFIG_DM_REGULATOR_GPIO=y
+CONFIG_DM_PWM=y
+CONFIG_PWM_MTK=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK_V2=y
+CONFIG_SCSI=y
+CONFIG_DM_SERIAL=y
+CONFIG_SERIAL_RX_BUFFER=y
+# CONFIG_TOOLS_MKEFICAPSULE is not set
--- /dev/null
+++ b/configs/mt7987a_bpi-r4-lite-snand_defconfig
-@@ -0,0 +1,155 @@
+@@ -0,0 +1,159 @@
+CONFIG_ARM=y
++CONFIG_ARM_SMCCC=y
+CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+CONFIG_POSITION_INDEPENDENT=y
+CONFIG_ARCH_MEDIATEK=y
+CONFIG_CMD_ASKENV=y
+CONFIG_CMD_ERASEENV=y
+CONFIG_CMD_ENV_FLAGS=y
++CONFIG_CMD_RNG=y
+CONFIG_CMD_STRINGS=y
+CONFIG_CMD_CPU=y
+CONFIG_CMD_DM=y
+CONFIG_DM_REGULATOR_GPIO=y
+CONFIG_DM_PWM=y
+CONFIG_PWM_MTK=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK_V2=y
+CONFIG_SCSI=y
+CONFIG_DM_SERIAL=y
+CONFIG_SERIAL_RX_BUFFER=y
--- /dev/null
+++ b/configs/mt7986_zyxel_wx5600-t0_defconfig
-@@ -0,0 +1,146 @@
+@@ -0,0 +1,150 @@
+CONFIG_ARM=y
++CONFIG_ARM_SMCCC=y
+CONFIG_CMD_MII=y
+CONFIG_CMD_MDIO=y
+CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+CONFIG_CMD_ASKENV=y
+CONFIG_CMD_ERASEENV=y
+CONFIG_CMD_ENV_FLAGS=y
++CONFIG_CMD_RNG=y
+CONFIG_CMD_STRINGS=y
+CONFIG_CMD_DM=y
+CONFIG_CMD_GPIO=y
+CONFIG_DM_PWM=y
+CONFIG_PWM_MTK=y
+CONFIG_RAM=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK_V2=y
+CONFIG_SCSI=y
+CONFIG_DM_SERIAL=y
+CONFIG_MTK_SERIAL=y
--- /dev/null
+++ b/configs/mt7981_bazis_ax3000wm_defconfig
-@@ -0,0 +1,107 @@
+@@ -0,0 +1,111 @@
+CONFIG_ARM=y
++CONFIG_ARM_SMCCC=y
+CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+CONFIG_POSITION_INDEPENDENT=y
+CONFIG_ARCH_MEDIATEK=y
+CONFIG_CMD_ASKENV=y
+CONFIG_CMD_ERASEENV=y
+CONFIG_CMD_ENV_FLAGS=y
++CONFIG_CMD_RNG=y
+CONFIG_CMD_STRINGS=y
+CONFIG_CMD_DM=y
+CONFIG_CMD_GPIO=y
+CONFIG_DM_REGULATOR_FIXED=y
+CONFIG_DM_REGULATOR_GPIO=y
+CONFIG_RAM=y
++CONFIG_DM_RNG=y
++CONFIG_RNG_MTK_V2=y
+CONFIG_DM_SERIAL=y
+CONFIG_SERIAL_RX_BUFFER=y
+CONFIG_MTK_SERIAL=y