On 12/30/2025 11:31 PM, Tom Rini wrote: > On Tue, Dec 30, 2025 at 11:03:28AM +0800, Jun Chang wrote: > >> - Add RISC-V target for MT5824 >> - Add board defconfig and DTS for MT5824 EVB >> - Add SPL and U-Boot board support for MT5824 EVB >> - Add DDR init for MT5824 EVB >> >> Signed-off-by: Jun Chang <[email protected]> >> --- >> arch/riscv/Kconfig | 4 + >> arch/riscv/dts/mt5824-evb.dts | 232 +++++++++++++++++ > > What is the status on upstreaming this device tree?
The device tree is able to boot to U-Boot with shell prompt by the JTAG. > > [snip] >> diff --git a/board/metanoia/mt5824/lpddr4.h b/board/metanoia/mt5824/lpddr4.h >> new file mode 100644 >> index 00000000000..5de70c536ca >> --- /dev/null >> +++ b/board/metanoia/mt5824/lpddr4.h >> @@ -0,0 +1,91 @@ >> +/* SPDX-License-Identifier: GPL-2.0+ */ >> +/* >> + * Copyright (C) 2025 Metanoia Communications Inc., >> + * Jun Chang, Metanoia Communications Inc. <[email protected]> >> + */ >> + >> +#ifndef __COBRA_DDR_H >> +#define __COBRA_DDR_H >> + >> +#include <asm/io.h> >> + >> +#define UMCTL2_REGS_BASE_ADDR 0x10060000 >> + >> +#define reg8_write(addr, data) \ >> + writeb((uint8_t)(data), (volatile void __iomem *)(addr)) >> +#define reg16_write(addr, data) \ >> + writew((uint16_t)(data), (volatile void __iomem *)(addr)) >> +#define reg32_write(addr, data) \ >> + writel((uint32_t)(data), (volatile void __iomem *)(addr)) > > We really don't already have an appropriate macro here to use? I'll change the macro to the static inline function like arch/arm/include/asm/arch-imx8m/ddr.h does. > > [snip] >> +#endif /* __COBRA_DDR_H */ >> \ No newline at end of file > > Please fix that globally. Got it. > >> diff --git a/board/metanoia/mt5824/lpddr4_helper.c >> b/board/metanoia/mt5824/lpddr4_helper.c >> new file mode 100644 >> index 00000000000..3bc447038dc >> --- /dev/null >> +++ b/board/metanoia/mt5824/lpddr4_helper.c > [snip] >> +#if 0 /* Enable for debugging */ >> + if (i < 10) { >> + printf(" [%02d] 0x%08x = 0x%08x\n", i, reg_addr, >> reg_value); >> + } >> +#endif > > Just use debug() here? And remove other "if 0" or commented out code > globally. I'll remove them. > > [snip] >> diff --git a/board/metanoia/mt5824/mt5824.c b/board/metanoia/mt5824/mt5824.c >> new file mode 100644 >> index 00000000000..f385de1d897 >> --- /dev/null >> +++ b/board/metanoia/mt5824/mt5824.c >> @@ -0,0 +1,188 @@ >> +/* SPDX-License-Identifier: GPL-2.0+ */ >> +/* >> + * Copyright (C) 2025 Metanoia Communications Inc., >> + * Jun Chang, Metanoia Communications Inc. <[email protected]> >> + */ >> + >> +#include <log.h> >> +#include <asm/csr.h> >> +#include <asm/sbi.h> >> +#include <config.h> >> +#include <cpu_func.h> >> +#include <image.h> >> +#include <init.h> >> +#include <net.h> >> +#include <asm/global_data.h> >> +#include <linux/io.h> >> +#include <fdtdec.h> >> +#include <dm.h> >> +#include <hang.h> >> +#include <misc.h> >> +#include <hexdump.h> >> +#include <env_internal.h> >> +#include <linux/delay.h> >> +#include <asm/io.h> > > Globally, please audit your include list. I'll remove the unnecessary inlcudes for my patch. > > [snip] >> diff --git a/configs/mt5824_evb_defconfig b/configs/mt5824_evb_defconfig >> new file mode 100644 >> index 00000000000..74f6ceb2284 >> --- /dev/null >> +++ b/configs/mt5824_evb_defconfig >> @@ -0,0 +1,61 @@ >> +CONFIG_RISCV=y >> +CONFIG_RISCV_ANDES=y >> +CONFIG_ARCH_RV64I=y >> +CONFIG_RISCV_SMODE=y >> + > > Please re-generate this with "make savedefconfig". Thanks for the command. I'll re-generate the defconfig. > > [snip] >> diff --git a/include/configs/mt5824.h b/include/configs/mt5824.h >> new file mode 100644 >> index 00000000000..9809080b805 >> --- /dev/null >> +++ b/include/configs/mt5824.h > [snip] >> +/* environments */ >> + >> +/* SPI FLASH */ >> + >> +/* >> + * For booting Linux, the board info and command line data >> + * have to be in the first 16 MB of memory, since this is >> + * the maximum mapped by the Linux kernel during initialization. >> + */ >> + >> +/* Initial Memory map for Linux*/ >> +#define CFG_SYS_BOOTMAPSZ (64 << 20) >> +/* Increase max gunzip size */ >> + >> +/* Support autoboot from RAM (kernel image is loaded via debug port) */ >> +#define BOOTENV_DEV_NAME_RAM(devtypeu, devtypel, instance) \ >> + "ram " >> + >> +#define BOOTENV_DEV_RAM(devtypeu, devtypel, instance) \ >> + "bootcmd_ram=" \ >> + "bootm ${fit_addr}\0" >> + >> +#define BOOTENV_DEV_LEGACY_MMC(devtypeu, devtypel, instance) \ >> + "bootcmd_" #devtypel #instance "=" \ >> + "setenv mmcdev " #instance"; "\ >> + "setenv bootpart " #instance":2 ; "\ >> + "run mmcboot\0" >> + >> +#define BOOTENV_DEV_NAME_LEGACY_MMC(devtypeu, devtypel, instance) \ >> + #devtypel #instance " " >> + >> +#define BOOTENV_DEV_NAME_TFTP(devtypeu, devtypel, instance) \ >> + #devtypel " " >> + >> +#define BOOTENV_DEV_TFTP(devtypeu, devtypel, instance) \ >> + "bootcmd_" #devtypel "=" \ >> + "tftpboot ${fit_addr} $serverip:fitImage-dev-image-initramfs; " \ >> + "bootm ${fit_addr}\0" >> + >> +/* Enable distro boot */ >> +#define BOOT_TARGET_DEVICES(func) \ >> + func(TFTP, tftp, na) \ >> + func(RAM, ram, na) >> + >> +#include <config_distro_bootcmd.h> >> + >> +#define CFG_EXTRA_ENV_SETTINGS \ >> + "bootcmd=bootm 90000000\0" \ >> + "kernel_addr_r=82000000\0" \ >> + "pxefile_addr_r=0x83f00000\0" \ >> + "scriptaddr=0x83f00000\0" \ >> + "fdt_addr_r=0x68010000\0" \ >> + "ramdisk_addr_r=0x83000000\0" \ >> + "fit_addr=0x83000000\0" \ >> + "initrd_high=0x100000000\0" \ >> + BOOTENV > > Please switch to plain text environment and consider standard boot, > thanks. > I'll clean up the config include to remove env settings and support the NOR flash boot.

