os-k/include/io/acpi.h

82 lines
2.9 KiB
C

//----------------------------------------------------------------------------//
// 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 <https://www.gnu.org/licenses/>. //
//----------------------------------------------------------------------------//
#ifndef _KERNEL_H
#include <kernel.h>
#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;
};
//----------------------------------------------------------------------------//
void IoInitAcpi(void);
//----------------------------------------------------------------------------//
#endif