/*
- * Initial LinuxBIOS ACPI Support - headers and defines.
+ * coreboot ACPI Support - headers and defines.
*
* written by Stefan Reinauer <stepan@openbios.org>
* (C) 2004 SUSE LINUX AG
*
* The ACPI table structs are based on the Linux kernel sources.
- *
- */
-/* ACPI FADT & FACS added by Nick Barker <nick.barker9@btinternet.com>
+ * ACPI FADT & FACS added by Nick Barker <nick.barker9@btinternet.com>
* those parts (C) 2004 Nick Barker
*/
#if HAVE_ACPI_TABLES==1
#include <stdint.h>
-typedef unsigned long long u64;
#define RSDP_SIG "RSD PTR " /* RSDT Pointer signature */
#define RSDP_NAME "RSDP"
#define MCFG_NAME "MCFG"
#define SRAT_NAME "SRAT"
#define SLIT_NAME "SLIT"
+#define SSDT_NAME "SSDT"
#define RSDT_TABLE "RSDT "
#define HPET_TABLE "AMD64 "
#define SRAT_TABLE "SRAT "
#define SLIT_TABLE "SLIT "
-#define OEM_ID "LXBIOS"
-#define ASLC "NONE"
+#define OEM_ID "CORE "
+#define ASLC "CORE"
/* ACPI 2.0 table RSDP */
struct acpi_table_header header;
u32 firmware_ctrl;
u32 dsdt;
- u8 res1;
+ u8 model;
u8 preferred_pm_profile;
u16 sci_int;
u32 smi_cmd;
u32 x_firmware_waking_vector_l;
u32 x_firmware_waking_vector_h;
u8 version;
- u8 resv[33];
+ u8 resv[31];
} __attribute__ ((packed)) acpi_facs_t;
/* These are implemented by the target port */
unsigned long write_acpi_tables(unsigned long addr);
unsigned long acpi_fill_madt(unsigned long current);
unsigned long acpi_fill_mcfg(unsigned long current);
-unsigned long acpi_fill_srat(unsigned long current);
+unsigned long acpi_fill_srat(unsigned long current);
+unsigned long acpi_fill_slit(unsigned long current);
+unsigned long acpi_fill_ssdt_generator(unsigned long current, char *oem_table_id);
+void acpi_create_ssdt_generator(acpi_header_t *ssdt, char *oem_table_id);
void acpi_create_fadt(acpi_fadt_t *fadt,acpi_facs_t *facs,void *dsdt);
/* These can be used by the target port */
unsigned long acpi_create_srat_lapics(unsigned long current);
void acpi_create_srat(acpi_srat_t *srat);
+void acpi_create_slit(acpi_slit_t *slit);
+
void acpi_create_hpet(acpi_hpet_t *hpet);
void acpi_create_mcfg(acpi_mcfg_t *mcfg);
void acpi_write_rsdt(acpi_rsdt_t *rsdt);
void acpi_write_rsdp(acpi_rsdp_t *rsdp, acpi_rsdt_t *rsdt);
+unsigned long acpi_add_ssdt_pstates(acpi_rsdt_t *rsdt, unsigned long current);
+
#define ACPI_WRITE_MADT_IOAPIC(dev,id) \
do { \
struct resource *res; \