1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- /*
- * ACPI definitions
- *
- * A System Descriptor Table starts with a header of 4 bytes of signature
- * followed by 4 bytes of total table length then 28 bytes of ID information
- * (including the table checksum).
- */
- typedef struct Dsdt Dsdt;
- typedef struct Facp Facp;
- typedef struct Hpet Hpet;
- typedef struct Madt Madt;
- typedef struct Mcfg Mcfg;
- typedef struct Mcfgd Mcfgd;
- typedef struct Rsd Rsd;
- struct Dsdt { /* Differentiated System DT */
- uchar sdthdr[36]; /* "DSDT" + length[4] + [28] */
- uchar db[]; /* Definition Block */
- };
- struct Facp { /* Fixed ACPI DT */
- uchar sdthdr[36]; /* "FACP" + length[4] + [28] */
- uchar faddr[4]; /* Firmware Control Address */
- uchar dsdt[4]; /* DSDT Address */
- uchar pad[200]; /* total table is 244 */
- };
- struct Hpet { /* High-Precision Event Timer DT */
- uchar sdthdr[36]; /* "HPET" + length[4] + [28] */
- uchar id[4]; /* Event Timer Block ID */
- uchar addr[12]; /* ACPI Format Address */
- uchar seqno; /* Sequence Number */
- uchar minticks[2]; /* Minimum Clock Tick */
- uchar attr; /* Page Protection */
- };
- struct Madt { /* Multiple APIC DT */
- uchar sdthdr[36]; /* "MADT" + length[4] + [28] */
- uchar addr[4]; /* Local APIC Address */
- uchar flags[4];
- uchar structures[];
- };
- typedef struct Mcfg { /* PCI Memory Mapped Config */
- uchar sdthdr[36]; /* "MCFG" + length[4] + [28] */
- uchar pad[8]; /* reserved */
- Mcfgd mcfgd[]; /* descriptors */
- } Mcfg;
- struct Mcfgd { /* MCFG Descriptor */
- uchar addr[8]; /* base address */
- uchar segno[2]; /* segment group number */
- uchar sbno; /* start bus number */
- uchar ebno; /* end bus number */
- uchar pad[4]; /* reserved */
- };
- struct Rsd { /* Root System Description * */
- uchar signature[8]; /* "RSD PTR " */
- uchar rchecksum;
- uchar oemid[6];
- uchar revision;
- uchar raddr[4]; /* RSDT */
- uchar length[4];
- uchar xaddr[8]; /* XSDT */
- uchar xchecksum; /* XSDT */
- uchar pad[3]; /* reserved */
- };
|