ApertureOS
priv_acpi_tables.h
Go to the documentation of this file.
1 #ifndef _PRIV_ACPI_TABLES_DRIVER_H_
2 #define _PRIV_ACPI_TABLES_DRIVER_H_
3 
4 #include "types.h"
5 
11 typedef struct
13 {
14  char Signature[8];
15  uint8_t Checksum;
16  char OEMID[6];
17  uint8_t Revision;
18  uint32_t RsdtAddress;
20 
22 typedef struct
23 {
25 
26  uint32_t Length;
27  uint64_t XsdtAddress;
29  uint8_t reserved[3];
31 
32 #define RSDP_EXPECTED_SIG "RSD PTR "
33 #define ACPI_VERSION_1 0
34 #define ACPI_VERSION_2 1
35 
37 typedef struct
38 {
39  char Signature[4];
40  uint32_t Length;
41  uint8_t Revision;
42  uint8_t Checksum;
43  char OEMID[6];
44  char OEMTableID[8];
45  uint32_t OEMRevision;
46  uint32_t CreatorID;
47  uint32_t CreatorRevision;
49 
51 typedef struct
52 {
54  uint64_t PointerToOtherSDT[1];
55 } XSDT;
56 
58 typedef struct
59 {
61  uint32_t PointerToOtherSDT[1];
62 } RSDT;
63 
65 typedef struct
66 {
67  uint8_t address_space_id; // 0 - system memory, 1 - system I/O
70  uint8_t reserved;
71  uint64_t address;
73 
74 #define XSDT_GET_POINTER_COUNT(h) ((h.Length - sizeof(h)) / 8)
75 #define RSDT_GET_POINTER_COUNT(h) ((h.Length - sizeof(h)) / 4)
76 #define BIOS_SEARCH_START 0x000E0000
77 #define BIOS_SEARCH_END 0x000FFFFF
78 
81 
82 //TODO this should eventually go into the PCI base driver
83 typedef struct pci_vendor
84 {
85  uint16_t ven_id;
86  const char *ven_name;
87 } pci_vendor_t;
88 
89 typedef struct pci_device
90 {
91  uint16_t ven_id;
92  uint16_t dev_id;
93  const char *dev_name;
94 } pci_device_t;
95 
96 typedef struct pci_baseclass
97 {
98  uint8_t baseclass;
99  const char *name;
101 
102 typedef struct pci_subclass
103 {
104  uint8_t baseclass;
105  uint8_t subclass;
106  const char *name;
108 
111 #endif /* end of include guard: _PRIV_ACPI_TABLES_DRIVER_H_ */
uint32_t CreatorID
Definition: priv_acpi_tables.h:46
uint8_t Revision
Definition: priv_acpi_tables.h:41
const char * dev_name
Definition: priv_acpi_tables.h:93
ACPISDTHeader h
Definition: priv_acpi_tables.h:53
RSDPDescriptor20 * rsdp
Definition: priv_acpi_tables.h:80
RSDT Table.
Definition: priv_acpi_tables.h:58
Definition: priv_acpi_tables.h:96
const char * name
Definition: priv_acpi_tables.h:99
uint32_t RsdtAddress
Definition: priv_acpi_tables.h:18
uint8_t baseclass
Definition: priv_acpi_tables.h:104
uint64_t XsdtAddress
Definition: priv_acpi_tables.h:27
uint8_t register_bit_offset
Definition: priv_acpi_tables.h:69
XSDT Table.
Definition: priv_acpi_tables.h:51
const char * ven_name
Definition: priv_acpi_tables.h:86
uint8_t reserved
Definition: priv_acpi_tables.h:70
uint8_t baseclass
Definition: priv_acpi_tables.h:98
uint8_t Revision
Definition: priv_acpi_tables.h:17
uint16_t dev_id
Definition: priv_acpi_tables.h:92
uint32_t Length
Definition: priv_acpi_tables.h:40
uint8_t subclass
Definition: priv_acpi_tables.h:105
ACPISDTHeader h
Definition: priv_acpi_tables.h:60
uint8_t register_bit_width
Definition: priv_acpi_tables.h:68
uint8_t ACPITables_ValidateChecksum(ACPISDTHeader *header)
Definition: acpi_tables.c:37
ACPI Section Descriptor Table header.
Definition: priv_acpi_tables.h:37
RSDPDescriptor firstPart
Definition: priv_acpi_tables.h:24
uint32_t Length
Definition: priv_acpi_tables.h:26
const char * name
Definition: priv_acpi_tables.h:106
RSDT pointer Table.
Definition: priv_acpi_tables.h:12
Definition: priv_acpi_tables.h:83
uint16_t ven_id
Definition: priv_acpi_tables.h:85
uint8_t Checksum
Definition: priv_acpi_tables.h:15
Generic ACPI Address structure.
Definition: priv_acpi_tables.h:65
uint8_t address_space_id
Definition: priv_acpi_tables.h:67
uint64_t address
Definition: priv_acpi_tables.h:71
uint8_t Checksum
Definition: priv_acpi_tables.h:42
uint32_t CreatorRevision
Definition: priv_acpi_tables.h:47
uint32_t OEMRevision
Definition: priv_acpi_tables.h:45
Definition: priv_acpi_tables.h:102
uint8_t ExtendedChecksum
Definition: priv_acpi_tables.h:28
uint16_t ven_id
Definition: priv_acpi_tables.h:91
XSDT pointer Table.
Definition: priv_acpi_tables.h:22
Definition: priv_acpi_tables.h:89