OpenSBI Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: E Shattow <e@freeshell.de>
To: Troy Mitchell <troy.mitchell@linux.spacemit.com>,
	opensbi@lists.infradead.org
Cc: Xianbin Zhu <xianbin.zhu@linux.spacemit.com>,
	Anup Patel <anup@brainfault.org>, Bo Gan <ganboing@gmail.com>,
	Samuel Holland <samuel.holland@sifive.com>,
	Heinrich Schuchardt <heinrich.schuchardt@canonical.com>,
	Kevin Zhang <zhangmeng.kevin@linux.spacemit.com>
Subject: Re: [PATCH v4 4/6] platform: generic: spacemit: k1: refactor platform support
Date: Wed, 7 Oct 2026 17:30:09 -0700	[thread overview]
Message-ID: <f8af9944-747b-414a-86cd-7c48e9ba2c7b@freeshell.de> (raw)
In-Reply-To: <20260910-spacemit-k3-v4-4-0793b62329f6@linux.spacemit.com>

On 9/10/26 07:00, Troy Mitchell wrote:
> From: Xianbin Zhu <xianbin.zhu@linux.spacemit.com>
> 
> K3 shares cache-control CSRs, PMU idle fields, cluster sizing, and the
> CCI-550 programming sequence with K1. Keeping these definitions and the
> CCI helper in K1-specific files would either duplicate them or make K3
> depend on K1 support.
> 
> Add a hidden PLATFORM_SPACEMIT option and move the shared definitions to
> spacemit/common.h. Move cci_enable_snoop_dvm_reqs() to spacemit.c while
> keeping each SoC's CCI topology and boot flow in its own platform driver.
> 
> Rename the PMU idle fields to match the K1 and K3 User Manuals. Keep the
> K1 power-down mask at 0x1b, so K1 power-management behavior remains
> unchanged. Keep the K1 HSM implementation K1-specific and switch it to
> the shared definitions.
> 
> This is a non-functional refactoring that prepares the common support
> used by K3.
> 
> Signed-off-by: Xianbin Zhu <xianbin.zhu@linux.spacemit.com>
> Co-developed-by: Troy Mitchell <troy.mitchell@linux.spacemit.com>
> Signed-off-by: Troy Mitchell <troy.mitchell@linux.spacemit.com>
> ---
>  lib/utils/hsm/fdt_hsm_spacemit.c             | 10 +--
>  platform/generic/Kconfig                     |  4 ++
>  platform/generic/include/spacemit/common.h   | 86 +++++++++++++++++++++++++
>  platform/generic/include/spacemit/k1.h       | 94 +++++-----------------------
>  platform/generic/include/spacemit/spacemit.h | 14 +++++
>  platform/generic/spacemit/k1.c               | 33 ++--------
>  platform/generic/spacemit/objects.mk         |  1 +
>  platform/generic/spacemit/spacemit.c         | 36 +++++++++++
>  8 files changed, 169 insertions(+), 109 deletions(-)
> 
> diff --git a/lib/utils/hsm/fdt_hsm_spacemit.c b/lib/utils/hsm/fdt_hsm_spacemit.c
> index 99c52335..6348f6a3 100644
> --- a/lib/utils/hsm/fdt_hsm_spacemit.c
> +++ b/lib/utils/hsm/fdt_hsm_spacemit.c
> @@ -10,6 +10,7 @@
>  #include <platform_override.h>
>  #include <sbi/riscv_io.h>
>  #include <sbi/sbi_hsm.h>
> +#include <spacemit/common.h>
>  #include <spacemit/k1.h>
>  
>  static const u64 cpu_wakeup_reg[] = {
> @@ -42,9 +43,9 @@ static inline void spacemit_set_cpu_power(u32 hartid, bool enable)
>  	value = readl(cpu_idle_base);
>  
>  	if (enable)
> -		value &= ~PMU_AP_IDLE_PWRDOWN_MASK;
> +		value &= ~PMU_AP_IDLE_PWRDOWN_K1_MASK;
>  	else
> -		value |= PMU_AP_IDLE_PWRDOWN_MASK;
> +		value |= PMU_AP_IDLE_PWRDOWN_K1_MASK;
>  
>  	writel(value, cpu_idle_base);
>  }
> @@ -87,7 +88,7 @@ static int spacemit_hart_stop(void)
>  	csr_write(CSR_STIMECMP, GENMASK_ULL(63, 0));
>  	csr_clear(CSR_MIE, MIP_SSIP | MIP_MSIP | MIP_STIP | MIP_MTIP | MIP_SEIP | MIP_MEIP);
>  
> -	/* disable data preftch */
> +	/* disable data prefetch */
>  	csr_clear(CSR_MSETUP, MSETUP_PFE);
>  	asm volatile ("fence iorw, iorw");
>  
> @@ -102,8 +103,7 @@ static int spacemit_hart_stop(void)
>  	/*
>  	 * Core4-7 do not have dedicated bits in ML2SETUP;
>  	 * instead, they reuse the same bits as core0-3.
> -	 *
> -	 * Thereforspacemit_deassert_cpue, use modulo with PLATFORM_MAX_CPUS_PER_CLUSTER
> +	 * Therefore, use modulo with PLATFORM_MAX_CPUS_PER_CLUSTER
>  	 * to select the proper bit.
>  	 */
>  	csr_clear(CSR_ML2SETUP, 1 << (current_hartid() % PLATFORM_MAX_CPUS_PER_CLUSTER));
> diff --git a/platform/generic/Kconfig b/platform/generic/Kconfig
> index d594b140..958610d3 100644
> --- a/platform/generic/Kconfig
> +++ b/platform/generic/Kconfig
> @@ -100,9 +100,13 @@ config PLATFORM_THEAD
>  	select THEAD_C9XX_PMU
>  	default n
>  
> +config PLATFORM_SPACEMIT
> +	bool
> +
>  config PLATFORM_SPACEMIT_K1
>  	bool "Spacemit K1 support"
>  	select FDT_HSM_SPACEMIT
> +	select PLATFORM_SPACEMIT
>  	default n
>  
>  config CPU_MIPS_P8700
> diff --git a/platform/generic/include/spacemit/common.h b/platform/generic/include/spacemit/common.h
> new file mode 100644
> index 00000000..317bb3e9
> --- /dev/null
> +++ b/platform/generic/include/spacemit/common.h
> @@ -0,0 +1,86 @@
> +/* SPDX-License-Identifier: BSD-2-Clause */
> +/*
> + * Copyright (c) 2025 SpacemiT
> + * Authors:
> + *   Xianbin Zhu <xianbin.zhu@linux.spacemit.com>
> + *   Troy Mitchell <troy.mitchell@linux.spacemit.com>
> + */
> +
> +#ifndef __RISCV_SPACEMIT_COMMON_H__
> +#define __RISCV_SPACEMIT_COMMON_H__
> +
> +#include <sbi/sbi_bitops.h>
> +
> +#define CSR_MSETUP				0x7c0
> +#define CSR_ML2SETUP				0x7f0
> +
> +/* dcache enable */
> +#define MSETUP_DE				BIT(0)
> +/* icache enable */
> +#define MSETUP_IE				BIT(1)
> +/* branch prediction enable */
> +#define MSETUP_BPE				BIT(4)
> +/* prefetch functionality enable */
> +#define MSETUP_PFE				BIT(5)
> +/* misaligned memory access enable */
> +#define MSETUP_MME				BIT(6)
> +/* ECC enable */
> +#define MSETUP_ECCE				BIT(16)
> +
> +#define PMU_AP_BASE				0xd4282800
> +
> +#define PMU_AP_CORE0_WAKEUP			(PMU_AP_BASE + 0x12c)
> +#define PMU_AP_CORE1_WAKEUP			(PMU_AP_BASE + 0x130)
> +#define PMU_AP_CORE2_WAKEUP			(PMU_AP_BASE + 0x134)
> +#define PMU_AP_CORE3_WAKEUP			(PMU_AP_BASE + 0x138)
> +#define PMU_AP_CORE4_WAKEUP			(PMU_AP_BASE + 0x324)
> +#define PMU_AP_CORE5_WAKEUP			(PMU_AP_BASE + 0x328)
> +#define PMU_AP_CORE6_WAKEUP			(PMU_AP_BASE + 0x32c)
> +#define PMU_AP_CORE7_WAKEUP			(PMU_AP_BASE + 0x330)
> +
> +#define PMU_AP_CORE0_IDLE_CFG			(PMU_AP_BASE + 0x124)
> +#define PMU_AP_CORE1_IDLE_CFG			(PMU_AP_BASE + 0x128)
> +#define PMU_AP_CORE2_IDLE_CFG			(PMU_AP_BASE + 0x160)
> +#define PMU_AP_CORE3_IDLE_CFG			(PMU_AP_BASE + 0x164)
> +#define PMU_AP_CORE4_IDLE_CFG			(PMU_AP_BASE + 0x304)
> +#define PMU_AP_CORE5_IDLE_CFG			(PMU_AP_BASE + 0x308)
> +#define PMU_AP_CORE6_IDLE_CFG			(PMU_AP_BASE + 0x30c)
> +#define PMU_AP_CORE7_IDLE_CFG			(PMU_AP_BASE + 0x310)
> +
> +/* boot entry for X100 clusters (C0, C1) */
> +#define C0_RVBADDR_LO_ADDR			0xd4282db0
> +#define C0_RVBADDR_HI_ADDR			0xd4282db4
> +#define C1_RVBADDR_LO_ADDR			0xd4282eb0
> +#define C1_RVBADDR_HI_ADDR			0xd4282eb4
> +
> +/* CCI-550 base and slave interface layout */
> +#define CCI_550_PLATFORM_CCI_ADDR		0xd8500000
> +#define CCI_550_STATUS				0x000c
> +#define CCI_550_STATUS_CHANGE_PENDING		BIT(0)
> +#define CCI_550_SLAVE_IFACE0_OFFSET		0x1000
> +#define CCI_550_SLAVE_IFACE_OFFSET(idx)		\
> +		(CCI_550_SLAVE_IFACE0_OFFSET + ((0x1000) * (idx)))
> +#define CCI_550_SNOOP_CTRL			0x0000
> +#define CCI_550_SNOOP_CTRL_ENABLE_SNOOPS	BIT(0)
> +#define CCI_550_SNOOP_CTRL_ENABLE_DVMS		BIT(1)
> +
> +/*
> + * PMU AP per-core idle control register bits (PMU_AP_COREn_IDLE_CFG).
> + * Bit definitions are identical in K1 and K3 User Manuals.
> + * These replace the original ad-hoc names from k1.h (which incorrectly
> + * called bit 1 SRAM_PWRDWN, bit 3 WAKE_MCE, and bit 4 MC_SW_REQ).
> + */
> +/* bit 0: CORE_IDLE - gate core clock externally when core enters WFI */
> +#define PMU_AP_IDLE_CORE_IDLE			BIT(0)
> +/* bit 1: CORE_PWRDWN - power off core on WFI (requires CORE_IDLE set) */
> +#define PMU_AP_IDLE_CORE_PWRDWN			BIT(1)
> +/* bit 2: Core L1 SRAM Power Down - reserved/not used in K1 and K3 */
> +#define PMU_AP_IDLE_CORE_L1_SRAM_PWRDWN		BIT(2)
> +/* bit 3: MASK_GIC_NIRQ_TO_CORE - mask nIRQ from GIC, auto-cleared by HW on power-down entry */
> +#define PMU_AP_IDLE_MASK_GIC_NIRQ		BIT(3)
> +/* bit 4: MASK_GIC_NFIQ_TO_CORE - mask nFIQ from GIC, auto-cleared by HW on power-down entry */
> +#define PMU_AP_IDLE_MASK_GIC_NFIQ		BIT(4)
> +
> +#define PLATFORM_MAX_CPUS_PER_CLUSTER		4
> +
> +#endif /* __RISCV_SPACEMIT_COMMON_H__ */
> diff --git a/platform/generic/include/spacemit/k1.h b/platform/generic/include/spacemit/k1.h
> index ac727b04..662b42e5 100644
> --- a/platform/generic/include/spacemit/k1.h
> +++ b/platform/generic/include/spacemit/k1.h
> @@ -1,88 +1,28 @@
> +/* SPDX-License-Identifier: BSD-2-Clause */
> +/*
> + * Copyright (c) 2025 SpacemiT
> + * Authors:
> + *   Xianbin Zhu <xianbin.zhu@linux.spacemit.com>
> + *   Troy Mitchell <troy.mitchell@linux.spacemit.com>
> + */
> +
>  #ifndef __RISCV_SPACEMIT_K1_H__
>  #define __RISCV_SPACEMIT_K1_H__
>  
> -#define CSR_MSETUP				0x7c0
> -#define CSR_MHCR				0x7c1
> -#define CSR_MRAOP				0x7c2
> -#define CSR_MHINT				0x7c5
> -#define CSR_ML2SETUP				0x7f0
> +#include <spacemit/common.h>
>  
> -/* decache enable */
> -#define MSETUP_DE				BIT(0)
> -/* icache enable */
> -#define MSETUP_IE				BIT(1)
> -/* branch prediction enable */
> -#define MSETUP_BPE				BIT(4)
> -/* prefetch functionality enable */
> -#define MSETUP_PFE				BIT(5)
> -/* misaligned memory access enable */
> -#define MSETUP_MME				BIT(6)
> -/* ECC enable */
> -#define MSETUP_ECCE				BIT(16)
> +#define CSR_MRAOP				0x7c2
>  
> -/* cache flush */
>  #define MRAOP_CACHE_FLUSH			GENMASK(1, 0)
>  
> -#define PMU_AP_BASE				0xd4282800
> -
> -#define PMU_AP_CORE0_WAKEUP			(PMU_AP_BASE + 0x12c)
> -#define PMU_AP_CORE1_WAKEUP			(PMU_AP_BASE + 0x130)
> -#define PMU_AP_CORE2_WAKEUP			(PMU_AP_BASE + 0x134)
> -#define PMU_AP_CORE3_WAKEUP			(PMU_AP_BASE + 0x138)
> -#define PMU_AP_CORE4_WAKEUP			(PMU_AP_BASE + 0x324)
> -#define PMU_AP_CORE5_WAKEUP			(PMU_AP_BASE + 0x328)
> -#define PMU_AP_CORE6_WAKEUP			(PMU_AP_BASE + 0x32c)
> -#define PMU_AP_CORE7_WAKEUP			(PMU_AP_BASE + 0x330)
> -
> -#define PMU_AP_CORE0_IDLE_CFG			(PMU_AP_BASE + 0x124)
> -#define PMU_AP_CORE1_IDLE_CFG			(PMU_AP_BASE + 0x128)
> -#define PMU_AP_CORE2_IDLE_CFG			(PMU_AP_BASE + 0x160)
> -#define PMU_AP_CORE3_IDLE_CFG			(PMU_AP_BASE + 0x164)
> -#define PMU_AP_CORE4_IDLE_CFG			(PMU_AP_BASE + 0x304)
> -#define PMU_AP_CORE5_IDLE_CFG			(PMU_AP_BASE + 0x308)
> -#define PMU_AP_CORE6_IDLE_CFG			(PMU_AP_BASE + 0x30c)
> -#define PMU_AP_CORE7_IDLE_CFG			(PMU_AP_BASE + 0x310)
> -
> -/* power down */
> -#define PMU_AP_IDLE_PWRDWN			BIT(0)
> -/* sram power down */
> -#define PMU_AP_IDLE_SRAM_PWRDWN			BIT(1)
> -/* enable wake up the memory controller */
> -#define PMU_AP_IDLE_WAKE_MCE			BIT(3)
> -/* disable memory controller software req */
> -#define PMU_AP_IDLE_MC_SW_REQ			BIT(4)
> -
> -#define PMU_AP_IDLE_PWRDOWN_MASK		(PMU_AP_IDLE_PWRDWN | PMU_AP_IDLE_SRAM_PWRDWN | \
> -						 PMU_AP_IDLE_WAKE_MCE | PMU_AP_IDLE_MC_SW_REQ)
> -/* cci */
> -#define C0_RVBADDR_LO_ADDR			0xd4282db0
> -#define C0_RVBADDR_HI_ADDR			0xd4282db4
> -#define C1_RVBADDR_LO_ADDR			0xd4282eb0
> -#define C1_RVBADDR_HI_ADDR			0xd4282eb4
> -
> -#define CCI_550_PLATFORM_CCI_ADDR		0xd8500000
> -
> -/* relative to cci base */
> -#define CCI_550_STATUS				0x000c
> -/* status register bits */
> -#define CCI_550_STATUS_CHANGE_PENDING		BIT(0)
> -
> -/* slave interface registers */
> -#define CCI_550_SLAVE_IFACE0_OFFSET		0x1000
> -#define CCI_550_SLAVE_IFACE_OFFSET(idx)		(CCI_550_SLAVE_IFACE0_OFFSET + ((0x1000) * (idx)))
> -
> -/* relative to slave interface base */
> -#define CCI_550_SNOOP_CTRL			0x0000
> -/* snoop control register bits */
> -#define CCI_550_SNOOP_CTRL_ENABLE_SNOOPS	BIT(0)
> -#define CCI_550_SNOOP_CTRL_ENABLE_DVMS		BIT(1)
> +#define PMU_AP_IDLE_PWRDOWN_K1_MASK		(PMU_AP_IDLE_CORE_IDLE |	\
> +						 PMU_AP_IDLE_CORE_PWRDWN |	\
> +						 PMU_AP_IDLE_MASK_GIC_NIRQ |	\
> +						 PMU_AP_IDLE_MASK_GIC_NFIQ)
>  
> -/* clusters and CPU mapping */
> -#define PLATFORM_MAX_CPUS			8
> -#define PLATFORM_MAX_CPUS_PER_CLUSTER		4
>  #define CPU_TO_CLUSTER(cpu)			((cpu) / PLATFORM_MAX_CPUS_PER_CLUSTER)
>  
> -#define PLAT_CCI_CLUSTER0_IFACE_IX		0
> -#define PLAT_CCI_CLUSTER1_IFACE_IX		1
> +#define PLAT_CCI_K1_CLUSTER0_IFACE_IX		0
> +#define PLAT_CCI_K1_CLUSTER1_IFACE_IX		1
>  
> -#endif
> +#endif /* __RISCV_SPACEMIT_K1_H__ */
> diff --git a/platform/generic/include/spacemit/spacemit.h b/platform/generic/include/spacemit/spacemit.h
> new file mode 100644
> index 00000000..671cfd05
> --- /dev/null
> +++ b/platform/generic/include/spacemit/spacemit.h
> @@ -0,0 +1,14 @@
> +/* SPDX-License-Identifier: BSD-2-Clause */
> +/*
> + * Copyright (c) 2025 SpacemiT
> + * Authors:
> + *   Xianbin Zhu <xianbin.zhu@linux.spacemit.com>
> + *   Troy Mitchell <troy.mitchell@linux.spacemit.com>
> + */
> +
> +#ifndef __RISCV_SPACEMIT_H__
> +#define __RISCV_SPACEMIT_H__
> +
> +void cci_enable_snoop_dvm_reqs(const int *cci_map, unsigned int master_id);
> +
> +#endif
> diff --git a/platform/generic/spacemit/k1.c b/platform/generic/spacemit/k1.c
> index 19a9b27c..323239e0 100644
> --- a/platform/generic/spacemit/k1.c
> +++ b/platform/generic/spacemit/k1.c
> @@ -12,37 +12,16 @@
>  #include <sbi/riscv_io.h>
>  #include <sbi/sbi_hsm.h>
>  #include <spacemit/k1.h>
> +#include <spacemit/spacemit.h>
> +
> +#define PLATFORM_MAX_CPUS			8
>  
>  /* only use 0-1 cluster in SpacemiT K1 */
>  static const int cci_map[] = {
> -	PLAT_CCI_CLUSTER0_IFACE_IX,
> -	PLAT_CCI_CLUSTER1_IFACE_IX,
> +	PLAT_CCI_K1_CLUSTER0_IFACE_IX,
> +	PLAT_CCI_K1_CLUSTER1_IFACE_IX,
>  };
>  
> -static void cci_enable_snoop_dvm_reqs(unsigned int master_id)
> -{
> -	int slave_if_id = cci_map[master_id];
> -
> -	/*
> -	 * Enable Snoops and DVM messages, no need for Read/Modify/Write as
> -	 * rest of bits are write ignore
> -	 */
> -	writel(CCI_550_SNOOP_CTRL_ENABLE_DVMS | CCI_550_SNOOP_CTRL_ENABLE_SNOOPS,
> -	       (void *)(u64)CCI_550_PLATFORM_CCI_ADDR +
> -	       CCI_550_SLAVE_IFACE_OFFSET(slave_if_id) + CCI_550_SNOOP_CTRL);
> -
> -	/*
> -	 * Wait for the completion of the write to the Snoop Control Register
> -	 * before testing the change_pending bit
> -	 */
> -	mb();
> -
> -	/* Wait for the dust to settle down */
> -	while ((readl((void *)(u64)CCI_550_PLATFORM_CCI_ADDR + CCI_550_STATUS) &
> -	       CCI_550_STATUS_CHANGE_PENDING))
> -		;
> -}
> -
>  static void spacemit_k1_pre_init(void)
>  {
>  	unsigned int clusterid, cluster_enabled = 0;
> @@ -62,7 +41,7 @@ static void spacemit_k1_pre_init(void)
>  
>  		if (!(cluster_enabled & (1 << clusterid))) {
>  			cluster_enabled |= 1 << clusterid;
> -			cci_enable_snoop_dvm_reqs(clusterid);
> +			cci_enable_snoop_dvm_reqs(cci_map, clusterid);
>  		}
>  	}
>  }
> diff --git a/platform/generic/spacemit/objects.mk b/platform/generic/spacemit/objects.mk
> index dcb37867..8309ad1f 100644
> --- a/platform/generic/spacemit/objects.mk
> +++ b/platform/generic/spacemit/objects.mk
> @@ -2,5 +2,6 @@
>  # SPDX-License-Identifier: BSD-2-Clause
>  #
>  
> +platform-objs-$(CONFIG_PLATFORM_SPACEMIT) += spacemit/spacemit.o
>  carray-platform_override_modules-$(CONFIG_PLATFORM_SPACEMIT_K1) += spacemit_k1
>  platform-objs-$(CONFIG_PLATFORM_SPACEMIT_K1) += spacemit/k1.o
> diff --git a/platform/generic/spacemit/spacemit.c b/platform/generic/spacemit/spacemit.c
> new file mode 100644
> index 00000000..a215c1ad
> --- /dev/null
> +++ b/platform/generic/spacemit/spacemit.c
> @@ -0,0 +1,36 @@
> +/*
> + * SPDX-License-Identifier: BSD-2-Clause
> + *
> + * Copyright (c) 2025 SpacemiT
> + * Authors:
> + *   Xianbin Zhu <xianbin.zhu@linux.spacemit.com>
> + *   Troy Mitchell <troy.mitchell@linux.spacemit.com>
> + */
> +
> +#include <platform_override.h>
> +#include <sbi/riscv_io.h>
> +#include <spacemit/common.h>
> +
> +void cci_enable_snoop_dvm_reqs(const int *cci_map, unsigned int master_id)
> +{
> +	int slave_if_id = cci_map[master_id];
> +
> +	/*
> +	 * Enable Snoops and DVM messages, no need for Read/Modify/Write as
> +	 * rest of bits are write ignore
> +	 */
> +	writel(CCI_550_SNOOP_CTRL_ENABLE_DVMS | CCI_550_SNOOP_CTRL_ENABLE_SNOOPS,
> +	       (void *)(unsigned long)CCI_550_PLATFORM_CCI_ADDR +
> +	       CCI_550_SLAVE_IFACE_OFFSET(slave_if_id) + CCI_550_SNOOP_CTRL);
> +
> +	/*
> +	 * Wait for the completion of the write to the Snoop Control Register
> +	 * before testing the change_pending bit
> +	 */
> +	mb();
> +
> +	/* Wait for the dust to settle down */
> +	while (readl((void *)(unsigned long)CCI_550_PLATFORM_CCI_ADDR + CCI_550_STATUS) &
> +	       CCI_550_STATUS_CHANGE_PENDING)
> +		;
> +}
> 

Tested-by: E Shattow <e@freeshell.de>

-- 
opensbi mailing list
opensbi@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/opensbi

  reply	other threads:[~2026-10-08  0:30 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-10 14:00 [PATCH v4 0/6] platform: generic: spacemit: add K3 platform support Troy Mitchell
2026-09-10 14:00 ` [PATCH v4 1/6] lib: sbi: select expected trap handler per hart Troy Mitchell
2026-10-08  0:29   ` E Shattow
2026-09-10 14:00 ` [PATCH v4 2/6] platform: generic: spacemit: k1: rename cache flush operation Troy Mitchell
2026-10-07 21:20   ` E Shattow
2026-09-10 14:00 ` [PATCH v4 3/6] platform: generic: spacemit: k1: move hart init to nascent hook Troy Mitchell
2026-10-07 21:14   ` E Shattow
2026-09-10 14:00 ` [PATCH v4 4/6] platform: generic: spacemit: k1: refactor platform support Troy Mitchell
2026-10-08  0:30   ` E Shattow [this message]
2026-09-10 14:00 ` [PATCH v4 5/6] platform: generic: spacemit: k3: add " Troy Mitchell
2026-10-08  0:30   ` E Shattow
2026-09-10 14:00 ` [PATCH v4 6/6] platform: generic: spacemit: k3: override cold_boot_allowed for hart 0 only Troy Mitchell
2026-10-07 20:58   ` E Shattow
2026-10-08  0:28 ` [PATCH v4 0/6] platform: generic: spacemit: add K3 platform support E Shattow

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=f8af9944-747b-414a-86cd-7c48e9ba2c7b@freeshell.de \
    --to=e@freeshell.de \
    --cc=anup@brainfault.org \
    --cc=ganboing@gmail.com \
    --cc=heinrich.schuchardt@canonical.com \
    --cc=opensbi@lists.infradead.org \
    --cc=samuel.holland@sifive.com \
    --cc=troy.mitchell@linux.spacemit.com \
    --cc=xianbin.zhu@linux.spacemit.com \
    --cc=zhangmeng.kevin@linux.spacemit.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox