aboutsummaryrefslogtreecommitdiff
path: root/com32/gplinclude/acpi/acpi.h
diff options
context:
space:
mode:
Diffstat (limited to 'com32/gplinclude/acpi/acpi.h')
-rw-r--r--com32/gplinclude/acpi/acpi.h99
1 files changed, 99 insertions, 0 deletions
diff --git a/com32/gplinclude/acpi/acpi.h b/com32/gplinclude/acpi/acpi.h
new file mode 100644
index 0000000..bf3ffdb
--- /dev/null
+++ b/com32/gplinclude/acpi/acpi.h
@@ -0,0 +1,99 @@
+/* ----------------------------------------------------------------------- *
+ *
+ * Copyright 2009-2011 Erwan Velu - All Rights Reserved
+ *
+ * This program 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, Inc., 53 Temple Place Ste 330,
+ * Boston MA 02111-1307, USA; either version 2 of the License, or
+ * (at your option) any later version; incorporated herein by reference.
+ *
+ * ----------------------------------------------------------------------- */
+
+#ifndef ACPI_H
+#define ACPI_H
+
+#define DEBUG_ACPI 0
+
+void dbg_printf(const char *fmt, ...);
+#define DEBUG_PRINT(x) do { if (DEBUG_ACPI) dbg_printf x; } while (0)
+
+#include <inttypes.h>
+#include <stdbool.h>
+#include <acpi/structs.h>
+#include <acpi/rsdp.h>
+#include <acpi/rsdt.h>
+#include <acpi/xsdt.h>
+#include <acpi/fadt.h>
+#include <acpi/madt.h>
+#include <acpi/dsdt.h>
+#include <acpi/ssdt.h>
+#include <acpi/sbst.h>
+#include <acpi/ecdt.h>
+#include <acpi/facs.h>
+#include <acpi/hpet.h>
+#include <acpi/tcpa.h>
+#include <acpi/mcfg.h>
+#include <acpi/slic.h>
+#include <acpi/boot.h>
+
+enum { ACPI_FOUND = 1, ENO_ACPI = 2 , MADT_FOUND = 3 , ENO_MADT = 4 };
+
+#define MAX_SSDT 128
+
+/* Some other description HEADERS : ACPI doc: 5.2.6*/
+#define OEMX "OEMx"
+#define SRAR "SRAT"
+#define BERT "BERT"
+#define BOOT "BOOT"
+#define CPEP "CPEP"
+#define DBGP "DGBP"
+#define DMAR "DMAR"
+#define ERST "ERST"
+#define ETDT "ETDT"
+#define HEST "HEST"
+#define HPET "HPET"
+#define IBFT "IBFT"
+#define MCFG "MCFG"
+#define SPCR "SPCR"
+#define SPMI "SPMI"
+#define TCPA "TCPA"
+#define UEFI "UEFI"
+#define WAET "WAET"
+#define WDAT "WDAT"
+#define WDRT "WDRT"
+#define WSPT "WSPT"
+#define SLIC "SLIC"
+
+/* This macro are used to extract ACPI structures
+ * please be careful about the q (interator) naming */
+#define cp_struct(dest) memcpy(dest,q,sizeof(*dest)); q+=sizeof(*dest)
+#define cp_str_struct(dest) memcpy(dest,q,sizeof(dest)-1); dest[sizeof(dest)-1]=0;q+=sizeof(dest)-1
+
+typedef struct {
+ s_rsdp rsdp;
+ s_rsdt rsdt;
+ s_xsdt xsdt;
+ s_fadt fadt;
+ s_madt madt;
+ s_dsdt dsdt;
+ s_ssdt *ssdt[MAX_SSDT];
+ uint8_t ssdt_count;
+ s_sbst sbst;
+ s_ecdt ecdt;
+ s_facs facs;
+ s_hpet hpet;
+ s_tcpa tcpa;
+ s_mcfg mcfg;
+ s_slic slic;
+ s_boot boot;
+} s_acpi;
+
+int parse_acpi(s_acpi * acpi);
+int parse_xsdt(s_acpi * acpi);
+void parse_madt(s_acpi * acpi);
+int search_rsdp(s_acpi *acpi);
+void get_acpi_description_header(uint8_t *q, s_acpi_description_header * adh);
+bool parse_header(uint64_t *address, s_acpi *acpi);
+char *flags_to_string(char *buffer, uint16_t flags);
+#endif