/***************************************************************************/ /** **/ /** HPE CONFIDENTIAL. This software is confidential proprietary software **/ /** licensed by Hewlett-Packard Enterprise Development, LP, and is not **/ /** authorized to be used, duplicated OR disclosed to anyone without the **/ /** prior written permission of HPE. **/ /** © 2023 Copyright Hewlett-Packard Enterprise Development, LP **/ /** **/ /** VMS SOFTWARE, INC. CONFIDENTIAL. This software is confidential **/ /** proprietary software licensed by VMS Software, Inc., and is not **/ /** authorized to be used, duplicated or disclosed to anyone without **/ /** the prior written permission of VMS Software, Inc. **/ /** © 2023 Copyright VMS Software, Inc. **/ /** **/ /***************************************************************************/ /********************************************************************************************************************************/ /* Created: 9-Nov-2023 12:06:42 by OpenVMS SDL V3.7 */ /* Source: 24-AUG-2022 15:00:57 $1$DGA8345:[LIB_H.SRC]GPSCFGDEF.SDL;1 */ /********************************************************************************************************************************/ /*** MODULE $GPSCFGDEF ***/ #ifndef __GPSCFGDEF_LOADED #define __GPSCFGDEF_LOADED 1 #pragma __nostandard /* This file uses non-ANSI-Standard features */ #pragma __member_alignment __save #pragma __nomember_alignment #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __save /* Save the previously-defined required ptr size */ #pragma __required_pointer_size __short /* And set ptr size default to 32-bit pointers */ #endif #ifdef __cplusplus extern "C" { #define __unknown_params ... #define __optional_params ... #else #define __unknown_params #define __optional_params ... #endif #ifndef __struct #if !defined(__VAXC) #define __struct struct #else #define __struct variant_struct #endif #endif #ifndef __union #if !defined(__VAXC) #define __union union #else #define __union variant_union #endif #endif /************************************************ */ /* CONSTANTS AND ENUMERATIONS */ /************************************************ */ /* */ /* Discoverable SBA Objects */ /* ------------------------ */ /* */ #define GPS$K_OBJ_GENERIC 0 #define GPS$K_OBJ_SYSBUS 17 #define GPS$K_OBJ_PCIHOST 18 #define GPS$K_OBJ_PCIDEV 19 #define GPS$K_OBJ_IOPORT 20 #define GPS$K_OBJ_IOPORTDEV 21 #define GPS$K_OBJ_HCDPDEV 22 #define GPS$K_OBJ_EMBEDDED 23 #define GPS$K_OBJ_IOC 24 #define GPS$K_OBJ_SYSBUSLESS 25 #define GPS$K_OBJ_ROOT 26 #define GPS$K_OBJ_CONTAINER 27 #define GPS$K_OBJ_GPEDEV 28 #define GPS$K_OBJ_VMBUSHOST 29 /* */ /* Address Spaces */ /* -------------- */ /* See Generic Address Specification (GAS) in ACPI 2.0a Spec. */ /* */ #define GPS$K_SPACE_SYSMEM 0 #define GPS$K_SPACE_SYSIO 1 #define GPS$K_SPACE_PCICFG 2 #define GPS$K_SPACE_EMBEDDED 3 #define GPS$K_SPACE_SMB 4 #define GPS$K_SPACE_FIXEDHW 127 /* */ /* */ /************************************************ */ /* DATA STRUCTURES */ /************************************************ */ /* */ /* PRT - PCI Routing Table */ /* ----------------------- */ /* The PRT provides the information required to locate the interrupt */ /* wire for the corresponding PCI device. */ /* */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _gpsprtentry { #pragma __nomember_alignment unsigned int gps_prt$l_entry_length; unsigned int gps_prt$l_pin; unsigned __int64 gps_prt$q_address; unsigned int gps_prt$l_source_index; char gps_prt$b_fill_0_ [4]; } GPSPRTENTRY; #define GPS$K_PRT_LENGTH 24 /* */ /* */ /* GPS DESCRIPTOR */ /* -------------- */ /* */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _gpsdescriptor { #pragma __nomember_alignment unsigned int gps_dsc$l_type; /* See ACPI OBJECT Types above */ unsigned int gps_dsc$l_size; /* Size in bytes of the data object */ __union { unsigned __int64 gps_dsc$q_data; /* for GPS$K_OBJ_TYPE_INTEGER */ char *gps_dsc$ps_data; /* for types other than INTEGER */ } gps_dsc$r_data_overlay; } GPSDESCRIPTOR; #if !defined(__VAXC) #define gps_dsc$q_data gps_dsc$r_data_overlay.gps_dsc$q_data #define gps_dsc$ps_data gps_dsc$r_data_overlay.gps_dsc$ps_data #endif /* #if !defined(__VAXC) */ /* */ /* GPS Header */ /* ---------- */ /* This structure is common to all GPSCONFIG type structures and */ /* contains the fields necessary to extract more information about */ /* the object from ACPI. Also contains fields that are common to */ /* most hardware objects. */ /* */ #define GPS_HDR$M_VALID_STA 0x1 #define GPS_HDR$M_VALID_ADR 0x2 #define GPS_HDR$M_VALID_HID 0x4 #define GPS_HDR$M_VALID_UID 0x8 #define GPS_HDR$M_RESRV_0 0x10 #define GPS_HDR$M_VALID_CID 0x20 #define GPS_HDR$M_VALID_CLS 0x40 #define GPS_HDR$M_RESRV_1 0x80 #define GPS_HDR$M_VALID_SXDS 0x100 #define GPS_HDR$M_VALID_SXWS 0x200 #define GPS_HDR$M_VALID_BBN 0x400 #define GPS_HDR$M_VALID_SEG 0x800 #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _gpsheader { #pragma __nomember_alignment int gps_hdr$l_status; /* Callback Status */ __union { /* Mask identifying valid fields */ unsigned int gps_hdr$l_valid; __struct { unsigned gps_hdr$v_valid_sta : 1; /* These masks track the */ unsigned gps_hdr$v_valid_adr : 1; /* : corresponding ones in */ unsigned gps_hdr$v_valid_hid : 1; /* : [ACPI]ACTYPES.H */ unsigned gps_hdr$v_valid_uid : 1; unsigned gps_hdr$v_resrv_0 : 1; unsigned gps_hdr$v_valid_cid : 1; unsigned gps_hdr$v_valid_cls : 1; unsigned gps_hdr$v_resrv_1 : 1; unsigned gps_hdr$v_valid_sxds : 1; unsigned gps_hdr$v_valid_sxws : 1; unsigned gps_hdr$v_valid_bbn : 1; unsigned gps_hdr$v_valid_seg : 1; unsigned gps_hdr$v_fill_1_ : 4; } gps_hdr$r_bits; } gps_hdr$r_valid_overlay; unsigned __int64 gps_hdr$q_type; /* Object type */ unsigned __int64 gps_hdr$q_hw_handle; /* Object's hardware handle */ unsigned __int64 gps_hdr$q_parent; /* hw_handle of object's parent */ /* */ /* ACPI 2.0a spec section */ /* ---------------------- */ unsigned __int64 gps_hdr$q_adr; /* _ADR 6.1.1 */ GPSDESCRIPTOR gps_hdr$r_cid; /* _CID 6.1.2 */ GPSDESCRIPTOR gps_hdr$r_hid; /* _HID 6.1.4 */ GPSDESCRIPTOR gps_hdr$r_uid; /* _UID 6.1.7 */ unsigned __int64 gps_hdr$q_sta; /* _STA 6.3.6, 7.1.4 */ unsigned __int64 gps_hdr$q_bbn; /* _BBN 6.5.6 (Base Bus Number) */ unsigned __int64 gps_hdr$q_seg; /* _SEG 6.5.6 */ } GPSHEADER; #if !defined(__VAXC) #define gps_hdr$l_valid gps_hdr$r_valid_overlay.gps_hdr$l_valid #define gps_hdr$v_valid_sta gps_hdr$r_valid_overlay.gps_hdr$r_bits.gps_hdr$v_valid_sta #define gps_hdr$v_valid_adr gps_hdr$r_valid_overlay.gps_hdr$r_bits.gps_hdr$v_valid_adr #define gps_hdr$v_valid_hid gps_hdr$r_valid_overlay.gps_hdr$r_bits.gps_hdr$v_valid_hid #define gps_hdr$v_valid_uid gps_hdr$r_valid_overlay.gps_hdr$r_bits.gps_hdr$v_valid_uid #define gps_hdr$v_resrv_0 gps_hdr$r_valid_overlay.gps_hdr$r_bits.gps_hdr$v_resrv_0 #define gps_hdr$v_valid_cid gps_hdr$r_valid_overlay.gps_hdr$r_bits.gps_hdr$v_valid_cid #define gps_hdr$v_valid_cls gps_hdr$r_valid_overlay.gps_hdr$r_bits.gps_hdr$v_valid_cls #define gps_hdr$v_resrv_1 gps_hdr$r_valid_overlay.gps_hdr$r_bits.gps_hdr$v_resrv_1 #define gps_hdr$v_valid_sxds gps_hdr$r_valid_overlay.gps_hdr$r_bits.gps_hdr$v_valid_sxds #define gps_hdr$v_valid_sxws gps_hdr$r_valid_overlay.gps_hdr$r_bits.gps_hdr$v_valid_sxws #define gps_hdr$v_valid_bbn gps_hdr$r_valid_overlay.gps_hdr$r_bits.gps_hdr$v_valid_bbn #define gps_hdr$v_valid_seg gps_hdr$r_valid_overlay.gps_hdr$r_bits.gps_hdr$v_valid_seg #endif /* #if !defined(__VAXC) */ #define GPS$K_HDR_LENGTH 112 /* */ /* GPS System Bus Object */ /* --------------------- */ /* Information reported upon the discovery of a system-level bus. */ /* */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _gpssysbus { #pragma __nomember_alignment unsigned __int64 gps_sb$q_dma_base; /* Base Address of system DMA window */ unsigned __int64 gps_sb$q_dma_max; /* Max Address of system DMA window */ int gps_sb$l_node_count; /* Number of child nodes */ int gps_sb$l_reserved; /* Pad */ unsigned __int64 gps_sb$q_ioc_base; /* Base Phys addr of IOC registers */ unsigned __int64 gps_sb$q_tra_offset; /* System access translation PA offset */ } GPSSYSBUS; #define GPS$K_SB_LENGTH 40 /* */ /* GPS PCI Host Object */ /* ------------------- */ /* Information reported upon the discovery of a PCI bus host. */ /* */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _gpspcihost { #pragma __nomember_alignment unsigned __int64 gps_pci$q_base_pa; /* Base Phys addr of this PCI space */ unsigned __int64 gps_pci$q_max_pa; /* Max Phys addr of this PCI space */ unsigned __int64 gps_pci$q_prt_addr; /* VMS System VA of PRT for this bus */ unsigned __int64 gps_pci$q_prt_length; /* Length of the whole PRT */ int gps_pci$l_bus; /* Bus Number of this PCI host bus */ int gps_pci$l_seg; /* Segment in which the PCI bus resides */ unsigned __int64 gps_pci$q_tra_offset; /* System access translation PA offset (per bus) */ unsigned __int64 gps_pci$q_tra_portio; /* Translation PA offset to port I/O space (per bus) */ } GPSPCIHOST; #define GPS$K_PCI_LENGTH 56 /* */ /* GPS PCI Device Object */ /* --------------------- */ /* Information reported upon the discovery of a PCI device. */ /* */ /* NOTE: ACPI does not report PCI devices, since there is an Industry */ /* Standard probing algorithm for PCI device discovery. This */ /* structure is more for informational purposes or for the unlikely */ /* case of non-ACPI device discovery and reporting mechanisms. */ /* */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _gpspcidev { #pragma __nomember_alignment unsigned __int64 gps_pcidev$q_ioapic; /* VMS System VA of ACPI IOAPIC struct */ unsigned __int64 gps_pcidev$q_address; /* PCI config address */ int gps_pcidev$l_bus; /* Bus upon which this device appears */ int gps_pcidev$l_seg; /* Segment of device's bus */ unsigned int gps_pcidev$l_gsin; /* Global System Interrupt Number */ int gps_pcidev$l_polarity; /* Interrupt Polarity */ int gps_pcidev$l_trig_mode; /* Interrupt Trigger Mode */ char gps_pcidev$b_fill_2_ [4]; } GPSPCIDEV; #define GPS$K_PCIDEV_LENGTH 40 /* */ /* GPS IO Port Object */ /* ------------------ */ /* Information reported upon the discovery of an IO Port Space. */ /* */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _gpsioport { #pragma __nomember_alignment unsigned __int64 gps_iop$q_base_pa; /* Base Phys Addr of Port IO Space */ int gps_iop$l_swizzle; /* Number of bits to shift */ int gps_iop$l_stride; /* "Sparseness" of Port IO Space */ } GPSIOPORT; #define GPS$K_IOP_LENGTH 16 /* */ /* GPS IO Port Device */ /* ------------------ */ /* Information reported upon the discovery of an IO Port Device. */ /* */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _gpsportdev { #pragma __nomember_alignment unsigned __int64 gps_iopdev$q_ioapic; /* VMS System VA of ACPI IOAPIC struct */ unsigned __int64 gps_iopdev$q_csr_pa; /* CSR Physical Address */ unsigned int gps_iopdev$l_gsin; /* Global System Interrupt Number */ int gps_iopdev$l_polarity; /* Interrupt Polarity */ int gps_iopdev$l_trig_mode; /* Interrupt Trigger Mode */ char gps_iopdev$b_fill_3_ [4]; } GPSPORTDEV; #define GPS$K_IOPDEV_LENGTH 32 /* */ /* GPS IO Embedded Device */ /* ---------------------- */ /* Information reported upon the discovery of an Embedded Device. */ /* */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _gpsembdev { #pragma __nomember_alignment unsigned __int64 gps_emb$q_ioapic; /* VMS System VA of ACPI IOAPIC struct */ unsigned __int64 gps_emb$q_csr_pa; /* CSR Physical Address */ int gps_emb$l_space; /* Type of Address Space */ unsigned int gps_emb$l_gsin; /* Global System Interrupt Number */ int gps_emb$l_polarity; /* Interrupt Polarity */ int gps_emb$l_trig_mode; /* Interrupt Trigger Mode */ } GPSEMBDEV; #define GPS$K_EMB_LENGTH 32 /* */ /* GPS IOC Object */ /* --------------------- */ /* Information reported upon the discovery of an IOC which is separate */ /* from its system bus. HWP0004 for example. */ /* */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _gpsioc { #pragma __nomember_alignment unsigned __int64 gps_ioc$q_ioc_base; /* Base Phys addr of IOC registers */ unsigned __int64 gps_ioc$q_tra_offset; /* System access translation PA offset */ } GPSIOC; #define GPS$K_IOC_LENGTH 16 /* */ /* GPS ROOT Object */ /* --------------------- */ /* Information reported upon the discovery of the root node. */ /* */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _gpsroot { #pragma __nomember_alignment unsigned __int64 gps_root$q_reserved_1; /* Reserved */ unsigned __int64 gps_root$q_reserved_2; /* Reserved */ } GPSROOT; #define GPS$K_ROOT_LENGTH 16 /* */ /* GPS CONTAIN Object */ /* --------------------- */ /* Information reported upon the discovery of a container node. */ /* */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _gpscontain { #pragma __nomember_alignment unsigned __int64 gps_contain$q_reserved_1; /* Reserved */ unsigned __int64 gps_contain$q_reserved_2; /* Reserved */ } GPSCONTAIN; #define GPS$K_CONTAIN_LENGTH 16 /* */ /* GPS SPCR Object */ /* --------------------- */ /* Information reported upon the discovery of a SPCR table */ /* Defined as DIG64 Rev 5 Table, backwards compatible with Rev 4. */ /* */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __longword #else #pragma __nomember_alignment #endif typedef struct _gpsspmi { #pragma __nomember_alignment unsigned char gps_spmi$b_interface_type; /* Interface type */ unsigned char gps_spmi$b_ipmi; /* Indicates IPMI enabled */ unsigned short int gps_spmi$w_spec_revision; /* Rev of pertinent spec */ unsigned char gps_spmi$b_interrupt_type; /* Interrupt type */ unsigned char gps_spmi$b_gpe; /* GPE block number */ unsigned char gps_spmi$b_reserved_0; /* reserved */ unsigned char gps_spmi$b_pci_device_flag; /* PCI Device Flag */ unsigned int gps_spmi$l_gsin; /* Global System Interrupt */ unsigned char gps_spmi$b_address_space_id; /* Part of ACPI GAS struct */ unsigned char gps_spmi$b_register_bit_width; /* Part of ACPI GAS struct */ unsigned char gps_spmi$b_register_bit_offset; /* Part of ACPI GAS struct */ unsigned char gps_spmi$b_address_size; /* Part of ACPI GAS struct */ unsigned __int64 gps_spmi$q_base_address; /* Part of ACPI GAS struct */ unsigned char gps_spmi$b_pci_seg; /* PCI ident */ unsigned char gps_spmi$b_pci_bus; /* PCI ident */ unsigned char gps_spmi$b_pci_device; /* PCI ident */ unsigned char gps_spmi$b_pci_function; /* PCI ident */ unsigned char gps_spmi$b_reserved_1; /* Reserved for compatibility */ char gps_spmi$b_fill_4_ [3]; } GPSSPMI; #define GPS$K_SPMI_LENGTH 32 /* */ /* GPS CPU Object */ /* --------------------- */ /* Information reported upon the discovery of a processor object. */ /* */ #define GPS_CPU$M_ENABLED 0x1 #define GPS_CPU$M_RESERVED 0xFE #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _gpscpudev { #pragma __nomember_alignment unsigned __int64 gps_cpu$q_lid; /* Local ID */ unsigned int gps_cpu$l_procid; /* ACPI Processor ID */ __union { /* Processor flags */ unsigned char gps_cpu$b_flags; __struct { unsigned gps_cpu$v_enabled : 1; unsigned gps_cpu$v_reserved : 7; } gps_cpu$r_bits; } gps_cpu$r_flags_overlay; unsigned char gps_cpu$b_reserved_0; unsigned short int gps_cpu$w_reserved_1; } GPSCPUDEV; #if !defined(__VAXC) #define gps_cpu$b_flags gps_cpu$r_flags_overlay.gps_cpu$b_flags #define gps_cpu$v_enabled gps_cpu$r_flags_overlay.gps_cpu$r_bits.gps_cpu$v_enabled #define gps_cpu$v_reserved gps_cpu$r_flags_overlay.gps_cpu$r_bits.gps_cpu$v_reserved #endif /* #if !defined(__VAXC) */ #define GPS$K_CPUDEV_LENGTH 16 /* */ /* GPS GPE Block Device */ /* -------------------- */ /* Information reported upon the discovery of a GPE Block device */ /* */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _gpsgpedev { #pragma __nomember_alignment unsigned __int64 gps_gpe$q_hw_id; /* PNP ID string equivalent */ unsigned __int64 gps_gpe$q_mbz; /* quadword of zeroes */ unsigned __int64 gps_gpe$q_hw_handle; /* Object's hardware handle */ unsigned __int64 gps_gpe$q_parent; /* hw_handle of object's parent */ unsigned int gps_gpe$l_gsin; /* Global System Interrupt Number */ int gps_gpe$l_int_type; /* Interrupt Type */ int gps_gpe$l_polarity; /* Interrupt Polarity */ int gps_gpe$l_trig_mode; /* Interrupt Trigger Mode */ unsigned char gps_gpe$b_address_space_id; /* Part of ACPI GAS struct */ unsigned char gps_gpe$b_register_bit_width; /* Part of ACPI GAS struct */ unsigned char gps_gpe$b_register_bit_offset; /* Part of ACPI GAS struct */ unsigned char gps_gpe$b_access_size; /* Part of ACPI GAS struct */ unsigned __int64 gps_gpe$q_base_address; /* Part of ACPI GAS struct */ char gps_gpe$b_fill_5_ [4]; } GPSGPEDEV; #define GPS$K_GPEDEV_LENGTH 64 /* */ /* GPS Data */ /* -------- */ /* Combine the discoverable bus objects into one union. */ /* */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef union _gpsdata { #pragma __nomember_alignment GPSSYSBUS gps$r_sysbus; /* GPSSYSBUSLESS uses same structure */ GPSPCIHOST gps$r_pci_host; GPSPCIDEV gps$r_pci_dev; GPSIOPORT gps$r_io_port; GPSPORTDEV gps$r_port_dev; GPSEMBDEV gps$r_emb_dev; GPSIOC gps$r_ioc; GPSROOT gps$r_root; GPSCONTAIN gps$r_container; GPSCPUDEV gps$r_cpu_dev; GPSGPEDEV gps$r_gpe_dev; } GPSDATA; #define GPS$K_DATA_LENGTH 64 /* */ /* GPS Config Information */ /* ---------------------- */ /* Combine the GPS Header and Data structures into one structure to be */ /* inited by ACPI calls and used by VMS IO mapping and configuring code. */ /* */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _gpsconfig { #pragma __nomember_alignment GPSHEADER gps$r_header; GPSDATA gps$r_data; } GPSCONFIG; #define GPS$K_CONFIG_LENGTH 176 /* */ /* GPS I/O APIC Information (x86 only) */ /* ----------------------------------- */ /* */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _gpsioapicinfo { #pragma __nomember_alignment unsigned __int64 gps_ioapic$q_base_addr; unsigned int gps_ioapic$l_base_gsin; unsigned char gps_ioapic$b_id; char gps_ioapic$b_fill_6_ [3]; } GPSIOAPICINFO; #define GPS$K_IOAPIC_LENGTH 16 /* */ /* GPS HCDP Information */ /* -------------------- */ /* This structure provides information on the Headless Console & Debug Port, */ /* if there is one. */ /* */ #define GPS_HCDP$M_FUNCTION 0x7 #define GPS_HCDP$M_RESERVED 0x38 #define GPS_HCDP$M_INTR_FLAG 0x40 #define GPS_HCDP$M_PCI_DEVICE 0x80 #define GPS_HCDP$M_CONSOLE 0x1 #define GPS_HCDP$K_TYPE_GENERIC_UART 0 #define GPS_HCDP$K_TYPE_DEBUG_PORT 1 #define GPS_HCDP$K_TYPE_VGA 10 #define GPS_HCDP$K_TYPE_FPARS_VCON 130 #define GPS_HCDP$K_VERSION_PCDP 3 #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _gpshcdpdev { #pragma __nomember_alignment unsigned short int gps_hcdp$w_vendor_id; unsigned short int gps_hcdp$w_device_id; int gps_hcdp$l_space_id; /* Type of address space */ unsigned __int64 gps_hcdp$q_address; /* Address of the device */ unsigned int gps_hcdp$l_gsin; /* Global System Interrupt Number */ int gps_hcdp$l_polarity; /* Interrupt Polarity */ int gps_hcdp$l_trig_mode; /* Interrupt Trigger Mode */ /* */ /* X-21 20070302 TLC */ /* Changed seg field from byte to word to comply with PCI_NODE_NUMBER */ /* and SAL. */ /* */ unsigned char gps_hcdp$b_seg; /* These fields are valid when the */ unsigned char gps_hcdp$b_bus; /* | pci_device flag bit is set */ unsigned char gps_hcdp$b_device; /* | (see function_bits below) */ /* */ /* X-21 20070302 TLC - Clarification */ /* The PCI Function byte in the HCDP/PCDP is overloaded with flag bits, */ /* so we break them out here so they can be easily accessed by parsing */ /* code. */ /* */ __union { unsigned char gps_hcdp$b_function; /* whole word */ __struct { unsigned gps_hcdp$v_function : 3; /* function number */ unsigned gps_hcdp$v_reserved : 3; unsigned gps_hcdp$v_intr_flag : 1; /* supports intr if 1 */ unsigned gps_hcdp$v_pci_device : 1; /* pci_device if 1 */ } gps_hcdp$r_function_bits; } gps_hcdp$r_function_overlay; /* */ /* X-21 20070302 TLC */ /* Flags */ /* */ __union { unsigned char gps_hcdp$b_flags; __struct { unsigned gps_hcdp$v_console : 1; /* system console flag */ unsigned gps_hcdp$v_fill_7_ : 7; } gps_hcdp$r_flag_bits; } gps_hcdp$r_flags_overlay; /* */ /* X-21 20070302 TLC */ /* Add version field to enable PLATFORM_SUPPORT to understand data */ /* in terms of whether coming from HCDP or PCDP. */ /* */ char gps_hcdp$b_version; /* Version number: HCDP = 2, PCDP = 3 */ /* */ /* X-21 20070302 TLC */ /* Add type field to enable PLATFORM_SUPPORT to sort out the various */ /* console and com port device types. */ /* */ char gps_hcdp$b_type; /* HCDP/PCDP device type */ /* */ /* X-21 20070302 TLC */ /* Pad out to next quadword. */ /* */ char gps_hcdp$b_quad_fill [5]; /* */ /* X-21 20070302 TLC */ /* HCDP/PCDP Console and Debug Port type constants. */ /* */ } GPSHCDPDEV; #if !defined(__VAXC) #define gps_hcdp$b_function gps_hcdp$r_function_overlay.gps_hcdp$b_function #define gps_hcdp$v_function gps_hcdp$r_function_overlay.gps_hcdp$r_function_bits.gps_hcdp$v_function #define gps_hcdp$v_reserved gps_hcdp$r_function_overlay.gps_hcdp$r_function_bits.gps_hcdp$v_reserved #define gps_hcdp$v_intr_flag gps_hcdp$r_function_overlay.gps_hcdp$r_function_bits.gps_hcdp$v_intr_flag #define gps_hcdp$v_pci_device gps_hcdp$r_function_overlay.gps_hcdp$r_function_bits.gps_hcdp$v_pci_device #define gps_hcdp$b_flags gps_hcdp$r_flags_overlay.gps_hcdp$b_flags #define gps_hcdp$v_console gps_hcdp$r_flags_overlay.gps_hcdp$r_flag_bits.gps_hcdp$v_console #endif /* #if !defined(__VAXC) */ #define GPS$K_HCDP_LENGTH 40 /* */ /* GPS System Information */ /* ---------------------- */ /* Provides information on the ACPI System. */ /* */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _gpssysinfo { #pragma __nomember_alignment char gps_syi$t_vendor_name [8]; char gps_syi$t_vendor_model_name [8]; unsigned __int64 gps_syi$q_acpi_ca_revision; unsigned int gps_syi$l_acpi_major_revision; char gps_syi$b_fill_8_ [4]; } GPSSYSINFO; #define GPS$K_SYSINFO_LENGTH 32 /* */ /* Generic ACPI Buffer */ /* ------------------- */ /* For calls to acpi$osl_execute_method() that return with data type of */ /* ACPI_TYPE_BUFFER. */ /* */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _gpsbuffer { #pragma __nomember_alignment int gps_buf$l_length; /* Length of data in bytes */ int gps_buf$l_spare1_mbz; /* Must be zeroed when created */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ void *gps_buf$pq_pointer; /* Pointer to data */ #else unsigned __int64 gps_buf$pq_pointer; #endif } GPSBUFFER; /* */ /* System statistics returned by acpi$osl_get_statistics */ /* To get the entries in FixedEventCounts, */ /* acpi$osl_get_statistics fetches them via callback routines */ /* registered by previous calls to acpi$osl_install_fixed_handler. */ /* */ typedef struct _gpsstatistics { #pragma __nomember_alignment unsigned int gps_sta$l_sci_count; unsigned int gps_sta$l_gpe_count; unsigned int gps_sta$l_fixed_event_count [5]; /* equal to acpi ACPI_NUM_FIXED_EVENTS */ unsigned int gps_sta$l_method_count; } GPSSTATISTICS; #define GPS$K_STATISTICS_LENGTH 32 /* */ /* Table Event handler used by acpi$osl_install_table_handler and */ /* acpi$os_remove_table_handler */ /* */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _gpstablehandler { #pragma __nomember_alignment unsigned int gps_thdl$l_event; #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __short /* And set ptr size default to 32-bit pointers */ #endif void *gps_thdl$ps_table; void *gps_thdl$ps_context; char gps_thdl$b_fill_9_ [4]; } GPSTABLEHANDLER; #define GPS$K_THDL_LENGTH 16 /* */ /* ============================================================================ */ /* SLOT OBJECT DEFINITION */ /* ============================================================================ */ /* */ /* A SLOT OBJECT is a physical connector on a backplane or motherboard into */ /* which a hardware device or adapter may be inserted. Slot Objects are */ /* tracked because it is possible for a device to be inserted into a slot in */ /* one hardware partition, while being "owned" by another hardware partition. */ /* */ /* This allows more flexibility in allocation of IO adapter resources in */ /* systems that have been partitioned. However, it is important to be able */ /* to determine whether an adapter or IO function in a slot can be configured */ /* into the current system. If the adapter or IO function is owned by another */ /* hardware partition, then the corresponding BUSARRAYENTRY in the non-owning */ /* partition must be invalidated. */ /* */ /* It is possible for a SLOT object to have another SLOT as its parent. */ /* */ /* EBA (Express Bus Agent) */ /* HID A */ /* ADP ----+------------------+ */ /* | | */ /* SLOT SLOT */ /* HID B HID C */ /* Parent HID A Parent HID A */ /* | | */ /* SLOT SLOT */ /* HID B1 HID C1 */ /* Parent HID B Parent HID C */ /* */ /* Since SLOT objects do not have their own ADPs, a problem ensues when */ /* trying to find the parent ADP of SLOT objects descendent from other */ /* SLOT objects, since the Parent Hardware Handle of descendent SLOT objects */ /* is that of their parent SLOT, rather than that of their ancestral Bus Agent. */ /* It is the Parent Hardware Handle of the ancestral Bus Agent that is required */ /* to locate the ADP for any given SLOT object. */ /* */ /* The following structure maps the ADP of the first-level SLOT objects */ /* of a Bus Agent (LBA, EBA, etc) with SLOT objects on descendent levels. */ /* An array of these structures is dynamicaly allocated by Bus Agents that */ /* require them. The pointer to the array will be placed in the adp$ps_devslots */ /* field of the ADP. */ /* */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _devslot { #pragma __nomember_alignment unsigned __int64 devslot$q_hw_handle; unsigned __int64 devslot$q_parent_hh; __int64 devslot$q_reserved_0; __int64 devslot$q_reserved_1; } DEVSLOT; /****************************************************************************** */ /* ACPI DATA TYPES, CONSTANTS AND ENUMERATIONS */ /****************************************************************************** */ /* */ /* This section contains copies of the ACPI data types and definitions */ /* that must be exposed for other facilities, particularly PLATFORM_SUPPORT */ /* (aka IVMS), to use for calls into the ACPI. */ /* */ /* This section must be reviewed whenever there is a new ACPI code drop to */ /* assure proper synchronization with ACPI data types and definitions. */ /* */ /* NOTE: These definitions have been removed to prevent future backward */ /* compatibility issues with ACPI-CA updates from Intel. The file */ /* LOCALDEFS.H now imports ACPI data type definitions directly */ /* from the ACPI facility by including ACPI.H. ER - 12/16/2005 */ /* */ /* */ /* The following constant can be used to clue acpi$osl_get_crs_item that */ /* the parameter is unused or not required to fetch the item. */ /* */ #define GPS$K_IGNORE -1 /* */ /* ============================================================================ */ /* ACPI RESOURCE DEFINITIONS */ /* ============================================================================ */ /* */ /* The ACPI Resource Hierarchy can be represented as follows. */ /* */ /* RESOURCE */ /* | */ /* +---------> ACPI_RESOURCE_TYPE */ /* | */ /* +-----------> ATTRIBUTE_ATTRIBUTE */ /* */ /* In a call to acpi$osl_get_crs_item, the top level parameter is required. */ /* The others may or may not be required, depending on the type of resource */ /* and the ways in which it can be characterized. */ /* */ /* */ /* Structures used to describe device-specific resources. */ /* */ typedef struct _gps_resource_vendccsr { unsigned short int gps_vend$w_ccsr_length; unsigned char gps_vend$b_ccsr_guid_subtype; unsigned char gps_vend$b_ccsr_guid [16]; unsigned char gps_vend$b_cec_csr_base [8]; } GPS_RESOURCE_VENDCCSR; typedef struct _gps_resource_vendpcih { unsigned short int gps_vend$w_pcih_length; unsigned char gps_vend$b_pcih_guid_subtype; unsigned char gps_vend$b_pcih_guid [16]; unsigned char gps_vend$b_pci_hint [2]; } GPS_RESOURCE_VENDPCIH; #pragma __member_alignment __restore #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __restore /* Restore the previously-defined required ptr size */ #endif #ifdef __cplusplus } #endif #pragma __standard #endif /* __GPSCFGDEF_LOADED */