/*
- * coreboot ACPI Support - headers and defines.
+ * This file is part of the coreboot project.
*
- * written by Stefan Reinauer <stepan@coresystems.de>
* Copyright (C) 2004 SUSE LINUX AG
* Copyright (C) 2004 Nick Barker
* Copyright (C) 2008-2009 coresystems GmbH
+ * (Written by Stefan Reinauer <stepan@coresystems.de>)
*
- * 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; version 2 of
- * the License.
+ * 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; version 2 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
- * MA 02110-1301 USA
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+/*
+ * coreboot ACPI Support - headers and defines.
*/
#ifndef __ASM_ACPI_H
#if CONFIG_GENERATE_ACPI_TABLES==1
#include <stdint.h>
-
+
#define RSDP_SIG "RSD PTR " /* RSDT Pointer signature */
#define ACPI_TABLE_CREATOR "COREBOOT"
#define OEM_ID "CORE "
char signature[8]; /* RSDP signature "RSD PTR" */
u8 checksum; /* checksum of the first 20 bytes */
char oem_id[6]; /* OEM ID, "LXBIOS" */
- u8 revision; /* 0 for APCI 1.0, 2 for ACPI 2.0/3.0 */
+ u8 revision; /* 0 for ACPI 1.0, 2 for ACPI 2.0/3.0 */
u32 rsdt_address; /* physical address of RSDT */
u32 length; /* total length of RSDP (including extended part) */
u64 xsdt_address; /* physical address of XSDT */
LocalApic = 0,
IOApic = 1,
IRQSourceOverride = 2,
- NMI = 3,
+ NMIType = 3,
LocalApicNMI = 4,
LApicAddressOverride = 5,
IOSApic = 6,
} __attribute__ ((packed)) acpi_ecdt_t;
-/* These are implemented by the target port */
+/* These are implemented by the target port or north/southbridge*/
unsigned long write_acpi_tables(unsigned long addr);
unsigned long acpi_fill_madt(unsigned long current);
unsigned long acpi_fill_mcfg(unsigned long current);
void acpi_create_ssdt_generator(acpi_header_t *ssdt, const char *oem_table_id);
void acpi_create_fadt(acpi_fadt_t *fadt,acpi_facs_t *facs, void *dsdt);
+void update_ssdt(void* ssdt);
+void update_ssdtx(void* ssdtx, int i);
+
/* These can be used by the target port */
u8 acpi_checksum(u8 *table, u32 length);
void acpi_create_facs(acpi_facs_t *facs);
+#if CONFIG_HAVE_ACPI_SLIC
+unsigned long acpi_create_slic(unsigned long current);
+#endif
+
void acpi_write_rsdt(acpi_rsdt_t *rsdt);
void acpi_write_xsdt(acpi_xsdt_t *xsdt);
void acpi_write_rsdp(acpi_rsdp_t *rsdp, acpi_rsdt_t *rsdt, acpi_xsdt_t *xsdt);
void suspend_resume(void);
void *acpi_find_wakeup_vector(void);
void *acpi_get_wakeup_rsdp(void);
-void acpi_jmp_to_realm_wakeup(u32 linear_addr) __attribute__((regparm(0)));
void acpi_jump_to_wakeup(void *wakeup_addr);
int acpi_get_sleep_type(void);
#endif
+/* northbridge/amd/amdfam10/amdfam10_acpi.c */
unsigned long acpi_add_ssdt_pstates(acpi_rsdp_t *rsdp, unsigned long current);
+/* cpu/intel/speedstep/acpi.c */
+void generate_cpu_entries(void);
#define ACPI_WRITE_MADT_IOAPIC(dev,id) \
do { \