From e5a7f556ce22984128bed0a336551a968c818450 Mon Sep 17 00:00:00 2001
From: Liu Yibin <yibin_liu@c-sky.com>
Date: Fri, 27 Mar 2020 11:31:48 +0800
Subject: platform: thead/c910: Use HSM extension to boot secondary cores

Remove custom vendor extension and use HSM extension
to boot secondary cores

Signed-off-by: Liu Yibin <yibin_liu@c-sky.com>
Reviewed-by: Anup Patel <anup.patel@wdc.com>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
---
 platform/thead/c910/platform.c | 20 +++-----------------
 platform/thead/c910/platform.h |  5 ++---
 2 files changed, 5 insertions(+), 20 deletions(-)

(limited to 'platform')

diff --git a/platform/thead/c910/platform.c b/platform/thead/c910/platform.c
index 9d98a31..adb1a20 100644
--- a/platform/thead/c910/platform.c
+++ b/platform/thead/c910/platform.c
@@ -106,25 +106,11 @@ static int c910_system_shutdown(u32 type)
 	return 0;
 }
 
-void sbi_boot_other_core(int hartid)
+int c910_hart_start(u32 hartid, ulong saddr)
 {
-	csr_write(CSR_MRVBR, FW_TEXT_START);
+	csr_write(CSR_MRVBR, saddr);
 	csr_write(CSR_MRMR, csr_read(CSR_MRMR) | (1 << hartid));
-}
 
-static int c910_vendor_ext_provider(long extid, long funcid,
-				unsigned long *args,
-				unsigned long *out_value,
-				struct sbi_trap_info *out_trap)
-{
-	switch (extid) {
-	case SBI_EXT_VENDOR_C910_BOOT_OTHER_CORE:
-		sbi_boot_other_core((int)args[0]);
-		break;
-	default:
-		sbi_printf("Unsupported private sbi call: %ld\n", extid);
-		asm volatile ("ebreak");
-	}
 	return 0;
 }
 
@@ -143,7 +129,7 @@ const struct sbi_platform_operations platform_ops = {
 
 	.system_shutdown     = c910_system_shutdown,
 
-	.vendor_ext_provider = c910_vendor_ext_provider,
+	.hart_start          = c910_hart_start,
 };
 
 const struct sbi_platform platform = {
diff --git a/platform/thead/c910/platform.h b/platform/thead/c910/platform.h
index 5e74128..0faf2af 100644
--- a/platform/thead/c910/platform.h
+++ b/platform/thead/c910/platform.h
@@ -10,7 +10,8 @@
 #define SBI_THEAD_FEATURES	\
 	(SBI_PLATFORM_HAS_SCOUNTEREN | \
 	 SBI_PLATFORM_HAS_MCOUNTEREN | \
-	 SBI_PLATFORM_HAS_MFAULTS_DELEGATION)
+	 SBI_PLATFORM_HAS_MFAULTS_DELEGATION | \
+	 SBI_PLATFORM_HAS_HART_SECONDARY_BOOT)
 
 #define CSR_MCOR         0x7c2
 #define CSR_MHCR         0x7c1
@@ -21,8 +22,6 @@
 #define CSR_MRMR         0x7c6
 #define CSR_MRVBR        0x7c7
 
-#define SBI_EXT_VENDOR_C910_BOOT_OTHER_CORE    0x09000003
-
 #define C910_PLIC_CLINT_OFFSET     0x04000000  /* 64M */
 #define C910_PLIC_DELEG_OFFSET     0x001ffffc
 #define C910_PLIC_DELEG_ENABLE     0x1
-- 
cgit v1.2.3