From mboxrd@z Thu Jan  1 00:00:00 1970
Received: from mga14.intel.com (mga14.intel.com [192.55.52.115])
 by mx.groups.io with SMTP id smtpd.web11.2109.1680903908685764456
 for <devel@edk2.groups.io>;
 Fri, 07 Apr 2023 14:45:09 -0700
Authentication-Results: mx.groups.io;
 dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=jXkJh17i;
 spf=pass (domain: intel.com, ip: 192.55.52.115, mailfrom: andrei.warkentin@intel.com)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
  d=intel.com; i=@intel.com; q=dns/txt; s=Intel;
  t=1680903909; x=1712439909;
  h=from:to:cc:subject:date:message-id:in-reply-to:
   references:mime-version:content-transfer-encoding;
  bh=don3wibe61KiqCwHQJ7vhXOx8v9hZegcS3ufUduw1f4=;
  b=jXkJh17iILrRBnJSGewH8uAbye7ae9uv4ZKq1AKWwh98KjrUBql0S7l4
   jm4aUb1SRKP60xAj6yDpJCQkD3Z/iKw5nYqw0HAteM1+QmUTk/w8zIddg
   L+482+BNJYiX6y2QixemyweTcETkkoEAimcO8806tGmJ8akqw7DpBb2zk
   dlVh3NT0p1SXfQDSc45twKcJUzAQkkz71XMAGxFQyP5pNfM/+zAVII65i
   ADKO4YP1zeOokXEKRDRA81NAPIGeVZhDPeypTpGVHssmRPojrIwnVFra4
   +8rxXJiCuPpKZxKOMCCCLVhgidHY9fsgO3DipMrcj5PJoVZLGQzx875XK
   w==;
X-IronPort-AV: E=McAfee;i="6600,9927,10673"; a="343081066"
X-IronPort-AV: E=Sophos;i="5.98,328,1673942400"; 
   d="scan'208";a="343081066"
Received: from orsmga008.jf.intel.com ([10.7.209.65])
  by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Apr 2023 14:44:34 -0700
X-ExtLoop1: 1
X-IronPort-AV: E=McAfee;i="6600,9927,10673"; a="717964752"
X-IronPort-AV: E=Sophos;i="5.98,328,1673942400"; 
   d="scan'208";a="717964752"
Received: from jsilva4x-mobl.amr.corp.intel.com (HELO awarkent-mobl1.amr.corp.intel.com) ([10.212.106.145])
  by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Apr 2023 14:44:33 -0700
From: "Andrei Warkentin" <andrei.warkentin@intel.com>
To: devel@edk2.groups.io
Cc: Andrei Warkentin <andrei.warkentin@intel.com>,
	Daniel Schaefer <git@danielschaefer.me>,
	Gerd Hoffmann <kraxel@redhat.com>,
	Sunil V L <sunilvl@ventanamicro.com>
Subject: [PATCH v7 1/3] MdePkg: BaseRiscVSbiLib: make more useful to consumers
Date: Fri,  7 Apr 2023 16:44:23 -0500
Message-Id: <20230407214425.4360-2-andrei.warkentin@intel.com>
X-Mailer: git-send-email 2.25.1
In-Reply-To: <20230407214425.4360-1-andrei.warkentin@intel.com>
References: <20230407214425.4360-1-andrei.warkentin@intel.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Add a few more definitions and make SbiCall and TranslateError
usable (not static) by library users.

Cc: Daniel Schaefer <git@danielschaefer.me>
Acked-by: Gerd Hoffmann <kraxel@redhat.com>
Reviewed-by: Sunil V L <sunilvl@ventanamicro.com>
Signed-off-by: Andrei Warkentin <andrei.warkentin@intel.com>
---
 MdePkg/Include/Library/BaseRiscVSbiLib.h         | 40 ++++++++++++++++++--
 MdePkg/Library/BaseRiscVSbiLib/BaseRiscVSbiLib.c |  3 +-
 2 files changed, 38 insertions(+), 5 deletions(-)

diff --git a/MdePkg/Include/Library/BaseRiscVSbiLib.h b/MdePkg/Include/Library/BaseRiscVSbiLib.h
index e75520b4b888..2244165a6b6a 100644
--- a/MdePkg/Include/Library/BaseRiscVSbiLib.h
+++ b/MdePkg/Include/Library/BaseRiscVSbiLib.h
@@ -2,6 +2,7 @@
   Library to call the RISC-V SBI ecalls
 
   Copyright (c) 2021-2022, Hewlett Packard Development LP. All rights reserved.<BR>
+  Copyright (c) 2023, Intel Corporation. All rights reserved.<BR>
 
   SPDX-License-Identifier: BSD-2-Clause-Patent
 
@@ -18,10 +19,28 @@
 #include <Uefi.h>
 
 /* SBI Extension IDs */
-#define SBI_EXT_TIME  0x54494D45
-#define SBI_EXT_SRST  0x53525354
+#define SBI_EXT_0_1_CONSOLE_PUTCHAR  0x1
+#define SBI_EXT_0_1_CONSOLE_GETCHAR  0x2
+#define SBI_EXT_BASE                 0x10
+#define SBI_EXT_DBCN                 0x4442434E
+#define SBI_EXT_TIME                 0x54494D45
+#define SBI_EXT_SRST                 0x53525354
 
-/* SBI function IDs for TIME extension*/
+/* SBI function IDs for base extension */
+#define SBI_EXT_BASE_SPEC_VERSION   0x0
+#define SBI_EXT_BASE_IMPL_ID        0x1
+#define SBI_EXT_BASE_IMPL_VERSION   0x2
+#define SBI_EXT_BASE_PROBE_EXT      0x3
+#define SBI_EXT_BASE_GET_MVENDORID  0x4
+#define SBI_EXT_BASE_GET_MARCHID    0x5
+#define SBI_EXT_BASE_GET_MIMPID     0x6
+
+/* SBI function IDs for DBCN extension */
+#define SBI_EXT_DBCN_WRITE       0x0
+#define SBI_EXT_DBCN_READ        0x1
+#define SBI_EXT_DBCN_WRITE_BYTE  0x2
+
+/* SBI function IDs for TIME extension */
 #define SBI_EXT_TIME_SET_TIMER  0x0
 
 /* SBI function IDs for SRST extension */
@@ -62,6 +81,21 @@ typedef struct {
   UINTN    Value; ///< Value returned
 } SBI_RET;
 
+SBI_RET
+EFIAPI
+SbiCall (
+  IN  UINTN  ExtId,
+  IN  UINTN  FuncId,
+  IN  UINTN  NumArgs,
+  ...
+  );
+
+EFI_STATUS
+EFIAPI
+TranslateError (
+  IN  UINTN  SbiError
+  );
+
 VOID
 EFIAPI
 SbiSetTimer (
diff --git a/MdePkg/Library/BaseRiscVSbiLib/BaseRiscVSbiLib.c b/MdePkg/Library/BaseRiscVSbiLib/BaseRiscVSbiLib.c
index 2ba8f5ed366a..1141abfab9d0 100644
--- a/MdePkg/Library/BaseRiscVSbiLib/BaseRiscVSbiLib.c
+++ b/MdePkg/Library/BaseRiscVSbiLib/BaseRiscVSbiLib.c
@@ -4,6 +4,7 @@
   It allows calling an SBI function via an ecall from S-Mode.
 
   Copyright (c) 2021-2022, Hewlett Packard Development LP. All rights reserved.<BR>
+  Copyright (c) 2023, Intel Corporation. All rights reserved.<BR>
 
   SPDX-License-Identifier: BSD-2-Clause-Patent
 
@@ -31,7 +32,6 @@
   @retval  Returns SBI_RET structure with value and error code.
 
 **/
-STATIC
 SBI_RET
 EFIAPI
 SbiCall (
@@ -88,7 +88,6 @@ SbiCall (
   @param[in] SbiError   SBI error code
   @retval EFI_STATUS
 **/
-STATIC
 EFI_STATUS
 EFIAPI
 TranslateError (
-- 
2.25.1