Subversion Repositories planix.SVN

Rev

Blame | Last modification | View Log | RSS feed

/*
 * 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 */
};