summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSaket Dumbre <97769119+sacdintel@users.noreply.github.com>2023-03-22 15:27:56 -0700
committerGitHub <noreply@github.com>2023-03-22 15:27:56 -0700
commit01f11f2671451825e9c0db92ab1db69e1c4e941c (patch)
tree8355d252a8e4dfdea265517ad2fb6ff949d2f4e8
parent3a91cb5877c8626692401badd8b7de8c923261e7 (diff)
parent82afd0434e79f74b96a6be88115ddc8343a1ba40 (diff)
downloadacpica-01f11f2671451825e9c0db92ab1db69e1c4e941c.tar.gz
Merge pull request #804 from vlsunil/riscv_b1_ecr
Add first batch of RISC-V related definitions
-rw-r--r--source/common/ahtable.c1
-rw-r--r--source/common/dmtable.c2
-rw-r--r--source/common/dmtbdump2.c116
-rw-r--r--source/common/dmtbinfo2.c61
-rw-r--r--source/compiler/dtcompiler.h5
-rw-r--r--source/compiler/dttable2.c122
-rw-r--r--source/compiler/dttemplate.h20
-rw-r--r--source/include/acdisasm.h11
-rw-r--r--source/include/actbinfo.h4
-rw-r--r--source/include/actbl2.h69
10 files changed, 410 insertions, 1 deletions
diff --git a/source/common/ahtable.c b/source/common/ahtable.c
index 23a65d49c..6013b9413 100644
--- a/source/common/ahtable.c
+++ b/source/common/ahtable.c
@@ -246,6 +246,7 @@ const AH_TABLE AcpiGbl_SupportedTables[] =
{ACPI_SIG_PPTT, "Processor Properties Topology Table"},
{ACPI_SIG_PRMT, "Platform Runtime Mechanism Table"},
{ACPI_SIG_RASF, "RAS Features Table"},
+ {ACPI_SIG_RHCT, "RISC-V Hart Capabilities Table"},
{ACPI_SIG_RGRT, "Regulatory Graphics Resource Table"},
{ACPI_RSDP_NAME,"Root System Description Pointer"},
{ACPI_SIG_RSDT, "Root System Description Table"},
diff --git a/source/common/dmtable.c b/source/common/dmtable.c
index e77b05bb7..5b9fe6ef9 100644
--- a/source/common/dmtable.c
+++ b/source/common/dmtable.c
@@ -429,6 +429,7 @@ static const char *AcpiDmMadtSubnames[] =
"MSI Interrupt Controller", /* ACPI_MADT_TYPE_MSI_PIC */
"Bridge I/O Interrupt Controller", /* ACPI_MADT_TYPE_BIO_PIC */
"LPC Interrupt Controller", /* ACPI_MADT_TYPE_LPC_PIC */
+ "RISC-V Interrupt Controller", /* ACPI_MADT_TYPE_RINTC */
"Unknown Subtable Type", /* Reserved */
"Types 80-FF are used for OEM data" /* Reserved for OEM data */
};
@@ -734,6 +735,7 @@ const ACPI_DMTABLE_DATA AcpiDmTableData[] =
{ACPI_SIG_PRMT, NULL, AcpiDmDumpPrmt, DtCompilePrmt, TemplatePrmt},
{ACPI_SIG_RASF, AcpiDmTableInfoRasf, NULL, NULL, TemplateRasf},
{ACPI_SIG_RGRT, NULL, AcpiDmDumpRgrt, DtCompileRgrt, TemplateRgrt},
+ {ACPI_SIG_RHCT, NULL, AcpiDmDumpRhct, DtCompileRhct, TemplateRhct},
{ACPI_SIG_RSDT, NULL, AcpiDmDumpRsdt, DtCompileRsdt, TemplateRsdt},
{ACPI_SIG_S3PT, NULL, NULL, NULL, TemplateS3pt},
{ACPI_SIG_SBST, AcpiDmTableInfoSbst, NULL, NULL, TemplateSbst},
diff --git a/source/common/dmtbdump2.c b/source/common/dmtbdump2.c
index 7216f877f..958ecce8f 100644
--- a/source/common/dmtbdump2.c
+++ b/source/common/dmtbdump2.c
@@ -2747,6 +2747,122 @@ AcpiDmDumpRgrt (
/*******************************************************************************
*
+ * FUNCTION: AcpiDmDumpRhct
+ *
+ * PARAMETERS: Table - A RHCT table
+ *
+ * RETURN: None
+ *
+ * DESCRIPTION: Format the contents of a RHCT.
+ *
+ ******************************************************************************/
+
+void
+AcpiDmDumpRhct (
+ ACPI_TABLE_HEADER *Table)
+{
+ ACPI_STATUS Status;
+ ACPI_RHCT_NODE_HEADER *Subtable;
+ ACPI_RHCT_HART_INFO *RhctHartInfo;
+ ACPI_RHCT_ISA_STRING *RhctIsaString;
+ UINT32 Length = Table->Length;
+ UINT8 SubtableOffset, IsaPadOffset;
+ UINT32 Offset = sizeof (ACPI_TABLE_RHCT);
+ UINT32 i;
+
+ /* Main table */
+
+ Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoRhct);
+ if (ACPI_FAILURE (Status))
+ {
+ return;
+ }
+
+ /* Subtables */
+
+ while (Offset < Table->Length)
+ {
+ AcpiOsPrintf ("\n");
+
+ /* Common subtable header */
+
+ Subtable = ACPI_ADD_PTR (ACPI_RHCT_NODE_HEADER, Table, Offset);
+ if (Subtable->Length < sizeof (ACPI_RHCT_NODE_HEADER))
+ {
+ AcpiOsPrintf ("Invalid subtable length\n");
+ return;
+ }
+ Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
+ Subtable->Length, AcpiDmTableInfoRhctNodeHdr);
+ if (ACPI_FAILURE (Status))
+ {
+ return;
+ }
+
+ Length = sizeof (ACPI_RHCT_NODE_HEADER);
+
+ if (Subtable->Length < Length)
+ {
+ AcpiOsPrintf ("Invalid subtable length\n");
+ return;
+ }
+ SubtableOffset = Length;
+
+ switch (Subtable->Type)
+ {
+ case ACPI_RHCT_NODE_TYPE_HART_INFO:
+ Status = AcpiDmDumpTable (Table->Length, Offset + SubtableOffset,
+ ACPI_ADD_PTR (ACPI_RHCT_HART_INFO, Subtable, SubtableOffset),
+ sizeof (ACPI_RHCT_HART_INFO), AcpiDmTableInfoRhctHartInfo1);
+
+ RhctHartInfo = ACPI_ADD_PTR (ACPI_RHCT_HART_INFO, Subtable, SubtableOffset);
+
+ if ((UINT16)(Subtable->Length - SubtableOffset) <
+ (UINT16)(RhctHartInfo->NumOffsets * 4))
+ {
+ AcpiOsPrintf ("Invalid number of offsets\n");
+ return;
+ }
+ SubtableOffset += sizeof (ACPI_RHCT_HART_INFO);
+ for (i = 0; i < RhctHartInfo->NumOffsets; i++)
+ {
+ Status = AcpiDmDumpTable (Table->Length, Offset + SubtableOffset,
+ ACPI_ADD_PTR (UINT32, Subtable, SubtableOffset),
+ 4, AcpiDmTableInfoRhctHartInfo2);
+ if (ACPI_FAILURE (Status))
+ {
+ return;
+ }
+
+ SubtableOffset += 4;
+ }
+ break;
+
+ case ACPI_RHCT_NODE_TYPE_ISA_STRING:
+ RhctIsaString = ACPI_ADD_PTR (ACPI_RHCT_ISA_STRING, Subtable, SubtableOffset);
+ IsaPadOffset = SubtableOffset + 2 + RhctIsaString->IsaLength;
+ Status = AcpiDmDumpTable (Table->Length, Offset + SubtableOffset,
+ RhctIsaString, RhctIsaString->IsaLength, AcpiDmTableInfoRhctIsa1);
+ if (Subtable->Length > IsaPadOffset)
+ {
+ Status = AcpiDmDumpTable (Table->Length, Offset + SubtableOffset,
+ ACPI_ADD_PTR (UINT8, Subtable, IsaPadOffset),
+ (Subtable->Length - IsaPadOffset), AcpiDmTableInfoRhctIsaPad);
+ }
+
+ default:
+ break;
+ }
+
+ /* Point to next subtable */
+
+ Offset += Subtable->Length;
+ }
+}
+
+
+/*******************************************************************************
+ *
* FUNCTION: AcpiDmDumpS3pt
*
* PARAMETERS: Table - A S3PT table
diff --git a/source/common/dmtbinfo2.c b/source/common/dmtbinfo2.c
index 1dd3d696f..214206add 100644
--- a/source/common/dmtbinfo2.c
+++ b/source/common/dmtbinfo2.c
@@ -2074,6 +2074,67 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoRgrt0[] =
/*******************************************************************************
*
+ * RHCT - RISC-V Hart Capabilities Table
+ *
+ ******************************************************************************/
+
+ACPI_DMTABLE_INFO AcpiDmTableInfoRhct[] =
+{
+ {ACPI_DMT_UINT32, ACPI_RHCT_OFFSET (Reserved), "Reserved", 0},
+ {ACPI_DMT_UINT64, ACPI_RHCT_OFFSET (TimeBaseFreq), "Timer Base Frequency", 0},
+ {ACPI_DMT_UINT32, ACPI_RHCT_OFFSET (NodeCount), "Number of nodes", 0},
+ {ACPI_DMT_UINT32, ACPI_RHCT_OFFSET (NodeOffset), "Offset to the node array", 0},
+ ACPI_DMT_TERMINATOR
+};
+
+
+/* Common Subtable header (one per Subtable) */
+
+ACPI_DMTABLE_INFO AcpiDmTableInfoRhctNodeHdr[] =
+{
+ {ACPI_DMT_UINT16, ACPI_RHCTH_OFFSET (Type), "Subtable Type", 0},
+ {ACPI_DMT_UINT16, ACPI_RHCTH_OFFSET (Length), "Length", 0},
+ {ACPI_DMT_UINT16, ACPI_RHCTH_OFFSET (Revision), "Revision", 0},
+ ACPI_DMT_TERMINATOR
+};
+
+/* 0: ISA string type */
+
+ACPI_DMTABLE_INFO AcpiDmTableInfoRhctIsa1[] =
+{
+ {ACPI_DMT_UINT16, ACPI_RHCT0_OFFSET (IsaLength), "ISA string length", 0},
+ {ACPI_DMT_STRING, ACPI_RHCT0_OFFSET (Isa[0]), "ISA string", 0},
+ ACPI_DMT_TERMINATOR
+};
+
+
+/* Optional padding field */
+
+ACPI_DMTABLE_INFO AcpiDmTableInfoRhctIsaPad[] =
+{
+ {ACPI_DMT_RAW_BUFFER, 0, "Optional Padding", DT_OPTIONAL},
+ ACPI_DMT_TERMINATOR
+};
+
+/* 0xFFFF: Hart Info type */
+
+ACPI_DMTABLE_INFO AcpiDmTableInfoRhctHartInfo1[] =
+{
+ {ACPI_DMT_UINT16, ACPI_RHCTFFFF_OFFSET (NumOffsets), "Number of offsets", 0},
+ {ACPI_DMT_UINT32, ACPI_RHCTFFFF_OFFSET (Uid), "Processor UID", 0},
+ ACPI_DMT_TERMINATOR
+};
+
+
+ACPI_DMTABLE_INFO AcpiDmTableInfoRhctHartInfo2[] =
+{
+ {ACPI_DMT_UINT32, 0, "Nodes", DT_OPTIONAL},
+ ACPI_DMT_TERMINATOR
+};
+
+
+/*******************************************************************************
+ *
* S3PT - S3 Performance Table
*
******************************************************************************/
diff --git a/source/compiler/dtcompiler.h b/source/compiler/dtcompiler.h
index 8be3765aa..cddc95191 100644
--- a/source/compiler/dtcompiler.h
+++ b/source/compiler/dtcompiler.h
@@ -706,6 +706,10 @@ DtCompileRgrt (
void **PFieldList);
ACPI_STATUS
+DtCompileRhct (
+ void **PFieldList);
+
+ACPI_STATUS
DtCompileRsdt (
void **PFieldList);
@@ -824,6 +828,7 @@ extern const unsigned char TemplatePptt[];
extern const unsigned char TemplatePrmt[];
extern const unsigned char TemplateRasf[];
extern const unsigned char TemplateRgrt[];
+extern const unsigned char TemplateRhct[];
extern const unsigned char TemplateRsdt[];
extern const unsigned char TemplateS3pt[];
extern const unsigned char TemplateSbst[];
diff --git a/source/compiler/dttable2.c b/source/compiler/dttable2.c
index 0d68cdbca..007b67476 100644
--- a/source/compiler/dttable2.c
+++ b/source/compiler/dttable2.c
@@ -2128,6 +2128,128 @@ DtCompileRgrt (
/******************************************************************************
*
+ * FUNCTION: DtCompileRhct
+ *
+ * PARAMETERS: List - Current field list pointer
+ *
+ * RETURN: Status
+ *
+ * DESCRIPTION: Compile RHCT.
+ *
+ *****************************************************************************/
+
+ACPI_STATUS
+DtCompileRhct (
+ void **List)
+{
+ ACPI_STATUS Status;
+ ACPI_RHCT_NODE_HEADER *RhctHeader;
+ ACPI_RHCT_HART_INFO *RhctHartInfo = NULL;
+ DT_SUBTABLE *Subtable;
+ DT_SUBTABLE *ParentTable;
+ ACPI_DMTABLE_INFO *InfoTable;
+ DT_FIELD **PFieldList = (DT_FIELD **) List;
+ DT_FIELD *SubtableStart;
+
+
+ /* Compile the main table */
+
+ Status = DtCompileTable (PFieldList, AcpiDmTableInfoRhct,
+ &Subtable);
+ if (ACPI_FAILURE (Status))
+ {
+ return (Status);
+ }
+
+ ParentTable = DtPeekSubtable ();
+ while (*PFieldList)
+ {
+ SubtableStart = *PFieldList;
+
+ /* Compile RHCT subtable header */
+
+ Status = DtCompileTable (PFieldList, AcpiDmTableInfoRhctNodeHdr,
+ &Subtable);
+ if (ACPI_FAILURE (Status))
+ {
+ return (Status);
+ }
+ DtInsertSubtable (ParentTable, Subtable);
+ RhctHeader = ACPI_CAST_PTR (ACPI_RHCT_NODE_HEADER, Subtable->Buffer);
+ RhctHeader->Length = (UINT16)(Subtable->Length);
+
+ switch (RhctHeader->Type)
+ {
+ case ACPI_RHCT_NODE_TYPE_ISA_STRING:
+
+ InfoTable = AcpiDmTableInfoRhctIsa1;
+ break;
+
+ case ACPI_RHCT_NODE_TYPE_HART_INFO:
+
+ InfoTable = AcpiDmTableInfoRhctHartInfo1;
+ break;
+
+ default:
+
+ DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "RHCT");
+ return (AE_ERROR);
+ }
+
+ /* Compile RHCT subtable body */
+
+ Status = DtCompileTable (PFieldList, InfoTable, &Subtable);
+ if (ACPI_FAILURE (Status))
+ {
+ return (Status);
+ }
+ DtInsertSubtable (ParentTable, Subtable);
+ RhctHeader->Length += (UINT16)(Subtable->Length);
+
+ /* Compile RHCT subtable additionals */
+
+ switch (RhctHeader->Type)
+ {
+ case ACPI_RHCT_NODE_TYPE_HART_INFO:
+
+ RhctHartInfo = ACPI_SUB_PTR (ACPI_RHCT_HART_INFO,
+ Subtable->Buffer, sizeof (ACPI_RHCT_NODE_HEADER));
+ if (RhctHartInfo)
+ {
+
+ RhctHartInfo->NumOffsets = 0;
+ while (*PFieldList)
+ {
+ Status = DtCompileTable (PFieldList,
+ AcpiDmTableInfoRhctHartInfo2, &Subtable);
+ if (ACPI_FAILURE (Status))
+ {
+ return (Status);
+ }
+ if (!Subtable)
+ {
+ break;
+ }
+
+ DtInsertSubtable (ParentTable, Subtable);
+ RhctHeader->Length += (UINT16)(Subtable->Length);
+ RhctHartInfo->NumOffsets++;
+ }
+ }
+ break;
+
+ default:
+
+ break;
+ }
+ }
+
+ return (AE_OK);
+}
+
+
+/******************************************************************************
+ *
* FUNCTION: DtCompileRsdt
*
* PARAMETERS: List - Current field list pointer
diff --git a/source/compiler/dttemplate.h b/source/compiler/dttemplate.h
index e69bb29ba..755da4022 100644
--- a/source/compiler/dttemplate.h
+++ b/source/compiler/dttemplate.h
@@ -1716,6 +1716,26 @@ const unsigned char TemplateRgrt[] =
0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27 /* 00000048 " !"#$%&'" */
};
+const unsigned char TemplateRhct[] =
+{
+ 0x52,0x48,0x43,0x54,0x7C,0x00,0x00,0x00, /* 00000000 "RHCT|..." */
+ 0x01,0x7D,0x4F,0x45,0x4D,0x43,0x41,0x00, /* 00000008 "..OEMCA." */
+ 0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45, /* 00000010 "TEMPLATE" */
+ 0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */
+ 0x28,0x09,0x22,0x20,0x00,0x00,0x00,0x00, /* 00000020 "... ...." */
+ 0x80,0x96,0x98,0x00,0x00,0x00,0x00,0x00, /* 00000028 "........" */
+ 0x02,0x00,0x00,0x00,0x38,0x00,0x00,0x00, /* 00000030 "....8..." */
+ 0x00,0x00,0x34,0x00,0x01,0x00,0x2B,0x00, /* 00000038 "..4...*." */
+ 0x72,0x76,0x36,0x34,0x69,0x6D,0x61,0x66, /* 00000040 "rv64imaf" */
+ 0x64,0x63,0x68,0x5F,0x7A,0x69,0x63,0x73, /* 00000048 "dch_zics" */
+ 0x72,0x5F,0x7A,0x69,0x66,0x65,0x6E,0x63, /* 00000050 "r_zifenc" */
+ 0x65,0x69,0x5F,0x7A,0x62,0x61,0x5F,0x7A, /* 00000058 "ei_zba_z" */
+ 0x62,0x62,0x5F,0x7A,0x62,0x63,0x5F,0x7A, /* 00000060 "bb_zbc_z" */
+ 0x62,0x73,0x00,0x00,0xFF,0xFF,0x10,0x00, /* 00000068 "bs......" */
+ 0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00, /* 00000070 "........" */
+ 0x38,0x00,0x00,0x00 /* 00000078 "........" */
+};
+
const unsigned char TemplateRsdp[] =
{
0x52,0x53,0x44,0x20,0x50,0x54,0x52,0x20, /* 00000000 "RSD PTR " */
diff --git a/source/include/acdisasm.h b/source/include/acdisasm.h
index 8ec4885b3..afc9034b8 100644
--- a/source/include/acdisasm.h
+++ b/source/include/acdisasm.h
@@ -296,6 +296,7 @@ typedef enum
ACPI_DMT_PMTT_VENDOR,
ACPI_DMT_PPTT,
ACPI_DMT_RGRT,
+ ACPI_DMT_RHCT,
ACPI_DMT_SDEI,
ACPI_DMT_SDEV,
ACPI_DMT_SLIC,
@@ -641,6 +642,12 @@ extern ACPI_DMTABLE_INFO AcpiDmTableInfoPrmtHandler[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoRasf[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoRgrt[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoRgrt0[];
+extern ACPI_DMTABLE_INFO AcpiDmTableInfoRhct[];
+extern ACPI_DMTABLE_INFO AcpiDmTableInfoRhctNodeHdr[];
+extern ACPI_DMTABLE_INFO AcpiDmTableInfoRhctIsa1[];
+extern ACPI_DMTABLE_INFO AcpiDmTableInfoRhctIsaPad[];
+extern ACPI_DMTABLE_INFO AcpiDmTableInfoRhctHartInfo1[];
+extern ACPI_DMTABLE_INFO AcpiDmTableInfoRhctHartInfo2[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoRsdp1[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoRsdp2[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoS3pt[];
@@ -908,6 +915,10 @@ void
AcpiDmDumpRgrt (
ACPI_TABLE_HEADER *Table);
+void
+AcpiDmDumpRhct (
+ ACPI_TABLE_HEADER *Table);
+
UINT32
AcpiDmDumpRsdp (
ACPI_TABLE_HEADER *Table);
diff --git a/source/include/actbinfo.h b/source/include/actbinfo.h
index 5900c7b6c..5417aff4a 100644
--- a/source/include/actbinfo.h
+++ b/source/include/actbinfo.h
@@ -189,6 +189,7 @@
#define ACPI_PMTT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_PMTT,f)
#define ACPI_RASF_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_RASF,f)
#define ACPI_RGRT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_RGRT,f)
+#define ACPI_RHCT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_RHCT,f)
#define ACPI_S3PT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_S3PT,f)
#define ACPI_SBST_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_SBST,f)
#define ACPI_SDEI_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_SDEI,f)
@@ -400,6 +401,9 @@
#define ACPI_PRMTH_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_PRMT_HEADER,f)
#define ACPI_PRMT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_PRMT_MODULE_INFO,f)
#define ACPI_PRMT1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_PRMT_HANDLER_INFO,f)
+#define ACPI_RHCTH_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_RHCT_NODE_HEADER,f)
+#define ACPI_RHCT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_RHCT_ISA_STRING,f)
+#define ACPI_RHCTFFFF_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_RHCT_HART_INFO,f)
#define ACPI_S3PTH_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_FPDT_HEADER,f)
#define ACPI_S3PT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_S3PT_RESUME,f)
#define ACPI_S3PT1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_S3PT_SUSPEND,f)
diff --git a/source/include/actbl2.h b/source/include/actbl2.h
index 39bcb7f56..9b2812a0f 100644
--- a/source/include/actbl2.h
+++ b/source/include/actbl2.h
@@ -192,6 +192,7 @@
#define ACPI_SIG_PRMT "PRMT" /* Platform Runtime Mechanism Table */
#define ACPI_SIG_RASF "RASF" /* RAS Feature table */
#define ACPI_SIG_RGRT "RGRT" /* Regulatory Graphics Resource Table */
+#define ACPI_SIG_RHCT "RHCT" /* RISC-V Hart Capabilities Table */
#define ACPI_SIG_SBST "SBST" /* Smart Battery Specification Table */
#define ACPI_SIG_SDEI "SDEI" /* Software Delegated Exception Interface Table */
#define ACPI_SIG_SDEV "SDEV" /* Secure Devices table */
@@ -1134,7 +1135,8 @@ enum AcpiMadtType
ACPI_MADT_TYPE_MSI_PIC = 21,
ACPI_MADT_TYPE_BIO_PIC = 22,
ACPI_MADT_TYPE_LPC_PIC = 23,
- ACPI_MADT_TYPE_RESERVED = 24, /* 24 to 0x7F are reserved */
+ ACPI_MADT_TYPE_RINTC = 24,
+ ACPI_MADT_TYPE_RESERVED = 25, /* 25 to 0x7F are reserved */
ACPI_MADT_TYPE_OEM_RESERVED = 0x80 /* 0x80 to 0xFF are reserved for OEM use */
};
@@ -1547,6 +1549,24 @@ enum AcpiMadtLpcPicVersion {
ACPI_MADT_LPC_PIC_VERSION_RESERVED = 2 /* 2 and greater are reserved */
};
+/* 24: RISC-V INTC */
+struct acpi_madt_rintc {
+ ACPI_SUBTABLE_HEADER Header;
+ UINT8 Version;
+ UINT8 Reserved;
+ UINT32 Flags;
+ UINT64 HartId;
+ UINT32 Uid; /* ACPI processor UID */
+};
+
+/* Values for RISC-V INTC Version field above */
+
+enum AcpiMadtRintcVersion {
+ ACPI_MADT_RINTC_VERSION_NONE = 0,
+ ACPI_MADT_RINTC_VERSION_V1 = 1,
+ ACPI_MADT_RINTC_VERSION_RESERVED = 2 /* 2 and greater are reserved */
+};
+
/* 80: OEM data */
typedef struct acpi_madt_oem_data
@@ -3258,6 +3278,53 @@ enum AcpiRgrtImageType
/*******************************************************************************
*
+ * RHCT - RISC-V Hart Capabilities Table
+ * Version 1
+ *
+ ******************************************************************************/
+
+typedef struct acpi_table_rhct {
+ ACPI_TABLE_HEADER Header; /* Common ACPI table header */
+ UINT32 Reserved;
+ UINT64 TimeBaseFreq;
+ UINT32 NodeCount;
+ UINT32 NodeOffset;
+} ACPI_TABLE_RHCT;
+
+/*
+ * RHCT subtables
+ */
+typedef struct acpi_rhct_node_header {
+ UINT16 Type;
+ UINT16 Length;
+ UINT16 Revision;
+} ACPI_RHCT_NODE_HEADER;
+
+/* Values for RHCT subtable Type above */
+
+enum acpi_rhct_node_type {
+ ACPI_RHCT_NODE_TYPE_ISA_STRING = 0x0000,
+ ACPI_RHCT_NODE_TYPE_HART_INFO = 0xFFFF,
+};
+
+/*
+ * RHCT node specific subtables
+ */
+
+/* ISA string node structure */
+typedef struct acpi_rhct_isa_string {
+ UINT16 IsaLength;
+ char Isa[];
+} ACPI_RHCT_ISA_STRING;
+
+/* Hart Info node structure */
+typedef struct acpi_rhct_hart_info {
+ UINT16 NumOffsets;
+ UINT32 Uid; /* ACPI processor UID */
+} ACPI_RHCT_HART_INFO;
+
+/*******************************************************************************
+ *
* SBST - Smart Battery Specification Table
* Version 1
*