https://git.reactos.org/?p=reactos.git;a=commitdiff;h=9b247f6ae3a9c7fc6dc5ec469efea5c1d43d0ef4

commit 9b247f6ae3a9c7fc6dc5ec469efea5c1d43d0ef4
Author:     Thomas Faber <[email protected]>
AuthorDate: Sat Nov 5 11:58:19 2022 -0400
Commit:     Thomas Faber <[email protected]>
CommitDate: Sun Nov 6 08:33:25 2022 -0500

    [ACPICA] Update to version 20210930. CORE-17905
---
 drivers/bus/acpi/acpica/dispatcher/dsfield.c |   2 +-
 drivers/bus/acpi/acpica/hardware/hwesleep.c  |   7 +-
 drivers/bus/acpi/acpica/hardware/hwsleep.c   |  10 +-
 drivers/bus/acpi/acpica/hardware/hwxfsleep.c |   6 +
 drivers/bus/acpi/acpica/include/acdisasm.h   |  25 ++-
 drivers/bus/acpi/acpica/include/acglobal.h   |   2 +
 drivers/bus/acpi/acpica/include/acpixf.h     |   2 +-
 drivers/bus/acpi/acpica/include/actbinfo.h   |  14 ++
 drivers/bus/acpi/acpica/include/actbl2.h     | 289 ++++++++++++++++++++++++++-
 drivers/bus/acpi/acpica/include/actbl3.h     |  10 +-
 drivers/bus/acpi/acpica/include/actypes.h    |   1 +
 drivers/bus/acpi/acpica/utilities/utosi.c    |   1 +
 media/doc/3rd Party Files.txt                |   2 +-
 13 files changed, 352 insertions(+), 19 deletions(-)

diff --git a/drivers/bus/acpi/acpica/dispatcher/dsfield.c 
b/drivers/bus/acpi/acpica/dispatcher/dsfield.c
index fbd1fee20e2..bf1925d8f62 100644
--- a/drivers/bus/acpi/acpica/dispatcher/dsfield.c
+++ b/drivers/bus/acpi/acpica/dispatcher/dsfield.c
@@ -689,7 +689,7 @@ AcpiDsInitFieldObjects (
     }
 
 #ifdef ACPI_EXEC_APP
-        Flags |= ACPI_NS_OVERRIDE_IF_FOUND;
+    Flags |= ACPI_NS_OVERRIDE_IF_FOUND;
 #endif
     /*
      * Walk the list of entries in the FieldList
diff --git a/drivers/bus/acpi/acpica/hardware/hwesleep.c 
b/drivers/bus/acpi/acpica/hardware/hwesleep.c
index b099d88b13c..6ec0397d2e8 100644
--- a/drivers/bus/acpi/acpica/hardware/hwesleep.c
+++ b/drivers/bus/acpi/acpica/hardware/hwesleep.c
@@ -204,18 +204,15 @@ ACPI_STATUS
 AcpiHwExtendedWakePrep (
     UINT8                   SleepState)
 {
-    ACPI_STATUS             Status;
     UINT8                   SleepTypeValue;
 
 
     ACPI_FUNCTION_TRACE (HwExtendedWakePrep);
 
 
-    Status = AcpiGetSleepTypeData (ACPI_STATE_S0,
-        &AcpiGbl_SleepTypeA, &AcpiGbl_SleepTypeB);
-    if (ACPI_SUCCESS (Status))
+    if (AcpiGbl_SleepTypeAS0 != ACPI_SLEEP_TYPE_INVALID)
     {
-        SleepTypeValue = ((AcpiGbl_SleepTypeA << ACPI_X_SLEEP_TYPE_POSITION) &
+        SleepTypeValue = ((AcpiGbl_SleepTypeAS0 << ACPI_X_SLEEP_TYPE_POSITION) 
&
             ACPI_X_SLEEP_TYPE_MASK);
 
         (void) AcpiWrite ((UINT64) (SleepTypeValue | ACPI_X_SLEEP_ENABLE),
diff --git a/drivers/bus/acpi/acpica/hardware/hwsleep.c 
b/drivers/bus/acpi/acpica/hardware/hwsleep.c
index 03d9f1aa240..22b380fb255 100644
--- a/drivers/bus/acpi/acpica/hardware/hwsleep.c
+++ b/drivers/bus/acpi/acpica/hardware/hwsleep.c
@@ -231,7 +231,7 @@ ACPI_STATUS
 AcpiHwLegacyWakePrep (
     UINT8                   SleepState)
 {
-    ACPI_STATUS             Status;
+    ACPI_STATUS             Status = AE_OK;
     ACPI_BIT_REGISTER_INFO  *SleepTypeRegInfo;
     ACPI_BIT_REGISTER_INFO  *SleepEnableRegInfo;
     UINT32                  Pm1aControl;
@@ -245,9 +245,7 @@ AcpiHwLegacyWakePrep (
      * This is unclear from the ACPI Spec, but it is required
      * by some machines.
      */
-    Status = AcpiGetSleepTypeData (ACPI_STATE_S0,
-        &AcpiGbl_SleepTypeA, &AcpiGbl_SleepTypeB);
-    if (ACPI_SUCCESS (Status))
+    if (AcpiGbl_SleepTypeAS0 != ACPI_SLEEP_TYPE_INVALID)
     {
         SleepTypeRegInfo =
             AcpiHwGetBitRegisterInfo (ACPI_BITREG_SLEEP_TYPE);
@@ -268,9 +266,9 @@ AcpiHwLegacyWakePrep (
 
             /* Insert the SLP_TYP bits */
 
-            Pm1aControl |= (AcpiGbl_SleepTypeA <<
+            Pm1aControl |= (AcpiGbl_SleepTypeAS0 <<
                 SleepTypeRegInfo->BitPosition);
-            Pm1bControl |= (AcpiGbl_SleepTypeB <<
+            Pm1aControl |= (AcpiGbl_SleepTypeBS0 <<
                 SleepTypeRegInfo->BitPosition);
 
             /* Write the control registers and ignore any errors */
diff --git a/drivers/bus/acpi/acpica/hardware/hwxfsleep.c 
b/drivers/bus/acpi/acpica/hardware/hwxfsleep.c
index 93bb6216671..6fcbd74743f 100644
--- a/drivers/bus/acpi/acpica/hardware/hwxfsleep.c
+++ b/drivers/bus/acpi/acpica/hardware/hwxfsleep.c
@@ -363,6 +363,12 @@ AcpiEnterSleepStatePrep (
         return_ACPI_STATUS (Status);
     }
 
+    Status = AcpiGetSleepTypeData (ACPI_STATE_S0,
+        &AcpiGbl_SleepTypeAS0, &AcpiGbl_SleepTypeBS0);
+    if (ACPI_FAILURE (Status)) {
+        AcpiGbl_SleepTypeAS0 = ACPI_SLEEP_TYPE_INVALID;
+    }
+
     /* Execute the _PTS method (Prepare To Sleep) */
 
     ArgList.Count = 1;
diff --git a/drivers/bus/acpi/acpica/include/acdisasm.h 
b/drivers/bus/acpi/acpica/include/acdisasm.h
index a27e667ed33..5f3e7569e39 100644
--- a/drivers/bus/acpi/acpica/include/acdisasm.h
+++ b/drivers/bus/acpi/acpica/include/acdisasm.h
@@ -116,6 +116,7 @@ typedef enum
     ACPI_DMT_BUF10,
     ACPI_DMT_BUF12,
     ACPI_DMT_BUF16,
+    ACPI_DMT_BUF18,
     ACPI_DMT_BUF128,
     ACPI_DMT_SIG,
     ACPI_DMT_STRING,
@@ -169,6 +170,8 @@ typedef enum
     ACPI_DMT_LPIT,
     ACPI_DMT_MADT,
     ACPI_DMT_NFIT,
+    ACPI_DMT_NHLT1,
+    ACPI_DMT_NHLT1a,
     ACPI_DMT_PCCT,
     ACPI_DMT_PHAT,
     ACPI_DMT_PMTT,
@@ -436,7 +439,21 @@ extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNfit5[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNfit6[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNfit6a[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNfit7[];
-extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPdtt[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNhlt[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNhlt0[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNhlt1[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNhlt2[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNhlt3[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNhlt3a[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNhlt4[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNhlt5[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNhlt5a[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNhlt5b[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNhlt5c[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNhlt6[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNhlt7[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNhlt7a[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNhlt8[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPhatHdr[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPhat0[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPhat0a[];
@@ -457,6 +474,7 @@ extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPcct2[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPcct3[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPcct4[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPcct5[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPdtt[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPdtt0[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPptt0[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPptt0a[];
@@ -501,6 +519,7 @@ extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSrat2[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSrat3[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSrat4[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSrat5[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSrat6[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoStao[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoStaoStr[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSvkl[];
@@ -683,6 +702,10 @@ void
 AcpiDmDumpNfit (
     ACPI_TABLE_HEADER       *Table);
 
+void
+AcpiDmDumpNhlt (
+    ACPI_TABLE_HEADER       *Table);
+
 void
 AcpiDmDumpPcct (
     ACPI_TABLE_HEADER       *Table);
diff --git a/drivers/bus/acpi/acpica/include/acglobal.h 
b/drivers/bus/acpi/acpica/include/acglobal.h
index 9b3fc612390..6f6389fea34 100644
--- a/drivers/bus/acpi/acpica/include/acglobal.h
+++ b/drivers/bus/acpi/acpica/include/acglobal.h
@@ -257,6 +257,8 @@ ACPI_INIT_GLOBAL (ACPI_COMMENT_NODE,   
*AcpiGbl_LastListHead, NULL);
 extern ACPI_BIT_REGISTER_INFO           
AcpiGbl_BitRegisterInfo[ACPI_NUM_BITREG];
 ACPI_GLOBAL (UINT8,                     AcpiGbl_SleepTypeA);
 ACPI_GLOBAL (UINT8,                     AcpiGbl_SleepTypeB);
+ACPI_GLOBAL (UINT8,                     AcpiGbl_SleepTypeAS0);
+ACPI_GLOBAL (UINT8,                     AcpiGbl_SleepTypeBS0);
 
 
 /*****************************************************************************
diff --git a/drivers/bus/acpi/acpica/include/acpixf.h 
b/drivers/bus/acpi/acpica/include/acpixf.h
index 06571ffef89..a3e5af9f443 100644
--- a/drivers/bus/acpi/acpica/include/acpixf.h
+++ b/drivers/bus/acpi/acpica/include/acpixf.h
@@ -46,7 +46,7 @@
 
 /* Current ACPICA subsystem version in YYYYMMDD format */
 
-#define ACPI_CA_VERSION                 0x20210730
+#define ACPI_CA_VERSION                 0x20210930
 
 #include "acconfig.h"
 #include "actypes.h"
diff --git a/drivers/bus/acpi/acpica/include/actbinfo.h 
b/drivers/bus/acpi/acpica/include/actbinfo.h
index 7cf0965e015..cb321d1b6f2 100644
--- a/drivers/bus/acpi/acpica/include/actbinfo.h
+++ b/drivers/bus/acpi/acpica/include/actbinfo.h
@@ -72,6 +72,7 @@
 #define ACPI_MPST_OFFSET(f)             (UINT16) ACPI_OFFSET 
(ACPI_TABLE_MPST,f)
 #define ACPI_MSCT_OFFSET(f)             (UINT16) ACPI_OFFSET 
(ACPI_TABLE_MSCT,f)
 #define ACPI_NFIT_OFFSET(f)             (UINT16) ACPI_OFFSET 
(ACPI_TABLE_NFIT,f)
+#define ACPI_NHLT_OFFSET(f)             (UINT16) ACPI_OFFSET 
(ACPI_TABLE_NHLT,f)
 #define ACPI_PCCT_OFFSET(f)             (UINT16) ACPI_OFFSET 
(ACPI_TABLE_PCCT,f)
 #define ACPI_PDTT_OFFSET(f)             (UINT16) ACPI_OFFSET 
(ACPI_TABLE_PDTT,f)
 #define ACPI_PMTT_OFFSET(f)             (UINT16) ACPI_OFFSET 
(ACPI_TABLE_PMTT,f)
@@ -220,6 +221,19 @@
 #define ACPI_NFIT5_OFFSET(f)            (UINT16) ACPI_OFFSET 
(ACPI_NFIT_DATA_REGION,f)
 #define ACPI_NFIT6_OFFSET(f)            (UINT16) ACPI_OFFSET 
(ACPI_NFIT_FLUSH_ADDRESS,f)
 #define ACPI_NFIT7_OFFSET(f)            (UINT16) ACPI_OFFSET 
(ACPI_NFIT_CAPABILITIES,f)
+#define ACPI_NHLT0_OFFSET(f)            (UINT16) ACPI_OFFSET 
(ACPI_NHLT_ENDPOINT,f)
+#define ACPI_NHLT1_OFFSET(f)            (UINT16) ACPI_OFFSET 
(ACPI_NHLT_DEVICE_SPECIFIC_CONFIG,f)
+#define ACPI_NHLT2_OFFSET(f)            (UINT16) ACPI_OFFSET 
(ACPI_NHLT_WAVE_EXTENSIBLE,f)
+#define ACPI_NHLT3_OFFSET(f)            (UINT16) ACPI_OFFSET 
(ACPI_NHLT_FORMAT_CONFIG,f)
+#define ACPI_NHLT4_OFFSET(f)            (UINT16) ACPI_OFFSET 
(ACPI_NHLT_FORMATS_CONFIG,f)
+#define ACPI_NHLT5_OFFSET(f)            (UINT16) ACPI_OFFSET 
(ACPI_NHLT_DEVICE_SPECIFIC_CONFIG,f)
+#define ACPI_NHLT5A_OFFSET(f)           (UINT16) ACPI_OFFSET 
(ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_A,f)
+#define ACPI_NHLT5B_OFFSET(f)           (UINT16) ACPI_OFFSET 
(ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_B,f)
+#define ACPI_NHLT5C_OFFSET(f)           (UINT16) ACPI_OFFSET 
(ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_C,f)
+#define ACPI_NHLT6_OFFSET(f)            (UINT16) ACPI_OFFSET 
(ACPI_NHLT_VENDOR_MIC_CONFIG,f)
+#define ACPI_NHLT7_OFFSET(f)            (UINT16) ACPI_OFFSET 
(ACPI_NHLT_LINUX_SPECIFIC_COUNT,f)
+#define ACPI_NHLT7A_OFFSET(f)           (UINT16) ACPI_OFFSET 
(ACPI_NHLT_LINUX_SPECIFIC_DATA,f)
+#define ACPI_NHLT8_OFFSET(f)            (UINT16) ACPI_OFFSET 
(ACPI_NHLT_TABLE_TERMINATOR,f)
 #define ACPI_PCCT0_OFFSET(f)            (UINT16) ACPI_OFFSET 
(ACPI_PCCT_SUBSPACE,f)
 #define ACPI_PCCT1_OFFSET(f)            (UINT16) ACPI_OFFSET 
(ACPI_PCCT_HW_REDUCED,f)
 #define ACPI_PCCT2_OFFSET(f)            (UINT16) ACPI_OFFSET 
(ACPI_PCCT_HW_REDUCED_TYPE2,f)
diff --git a/drivers/bus/acpi/acpica/include/actbl2.h 
b/drivers/bus/acpi/acpica/include/actbl2.h
index 92325864f29..97b13fcb996 100644
--- a/drivers/bus/acpi/acpica/include/actbl2.h
+++ b/drivers/bus/acpi/acpica/include/actbl2.h
@@ -71,6 +71,7 @@
 #define ACPI_SIG_MSCT           "MSCT"      /* Maximum System Characteristics 
Table */
 #define ACPI_SIG_MSDM           "MSDM"      /* Microsoft Data Management Table 
*/
 #define ACPI_SIG_NFIT           "NFIT"      /* NVDIMM Firmware Interface Table 
*/
+#define ACPI_SIG_NHLT           "NHLT"      /* Non HD Audio Link Table */
 #define ACPI_SIG_PCCT           "PCCT"      /* Platform Communications Channel 
Table */
 #define ACPI_SIG_PDTT           "PDTT"      /* Platform Debug Trigger Table */
 #define ACPI_SIG_PHAT           "PHAT"      /* Platform Health Assessment 
Table */
@@ -82,7 +83,6 @@
 #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 */
-#define ACPI_SIG_NHLT           "NHLT"      /* Non-HDAudio Link Table */
 #define ACPI_SIG_SVKL           "SVKL"      /* Storage Volume Key Location 
Table */
 
 
@@ -1163,6 +1163,7 @@ typedef struct acpi_madt_multiproc_wakeup_mailbox
 /* MADT Local APIC flags */
 
 #define ACPI_MADT_ENABLED           (1)         /* 00: Processor is usable if 
set */
+#define ACPI_MADT_ONLINE_CAPABLE    (2)         /* 01: System HW supports 
enabling processor at runtime */
 
 /* MADT MPS INTI flags (IntiFlags) */
 
@@ -1669,6 +1670,292 @@ typedef struct nfit_device_handle
     (((handle) & ACPI_NFIT_NODE_ID_MASK)        >> ACPI_NFIT_NODE_ID_OFFSET)
 
 
+/*******************************************************************************
+ *
+ * NHLT - Non HD Audio Link Table
+ *
+ * Conforms to: Intel Smart Sound Technology NHLT Specification
+ * Version 0.8.1, January 2020.
+ *
+ 
******************************************************************************/
+
+/* Main table */
+
+typedef struct acpi_table_nhlt
+{
+    ACPI_TABLE_HEADER       Header;             /* Common ACPI table header */
+    UINT8                   EndpointCount;
+
+} ACPI_TABLE_NHLT;
+
+typedef struct acpi_nhlt_endpoint
+{
+    UINT32                  DescriptorLength;
+    UINT8                   LinkType;
+    UINT8                   InstanceId;
+    UINT16                  VendorId;
+    UINT16                  DeviceId;
+    UINT16                  RevisionId;
+    UINT32                  SubsystemId;
+    UINT8                   DeviceType;
+    UINT8                   Direction;
+    UINT8                   VirtualBusId;
+
+} ACPI_NHLT_ENDPOINT;
+
+/* Types for LinkType field above */
+
+#define ACPI_NHLT_RESERVED_HD_AUDIO         0
+#define ACPI_NHLT_RESERVED_DSP              1
+#define ACPI_NHLT_PDM                       2
+#define ACPI_NHLT_SSP                       3
+#define ACPI_NHLT_RESERVED_SLIMBUS          4
+#define ACPI_NHLT_RESERVED_SOUNDWIRE        5
+#define ACPI_NHLT_TYPE_RESERVED             6 /* 6 and above are reserved */
+
+/* All other values above are reserved */
+
+/* Values for DeviceId field above */
+
+#define ACPI_NHLT_PDM_DMIC                  0xAE20
+#define ACPI_NHLT_BT_SIDEBAND               0xAE30
+#define ACPI_NHLT_I2S_TDM_CODECS            0xAE23
+
+/* Values for DeviceType field above */
+
+/* SSP Link */
+
+#define ACPI_NHLT_LINK_BT_SIDEBAND          0
+#define ACPI_NHLT_LINK_FM                   1
+#define ACPI_NHLT_LINK_MODEM                2
+/* 3 is reserved */
+#define ACPI_NHLT_LINK_SSP_ANALOG_CODEC     4
+
+/* PDM Link */
+
+#define ACPI_NHLT_PDM_ON_CAVS_1P8           0
+#define ACPI_NHLT_PDM_ON_CAVS_1P5           1
+
+/* Values for Direction field above */
+
+#define ACPI_NHLT_DIR_RENDER                0
+#define ACPI_NHLT_DIR_CAPTURE               1
+#define ACPI_NHLT_DIR_RENDER_LOOPBACK       2
+#define ACPI_NHLT_DIR_RENDER_FEEDBACK       3
+#define ACPI_NHLT_DIR_RESERVED              4   /* 4 and above are reserved */
+
+typedef struct acpi_nhlt_device_specific_config
+{
+    UINT32                  CapabilitiesSize;
+    UINT8                   VirtualSlot;
+    UINT8                   ConfigType;
+
+} ACPI_NHLT_DEVICE_SPECIFIC_CONFIG;
+
+typedef struct acpi_nhlt_device_specific_config_a
+{
+    UINT32                  CapabilitiesSize;
+    UINT8                   VirtualSlot;
+    UINT8                   ConfigType;
+    UINT8                   ArrayType;
+
+} ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_A;
+
+/* Values for Config Type above */
+
+#define ACPI_NHLT_TYPE_MIC_ARRAY            0x01
+#define ACPI_NHLT_TYPE_GENERIC              0x00
+
+/* Mask for Extension field of ArrayType */
+
+#define ACPI_NHLT_ARRAY_TYPE_MASK           0x10
+
+typedef struct acpi_nhlt_device_specific_config_b
+{
+    UINT32                  CapabilitiesSize;
+
+} ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_B;
+
+typedef struct acpi_nhlt_device_specific_config_c
+{
+    UINT32                  CapabilitiesSize;
+    UINT8                   VirtualSlot;
+
+} ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_C;
+
+typedef struct acpi_nhlt_wave_extensible
+{
+    UINT16                  FormatTag;
+    UINT16                  ChannelCount;
+    UINT32                  SamplesPerSec;
+    UINT32                  AvgBytesPerSec;
+    UINT16                  BlockAlign;
+    UINT16                  BitsPerSample;
+    UINT16                  ExtraFormatSize;
+    UINT16                  ValidBitsPerSample;
+    UINT32                  ChannelMask;
+    UINT8                   SubFormatGuid[16];
+
+} ACPI_NHLT_WAVE_EXTENSIBLE;
+
+/* Values for ChannelMask above */
+
+#define ACPI_NHLT_SPKR_FRONT_LEFT             0x1
+#define ACPI_NHLT_SPKR_FRONT_RIGHT            0x2
+#define ACPI_NHLT_SPKR_FRONT_CENTER           0x4
+#define ACPI_NHLT_SPKR_LOW_FREQ               0x8
+#define ACPI_NHLT_SPKR_BACK_LEFT              0x10
+#define ACPI_NHLT_SPKR_BACK_RIGHT             0x20
+#define ACPI_NHLT_SPKR_FRONT_LEFT_OF_CENTER   0x40
+#define ACPI_NHLT_SPKR_FRONT_RIGHT_OF_CENTER  0x80
+#define ACPI_NHLT_SPKR_BACK_CENTER            0x100
+#define ACPI_NHLT_SPKR_SIDE_LEFT              0x200
+#define ACPI_NHLT_SPKR_SIDE_RIGHT             0x400
+#define ACPI_NHLT_SPKR_TOP_CENTER             0x800
+#define ACPI_NHLT_SPKR_TOP_FRONT_LEFT         0x1000
+#define ACPI_NHLT_SPKR_TOP_FRONT_CENTER       0x2000
+#define ACPI_NHLT_SPKR_TOP_FRONT_RIGHT        0x4000
+#define ACPI_NHLT_SPKR_TOP_BACK_LEFT          0x8000
+#define ACPI_NHLT_SPKR_TOP_BACK_CENTER        0x10000
+#define ACPI_NHLT_SPKR_TOP_BACK_RIGHT         0x20000
+
+typedef struct acpi_nhlt_format_config
+{
+    ACPI_NHLT_WAVE_EXTENSIBLE   Format;
+    UINT32                      CapabilitySize;
+    UINT8                       Capabilities[];
+
+} ACPI_NHLT_FORMAT_CONFIG;
+
+typedef struct acpi_nhlt_formats_config
+{
+    UINT8                   FormatsCount;
+
+} ACPI_NHLT_FORMATS_CONFIG;
+
+typedef struct acpi_nhlt_device_specific_hdr
+{
+    UINT8                   VirtualSlot;
+    UINT8                   ConfigType;
+
+} ACPI_NHLT_DEVICE_SPECIFIC_HDR;
+
+/* Types for ConfigType above */
+
+#define ACPI_NHLT_GENERIC                   0
+#define ACPI_NHLT_MIC                       1
+#define ACPI_NHLT_RENDER                    3
+
+typedef struct acpi_nhlt_mic_device_specific_config
+{
+    ACPI_NHLT_DEVICE_SPECIFIC_HDR   DeviceConfig;
+    UINT8                           ArrayTypeExt;
+
+} ACPI_NHLT_MIC_DEVICE_SPECIFIC_CONFIG;
+
+/* Values for ArrayTypeExt above */
+
+#define SMALL_LINEAR_2ELEMENT               0x0A
+#define BIG_LINEAR_2ELEMENT                 0x0B
+#define FIRST_GEOMETRY_LINEAR_4ELEMENT      0x0C
+#define PLANAR_LSHAPED_4ELEMENT             0x0D
+#define SECOND_GEOMETRY_LINEAR_4ELEMENT     0x0E
+#define VENDOR_DEFINED                      0x0F
+#define ARRAY_TYPE_MASK                     0x0F
+#define ARRAY_TYPE_EXT_MASK                 0x10
+
+#define NO_EXTENSION                        0x0
+#define MIC_SNR_SENSITIVITY_EXT             0x1
+
+
+typedef struct acpi_nhlt_vendor_mic_config
+{
+    UINT8                   Type;
+    UINT8                   Panel;
+    UINT16                  SpeakerPositionDistance;    // mm
+    UINT16                  HorizontalOffset;           // mm
+    UINT16                  VerticalOffset;             // mm
+    UINT8                   FrequencyLowBand;           // 5*Hz
+    UINT8                   FrequencyHighBand;          // 500*Hz
+    UINT16                  DirectionAngle;             // -180 - + 180
+    UINT16                  ElevationAngle;             // -180 - + 180
+    UINT16                  WorkVerticalAngleBegin;     // -180 - + 180 with 2 
deg step
+    UINT16                  WorkVerticalAngleEnd;       // -180 - + 180 with 2 
deg step
+    UINT16                  WorkHorizontalAngleBegin;   // -180 - + 180 with 2 
deg step
+    UINT16                  WorkHorizontalAngleEnd;     // -180 - + 180 with 2 
deg step
+
+} ACPI_NHLT_VENDOR_MIC_CONFIG;
+
+/* Values for Type field above */
+
+#define MIC_OMNIDIRECTIONAL                 0
+#define MIC_SUBCARDIOID                     1
+#define MIC_CARDIOID                        2
+#define MIC_SUPER_CARDIOID                  3
+#define MIC_HYPER_CARDIOID                  4
+#define MIC_8_SHAPED                        5
+#define MIC_VENDOR_DEFINED                  7
+
+/* Values for Panel field above */
+
+#define MIC_TOP                             0
+#define MIC_BOTTOM                          1
+#define MIC_LEFT                            2
+#define MIC_RIGHT                           3
+#define MIC_FRONT                           4
+#define MIC_REAR                            5
+
+typedef struct acpi_nhlt_vendor_mic_device_specific_config
+{
+    ACPI_NHLT_MIC_DEVICE_SPECIFIC_CONFIG    MicArrayDeviceConfig;
+    UINT8                                   NumberOfMicrophones;
+    ACPI_NHLT_VENDOR_MIC_CONFIG             MicConfig[];            // Indexed 
by NumberOfMicrophones
+
+} ACPI_NHLT_VENDOR_MIC_DEVICE_SPECIFIC_CONFIG;
+
+/* Microphone SNR and Sensitivity extension */
+
+typedef struct acpi_nhlt_mic_snr_sensitivity_extension
+{
+    UINT32                  SNR;
+    UINT32                  Sensitivity;
+
+} ACPI_NHLT_MIC_SNR_SENSITIVITY_EXTENSION;
+
+typedef struct acpi_nhlt_render_feedback_device_specific_config
+{
+    ACPI_NHLT_DEVICE_SPECIFIC_CONFIG    DeviceConfig;
+    UINT8                               FeedbackVirtualSlot;    // Render slot 
in case of capture
+    UINT16                              FeedbackChannels;       // Informative 
only
+    UINT16                              FeedbackValidBitsPerSample;
+
+} ACPI_NHLT_RENDER_FEEDBACK_DEVICE_SPECIFIC_CONFIG;
+
+/* Linux-specific structures */
+
+typedef struct acpi_nhlt_linux_specific_count
+{
+    UINT8                               StructureCount;
+
+} ACPI_NHLT_LINUX_SPECIFIC_COUNT;
+
+typedef struct acpi_nhlt_linux_specific_data
+{
+    UINT8                               DeviceId[16];
+    UINT8                               DeviceInstanceId;
+    UINT8                               DevicePortId;
+    UINT8                               Filler[18];
+
+} ACPI_NHLT_LINUX_SPECIFIC_DATA;
+
+typedef struct acpi_nhlt_table_terminator
+{
+    UINT32                  TerminatorValue;
+    UINT32                  TerminatorSignature;
+
+} ACPI_NHLT_TABLE_TERMINATOR;
+
+
 
/*******************************************************************************
  *
  * PCCT - Platform Communications Channel Table (ACPI 5.0)
diff --git a/drivers/bus/acpi/acpica/include/actbl3.h 
b/drivers/bus/acpi/acpica/include/actbl3.h
index 00a87c81f46..e4fddd71f47 100644
--- a/drivers/bus/acpi/acpica/include/actbl3.h
+++ b/drivers/bus/acpi/acpica/include/actbl3.h
@@ -244,7 +244,8 @@ enum AcpiSratType
     ACPI_SRAT_TYPE_GICC_AFFINITY        = 3,
     ACPI_SRAT_TYPE_GIC_ITS_AFFINITY     = 4, /* ACPI 6.2 */
     ACPI_SRAT_TYPE_GENERIC_AFFINITY     = 5, /* ACPI 6.3 */
-    ACPI_SRAT_TYPE_RESERVED             = 6  /* 5 and greater are reserved */
+    ACPI_SRAT_TYPE_GENERIC_PORT_AFFINITY = 6, /* ACPI 6.4 */
+    ACPI_SRAT_TYPE_RESERVED              = 7  /* 7 and greater are reserved */
 };
 
 /*
@@ -339,8 +340,11 @@ typedef struct acpi_srat_gic_its_affinity
 
 } ACPI_SRAT_GIC_ITS_AFFINITY;
 
-
-/* 5: Generic Initiator Affinity Structure (ACPI 6.3) */
+/*
+ * Common structure for SRAT subtable types:
+ * 5: ACPI_SRAT_TYPE_GENERIC_AFFINITY
+ * 6: ACPI_SRAT_TYPE_GENERIC_PORT_AFFINITY
+ */
 
 typedef struct acpi_srat_generic_affinity
 {
diff --git a/drivers/bus/acpi/acpica/include/actypes.h 
b/drivers/bus/acpi/acpica/include/actypes.h
index e59877df12f..c68ba3526ad 100644
--- a/drivers/bus/acpi/acpica/include/actypes.h
+++ b/drivers/bus/acpi/acpica/include/actypes.h
@@ -1423,6 +1423,7 @@ typedef enum
 #define ACPI_OSI_WIN_10_RS4             0x12
 #define ACPI_OSI_WIN_10_RS5             0x13
 #define ACPI_OSI_WIN_10_19H1            0x14
+#define ACPI_OSI_WIN_10_20H1            0x15
 
 
 /* Definitions of getopt */
diff --git a/drivers/bus/acpi/acpica/utilities/utosi.c 
b/drivers/bus/acpi/acpica/utilities/utosi.c
index 4efd66c7417..d8eef7457cd 100644
--- a/drivers/bus/acpi/acpica/utilities/utosi.c
+++ b/drivers/bus/acpi/acpica/utilities/utosi.c
@@ -112,6 +112,7 @@ static ACPI_INTERFACE_INFO    
AcpiDefaultSupportedInterfaces[] =
     {"Windows 2018",        NULL, 0, ACPI_OSI_WIN_10_RS4},       /* Windows 10 
version 1803 - Added 11/2018 */
     {"Windows 2018.2",      NULL, 0, ACPI_OSI_WIN_10_RS5},       /* Windows 10 
version 1809 - Added 11/2018 */
     {"Windows 2019",        NULL, 0, ACPI_OSI_WIN_10_19H1},      /* Windows 10 
version 1903 - Added 08/2019 */
+    {"Windows 2020",        NULL, 0, ACPI_OSI_WIN_10_20H1},      /* Windows 10 
version 2004 - Added 08/2021 */
 
     /* Feature Group Strings */
 
diff --git a/media/doc/3rd Party Files.txt b/media/doc/3rd Party Files.txt
index faa31511714..8dc78f50315 100644
--- a/media/doc/3rd Party Files.txt     
+++ b/media/doc/3rd Party Files.txt     
@@ -69,7 +69,7 @@ URL: https://gitlab.freedesktop.org/mesa/glu, 
ftp://ftp.freedesktop.org/pub/mesa
 
 Title: ACPICA
 Path: drivers/bus/acpi/acpica
-Used Version: 20210730
+Used Version: 20210930
 License: GPL-2.0 (https://spdx.org/licenses/GPL-2.0.html)
 URL: https://acpica.org/
 

Reply via email to