Hi Yixun,

On 10/1/26 18:03, Yixun Lan wrote:
> Add initial support for K3 Pico-ITX board, in this version, the DRAM
> information is parsed from DTS "/memory" node. And with UART enabled,
> the U-Boot serial console works fine now.
> 
> Signed-off-by: Yixun Lan <[email protected]>
> ---
>  arch/riscv/Kconfig            |  5 +++++
>  arch/riscv/cpu/k3/Kconfig     | 18 ++++++++++++++++++
>  arch/riscv/cpu/k3/Makefile    |  5 +++++
>  arch/riscv/cpu/k3/dram.c      | 21 +++++++++++++++++++++
>  board/spacemit/k3/Kconfig     | 30 ++++++++++++++++++++++++++++++
>  board/spacemit/k3/MAINTAINERS |  8 ++++++++
>  include/configs/k3.h          | 13 +++++++++++++
>  7 files changed, 100 insertions(+)
> 
> diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig
> index c1b2890f1f3..386241efd4a 100644
> --- a/arch/riscv/Kconfig
> +++ b/arch/riscv/Kconfig
> @@ -53,6 +53,9 @@ config TARGET_SIPEED_MAIX
>  config TARGET_SPACEMIT_K1
>       bool "Support Spacemit K1 SoC"
>  
> +config TARGET_SPACEMIT_K3
> +     bool "Support SpacemiT K3 SoC"
> +
>  config TARGET_STARFIVE_VISIONFIVE2
>       bool "Support StarFive VisionFive2 Board"
>       select BOARD_LATE_INIT
> @@ -124,6 +127,7 @@ source "board/sophgo/milkv_duo/Kconfig"
>  source "board/sophgo/milkv_duo_256m/Kconfig"
>  source "board/sophgo/licheerv_nano/Kconfig"
>  source "board/spacemit/k1/Kconfig"
> +source "board/spacemit/k3/Kconfig"
>  source "board/starfive/visionfive2/Kconfig"
>  source "board/thead/th1520_lpi4a/Kconfig"
>  source "board/xilinx/mbv/Kconfig"
> @@ -138,6 +142,7 @@ source "arch/riscv/cpu/mpfs/Kconfig"
>  source "arch/riscv/cpu/generic/Kconfig"
>  source "arch/riscv/cpu/jh7110/Kconfig"
>  source "arch/riscv/cpu/k1/Kconfig"
> +source "arch/riscv/cpu/k3/Kconfig"
>  source "arch/riscv/cpu/k230/Kconfig"
>  source "arch/riscv/cpu/th1520/Kconfig"
>  
> diff --git a/arch/riscv/cpu/k3/Kconfig b/arch/riscv/cpu/k3/Kconfig
> new file mode 100644
> index 00000000000..5474ac11243
> --- /dev/null
> +++ b/arch/riscv/cpu/k3/Kconfig
> @@ -0,0 +1,18 @@
> +# SPDX-License-Identifier: GPL-2.0-or-later
> +#
> +# Copyright (C) 2026 Yixun Lan <[email protected]>
> +
> +if TARGET_SPACEMIT_K3
> +
> +config SPACEMIT_K3
> +     bool
> +     select BINMAN
> +     select ARCH_EARLY_INIT_R
> +     select SYS_CACHE_SHIFT_6
> +     imply CPU
> +     imply CPU_RISCV
> +     imply RISCV_TIMER if RISCV_SMODE
> +     imply CMD_CPU
> +     imply OF_UPSTREAM
> +
> +endif
> diff --git a/arch/riscv/cpu/k3/Makefile b/arch/riscv/cpu/k3/Makefile
> new file mode 100644
> index 00000000000..fba4e4b0a3f
> --- /dev/null
> +++ b/arch/riscv/cpu/k3/Makefile
> @@ -0,0 +1,5 @@
> +# SPDX-License-Identifier: GPL-2.0-or-later
> +#
> +# Copyright (C) 2026 Yixun Lan <[email protected]>
> +
> +obj-y += dram.o
> diff --git a/arch/riscv/cpu/k3/dram.c b/arch/riscv/cpu/k3/dram.c
> new file mode 100644
> index 00000000000..e20d35dc1bf
> --- /dev/null
> +++ b/arch/riscv/cpu/k3/dram.c
> @@ -0,0 +1,21 @@
> +// SPDX-License-Identifier: GPL-2.0-or-later
> +/*
> + * Copyright (C) 2026 Yixun Lan <[email protected]>
> + */
> +
> +#include <fdtdec.h>
> +#include <init.h>
> +#include <linux/sizes.h>
> +#include <asm/global_data.h>
> +
> +DECLARE_GLOBAL_DATA_PTR;
> +
> +int dram_init(void)
> +{
> +     return fdtdec_setup_mem_size_base();
> +}
> +
> +int dram_init_banksize(void)
> +{
> +     return fdtdec_setup_memory_banksize();
> +}
> diff --git a/board/spacemit/k3/Kconfig b/board/spacemit/k3/Kconfig
> new file mode 100644
> index 00000000000..b0e423d829c
> --- /dev/null
> +++ b/board/spacemit/k3/Kconfig
> @@ -0,0 +1,30 @@
> +# SPDX-License-Identifier: GPL-2.0-or-later
> +#
> +# Copyright (C) 2026 Yixun Lan <[email protected]>
> +
> +if TARGET_SPACEMIT_K3
> +
> +config SYS_BOARD
> +     default "k3"
> +
> +config SYS_VENDOR
> +     default "spacemit"
> +
> +config SYS_CPU
> +     default "k3"
> +
> +config SYS_CONFIG_NAME
> +     default "k3"
> +
> +config TEXT_BASE
> +     default 0x102000000
> +
> +config SPL_OPENSBI_LOAD_ADDR
> +     hex
> +     default 0x100000000
> +
> +config BOARD_SPECIFIC_OPTIONS
> +     def_bool y
> +     select SPACEMIT_K3
> +
> +endif
> diff --git a/board/spacemit/k3/MAINTAINERS b/board/spacemit/k3/MAINTAINERS
> new file mode 100644
> index 00000000000..34cf1ed4453
> --- /dev/null
> +++ b/board/spacemit/k3/MAINTAINERS
> @@ -0,0 +1,8 @@
> +SPACEMIT K3
> +M:   Yixun Lan <[email protected]>
> +S:   Maintained
> +F:   arch/riscv/cpu/k3/
> +F:   board/spacemit/k3/
> +F:   configs/spacemit_k3_defconfig
> +F:   include/configs/k3.h
> +F:   arch/riscv/dts/k3-u-boot.dtsi
> diff --git a/include/configs/k3.h b/include/configs/k3.h
> new file mode 100644
> index 00000000000..83e4945d2b3
> --- /dev/null
> +++ b/include/configs/k3.h
> @@ -0,0 +1,13 @@
> +/* SPDX-License-Identifier: GPL-2.0-or-later */
> +/*
> + * Copyright (C) 2026 Yixun Lan <[email protected]>
> + */
> +
> +#ifndef __CONFIG_H
> +#define __CONFIG_H
> +
> +#define CFG_SYS_NS16550_IER  0x40
> +
> +#define RISCV_SMODE_TIMER_FREQ       24000000
> +
> +#endif /* __CONFIG_H */
> 

There is a Texas Instruments K3 SoC referred to as "k3" in u-boot
discussion. Let's not add to the confusion here on a global include file
that is named "configs/k3.h"

Please rename "include/configs/k3.h" as "include/configs/spacemit-k3.h"
or "include/configs/spacemit_k3.h" to be consistent with the target
defconfig name. "k1.h" global config header name may be renamed later
when development pace slows that it would not be too disruptive, and to
follow whatever hyphen or underscore delineation is decided for K3.

Thanks,

-E

Reply via email to