//----------------------------------------------------------------------------//
// GNU GPL OS/K //
// //
// Desc: ACPI, Hardware detection related //
// //
// //
// Copyright © 2018-2020 The OS/K Team //
// //
// This file is part of OS/K. //
// //
// OS/K is free software: you can redistribute it and/or modify //
// it under the terms of the GNU General Public License as published by //
// the Free Software Foundation, either version 3 of the License, or //
// any later version. //
// //
// OS/K is distributed in the hope that it will be useful, //
// but WITHOUT ANY WARRANTY//without even the implied warranty of //
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
// GNU General Public License for more details. //
// //
// You should have received a copy of the GNU General Public License //
// along with OS/K. If not, see . //
//----------------------------------------------------------------------------//
#ifndef _KERNEL_H
#include
#endif
#ifndef _IO_ACPI_H
#define _IO_ACPI_H
//----------------------------------------------------------------------------//
//
// ACPI 1.0 descriptor
//
struct RSDPLegacy {
char signature[8];
uchar checksum;
char OEMID[6];
uchar revision;
uint rsdtAddress;
} __attribute__ ((packed));
//
// ACPI 2.0 descriptor
//
struct RSDPDescriptor {
// RSDT ACPI 1.0 and above
struct RSDPLegacy legacy;
// RSDT ACPI 2.0
uint length;
ulong xsdtAddress;
uchar extendedChecksum;
uchar reserved[3];
} __attribute__ ((packed));
//
// ACPI System Description Table
//
struct SDTHeader {
char signature[4];
uint length;
uchar revision;
uchar checksum;
char OEMID[6];
char OEMTableID[8];
uint OEMRevision;
uint creatorID;
uint creatorRevision;
uint sdtTablePtr;
};
//
// ACPI table types id
//
enum {
SDT_MADT,
SDT_BERT,
SDT_CPEP,
SDT_DSDT,
SDT_ECDT,
SDT_EINJ,
SDT_ERST,
SDT_FADT,
SDT_FACS,
SDT_HEST,
SDT_MSCT,
SDT_MPST,
SDT_OEMx,
SDT_PMTT,
SDT_PSDT,
SDT_RASF,
SDT_RSDT,
SDT_SBST,
SDT_SLIT,
SDT_SRAT,
SDT_SSDT,
SDT_XSDT,
SDT_HEPT
};
#define N_SDT_TYPES 23
//----------------------------------------------------------------------------//
void IoInitAcpi(void);
SDTHeader *IoGetAcpiTable(ulong id);
//----------------------------------------------------------------------------//
#endif