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