Re: [PATCH] platform: Remove kendryte/k210 platform

Anup Patel <[email protected]>
Newsgroups org.infradead.lists.opensbi
Message-ID <CAAhSdy25v6V6affY0q-nvgSxpu5=Nkb0N+e5dJSSQX=N1E9rBQ@mail.gmail.com>
On Thu, Apr 9, 2026 at 10:23 AM Anup Patel <[email protected]> wrote:
>
> The kendryte/k210 platform does not have MMU support in S-mode hence
> only NOMMU kernel which runs in M-mode can be used on this platform.
>
> As of now, there is no clear use-case of supporting OpenSBI for
> kendryte/k210 platform.
>
> Signed-off-by: Anup Patel <[email protected]>

Applied this patch to the riscv/opensbi repo.

Thanks,
Anup

> ---
>  README.md                                |   1 -
>  docs/platform/platform.md                |   3 -
>  platform/kendryte/k210/Kconfig           |  10 --
>  platform/kendryte/k210/configs/defconfig |   0
>  platform/kendryte/k210/k210.dts          |  70 ---------
>  platform/kendryte/k210/objects.mk        |  25 ----
>  platform/kendryte/k210/platform.c        | 176 -----------------------
>  platform/kendryte/k210/platform.h        |  50 -------
>  scripts/create-binary-archive.sh         |   1 -
>  9 files changed, 336 deletions(-)
>  delete mode 100644 platform/kendryte/k210/Kconfig
>  delete mode 100644 platform/kendryte/k210/configs/defconfig
>  delete mode 100644 platform/kendryte/k210/k210.dts
>  delete mode 100644 platform/kendryte/k210/objects.mk
>  delete mode 100644 platform/kendryte/k210/platform.c
>  delete mode 100644 platform/kendryte/k210/platform.h
>
> diff --git a/README.md b/README.md
> index fd40be0b..c19bfdde 100644
> --- a/README.md
> +++ b/README.md
> @@ -402,6 +402,5 @@ make I=<install_directory> install_docs
>  [Firmware Documentation]: docs/firmware/fw.md
>  [Domain Support]: docs/domain_support.md
>  [Doxygen manual]: http://www.doxygen.nl/manual/index.html
> -[Kendryte standalone SDK]: https://github.com/kendryte/kendryte-standalone-sdk
>  [third party notices]: ThirdPartyNotices.md
>  [reproducible builds]: https://reproducible-builds.org
> diff --git a/docs/platform/platform.md b/docs/platform/platform.md
> index b77112ff..9e78dac2 100644
> --- a/docs/platform/platform.md
> +++ b/docs/platform/platform.md
> @@ -18,9 +18,6 @@ OpenSBI currently supports the following virtual and hardware platforms:
>    machine. More details on this platform can be found in the file
>    *[sifive_fu540.md]*.
>
> -* **Kendryte K210 SoC**: Platform support for the Kendryte K210 SoC used on
> -  boards such as the Kendryte KD233 or the Sipeed MAIX Dock.
> -
>  * **Andes AE350 SoC**: Platform support for the Andes's SoC (AE350). More
>    details on this platform can be found in the file *[andes-ae350.md]*.
>
> diff --git a/platform/kendryte/k210/Kconfig b/platform/kendryte/k210/Kconfig
> deleted file mode 100644
> index 5bf59731..00000000
> --- a/platform/kendryte/k210/Kconfig
> +++ /dev/null
> @@ -1,10 +0,0 @@
> -# SPDX-License-Identifier: BSD-2-Clause
> -
> -config PLATFORM_KENDRYTE_K210
> -       bool
> -       select FDT
> -       select IPI_MSWI
> -       select IRQCHIP_PLIC
> -       select SERIAL_SIFIVE
> -       select TIMER_MTIMER
> -       default y
> diff --git a/platform/kendryte/k210/configs/defconfig b/platform/kendryte/k210/configs/defconfig
> deleted file mode 100644
> index e69de29b..00000000
> diff --git a/platform/kendryte/k210/k210.dts b/platform/kendryte/k210/k210.dts
> deleted file mode 100644
> index bcd075bf..00000000
> --- a/platform/kendryte/k210/k210.dts
> +++ /dev/null
> @@ -1,70 +0,0 @@
> -/*
> - * SPDX-License-Identifier: BSD-2-Clause
> - *
> - * Copyright (c) 2019 Western Digital Corporation or its affiliates.
> - *
> - * Authors:
> - *   Damien Le Moal <[email protected]>
> - */
> -
> -/dts-v1/;
> -/ {
> -       #address-cells = <2>;
> -       #size-cells = <2>;
> -       compatible = "kendryte,k210";
> -
> -       chosen {
> -                bootargs = "console=hvc0 earlycon=sbi";
> -       };
> -
> -       cpus {
> -               #address-cells = <1>;
> -               #size-cells = <0>;
> -               cpu0: cpu@0 {
> -                       device_type = "cpu";
> -                       clock-frequency = <390000000>;
> -                       i-cache-size = <32768>;
> -                       d-cache-size = <32768>;
> -                       mmu-type = "none";
> -                       reg = <0>;
> -                       riscv,isa = "rv64imafdc";
> -                       status = "okay";
> -                       cpu0_intc: interrupt-controller {
> -                               #interrupt-cells = <1>;
> -                               compatible = "riscv,cpu-intc";
> -                               interrupt-controller;
> -                       };
> -               };
> -               cpu1: cpu@1 {
> -                       device_type = "cpu";
> -                       clock-frequency = <390000000>;
> -                       d-cache-size = <32768>;
> -                       i-cache-size = <32768>;
> -                       mmu-type = "none";
> -                       reg = <1>;
> -                       riscv,isa = "rv64imafdc";
> -                       status = "okay";
> -                       cpu1_intc: interrupt-controller {
> -                               #interrupt-cells = <1>;
> -                               compatible = "riscv,cpu-intc";
> -                               interrupt-controller;
> -                       };
> -               };
> -       };
> -
> -       memory@80000000 {
> -               /* Bank 0: 4 MB, Bank 1: 2 MB, AI chip SRAM: 2MB */
> -               device_type = "memory";
> -               reg = <0x00000000 0x80000000 0x00000000 0x00800000>;
> -       };
> -
> -       plic0: interrupt-controller@C000000 {
> -               #interrupt-cells = <1>;
> -               compatible = "riscv,plic0";
> -               interrupt-controller;
> -               interrupts-extended =
> -                       <&cpu0_intc 11 &cpu0_intc 9
> -                        &cpu1_intc 11 &cpu1_intc 9>;
> -               reg = <0x0 0xc000000 0x0 0x4000000>;
> -       };
> -};
> diff --git a/platform/kendryte/k210/objects.mk b/platform/kendryte/k210/objects.mk
> deleted file mode 100644
> index efac3d2f..00000000
> --- a/platform/kendryte/k210/objects.mk
> +++ /dev/null
> @@ -1,25 +0,0 @@
> -#
> -# SPDX-License-Identifier: BSD-2-Clause
> -#
> -# Copyright (c) 2019 Western Digital Corporation or its affiliates.
> -#
> -# Authors:
> -#   Damien Le Moal <[email protected]>
> -#
> -
> -# Compiler flags
> -platform-cppflags-y =
> -platform-cflags-y =
> -platform-asflags-y =
> -platform-ldflags-y =
> -
> -# Objects to build
> -platform-objs-y += platform.o
> -
> -platform-objs-y += k210.o
> -platform-varprefix-k210.o = dt_k210
> -platform-padding-k210.o = 2048
> -
> -# Blobs to build
> -FW_PAYLOAD=y
> -FW_PAYLOAD_ALIGN=0x1000
> diff --git a/platform/kendryte/k210/platform.c b/platform/kendryte/k210/platform.c
> deleted file mode 100644
> index 0b76104c..00000000
> --- a/platform/kendryte/k210/platform.c
> +++ /dev/null
> @@ -1,176 +0,0 @@
> -/*
> - * SPDX-License-Identifier: BSD-2-Clause
> - *
> - * Copyright (c) 2019 Western Digital Corporation or its affiliates.
> - *
> - * Authors:
> - *   Damien Le Moal <[email protected]>
> - */
> -
> -#include <sbi/riscv_asm.h>
> -#include <sbi/riscv_encoding.h>
> -#include <sbi/sbi_const.h>
> -#include <sbi/sbi_platform.h>
> -#include <sbi/sbi_system.h>
> -#include <sbi_utils/fdt/fdt_helper.h>
> -#include <sbi_utils/fdt/fdt_fixup.h>
> -#include <sbi_utils/ipi/aclint_mswi.h>
> -#include <sbi_utils/irqchip/plic.h>
> -#include <sbi_utils/serial/sifive-uart.h>
> -#include <sbi_utils/timer/aclint_mtimer.h>
> -#include "platform.h"
> -
> -extern const char dt_k210_start[];
> -
> -unsigned long fw_platform_init(unsigned long arg0, unsigned long arg1,
> -                               unsigned long arg2, unsigned long arg3,
> -                               unsigned long arg4)
> -{
> -       return (unsigned long)&dt_k210_start[0];
> -}
> -
> -static struct plic_data plic = {
> -       .unique_id = 0,
> -       .addr = K210_PLIC_BASE_ADDR,
> -       .size = K210_PLIC_BASE_SIZE,
> -       .num_src = K210_PLIC_NUM_SOURCES,
> -       .context_map = {
> -               [0] = { 0, 1 },
> -               [1] = { 2, 3 },
> -       },
> -};
> -
> -static struct aclint_mswi_data mswi = {
> -       .addr = K210_ACLINT_MSWI_ADDR,
> -       .size = ACLINT_MSWI_SIZE,
> -       .first_hartid = 0,
> -       .hart_count = K210_HART_COUNT,
> -};
> -
> -static struct aclint_mtimer_data mtimer = {
> -       .mtime_freq = K210_ACLINT_MTIMER_FREQ,
> -       .mtime_addr = K210_ACLINT_MTIMER_ADDR +
> -                     ACLINT_DEFAULT_MTIME_OFFSET,
> -       .mtime_size = ACLINT_DEFAULT_MTIME_SIZE,
> -       .mtimecmp_addr = K210_ACLINT_MTIMER_ADDR +
> -                        ACLINT_DEFAULT_MTIMECMP_OFFSET,
> -       .mtimecmp_size = ACLINT_DEFAULT_MTIMECMP_SIZE,
> -       .first_hartid = 0,
> -       .hart_count = K210_HART_COUNT,
> -       .has_64bit_mmio = true,
> -};
> -
> -static u32 k210_get_clk_freq(void)
> -{
> -       u32 clksel0, pll0;
> -       u64 pll0_freq, clkr0, clkf0, clkod0, div;
> -
> -       /*
> -        * If the clock selector is not set, use the base frequency.
> -        * Otherwise, use PLL0 frequency with a frequency divisor.
> -        */
> -       clksel0 = k210_read_sysreg(K210_CLKSEL0);
> -       if (!(clksel0 & 0x1))
> -               return K210_CLK0_FREQ;
> -
> -       /*
> -        * Get PLL0 frequency:
> -        * freq = base frequency * clkf0 / (clkr0 * clkod0)
> -        */
> -       pll0 = k210_read_sysreg(K210_PLL0);
> -       clkr0 = 1 + (pll0 & 0x0000000f);
> -       clkf0 = 1 + ((pll0 & 0x000003f0) >> 4);
> -       clkod0 = 1 + ((pll0 & 0x00003c00) >> 10);
> -       pll0_freq = clkf0 * K210_CLK0_FREQ / (clkr0 * clkod0);
> -
> -       /* Get the frequency divisor from the clock selector */
> -       div = 2ULL << ((clksel0 & 0x00000006) >> 1);
> -
> -       return pll0_freq / div;
> -}
> -
> -static int k210_system_reset_check(u32 type, u32 reason)
> -{
> -       return 1;
> -}
> -
> -static void k210_system_reset(u32 type, u32 reason)
> -{
> -       u32 val;
> -
> -       val = k210_read_sysreg(K210_RESET);
> -       val |= K210_RESET_MASK;
> -       k210_write_sysreg(val, K210_RESET);
> -
> -       while (1);
> -}
> -
> -static struct sbi_system_reset_device k210_reset = {
> -       .name = "kendryte_k210_reset",
> -       .system_reset_check = k210_system_reset_check,
> -       .system_reset = k210_system_reset
> -};
> -
> -static int k210_early_init(bool cold_boot)
> -{
> -       int rc;
> -
> -       if (!cold_boot)
> -               return 0;
> -
> -       sbi_system_reset_add_device(&k210_reset);
> -
> -       rc = sifive_uart_init(K210_UART_BASE_ADDR, k210_get_clk_freq(),
> -                             K210_UART_BAUDRATE);
> -       if (rc)
> -               return rc;
> -
> -       return aclint_mswi_cold_init(&mswi);
> -}
> -
> -static int k210_final_init(bool cold_boot)
> -{
> -       void *fdt;
> -
> -       if (!cold_boot)
> -               return 0;
> -
> -       fdt = fdt_get_address_rw();
> -
> -       fdt_cpu_fixup(fdt);
> -       fdt_fixups(fdt);
> -
> -       return 0;
> -}
> -
> -static int k210_irqchip_init(void)
> -{
> -       return plic_cold_irqchip_init(&plic);
> -}
> -
> -static int k210_timer_init(void)
> -{
> -       return aclint_mtimer_cold_init(&mtimer, NULL);
> -}
> -
> -const struct sbi_platform_operations platform_ops = {
> -       .early_init     = k210_early_init,
> -
> -       .final_init     = k210_final_init,
> -
> -       .irqchip_init = k210_irqchip_init,
> -
> -       .timer_init        = k210_timer_init,
> -};
> -
> -const struct sbi_platform platform = {
> -       .opensbi_version        = OPENSBI_VERSION,
> -       .platform_version       = SBI_PLATFORM_VERSION(0x0, 0x01),
> -       .name                   = "Kendryte K210",
> -       .features               = 0,
> -       .hart_count             = K210_HART_COUNT,
> -       .hart_stack_size        = SBI_PLATFORM_DEFAULT_HART_STACK_SIZE,
> -       .heap_size              =
> -                       SBI_PLATFORM_DEFAULT_HEAP_SIZE(K210_HART_COUNT),
> -       .platform_ops_addr      = (unsigned long)&platform_ops
> -};
> diff --git a/platform/kendryte/k210/platform.h b/platform/kendryte/k210/platform.h
> deleted file mode 100644
> index 9417403d..00000000
> --- a/platform/kendryte/k210/platform.h
> +++ /dev/null
> @@ -1,50 +0,0 @@
> -/*
> - * SPDX-License-Identifier: BSD-2-Clause
> - *
> - * Copyright (c) 2019 Western Digital Corporation or its affiliates.
> - *
> - * Authors:
> - *   Damien Le Moal <[email protected]>
> - */
> -#ifndef _K210_PLATFORM_H_
> -#define _K210_PLATFORM_H_
> -
> -#include <sbi/riscv_io.h>
> -
> -#define K210_HART_COUNT                2
> -
> -#define K210_UART_BAUDRATE     115200
> -#define K210_ACLINT_MTIMER_FREQ        7800000
> -#define K210_CLK0_FREQ         26000000UL
> -#define K210_PLIC_NUM_SOURCES  65
> -
> -/* Registers base address */
> -#define K210_SYSCTL_BASE_ADDR  0x50440000ULL
> -#define K210_UART_BASE_ADDR    0x38000000ULL
> -#define K210_CLINT_BASE_ADDR   0x02000000ULL
> -#define K210_ACLINT_MSWI_ADDR  \
> -               (K210_CLINT_BASE_ADDR + CLINT_MSWI_OFFSET)
> -#define K210_ACLINT_MTIMER_ADDR \
> -               (K210_CLINT_BASE_ADDR + CLINT_MTIMER_OFFSET)
> -#define K210_PLIC_BASE_ADDR    0x0C000000ULL
> -#define K210_PLIC_BASE_SIZE    (0x200000ULL + (K210_HART_COUNT * 0x1000))
> -
> -/* Registers */
> -#define K210_PLL0              0x08
> -#define K210_CLKSEL0           0x20
> -#define K210_RESET             0x30
> -
> -/* Register bit masks */
> -#define K210_RESET_MASK                0x01
> -
> -static inline u32 k210_read_sysreg(u32 reg)
> -{
> -       return readl((volatile void *)(K210_SYSCTL_BASE_ADDR + reg));
> -}
> -
> -static inline void k210_write_sysreg(u32 val, u32 reg)
> -{
> -       writel(val, (volatile void *)(K210_SYSCTL_BASE_ADDR + reg));
> -}
> -
> -#endif /* _K210_PLATFORM_H_ */
> diff --git a/scripts/create-binary-archive.sh b/scripts/create-binary-archive.sh
> index 6ea4c9c5..7f211788 100755
> --- a/scripts/create-binary-archive.sh
> +++ b/scripts/create-binary-archive.sh
> @@ -100,7 +100,6 @@ build_opensbi() {
>         64)
>                 # Setup 64-bit platform list
>                 BUILD_PLATFORM_SUBDIR+=("nuclei/ux600")
> -               BUILD_PLATFORM_SUBDIR+=("kendryte/k210")
>                 BUILD_PLATFORM_SUBDIR+=("generic")
>                 ;;
>         *)
> --
> 2.43.0
>

-- 
opensbi mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/opensbi
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.