https://git.reactos.org/?p=reactos.git;a=commitdiff;h=9b247f6ae3a9c7fc6dc5e…
commit 9b247f6ae3a9c7fc6dc5ec469efea5c1d43d0ef4
Author: Thomas Faber <thomas.faber(a)reactos.org>
AuthorDate: Sat Nov 5 11:58:19 2022 -0400
Commit: Thomas Faber <thomas.faber(a)reactos.org>
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/