Skip to content

Commit

Permalink
ACPICA: iASL/Disassembler: Additional support for NHLT table
Browse files Browse the repository at this point in the history
ACPICA commit 0420852ffc520b81960e877852703b739c16025c

Added support for Vendor-defined microphone arrays and SNR
(signal-to-noise) extension.

Link: https://github.com/acpica/acpica/commit/0420852f
Signed-off-by: Bob Moore <robert.moore@intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
  • Loading branch information
Bob Moore authored and Rafael J. Wysocki committed Dec 27, 2021
1 parent a3e525f commit e4a07f5
Showing 1 changed file with 42 additions and 30 deletions.
72 changes: 42 additions & 30 deletions include/acpi/actbl2.h
Original file line number Diff line number Diff line change
Expand Up @@ -1495,12 +1495,10 @@ struct 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 array_type */

#define ACPI_NHLT_ARRAY_TYPE_MASK 0x10
#define ACPI_NHLT_CONFIG_TYPE_GENERIC 0x00
#define ACPI_NHLT_CONFIG_TYPE_MIC_ARRAY 0x01
#define ACPI_NHLT_CONFIG_TYPE_RENDER_FEEDBACK 0x03
#define ACPI_NHLT_CONFIG_TYPE_RESERVED 0x04 /* 4 and above are reserved */

struct acpi_nhlt_device_specific_config_b {
u32 capabilities_size;
Expand All @@ -1511,6 +1509,11 @@ struct acpi_nhlt_device_specific_config_c {
u8 virtual_slot;
};

struct acpi_nhlt_render_device_specific_config {
u32 capabilities_size;
u8 virtual_slot;
};

struct acpi_nhlt_wave_extensible {
u16 format_tag;
u16 channel_count;
Expand Down Expand Up @@ -1573,17 +1576,22 @@ struct acpi_nhlt_mic_device_specific_config {

/* Values for array_type_ext 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 ACPI_NHLT_ARRAY_TYPE_RESERVED 0x09 // 9 and below are reserved
#define ACPI_NHLT_SMALL_LINEAR_2ELEMENT 0x0A
#define ACPI_NHLT_BIG_LINEAR_2ELEMENT 0x0B
#define ACPI_NHLT_FIRST_GEOMETRY_LINEAR_4ELEMENT 0x0C
#define ACPI_NHLT_PLANAR_LSHAPED_4ELEMENT 0x0D
#define ACPI_NHLT_SECOND_GEOMETRY_LINEAR_4ELEMENT 0x0E
#define ACPI_NHLT_VENDOR_DEFINED 0x0F
#define ACPI_NHLT_ARRAY_TYPE_MASK 0x0F
#define ACPI_NHLT_ARRAY_TYPE_EXT_MASK 0x10

#define ACPI_NHLT_NO_EXTENSION 0x0
#define ACPI_NHLT_MIC_SNR_SENSITIVITY_EXT (1<<4)

#define NO_EXTENSION 0x0
#define MIC_SNR_SENSITIVITY_EXT 0x1
struct acpi_nhlt_vendor_mic_count {
u8 microphone_count;
};

struct acpi_nhlt_vendor_mic_config {
u8 type;
Expand All @@ -1603,22 +1611,25 @@ struct 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
#define ACPI_NHLT_MIC_OMNIDIRECTIONAL 0
#define ACPI_NHLT_MIC_SUBCARDIOID 1
#define ACPI_NHLT_MIC_CARDIOID 2
#define ACPI_NHLT_MIC_SUPER_CARDIOID 3
#define ACPI_NHLT_MIC_HYPER_CARDIOID 4
#define ACPI_NHLT_MIC_8_SHAPED 5
#define ACPI_NHLT_MIC_RESERVED6 6 // 6 is reserved
#define ACPI_NHLT_MIC_VENDOR_DEFINED 7
#define ACPI_NHLT_MIC_RESERVED 8 // 8 and above are reserved

/* 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
#define ACPI_NHLT_MIC_POSITION_TOP 0
#define ACPI_NHLT_MIC_POSITION_BOTTOM 1
#define ACPI_NHLT_MIC_POSITION_LEFT 2
#define ACPI_NHLT_MIC_POSITION_RIGHT 3
#define ACPI_NHLT_MIC_POSITION_FRONT 4
#define ACPI_NHLT_MIC_POSITION_BACK 5
#define ACPI_NHLT_MIC_POSITION_RESERVED 6 // 6 and above are reserved

struct acpi_nhlt_vendor_mic_device_specific_config {
struct acpi_nhlt_mic_device_specific_config mic_array_device_config;
Expand All @@ -1633,8 +1644,9 @@ struct acpi_nhlt_mic_snr_sensitivity_extension {
u32 sensitivity;
};

/* Render device with feedback */

struct acpi_nhlt_render_feedback_device_specific_config {
struct acpi_nhlt_device_specific_config device_config;
u8 feedback_virtual_slot; // render slot in case of capture
u16 feedback_channels; // informative only
u16 feedback_valid_bits_per_sample;
Expand Down

0 comments on commit e4a07f5

Please sign in to comment.