os-k/include/io/acpi.h

117 lines
3.3 KiB
C
Raw Normal View History

2020-02-02 13:33:57 +01:00
//----------------------------------------------------------------------------//
// GNU GPL OS/K //
// //
// Desc: ACPI, Hardware detection related //
// //
// //
// Copyright © 2018-2020 The OS/K Team //
2020-02-02 13:33:57 +01:00
// //
// 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
//----------------------------------------------------------------------------//
2020-02-03 11:58:34 +01:00
//
2020-02-03 15:34:20 +01:00
// ACPI 1.0 descriptor
2020-02-03 11:58:34 +01:00
//
2020-02-03 15:34:20 +01:00
struct RSDPLegacy {
2020-02-03 11:58:34 +01:00
char signature[8];
uchar checksum;
char OEMID[6];
uchar revision;
uint rsdtAddress;
2020-02-03 15:34:20 +01:00
} __attribute__ ((packed));
//
// ACPI 2.0 descriptor
//
struct RSDPDescriptor {
// RSDT ACPI 1.0 and above
struct RSDPLegacy legacy;
// RSDT ACPI 2.0
2020-02-03 11:58:34 +01:00
uint length;
ulong xsdtAddress;
uchar extendedChecksum;
uchar reserved[3];
} __attribute__ ((packed));
2020-02-03 15:34:20 +01:00
//
// 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;
2020-02-04 17:23:05 +01:00
uint sdtTablePtr;
2020-02-03 15:34:20 +01:00
};
//
// 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
2020-02-03 11:58:34 +01:00
//----------------------------------------------------------------------------//
2020-02-03 17:43:05 +01:00
void IoInitAcpi(void);
2020-02-02 13:33:57 +01:00
SDTHeader *IoGetAcpiTable(ulong id);
2020-02-02 13:33:57 +01:00
//----------------------------------------------------------------------------//
#endif