linux/include/acpi/actbl2.h

/* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0 */
/******************************************************************************
 *
 * Name: actbl2.h - ACPI Table Definitions (tables not in ACPI spec)
 *
 * Copyright (C) 2000 - 2023, Intel Corp.
 *
 *****************************************************************************/

#ifndef __ACTBL2_H__
#define __ACTBL2_H__

/*******************************************************************************
 *
 * Additional ACPI Tables (2)
 *
 * These tables are not consumed directly by the ACPICA subsystem, but are
 * included here to support device drivers and the AML disassembler.
 *
 ******************************************************************************/

/*
 * Values for description table header signatures for tables defined in this
 * file. Useful because they make it more difficult to inadvertently type in
 * the wrong signature.
 */
#define ACPI_SIG_AGDI
#define ACPI_SIG_APMT
#define ACPI_SIG_BDAT
#define ACPI_SIG_CCEL
#define ACPI_SIG_CDAT
#define ACPI_SIG_IORT
#define ACPI_SIG_IVRS
#define ACPI_SIG_LPIT
#define ACPI_SIG_MADT
#define ACPI_SIG_MCFG
#define ACPI_SIG_MCHI
#define ACPI_SIG_MPAM
#define ACPI_SIG_MPST
#define ACPI_SIG_MSDM
#define ACPI_SIG_NFIT
#define ACPI_SIG_NHLT
#define ACPI_SIG_PCCT
#define ACPI_SIG_PDTT
#define ACPI_SIG_PHAT
#define ACPI_SIG_PMTT
#define ACPI_SIG_PPTT
#define ACPI_SIG_PRMT
#define ACPI_SIG_RASF
#define ACPI_SIG_RAS2
#define ACPI_SIG_RGRT
#define ACPI_SIG_RHCT
#define ACPI_SIG_SBST
#define ACPI_SIG_SDEI
#define ACPI_SIG_SDEV
#define ACPI_SIG_SVKL
#define ACPI_SIG_TDEL

/*
 * All tables must be byte-packed to match the ACPI specification, since
 * the tables are provided by the system BIOS.
 */
#pragma pack(1)

/*
 * Note: C bitfields are not used for this reason:
 *
 * "Bitfields are great and easy to read, but unfortunately the C language
 * does not specify the layout of bitfields in memory, which means they are
 * essentially useless for dealing with packed data in on-disk formats or
 * binary wire protocols." (Or ACPI tables and buffers.) "If you ask me,
 * this decision was a design error in C. Ritchie could have picked an order
 * and stuck with it." Norman Ramsey.
 * See http://stackoverflow.com/a/1053662/41661
 */

/*******************************************************************************
 *
 * AEST - Arm Error Source Table
 *
 * Conforms to: ACPI for the Armv8 RAS Extensions 1.1(Sep 2020) and
 * 2.0(May 2023) Platform Design Document.
 *
 ******************************************************************************/

struct acpi_table_aest {};

/* Common Subtable header - one per Node Structure (Subtable) */

struct acpi_aest_hdr {};

/* Values for Type above */

#define ACPI_AEST_PROCESSOR_ERROR_NODE
#define ACPI_AEST_MEMORY_ERROR_NODE
#define ACPI_AEST_SMMU_ERROR_NODE
#define ACPI_AEST_VENDOR_ERROR_NODE
#define ACPI_AEST_GIC_ERROR_NODE
#define ACPI_AEST_PCIE_ERROR_NODE
#define ACPI_AEST_PROXY_ERROR_NODE
#define ACPI_AEST_NODE_TYPE_RESERVED

/*
 * AEST subtables (Error nodes)
 */

/* 0: Processor Error */

acpi_aest_processor;

/* Values for resource_type above, related structs below */

#define ACPI_AEST_CACHE_RESOURCE
#define ACPI_AEST_TLB_RESOURCE
#define ACPI_AEST_GENERIC_RESOURCE
#define ACPI_AEST_RESOURCE_RESERVED

/* 0R: Processor Cache Resource Substructure */

acpi_aest_processor_cache;

/* Values for cache_type above */

#define ACPI_AEST_CACHE_DATA
#define ACPI_AEST_CACHE_INSTRUCTION
#define ACPI_AEST_CACHE_UNIFIED
#define ACPI_AEST_CACHE_RESERVED

/* 1R: Processor TLB Resource Substructure */

acpi_aest_processor_tlb;

/* 2R: Processor Generic Resource Substructure */

acpi_aest_processor_generic;

/* 1: Memory Error */

acpi_aest_memory;

/* 2: Smmu Error */

acpi_aest_smmu;

/* 3: Vendor Defined */

acpi_aest_vendor;

struct acpi_aest_vendor_v2 {};

/* 4: Gic Error */

acpi_aest_gic;

/* Values for interface_type above */

#define ACPI_AEST_GIC_CPU
#define ACPI_AEST_GIC_DISTRIBUTOR
#define ACPI_AEST_GIC_REDISTRIBUTOR
#define ACPI_AEST_GIC_ITS
#define ACPI_AEST_GIC_RESERVED

/* 5: PCIe Error */

struct acpi_aest_pcie {};

/* 6: Proxy Error */

struct acpi_aest_proxy {};

/* Node Interface Structure */

acpi_aest_node_interface;

/* Node Interface Structure V2 */

struct acpi_aest_node_interface_header {};

#define ACPI_AEST_NODE_GROUP_FORMAT_4K
#define ACPI_AEST_NODE_GROUP_FORMAT_16K
#define ACPI_AEST_NODE_GROUP_FORMAT_64K

struct acpi_aest_node_interface_common {};

struct acpi_aest_node_interface_4k {};

struct acpi_aest_node_interface_16k {};

struct acpi_aest_node_interface_64k {};

/* Values for Type field above */

#define ACPI_AEST_NODE_SYSTEM_REGISTER
#define ACPI_AEST_NODE_MEMORY_MAPPED
#define ACPI_AEST_NODE_SINGLE_RECORD_MEMORY_MAPPED
#define ACPI_AEST_XFACE_RESERVED

/* Node Interrupt Structure */

acpi_aest_node_interrupt;

/* Node Interrupt Structure V2 */

struct acpi_aest_node_interrupt_v2 {};

/* Values for Type field above */

#define ACPI_AEST_NODE_FAULT_HANDLING
#define ACPI_AEST_NODE_ERROR_RECOVERY
#define ACPI_AEST_XRUPT_RESERVED

/*******************************************************************************
 * AGDI - Arm Generic Diagnostic Dump and Reset Device Interface
 *
 * Conforms to "ACPI for Arm Components 1.1, Platform Design Document"
 * ARM DEN0093 v1.1
 *
 ******************************************************************************/
struct acpi_table_agdi {};

/* Mask for Flags field above */

#define ACPI_AGDI_SIGNALING_MODE

/*******************************************************************************
 *
 * APMT - ARM Performance Monitoring Unit Table
 *
 * Conforms to:
 * ARM Performance Monitoring Unit Architecture 1.0 Platform Design Document
 * ARM DEN0117 v1.0 November 25, 2021
 *
 ******************************************************************************/

struct acpi_table_apmt {};

#define ACPI_APMT_NODE_ID_LENGTH

/*
 * APMT subtables
 */
struct acpi_apmt_node {};

/* Masks for Flags field above */

#define ACPI_APMT_FLAGS_DUAL_PAGE
#define ACPI_APMT_FLAGS_AFFINITY
#define ACPI_APMT_FLAGS_ATOMIC

/* Values for Flags dual page field above */

#define ACPI_APMT_FLAGS_DUAL_PAGE_NSUPP
#define ACPI_APMT_FLAGS_DUAL_PAGE_SUPP

/* Values for Flags processor affinity field above */
#define ACPI_APMT_FLAGS_AFFINITY_PROC
#define ACPI_APMT_FLAGS_AFFINITY_PROC_CONTAINER

/* Values for Flags 64-bit atomic field above */
#define ACPI_APMT_FLAGS_ATOMIC_NSUPP
#define ACPI_APMT_FLAGS_ATOMIC_SUPP

/* Values for Type field above */

enum acpi_apmt_node_type {};

/* Masks for ovflw_irq_flags field above */

#define ACPI_APMT_OVFLW_IRQ_FLAGS_MODE
#define ACPI_APMT_OVFLW_IRQ_FLAGS_TYPE

/* Values for ovflw_irq_flags mode field above */

#define ACPI_APMT_OVFLW_IRQ_FLAGS_MODE_LEVEL
#define ACPI_APMT_OVFLW_IRQ_FLAGS_MODE_EDGE

/* Values for ovflw_irq_flags type field above */

#define ACPI_APMT_OVFLW_IRQ_FLAGS_TYPE_WIRED

/*******************************************************************************
 *
 * BDAT - BIOS Data ACPI Table
 *
 * Conforms to "BIOS Data ACPI Table", Interface Specification v4.0 Draft 5
 * Nov 2020
 *
 ******************************************************************************/

struct acpi_table_bdat {};

/*******************************************************************************
 *
 * CCEL - CC-Event Log
 *        From: "Guest-Host-Communication Interface (GHCI) for Intel
 *        Trust Domain Extensions (Intel TDX)". Feb 2022
 *
 ******************************************************************************/

struct acpi_table_ccel {};

/*******************************************************************************
 *
 * IORT - IO Remapping Table
 *
 * Conforms to "IO Remapping Table System Software on ARM Platforms",
 * Document number: ARM DEN 0049E.e, Sep 2022
 *
 ******************************************************************************/

struct acpi_table_iort {};

/*
 * IORT subtables
 */
struct acpi_iort_node {};

/* Values for subtable Type above */

enum acpi_iort_node_type {};

struct acpi_iort_id_mapping {};

/* Masks for Flags field above for IORT subtable */

#define ACPI_IORT_ID_SINGLE_MAPPING

struct acpi_iort_memory_access {};

/* Values for cache_coherency field above */

#define ACPI_IORT_NODE_COHERENT
#define ACPI_IORT_NODE_NOT_COHERENT

/* Masks for Hints field above */

#define ACPI_IORT_HT_TRANSIENT
#define ACPI_IORT_HT_WRITE
#define ACPI_IORT_HT_READ
#define ACPI_IORT_HT_OVERRIDE

/* Masks for memory_flags field above */

#define ACPI_IORT_MF_COHERENCY
#define ACPI_IORT_MF_ATTRIBUTES

/*
 * IORT node specific subtables
 */
struct acpi_iort_its_group {};

struct acpi_iort_named_component {};

/* Masks for Flags field above */

#define ACPI_IORT_NC_STALL_SUPPORTED
#define ACPI_IORT_NC_PASID_BITS

struct acpi_iort_root_complex {};

/* Masks for ats_attribute field above */

#define ACPI_IORT_ATS_SUPPORTED
#define ACPI_IORT_PRI_SUPPORTED
#define ACPI_IORT_PASID_FWD_SUPPORTED

/* Masks for pasid_capabilities field above */
#define ACPI_IORT_PASID_MAX_WIDTH

struct acpi_iort_smmu {};

/* Values for Model field above */

#define ACPI_IORT_SMMU_V1
#define ACPI_IORT_SMMU_V2
#define ACPI_IORT_SMMU_CORELINK_MMU400
#define ACPI_IORT_SMMU_CORELINK_MMU500
#define ACPI_IORT_SMMU_CORELINK_MMU401
#define ACPI_IORT_SMMU_CAVIUM_THUNDERX

/* Masks for Flags field above */

#define ACPI_IORT_SMMU_DVM_SUPPORTED
#define ACPI_IORT_SMMU_COHERENT_WALK

/* Global interrupt format */

struct acpi_iort_smmu_gsi {};

struct acpi_iort_smmu_v3 {};

/* Values for Model field above */

#define ACPI_IORT_SMMU_V3_GENERIC
#define ACPI_IORT_SMMU_V3_HISILICON_HI161X
#define ACPI_IORT_SMMU_V3_CAVIUM_CN99XX

/* Masks for Flags field above */

#define ACPI_IORT_SMMU_V3_COHACC_OVERRIDE
#define ACPI_IORT_SMMU_V3_HTTU_OVERRIDE
#define ACPI_IORT_SMMU_V3_PXM_VALID
#define ACPI_IORT_SMMU_V3_DEVICEID_VALID

struct acpi_iort_pmcg {};

struct acpi_iort_rmr {};

/* Masks for Flags field above */
#define ACPI_IORT_RMR_REMAP_PERMITTED
#define ACPI_IORT_RMR_ACCESS_PRIVILEGE

/*
 * Macro to access the Access Attributes in flags field above:
 *  Access Attributes is encoded in bits 9:2
 */
#define ACPI_IORT_RMR_ACCESS_ATTRIBUTES(flags)

/* Values for above Access Attributes */

#define ACPI_IORT_RMR_ATTR_DEVICE_NGNRNE
#define ACPI_IORT_RMR_ATTR_DEVICE_NGNRE
#define ACPI_IORT_RMR_ATTR_DEVICE_NGRE
#define ACPI_IORT_RMR_ATTR_DEVICE_GRE
#define ACPI_IORT_RMR_ATTR_NORMAL_NC
#define ACPI_IORT_RMR_ATTR_NORMAL_IWB_OWB

struct acpi_iort_rmr_desc {};

/*******************************************************************************
 *
 * IVRS - I/O Virtualization Reporting Structure
 *        Version 1
 *
 * Conforms to "AMD I/O Virtualization Technology (IOMMU) Specification",
 * Revision 1.26, February 2009.
 *
 ******************************************************************************/

struct acpi_table_ivrs {};

/* Values for Info field above */

#define ACPI_IVRS_PHYSICAL_SIZE
#define ACPI_IVRS_VIRTUAL_SIZE
#define ACPI_IVRS_ATS_RESERVED

/* IVRS subtable header */

struct acpi_ivrs_header {};

/* Values for subtable Type above */

enum acpi_ivrs_type {};

/* Masks for Flags field above for IVHD subtable */

#define ACPI_IVHD_TT_ENABLE
#define ACPI_IVHD_PASS_PW
#define ACPI_IVHD_RES_PASS_PW
#define ACPI_IVHD_ISOC
#define ACPI_IVHD_IOTLB

/* Masks for Flags field above for IVMD subtable */

#define ACPI_IVMD_UNITY
#define ACPI_IVMD_READ
#define ACPI_IVMD_WRITE
#define ACPI_IVMD_EXCLUSION_RANGE

/*
 * IVRS subtables, correspond to Type in struct acpi_ivrs_header
 */

/* 0x10: I/O Virtualization Hardware Definition Block (IVHD) */

struct acpi_ivrs_hardware_10 {};

/* 0x11: I/O Virtualization Hardware Definition Block (IVHD) */

struct acpi_ivrs_hardware_11 {};

/* Masks for Info field above */

#define ACPI_IVHD_MSI_NUMBER_MASK
#define ACPI_IVHD_UNIT_ID_MASK

/*
 * Device Entries for IVHD subtable, appear after struct acpi_ivrs_hardware structure.
 * Upper two bits of the Type field are the (encoded) length of the structure.
 * Currently, only 4 and 8 byte entries are defined. 16 and 32 byte entries
 * are reserved for future use but not defined.
 */
struct acpi_ivrs_de_header {};

/* Length of device entry is in the top two bits of Type field above */

#define ACPI_IVHD_ENTRY_LENGTH

/* Values for device entry Type field above */

enum acpi_ivrs_device_entry_type {};

/* Values for Data field above */

#define ACPI_IVHD_INIT_PASS
#define ACPI_IVHD_EINT_PASS
#define ACPI_IVHD_NMI_PASS
#define ACPI_IVHD_SYSTEM_MGMT
#define ACPI_IVHD_LINT0_PASS
#define ACPI_IVHD_LINT1_PASS

/* Types 0-4: 4-byte device entry */

struct acpi_ivrs_device4 {};

/* Types 66-67: 8-byte device entry */

struct acpi_ivrs_device8a {};

/* Types 70-71: 8-byte device entry */

struct acpi_ivrs_device8b {};

/* Values for extended_data above */

#define ACPI_IVHD_ATS_DISABLED

/* Type 72: 8-byte device entry */

struct acpi_ivrs_device8c {};

/* Values for Variety field above */

#define ACPI_IVHD_IOAPIC
#define ACPI_IVHD_HPET

/* Type 240: variable-length device entry */

struct acpi_ivrs_device_hid {};

/* Values for uid_type above */

#define ACPI_IVRS_UID_NOT_PRESENT
#define ACPI_IVRS_UID_IS_INTEGER
#define ACPI_IVRS_UID_IS_STRING

/* 0x20, 0x21, 0x22: I/O Virtualization Memory Definition Block (IVMD) */

struct acpi_ivrs_memory {};

/*******************************************************************************
 *
 * LPIT - Low Power Idle Table
 *
 * Conforms to "ACPI Low Power Idle Table (LPIT)" July 2014.
 *
 ******************************************************************************/

struct acpi_table_lpit {};

/* LPIT subtable header */

struct acpi_lpit_header {};

/* Values for subtable Type above */

enum acpi_lpit_type {};

/* Masks for Flags field above  */

#define ACPI_LPIT_STATE_DISABLED
#define ACPI_LPIT_NO_COUNTER

/*
 * LPIT subtables, correspond to Type in struct acpi_lpit_header
 */

/* 0x00: Native C-state instruction based LPI structure */

struct acpi_lpit_native {};

/*******************************************************************************
 *
 * MADT - Multiple APIC Description Table
 *        Version 3
 *
 ******************************************************************************/

struct acpi_table_madt {};

/* Masks for Flags field above */

#define ACPI_MADT_PCAT_COMPAT

/* Values for PCATCompat flag */

#define ACPI_MADT_DUAL_PIC
#define ACPI_MADT_MULTIPLE_APIC

/* Values for MADT subtable type in struct acpi_subtable_header */

enum acpi_madt_type {};

/*
 * MADT Subtables, correspond to Type in struct acpi_subtable_header
 */

/* 0: Processor Local APIC */

struct acpi_madt_local_apic {};

/* 1: IO APIC */

struct acpi_madt_io_apic {};

/* 2: Interrupt Override */

struct acpi_madt_interrupt_override {};

/* 3: NMI Source */

struct acpi_madt_nmi_source {};

/* 4: Local APIC NMI */

struct acpi_madt_local_apic_nmi {};

/* 5: Address Override */

struct acpi_madt_local_apic_override {};

/* 6: I/O Sapic */

struct acpi_madt_io_sapic {};

/* 7: Local Sapic */

struct acpi_madt_local_sapic {};

/* 8: Platform Interrupt Source */

struct acpi_madt_interrupt_source {};

/* Masks for Flags field above */

#define ACPI_MADT_CPEI_OVERRIDE

/* 9: Processor Local X2APIC (ACPI 4.0) */

struct acpi_madt_local_x2apic {};

/* 10: Local X2APIC NMI (ACPI 4.0) */

struct acpi_madt_local_x2apic_nmi {};

/* 11: Generic interrupt - GICC (ACPI 5.0 + ACPI 6.0 + ACPI 6.3 + ACPI 6.5 changes) */

struct acpi_madt_generic_interrupt {};

/* Masks for Flags field above */

/* ACPI_MADT_ENABLED                    (1)      Processor is usable if set */
#define ACPI_MADT_PERFORMANCE_IRQ_MODE
#define ACPI_MADT_VGIC_IRQ_MODE
#define ACPI_MADT_GICC_ONLINE_CAPABLE
#define ACPI_MADT_GICC_NON_COHERENT

/* 12: Generic Distributor (ACPI 5.0 + ACPI 6.0 changes) */

struct acpi_madt_generic_distributor {};

/* Values for Version field above */

enum acpi_madt_gic_version {};

/* 13: Generic MSI Frame (ACPI 5.1) */

struct acpi_madt_generic_msi_frame {};

/* Masks for Flags field above */

#define ACPI_MADT_OVERRIDE_SPI_VALUES

/* 14: Generic Redistributor (ACPI 5.1) */

struct acpi_madt_generic_redistributor {};

#define ACPI_MADT_GICR_NON_COHERENT

/* 15: Generic Translator (ACPI 6.0) */

struct acpi_madt_generic_translator {};

#define ACPI_MADT_ITS_NON_COHERENT

/* 16: Multiprocessor wakeup (ACPI 6.4) */

struct acpi_madt_multiproc_wakeup {};

/* Values for Version field above */

enum acpi_madt_multiproc_wakeup_version {};

#define ACPI_MADT_MP_WAKEUP_SIZE_V0
#define ACPI_MADT_MP_WAKEUP_SIZE_V1

#define ACPI_MULTIPROC_WAKEUP_MB_OS_SIZE
#define ACPI_MULTIPROC_WAKEUP_MB_FIRMWARE_SIZE

struct acpi_madt_multiproc_wakeup_mailbox {};

#define ACPI_MP_WAKE_COMMAND_WAKEUP
#define ACPI_MP_WAKE_COMMAND_TEST

/* 17: CPU Core Interrupt Controller (ACPI 6.5) */

struct acpi_madt_core_pic {};

/* Values for Version field above */

enum acpi_madt_core_pic_version {};

/* 18: Legacy I/O Interrupt Controller (ACPI 6.5) */

struct acpi_madt_lio_pic {};

/* Values for Version field above */

enum acpi_madt_lio_pic_version {};

/* 19: HT Interrupt Controller (ACPI 6.5) */

struct acpi_madt_ht_pic {};

/* Values for Version field above */

enum acpi_madt_ht_pic_version {};

/* 20: Extend I/O Interrupt Controller (ACPI 6.5) */

struct acpi_madt_eio_pic {};

/* Values for Version field above */

enum acpi_madt_eio_pic_version {};

/* 21: MSI Interrupt Controller (ACPI 6.5) */

struct acpi_madt_msi_pic {};

/* Values for Version field above */

enum acpi_madt_msi_pic_version {};

/* 22: Bridge I/O Interrupt Controller (ACPI 6.5) */

struct acpi_madt_bio_pic {};

/* Values for Version field above */

enum acpi_madt_bio_pic_version {};

/* 23: LPC Interrupt Controller (ACPI 6.5) */

struct acpi_madt_lpc_pic {};

/* Values for Version field above */

enum acpi_madt_lpc_pic_version {};

/* 24: RISC-V INTC */
struct acpi_madt_rintc {};

/* Values for RISC-V INTC Version field above */

enum acpi_madt_rintc_version {};

/* 25: RISC-V IMSIC */
struct acpi_madt_imsic {};

/* 26: RISC-V APLIC */
struct acpi_madt_aplic {};

/* 27: RISC-V PLIC */
struct acpi_madt_plic {};

/* 80: OEM data */

struct acpi_madt_oem_data {};

/*
 * Common flags fields for MADT subtables
 */

/* MADT Local APIC flags */

#define ACPI_MADT_ENABLED
#define ACPI_MADT_ONLINE_CAPABLE

/* MADT MPS INTI flags (inti_flags) */

#define ACPI_MADT_POLARITY_MASK
#define ACPI_MADT_TRIGGER_MASK

/* Values for MPS INTI flags */

#define ACPI_MADT_POLARITY_CONFORMS
#define ACPI_MADT_POLARITY_ACTIVE_HIGH
#define ACPI_MADT_POLARITY_RESERVED
#define ACPI_MADT_POLARITY_ACTIVE_LOW

#define ACPI_MADT_TRIGGER_CONFORMS
#define ACPI_MADT_TRIGGER_EDGE
#define ACPI_MADT_TRIGGER_RESERVED
#define ACPI_MADT_TRIGGER_LEVEL

/*******************************************************************************
 *
 * MCFG - PCI Memory Mapped Configuration table and subtable
 *        Version 1
 *
 * Conforms to "PCI Firmware Specification", Revision 3.0, June 20, 2005
 *
 ******************************************************************************/

struct acpi_table_mcfg {};

/* Subtable */

struct acpi_mcfg_allocation {};

/*******************************************************************************
 *
 * MCHI - Management Controller Host Interface Table
 *        Version 1
 *
 * Conforms to "Management Component Transport Protocol (MCTP) Host
 * Interface Specification", Revision 1.0.0a, October 13, 2009
 *
 ******************************************************************************/

struct acpi_table_mchi {};

/*******************************************************************************
 *
 * MPAM - Memory System Resource Partitioning and Monitoring
 *
 * Conforms to "ACPI for Memory System Resource Partitioning and Monitoring 2.0"
 * Document number: ARM DEN 0065, December, 2022.
 *
 ******************************************************************************/

/* MPAM RIS locator types. Table 11, Location types */
enum acpi_mpam_locator_type {};

/* MPAM Functional dependency descriptor. Table 10 */
struct acpi_mpam_func_deps {};

/* MPAM Processor cache locator descriptor. Table 13 */
struct acpi_mpam_resource_cache_locator {};

/* MPAM Memory locator descriptor. Table 14 */
struct acpi_mpam_resource_memory_locator {};

/* MPAM SMMU locator descriptor. Table 15 */
struct acpi_mpam_resource_smmu_locator {};

/* MPAM Memory-side cache locator descriptor. Table 16 */
struct acpi_mpam_resource_memcache_locator {};

/* MPAM ACPI device locator descriptor. Table 17 */
struct acpi_mpam_resource_acpi_locator {};

/* MPAM Interconnect locator descriptor. Table 18 */
struct acpi_mpam_resource_interconnect_locator {};

/* MPAM Locator structure. Table 12 */
struct acpi_mpam_resource_generic_locator {};

acpi_mpam_resource_locator;

/* Memory System Component Resource Node Structure Table 9 */
struct acpi_mpam_resource_node {};

/* Memory System Component (MSC) Node Structure. Table 4 */
struct acpi_mpam_msc_node {};

struct acpi_table_mpam {};

/*******************************************************************************
 *
 * MPST - Memory Power State Table (ACPI 5.0)
 *        Version 1
 *
 ******************************************************************************/

#define ACPI_MPST_CHANNEL_INFO

/* Main table */

struct acpi_table_mpst {};

/* Memory Platform Communication Channel Info */

struct acpi_mpst_channel {};

/* Memory Power Node Structure */

struct acpi_mpst_power_node {};

/* Values for Flags field above */

#define ACPI_MPST_ENABLED
#define ACPI_MPST_POWER_MANAGED
#define ACPI_MPST_HOT_PLUG_CAPABLE

/* Memory Power State Structure (follows POWER_NODE above) */

struct acpi_mpst_power_state {};

/* Physical Component ID Structure (follows POWER_STATE above) */

struct acpi_mpst_component {};

/* Memory Power State Characteristics Structure (follows all POWER_NODEs) */

struct acpi_mpst_data_hdr {};

struct acpi_mpst_power_data {};

/* Values for Flags field above */

#define ACPI_MPST_PRESERVE
#define ACPI_MPST_AUTOENTRY
#define ACPI_MPST_AUTOEXIT

/* Shared Memory Region (not part of an ACPI table) */

struct acpi_mpst_shared {};

/*******************************************************************************
 *
 * MSCT - Maximum System Characteristics Table (ACPI 4.0)
 *        Version 1
 *
 ******************************************************************************/

struct acpi_table_msct {};

/* subtable - Maximum Proximity Domain Information. Version 1 */

struct acpi_msct_proximity {};

/*******************************************************************************
 *
 * MSDM - Microsoft Data Management table
 *
 * Conforms to "Microsoft Software Licensing Tables (SLIC and MSDM)",
 * November 29, 2011. Copyright 2011 Microsoft
 *
 ******************************************************************************/

/* Basic MSDM table is only the common ACPI header */

struct acpi_table_msdm {};

/*******************************************************************************
 *
 * NFIT - NVDIMM Interface Table (ACPI 6.0+)
 *        Version 1
 *
 ******************************************************************************/

struct acpi_table_nfit {};

/* Subtable header for NFIT */

struct acpi_nfit_header {};

/* Values for subtable type in struct acpi_nfit_header */

enum acpi_nfit_type {};

/*
 * NFIT Subtables
 */

/* 0: System Physical Address Range Structure */

struct acpi_nfit_system_address {};

/* Flags */

#define ACPI_NFIT_ADD_ONLINE_ONLY
#define ACPI_NFIT_PROXIMITY_VALID
#define ACPI_NFIT_LOCATION_COOKIE_VALID

/* Range Type GUIDs appear in the include/acuuid.h file */

/* 1: Memory Device to System Address Range Map Structure */

struct acpi_nfit_memory_map {};

/* Flags */

#define ACPI_NFIT_MEM_SAVE_FAILED
#define ACPI_NFIT_MEM_RESTORE_FAILED
#define ACPI_NFIT_MEM_FLUSH_FAILED
#define ACPI_NFIT_MEM_NOT_ARMED
#define ACPI_NFIT_MEM_HEALTH_OBSERVED
#define ACPI_NFIT_MEM_HEALTH_ENABLED
#define ACPI_NFIT_MEM_MAP_FAILED

/* 2: Interleave Structure */

struct acpi_nfit_interleave {};

/* 3: SMBIOS Management Information Structure */

struct acpi_nfit_smbios {};

/* 4: NVDIMM Control Region Structure */

struct acpi_nfit_control_region {};

/* Flags */

#define ACPI_NFIT_CONTROL_BUFFERED

/* valid_fields bits */

#define ACPI_NFIT_CONTROL_MFG_INFO_VALID

/* 5: NVDIMM Block Data Window Region Structure */

struct acpi_nfit_data_region {};

/* 6: Flush Hint Address Structure */

struct acpi_nfit_flush_address {};

/* 7: Platform Capabilities Structure */

struct acpi_nfit_capabilities {};

/* Capabilities Flags */

#define ACPI_NFIT_CAPABILITY_CACHE_FLUSH
#define ACPI_NFIT_CAPABILITY_MEM_FLUSH
#define ACPI_NFIT_CAPABILITY_MEM_MIRRORING

/*
 * NFIT/DVDIMM device handle support - used as the _ADR for each NVDIMM
 */
struct nfit_device_handle {};

/* Device handle construction and extraction macros */

#define ACPI_NFIT_DIMM_NUMBER_MASK
#define ACPI_NFIT_CHANNEL_NUMBER_MASK
#define ACPI_NFIT_MEMORY_ID_MASK
#define ACPI_NFIT_SOCKET_ID_MASK
#define ACPI_NFIT_NODE_ID_MASK

#define ACPI_NFIT_DIMM_NUMBER_OFFSET
#define ACPI_NFIT_CHANNEL_NUMBER_OFFSET
#define ACPI_NFIT_MEMORY_ID_OFFSET
#define ACPI_NFIT_SOCKET_ID_OFFSET
#define ACPI_NFIT_NODE_ID_OFFSET

/* Macro to construct a NFIT/NVDIMM device handle */

#define ACPI_NFIT_BUILD_DEVICE_HANDLE(dimm, channel, memory, socket, node)

/* Macros to extract individual fields from a NFIT/NVDIMM device handle */

#define ACPI_NFIT_GET_DIMM_NUMBER(handle)

#define ACPI_NFIT_GET_CHANNEL_NUMBER(handle)

#define ACPI_NFIT_GET_MEMORY_ID(handle)

#define ACPI_NFIT_GET_SOCKET_ID(handle)

#define ACPI_NFIT_GET_NODE_ID(handle)

/*******************************************************************************
 *
 * NHLT - Non HDAudio Link Table
 *        Version 1
 *
 ******************************************************************************/

struct acpi_table_nhlt {};

struct acpi_nhlt_endpoint {};

/*
 * Values for link_type field above
 *
 * Only types PDM and SSP are used
 */
#define ACPI_NHLT_LINKTYPE_HDA
#define ACPI_NHLT_LINKTYPE_DSP
#define ACPI_NHLT_LINKTYPE_PDM
#define ACPI_NHLT_LINKTYPE_SSP
#define ACPI_NHLT_LINKTYPE_SLIMBUS
#define ACPI_NHLT_LINKTYPE_SDW
#define ACPI_NHLT_LINKTYPE_UAOL

/* Values for device_id field above */

#define ACPI_NHLT_DEVICEID_DMIC
#define ACPI_NHLT_DEVICEID_BT
#define ACPI_NHLT_DEVICEID_I2S

/* Values for device_type field above */

/*
 * Device types unique to endpoint of link_type=PDM
 *
 * Type PDM used for all SKL+ platforms
 */
#define ACPI_NHLT_DEVICETYPE_PDM
#define ACPI_NHLT_DEVICETYPE_PDM_SKL
/* Device types unique to endpoint of link_type=SSP */
#define ACPI_NHLT_DEVICETYPE_BT
#define ACPI_NHLT_DEVICETYPE_FM
#define ACPI_NHLT_DEVICETYPE_MODEM
#define ACPI_NHLT_DEVICETYPE_CODEC

/* Values for Direction field above */

#define ACPI_NHLT_DIR_RENDER
#define ACPI_NHLT_DIR_CAPTURE

struct acpi_nhlt_config {};

struct acpi_nhlt_gendevice_config {};

/* Values for config_type field above */

#define ACPI_NHLT_CONFIGTYPE_GENERIC
#define ACPI_NHLT_CONFIGTYPE_MICARRAY

struct acpi_nhlt_micdevice_config {};

/* Values for array_type field above */

#define ACPI_NHLT_ARRAYTYPE_LINEAR2_SMALL
#define ACPI_NHLT_ARRAYTYPE_LINEAR2_BIG
#define ACPI_NHLT_ARRAYTYPE_LINEAR4_GEO1
#define ACPI_NHLT_ARRAYTYPE_PLANAR4_LSHAPED
#define ACPI_NHLT_ARRAYTYPE_LINEAR4_GEO2
#define ACPI_NHLT_ARRAYTYPE_VENDOR

struct acpi_nhlt_vendor_mic_config {};

/* Values for Type field above */

#define ACPI_NHLT_MICTYPE_OMNIDIRECTIONAL
#define ACPI_NHLT_MICTYPE_SUBCARDIOID
#define ACPI_NHLT_MICTYPE_CARDIOID
#define ACPI_NHLT_MICTYPE_SUPERCARDIOID
#define ACPI_NHLT_MICTYPE_HYPERCARDIOID
#define ACPI_NHLT_MICTYPE_8SHAPED
#define ACPI_NHLT_MICTYPE_RESERVED
#define ACPI_NHLT_MICTYPE_VENDORDEFINED

/* Values for Panel field above */

#define ACPI_NHLT_MICLOCATION_TOP
#define ACPI_NHLT_MICLOCATION_BOTTOM
#define ACPI_NHLT_MICLOCATION_LEFT
#define ACPI_NHLT_MICLOCATION_RIGHT
#define ACPI_NHLT_MICLOCATION_FRONT
#define ACPI_NHLT_MICLOCATION_REAR

struct acpi_nhlt_vendor_micdevice_config {};

acpi_nhlt_device_config;

/* Inherited from Microsoft's WAVEFORMATEXTENSIBLE. */
struct acpi_nhlt_wave_formatext {};

struct acpi_nhlt_format_config {};

struct acpi_nhlt_formats_config {};

struct acpi_nhlt_device_info {};

struct acpi_nhlt_devices_info {};

/*******************************************************************************
 *
 * PCCT - Platform Communications Channel Table (ACPI 5.0)
 *        Version 2 (ACPI 6.2)
 *
 ******************************************************************************/

struct acpi_table_pcct {};

/* Values for Flags field above */

#define ACPI_PCCT_DOORBELL

/* Values for subtable type in struct acpi_subtable_header */

enum acpi_pcct_type {};

/*
 * PCCT Subtables, correspond to Type in struct acpi_subtable_header
 */

/* 0: Generic Communications Subspace */

struct acpi_pcct_subspace {};

/* 1: HW-reduced Communications Subspace (ACPI 5.1) */

struct acpi_pcct_hw_reduced {};

/* 2: HW-reduced Communications Subspace Type 2 (ACPI 6.1) */

struct acpi_pcct_hw_reduced_type2 {};

/* 3: Extended PCC Master Subspace Type 3 (ACPI 6.2) */

struct acpi_pcct_ext_pcc_master {};

/* 4: Extended PCC Slave Subspace Type 4 (ACPI 6.2) */

struct acpi_pcct_ext_pcc_slave {};

/* 5: HW Registers based Communications Subspace */

struct acpi_pcct_hw_reg {};

/* Values for doorbell flags above */

#define ACPI_PCCT_INTERRUPT_POLARITY
#define ACPI_PCCT_INTERRUPT_MODE

/*
 * PCC memory structures (not part of the ACPI table)
 */

/* Shared Memory Region */

struct acpi_pcct_shared_memory {};

/* Extended PCC Subspace Shared Memory Region (ACPI 6.2) */

struct acpi_pcct_ext_pcc_shared_memory {};

/*******************************************************************************
 *
 * PDTT - Platform Debug Trigger Table (ACPI 6.2)
 *        Version 0
 *
 ******************************************************************************/

struct acpi_table_pdtt {};

/*
 * PDTT Communication Channel Identifier Structure.
 * The number of these structures is defined by trigger_count above,
 * starting at array_offset.
 */
struct acpi_pdtt_channel {};

/* Flags for above */

#define ACPI_PDTT_RUNTIME_TRIGGER
#define ACPI_PDTT_WAIT_COMPLETION
#define ACPI_PDTT_TRIGGER_ORDER

/*******************************************************************************
 *
 * PHAT - Platform Health Assessment Table (ACPI 6.4)
 *        Version 1
 *
 ******************************************************************************/

struct acpi_table_phat {};

/* Common header for PHAT subtables that follow main table */

struct acpi_phat_header {};

/* Values for Type field above */

#define ACPI_PHAT_TYPE_FW_VERSION_DATA
#define ACPI_PHAT_TYPE_FW_HEALTH_DATA
#define ACPI_PHAT_TYPE_RESERVED

/*
 * PHAT subtables, correspond to Type in struct acpi_phat_header
 */

/* 0: Firmware Version Data Record */

struct acpi_phat_version_data {};

struct acpi_phat_version_element {};

/* 1: Firmware Health Data Record */

struct acpi_phat_health_data {};

/* Values for Health field above */

#define ACPI_PHAT_ERRORS_FOUND
#define ACPI_PHAT_NO_ERRORS
#define ACPI_PHAT_UNKNOWN_ERRORS
#define ACPI_PHAT_ADVISORY

/*******************************************************************************
 *
 * PMTT - Platform Memory Topology Table (ACPI 5.0)
 *        Version 1
 *
 ******************************************************************************/

struct acpi_table_pmtt {};

/* Common header for PMTT subtables that follow main table */

struct acpi_pmtt_header {};

/* Values for Type field above */

#define ACPI_PMTT_TYPE_SOCKET
#define ACPI_PMTT_TYPE_CONTROLLER
#define ACPI_PMTT_TYPE_DIMM
#define ACPI_PMTT_TYPE_RESERVED
#define ACPI_PMTT_TYPE_VENDOR

/* Values for Flags field above */

#define ACPI_PMTT_TOP_LEVEL
#define ACPI_PMTT_PHYSICAL
#define ACPI_PMTT_MEMORY_TYPE

/*
 * PMTT subtables, correspond to Type in struct acpi_pmtt_header
 */

/* 0: Socket Structure */

struct acpi_pmtt_socket {};
	/*
	 * Immediately followed by:
	 * MEMORY_DEVICE memory_device_struct[memory_device_count];
	 */

/* 1: Memory Controller subtable */

struct acpi_pmtt_controller {};
	/*
	 * Immediately followed by:
	 * MEMORY_DEVICE memory_device_struct[memory_device_count];
	 */

/* 2: Physical Component Identifier (DIMM) */

struct acpi_pmtt_physical_component {};

/* 0xFF: Vendor Specific Data */

struct acpi_pmtt_vendor_specific {};

/*******************************************************************************
 *
 * PPTT - Processor Properties Topology Table (ACPI 6.2)
 *        Version 1
 *
 ******************************************************************************/

struct acpi_table_pptt {};

/* Values for Type field above */

enum acpi_pptt_type {};

/* 0: Processor Hierarchy Node Structure */

struct acpi_pptt_processor {};

/* Flags */

#define ACPI_PPTT_PHYSICAL_PACKAGE
#define ACPI_PPTT_ACPI_PROCESSOR_ID_VALID
#define ACPI_PPTT_ACPI_PROCESSOR_IS_THREAD
#define ACPI_PPTT_ACPI_LEAF_NODE
#define ACPI_PPTT_ACPI_IDENTICAL

/* 1: Cache Type Structure */

struct acpi_pptt_cache {};

/* 1: Cache Type Structure for PPTT version 3 */

struct acpi_pptt_cache_v1 {};

/* Flags */

#define ACPI_PPTT_SIZE_PROPERTY_VALID
#define ACPI_PPTT_NUMBER_OF_SETS_VALID
#define ACPI_PPTT_ASSOCIATIVITY_VALID
#define ACPI_PPTT_ALLOCATION_TYPE_VALID
#define ACPI_PPTT_CACHE_TYPE_VALID
#define ACPI_PPTT_WRITE_POLICY_VALID
#define ACPI_PPTT_LINE_SIZE_VALID
#define ACPI_PPTT_CACHE_ID_VALID

/* Masks for Attributes */

#define ACPI_PPTT_MASK_ALLOCATION_TYPE
#define ACPI_PPTT_MASK_CACHE_TYPE
#define ACPI_PPTT_MASK_WRITE_POLICY

/* Attributes describing cache */
#define ACPI_PPTT_CACHE_READ_ALLOCATE
#define ACPI_PPTT_CACHE_WRITE_ALLOCATE
#define ACPI_PPTT_CACHE_RW_ALLOCATE
#define ACPI_PPTT_CACHE_RW_ALLOCATE_ALT

#define ACPI_PPTT_CACHE_TYPE_DATA
#define ACPI_PPTT_CACHE_TYPE_INSTR
#define ACPI_PPTT_CACHE_TYPE_UNIFIED
#define ACPI_PPTT_CACHE_TYPE_UNIFIED_ALT

#define ACPI_PPTT_CACHE_POLICY_WB
#define ACPI_PPTT_CACHE_POLICY_WT

/* 2: ID Structure */

struct acpi_pptt_id {};

/*******************************************************************************
 *
 * PRMT - Platform Runtime Mechanism Table
 *        Version 1
 *
 ******************************************************************************/

struct acpi_table_prmt {};

struct acpi_table_prmt_header {};

struct acpi_prmt_module_header {};

struct acpi_prmt_module_info {};

struct acpi_prmt_handler_info {};

/*******************************************************************************
 *
 * RASF - RAS Feature Table (ACPI 5.0)
 *        Version 1
 *
 ******************************************************************************/

struct acpi_table_rasf {};

/* RASF Platform Communication Channel Shared Memory Region */

struct acpi_rasf_shared_memory {};

/* RASF Parameter Block Structure Header */

struct acpi_rasf_parameter_block {};

/* RASF Parameter Block Structure for PATROL_SCRUB */

struct acpi_rasf_patrol_scrub_parameter {};

/* Masks for Flags and Speed fields above */

#define ACPI_RASF_SCRUBBER_RUNNING
#define ACPI_RASF_SPEED
#define ACPI_RASF_SPEED_SLOW
#define ACPI_RASF_SPEED_MEDIUM
#define ACPI_RASF_SPEED_FAST

/* Channel Commands */

enum acpi_rasf_commands {};

/* Platform RAS Capabilities */

enum acpi_rasf_capabiliities {};

/* Patrol Scrub Commands */

enum acpi_rasf_patrol_scrub_commands {};

/* Channel Command flags */

#define ACPI_RASF_GENERATE_SCI

/* Status values */

enum acpi_rasf_status {};

/* Status flags */

#define ACPI_RASF_COMMAND_COMPLETE
#define ACPI_RASF_SCI_DOORBELL
#define ACPI_RASF_ERROR
#define ACPI_RASF_STATUS

/*******************************************************************************
 *
 * RAS2 - RAS2 Feature Table (ACPI 6.5)
 *        Version 1
 *
 *
 ******************************************************************************/

struct acpi_table_ras2 {};

/* RAS2 Platform Communication Channel Descriptor */

struct acpi_ras2_pcc_desc {};

/* RAS2 Platform Communication Channel Shared Memory Region */

struct acpi_ras2_shared_memory {};

/* RAS2 Parameter Block Structure for PATROL_SCRUB */

struct acpi_ras2_parameter_block {};

/* RAS2 Parameter Block Structure for PATROL_SCRUB */

struct acpi_ras2_patrol_scrub_parameter {};

/* Masks for Flags field above */

#define ACPI_RAS2_SCRUBBER_RUNNING

/* RAS2 Parameter Block Structure for LA2PA_TRANSLATION */

struct acpi_ras2_la2pa_translation_parameter {};

/* Channel Commands */

enum acpi_ras2_commands {};

/* Platform RAS2 Features */

enum acpi_ras2_features {};

/* RAS2 Patrol Scrub Commands */

enum acpi_ras2_patrol_scrub_commands {};

/* RAS2 LA2PA Translation Commands */

enum acpi_ras2_la2_pa_translation_commands {};

/* RAS2 LA2PA Translation Status values */

enum acpi_ras2_la2_pa_translation_status {};

/* Channel Command flags */

#define ACPI_RAS2_GENERATE_SCI

/* Status values */

enum acpi_ras2_status {};

/* Status flags */

#define ACPI_RAS2_COMMAND_COMPLETE
#define ACPI_RAS2_SCI_DOORBELL
#define ACPI_RAS2_ERROR
#define ACPI_RAS2_STATUS

/*******************************************************************************
 *
 * RGRT - Regulatory Graphics Resource Table
 *        Version 1
 *
 * Conforms to "ACPI RGRT" available at:
 * https://microsoft.github.io/mu/dyn/mu_plus/ms_core_pkg/acpi_RGRT/feature_acpi_rgrt/
 *
 ******************************************************************************/

struct acpi_table_rgrt {};

/* image_type values */

enum acpi_rgrt_image_type {};

/*******************************************************************************
 *
 * RHCT - RISC-V Hart Capabilities Table
 *        Version 1
 *
 ******************************************************************************/

struct acpi_table_rhct {};

/* RHCT Flags */

#define ACPI_RHCT_TIMER_CANNOT_WAKEUP_CPU
/*
 * RHCT subtables
 */
struct acpi_rhct_node_header {};

/* Values for RHCT subtable Type above */

enum acpi_rhct_node_type {};

/*
 * RHCT node specific subtables
 */

/* ISA string node structure */
struct acpi_rhct_isa_string {};

struct acpi_rhct_cmo_node {};

struct acpi_rhct_mmu_node {};

enum acpi_rhct_mmu_type {};

/* Hart Info node structure */
struct acpi_rhct_hart_info {};

/*******************************************************************************
 *
 * SBST - Smart Battery Specification Table
 *        Version 1
 *
 ******************************************************************************/

struct acpi_table_sbst {};

/*******************************************************************************
 *
 * SDEI - Software Delegated Exception Interface Descriptor Table
 *
 * Conforms to "Software Delegated Exception Interface (SDEI)" ARM DEN0054A,
 * May 8th, 2017. Copyright 2017 ARM Ltd.
 *
 ******************************************************************************/

struct acpi_table_sdei {};

/*******************************************************************************
 *
 * SDEV - Secure Devices Table (ACPI 6.2)
 *        Version 1
 *
 ******************************************************************************/

struct acpi_table_sdev {};

struct acpi_sdev_header {};

/* Values for subtable type above */

enum acpi_sdev_type {};

/* Values for flags above */

#define ACPI_SDEV_HANDOFF_TO_UNSECURE_OS
#define ACPI_SDEV_SECURE_COMPONENTS_PRESENT

/*
 * SDEV subtables
 */

/* 0: Namespace Device Based Secure Device Structure */

struct acpi_sdev_namespace {};

struct acpi_sdev_secure_component {};

/*
 * SDEV sub-subtables ("Components") for above
 */
struct acpi_sdev_component {};

/* Values for sub-subtable type above */

enum acpi_sac_type {};

struct acpi_sdev_id_component {};

struct acpi_sdev_mem_component {};

/* 1: PCIe Endpoint Device Based Device Structure */

struct acpi_sdev_pcie {};

/* 1a: PCIe Endpoint path entry */

struct acpi_sdev_pcie_path {};

/*******************************************************************************
 *
 * SVKL - Storage Volume Key Location Table (ACPI 6.4)
 *        From: "Guest-Host-Communication Interface (GHCI) for Intel
 *        Trust Domain Extensions (Intel TDX)".
 *        Version 1
 *
 ******************************************************************************/

struct acpi_table_svkl {};

struct acpi_svkl_key {};

enum acpi_svkl_type {};

enum acpi_svkl_format {};

/*******************************************************************************
 *
 * TDEL - TD-Event Log
 *        From: "Guest-Host-Communication Interface (GHCI) for Intel
 *        Trust Domain Extensions (Intel TDX)".
 *        September 2020
 *
 ******************************************************************************/

struct acpi_table_tdel {};

/* Reset to default packing */

#pragma pack()

#endif				/* __ACTBL2_H__ */