[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] [HVM] ACPI: Clean up table definitions, move under hvmloader/
# HG changeset patch # User kfraser@xxxxxxxxxxxxxxxxxxxxx # Node ID 1bf4f15c5141edb20bddacc09ec64db550236e05 # Parent 15b5cc51db30383648375c3517879b7b623c34ca [HVM] ACPI: Clean up table definitions, move under hvmloader/ directory pending tighter integration of table generation into hvmloader. This patch also includes the TPM TIS SSDT generator from Stefan Berger at IBM. Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx> --- tools/firmware/acpi/Makefile | 68 --- tools/firmware/acpi/README | 22 - tools/firmware/acpi/acpi2_0.h | 331 ---------------- tools/firmware/acpi/acpi_build.c | 232 ----------- tools/firmware/acpi/acpi_dsdt.asl | 521 -------------------------- tools/firmware/acpi/acpi_dsdt.c | 300 -------------- tools/firmware/acpi/acpi_facs.c | 72 --- tools/firmware/acpi/acpi_facs.h | 32 - tools/firmware/acpi/acpi_fadt.c | 193 --------- tools/firmware/acpi/acpi_fadt.h | 166 -------- tools/firmware/acpi/acpi_gen.c | 53 -- tools/firmware/acpi/acpi_madt.c | 68 --- tools/firmware/acpi/acpi_madt.h | 44 -- tools/firmware/acpi/acpi_rsdt.c | 68 --- tools/firmware/Makefile | 1 tools/firmware/hvmloader/Makefile | 11 tools/firmware/hvmloader/acpi/Makefile | 63 +++ tools/firmware/hvmloader/acpi/README | 24 + tools/firmware/hvmloader/acpi/acpi2_0.h | 324 ++++++++++++++++ tools/firmware/hvmloader/acpi/build.c | 241 ++++++++++++ tools/firmware/hvmloader/acpi/dsdt.asl | 521 ++++++++++++++++++++++++++ tools/firmware/hvmloader/acpi/dsdt.c | 300 ++++++++++++++ tools/firmware/hvmloader/acpi/gen.c | 53 ++ tools/firmware/hvmloader/acpi/static_tables.c | 184 +++++++++ tools/firmware/hvmloader/acpi_madt.c | 176 +++----- tools/firmware/hvmloader/acpi_ssdt_tpm.asl | 29 + tools/firmware/hvmloader/acpi_ssdt_tpm.h | 25 + tools/firmware/hvmloader/acpi_utils.c | 207 ++++++++++ tools/firmware/hvmloader/acpi_utils.h | 36 + tools/firmware/hvmloader/hvmloader.c | 9 tools/firmware/hvmloader/util.c | 2 31 files changed, 2098 insertions(+), 2278 deletions(-) diff -r 15b5cc51db30 -r 1bf4f15c5141 tools/firmware/Makefile --- a/tools/firmware/Makefile Tue Oct 31 11:44:47 2006 +0000 +++ b/tools/firmware/Makefile Tue Oct 31 12:42:50 2006 +0000 @@ -9,7 +9,6 @@ SUBDIRS := SUBDIRS := SUBDIRS += rombios SUBDIRS += vgabios -SUBDIRS += acpi SUBDIRS += vmxassist SUBDIRS += hvmloader diff -r 15b5cc51db30 -r 1bf4f15c5141 tools/firmware/hvmloader/Makefile --- a/tools/firmware/hvmloader/Makefile Tue Oct 31 11:44:47 2006 +0000 +++ b/tools/firmware/hvmloader/Makefile Tue Oct 31 12:42:50 2006 +0000 @@ -40,11 +40,14 @@ CFLAGS += $(DEFINES) -I. $(XENINC) -fno CFLAGS += $(DEFINES) -I. $(XENINC) -fno-builtin -O2 -msoft-float LDFLAGS = -nostdlib -Wl,-N -Wl,-Ttext -Wl,$(LOADADDR) -SRCS = hvmloader.c acpi_madt.c mp_tables.c util.c smbios.c +SRCS = hvmloader.c acpi_madt.c mp_tables.c util.c smbios.c acpi_utils.c OBJS = $(patsubst %.c,%.o,$(SRCS)) .PHONY: all all: hvmloader + +acpi/acpi.bin: + $(MAKE) -C acpi hvmloader: roms.h $(SRCS) $(CC) $(CFLAGS) -c $(SRCS) @@ -52,15 +55,15 @@ hvmloader: roms.h $(SRCS) $(OBJCOPY) hvmloader.tmp hvmloader rm -f hvmloader.tmp -roms.h: ../rombios/BIOS-bochs-latest ../vgabios/VGABIOS-lgpl-latest.bin ../vgabios/VGABIOS-lgpl-latest.cirrus.bin ../vmxassist/vmxassist.bin ../acpi/acpi.bin +roms.h: ../rombios/BIOS-bochs-latest ../vgabios/VGABIOS-lgpl-latest.bin ../vgabios/VGABIOS-lgpl-latest.cirrus.bin ../vmxassist/vmxassist.bin acpi/acpi.bin sh ./mkhex rombios ../rombios/BIOS-bochs-latest > roms.h sh ./mkhex vgabios_stdvga ../vgabios/VGABIOS-lgpl-latest.bin >> roms.h sh ./mkhex vgabios_cirrusvga ../vgabios/VGABIOS-lgpl-latest.cirrus.bin >> roms.h sh ./mkhex vmxassist ../vmxassist/vmxassist.bin >> roms.h - sh ./mkhex acpi ../acpi/acpi.bin >> roms.h + sh ./mkhex acpi acpi/acpi.bin >> roms.h .PHONY: clean clean: rm -f roms.h acpi.h rm -f hvmloader hvmloader.tmp hvmloader.o $(OBJS) - + $(MAKE) -C acpi clean diff -r 15b5cc51db30 -r 1bf4f15c5141 tools/firmware/hvmloader/acpi_madt.c --- a/tools/firmware/hvmloader/acpi_madt.c Tue Oct 31 11:44:47 2006 +0000 +++ b/tools/firmware/hvmloader/acpi_madt.c Tue Oct 31 12:42:50 2006 +0000 @@ -18,9 +18,9 @@ * Place - Suite 330, Boston, MA 02111-1307 USA. */ -#include "../acpi/acpi2_0.h" -#include "../acpi/acpi_madt.h" +#include "acpi/acpi2_0.h" #include "util.h" +#include "acpi_utils.h" #include <xen/hvm/hvm_info_table.h> #define NULL ((void*)0) @@ -29,160 +29,134 @@ static struct hvm_info_table *table = NU static int validate_hvm_info(struct hvm_info_table *t) { - char signature[] = "HVM INFO"; - uint8_t *ptr = (uint8_t *)t; - uint8_t sum = 0; - int i; + char signature[] = "HVM INFO"; + uint8_t *ptr = (uint8_t *)t; + uint8_t sum = 0; + int i; - /* strncmp(t->signature, "HVM INFO", 8) */ - for (i = 0; i < 8; i++) { - if (signature[i] != t->signature[i]) { - puts("Bad hvm info signature\n"); - return 0; - } - } + /* strncmp(t->signature, "HVM INFO", 8) */ + for (i = 0; i < 8; i++) { + if (signature[i] != t->signature[i]) { + puts("Bad hvm info signature\n"); + return 0; + } + } - for (i = 0; i < t->length; i++) - sum += ptr[i]; + for (i = 0; i < t->length; i++) + sum += ptr[i]; - return (sum == 0); + return (sum == 0); } /* xc_vmx_builder wrote hvm info at 0x9F800. Return it. */ struct hvm_info_table * get_hvm_info_table(void) { - struct hvm_info_table *t; + struct hvm_info_table *t; - if (table != NULL) - return table; + if (table != NULL) + return table; - t = (struct hvm_info_table *)HVM_INFO_PADDR; + t = (struct hvm_info_table *)HVM_INFO_PADDR; - if (!validate_hvm_info(t)) { - puts("Bad hvm info table\n"); - return NULL; - } + if (!validate_hvm_info(t)) { + puts("Bad hvm info table\n"); + return NULL; + } - table = t; + table = t; - return table; + return table; } int get_vcpu_nr(void) { - struct hvm_info_table *t = get_hvm_info_table(); - return (t ? t->nr_vcpus : 1); /* default 1 vcpu */ + struct hvm_info_table *t = get_hvm_info_table(); + return (t ? t->nr_vcpus : 1); /* default 1 vcpu */ } int get_acpi_enabled(void) { - struct hvm_info_table *t = get_hvm_info_table(); - return (t ? t->acpi_enabled : 0); /* default no acpi */ + struct hvm_info_table *t = get_hvm_info_table(); + return (t ? t->acpi_enabled : 0); /* default no acpi */ } static void * acpi_madt_get_madt(unsigned char *acpi_start) { - ACPI_2_0_RSDP *rsdp=NULL; - ACPI_2_0_RSDT *rsdt=NULL; - ACPI_MULTIPLE_APIC_DESCRIPTION_TABLE *madt; + struct acpi_20_rsdt *rsdt; + struct acpi_20_madt *madt; - rsdp = (ACPI_2_0_RSDP *)(acpi_start + sizeof(ACPI_2_0_FACS)); - if (rsdp->Signature != ACPI_2_0_RSDP_SIGNATURE) { - puts("Bad RSDP signature\n"); - return NULL; - } + rsdt = acpi_rsdt_get(acpi_start); + if (rsdt == NULL) + return NULL; - rsdt= (ACPI_2_0_RSDT *) - (acpi_start + rsdp->RsdtAddress - ACPI_PHYSICAL_ADDRESS); - if (rsdt->Header.Signature != ACPI_2_0_RSDT_SIGNATURE) { - puts("Bad RSDT signature\n"); - return NULL; - } + madt = (struct acpi_20_madt *)(acpi_start + rsdt->entry[1] - + ACPI_PHYSICAL_ADDRESS); + if (madt->header.header.signature != ACPI_2_0_MADT_SIGNATURE) { + puts("Bad MADT signature \n"); + return NULL; + } - madt = (ACPI_MULTIPLE_APIC_DESCRIPTION_TABLE *) - ( acpi_start+ rsdt->Entry[1] - ACPI_PHYSICAL_ADDRESS); - if (madt->Header.Header.Signature != - ACPI_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE) { - puts("Bad MADT signature \n"); - return NULL; - } - - return madt; -} - -static void -set_checksum(void *start, int checksum_offset, int len) -{ - unsigned char sum = 0; - unsigned char *ptr; - - ptr = start; - ptr[checksum_offset] = 0; - while (len--) - sum += *ptr++; - - ptr = start; - ptr[checksum_offset] = -sum; + return madt; } static int acpi_madt_set_local_apics( - int nr_vcpu, - ACPI_MULTIPLE_APIC_DESCRIPTION_TABLE *madt) + int nr_vcpu, + struct acpi_20_madt *madt) { - int i; + int i; - if ((nr_vcpu > MAX_VIRT_CPUS) || (nr_vcpu < 0) || !madt) - return -1; + if ((nr_vcpu > MAX_VIRT_CPUS) || (nr_vcpu < 0) || !madt) + return -1; - for (i = 0; i < nr_vcpu; i++) { - madt->LocalApic[i].Type = ACPI_PROCESSOR_LOCAL_APIC; - madt->LocalApic[i].Length = sizeof (ACPI_LOCAL_APIC_STRUCTURE); - madt->LocalApic[i].AcpiProcessorId = i; - madt->LocalApic[i].ApicId = i; - madt->LocalApic[i].Flags = 1; - } + for (i = 0; i < nr_vcpu; i++) { + madt->lapic[i].type = ACPI_PROCESSOR_LOCAL_APIC; + madt->lapic[i].length = sizeof(struct acpi_20_madt_lapic); + madt->lapic[i].acpi_processor_id = i; + madt->lapic[i].apic_id = i; + madt->lapic[i].flags = 1; + } - madt->Header.Header.Length = - sizeof(ACPI_MULTIPLE_APIC_DESCRIPTION_TABLE) - - (MAX_VIRT_CPUS - nr_vcpu)* sizeof(ACPI_LOCAL_APIC_STRUCTURE); + madt->header.header.length = + sizeof(struct acpi_20_madt) - + (MAX_VIRT_CPUS - nr_vcpu) * sizeof(struct acpi_20_madt_lapic); - return 0; + return 0; } #define FIELD_OFFSET(TYPE,Field) ((unsigned int)(&(((TYPE *) 0)->Field))) int acpi_madt_update(unsigned char *acpi_start) { - int rc; - ACPI_MULTIPLE_APIC_DESCRIPTION_TABLE *madt; + int rc; + struct acpi_20_madt *madt; - madt = acpi_madt_get_madt(acpi_start); - if (!madt) - return -1; + madt = acpi_madt_get_madt(acpi_start); + if (!madt) + return -1; - rc = acpi_madt_set_local_apics(get_vcpu_nr(), madt); - if (rc != 0) - return rc; + rc = acpi_madt_set_local_apics(get_vcpu_nr(), madt); + if (rc != 0) + return rc; - set_checksum( - madt, FIELD_OFFSET(ACPI_TABLE_HEADER, Checksum), - madt->Header.Header.Length); + set_checksum( + madt, FIELD_OFFSET(struct acpi_header, checksum), + madt->header.header.length); - return 0; + return 0; } /* * Local variables: - * c-file-style: "linux" - * indent-tabs-mode: t - * c-indent-level: 8 - * c-basic-offset: 8 - * tab-width: 8 + * mode: C + * c-set-style: "BSD" + * c-basic-offset: 4 + * tab-width: 4 + * indent-tabs-mode: nil * End: */ diff -r 15b5cc51db30 -r 1bf4f15c5141 tools/firmware/hvmloader/hvmloader.c --- a/tools/firmware/hvmloader/hvmloader.c Tue Oct 31 11:44:47 2006 +0000 +++ b/tools/firmware/hvmloader/hvmloader.c Tue Oct 31 12:42:50 2006 +0000 @@ -22,9 +22,10 @@ * Place - Suite 330, Boston, MA 02111-1307 USA. */ #include "roms.h" -#include "../acpi/acpi2_0.h" /* for ACPI_PHYSICAL_ADDRESS */ +#include "acpi/acpi2_0.h" /* for ACPI_PHYSICAL_ADDRESS */ #include "hypercall.h" #include "util.h" +#include "acpi_utils.h" #include "smbios.h" #include <xen/version.h> #include <xen/hvm/params.h> @@ -195,12 +196,18 @@ main(void) puts("Loading ACPI ...\n"); acpi_madt_update((unsigned char *) acpi); if (ACPI_PHYSICAL_ADDRESS+sizeof(acpi) <= 0xF0000) { + unsigned char *freemem = (unsigned char *) + (ACPI_PHYSICAL_ADDRESS + sizeof(acpi)); /* * Make sure acpi table does not overlap rombios * currently acpi less than 8K will be OK. */ memcpy((void *)ACPI_PHYSICAL_ADDRESS, acpi, sizeof(acpi)); + acpi_update((unsigned char *)ACPI_PHYSICAL_ADDRESS, + sizeof(acpi), + (unsigned char *)0xF0000, + &freemem); } } diff -r 15b5cc51db30 -r 1bf4f15c5141 tools/firmware/hvmloader/util.c --- a/tools/firmware/hvmloader/util.c Tue Oct 31 11:44:47 2006 +0000 +++ b/tools/firmware/hvmloader/util.c Tue Oct 31 12:42:50 2006 +0000 @@ -18,7 +18,7 @@ * Place - Suite 330, Boston, MA 02111-1307 USA. */ -#include "../acpi/acpi2_0.h" /* for ACPI_PHYSICAL_ADDRESS */ +#include "acpi/acpi2_0.h" /* for ACPI_PHYSICAL_ADDRESS */ #include "util.h" #include <stdint.h> diff -r 15b5cc51db30 -r 1bf4f15c5141 tools/firmware/hvmloader/acpi/Makefile --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tools/firmware/hvmloader/acpi/Makefile Tue Oct 31 12:42:50 2006 +0000 @@ -0,0 +1,63 @@ +# +# Copyright (c) 2004, Intel Corporation. +# +# This program is free software; you can redistribute it and/or modify it +# under the terms and conditions of the GNU General Public License, +# version 2, as published by the Free Software Foundation. +# +# This program is distributed in the hope 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 +# this program; if not, write to the Free Software Foundation, Inc., 59 Temple +# Place - Suite 330, Boston, MA 02111-1307 USA. +# + +XEN_ROOT = ../../../.. +include $(XEN_ROOT)/tools/Rules.mk + +HOSTCFLAGS += -I. -I.. -I$(XEN_ROOT)/tools/libxc + +C_SRC = build.c dsdt.c gen.c static_tables.c +H_SRC = $(wildcard *.h) +ACPI_GEN = acpigen +ACPI_BIN = acpi.bin + +IASL_VER = acpica-unix-20050513 +IASL_URL = http://developer.intel.com/technology/iapc/acpi/downloads/$(IASL_VER).tar.gz + +vpath iasl $(PATH) +all:$(ACPI_BIN) + +dsdt.c: dsdt.asl + $(MAKE) iasl + iasl -tc dsdt.asl + mv dsdt.hex dsdt.c + echo "int DsdtLen=sizeof(AmlCode);" >> dsdt.c + rm *.aml + +iasl: + @echo + @echo "ACPI ASL compiler(iasl) is needed" + @echo "Download Intel ACPI CA" + @echo "If wget failed, please download and compile manually from" + @echo "http://developer.intel.com/technology/iapc/acpi/downloads.htm" + @echo + wget $(IASL_URL) + tar xzf $(IASL_VER).tar.gz + make -C $(IASL_VER)/compiler + $(INSTALL_PROG) $(IASL_VER)/compiler/iasl /usr/bin/iasl + +$(ACPI_GEN): $(C_SRC) $(H_SRC) + $(HOSTCC) -o $(ACPI_GEN) $(HOSTCFLAGS) $(C_SRC) + +$(ACPI_BIN): $(ACPI_GEN) + ./$(ACPI_GEN) $(ACPI_BIN) + +clean: + rm -rf *.o $(ACPI_GEN) $(ACPI_BIN) $(IASL_VER) + rm -rf $(IASL_VER).tar.gz + +install: all diff -r 15b5cc51db30 -r 1bf4f15c5141 tools/firmware/hvmloader/acpi/README --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tools/firmware/hvmloader/acpi/README Tue Oct 31 12:42:50 2006 +0000 @@ -0,0 +1,24 @@ +ACPI Table for domain firmware + + +INSTALL +----------------- +Simply make is OK. +# make + + +Note on DSDT Table +------------------ +DSDT table source code is acpi_dsdt.asl +It is already compiled and the output is acpi_dsdt.c +Usually, user is not expected to change the acpi_dsdt.asl. +In case that the acpi_dsdt.asl need to be updated, please +Follow the instruction: + +# make acpi_dsdt.c + +Note: +DSDT compiler "iasl" is needed. By default, it will be downloaded +using wget in Makefile. if it failed, please download manually from +http://developer.intel.com/technology/iapc/acpi/downloads.htm. +then compile and install iasl diff -r 15b5cc51db30 -r 1bf4f15c5141 tools/firmware/hvmloader/acpi/acpi2_0.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tools/firmware/hvmloader/acpi/acpi2_0.h Tue Oct 31 12:42:50 2006 +0000 @@ -0,0 +1,324 @@ +/* + * Copyright (c) 2004, Intel Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope 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 + * this program; if not, write to the Free Software Foundation, Inc., 59 Temple + * Place - Suite 330, Boston, MA 02111-1307 USA. + * + */ +#ifndef _ACPI_2_0_H_ +#define _ACPI_2_0_H_ + +typedef unsigned char uint8_t; +typedef signed char int8_t; +typedef unsigned short uint16_t; +typedef signed short int16_t; +typedef unsigned int uint32_t; +typedef signed int int32_t; +#ifdef __i386__ +typedef unsigned long long uint64_t; +typedef signed long long int64_t; +#else +typedef unsigned long uint64_t; +typedef signed long int64_t; +#endif + +#include <xen/xen.h> + +#pragma pack (1) + +/* + * Common ACPI header. + */ +struct acpi_header { + uint32_t signature; + uint32_t length; + uint8_t revision; + uint8_t checksum; + uint8_t oem_id[6]; + uint64_t oem_table_id; + uint32_t oem_revision; + uint32_t creator_id; + uint32_t creator_revision; +}; + +#define ACPI_OEM_ID {'I','N','T','E','L',' '} +#define ACPI_OEM_TABLE_ID 0x544244 /* "TBD" */ +#define ACPI_OEM_REVISION 0x00000002 +#define ACPI_CREATOR_ID 0x00 /* TBD */ +#define ACPI_CREATOR_REVISION 0x00000002 + +/* + * ACPI 2.0 Generic Address Space definition. + */ +struct acpi_20_generic_address { + uint8_t address_space_id; + uint8_t register_bit_width; + uint8_t register_bit_offset; + uint8_t reserved; + uint64_t address; +}; + +/* + * Generic Address Space Address IDs. + */ +#define ACPI_SYSTEM_MEMORY 0 +#define ACPI_SYSTEM_IO 1 +#define ACPI_PCI_CONFIGURATION_SPACE 2 +#define ACPI_EMBEDDED_CONTROLLER 3 +#define ACPI_SMBUS 4 +#define ACPI_FUNCTIONAL_FIXED_HARDWARE 0x7F + +/* + * Root System Description Pointer Structure in ACPI 1.0. + */ +struct acpi_10_rsdp { + uint64_t signature; + uint8_t checksum; + uint8_t oem_id[6]; + uint8_t reserved; + uint32_t rsdt_address; +}; + +/* + * Root System Description Pointer Structure. + */ +struct acpi_20_rsdp { + uint64_t signature; + uint8_t checksum; + uint8_t oem_id[6]; + uint8_t revision; + uint32_t rsdt_address; + uint32_t length; + uint64_t xsdt_address; + uint8_t extended_checksum; + uint8_t reserved[3]; +}; + +/* + * The maximum number of entrys in RSDT or XSDT. + */ +#define ACPI_MAX_NUM_TABLES 5 + +/* + * Root System Description Table (RSDT). + */ +struct acpi_20_rsdt { + struct acpi_header header; + uint32_t entry[ACPI_MAX_NUM_TABLES]; +}; +#define ACPI_2_0_RSDT_REVISION 0x01 + +/* + * Extended System Description Table (XSDT). + */ +struct acpi_20_xsdt { + struct acpi_header header; + uint64_t entry[ACPI_MAX_NUM_TABLES]; +}; +#define ACPI_2_0_XSDT_REVISION 0x01 + +/* + * Fixed ACPI Description Table Structure (FADT). + */ +struct acpi_20_fadt { + struct acpi_header header; + uint32_t firmware_ctrl; + uint32_t dsdt; + uint8_t reserved0; + uint8_t preferred_pm_profile; + uint16_t sci_int; + uint32_t smi_cmd; + uint8_t acpi_enable; + uint8_t acpi_disable; + uint8_t s4bios_req; + uint8_t pstate_cnt; + uint32_t pm1a_evt_blk; + uint32_t pm1b_evt_blk; + uint32_t pm1a_cnt_blk; + uint32_t pm1b_cnt_blk; + uint32_t pm2_cnt_blk; + uint32_t pm_tmr_blk; + uint32_t gpe0_blk; + uint32_t gpe1_blk; + uint8_t pm1_evt_len; + uint8_t pm1_cnt_len; + uint8_t pm2_cnt_len; + uint8_t pm_tmr_len; + uint8_t gpe0_blk_len; + uint8_t gpe1_blk_len; + uint8_t gpe1_base; + uint8_t cst_cnt; + uint16_t p_lvl2_lat; + uint16_t p_lvl3_lat; + uint16_t flush_size; + uint16_t flush_stride; + uint8_t duty_offset; + uint8_t duty_width; + uint8_t day_alrm; + uint8_t mon_alrm; + uint8_t century; + uint16_t iapc_boot_arch; + uint8_t reserved1; + uint32_t flags; + struct acpi_20_generic_address reset_reg; + uint8_t reset_value; + uint8_t reserved2[3]; + uint64_t x_firmware_ctrl; + uint64_t x_dsdt; + struct acpi_20_generic_address x_pm1a_evt_blk; + struct acpi_20_generic_address x_pm1b_evt_blk; + struct acpi_20_generic_address x_pm1a_cnt_blk; + struct acpi_20_generic_address x_pm1b_cnt_blk; + struct acpi_20_generic_address x_pm2_cnt_blk; + struct acpi_20_generic_address x_pm_tmr_blk; + struct acpi_20_generic_address x_gpe0_blk; + struct acpi_20_generic_address x_gpe1_blk; +}; +#define ACPI_2_0_FADT_REVISION 0x03 + +/* + * FADT Boot Architecture Flags. + */ +#define ACPI_LEGACY_DEVICES (1 << 0) +#define ACPI_8042 (1 << 1) + +/* + * FADT Fixed Feature Flags. + */ +#define ACPI_WBINVD (1 << 0) +#define ACPI_WBINVD_FLUSH (1 << 1) +#define ACPI_PROC_C1 (1 << 2) +#define ACPI_P_LVL2_UP (1 << 3) +#define ACPI_PWR_BUTTON (1 << 4) +#define ACPI_SLP_BUTTON (1 << 5) +#define ACPI_FIX_RTC (1 << 6) +#define ACPI_RTC_S4 (1 << 7) +#define ACPI_TMR_VAL_EXT (1 << 8) +#define ACPI_DCK_CAP (1 << 9) +#define ACPI_RESET_REG_SUP (1 << 10) +#define ACPI_SEALED_CASE (1 << 11) +#define ACPI_HEADLESS (1 << 12) +#define ACPI_CPU_SW_SLP (1 << 13) + +/* + * Firmware ACPI Control Structure (FACS). + */ +struct acpi_20_facs { + uint32_t signature; + uint32_t length; + uint32_t hardware_signature; + uint32_t firmware_waking_vector; + uint32_t global_lock; + uint32_t flags; + uint64_t x_firmware_waking_vector; + uint8_t version; + uint8_t reserved[31]; +}; + +#define ACPI_2_0_FACS_VERSION 0x01 + +/* + * Multiple APIC Description Table header definition (MADT). + */ +struct acpi_20_madt_header { + struct acpi_header header; + uint32_t lapic_addr; + uint32_t flags; +}; + +#define ACPI_2_0_MADT_REVISION 0x01 + +/* + * Multiple APIC Flags. + */ +#define ACPI_PCAT_COMPAT (1 << 0) + +/* + * Multiple APIC Description Table APIC structure types. + */ +#define ACPI_PROCESSOR_LOCAL_APIC 0x00 +#define ACPI_IO_APIC 0x01 +#define ACPI_INTERRUPT_SOURCE_OVERRIDE 0x02 +#define ACPI_NON_MASKABLE_INTERRUPT_SOURCE 0x03 +#define ACPI_LOCAL_APIC_NMI 0x04 +#define ACPI_LOCAL_APIC_ADDRESS_OVERRIDE 0x05 +#define ACPI_IO_SAPIC 0x06 +#define ACPI_PROCESSOR_LOCAL_SAPIC 0x07 +#define ACPI_PLATFORM_INTERRUPT_SOURCES 0x08 + +/* + * APIC Structure Definitions. + */ + +/* + * Processor Local APIC Structure Definition. + */ +struct acpi_20_madt_lapic { + uint8_t type; + uint8_t length; + uint8_t acpi_processor_id; + uint8_t apic_id; + uint32_t flags; +}; + +/* + * Local APIC Flags. All other bits are reserved and must be 0. + */ +#define ACPI_LOCAL_APIC_ENABLED (1 << 0) + +/* + * IO APIC Structure. + */ +struct acpi_20_madt_ioapic { + uint8_t type; + uint8_t length; + uint8_t ioapic_id; + uint8_t reserved; + uint32_t ioapic_addr; + uint32_t gsi_base; +}; + +struct acpi_20_madt { + struct acpi_20_madt_header header; + struct acpi_20_madt_ioapic io_apic[1]; + struct acpi_20_madt_lapic lapic[32]; +}; + +/* + * Table Signatures. + */ +#define ACPI_2_0_RSDP_SIGNATURE 0x2052545020445352LL /* "RSD PTR " */ +#define ACPI_2_0_FACS_SIGNATURE 0x53434146 /* "FACS" */ +#define ACPI_2_0_FADT_SIGNATURE 0x50434146 /* "FADT" */ +#define ACPI_2_0_MADT_SIGNATURE 0x43495041 /* "APIC" */ +#define ACPI_2_0_RSDT_SIGNATURE 0x54445352 /* "RSDT" */ +#define ACPI_2_0_XSDT_SIGNATURE 0x54445358 /* "XSDT" */ + +#pragma pack () + +#define ACPI_PHYSICAL_ADDRESS 0xEA000 +#define ACPI_TABLE_SIZE (4*1024) + +void AcpiBuildTable(uint8_t *buf); + +#endif /* _ACPI_2_0_H_ */ + +/* + * Local variables: + * mode: C + * c-set-style: "BSD" + * c-basic-offset: 4 + * tab-width: 4 + * indent-tabs-mode: nil + * End: + */ diff -r 15b5cc51db30 -r 1bf4f15c5141 tools/firmware/hvmloader/acpi/build.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tools/firmware/hvmloader/acpi/build.c Tue Oct 31 12:42:50 2006 +0000 @@ -0,0 +1,241 @@ +/* + * Copyright (c) 2004, Intel Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope 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 + * this program; if not, write to the Free Software Foundation, Inc., 59 Temple + * Place - Suite 330, Boston, MA 02111-1307 USA. + * + */ + +#include "acpi2_0.h" + +extern struct acpi_20_rsdp Rsdp; +extern struct acpi_20_rsdt Rsdt; +extern struct acpi_20_xsdt Xsdt; +extern struct acpi_20_fadt Fadt; +extern struct acpi_20_madt Madt; +extern struct acpi_20_facs Facs; +extern unsigned char *AmlCode; +extern int DsdtLen; + + +typedef struct _ACPI_TABLE_ALL{ + struct acpi_20_rsdp *Rsdp; + struct acpi_20_rsdt *Rsdt; + struct acpi_20_xsdt *Xsdt; + struct acpi_20_fadt *Fadt; + struct acpi_20_madt *Madt; + struct acpi_20_facs *Facs; + unsigned char *Dsdt; + uint32_t RsdpOffset; + uint32_t RsdtOffset; + uint32_t XsdtOffset; + uint32_t FadtOffset; + uint32_t MadtOffset; + uint32_t FacsOffset; + uint32_t DsdtOffset; +}ACPI_TABLE_ALL; + +static +void +MemCopy(void* src, void* dst, int len){ + + uint8_t* src0=src; + uint8_t* dst0=dst; + + while(len--){ + *(dst0++)=*(src0++); + } +} + +static +void +SetCheckSum( + void* Table, + uint32_t ChecksumOffset, + uint32_t Length + ) +/* + * Routine Description: + * Calculate Checksum and store the result in the checksum + * filed of the table + * + * INPUT: + * Table: Start pointer of table + * ChecksumOffset: Offset of checksum field in the table + * Length: Length of Table + */ +{ + uint8_t Sum = 0; + uint8_t *Ptr; + + Ptr=Table; + Ptr[ChecksumOffset]=0; + while (Length--) { + Sum = (uint8_t)(Sum + (*Ptr++)); + } + + Ptr = Table; + Ptr[ChecksumOffset] = (uint8_t) (0xff - Sum + 1); +} + +// +// FIELD_OFFSET - returns the byte offset to a field within a structure +// +#define FIELD_OFFSET(TYPE,Field) ((uint32_t)(&(((TYPE *) 0)->Field))) + +static +void +UpdateTable( + ACPI_TABLE_ALL *table + ) +/* + * Update the ACPI table: + * fill in the actuall physical address of RSDT, XSDT, FADT, MADT, FACS + * Caculate the checksum + */ +{ + // RSDP Update + table->Rsdp->rsdt_address = (uint32_t)(ACPI_PHYSICAL_ADDRESS+ + table->RsdtOffset); + table->Rsdp->xsdt_address = (uint64_t)(ACPI_PHYSICAL_ADDRESS+ + table->XsdtOffset); + SetCheckSum(table->Rsdp, + FIELD_OFFSET(struct acpi_10_rsdp, checksum), + sizeof(struct acpi_10_rsdp) + ); + SetCheckSum(table->Rsdp, + FIELD_OFFSET(struct acpi_20_rsdp, + extended_checksum), + sizeof(struct acpi_20_rsdp) + ); + + + //RSDT Update + table->Rsdt->entry[0] = (uint32_t)(ACPI_PHYSICAL_ADDRESS + + table->FadtOffset); + table->Rsdt->entry[1] = (uint32_t)(ACPI_PHYSICAL_ADDRESS + + table->MadtOffset); + table->Rsdt->header.length = sizeof (struct acpi_header) + + 2*sizeof(uint32_t); + SetCheckSum(table->Rsdt, + FIELD_OFFSET(struct acpi_header, checksum), + table->Rsdt->header.length + ); + + //XSDT Update + table->Xsdt->entry[0] = (uint64_t)(ACPI_PHYSICAL_ADDRESS + + table->FadtOffset); + table->Xsdt->entry[1] = (uint64_t)(ACPI_PHYSICAL_ADDRESS + + table->MadtOffset); + table->Xsdt->header.length = sizeof (struct acpi_header) + + 2*sizeof(uint64_t); + SetCheckSum(table->Xsdt, + FIELD_OFFSET(struct acpi_header, checksum), + table->Xsdt->header.length + ); + + // FADT Update + table->Fadt->dsdt = (uint32_t)(ACPI_PHYSICAL_ADDRESS + + table->DsdtOffset); + table->Fadt->x_dsdt = (uint64_t)(ACPI_PHYSICAL_ADDRESS + + table->DsdtOffset); + table->Fadt->firmware_ctrl = (uint32_t)(ACPI_PHYSICAL_ADDRESS + + table->FacsOffset); + table->Fadt->x_firmware_ctrl = (uint64_t)(ACPI_PHYSICAL_ADDRESS + + table->FacsOffset); + SetCheckSum(table->Fadt, + FIELD_OFFSET(struct acpi_header, checksum), + sizeof(struct acpi_20_fadt) + ); + + // MADT update + SetCheckSum(table->Madt, + FIELD_OFFSET(struct acpi_header, checksum), + sizeof(struct acpi_20_madt) + ); +} + +void +AcpiBuildTable(uint8_t* buf) +/* + * Copy all the ACPI table to buffer + * Buffer Layout: + * FACS + * RSDP + * RSDT + * XSDT + * FADT + * MADT + * DSDT + * + */ +{ + ACPI_TABLE_ALL table; + int offset=0; + + // FACS: should be 64-bit alignment + // so it is put at the start of buffer + // as the buffer is 64 bit alignment + table.FacsOffset = offset; + table.Facs = (struct acpi_20_facs *)(&buf[offset]); + MemCopy(&Facs, table.Facs, sizeof(struct acpi_20_facs)); + offset += sizeof(struct acpi_20_facs); + + // RSDP + table.RsdpOffset = offset; + table.Rsdp = (struct acpi_20_rsdp *)(&buf[offset]); + MemCopy(&Rsdp, table.Rsdp, sizeof(struct acpi_20_rsdp)); + offset += sizeof(struct acpi_20_rsdp); + + // RSDT + table.RsdtOffset = offset; + table.Rsdt = (struct acpi_20_rsdt *)(&buf[offset]); + MemCopy(&Rsdt, table.Rsdt, sizeof(struct acpi_20_rsdt)); + offset += sizeof(struct acpi_20_rsdt); + + // XSDT + table.XsdtOffset = offset; + table.Xsdt = (struct acpi_20_xsdt *)(&buf[offset]); + MemCopy(&Xsdt, table.Xsdt, sizeof(struct acpi_20_xsdt)); + offset += sizeof(struct acpi_20_xsdt); + + // FADT + table.FadtOffset = offset; + table.Fadt = (struct acpi_20_fadt *)(&buf[offset]); + MemCopy(&Fadt, table.Fadt, sizeof(struct acpi_20_fadt)); + offset += sizeof(struct acpi_20_fadt); + + // MADT + table.MadtOffset = offset; + table.Madt = (struct acpi_20_madt*)(&buf[offset]); + MemCopy(&Madt, table.Madt, sizeof(struct acpi_20_madt)); + offset += sizeof(struct acpi_20_madt); + + // DSDT + table.DsdtOffset = offset; + table.Dsdt = (unsigned char *)(&buf[offset]); + MemCopy(&AmlCode, table.Dsdt, DsdtLen); + offset += DsdtLen; + + UpdateTable(&table); +} + +/* + * Local variables: + * mode: C + * c-set-style: "BSD" + * c-basic-offset: 4 + * tab-width: 4 + * indent-tabs-mode: nil + * End: + */ diff -r 15b5cc51db30 -r 1bf4f15c5141 tools/firmware/hvmloader/acpi/dsdt.asl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tools/firmware/hvmloader/acpi/dsdt.asl Tue Oct 31 12:42:50 2006 +0000 @@ -0,0 +1,521 @@ +//**********************************************************************// +//* +//* Copyright (c) 2004, Intel Corporation. +//* +//* This program is free software; you can redistribute it and/or modify it +//* under the terms and conditions of the GNU General Public License, +//* version 2, as published by the Free Software Foundation. +//* +//* This program is distributed in the hope 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 +//* this program; if not, write to the Free Software Foundation, Inc., 59 Temple +//* Place - Suite 330, Boston, MA 02111-1307 USA. + +//** +//** DSDT for Xen with Qemu device model +//** +//** + +DefinitionBlock ("DSDT.aml", "DSDT", 1, "INTEL","int-xen", 2006) +{ + Name (\PMBS, 0x0C00) + Name (\PMLN, 0x08) + Name (\IOB1, 0x00) + Name (\IOL1, 0x00) + Name (\APCB, 0xFEC00000) + Name (\APCL, 0x00010000) + Name (\PUID, 0x00) + + Scope (\_PR) + { + Processor (CPU0, 0x00, 0x00000000, 0x00) {} + Processor (CPU1, 0x01, 0x00000000, 0x00) {} + Processor (CPU2, 0x02, 0x00000000, 0x00) {} + Processor (CPU3, 0x03, 0x00000000, 0x00) {} + + } + +/* Poweroff support - ties in with qemu emulation */ + + Name (\_S5, Package (0x04) + { + 0x07, + 0x07, + 0x00, + 0x00 + }) + + + Name(PICD, 0) + + Method(_PIC, 1) { + + Store(Arg0, PICD) + } + Scope (\_SB) + { + /* Fix HCT test for 0x400 pci memory - need to report low 640 MB mem as motherboard resource */ + + Device(MEM0) { + Name(_HID, EISAID("PNP0C02")) + Name(_CRS, ResourceTemplate() { + QWordMemory (ResourceConsumer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, + 0x00000000, + 0x00000000, + 0x0009ffff, + 0x00000000, + 0x000a0000) + } + ) + } + + Device (PCI0) + { + Name (_HID, EisaId ("PNP0A03")) + Name (_UID, 0x00) + Name (_ADR, 0x00) + Name (_BBN, 0x00) + OperationRegion (PIRP, PCI_Config, 0x3c, 0x10) + Field(PIRP, ByteAcc, NoLock, Preserve){ + IRQ3,3, + IRQ5,5, + IRQ7,7, + IRQ9,9, + IRQA,10, + IRQB,11 + } + + Method (_CRS, 0, NotSerialized) + { + + Name (PRT0, ResourceTemplate () + { + /* bus number is from 0 - 255*/ + WordBusNumber (ResourceConsumer, MinFixed, MaxFixed, SubDecode, + 0x0000, + 0x0000, + 0x00FF, + 0x0000, + 0x0100) + IO (Decode16, 0x0CF8, 0x0CF8, 0x01, 0x08) + WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange, + 0x0000, + 0x0000, + 0x0CF7, + 0x0000, + 0x0CF8) + WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange, + 0x0000, + 0x0D00, + 0xFFFF, + 0x0000, + 0xF300) + + /* reserve memory for pci devices */ + + DWordMemory (ResourceConsumer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, + 0x00000000, + 0xF0000000, + 0xF4FFFFFF, + 0x00000000, + 0x05000000) + + }) + Return (PRT0) + } + Name(BUFA, ResourceTemplate() { + IRQ(Level, ActiveLow, Shared) { + 3,4,5,6,7,10,11,12,14,15} + }) + + Name(BUFB, Buffer(){ + 0x23, 0x00, 0x00, 0x18, + 0x79, 0}) + + CreateWordField(BUFB, 0x01, IRQV) + + Name(BUFC, Buffer(){ + 5, 7, 10, 11 + }) + + CreateByteField(BUFC, 0x01, PIQA) + CreateByteField(BUFC, 0x01, PIQB) + CreateByteField(BUFC, 0x01, PIQC) + CreateByteField(BUFC, 0x01, PIQD) + + Device(LNKA) { + Name(_HID, EISAID("PNP0C0F")) // PCI interrupt link + Name(_UID, 1) + Method(_STA, 0) { + And(PIRA, 0x80, Local0) + If(LEqual(Local0, 0x80)) { + Return(0x09) + } + Else { + Return(0x0B) + } + } + + Method(_PRS) { + + Return(BUFA) + } // Method(_PRS) + + Method(_DIS) { + Or(PIRA, 0x80, PIRA) + } + + Method(_CRS) { + And(PIRB, 0x0f, Local0) + ShiftLeft(0x1, Local0, IRQV) + Return(BUFB) + } + + Method(_SRS, 1) { + CreateWordField(ARG0, 0x01, IRQ1) + FindSetRightBit(IRQ1, Local0) + Decrement(Local0) + Store(Local0, PIRA) + } // Method(_SRS) + } + + Device(LNKB){ + Name(_HID, EISAID("PNP0C0F")) + Name(_UID, 2) + Method(_STA, 0) { + And(PIRB, 0x80, Local0) + If(LEqual(Local0, 0x80)) { + Return(0x09) + } + Else { + Return(0x0B) + } + } + + Method(_PRS) { + Return(BUFA) + } // Method(_PRS) + + Method(_DIS) { + + Or(PIRB, 0x80, PIRB) + } + + Method(_CRS) { + And(PIRB, 0x0f, Local0) + ShiftLeft(0x1, Local0, IRQV) + Return(BUFB) + } // Method(_CRS) + + Method(_SRS, 1) { + CreateWordField(ARG0, 0x01, IRQ1) + FindSetRightBit(IRQ1, Local0) + Decrement(Local0) + Store(Local0, PIRB) + } // Method(_SRS) + } + + Device(LNKC){ + Name(_HID, EISAID("PNP0C0F")) // PCI interrupt link + Name(_UID, 3) + Method(_STA, 0) { + And(PIRC, 0x80, Local0) + If(LEqual(Local0, 0x80)) { + Return(0x09) + } + Else { + Return(0x0B) + } + } + + Method(_PRS) { + Return(BUFA) + } // Method(_PRS) + + Method(_DIS) { + + Or(PIRC, 0x80, PIRC) + } + + Method(_CRS) { + And(PIRC, 0x0f, Local0) + ShiftLeft(0x1, Local0, IRQV) + Return(BUFB) + } // Method(_CRS) + + Method(_SRS, 1) { + CreateWordField(ARG0, 0x01, IRQ1) + FindSetRightBit(IRQ1, Local0) + Decrement(Local0) + Store(Local0, PIRC) + } // Method(_SRS) + } + + Device(LNKD) { + Name(_HID, EISAID("PNP0C0F")) + Name(_UID, 4) + Method(_STA, 0) { + And(PIRD, 0x80, Local0) + If(LEqual(Local0, 0x80)) { + Return(0x09) + } + Else { + Return(0x0B) + } + } + + Method(_PRS) { + Return(BUFA) + } // Method(_PRS) + + Method(_DIS) { + Or(PIRD, 0x80, PIRD) + } + + Method(_CRS) { + And(PIRD, 0x0f, Local0) + ShiftLeft(0x1, Local0, IRQV) + Return(BUFB) + } // Method(_CRS) + + Method(_SRS, 1) { + CreateWordField(ARG0, 0x01, IRQ1) + FindSetRightBit(IRQ1, Local0) + Decrement(Local0) + Store(Local0, PIRD) + } // Method(_SRS) + } + Method(_PRT,0) { + If(PICD) {Return(PRTA)} + Return (PRTP) + } // end _PRT + + Name(PRTP, Package() { + // Slot 1, INTA - INTD + Package(){0x0000ffff, 0, \_SB.PCI0.LNKA, 0}, + Package(){0x0000ffff, 1, \_SB.PCI0.LNKB, 0}, + Package(){0x0000ffff, 2, \_SB.PCI0.LNKC, 0}, + Package(){0x0000ffff, 3, \_SB.PCI0.LNKD, 0}, + + // Slot 2, INTA - INTD + Package(){0x0001ffff, 0, \_SB.PCI0.LNKB, 0}, + Package(){0x0001ffff, 1, \_SB.PCI0.LNKC, 0}, + Package(){0x0001ffff, 2, \_SB.PCI0.LNKD, 0}, + Package(){0x0001ffff, 3, \_SB.PCI0.LNKA, 0}, + + // Slot 3, INTA - INTD + Package(){0x0002ffff, 0, \_SB.PCI0.LNKC, 0}, + Package(){0x0002ffff, 1, \_SB.PCI0.LNKD, 0}, + Package(){0x0002ffff, 2, \_SB.PCI0.LNKA, 0}, + Package(){0x0002ffff, 3, \_SB.PCI0.LNKB, 0}, + + // Slot 4, INTA - INTD + Package(){0x0003ffff, 0, \_SB.PCI0.LNKD, 0}, + Package(){0x0003ffff, 1, \_SB.PCI0.LNKA, 0}, + Package(){0x0003ffff, 2, \_SB.PCI0.LNKB, 0}, + Package(){0x0003ffff, 3, \_SB.PCI0.LNKC, 0}, + + // Slot 5, INTA - INTD + Package(){0x0004ffff, 0, \_SB.PCI0.LNKA, 0}, + Package(){0x0004ffff, 1, \_SB.PCI0.LNKB, 0}, + Package(){0x0004ffff, 2, \_SB.PCI0.LNKC, 0}, + Package(){0x0004ffff, 3, \_SB.PCI0.LNKD, 0}, + } + ) + Name(PRTA, Package(){ + Package(){0x0001ffff, 0, 0, 5}, // Device 1, INTA + Package(){0x0002ffff, 0, 0, 7}, // Device 2, INTA + Package(){0x0003ffff, 0, 0, 10}, // Device 3, INTA + Package(){0x0004ffff, 0, 0, 11}, // Device 4, INTA + } + ) + + Device (ISA) + { + Name (_ADR, 0x00000000) /* device id, PCI bus num, ... */ + + OperationRegion(PIRQ, PCI_Config, 0x60, 0x4) + Scope(\) { + Field (\_SB.PCI0.ISA.PIRQ, ByteAcc, NoLock, Preserve) { + PIRA, 8, + PIRB, 8, + PIRC, 8, + PIRD, 8 + } + } + Device (SYSR) + { + Name (_HID, EisaId ("PNP0C02")) + Name (_UID, 0x01) + Name (CRS, ResourceTemplate () + { + /* TODO: list hidden resources */ + IO (Decode16, 0x0010, 0x0010, 0x00, 0x10) + IO (Decode16, 0x0022, 0x0022, 0x00, 0x0C) + IO (Decode16, 0x0030, 0x0030, 0x00, 0x10) + IO (Decode16, 0x0044, 0x0044, 0x00, 0x1C) + IO (Decode16, 0x0062, 0x0062, 0x00, 0x02) + IO (Decode16, 0x0065, 0x0065, 0x00, 0x0B) + IO (Decode16, 0x0072, 0x0072, 0x00, 0x0E) + IO (Decode16, 0x0080, 0x0080, 0x00, 0x01) + IO (Decode16, 0x0084, 0x0084, 0x00, 0x03) + IO (Decode16, 0x0088, 0x0088, 0x00, 0x01) + IO (Decode16, 0x008C, 0x008C, 0x00, 0x03) + IO (Decode16, 0x0090, 0x0090, 0x00, 0x10) + IO (Decode16, 0x00A2, 0x00A2, 0x00, 0x1C) + IO (Decode16, 0x00E0, 0x00E0, 0x00, 0x10) + IO (Decode16, 0x08A0, 0x08A0, 0x00, 0x04) + IO (Decode16, 0x0CC0, 0x0CC0, 0x00, 0x10) + IO (Decode16, 0x04D0, 0x04D0, 0x00, 0x02) + }) + Method (_CRS, 0, NotSerialized) + { + Return (CRS) + } + } + + Device (PIC) + { + Name (_HID, EisaId ("PNP0000")) + Name (_CRS, ResourceTemplate () + { + IO (Decode16, 0x0020, 0x0020, 0x01, 0x02) + IO (Decode16, 0x00A0, 0x00A0, 0x01, 0x02) + IRQNoFlags () {2} + }) + } + + Device (DMA0) + { + Name (_HID, EisaId ("PNP0200")) + Name (_CRS, ResourceTemplate () + { + DMA (Compatibility, BusMaster, Transfer8) {4} + IO (Decode16, 0x0000, 0x0000, 0x00, 0x10) + IO (Decode16, 0x0081, 0x0081, 0x00, 0x03) + IO (Decode16, 0x0087, 0x0087, 0x00, 0x01) + IO (Decode16, 0x0089, 0x0089, 0x00, 0x03) + IO (Decode16, 0x008F, 0x008F, 0x00, 0x01) + IO (Decode16, 0x00C0, 0x00C0, 0x00, 0x20) + IO (Decode16, 0x0480, 0x0480, 0x00, 0x10) + }) + } + + Device (TMR) + { + Name (_HID, EisaId ("PNP0100")) + Name (_CRS, ResourceTemplate () + { + IO (Decode16, 0x0040, 0x0040, 0x00, 0x04) + IRQNoFlags () {0} + }) + } + + Device (RTC) + { + Name (_HID, EisaId ("PNP0B00")) + Name (_CRS, ResourceTemplate () + { + IO (Decode16, 0x0070, 0x0070, 0x00, 0x02) + IRQNoFlags () {8} + }) + } + + Device (SPKR) + { + Name (_HID, EisaId ("PNP0800")) + Name (_CRS, ResourceTemplate () + { + IO (Decode16, 0x0061, 0x0061, 0x00, 0x01) + }) + } + + Device (PS2M) + { + Name (_HID, EisaId ("PNP0F13")) + Name (_CID, 0x130FD041) + Method (_STA, 0, NotSerialized) + { + Return (0x0F) + } + + Name (_CRS, ResourceTemplate () + { + IRQNoFlags () {12} + }) + } + + Device (PS2K) + { + Name (_HID, EisaId ("PNP0303")) + Name (_CID, 0x0B03D041) + Method (_STA, 0, NotSerialized) + { + Return (0x0F) + } + + Name (_CRS, ResourceTemplate () + { + IO (Decode16, 0x0060, 0x0060, 0x00, 0x01) + IO (Decode16, 0x0064, 0x0064, 0x00, 0x01) + IRQNoFlags () {1} + }) + } + + Device (FDC0) + { + Name (_HID, EisaId ("PNP0700")) + Method (_STA, 0, NotSerialized) + { + Return (0x0F) + } + + Name (_CRS, ResourceTemplate () + { + IO (Decode16, 0x03F0, 0x03F0, 0x01, 0x06) + IO (Decode16, 0x03F7, 0x03F7, 0x01, 0x01) + IRQNoFlags () {6} + DMA (Compatibility, NotBusMaster, Transfer8) {2} + }) + } + + Device (UAR1) + { + Name (_HID, EisaId ("PNP0501")) + Name (_UID, 0x01) + Method (_STA, 0, NotSerialized) + { + Return (0x0F) + } + + Name (_CRS, ResourceTemplate() + { + IO (Decode16, 0x03F8, 0x03F8, 0x01, 0x08) + IRQNoFlags () {4} + }) + } + + Device (LTP1) + { + Name (_HID, EisaId ("PNP0400")) + Name (_UID, 0x02) + Method (_STA, 0, NotSerialized) + { + Return (0x0F) + } + + Name (_CRS, ResourceTemplate() + { + IO (Decode16, 0x0378, 0x0378, 0x08, 0x08) + IRQNoFlags () {7} + }) + } + } + } + } +} + diff -r 15b5cc51db30 -r 1bf4f15c5141 tools/firmware/hvmloader/acpi/dsdt.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tools/firmware/hvmloader/acpi/dsdt.c Tue Oct 31 12:42:50 2006 +0000 @@ -0,0 +1,300 @@ +/* + * + * Intel ACPI Component Architecture + * ASL Optimizing Compiler / AML Disassembler version 20050513 [Oct 12 2006] + * Copyright (C) 2000 - 2005 Intel Corporation + * Supports ACPI Specification Revision 3.0 + * + * Compilation of "acpi_dsdt.asl" - Thu Oct 12 14:08:49 2006 + * + * C source code output + * + */ +unsigned char AmlCode[] = +{ + 0x44,0x53,0x44,0x54,0xDA,0x08,0x00,0x00, /* 00000000 "DSDT...." */ + 0x01,0x26,0x49,0x4E,0x54,0x45,0x4C,0x00, /* 00000008 ".&INTEL." */ + 0x69,0x6E,0x74,0x2D,0x78,0x65,0x6E,0x00, /* 00000010 "int-xen." */ + 0xD6,0x07,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ + 0x13,0x05,0x05,0x20,0x08,0x50,0x4D,0x42, /* 00000020 "... .PMB" */ + 0x53,0x0B,0x00,0x0C,0x08,0x50,0x4D,0x4C, /* 00000028 "S....PML" */ + 0x4E,0x0A,0x08,0x08,0x49,0x4F,0x42,0x31, /* 00000030 "N...IOB1" */ + 0x00,0x08,0x49,0x4F,0x4C,0x31,0x00,0x08, /* 00000038 "..IOL1.." */ + 0x41,0x50,0x43,0x42,0x0C,0x00,0x00,0xC0, /* 00000040 "APCB...." */ + 0xFE,0x08,0x41,0x50,0x43,0x4C,0x0C,0x00, /* 00000048 "..APCL.." */ + 0x00,0x01,0x00,0x08,0x50,0x55,0x49,0x44, /* 00000050 "....PUID" */ + 0x00,0x10,0x39,0x5F,0x50,0x52,0x5F,0x5B, /* 00000058 "..9_PR_[" */ + 0x83,0x0B,0x43,0x50,0x55,0x30,0x00,0x00, /* 00000060 "..CPU0.." */ + 0x00,0x00,0x00,0x00,0x5B,0x83,0x0B,0x43, /* 00000068 "....[..C" */ + 0x50,0x55,0x31,0x01,0x00,0x00,0x00,0x00, /* 00000070 "PU1....." */ + 0x00,0x5B,0x83,0x0B,0x43,0x50,0x55,0x32, /* 00000078 ".[..CPU2" */ + 0x02,0x00,0x00,0x00,0x00,0x00,0x5B,0x83, /* 00000080 "......[." */ + 0x0B,0x43,0x50,0x55,0x33,0x03,0x00,0x00, /* 00000088 ".CPU3..." */ + 0x00,0x00,0x00,0x08,0x5F,0x53,0x35,0x5F, /* 00000090 "...._S5_" */ + 0x12,0x08,0x04,0x0A,0x07,0x0A,0x07,0x00, /* 00000098 "........" */ + 0x00,0x08,0x50,0x49,0x43,0x44,0x00,0x14, /* 000000A0 "..PICD.." */ + 0x0C,0x5F,0x50,0x49,0x43,0x01,0x70,0x68, /* 000000A8 "._PIC.ph" */ + 0x50,0x49,0x43,0x44,0x10,0x45,0x82,0x5F, /* 000000B0 "PICD.E._" */ + 0x53,0x42,0x5F,0x5B,0x82,0x49,0x04,0x4D, /* 000000B8 "SB_[.I.M" */ + 0x45,0x4D,0x30,0x08,0x5F,0x48,0x49,0x44, /* 000000C0 "EM0._HID" */ + 0x0C,0x41,0xD0,0x0C,0x02,0x08,0x5F,0x43, /* 000000C8 ".A...._C" */ + 0x52,0x53,0x11,0x33,0x0A,0x30,0x8A,0x2B, /* 000000D0 "RS.3.0.+" */ + 0x00,0x00,0x0D,0x03,0x00,0x00,0x00,0x00, /* 000000D8 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000E0 "........" */ + 0x00,0x00,0x00,0x00,0xFF,0xFF,0x09,0x00, /* 000000E8 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000F0 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x0A,0x00, /* 000000F8 "........" */ + 0x00,0x00,0x00,0x00,0x79,0x00,0x5B,0x82, /* 00000100 "....y.[." */ + 0x42,0x7D,0x50,0x43,0x49,0x30,0x08,0x5F, /* 00000108 "B}PCI0._" */ + 0x48,0x49,0x44,0x0C,0x41,0xD0,0x0A,0x03, /* 00000110 "HID.A..." */ + 0x08,0x5F,0x55,0x49,0x44,0x00,0x08,0x5F, /* 00000118 "._UID.._" */ + 0x41,0x44,0x52,0x00,0x08,0x5F,0x42,0x42, /* 00000120 "ADR.._BB" */ + 0x4E,0x00,0x5B,0x80,0x50,0x49,0x52,0x50, /* 00000128 "N.[.PIRP" */ + 0x02,0x0A,0x3C,0x0A,0x10,0x5B,0x81,0x24, /* 00000130 "..<..[.$" */ + 0x50,0x49,0x52,0x50,0x01,0x49,0x52,0x51, /* 00000138 "PIRP.IRQ" */ + 0x33,0x03,0x49,0x52,0x51,0x35,0x05,0x49, /* 00000140 "3.IRQ5.I" */ + 0x52,0x51,0x37,0x07,0x49,0x52,0x51,0x39, /* 00000148 "RQ7.IRQ9" */ + 0x09,0x49,0x52,0x51,0x41,0x0A,0x49,0x52, /* 00000150 ".IRQA.IR" */ + 0x51,0x42,0x0B,0x14,0x4A,0x06,0x5F,0x43, /* 00000158 "QB..J._C" */ + 0x52,0x53,0x00,0x08,0x50,0x52,0x54,0x30, /* 00000160 "RS..PRT0" */ + 0x11,0x48,0x05,0x0A,0x54,0x88,0x0D,0x00, /* 00000168 ".H..T..." */ + 0x02,0x0F,0x00,0x00,0x00,0x00,0x00,0xFF, /* 00000170 "........" */ + 0x00,0x00,0x00,0x00,0x01,0x47,0x01,0xF8, /* 00000178 ".....G.." */ + 0x0C,0xF8,0x0C,0x01,0x08,0x88,0x0D,0x00, /* 00000180 "........" */ + 0x01,0x0C,0x03,0x00,0x00,0x00,0x00,0xF7, /* 00000188 "........" */ + 0x0C,0x00,0x00,0xF8,0x0C,0x88,0x0D,0x00, /* 00000190 "........" */ + 0x01,0x0C,0x03,0x00,0x00,0x00,0x0D,0xFF, /* 00000198 "........" */ + 0xFF,0x00,0x00,0x00,0xF3,0x87,0x17,0x00, /* 000001A0 "........" */ + 0x00,0x0D,0x03,0x00,0x00,0x00,0x00,0x00, /* 000001A8 "........" */ + 0x00,0x00,0xF0,0xFF,0xFF,0xFF,0xF4,0x00, /* 000001B0 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x79, /* 000001B8 ".......y" */ + 0x00,0xA4,0x50,0x52,0x54,0x30,0x08,0x42, /* 000001C0 "..PRT0.B" */ + 0x55,0x46,0x41,0x11,0x09,0x0A,0x06,0x23, /* 000001C8 "UFA....#" */ + 0xF8,0xDC,0x18,0x79,0x00,0x08,0x42,0x55, /* 000001D0 "...y..BU" */ + 0x46,0x42,0x11,0x09,0x0A,0x06,0x23,0x00, /* 000001D8 "FB....#." */ + 0x00,0x18,0x79,0x00,0x8B,0x42,0x55,0x46, /* 000001E0 "..y..BUF" */ + 0x42,0x01,0x49,0x52,0x51,0x56,0x08,0x42, /* 000001E8 "B.IRQV.B" */ + 0x55,0x46,0x43,0x11,0x07,0x0A,0x04,0x05, /* 000001F0 "UFC....." */ + 0x07,0x0A,0x0B,0x8C,0x42,0x55,0x46,0x43, /* 000001F8 "....BUFC" */ + 0x01,0x50,0x49,0x51,0x41,0x8C,0x42,0x55, /* 00000200 ".PIQA.BU" */ + 0x46,0x43,0x01,0x50,0x49,0x51,0x42,0x8C, /* 00000208 "FC.PIQB." */ + 0x42,0x55,0x46,0x43,0x01,0x50,0x49,0x51, /* 00000210 "BUFC.PIQ" */ + 0x43,0x8C,0x42,0x55,0x46,0x43,0x01,0x50, /* 00000218 "C.BUFC.P" */ + 0x49,0x51,0x44,0x5B,0x82,0x48,0x08,0x4C, /* 00000220 "IQD[.H.L" */ + 0x4E,0x4B,0x41,0x08,0x5F,0x48,0x49,0x44, /* 00000228 "NKA._HID" */ + 0x0C,0x41,0xD0,0x0C,0x0F,0x08,0x5F,0x55, /* 00000230 ".A...._U" */ + 0x49,0x44,0x01,0x14,0x1C,0x5F,0x53,0x54, /* 00000238 "ID..._ST" */ + 0x41,0x00,0x7B,0x50,0x49,0x52,0x41,0x0A, /* 00000240 "A.{PIRA." */ + 0x80,0x60,0xA0,0x08,0x93,0x60,0x0A,0x80, /* 00000248 ".`...`.." */ + 0xA4,0x0A,0x09,0xA1,0x04,0xA4,0x0A,0x0B, /* 00000250 "........" */ + 0x14,0x0B,0x5F,0x50,0x52,0x53,0x00,0xA4, /* 00000258 ".._PRS.." */ + 0x42,0x55,0x46,0x41,0x14,0x11,0x5F,0x44, /* 00000260 "BUFA.._D" */ + 0x49,0x53,0x00,0x7D,0x50,0x49,0x52,0x41, /* 00000268 "IS.}PIRA" */ + 0x0A,0x80,0x50,0x49,0x52,0x41,0x14,0x1A, /* 00000270 "..PIRA.." */ + 0x5F,0x43,0x52,0x53,0x00,0x7B,0x50,0x49, /* 00000278 "_CRS.{PI" */ + 0x52,0x42,0x0A,0x0F,0x60,0x79,0x01,0x60, /* 00000280 "RB..`y.`" */ + 0x49,0x52,0x51,0x56,0xA4,0x42,0x55,0x46, /* 00000288 "IRQV.BUF" */ + 0x42,0x14,0x1B,0x5F,0x53,0x52,0x53,0x01, /* 00000290 "B.._SRS." */ + 0x8B,0x68,0x01,0x49,0x52,0x51,0x31,0x82, /* 00000298 ".h.IRQ1." */ + 0x49,0x52,0x51,0x31,0x60,0x76,0x60,0x70, /* 000002A0 "IRQ1`v`p" */ + 0x60,0x50,0x49,0x52,0x41,0x5B,0x82,0x49, /* 000002A8 "`PIRA[.I" */ + 0x08,0x4C,0x4E,0x4B,0x42,0x08,0x5F,0x48, /* 000002B0 ".LNKB._H" */ + 0x49,0x44,0x0C,0x41,0xD0,0x0C,0x0F,0x08, /* 000002B8 "ID.A...." */ + 0x5F,0x55,0x49,0x44,0x0A,0x02,0x14,0x1C, /* 000002C0 "_UID...." */ + 0x5F,0x53,0x54,0x41,0x00,0x7B,0x50,0x49, /* 000002C8 "_STA.{PI" */ + 0x52,0x42,0x0A,0x80,0x60,0xA0,0x08,0x93, /* 000002D0 "RB..`..." */ + 0x60,0x0A,0x80,0xA4,0x0A,0x09,0xA1,0x04, /* 000002D8 "`......." */ + 0xA4,0x0A,0x0B,0x14,0x0B,0x5F,0x50,0x52, /* 000002E0 "....._PR" */ + 0x53,0x00,0xA4,0x42,0x55,0x46,0x41,0x14, /* 000002E8 "S..BUFA." */ + 0x11,0x5F,0x44,0x49,0x53,0x00,0x7D,0x50, /* 000002F0 "._DIS.}P" */ + 0x49,0x52,0x42,0x0A,0x80,0x50,0x49,0x52, /* 000002F8 "IRB..PIR" */ + 0x42,0x14,0x1A,0x5F,0x43,0x52,0x53,0x00, /* 00000300 "B.._CRS." */ + 0x7B,0x50,0x49,0x52,0x42,0x0A,0x0F,0x60, /* 00000308 "{PIRB..`" */ + 0x79,0x01,0x60,0x49,0x52,0x51,0x56,0xA4, /* 00000310 "y.`IRQV." */ + 0x42,0x55,0x46,0x42,0x14,0x1B,0x5F,0x53, /* 00000318 "BUFB.._S" */ + 0x52,0x53,0x01,0x8B,0x68,0x01,0x49,0x52, /* 00000320 "RS..h.IR" */ + 0x51,0x31,0x82,0x49,0x52,0x51,0x31,0x60, /* 00000328 "Q1.IRQ1`" */ + 0x76,0x60,0x70,0x60,0x50,0x49,0x52,0x42, /* 00000330 "v`p`PIRB" */ + 0x5B,0x82,0x49,0x08,0x4C,0x4E,0x4B,0x43, /* 00000338 "[.I.LNKC" */ + 0x08,0x5F,0x48,0x49,0x44,0x0C,0x41,0xD0, /* 00000340 "._HID.A." */ + 0x0C,0x0F,0x08,0x5F,0x55,0x49,0x44,0x0A, /* 00000348 "..._UID." */ + 0x03,0x14,0x1C,0x5F,0x53,0x54,0x41,0x00, /* 00000350 "..._STA." */ + 0x7B,0x50,0x49,0x52,0x43,0x0A,0x80,0x60, /* 00000358 "{PIRC..`" */ + 0xA0,0x08,0x93,0x60,0x0A,0x80,0xA4,0x0A, /* 00000360 "...`...." */ + 0x09,0xA1,0x04,0xA4,0x0A,0x0B,0x14,0x0B, /* 00000368 "........" */ + 0x5F,0x50,0x52,0x53,0x00,0xA4,0x42,0x55, /* 00000370 "_PRS..BU" */ + 0x46,0x41,0x14,0x11,0x5F,0x44,0x49,0x53, /* 00000378 "FA.._DIS" */ + 0x00,0x7D,0x50,0x49,0x52,0x43,0x0A,0x80, /* 00000380 ".}PIRC.." */ + 0x50,0x49,0x52,0x43,0x14,0x1A,0x5F,0x43, /* 00000388 "PIRC.._C" */ + 0x52,0x53,0x00,0x7B,0x50,0x49,0x52,0x43, /* 00000390 "RS.{PIRC" */ + 0x0A,0x0F,0x60,0x79,0x01,0x60,0x49,0x52, /* 00000398 "..`y.`IR" */ + 0x51,0x56,0xA4,0x42,0x55,0x46,0x42,0x14, /* 000003A0 "QV.BUFB." */ + 0x1B,0x5F,0x53,0x52,0x53,0x01,0x8B,0x68, /* 000003A8 "._SRS..h" */ + 0x01,0x49,0x52,0x51,0x31,0x82,0x49,0x52, /* 000003B0 ".IRQ1.IR" */ + 0x51,0x31,0x60,0x76,0x60,0x70,0x60,0x50, /* 000003B8 "Q1`v`p`P" */ + 0x49,0x52,0x43,0x5B,0x82,0x49,0x08,0x4C, /* 000003C0 "IRC[.I.L" */ + 0x4E,0x4B,0x44,0x08,0x5F,0x48,0x49,0x44, /* 000003C8 "NKD._HID" */ + 0x0C,0x41,0xD0,0x0C,0x0F,0x08,0x5F,0x55, /* 000003D0 ".A...._U" */ + 0x49,0x44,0x0A,0x04,0x14,0x1C,0x5F,0x53, /* 000003D8 "ID...._S" */ + 0x54,0x41,0x00,0x7B,0x50,0x49,0x52,0x44, /* 000003E0 "TA.{PIRD" */ + 0x0A,0x80,0x60,0xA0,0x08,0x93,0x60,0x0A, /* 000003E8 "..`...`." */ + 0x80,0xA4,0x0A,0x09,0xA1,0x04,0xA4,0x0A, /* 000003F0 "........" */ + 0x0B,0x14,0x0B,0x5F,0x50,0x52,0x53,0x00, /* 000003F8 "..._PRS." */ + 0xA4,0x42,0x55,0x46,0x41,0x14,0x11,0x5F, /* 00000400 ".BUFA.._" */ + 0x44,0x49,0x53,0x00,0x7D,0x50,0x49,0x52, /* 00000408 "DIS.}PIR" */ + 0x44,0x0A,0x80,0x50,0x49,0x52,0x44,0x14, /* 00000410 "D..PIRD." */ + 0x1A,0x5F,0x43,0x52,0x53,0x00,0x7B,0x50, /* 00000418 "._CRS.{P" */ + 0x49,0x52,0x44,0x0A,0x0F,0x60,0x79,0x01, /* 00000420 "IRD..`y." */ + 0x60,0x49,0x52,0x51,0x56,0xA4,0x42,0x55, /* 00000428 "`IRQV.BU" */ + 0x46,0x42,0x14,0x1B,0x5F,0x53,0x52,0x53, /* 00000430 "FB.._SRS" */ + 0x01,0x8B,0x68,0x01,0x49,0x52,0x51,0x31, /* 00000438 "..h.IRQ1" */ + 0x82,0x49,0x52,0x51,0x31,0x60,0x76,0x60, /* 00000440 ".IRQ1`v`" */ + 0x70,0x60,0x50,0x49,0x52,0x44,0x14,0x16, /* 00000448 "p`PIRD.." */ + 0x5F,0x50,0x52,0x54,0x00,0xA0,0x0A,0x50, /* 00000450 "_PRT...P" */ + 0x49,0x43,0x44,0xA4,0x50,0x52,0x54,0x41, /* 00000458 "ICD.PRTA" */ + 0xA4,0x50,0x52,0x54,0x50,0x08,0x50,0x52, /* 00000460 ".PRTP.PR" */ + 0x54,0x50,0x12,0x4D,0x11,0x14,0x12,0x0B, /* 00000468 "TP.M...." */ + 0x04,0x0B,0xFF,0xFF,0x00,0x4C,0x4E,0x4B, /* 00000470 ".....LNK" */ + 0x41,0x00,0x12,0x0B,0x04,0x0B,0xFF,0xFF, /* 00000478 "A......." */ + 0x01,0x4C,0x4E,0x4B,0x42,0x00,0x12,0x0C, /* 00000480 ".LNKB..." */ + 0x04,0x0B,0xFF,0xFF,0x0A,0x02,0x4C,0x4E, /* 00000488 "......LN" */ + 0x4B,0x43,0x00,0x12,0x0C,0x04,0x0B,0xFF, /* 00000490 "KC......" */ + 0xFF,0x0A,0x03,0x4C,0x4E,0x4B,0x44,0x00, /* 00000498 "...LNKD." */ + 0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x01,0x00, /* 000004A0 "........" */ + 0x00,0x4C,0x4E,0x4B,0x42,0x00,0x12,0x0D, /* 000004A8 ".LNKB..." */ + 0x04,0x0C,0xFF,0xFF,0x01,0x00,0x01,0x4C, /* 000004B0 ".......L" */ + 0x4E,0x4B,0x43,0x00,0x12,0x0E,0x04,0x0C, /* 000004B8 "NKC....." */ + 0xFF,0xFF,0x01,0x00,0x0A,0x02,0x4C,0x4E, /* 000004C0 "......LN" */ + 0x4B,0x44,0x00,0x12,0x0E,0x04,0x0C,0xFF, /* 000004C8 "KD......" */ + 0xFF,0x01,0x00,0x0A,0x03,0x4C,0x4E,0x4B, /* 000004D0 ".....LNK" */ + 0x41,0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF, /* 000004D8 "A......." */ + 0x02,0x00,0x00,0x4C,0x4E,0x4B,0x43,0x00, /* 000004E0 "...LNKC." */ + 0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x02,0x00, /* 000004E8 "........" */ + 0x01,0x4C,0x4E,0x4B,0x44,0x00,0x12,0x0E, /* 000004F0 ".LNKD..." */ + 0x04,0x0C,0xFF,0xFF,0x02,0x00,0x0A,0x02, /* 000004F8 "........" */ + 0x4C,0x4E,0x4B,0x41,0x00,0x12,0x0E,0x04, /* 00000500 "LNKA...." */ + 0x0C,0xFF,0xFF,0x02,0x00,0x0A,0x03,0x4C, /* 00000508 ".......L" */ + 0x4E,0x4B,0x42,0x00,0x12,0x0D,0x04,0x0C, /* 00000510 "NKB....." */ + 0xFF,0xFF,0x03,0x00,0x00,0x4C,0x4E,0x4B, /* 00000518 ".....LNK" */ + 0x44,0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF, /* 00000520 "D......." */ + 0x03,0x00,0x01,0x4C,0x4E,0x4B,0x41,0x00, /* 00000528 "...LNKA." */ + 0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x03,0x00, /* 00000530 "........" */ + 0x0A,0x02,0x4C,0x4E,0x4B,0x42,0x00,0x12, /* 00000538 "..LNKB.." */ + 0x0E,0x04,0x0C,0xFF,0xFF,0x03,0x00,0x0A, /* 00000540 "........" */ + 0x03,0x4C,0x4E,0x4B,0x43,0x00,0x12,0x0D, /* 00000548 ".LNKC..." */ + 0x04,0x0C,0xFF,0xFF,0x04,0x00,0x00,0x4C, /* 00000550 ".......L" */ + 0x4E,0x4B,0x41,0x00,0x12,0x0D,0x04,0x0C, /* 00000558 "NKA....." */ + 0xFF,0xFF,0x04,0x00,0x01,0x4C,0x4E,0x4B, /* 00000560 ".....LNK" */ + 0x42,0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF, /* 00000568 "B......." */ + 0x04,0x00,0x0A,0x02,0x4C,0x4E,0x4B,0x43, /* 00000570 "....LNKC" */ + 0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x04, /* 00000578 "........" */ + 0x00,0x0A,0x03,0x4C,0x4E,0x4B,0x44,0x00, /* 00000580 "...LNKD." */ + 0x08,0x50,0x52,0x54,0x41,0x12,0x32,0x04, /* 00000588 ".PRTA.2." */ + 0x12,0x0B,0x04,0x0C,0xFF,0xFF,0x01,0x00, /* 00000590 "........" */ + 0x00,0x00,0x0A,0x05,0x12,0x0B,0x04,0x0C, /* 00000598 "........" */ + 0xFF,0xFF,0x02,0x00,0x00,0x00,0x0A,0x07, /* 000005A0 "........" */ + 0x12,0x0B,0x04,0x0C,0xFF,0xFF,0x03,0x00, /* 000005A8 "........" */ + 0x00,0x00,0x0A,0x0A,0x12,0x0B,0x04,0x0C, /* 000005B0 "........" */ + 0xFF,0xFF,0x04,0x00,0x00,0x00,0x0A,0x0B, /* 000005B8 "........" */ + 0x5B,0x82,0x48,0x31,0x49,0x53,0x41,0x5F, /* 000005C0 "[.H1ISA_" */ + 0x08,0x5F,0x41,0x44,0x52,0x00,0x5B,0x80, /* 000005C8 "._ADR.[." */ + 0x50,0x49,0x52,0x51,0x02,0x0A,0x60,0x0A, /* 000005D0 "PIRQ..`." */ + 0x04,0x10,0x2E,0x5C,0x00,0x5B,0x81,0x29, /* 000005D8 "...\.[.)" */ + 0x5C,0x2F,0x04,0x5F,0x53,0x42,0x5F,0x50, /* 000005E0 "\/._SB_P" */ + 0x43,0x49,0x30,0x49,0x53,0x41,0x5F,0x50, /* 000005E8 "CI0ISA_P" */ + 0x49,0x52,0x51,0x01,0x50,0x49,0x52,0x41, /* 000005F0 "IRQ.PIRA" */ + 0x08,0x50,0x49,0x52,0x42,0x08,0x50,0x49, /* 000005F8 ".PIRB.PI" */ + 0x52,0x43,0x08,0x50,0x49,0x52,0x44,0x08, /* 00000600 "RC.PIRD." */ + 0x5B,0x82,0x46,0x0B,0x53,0x59,0x53,0x52, /* 00000608 "[.F.SYSR" */ + 0x08,0x5F,0x48,0x49,0x44,0x0C,0x41,0xD0, /* 00000610 "._HID.A." */ + 0x0C,0x02,0x08,0x5F,0x55,0x49,0x44,0x01, /* 00000618 "..._UID." */ + 0x08,0x43,0x52,0x53,0x5F,0x11,0x4E,0x08, /* 00000620 ".CRS_.N." */ + 0x0A,0x8A,0x47,0x01,0x10,0x00,0x10,0x00, /* 00000628 "..G....." */ + 0x00,0x10,0x47,0x01,0x22,0x00,0x22,0x00, /* 00000630 "..G."."." */ + 0x00,0x0C,0x47,0x01,0x30,0x00,0x30,0x00, /* 00000638 "..G.0.0." */ + 0x00,0x10,0x47,0x01,0x44,0x00,0x44,0x00, /* 00000640 "..G.D.D." */ + 0x00,0x1C,0x47,0x01,0x62,0x00,0x62,0x00, /* 00000648 "..G.b.b." */ + 0x00,0x02,0x47,0x01,0x65,0x00,0x65,0x00, /* 00000650 "..G.e.e." */ + 0x00,0x0B,0x47,0x01,0x72,0x00,0x72,0x00, /* 00000658 "..G.r.r." */ + 0x00,0x0E,0x47,0x01,0x80,0x00,0x80,0x00, /* 00000660 "..G....." */ + 0x00,0x01,0x47,0x01,0x84,0x00,0x84,0x00, /* 00000668 "..G....." */ + 0x00,0x03,0x47,0x01,0x88,0x00,0x88,0x00, /* 00000670 "..G....." */ + 0x00,0x01,0x47,0x01,0x8C,0x00,0x8C,0x00, /* 00000678 "..G....." */ + 0x00,0x03,0x47,0x01,0x90,0x00,0x90,0x00, /* 00000680 "..G....." */ + 0x00,0x10,0x47,0x01,0xA2,0x00,0xA2,0x00, /* 00000688 "..G....." */ + 0x00,0x1C,0x47,0x01,0xE0,0x00,0xE0,0x00, /* 00000690 "..G....." */ + 0x00,0x10,0x47,0x01,0xA0,0x08,0xA0,0x08, /* 00000698 "..G....." */ + 0x00,0x04,0x47,0x01,0xC0,0x0C,0xC0,0x0C, /* 000006A0 "..G....." */ + 0x00,0x10,0x47,0x01,0xD0,0x04,0xD0,0x04, /* 000006A8 "..G....." */ + 0x00,0x02,0x79,0x00,0x14,0x0B,0x5F,0x43, /* 000006B0 "..y..._C" */ + 0x52,0x53,0x00,0xA4,0x43,0x52,0x53,0x5F, /* 000006B8 "RS..CRS_" */ + 0x5B,0x82,0x2B,0x50,0x49,0x43,0x5F,0x08, /* 000006C0 "[.+PIC_." */ + 0x5F,0x48,0x49,0x44,0x0B,0x41,0xD0,0x08, /* 000006C8 "_HID.A.." */ + 0x5F,0x43,0x52,0x53,0x11,0x18,0x0A,0x15, /* 000006D0 "_CRS...." */ + 0x47,0x01,0x20,0x00,0x20,0x00,0x01,0x02, /* 000006D8 "G. . ..." */ + 0x47,0x01,0xA0,0x00,0xA0,0x00,0x01,0x02, /* 000006E0 "G......." */ + 0x22,0x04,0x00,0x79,0x00,0x5B,0x82,0x47, /* 000006E8 ""..y.[.G" */ + 0x05,0x44,0x4D,0x41,0x30,0x08,0x5F,0x48, /* 000006F0 ".DMA0._H" */ + 0x49,0x44,0x0C,0x41,0xD0,0x02,0x00,0x08, /* 000006F8 "ID.A...." */ + 0x5F,0x43,0x52,0x53,0x11,0x41,0x04,0x0A, /* 00000700 "_CRS.A.." */ + 0x3D,0x2A,0x10,0x04,0x47,0x01,0x00,0x00, /* 00000708 "=*..G..." */ + 0x00,0x00,0x00,0x10,0x47,0x01,0x81,0x00, /* 00000710 "....G..." */ + 0x81,0x00,0x00,0x03,0x47,0x01,0x87,0x00, /* 00000718 "....G..." */ + 0x87,0x00,0x00,0x01,0x47,0x01,0x89,0x00, /* 00000720 "....G..." */ + 0x89,0x00,0x00,0x03,0x47,0x01,0x8F,0x00, /* 00000728 "....G..." */ + 0x8F,0x00,0x00,0x01,0x47,0x01,0xC0,0x00, /* 00000730 "....G..." */ + 0xC0,0x00,0x00,0x20,0x47,0x01,0x80,0x04, /* 00000738 "... G..." */ + 0x80,0x04,0x00,0x10,0x79,0x00,0x5B,0x82, /* 00000740 "....y.[." */ + 0x25,0x54,0x4D,0x52,0x5F,0x08,0x5F,0x48, /* 00000748 "%TMR_._H" */ + 0x49,0x44,0x0C,0x41,0xD0,0x01,0x00,0x08, /* 00000750 "ID.A...." */ + 0x5F,0x43,0x52,0x53,0x11,0x10,0x0A,0x0D, /* 00000758 "_CRS...." */ + 0x47,0x01,0x40,0x00,0x40,0x00,0x00,0x04, /* 00000760 "G.@.@..." */ + 0x22,0x01,0x00,0x79,0x00,0x5B,0x82,0x25, /* 00000768 ""..y.[.%" */ + 0x52,0x54,0x43,0x5F,0x08,0x5F,0x48,0x49, /* 00000770 "RTC_._HI" */ + 0x44,0x0C,0x41,0xD0,0x0B,0x00,0x08,0x5F, /* 00000778 "D.A...._" */ + 0x43,0x52,0x53,0x11,0x10,0x0A,0x0D,0x47, /* 00000780 "CRS....G" */ + 0x01,0x70,0x00,0x70,0x00,0x00,0x02,0x22, /* 00000788 ".p.p..."" */ + 0x00,0x01,0x79,0x00,0x5B,0x82,0x22,0x53, /* 00000790 "..y.[."S" */ + 0x50,0x4B,0x52,0x08,0x5F,0x48,0x49,0x44, /* 00000798 "PKR._HID" */ + 0x0C,0x41,0xD0,0x08,0x00,0x08,0x5F,0x43, /* 000007A0 ".A...._C" */ + 0x52,0x53,0x11,0x0D,0x0A,0x0A,0x47,0x01, /* 000007A8 "RS....G." */ + 0x61,0x00,0x61,0x00,0x00,0x01,0x79,0x00, /* 000007B0 "a.a...y." */ + 0x5B,0x82,0x31,0x50,0x53,0x32,0x4D,0x08, /* 000007B8 "[.1PS2M." */ + 0x5F,0x48,0x49,0x44,0x0C,0x41,0xD0,0x0F, /* 000007C0 "_HID.A.." */ + 0x13,0x08,0x5F,0x43,0x49,0x44,0x0C,0x41, /* 000007C8 ".._CID.A" */ + 0xD0,0x0F,0x13,0x14,0x09,0x5F,0x53,0x54, /* 000007D0 "....._ST" */ + 0x41,0x00,0xA4,0x0A,0x0F,0x08,0x5F,0x43, /* 000007D8 "A....._C" */ + 0x52,0x53,0x11,0x08,0x0A,0x05,0x22,0x00, /* 000007E0 "RS...."." */ + 0x10,0x79,0x00,0x5B,0x82,0x42,0x04,0x50, /* 000007E8 ".y.[.B.P" */ + 0x53,0x32,0x4B,0x08,0x5F,0x48,0x49,0x44, /* 000007F0 "S2K._HID" */ + 0x0C,0x41,0xD0,0x03,0x03,0x08,0x5F,0x43, /* 000007F8 ".A...._C" */ + 0x49,0x44,0x0C,0x41,0xD0,0x03,0x0B,0x14, /* 00000800 "ID.A...." */ + 0x09,0x5F,0x53,0x54,0x41,0x00,0xA4,0x0A, /* 00000808 "._STA..." */ + 0x0F,0x08,0x5F,0x43,0x52,0x53,0x11,0x18, /* 00000810 ".._CRS.." */ + 0x0A,0x15,0x47,0x01,0x60,0x00,0x60,0x00, /* 00000818 "..G.`.`." */ + 0x00,0x01,0x47,0x01,0x64,0x00,0x64,0x00, /* 00000820 "..G.d.d." */ + 0x00,0x01,0x22,0x02,0x00,0x79,0x00,0x5B, /* 00000828 ".."..y.[" */ + 0x82,0x3A,0x46,0x44,0x43,0x30,0x08,0x5F, /* 00000830 ".:FDC0._" */ + 0x48,0x49,0x44,0x0C,0x41,0xD0,0x07,0x00, /* 00000838 "HID.A..." */ + 0x14,0x09,0x5F,0x53,0x54,0x41,0x00,0xA4, /* 00000840 ".._STA.." */ + 0x0A,0x0F,0x08,0x5F,0x43,0x52,0x53,0x11, /* 00000848 "..._CRS." */ + 0x1B,0x0A,0x18,0x47,0x01,0xF0,0x03,0xF0, /* 00000850 "...G...." */ + 0x03,0x01,0x06,0x47,0x01,0xF7,0x03,0xF7, /* 00000858 "...G...." */ + 0x03,0x01,0x01,0x22,0x40,0x00,0x2A,0x04, /* 00000860 "..."@.*." */ + 0x00,0x79,0x00,0x5B,0x82,0x35,0x55,0x41, /* 00000868 ".y.[.5UA" */ + 0x52,0x31,0x08,0x5F,0x48,0x49,0x44,0x0C, /* 00000870 "R1._HID." */ + 0x41,0xD0,0x05,0x01,0x08,0x5F,0x55,0x49, /* 00000878 "A...._UI" */ + 0x44,0x01,0x14,0x09,0x5F,0x53,0x54,0x41, /* 00000880 "D..._STA" */ + 0x00,0xA4,0x0A,0x0F,0x08,0x5F,0x43,0x52, /* 00000888 "....._CR" */ + 0x53,0x11,0x10,0x0A,0x0D,0x47,0x01,0xF8, /* 00000890 "S....G.." */ + 0x03,0xF8,0x03,0x01,0x08,0x22,0x10,0x00, /* 00000898 ".....".." */ + 0x79,0x00,0x5B,0x82,0x36,0x4C,0x54,0x50, /* 000008A0 "y.[.6LTP" */ + 0x31,0x08,0x5F,0x48,0x49,0x44,0x0C,0x41, /* 000008A8 "1._HID.A" */ + 0xD0,0x04,0x00,0x08,0x5F,0x55,0x49,0x44, /* 000008B0 "...._UID" */ + 0x0A,0x02,0x14,0x09,0x5F,0x53,0x54,0x41, /* 000008B8 "...._STA" */ + 0x00,0xA4,0x0A,0x0F,0x08,0x5F,0x43,0x52, /* 000008C0 "....._CR" */ + 0x53,0x11,0x10,0x0A,0x0D,0x47,0x01,0x78, /* 000008C8 "S....G.x" */ + 0x03,0x78,0x03,0x08,0x08,0x22,0x80,0x00, /* 000008D0 ".x...".." */ + 0x79,0x00, +}; +int DsdtLen=sizeof(AmlCode); diff -r 15b5cc51db30 -r 1bf4f15c5141 tools/firmware/hvmloader/acpi/gen.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tools/firmware/hvmloader/acpi/gen.c Tue Oct 31 12:42:50 2006 +0000 @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2004, Intel Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope 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 + * this program; if not, write to the Free Software Foundation, Inc., 59 Temple + * Place - Suite 330, Boston, MA 02111-1307 USA. + * + */ +#include "acpi2_0.h" +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> + +#define USAGE "Usage: acpi_gen filename \n" \ + " generage acpitable and write to the binary \n" \ + " filename - the binary name\n" + +int main(int argc, char **argv) +{ + char *filename; + char buf[ACPI_TABLE_SIZE] = { 0 }; + FILE *f; + + if (argc < 2) { + fprintf(stderr,"%s",USAGE); + exit(1); + } + + filename = argv[1]; + + if ((f = fopen(filename, "w+")) == NULL) { + fprintf(stderr,"Can not open %s", filename); + exit(1); + } + + AcpiBuildTable((uint8_t *)buf); + + if (fwrite(buf, ACPI_TABLE_SIZE, 1, f) < 1) { + fprintf(stderr,"Can not write to %s\n", filename); + exit(1); + } + + return 0; +} diff -r 15b5cc51db30 -r 1bf4f15c5141 tools/firmware/hvmloader/acpi/static_tables.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tools/firmware/hvmloader/acpi/static_tables.c Tue Oct 31 12:42:50 2006 +0000 @@ -0,0 +1,184 @@ +/* + * Copyright (c) 2004, Intel Corporation. + * Copyright (c) 2006, Keir Fraser, XenSource Inc. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope 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 + * this program; if not, write to the Free Software Foundation, Inc., 59 Temple + * Place - Suite 330, Boston, MA 02111-1307 USA. + */ + +#include "acpi2_0.h" +#include <xen/hvm/ioreq.h> + +/* + * Multiple APIC Description Table (MADT). + */ + +struct acpi_20_madt Madt = { + .header = { + .header = { + .signature = ACPI_2_0_MADT_SIGNATURE, + .length = sizeof(struct acpi_20_madt), + .revision = ACPI_2_0_MADT_REVISION, + .oem_id = ACPI_OEM_ID, + .oem_table_id = ACPI_OEM_TABLE_ID, + .oem_revision = ACPI_OEM_REVISION, + .creator_id = ACPI_CREATOR_ID, + .creator_revision = ACPI_CREATOR_REVISION + }, + .lapic_addr = 0xFEE00000, + .flags = ACPI_PCAT_COMPAT + }, + + /* IO APIC */ + .io_apic = { + [0] = { + .type = ACPI_IO_APIC, + .length = sizeof(struct acpi_20_madt_ioapic), + .ioapic_addr = 0xFEC00000 + } + }, + + /* Local APIC entries for up to 32 processors. */ + .lapic = { + [0] = { + .type = ACPI_PROCESSOR_LOCAL_APIC, + .length = sizeof(struct acpi_20_madt_lapic), + .flags = 0x00000001 + } + } +}; + + +/* + * Firmware ACPI Control Structure (FACS). + */ + +struct acpi_20_facs Facs = { + .signature = ACPI_2_0_FACS_SIGNATURE, + .length = sizeof(struct acpi_20_facs), + .version = ACPI_2_0_FACS_VERSION +}; + + +/* + * Fixed ACPI Description Table (FADT). + */ + +#define ACPI_PM1A_EVT_BLK_BIT_WIDTH 0x20 +#define ACPI_PM1A_EVT_BLK_BIT_OFFSET 0x00 +#define ACPI_PM1A_CNT_BLK_BIT_WIDTH 0x10 +#define ACPI_PM1A_CNT_BLK_BIT_OFFSET 0x00 +#define ACPI_PM_TMR_BLK_BIT_WIDTH 0x20 +#define ACPI_PM_TMR_BLK_BIT_OFFSET 0x00 + +struct acpi_20_fadt Fadt = { + .header = { + .signature = ACPI_2_0_FADT_SIGNATURE, + .length = sizeof(struct acpi_20_fadt), + .revision = ACPI_2_0_FADT_REVISION, + .oem_id = ACPI_OEM_ID, + .oem_table_id = ACPI_OEM_TABLE_ID, + .oem_revision = ACPI_OEM_REVISION, + .creator_id = ACPI_CREATOR_ID, + .creator_revision = ACPI_CREATOR_REVISION + }, + + .sci_int = 9, + + .pm1a_evt_blk = ACPI_PM1A_EVT_BLK_ADDRESS, + .pm1a_cnt_blk = ACPI_PM1A_CNT_BLK_ADDRESS, + .pm_tmr_blk = ACPI_PM_TMR_BLK_ADDRESS, + .pm1_evt_len = ACPI_PM1A_EVT_BLK_BIT_WIDTH / 8, + .pm1_cnt_len = ACPI_PM1A_CNT_BLK_BIT_WIDTH / 8, + .pm_tmr_len = ACPI_PM_TMR_BLK_BIT_WIDTH / 8, + + .p_lvl2_lat = 0x0fff, /* >100, means we do not support C2 state */ + .p_lvl3_lat = 0x0fff, /* >1000, means we do not support C3 state */ + .iapc_boot_arch = ACPI_LEGACY_DEVICES | ACPI_8042, + .flags = (ACPI_PROC_C1 | ACPI_SLP_BUTTON | + ACPI_WBINVD | ACPI_PWR_BUTTON | + ACPI_FIX_RTC | ACPI_TMR_VAL_EXT), + + .reset_reg = { + .address_space_id = ACPI_SYSTEM_IO, + .register_bit_width = 8, /* *must* be 8 */ + .register_bit_offset = 0, /* *must* be 0 */ + .address = 0xcf9 + }, + .reset_value = 6, + + .x_pm1a_evt_blk = { + .address_space_id = ACPI_SYSTEM_IO, + .register_bit_width = ACPI_PM1A_EVT_BLK_BIT_WIDTH, + .register_bit_offset = ACPI_PM1A_EVT_BLK_BIT_OFFSET, + .address = ACPI_PM1A_EVT_BLK_ADDRESS, + }, + + .x_pm1a_cnt_blk = { + .address_space_id = ACPI_SYSTEM_IO, + .register_bit_width = ACPI_PM1A_CNT_BLK_BIT_WIDTH, + .register_bit_offset = ACPI_PM1A_CNT_BLK_BIT_OFFSET, + .address = ACPI_PM1A_CNT_BLK_ADDRESS, + }, + + .x_pm_tmr_blk = { + .address_space_id = ACPI_SYSTEM_IO, + .register_bit_width = ACPI_PM_TMR_BLK_BIT_WIDTH, + .register_bit_offset = ACPI_PM_TMR_BLK_BIT_OFFSET, + .address = ACPI_PM_TMR_BLK_ADDRESS, + } +}; + +struct acpi_20_rsdt Rsdt = { + .header = { + .signature = ACPI_2_0_RSDT_SIGNATURE, + .length = sizeof(struct acpi_header), + .revision = ACPI_2_0_RSDT_REVISION, + .oem_id = ACPI_OEM_ID, + .oem_table_id = ACPI_OEM_TABLE_ID, + .oem_revision = ACPI_OEM_REVISION, + .creator_id = ACPI_CREATOR_ID, + .creator_revision = ACPI_CREATOR_REVISION + } +}; + +struct acpi_20_xsdt Xsdt = { + .header = { + .signature = ACPI_2_0_XSDT_SIGNATURE, + .length = sizeof(struct acpi_header), + .revision = ACPI_2_0_XSDT_REVISION, + .oem_id = ACPI_OEM_ID, + .oem_table_id = ACPI_OEM_TABLE_ID, + .oem_revision = ACPI_OEM_REVISION, + .creator_id = ACPI_CREATOR_ID, + .creator_revision = ACPI_CREATOR_REVISION + } +}; + + +struct acpi_20_rsdp Rsdp = { + .signature = ACPI_2_0_RSDP_SIGNATURE, + .oem_id = ACPI_OEM_ID, + .revision = ACPI_OEM_REVISION, + .length = sizeof(struct acpi_20_rsdp) +}; + +/* + * Local variables: + * mode: C + * c-set-style: "BSD" + * c-basic-offset: 4 + * tab-width: 4 + * indent-tabs-mode: nil + * End: + */ diff -r 15b5cc51db30 -r 1bf4f15c5141 tools/firmware/hvmloader/acpi_ssdt_tpm.asl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tools/firmware/hvmloader/acpi_ssdt_tpm.asl Tue Oct 31 12:42:50 2006 +0000 @@ -0,0 +1,29 @@ +//**********************************************************************// +//* +//* Copyright (c) 2006, IBM Corporation. +//* +//* This program is free software; you can redistribute it and/or modify it +//* under the terms and conditions of the GNU General Public License, +//* version 2, as published by the Free Software Foundation. +//* +//* This program is distributed in the hope 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 +//* this program; if not, write to the Free Software Foundation, Inc., 59 Temple +//* Place - Suite 330, Boston, MA 02111-1307 USA. + +//* SSDT for TPM TIS Interface for Xen with Qemu device model + +DefinitionBlock ("SSDT_TPM.aml", "SSDT", 1, "IBM","xen", 2006) +{ + Device (TPM) { + Name (_HID, EisaId ("PNP0C31")) + Name (_CRS, ResourceTemplate () + { + Memory32Fixed (ReadWrite, 0xFED40000, 0x5000,) + }) + } +} \ No newline at end of file diff -r 15b5cc51db30 -r 1bf4f15c5141 tools/firmware/hvmloader/acpi_ssdt_tpm.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tools/firmware/hvmloader/acpi_ssdt_tpm.h Tue Oct 31 12:42:50 2006 +0000 @@ -0,0 +1,25 @@ +/* + * + * Intel ACPI Component Architecture + * ASL Optimizing Compiler version 20060707 [Sep 11 2006] + * Copyright (C) 2000 - 2006 Intel Corporation + * Supports ACPI Specification Revision 3.0a + * + * Compilation of "acpi_ssdt_tpm.asl" - Mon Oct 30 11:28:27 2006 + * + * C source code output + * + */ +unsigned char AmlCode_TPM[] = +{ + 0x53,0x53,0x44,0x54,0x4C,0x00,0x00,0x00, /* 00000000 "SSDTL..." */ + 0x01,0x6D,0x49,0x42,0x4D,0x00,0x00,0x00, /* 00000008 ".mIBM..." */ + 0x78,0x65,0x6E,0x00,0x00,0x00,0x00,0x00, /* 00000010 "xen....." */ + 0xD6,0x07,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ + 0x07,0x07,0x06,0x20,0x5B,0x82,0x26,0x54, /* 00000020 "... [.&T" */ + 0x50,0x4D,0x5F,0x08,0x5F,0x48,0x49,0x44, /* 00000028 "PM_._HID" */ + 0x0C,0x41,0xD0,0x0C,0x31,0x08,0x5F,0x43, /* 00000030 ".A..1._C" */ + 0x52,0x53,0x11,0x11,0x0A,0x0E,0x86,0x09, /* 00000038 "RS......" */ + 0x00,0x01,0x00,0x00,0xD4,0xFE,0x00,0x50, /* 00000040 ".......P" */ + 0x00,0x00,0x79,0x00, +}; diff -r 15b5cc51db30 -r 1bf4f15c5141 tools/firmware/hvmloader/acpi_utils.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tools/firmware/hvmloader/acpi_utils.c Tue Oct 31 12:42:50 2006 +0000 @@ -0,0 +1,207 @@ +/* + * Commonly used ACPI utility functions. + * Probing for devices and writing SSDT entries into XSDT and RSDT tables. + * + * Yu Ke, ke.yu@xxxxxxxxx + * Copyright (c) 2005, Intel Corporation. + * Copyright (c) 2006, IBM Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope 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 + * this program; if not, write to the Free Software Foundation, Inc., 59 Temple + * Place - Suite 330, Boston, MA 02111-1307 USA. + */ + +#include "acpi/acpi2_0.h" +#include "acpi_utils.h" +#include "util.h" + +static int acpi_rsdt_add_entry_pointer(unsigned char *acpi_start, + unsigned char *entry); +static unsigned char *acpi_xsdt_add_entry(unsigned char *acpi_start, + unsigned char **freemem, + unsigned char *limit, + unsigned char *table, + unsigned int table_size); + +void set_checksum(void *start, int checksum_offset, int len) +{ + unsigned char sum = 0; + unsigned char *ptr; + + ptr = start; + ptr[checksum_offset] = 0; + while (len--) + sum += *ptr++; + + ptr = start; + ptr[checksum_offset] = -sum; +} + + +#include "acpi_ssdt_tpm.h" +static int acpi_tpm_tis_probe(unsigned char *acpi_start, + unsigned char **freemem, + unsigned char *limit) +{ + int success = 1; /* not successful means 'out of memory' */ + unsigned char *addr; + /* check TPM_DID, TPM_VID, TPM_RID in ioemu/hw/tpm_tis.c */ + uint16_t tis_did_vid_rid[] = {0x0001, 0x0001, 0x0001}; + + /* probe for TIS interface ... */ + if (memcmp((char *)(0xFED40000 + 0xF00), + tis_did_vid_rid, + sizeof(tis_did_vid_rid)) == 0) { + puts("TIS is available\n"); + addr = acpi_xsdt_add_entry(acpi_start, freemem, limit, + AmlCode_TPM, sizeof(AmlCode_TPM)); + if (addr == NULL) + success = 0; + else { + /* legacy systems need an RSDT entry */ + acpi_rsdt_add_entry_pointer(acpi_start, + addr); + } + } + return success; +} + + +/* + * Call functions that probe for devices and have them register their + * SSDT entries with the XSDT and RSDT tables. + */ +void acpi_update(unsigned char *acpi_start, + unsigned long acpi_size, + unsigned char *limit, + unsigned char **freemem) +{ + acpi_tpm_tis_probe(acpi_start, freemem, limit); +} + + +struct acpi_20_rsdt *acpi_rsdt_get(unsigned char *acpi_start) +{ + struct acpi_20_rsdp *rsdp; + struct acpi_20_rsdt *rsdt; + + rsdp = (struct acpi_20_rsdp *)(acpi_start + sizeof(struct acpi_20_facs)); + if (rsdp->signature != ACPI_2_0_RSDP_SIGNATURE) { + puts("Bad RSDP signature\n"); + return NULL; + } + + rsdt = (struct acpi_20_rsdt *) + (acpi_start + rsdp->rsdt_address - ACPI_PHYSICAL_ADDRESS); + if (rsdt->header.signature != ACPI_2_0_RSDT_SIGNATURE) { + puts("Bad RSDT signature\n"); + return NULL; + } + return rsdt; +} + +/* + * Add an entry to the RSDT table given the pointer to the entry. + */ +static int acpi_rsdt_add_entry_pointer(unsigned char *acpi_start, + unsigned char *entry) +{ + struct acpi_20_rsdt *rsdt = acpi_rsdt_get(acpi_start); + int found = 0; + int i = 0; + + /* get empty slot in the RSDT table */ + while (i < ACPI_MAX_NUM_TABLES) { + if (rsdt->entry[i] == 0) { + found = 1; + break; + } + i++; + } + + if (found) { + rsdt->entry[i] = (uint64_t)(long)entry; + rsdt->header.length = + sizeof(struct acpi_header) + + (i + 1) * sizeof(uint64_t); + set_checksum(rsdt, + FIELD_OFFSET(struct acpi_header, checksum), + rsdt->header.length); + } + + return found; +} + +/* Get the XSDT table */ +struct acpi_20_xsdt *acpi_xsdt_get(unsigned char *acpi_start) +{ + struct acpi_20_rsdp *rsdp; + struct acpi_20_xsdt *xsdt; + + rsdp = (struct acpi_20_rsdp *)(acpi_start + sizeof(struct acpi_20_facs)); + if (rsdp->signature != ACPI_2_0_RSDP_SIGNATURE) { + puts("Bad RSDP signature\n"); + return NULL; + } + + xsdt = (struct acpi_20_xsdt *) + (acpi_start + rsdp->xsdt_address - ACPI_PHYSICAL_ADDRESS); + if (xsdt->header.signature != ACPI_2_0_XSDT_SIGNATURE) { + puts("Bad XSDT signature\n"); + return NULL; + } + return xsdt; +} + +/* + add an entry to the xdst table entry pointers + copy the given ssdt data to the current available memory at + freemem, if it does not exceed the limit + */ +static unsigned char *acpi_xsdt_add_entry(unsigned char *acpi_start, + unsigned char **freemem, + unsigned char *limit, + unsigned char *table, + unsigned int table_size) +{ + struct acpi_20_xsdt *xsdt = acpi_xsdt_get(acpi_start); + int found = 0, i = 0; + unsigned char *addr = NULL; + + /* get empty slot in the Xsdt table */ + while (i < ACPI_MAX_NUM_TABLES) { + if (xsdt->entry[i] == 0) { + found = 1; + break; + } + i++; + } + + if (found) { + /* memory below hard limit ? */ + if (*freemem + table_size <= limit) { + puts("Copying SSDT entry!\n"); + addr = *freemem; + memcpy(addr, table, table_size); + xsdt->entry[i] = (uint64_t)(long)addr; + *freemem += table_size; + /* update the XSDT table */ + xsdt->header.length = + sizeof(struct acpi_header) + + (i + 1) * sizeof(uint64_t); + set_checksum(xsdt, + FIELD_OFFSET(struct acpi_header, checksum), + xsdt->header.length); + } + } + return addr; +} diff -r 15b5cc51db30 -r 1bf4f15c5141 tools/firmware/hvmloader/acpi_utils.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tools/firmware/hvmloader/acpi_utils.h Tue Oct 31 12:42:50 2006 +0000 @@ -0,0 +1,36 @@ +/* + * Commonly used ACPI utility functions. + * + * Yu Ke, ke.yu@xxxxxxxxx + * Copyright (c) 2005, Intel Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope 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 + * this program; if not, write to the Free Software Foundation, Inc., 59 Temple + * Place - Suite 330, Boston, MA 02111-1307 USA. + */ +#ifndef ACPI_UTILS_H +#define ACPI_UTILS_H + +#define FIELD_OFFSET(TYPE,Field) ((unsigned int)(&(((TYPE *) 0)->Field))) + +#define NULL ((void*)0) + +void set_checksum(void *start, int checksum_offset, int len); +void acpi_update(unsigned char *acpi_start, + unsigned long acpi_size, + unsigned char *limit, + unsigned char **freemem); + +struct acpi_20_rsdt *acpi_rsdt_get(unsigned char *acpi_start); +struct acpi_20_xsdt *acpi_xsdt_get(unsigned char *acpi_start); + +#endif diff -r 15b5cc51db30 -r 1bf4f15c5141 tools/firmware/acpi/Makefile --- a/tools/firmware/acpi/Makefile Tue Oct 31 11:44:47 2006 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,68 +0,0 @@ -#/* -# * Copyright (c) 2004, Intel Corporation. -# * -# * This program is free software; you can redistribute it and/or modify it -# * under the terms and conditions of the GNU General Public License, -# * version 2, as published by the Free Software Foundation. -# * -# * This program is distributed in the hope 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 -# * this program; if not, write to the Free Software Foundation, Inc., 59 Temple -# * Place - Suite 330, Boston, MA 02111-1307 USA. -# * -# */ -# - -XEN_ROOT = ../../.. -include $(XEN_ROOT)/tools/Rules.mk - -# Compiler flag -HOSTCFLAGS += -I. -I../../libxc - -# TARGET -C_SRC=$(shell ls *.c) -H_SRC=$(shell ls *.h) -ACPI_GEN=acpigen -ACPI_BIN=acpi.bin - -IASL_VER=acpica-unix-20050513 -IASL_URL=http://developer.intel.com/technology/iapc/acpi/downloads/$(IASL_VER).tar.gz - -vpath iasl $(PATH) -all:$(ACPI_BIN) - -acpi_dsdt.c:acpi_dsdt.asl - $(MAKE) iasl - iasl -tc acpi_dsdt.asl - mv acpi_dsdt.hex acpi_dsdt.c - echo "int DsdtLen=sizeof(AmlCode);" >> acpi_dsdt.c - rm *.aml -# iasl -oa -tc acpi_dsdt.asl - -iasl: - @echo - @echo "ACPI ASL compiler(iasl) is needed" - @echo "Download Intel ACPI CA" - @echo "If wget failed, please download and compile manually from" - @echo "http://developer.intel.com/technology/iapc/acpi/downloads.htm" - @echo - wget $(IASL_URL) - tar xzf $(IASL_VER).tar.gz - make -C $(IASL_VER)/compiler - $(INSTALL_PROG) $(IASL_VER)/compiler/iasl /usr/bin/iasl - -$(ACPI_GEN):$(C_SRC) $(H_SRC) acpi_dsdt.c - $(HOSTCC) -o $(ACPI_GEN) $(HOSTCFLAGS) $(shell ls *.c) - -$(ACPI_BIN):$(ACPI_GEN) - ./$(ACPI_GEN) $(ACPI_BIN) - -clean: - rm -rf *.o $(ACPI_GEN) $(ACPI_BIN) $(IASL_VER) - rm -rf $(IASL_VER).tar.gz - -install: all diff -r 15b5cc51db30 -r 1bf4f15c5141 tools/firmware/acpi/README --- a/tools/firmware/acpi/README Tue Oct 31 11:44:47 2006 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,24 +0,0 @@ -ACPI Table for domain firmware - - -INSTALL ------------------ -Simply make is OK. -# make - - -Note on DSDT Table ------------------- -DSDT table source code is acpi_dsdt.asl -It is already compiled and the output is acpi_dsdt.c -Usually, user is not expected to change the acpi_dsdt.asl. -In case that the acpi_dsdt.asl need to be updated, please -Follow the instruction: - -# make acpi_dsdt.c - -Note: -DSDT compiler "iasl" is needed. By default, it will be downloaded -using wget in Makefile. if it failed, please download manually from -http://developer.intel.com/technology/iapc/acpi/downloads.htm. -then compile and install iasl diff -r 15b5cc51db30 -r 1bf4f15c5141 tools/firmware/acpi/acpi2_0.h --- a/tools/firmware/acpi/acpi2_0.h Tue Oct 31 11:44:47 2006 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,331 +0,0 @@ -/* - * Copyright (c) 2004, Intel Corporation. - * - * This program is free software; you can redistribute it and/or modify it - * under the terms and conditions of the GNU General Public License, - * version 2, as published by the Free Software Foundation. - * - * This program is distributed in the hope 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 - * this program; if not, write to the Free Software Foundation, Inc., 59 Temple - * Place - Suite 330, Boston, MA 02111-1307 USA. - * - */ -#ifndef _ACPI_2_0_H_ -#define _ACPI_2_0_H_ - -typedef unsigned char uint8_t; -typedef signed char int8_t; -typedef unsigned short uint16_t; -typedef signed short int16_t; -typedef unsigned int uint32_t; -typedef signed int int32_t; -#ifdef __i386__ -typedef unsigned long long uint64_t; -typedef signed long long int64_t; -#else -typedef unsigned long uint64_t; -typedef signed long int64_t; -#endif - -#include <xen/xen.h> - -#pragma pack (1) - -// -// common ACPI header. -// - -typedef struct { - uint32_t Signature; - uint32_t Length; - uint8_t Revision; - uint8_t Checksum; - uint8_t OemId[6]; - uint64_t OemTableId; - uint32_t OemRevision; - uint32_t CreatorId; - uint32_t CreatorRevision; -} ACPI_TABLE_HEADER; - - -#define ACPI_OEM_ID {'I','N','T','E','L',' '} -#define ACPI_OEM_TABLE_ID 0x544244 // "TBD" -#define ACPI_OEM_REVISION 0x00000002 -#define ACPI_CREATOR_ID 0x00 // TBD -#define ACPI_CREATOR_REVISION 0x00000002 - -// -// ACPI 2.0 Generic Address Space definition -// -typedef struct { - uint8_t AddressSpaceId; - uint8_t RegisterBitWidth; - uint8_t RegisterBitOffset; - uint8_t Reserved; - uint64_t Address; -} ACPI_GENERIC_ADDRESS_STRUCTURE; - -// -// Generic Address Space Address IDs -// -#define ACPI_SYSTEM_MEMORY 0 -#define ACPI_SYSTEM_IO 1 -#define ACPI_PCI_CONFIGURATION_SPACE 2 -#define ACPI_EMBEDDED_CONTROLLER 3 -#define ACPI_SMBUS 4 -#define ACPI_FUNCTIONAL_FIXED_HARDWARE 0x7F - -// -// Root System Description Pointer Structure in ACPI 1.0 -// -typedef struct { - uint64_t Signature; - uint8_t Checksum; - uint8_t OemId[6]; - uint8_t Reserved; - uint32_t RsdtAddress; -} ACPI_1_0_RSDP; - - -// -// Root System Description Pointer Structure -// -typedef struct { - uint64_t Signature; - uint8_t Checksum; - uint8_t OemId[6]; - uint8_t Revision; - uint32_t RsdtAddress; - uint32_t Length; - uint64_t XsdtAddress; - uint8_t ExtendedChecksum; - uint8_t Reserved[3]; -} ACPI_2_0_RSDP; - - -// -// The maximum number of entrys in RSDT or XSDT -// -#define ACPI_MAX_NUM_TABLES 2 - -// -// Root System Description Table (RSDT) -// - -typedef struct { - ACPI_TABLE_HEADER Header; - uint32_t Entry[ACPI_MAX_NUM_TABLES]; -}ACPI_2_0_RSDT; - -// -// RSDT Revision (as defined in ACPI 2.0 spec.) -// - -#define ACPI_2_0_RSDT_REVISION 0x01 - -// -// Extended System Description Table (XSDT) -// - -typedef struct _ACPI_2_0_XSDT{ - ACPI_TABLE_HEADER Header; - uint64_t Entry[ACPI_MAX_NUM_TABLES]; -}ACPI_2_0_XSDT; -#define ACPI_2_0_XSDT_REVISION 0x01 - -// -// Fixed ACPI Description Table Structure (FADT) -// - -typedef struct { - ACPI_TABLE_HEADER Header; - uint32_t FirmwareCtrl; - uint32_t Dsdt; - uint8_t Reserved0; - uint8_t PreferredPmProfile; - uint16_t SciInt; - uint32_t SmiCmd; - uint8_t AcpiEnable; - uint8_t AcpiDisable; - uint8_t S4BiosReq; - uint8_t PstateCnt; - uint32_t Pm1aEvtBlk; - uint32_t Pm1bEvtBlk; - uint32_t Pm1aCntBlk; - uint32_t Pm1bCntBlk; - uint32_t Pm2CntBlk; - uint32_t PmTmrBlk; - uint32_t Gpe0Blk; - uint32_t Gpe1Blk; - uint8_t Pm1EvtLen; - uint8_t Pm1CntLen; - uint8_t Pm2CntLen; - uint8_t PmTmrLen; - uint8_t Gpe0BlkLen; - uint8_t Gpe1BlkLen; - uint8_t Gpe1Base; - uint8_t CstCnt; - uint16_t PLvl2Lat; - uint16_t PLvl3Lat; - uint16_t FlushSize; - uint16_t FlushStride; - uint8_t DutyOffset; - uint8_t DutyWidth; - uint8_t DayAlrm; - uint8_t MonAlrm; - uint8_t Century; - uint16_t IaPcBootArch; - uint8_t Reserved1; - uint32_t Flags; - ACPI_GENERIC_ADDRESS_STRUCTURE ResetReg; - uint8_t ResetValue; - uint8_t Reserved2[3]; - uint64_t XFirmwareCtrl; - uint64_t XDsdt; - ACPI_GENERIC_ADDRESS_STRUCTURE XPm1aEvtBlk; - ACPI_GENERIC_ADDRESS_STRUCTURE XPm1bEvtBlk; - ACPI_GENERIC_ADDRESS_STRUCTURE XPm1aCntBlk; - ACPI_GENERIC_ADDRESS_STRUCTURE XPm1bCntBlk; - ACPI_GENERIC_ADDRESS_STRUCTURE XPm2CntBlk; - ACPI_GENERIC_ADDRESS_STRUCTURE XPmTmrBlk; - ACPI_GENERIC_ADDRESS_STRUCTURE XGpe0Blk; - ACPI_GENERIC_ADDRESS_STRUCTURE XGpe1Blk; -} ACPI_2_0_FADT; -#define ACPI_2_0_FADT_REVISION 0x03 - -// -// FADT Boot Architecture Flags -// -#define ACPI_LEGACY_DEVICES (1 << 0) -#define ACPI_8042 (1 << 1) - -// -// FADT Fixed Feature Flags -// -#define ACPI_WBINVD (1 << 0) -#define ACPI_WBINVD_FLUSH (1 << 1) -#define ACPI_PROC_C1 (1 << 2) -#define ACPI_P_LVL2_UP (1 << 3) -#define ACPI_PWR_BUTTON (1 << 4) -#define ACPI_SLP_BUTTON (1 << 5) -#define ACPI_FIX_RTC (1 << 6) -#define ACPI_RTC_S4 (1 << 7) -#define ACPI_TMR_VAL_EXT (1 << 8) -#define ACPI_DCK_CAP (1 << 9) -#define ACPI_RESET_REG_SUP (1 << 10) -#define ACPI_SEALED_CASE (1 << 11) -#define ACPI_HEADLESS (1 << 12) -#define ACPI_CPU_SW_SLP (1 << 13) - -// -// Firmware ACPI Control Structure (FACS) -// -typedef struct { - uint32_t Signature; - uint32_t Length; - uint32_t HardwareSignature; - uint32_t FirmwareWakingVector; - uint32_t GlobalLock; - uint32_t Flags; - uint64_t XFirmwareWakingVector; - uint8_t Version; - uint8_t Reserved[31]; -} ACPI_2_0_FACS; - -#define ACPI_2_0_FACS_VERSION 0x01 - -// -// Multiple APIC Description Table header definition (MADT) -// -typedef struct { - ACPI_TABLE_HEADER Header; - uint32_t LocalApicAddress; - uint32_t Flags; -} ACPI_2_0_MADT; - -#define ACPI_2_0_MADT_REVISION 0x01 - -// -// Multiple APIC Flags -// -#define ACPI_PCAT_COMPAT (1 << 0) - -// -// Multiple APIC Description Table APIC structure types -// -#define ACPI_PROCESSOR_LOCAL_APIC 0x00 -#define ACPI_IO_APIC 0x01 -#define ACPI_INTERRUPT_SOURCE_OVERRIDE 0x02 -#define ACPI_NON_MASKABLE_INTERRUPT_SOURCE 0x03 -#define ACPI_LOCAL_APIC_NMI 0x04 -#define ACPI_LOCAL_APIC_ADDRESS_OVERRIDE 0x05 -#define ACPI_IO_SAPIC 0x06 -#define ACPI_PROCESSOR_LOCAL_SAPIC 0x07 -#define ACPI_PLATFORM_INTERRUPT_SOURCES 0x08 - -// -// APIC Structure Definitions -// - -// -// Processor Local APIC Structure Definition -// - -typedef struct { - uint8_t Type; - uint8_t Length; - uint8_t AcpiProcessorId; - uint8_t ApicId; - uint32_t Flags; -} ACPI_LOCAL_APIC_STRUCTURE; - -// -// Local APIC Flags. All other bits are reserved and must be 0. -// - -#define ACPI_LOCAL_APIC_ENABLED (1 << 0) - -// -// IO APIC Structure -// - -typedef struct { - uint8_t Type; - uint8_t Length; - uint8_t IoApicId; - uint8_t Reserved; - uint32_t IoApicAddress; - uint32_t GlobalSystemInterruptBase; -} ACPI_IO_APIC_STRUCTURE; - -// Tabel Signature -#define ACPI_2_0_RSDP_SIGNATURE 0x2052545020445352LL // "RSD PTR " - -#define ACPI_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE 0x54445344 //"DSDT" - -#define ACPI_2_0_FACS_SIGNATURE 0x53434146 // "FACS" - -#define ACPI_2_0_FADT_SIGNATURE 0x50434146 // "FADT" - -#define ACPI_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE 0x43495041 // "APIC" - -#define ACPI_2_0_RSDT_SIGNATURE 0x54445352 // "RSDT" - -#define ACPI_2_0_XSDT_SIGNATURE 0x54445358 // "XSDT" - -#pragma pack () - -// The physical that acpi table reside in the guest BIOS -//#define ACPI_PHYSICAL_ADDRESS 0xE2000 -#define ACPI_PHYSICAL_ADDRESS 0xEA000 -#define ACPI_TABLE_SIZE (4*1024) //Currently 4K is enough - -void -AcpiBuildTable(uint8_t* buf); - -#endif diff -r 15b5cc51db30 -r 1bf4f15c5141 tools/firmware/acpi/acpi_build.c --- a/tools/firmware/acpi/acpi_build.c Tue Oct 31 11:44:47 2006 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,232 +0,0 @@ -/* - * Copyright (c) 2004, Intel Corporation. - * - * This program is free software; you can redistribute it and/or modify it - * under the terms and conditions of the GNU General Public License, - * version 2, as published by the Free Software Foundation. - * - * This program is distributed in the hope 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 - * this program; if not, write to the Free Software Foundation, Inc., 59 Temple - * Place - Suite 330, Boston, MA 02111-1307 USA. - * - */ - -#include "acpi2_0.h" -#include "acpi_madt.h" - -extern ACPI_2_0_RSDP Rsdp; -extern ACPI_2_0_RSDT Rsdt; -extern ACPI_2_0_XSDT Xsdt; -extern ACPI_2_0_FADT Fadt; -extern ACPI_MULTIPLE_APIC_DESCRIPTION_TABLE Madt; -extern ACPI_2_0_FACS Facs; -extern unsigned char *AmlCode; -extern int DsdtLen; - - -typedef struct _ACPI_TABLE_ALL{ - ACPI_2_0_RSDP *Rsdp; - ACPI_2_0_RSDT *Rsdt; - ACPI_2_0_XSDT *Xsdt; - ACPI_2_0_FADT *Fadt; - ACPI_MULTIPLE_APIC_DESCRIPTION_TABLE *Madt; - ACPI_2_0_FACS *Facs; - unsigned char* Dsdt; - uint32_t RsdpOffset; - uint32_t RsdtOffset; - uint32_t XsdtOffset; - uint32_t FadtOffset; - uint32_t MadtOffset; - uint32_t FacsOffset; - uint32_t DsdtOffset; -}ACPI_TABLE_ALL; - -static -void -MemCopy(void* src, void* dst, int len){ - - uint8_t* src0=src; - uint8_t* dst0=dst; - - while(len--){ - *(dst0++)=*(src0++); - } -} - -static -void -SetCheckSum( - void* Table, - uint32_t ChecksumOffset, - uint32_t Length -) -/* - * Routine Description: - * Calculate Checksum and store the result in the checksum - * filed of the table - * - * INPUT: - * Table: Start pointer of table - * ChecksumOffset: Offset of checksum field in the table - * Length: Length of Table - */ -{ - uint8_t Sum = 0; - uint8_t *Ptr; - - Ptr=Table; - Ptr[ChecksumOffset]=0; - while (Length--) { - Sum = (uint8_t)(Sum + (*Ptr++)); - } - - Ptr = Table; - Ptr[ChecksumOffset] = (uint8_t) (0xff - Sum + 1); -} - -// -// FIELD_OFFSET - returns the byte offset to a field within a structure -// -#define FIELD_OFFSET(TYPE,Field) ((uint32_t)(&(((TYPE *) 0)->Field))) - -static -void -UpdateTable( - ACPI_TABLE_ALL *table -) -/* - * Update the ACPI table: - * fill in the actuall physical address of RSDT, XSDT, FADT, MADT, FACS - * Caculate the checksum - */ -{ - // RSDP Update - table->Rsdp->RsdtAddress = (uint32_t)(ACPI_PHYSICAL_ADDRESS+ - table->RsdtOffset); - table->Rsdp->XsdtAddress = (uint64_t)(ACPI_PHYSICAL_ADDRESS+ - table->XsdtOffset); - SetCheckSum(table->Rsdp, - FIELD_OFFSET(ACPI_1_0_RSDP, Checksum), - sizeof(ACPI_1_0_RSDP) - ); - SetCheckSum(table->Rsdp, - FIELD_OFFSET(ACPI_2_0_RSDP, - ExtendedChecksum), - sizeof(ACPI_2_0_RSDP) - ); - - - //RSDT Update - table->Rsdt->Entry[0] = (uint32_t)(ACPI_PHYSICAL_ADDRESS + - table->FadtOffset); - table->Rsdt->Entry[1] = (uint32_t)(ACPI_PHYSICAL_ADDRESS + - table->MadtOffset); - table->Rsdt->Header.Length = sizeof (ACPI_TABLE_HEADER) + - 2*sizeof(uint32_t); - SetCheckSum(table->Rsdt, - FIELD_OFFSET(ACPI_TABLE_HEADER, Checksum), - table->Rsdt->Header.Length - ); - - //XSDT Update - table->Xsdt->Entry[0] = (uint64_t)(ACPI_PHYSICAL_ADDRESS + - table->FadtOffset); - table->Xsdt->Entry[1] = (uint64_t)(ACPI_PHYSICAL_ADDRESS + - table->MadtOffset); - table->Xsdt->Header.Length = sizeof (ACPI_TABLE_HEADER) + - 2*sizeof(uint64_t); - SetCheckSum(table->Xsdt, - FIELD_OFFSET(ACPI_TABLE_HEADER, Checksum), - table->Xsdt->Header.Length - ); - - // FADT Update - table->Fadt->Dsdt = (uint32_t)(ACPI_PHYSICAL_ADDRESS + - table->DsdtOffset); - table->Fadt->XDsdt = (uint64_t)(ACPI_PHYSICAL_ADDRESS + - table->DsdtOffset); - table->Fadt->FirmwareCtrl = (uint32_t)(ACPI_PHYSICAL_ADDRESS + - table->FacsOffset); - table->Fadt->XFirmwareCtrl = (uint64_t)(ACPI_PHYSICAL_ADDRESS + - table->FacsOffset); - SetCheckSum(table->Fadt, - FIELD_OFFSET(ACPI_TABLE_HEADER, Checksum), - sizeof(ACPI_2_0_FADT) - ); - - // MADT update - SetCheckSum(table->Madt, - FIELD_OFFSET(ACPI_TABLE_HEADER, Checksum), - sizeof(ACPI_MULTIPLE_APIC_DESCRIPTION_TABLE) - ); -} - -void -AcpiBuildTable(uint8_t* buf) -/* - * Copy all the ACPI table to buffer - * Buffer Layout: - * FACS - * RSDP - * RSDT - * XSDT - * FADT - * MADT - * DSDT - * - */ -{ - ACPI_TABLE_ALL table; - int offset=0; - - // FACS: should be 64-bit alignment - // so it is put at the start of buffer - // as the buffer is 64 bit alignment - table.FacsOffset = offset; - table.Facs = (ACPI_2_0_FACS*)(&buf[offset]); - MemCopy(&Facs, table.Facs, sizeof(ACPI_2_0_FACS)); - offset += sizeof(ACPI_2_0_FACS); - - // RSDP - table.RsdpOffset = offset; - table.Rsdp = (ACPI_2_0_RSDP*)(&buf[offset]); - MemCopy(&Rsdp, table.Rsdp, sizeof(ACPI_2_0_RSDP)); - offset+=sizeof(ACPI_2_0_RSDP); - - // RSDT - table.RsdtOffset = offset; - table.Rsdt = (ACPI_2_0_RSDT*)(&buf[offset]); - MemCopy(&Rsdt, table.Rsdt, sizeof(ACPI_2_0_RSDT)); - offset+=sizeof(ACPI_2_0_RSDT); - - // XSDT - table.XsdtOffset = offset; - table.Xsdt = (ACPI_2_0_XSDT*)(&buf[offset]); - MemCopy(&Xsdt, table.Xsdt, sizeof(ACPI_2_0_XSDT)); - offset+=sizeof(ACPI_2_0_XSDT); - - // FADT - table.FadtOffset = offset; - table.Fadt = (ACPI_2_0_FADT*)(&buf[offset]); - MemCopy(&Fadt, table.Fadt, sizeof(ACPI_2_0_FADT)); - offset+=sizeof(ACPI_2_0_FADT); - - // MADT - table.MadtOffset = offset; - table.Madt = (ACPI_MULTIPLE_APIC_DESCRIPTION_TABLE*)(&buf[offset]); - MemCopy(&Madt, table.Madt, sizeof(ACPI_MULTIPLE_APIC_DESCRIPTION_TABLE)); - offset+=sizeof(ACPI_MULTIPLE_APIC_DESCRIPTION_TABLE); - - // DSDT - table.DsdtOffset = offset; - table.Dsdt = (unsigned char*)(&buf[offset]); - MemCopy(&AmlCode, table.Dsdt, DsdtLen); - offset+=DsdtLen; - - UpdateTable(&table); -} diff -r 15b5cc51db30 -r 1bf4f15c5141 tools/firmware/acpi/acpi_dsdt.asl --- a/tools/firmware/acpi/acpi_dsdt.asl Tue Oct 31 11:44:47 2006 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,521 +0,0 @@ -//**********************************************************************// -//* -//* Copyright (c) 2004, Intel Corporation. -//* -//* This program is free software; you can redistribute it and/or modify it -//* under the terms and conditions of the GNU General Public License, -//* version 2, as published by the Free Software Foundation. -//* -//* This program is distributed in the hope 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 -//* this program; if not, write to the Free Software Foundation, Inc., 59 Temple -//* Place - Suite 330, Boston, MA 02111-1307 USA. - -//** -//** DSDT for Xen with Qemu device model -//** -//** - -DefinitionBlock ("DSDT.aml", "DSDT", 1, "INTEL","int-xen", 2006) -{ - Name (\PMBS, 0x0C00) - Name (\PMLN, 0x08) - Name (\IOB1, 0x00) - Name (\IOL1, 0x00) - Name (\APCB, 0xFEC00000) - Name (\APCL, 0x00010000) - Name (\PUID, 0x00) - - Scope (\_PR) - { - Processor (CPU0, 0x00, 0x00000000, 0x00) {} - Processor (CPU1, 0x01, 0x00000000, 0x00) {} - Processor (CPU2, 0x02, 0x00000000, 0x00) {} - Processor (CPU3, 0x03, 0x00000000, 0x00) {} - - } - -/* Poweroff support - ties in with qemu emulation */ - - Name (\_S5, Package (0x04) - { - 0x07, - 0x07, - 0x00, - 0x00 - }) - - - Name(PICD, 0) - - Method(_PIC, 1) { - - Store(Arg0, PICD) - } - Scope (\_SB) - { - /* Fix HCT test for 0x400 pci memory - need to report low 640 MB mem as motherboard resource */ - - Device(MEM0) { - Name(_HID, EISAID("PNP0C02")) - Name(_CRS, ResourceTemplate() { - QWordMemory (ResourceConsumer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, - 0x00000000, - 0x00000000, - 0x0009ffff, - 0x00000000, - 0x000a0000) - } - ) - } - - Device (PCI0) - { - Name (_HID, EisaId ("PNP0A03")) - Name (_UID, 0x00) - Name (_ADR, 0x00) - Name (_BBN, 0x00) - OperationRegion (PIRP, PCI_Config, 0x3c, 0x10) - Field(PIRP, ByteAcc, NoLock, Preserve){ - IRQ3,3, - IRQ5,5, - IRQ7,7, - IRQ9,9, - IRQA,10, - IRQB,11 - } - - Method (_CRS, 0, NotSerialized) - { - - Name (PRT0, ResourceTemplate () - { - /* bus number is from 0 - 255*/ - WordBusNumber (ResourceConsumer, MinFixed, MaxFixed, SubDecode, - 0x0000, - 0x0000, - 0x00FF, - 0x0000, - 0x0100) - IO (Decode16, 0x0CF8, 0x0CF8, 0x01, 0x08) - WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange, - 0x0000, - 0x0000, - 0x0CF7, - 0x0000, - 0x0CF8) - WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange, - 0x0000, - 0x0D00, - 0xFFFF, - 0x0000, - 0xF300) - - /* reserve memory for pci devices */ - - DWordMemory (ResourceConsumer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, - 0x00000000, - 0xF0000000, - 0xF4FFFFFF, - 0x00000000, - 0x05000000) - - }) - Return (PRT0) - } - Name(BUFA, ResourceTemplate() { - IRQ(Level, ActiveLow, Shared) { - 3,4,5,6,7,10,11,12,14,15} - }) - - Name(BUFB, Buffer(){ - 0x23, 0x00, 0x00, 0x18, - 0x79, 0}) - - CreateWordField(BUFB, 0x01, IRQV) - - Name(BUFC, Buffer(){ - 5, 7, 10, 11 - }) - - CreateByteField(BUFC, 0x01, PIQA) - CreateByteField(BUFC, 0x01, PIQB) - CreateByteField(BUFC, 0x01, PIQC) - CreateByteField(BUFC, 0x01, PIQD) - - Device(LNKA) { - Name(_HID, EISAID("PNP0C0F")) // PCI interrupt link - Name(_UID, 1) - Method(_STA, 0) { - And(PIRA, 0x80, Local0) - If(LEqual(Local0, 0x80)) { - Return(0x09) - } - Else { - Return(0x0B) - } - } - - Method(_PRS) { - - Return(BUFA) - } // Method(_PRS) - - Method(_DIS) { - Or(PIRA, 0x80, PIRA) - } - - Method(_CRS) { - And(PIRB, 0x0f, Local0) - ShiftLeft(0x1, Local0, IRQV) - Return(BUFB) - } - - Method(_SRS, 1) { - CreateWordField(ARG0, 0x01, IRQ1) - FindSetRightBit(IRQ1, Local0) - Decrement(Local0) - Store(Local0, PIRA) - } // Method(_SRS) - } - - Device(LNKB){ - Name(_HID, EISAID("PNP0C0F")) - Name(_UID, 2) - Method(_STA, 0) { - And(PIRB, 0x80, Local0) - If(LEqual(Local0, 0x80)) { - Return(0x09) - } - Else { - Return(0x0B) - } - } - - Method(_PRS) { - Return(BUFA) - } // Method(_PRS) - - Method(_DIS) { - - Or(PIRB, 0x80, PIRB) - } - - Method(_CRS) { - And(PIRB, 0x0f, Local0) - ShiftLeft(0x1, Local0, IRQV) - Return(BUFB) - } // Method(_CRS) - - Method(_SRS, 1) { - CreateWordField(ARG0, 0x01, IRQ1) - FindSetRightBit(IRQ1, Local0) - Decrement(Local0) - Store(Local0, PIRB) - } // Method(_SRS) - } - - Device(LNKC){ - Name(_HID, EISAID("PNP0C0F")) // PCI interrupt link - Name(_UID, 3) - Method(_STA, 0) { - And(PIRC, 0x80, Local0) - If(LEqual(Local0, 0x80)) { - Return(0x09) - } - Else { - Return(0x0B) - } - } - - Method(_PRS) { - Return(BUFA) - } // Method(_PRS) - - Method(_DIS) { - - Or(PIRC, 0x80, PIRC) - } - - Method(_CRS) { - And(PIRC, 0x0f, Local0) - ShiftLeft(0x1, Local0, IRQV) - Return(BUFB) - } // Method(_CRS) - - Method(_SRS, 1) { - CreateWordField(ARG0, 0x01, IRQ1) - FindSetRightBit(IRQ1, Local0) - Decrement(Local0) - Store(Local0, PIRC) - } // Method(_SRS) - } - - Device(LNKD) { - Name(_HID, EISAID("PNP0C0F")) - Name(_UID, 4) - Method(_STA, 0) { - And(PIRD, 0x80, Local0) - If(LEqual(Local0, 0x80)) { - Return(0x09) - } - Else { - Return(0x0B) - } - } - - Method(_PRS) { - Return(BUFA) - } // Method(_PRS) - - Method(_DIS) { - Or(PIRD, 0x80, PIRD) - } - - Method(_CRS) { - And(PIRD, 0x0f, Local0) - ShiftLeft(0x1, Local0, IRQV) - Return(BUFB) - } // Method(_CRS) - - Method(_SRS, 1) { - CreateWordField(ARG0, 0x01, IRQ1) - FindSetRightBit(IRQ1, Local0) - Decrement(Local0) - Store(Local0, PIRD) - } // Method(_SRS) - } - Method(_PRT,0) { - If(PICD) {Return(PRTA)} - Return (PRTP) - } // end _PRT - - Name(PRTP, Package() { - // Slot 1, INTA - INTD - Package(){0x0000ffff, 0, \_SB.PCI0.LNKA, 0}, - Package(){0x0000ffff, 1, \_SB.PCI0.LNKB, 0}, - Package(){0x0000ffff, 2, \_SB.PCI0.LNKC, 0}, - Package(){0x0000ffff, 3, \_SB.PCI0.LNKD, 0}, - - // Slot 2, INTA - INTD - Package(){0x0001ffff, 0, \_SB.PCI0.LNKB, 0}, - Package(){0x0001ffff, 1, \_SB.PCI0.LNKC, 0}, - Package(){0x0001ffff, 2, \_SB.PCI0.LNKD, 0}, - Package(){0x0001ffff, 3, \_SB.PCI0.LNKA, 0}, - - // Slot 3, INTA - INTD - Package(){0x0002ffff, 0, \_SB.PCI0.LNKC, 0}, - Package(){0x0002ffff, 1, \_SB.PCI0.LNKD, 0}, - Package(){0x0002ffff, 2, \_SB.PCI0.LNKA, 0}, - Package(){0x0002ffff, 3, \_SB.PCI0.LNKB, 0}, - - // Slot 4, INTA - INTD - Package(){0x0003ffff, 0, \_SB.PCI0.LNKD, 0}, - Package(){0x0003ffff, 1, \_SB.PCI0.LNKA, 0}, - Package(){0x0003ffff, 2, \_SB.PCI0.LNKB, 0}, - Package(){0x0003ffff, 3, \_SB.PCI0.LNKC, 0}, - - // Slot 5, INTA - INTD - Package(){0x0004ffff, 0, \_SB.PCI0.LNKA, 0}, - Package(){0x0004ffff, 1, \_SB.PCI0.LNKB, 0}, - Package(){0x0004ffff, 2, \_SB.PCI0.LNKC, 0}, - Package(){0x0004ffff, 3, \_SB.PCI0.LNKD, 0}, - } - ) - Name(PRTA, Package(){ - Package(){0x0001ffff, 0, 0, 5}, // Device 1, INTA - Package(){0x0002ffff, 0, 0, 7}, // Device 2, INTA - Package(){0x0003ffff, 0, 0, 10}, // Device 3, INTA - Package(){0x0004ffff, 0, 0, 11}, // Device 4, INTA - } - ) - - Device (ISA) - { - Name (_ADR, 0x00000000) /* device id, PCI bus num, ... */ - - OperationRegion(PIRQ, PCI_Config, 0x60, 0x4) - Scope(\) { - Field (\_SB.PCI0.ISA.PIRQ, ByteAcc, NoLock, Preserve) { - PIRA, 8, - PIRB, 8, - PIRC, 8, - PIRD, 8 - } - } - Device (SYSR) - { - Name (_HID, EisaId ("PNP0C02")) - Name (_UID, 0x01) - Name (CRS, ResourceTemplate () - { - /* TODO: list hidden resources */ - IO (Decode16, 0x0010, 0x0010, 0x00, 0x10) - IO (Decode16, 0x0022, 0x0022, 0x00, 0x0C) - IO (Decode16, 0x0030, 0x0030, 0x00, 0x10) - IO (Decode16, 0x0044, 0x0044, 0x00, 0x1C) - IO (Decode16, 0x0062, 0x0062, 0x00, 0x02) - IO (Decode16, 0x0065, 0x0065, 0x00, 0x0B) - IO (Decode16, 0x0072, 0x0072, 0x00, 0x0E) - IO (Decode16, 0x0080, 0x0080, 0x00, 0x01) - IO (Decode16, 0x0084, 0x0084, 0x00, 0x03) - IO (Decode16, 0x0088, 0x0088, 0x00, 0x01) - IO (Decode16, 0x008C, 0x008C, 0x00, 0x03) - IO (Decode16, 0x0090, 0x0090, 0x00, 0x10) - IO (Decode16, 0x00A2, 0x00A2, 0x00, 0x1C) - IO (Decode16, 0x00E0, 0x00E0, 0x00, 0x10) - IO (Decode16, 0x08A0, 0x08A0, 0x00, 0x04) - IO (Decode16, 0x0CC0, 0x0CC0, 0x00, 0x10) - IO (Decode16, 0x04D0, 0x04D0, 0x00, 0x02) - }) - Method (_CRS, 0, NotSerialized) - { - Return (CRS) - } - } - - Device (PIC) - { - Name (_HID, EisaId ("PNP0000")) - Name (_CRS, ResourceTemplate () - { - IO (Decode16, 0x0020, 0x0020, 0x01, 0x02) - IO (Decode16, 0x00A0, 0x00A0, 0x01, 0x02) - IRQNoFlags () {2} - }) - } - - Device (DMA0) - { - Name (_HID, EisaId ("PNP0200")) - Name (_CRS, ResourceTemplate () - { - DMA (Compatibility, BusMaster, Transfer8) {4} - IO (Decode16, 0x0000, 0x0000, 0x00, 0x10) - IO (Decode16, 0x0081, 0x0081, 0x00, 0x03) - IO (Decode16, 0x0087, 0x0087, 0x00, 0x01) - IO (Decode16, 0x0089, 0x0089, 0x00, 0x03) - IO (Decode16, 0x008F, 0x008F, 0x00, 0x01) - IO (Decode16, 0x00C0, 0x00C0, 0x00, 0x20) - IO (Decode16, 0x0480, 0x0480, 0x00, 0x10) - }) - } - - Device (TMR) - { - Name (_HID, EisaId ("PNP0100")) - Name (_CRS, ResourceTemplate () - { - IO (Decode16, 0x0040, 0x0040, 0x00, 0x04) - IRQNoFlags () {0} - }) - } - - Device (RTC) - { - Name (_HID, EisaId ("PNP0B00")) - Name (_CRS, ResourceTemplate () - { - IO (Decode16, 0x0070, 0x0070, 0x00, 0x02) - IRQNoFlags () {8} - }) - } - - Device (SPKR) - { - Name (_HID, EisaId ("PNP0800")) - Name (_CRS, ResourceTemplate () - { - IO (Decode16, 0x0061, 0x0061, 0x00, 0x01) - }) - } - - Device (PS2M) - { - Name (_HID, EisaId ("PNP0F13")) - Name (_CID, 0x130FD041) - Method (_STA, 0, NotSerialized) - { - Return (0x0F) - } - - Name (_CRS, ResourceTemplate () - { - IRQNoFlags () {12} - }) - } - - Device (PS2K) - { - Name (_HID, EisaId ("PNP0303")) - Name (_CID, 0x0B03D041) - Method (_STA, 0, NotSerialized) - { - Return (0x0F) - } - - Name (_CRS, ResourceTemplate () - { - IO (Decode16, 0x0060, 0x0060, 0x00, 0x01) - IO (Decode16, 0x0064, 0x0064, 0x00, 0x01) - IRQNoFlags () {1} - }) - } - - Device (FDC0) - { - Name (_HID, EisaId ("PNP0700")) - Method (_STA, 0, NotSerialized) - { - Return (0x0F) - } - - Name (_CRS, ResourceTemplate () - { - IO (Decode16, 0x03F0, 0x03F0, 0x01, 0x06) - IO (Decode16, 0x03F7, 0x03F7, 0x01, 0x01) - IRQNoFlags () {6} - DMA (Compatibility, NotBusMaster, Transfer8) {2} - }) - } - - Device (UAR1) - { - Name (_HID, EisaId ("PNP0501")) - Name (_UID, 0x01) - Method (_STA, 0, NotSerialized) - { - Return (0x0F) - } - - Name (_CRS, ResourceTemplate() - { - IO (Decode16, 0x03F8, 0x03F8, 0x01, 0x08) - IRQNoFlags () {4} - }) - } - - Device (LTP1) - { - Name (_HID, EisaId ("PNP0400")) - Name (_UID, 0x02) - Method (_STA, 0, NotSerialized) - { - Return (0x0F) - } - - Name (_CRS, ResourceTemplate() - { - IO (Decode16, 0x0378, 0x0378, 0x08, 0x08) - IRQNoFlags () {7} - }) - } - } - } - } -} - diff -r 15b5cc51db30 -r 1bf4f15c5141 tools/firmware/acpi/acpi_dsdt.c --- a/tools/firmware/acpi/acpi_dsdt.c Tue Oct 31 11:44:47 2006 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,300 +0,0 @@ -/* - * - * Intel ACPI Component Architecture - * ASL Optimizing Compiler / AML Disassembler version 20050513 [Oct 12 2006] - * Copyright (C) 2000 - 2005 Intel Corporation - * Supports ACPI Specification Revision 3.0 - * - * Compilation of "acpi_dsdt.asl" - Thu Oct 12 14:08:49 2006 - * - * C source code output - * - */ -unsigned char AmlCode[] = -{ - 0x44,0x53,0x44,0x54,0xDA,0x08,0x00,0x00, /* 00000000 "DSDT...." */ - 0x01,0x26,0x49,0x4E,0x54,0x45,0x4C,0x00, /* 00000008 ".&INTEL." */ - 0x69,0x6E,0x74,0x2D,0x78,0x65,0x6E,0x00, /* 00000010 "int-xen." */ - 0xD6,0x07,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ - 0x13,0x05,0x05,0x20,0x08,0x50,0x4D,0x42, /* 00000020 "... .PMB" */ - 0x53,0x0B,0x00,0x0C,0x08,0x50,0x4D,0x4C, /* 00000028 "S....PML" */ - 0x4E,0x0A,0x08,0x08,0x49,0x4F,0x42,0x31, /* 00000030 "N...IOB1" */ - 0x00,0x08,0x49,0x4F,0x4C,0x31,0x00,0x08, /* 00000038 "..IOL1.." */ - 0x41,0x50,0x43,0x42,0x0C,0x00,0x00,0xC0, /* 00000040 "APCB...." */ - 0xFE,0x08,0x41,0x50,0x43,0x4C,0x0C,0x00, /* 00000048 "..APCL.." */ - 0x00,0x01,0x00,0x08,0x50,0x55,0x49,0x44, /* 00000050 "....PUID" */ - 0x00,0x10,0x39,0x5F,0x50,0x52,0x5F,0x5B, /* 00000058 "..9_PR_[" */ - 0x83,0x0B,0x43,0x50,0x55,0x30,0x00,0x00, /* 00000060 "..CPU0.." */ - 0x00,0x00,0x00,0x00,0x5B,0x83,0x0B,0x43, /* 00000068 "....[..C" */ - 0x50,0x55,0x31,0x01,0x00,0x00,0x00,0x00, /* 00000070 "PU1....." */ - 0x00,0x5B,0x83,0x0B,0x43,0x50,0x55,0x32, /* 00000078 ".[..CPU2" */ - 0x02,0x00,0x00,0x00,0x00,0x00,0x5B,0x83, /* 00000080 "......[." */ - 0x0B,0x43,0x50,0x55,0x33,0x03,0x00,0x00, /* 00000088 ".CPU3..." */ - 0x00,0x00,0x00,0x08,0x5F,0x53,0x35,0x5F, /* 00000090 "...._S5_" */ - 0x12,0x08,0x04,0x0A,0x07,0x0A,0x07,0x00, /* 00000098 "........" */ - 0x00,0x08,0x50,0x49,0x43,0x44,0x00,0x14, /* 000000A0 "..PICD.." */ - 0x0C,0x5F,0x50,0x49,0x43,0x01,0x70,0x68, /* 000000A8 "._PIC.ph" */ - 0x50,0x49,0x43,0x44,0x10,0x45,0x82,0x5F, /* 000000B0 "PICD.E._" */ - 0x53,0x42,0x5F,0x5B,0x82,0x49,0x04,0x4D, /* 000000B8 "SB_[.I.M" */ - 0x45,0x4D,0x30,0x08,0x5F,0x48,0x49,0x44, /* 000000C0 "EM0._HID" */ - 0x0C,0x41,0xD0,0x0C,0x02,0x08,0x5F,0x43, /* 000000C8 ".A...._C" */ - 0x52,0x53,0x11,0x33,0x0A,0x30,0x8A,0x2B, /* 000000D0 "RS.3.0.+" */ - 0x00,0x00,0x0D,0x03,0x00,0x00,0x00,0x00, /* 000000D8 "........" */ - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000E0 "........" */ - 0x00,0x00,0x00,0x00,0xFF,0xFF,0x09,0x00, /* 000000E8 "........" */ - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000F0 "........" */ - 0x00,0x00,0x00,0x00,0x00,0x00,0x0A,0x00, /* 000000F8 "........" */ - 0x00,0x00,0x00,0x00,0x79,0x00,0x5B,0x82, /* 00000100 "....y.[." */ - 0x42,0x7D,0x50,0x43,0x49,0x30,0x08,0x5F, /* 00000108 "B}PCI0._" */ - 0x48,0x49,0x44,0x0C,0x41,0xD0,0x0A,0x03, /* 00000110 "HID.A..." */ - 0x08,0x5F,0x55,0x49,0x44,0x00,0x08,0x5F, /* 00000118 "._UID.._" */ - 0x41,0x44,0x52,0x00,0x08,0x5F,0x42,0x42, /* 00000120 "ADR.._BB" */ - 0x4E,0x00,0x5B,0x80,0x50,0x49,0x52,0x50, /* 00000128 "N.[.PIRP" */ - 0x02,0x0A,0x3C,0x0A,0x10,0x5B,0x81,0x24, /* 00000130 "..<..[.$" */ - 0x50,0x49,0x52,0x50,0x01,0x49,0x52,0x51, /* 00000138 "PIRP.IRQ" */ - 0x33,0x03,0x49,0x52,0x51,0x35,0x05,0x49, /* 00000140 "3.IRQ5.I" */ - 0x52,0x51,0x37,0x07,0x49,0x52,0x51,0x39, /* 00000148 "RQ7.IRQ9" */ - 0x09,0x49,0x52,0x51,0x41,0x0A,0x49,0x52, /* 00000150 ".IRQA.IR" */ - 0x51,0x42,0x0B,0x14,0x4A,0x06,0x5F,0x43, /* 00000158 "QB..J._C" */ - 0x52,0x53,0x00,0x08,0x50,0x52,0x54,0x30, /* 00000160 "RS..PRT0" */ - 0x11,0x48,0x05,0x0A,0x54,0x88,0x0D,0x00, /* 00000168 ".H..T..." */ - 0x02,0x0F,0x00,0x00,0x00,0x00,0x00,0xFF, /* 00000170 "........" */ - 0x00,0x00,0x00,0x00,0x01,0x47,0x01,0xF8, /* 00000178 ".....G.." */ - 0x0C,0xF8,0x0C,0x01,0x08,0x88,0x0D,0x00, /* 00000180 "........" */ - 0x01,0x0C,0x03,0x00,0x00,0x00,0x00,0xF7, /* 00000188 "........" */ - 0x0C,0x00,0x00,0xF8,0x0C,0x88,0x0D,0x00, /* 00000190 "........" */ - 0x01,0x0C,0x03,0x00,0x00,0x00,0x0D,0xFF, /* 00000198 "........" */ - 0xFF,0x00,0x00,0x00,0xF3,0x87,0x17,0x00, /* 000001A0 "........" */ - 0x00,0x0D,0x03,0x00,0x00,0x00,0x00,0x00, /* 000001A8 "........" */ - 0x00,0x00,0xF0,0xFF,0xFF,0xFF,0xF4,0x00, /* 000001B0 "........" */ - 0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x79, /* 000001B8 ".......y" */ - 0x00,0xA4,0x50,0x52,0x54,0x30,0x08,0x42, /* 000001C0 "..PRT0.B" */ - 0x55,0x46,0x41,0x11,0x09,0x0A,0x06,0x23, /* 000001C8 "UFA....#" */ - 0xF8,0xDC,0x18,0x79,0x00,0x08,0x42,0x55, /* 000001D0 "...y..BU" */ - 0x46,0x42,0x11,0x09,0x0A,0x06,0x23,0x00, /* 000001D8 "FB....#." */ - 0x00,0x18,0x79,0x00,0x8B,0x42,0x55,0x46, /* 000001E0 "..y..BUF" */ - 0x42,0x01,0x49,0x52,0x51,0x56,0x08,0x42, /* 000001E8 "B.IRQV.B" */ - 0x55,0x46,0x43,0x11,0x07,0x0A,0x04,0x05, /* 000001F0 "UFC....." */ - 0x07,0x0A,0x0B,0x8C,0x42,0x55,0x46,0x43, /* 000001F8 "....BUFC" */ - 0x01,0x50,0x49,0x51,0x41,0x8C,0x42,0x55, /* 00000200 ".PIQA.BU" */ - 0x46,0x43,0x01,0x50,0x49,0x51,0x42,0x8C, /* 00000208 "FC.PIQB." */ - 0x42,0x55,0x46,0x43,0x01,0x50,0x49,0x51, /* 00000210 "BUFC.PIQ" */ - 0x43,0x8C,0x42,0x55,0x46,0x43,0x01,0x50, /* 00000218 "C.BUFC.P" */ - 0x49,0x51,0x44,0x5B,0x82,0x48,0x08,0x4C, /* 00000220 "IQD[.H.L" */ - 0x4E,0x4B,0x41,0x08,0x5F,0x48,0x49,0x44, /* 00000228 "NKA._HID" */ - 0x0C,0x41,0xD0,0x0C,0x0F,0x08,0x5F,0x55, /* 00000230 ".A...._U" */ - 0x49,0x44,0x01,0x14,0x1C,0x5F,0x53,0x54, /* 00000238 "ID..._ST" */ - 0x41,0x00,0x7B,0x50,0x49,0x52,0x41,0x0A, /* 00000240 "A.{PIRA." */ - 0x80,0x60,0xA0,0x08,0x93,0x60,0x0A,0x80, /* 00000248 ".`...`.." */ - 0xA4,0x0A,0x09,0xA1,0x04,0xA4,0x0A,0x0B, /* 00000250 "........" */ - 0x14,0x0B,0x5F,0x50,0x52,0x53,0x00,0xA4, /* 00000258 ".._PRS.." */ - 0x42,0x55,0x46,0x41,0x14,0x11,0x5F,0x44, /* 00000260 "BUFA.._D" */ - 0x49,0x53,0x00,0x7D,0x50,0x49,0x52,0x41, /* 00000268 "IS.}PIRA" */ - 0x0A,0x80,0x50,0x49,0x52,0x41,0x14,0x1A, /* 00000270 "..PIRA.." */ - 0x5F,0x43,0x52,0x53,0x00,0x7B,0x50,0x49, /* 00000278 "_CRS.{PI" */ - 0x52,0x42,0x0A,0x0F,0x60,0x79,0x01,0x60, /* 00000280 "RB..`y.`" */ - 0x49,0x52,0x51,0x56,0xA4,0x42,0x55,0x46, /* 00000288 "IRQV.BUF" */ - 0x42,0x14,0x1B,0x5F,0x53,0x52,0x53,0x01, /* 00000290 "B.._SRS." */ - 0x8B,0x68,0x01,0x49,0x52,0x51,0x31,0x82, /* 00000298 ".h.IRQ1." */ - 0x49,0x52,0x51,0x31,0x60,0x76,0x60,0x70, /* 000002A0 "IRQ1`v`p" */ - 0x60,0x50,0x49,0x52,0x41,0x5B,0x82,0x49, /* 000002A8 "`PIRA[.I" */ - 0x08,0x4C,0x4E,0x4B,0x42,0x08,0x5F,0x48, /* 000002B0 ".LNKB._H" */ - 0x49,0x44,0x0C,0x41,0xD0,0x0C,0x0F,0x08, /* 000002B8 "ID.A...." */ - 0x5F,0x55,0x49,0x44,0x0A,0x02,0x14,0x1C, /* 000002C0 "_UID...." */ - 0x5F,0x53,0x54,0x41,0x00,0x7B,0x50,0x49, /* 000002C8 "_STA.{PI" */ - 0x52,0x42,0x0A,0x80,0x60,0xA0,0x08,0x93, /* 000002D0 "RB..`..." */ - 0x60,0x0A,0x80,0xA4,0x0A,0x09,0xA1,0x04, /* 000002D8 "`......." */ - 0xA4,0x0A,0x0B,0x14,0x0B,0x5F,0x50,0x52, /* 000002E0 "....._PR" */ - 0x53,0x00,0xA4,0x42,0x55,0x46,0x41,0x14, /* 000002E8 "S..BUFA." */ - 0x11,0x5F,0x44,0x49,0x53,0x00,0x7D,0x50, /* 000002F0 "._DIS.}P" */ - 0x49,0x52,0x42,0x0A,0x80,0x50,0x49,0x52, /* 000002F8 "IRB..PIR" */ - 0x42,0x14,0x1A,0x5F,0x43,0x52,0x53,0x00, /* 00000300 "B.._CRS." */ - 0x7B,0x50,0x49,0x52,0x42,0x0A,0x0F,0x60, /* 00000308 "{PIRB..`" */ - 0x79,0x01,0x60,0x49,0x52,0x51,0x56,0xA4, /* 00000310 "y.`IRQV." */ - 0x42,0x55,0x46,0x42,0x14,0x1B,0x5F,0x53, /* 00000318 "BUFB.._S" */ - 0x52,0x53,0x01,0x8B,0x68,0x01,0x49,0x52, /* 00000320 "RS..h.IR" */ - 0x51,0x31,0x82,0x49,0x52,0x51,0x31,0x60, /* 00000328 "Q1.IRQ1`" */ - 0x76,0x60,0x70,0x60,0x50,0x49,0x52,0x42, /* 00000330 "v`p`PIRB" */ - 0x5B,0x82,0x49,0x08,0x4C,0x4E,0x4B,0x43, /* 00000338 "[.I.LNKC" */ - 0x08,0x5F,0x48,0x49,0x44,0x0C,0x41,0xD0, /* 00000340 "._HID.A." */ - 0x0C,0x0F,0x08,0x5F,0x55,0x49,0x44,0x0A, /* 00000348 "..._UID." */ - 0x03,0x14,0x1C,0x5F,0x53,0x54,0x41,0x00, /* 00000350 "..._STA." */ - 0x7B,0x50,0x49,0x52,0x43,0x0A,0x80,0x60, /* 00000358 "{PIRC..`" */ - 0xA0,0x08,0x93,0x60,0x0A,0x80,0xA4,0x0A, /* 00000360 "...`...." */ - 0x09,0xA1,0x04,0xA4,0x0A,0x0B,0x14,0x0B, /* 00000368 "........" */ - 0x5F,0x50,0x52,0x53,0x00,0xA4,0x42,0x55, /* 00000370 "_PRS..BU" */ - 0x46,0x41,0x14,0x11,0x5F,0x44,0x49,0x53, /* 00000378 "FA.._DIS" */ - 0x00,0x7D,0x50,0x49,0x52,0x43,0x0A,0x80, /* 00000380 ".}PIRC.." */ - 0x50,0x49,0x52,0x43,0x14,0x1A,0x5F,0x43, /* 00000388 "PIRC.._C" */ - 0x52,0x53,0x00,0x7B,0x50,0x49,0x52,0x43, /* 00000390 "RS.{PIRC" */ - 0x0A,0x0F,0x60,0x79,0x01,0x60,0x49,0x52, /* 00000398 "..`y.`IR" */ - 0x51,0x56,0xA4,0x42,0x55,0x46,0x42,0x14, /* 000003A0 "QV.BUFB." */ - 0x1B,0x5F,0x53,0x52,0x53,0x01,0x8B,0x68, /* 000003A8 "._SRS..h" */ - 0x01,0x49,0x52,0x51,0x31,0x82,0x49,0x52, /* 000003B0 ".IRQ1.IR" */ - 0x51,0x31,0x60,0x76,0x60,0x70,0x60,0x50, /* 000003B8 "Q1`v`p`P" */ - 0x49,0x52,0x43,0x5B,0x82,0x49,0x08,0x4C, /* 000003C0 "IRC[.I.L" */ - 0x4E,0x4B,0x44,0x08,0x5F,0x48,0x49,0x44, /* 000003C8 "NKD._HID" */ - 0x0C,0x41,0xD0,0x0C,0x0F,0x08,0x5F,0x55, /* 000003D0 ".A...._U" */ - 0x49,0x44,0x0A,0x04,0x14,0x1C,0x5F,0x53, /* 000003D8 "ID...._S" */ - 0x54,0x41,0x00,0x7B,0x50,0x49,0x52,0x44, /* 000003E0 "TA.{PIRD" */ - 0x0A,0x80,0x60,0xA0,0x08,0x93,0x60,0x0A, /* 000003E8 "..`...`." */ - 0x80,0xA4,0x0A,0x09,0xA1,0x04,0xA4,0x0A, /* 000003F0 "........" */ - 0x0B,0x14,0x0B,0x5F,0x50,0x52,0x53,0x00, /* 000003F8 "..._PRS." */ - 0xA4,0x42,0x55,0x46,0x41,0x14,0x11,0x5F, /* 00000400 ".BUFA.._" */ - 0x44,0x49,0x53,0x00,0x7D,0x50,0x49,0x52, /* 00000408 "DIS.}PIR" */ - 0x44,0x0A,0x80,0x50,0x49,0x52,0x44,0x14, /* 00000410 "D..PIRD." */ - 0x1A,0x5F,0x43,0x52,0x53,0x00,0x7B,0x50, /* 00000418 "._CRS.{P" */ - 0x49,0x52,0x44,0x0A,0x0F,0x60,0x79,0x01, /* 00000420 "IRD..`y." */ - 0x60,0x49,0x52,0x51,0x56,0xA4,0x42,0x55, /* 00000428 "`IRQV.BU" */ - 0x46,0x42,0x14,0x1B,0x5F,0x53,0x52,0x53, /* 00000430 "FB.._SRS" */ - 0x01,0x8B,0x68,0x01,0x49,0x52,0x51,0x31, /* 00000438 "..h.IRQ1" */ - 0x82,0x49,0x52,0x51,0x31,0x60,0x76,0x60, /* 00000440 ".IRQ1`v`" */ - 0x70,0x60,0x50,0x49,0x52,0x44,0x14,0x16, /* 00000448 "p`PIRD.." */ - 0x5F,0x50,0x52,0x54,0x00,0xA0,0x0A,0x50, /* 00000450 "_PRT...P" */ - 0x49,0x43,0x44,0xA4,0x50,0x52,0x54,0x41, /* 00000458 "ICD.PRTA" */ - 0xA4,0x50,0x52,0x54,0x50,0x08,0x50,0x52, /* 00000460 ".PRTP.PR" */ - 0x54,0x50,0x12,0x4D,0x11,0x14,0x12,0x0B, /* 00000468 "TP.M...." */ - 0x04,0x0B,0xFF,0xFF,0x00,0x4C,0x4E,0x4B, /* 00000470 ".....LNK" */ - 0x41,0x00,0x12,0x0B,0x04,0x0B,0xFF,0xFF, /* 00000478 "A......." */ - 0x01,0x4C,0x4E,0x4B,0x42,0x00,0x12,0x0C, /* 00000480 ".LNKB..." */ - 0x04,0x0B,0xFF,0xFF,0x0A,0x02,0x4C,0x4E, /* 00000488 "......LN" */ - 0x4B,0x43,0x00,0x12,0x0C,0x04,0x0B,0xFF, /* 00000490 "KC......" */ - 0xFF,0x0A,0x03,0x4C,0x4E,0x4B,0x44,0x00, /* 00000498 "...LNKD." */ - 0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x01,0x00, /* 000004A0 "........" */ - 0x00,0x4C,0x4E,0x4B,0x42,0x00,0x12,0x0D, /* 000004A8 ".LNKB..." */ - 0x04,0x0C,0xFF,0xFF,0x01,0x00,0x01,0x4C, /* 000004B0 ".......L" */ - 0x4E,0x4B,0x43,0x00,0x12,0x0E,0x04,0x0C, /* 000004B8 "NKC....." */ - 0xFF,0xFF,0x01,0x00,0x0A,0x02,0x4C,0x4E, /* 000004C0 "......LN" */ - 0x4B,0x44,0x00,0x12,0x0E,0x04,0x0C,0xFF, /* 000004C8 "KD......" */ - 0xFF,0x01,0x00,0x0A,0x03,0x4C,0x4E,0x4B, /* 000004D0 ".....LNK" */ - 0x41,0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF, /* 000004D8 "A......." */ - 0x02,0x00,0x00,0x4C,0x4E,0x4B,0x43,0x00, /* 000004E0 "...LNKC." */ - 0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x02,0x00, /* 000004E8 "........" */ - 0x01,0x4C,0x4E,0x4B,0x44,0x00,0x12,0x0E, /* 000004F0 ".LNKD..." */ - 0x04,0x0C,0xFF,0xFF,0x02,0x00,0x0A,0x02, /* 000004F8 "........" */ - 0x4C,0x4E,0x4B,0x41,0x00,0x12,0x0E,0x04, /* 00000500 "LNKA...." */ - 0x0C,0xFF,0xFF,0x02,0x00,0x0A,0x03,0x4C, /* 00000508 ".......L" */ - 0x4E,0x4B,0x42,0x00,0x12,0x0D,0x04,0x0C, /* 00000510 "NKB....." */ - 0xFF,0xFF,0x03,0x00,0x00,0x4C,0x4E,0x4B, /* 00000518 ".....LNK" */ - 0x44,0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF, /* 00000520 "D......." */ - 0x03,0x00,0x01,0x4C,0x4E,0x4B,0x41,0x00, /* 00000528 "...LNKA." */ - 0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x03,0x00, /* 00000530 "........" */ - 0x0A,0x02,0x4C,0x4E,0x4B,0x42,0x00,0x12, /* 00000538 "..LNKB.." */ - 0x0E,0x04,0x0C,0xFF,0xFF,0x03,0x00,0x0A, /* 00000540 "........" */ - 0x03,0x4C,0x4E,0x4B,0x43,0x00,0x12,0x0D, /* 00000548 ".LNKC..." */ - 0x04,0x0C,0xFF,0xFF,0x04,0x00,0x00,0x4C, /* 00000550 ".......L" */ - 0x4E,0x4B,0x41,0x00,0x12,0x0D,0x04,0x0C, /* 00000558 "NKA....." */ - 0xFF,0xFF,0x04,0x00,0x01,0x4C,0x4E,0x4B, /* 00000560 ".....LNK" */ - 0x42,0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF, /* 00000568 "B......." */ - 0x04,0x00,0x0A,0x02,0x4C,0x4E,0x4B,0x43, /* 00000570 "....LNKC" */ - 0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x04, /* 00000578 "........" */ - 0x00,0x0A,0x03,0x4C,0x4E,0x4B,0x44,0x00, /* 00000580 "...LNKD." */ - 0x08,0x50,0x52,0x54,0x41,0x12,0x32,0x04, /* 00000588 ".PRTA.2." */ - 0x12,0x0B,0x04,0x0C,0xFF,0xFF,0x01,0x00, /* 00000590 "........" */ - 0x00,0x00,0x0A,0x05,0x12,0x0B,0x04,0x0C, /* 00000598 "........" */ - 0xFF,0xFF,0x02,0x00,0x00,0x00,0x0A,0x07, /* 000005A0 "........" */ - 0x12,0x0B,0x04,0x0C,0xFF,0xFF,0x03,0x00, /* 000005A8 "........" */ - 0x00,0x00,0x0A,0x0A,0x12,0x0B,0x04,0x0C, /* 000005B0 "........" */ - 0xFF,0xFF,0x04,0x00,0x00,0x00,0x0A,0x0B, /* 000005B8 "........" */ - 0x5B,0x82,0x48,0x31,0x49,0x53,0x41,0x5F, /* 000005C0 "[.H1ISA_" */ - 0x08,0x5F,0x41,0x44,0x52,0x00,0x5B,0x80, /* 000005C8 "._ADR.[." */ - 0x50,0x49,0x52,0x51,0x02,0x0A,0x60,0x0A, /* 000005D0 "PIRQ..`." */ - 0x04,0x10,0x2E,0x5C,0x00,0x5B,0x81,0x29, /* 000005D8 "...\.[.)" */ - 0x5C,0x2F,0x04,0x5F,0x53,0x42,0x5F,0x50, /* 000005E0 "\/._SB_P" */ - 0x43,0x49,0x30,0x49,0x53,0x41,0x5F,0x50, /* 000005E8 "CI0ISA_P" */ - 0x49,0x52,0x51,0x01,0x50,0x49,0x52,0x41, /* 000005F0 "IRQ.PIRA" */ - 0x08,0x50,0x49,0x52,0x42,0x08,0x50,0x49, /* 000005F8 ".PIRB.PI" */ - 0x52,0x43,0x08,0x50,0x49,0x52,0x44,0x08, /* 00000600 "RC.PIRD." */ - 0x5B,0x82,0x46,0x0B,0x53,0x59,0x53,0x52, /* 00000608 "[.F.SYSR" */ - 0x08,0x5F,0x48,0x49,0x44,0x0C,0x41,0xD0, /* 00000610 "._HID.A." */ - 0x0C,0x02,0x08,0x5F,0x55,0x49,0x44,0x01, /* 00000618 "..._UID." */ - 0x08,0x43,0x52,0x53,0x5F,0x11,0x4E,0x08, /* 00000620 ".CRS_.N." */ - 0x0A,0x8A,0x47,0x01,0x10,0x00,0x10,0x00, /* 00000628 "..G....." */ - 0x00,0x10,0x47,0x01,0x22,0x00,0x22,0x00, /* 00000630 "..G."."." */ - 0x00,0x0C,0x47,0x01,0x30,0x00,0x30,0x00, /* 00000638 "..G.0.0." */ - 0x00,0x10,0x47,0x01,0x44,0x00,0x44,0x00, /* 00000640 "..G.D.D." */ - 0x00,0x1C,0x47,0x01,0x62,0x00,0x62,0x00, /* 00000648 "..G.b.b." */ - 0x00,0x02,0x47,0x01,0x65,0x00,0x65,0x00, /* 00000650 "..G.e.e." */ - 0x00,0x0B,0x47,0x01,0x72,0x00,0x72,0x00, /* 00000658 "..G.r.r." */ - 0x00,0x0E,0x47,0x01,0x80,0x00,0x80,0x00, /* 00000660 "..G....." */ - 0x00,0x01,0x47,0x01,0x84,0x00,0x84,0x00, /* 00000668 "..G....." */ - 0x00,0x03,0x47,0x01,0x88,0x00,0x88,0x00, /* 00000670 "..G....." */ - 0x00,0x01,0x47,0x01,0x8C,0x00,0x8C,0x00, /* 00000678 "..G....." */ - 0x00,0x03,0x47,0x01,0x90,0x00,0x90,0x00, /* 00000680 "..G....." */ - 0x00,0x10,0x47,0x01,0xA2,0x00,0xA2,0x00, /* 00000688 "..G....." */ - 0x00,0x1C,0x47,0x01,0xE0,0x00,0xE0,0x00, /* 00000690 "..G....." */ - 0x00,0x10,0x47,0x01,0xA0,0x08,0xA0,0x08, /* 00000698 "..G....." */ - 0x00,0x04,0x47,0x01,0xC0,0x0C,0xC0,0x0C, /* 000006A0 "..G....." */ - 0x00,0x10,0x47,0x01,0xD0,0x04,0xD0,0x04, /* 000006A8 "..G....." */ - 0x00,0x02,0x79,0x00,0x14,0x0B,0x5F,0x43, /* 000006B0 "..y..._C" */ - 0x52,0x53,0x00,0xA4,0x43,0x52,0x53,0x5F, /* 000006B8 "RS..CRS_" */ - 0x5B,0x82,0x2B,0x50,0x49,0x43,0x5F,0x08, /* 000006C0 "[.+PIC_." */ - 0x5F,0x48,0x49,0x44,0x0B,0x41,0xD0,0x08, /* 000006C8 "_HID.A.." */ - 0x5F,0x43,0x52,0x53,0x11,0x18,0x0A,0x15, /* 000006D0 "_CRS...." */ - 0x47,0x01,0x20,0x00,0x20,0x00,0x01,0x02, /* 000006D8 "G. . ..." */ - 0x47,0x01,0xA0,0x00,0xA0,0x00,0x01,0x02, /* 000006E0 "G......." */ - 0x22,0x04,0x00,0x79,0x00,0x5B,0x82,0x47, /* 000006E8 ""..y.[.G" */ - 0x05,0x44,0x4D,0x41,0x30,0x08,0x5F,0x48, /* 000006F0 ".DMA0._H" */ - 0x49,0x44,0x0C,0x41,0xD0,0x02,0x00,0x08, /* 000006F8 "ID.A...." */ - 0x5F,0x43,0x52,0x53,0x11,0x41,0x04,0x0A, /* 00000700 "_CRS.A.." */ - 0x3D,0x2A,0x10,0x04,0x47,0x01,0x00,0x00, /* 00000708 "=*..G..." */ - 0x00,0x00,0x00,0x10,0x47,0x01,0x81,0x00, /* 00000710 "....G..." */ - 0x81,0x00,0x00,0x03,0x47,0x01,0x87,0x00, /* 00000718 "....G..." */ - 0x87,0x00,0x00,0x01,0x47,0x01,0x89,0x00, /* 00000720 "....G..." */ - 0x89,0x00,0x00,0x03,0x47,0x01,0x8F,0x00, /* 00000728 "....G..." */ - 0x8F,0x00,0x00,0x01,0x47,0x01,0xC0,0x00, /* 00000730 "....G..." */ - 0xC0,0x00,0x00,0x20,0x47,0x01,0x80,0x04, /* 00000738 "... G..." */ - 0x80,0x04,0x00,0x10,0x79,0x00,0x5B,0x82, /* 00000740 "....y.[." */ - 0x25,0x54,0x4D,0x52,0x5F,0x08,0x5F,0x48, /* 00000748 "%TMR_._H" */ - 0x49,0x44,0x0C,0x41,0xD0,0x01,0x00,0x08, /* 00000750 "ID.A...." */ - 0x5F,0x43,0x52,0x53,0x11,0x10,0x0A,0x0D, /* 00000758 "_CRS...." */ - 0x47,0x01,0x40,0x00,0x40,0x00,0x00,0x04, /* 00000760 "G.@.@..." */ - 0x22,0x01,0x00,0x79,0x00,0x5B,0x82,0x25, /* 00000768 ""..y.[.%" */ - 0x52,0x54,0x43,0x5F,0x08,0x5F,0x48,0x49, /* 00000770 "RTC_._HI" */ - 0x44,0x0C,0x41,0xD0,0x0B,0x00,0x08,0x5F, /* 00000778 "D.A...._" */ - 0x43,0x52,0x53,0x11,0x10,0x0A,0x0D,0x47, /* 00000780 "CRS....G" */ - 0x01,0x70,0x00,0x70,0x00,0x00,0x02,0x22, /* 00000788 ".p.p..."" */ - 0x00,0x01,0x79,0x00,0x5B,0x82,0x22,0x53, /* 00000790 "..y.[."S" */ - 0x50,0x4B,0x52,0x08,0x5F,0x48,0x49,0x44, /* 00000798 "PKR._HID" */ - 0x0C,0x41,0xD0,0x08,0x00,0x08,0x5F,0x43, /* 000007A0 ".A...._C" */ - 0x52,0x53,0x11,0x0D,0x0A,0x0A,0x47,0x01, /* 000007A8 "RS....G." */ - 0x61,0x00,0x61,0x00,0x00,0x01,0x79,0x00, /* 000007B0 "a.a...y." */ - 0x5B,0x82,0x31,0x50,0x53,0x32,0x4D,0x08, /* 000007B8 "[.1PS2M." */ - 0x5F,0x48,0x49,0x44,0x0C,0x41,0xD0,0x0F, /* 000007C0 "_HID.A.." */ - 0x13,0x08,0x5F,0x43,0x49,0x44,0x0C,0x41, /* 000007C8 ".._CID.A" */ - 0xD0,0x0F,0x13,0x14,0x09,0x5F,0x53,0x54, /* 000007D0 "....._ST" */ - 0x41,0x00,0xA4,0x0A,0x0F,0x08,0x5F,0x43, /* 000007D8 "A....._C" */ - 0x52,0x53,0x11,0x08,0x0A,0x05,0x22,0x00, /* 000007E0 "RS...."." */ - 0x10,0x79,0x00,0x5B,0x82,0x42,0x04,0x50, /* 000007E8 ".y.[.B.P" */ - 0x53,0x32,0x4B,0x08,0x5F,0x48,0x49,0x44, /* 000007F0 "S2K._HID" */ - 0x0C,0x41,0xD0,0x03,0x03,0x08,0x5F,0x43, /* 000007F8 ".A...._C" */ - 0x49,0x44,0x0C,0x41,0xD0,0x03,0x0B,0x14, /* 00000800 "ID.A...." */ - 0x09,0x5F,0x53,0x54,0x41,0x00,0xA4,0x0A, /* 00000808 "._STA..." */ - 0x0F,0x08,0x5F,0x43,0x52,0x53,0x11,0x18, /* 00000810 ".._CRS.." */ - 0x0A,0x15,0x47,0x01,0x60,0x00,0x60,0x00, /* 00000818 "..G.`.`." */ - 0x00,0x01,0x47,0x01,0x64,0x00,0x64,0x00, /* 00000820 "..G.d.d." */ - 0x00,0x01,0x22,0x02,0x00,0x79,0x00,0x5B, /* 00000828 ".."..y.[" */ - 0x82,0x3A,0x46,0x44,0x43,0x30,0x08,0x5F, /* 00000830 ".:FDC0._" */ - 0x48,0x49,0x44,0x0C,0x41,0xD0,0x07,0x00, /* 00000838 "HID.A..." */ - 0x14,0x09,0x5F,0x53,0x54,0x41,0x00,0xA4, /* 00000840 ".._STA.." */ - 0x0A,0x0F,0x08,0x5F,0x43,0x52,0x53,0x11, /* 00000848 "..._CRS." */ - 0x1B,0x0A,0x18,0x47,0x01,0xF0,0x03,0xF0, /* 00000850 "...G...." */ - 0x03,0x01,0x06,0x47,0x01,0xF7,0x03,0xF7, /* 00000858 "...G...." */ - 0x03,0x01,0x01,0x22,0x40,0x00,0x2A,0x04, /* 00000860 "..."@.*." */ - 0x00,0x79,0x00,0x5B,0x82,0x35,0x55,0x41, /* 00000868 ".y.[.5UA" */ - 0x52,0x31,0x08,0x5F,0x48,0x49,0x44,0x0C, /* 00000870 "R1._HID." */ - 0x41,0xD0,0x05,0x01,0x08,0x5F,0x55,0x49, /* 00000878 "A...._UI" */ - 0x44,0x01,0x14,0x09,0x5F,0x53,0x54,0x41, /* 00000880 "D..._STA" */ - 0x00,0xA4,0x0A,0x0F,0x08,0x5F,0x43,0x52, /* 00000888 "....._CR" */ - 0x53,0x11,0x10,0x0A,0x0D,0x47,0x01,0xF8, /* 00000890 "S....G.." */ - 0x03,0xF8,0x03,0x01,0x08,0x22,0x10,0x00, /* 00000898 ".....".." */ - 0x79,0x00,0x5B,0x82,0x36,0x4C,0x54,0x50, /* 000008A0 "y.[.6LTP" */ - 0x31,0x08,0x5F,0x48,0x49,0x44,0x0C,0x41, /* 000008A8 "1._HID.A" */ - 0xD0,0x04,0x00,0x08,0x5F,0x55,0x49,0x44, /* 000008B0 "...._UID" */ - 0x0A,0x02,0x14,0x09,0x5F,0x53,0x54,0x41, /* 000008B8 "...._STA" */ - 0x00,0xA4,0x0A,0x0F,0x08,0x5F,0x43,0x52, /* 000008C0 "....._CR" */ - 0x53,0x11,0x10,0x0A,0x0D,0x47,0x01,0x78, /* 000008C8 "S....G.x" */ - 0x03,0x78,0x03,0x08,0x08,0x22,0x80,0x00, /* 000008D0 ".x...".." */ - 0x79,0x00, -}; -int DsdtLen=sizeof(AmlCode); diff -r 15b5cc51db30 -r 1bf4f15c5141 tools/firmware/acpi/acpi_facs.c --- a/tools/firmware/acpi/acpi_facs.c Tue Oct 31 11:44:47 2006 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,72 +0,0 @@ -/* - * Copyright (c) 2004, Intel Corporation. - * - * This program is free software; you can redistribute it and/or modify it - * under the terms and conditions of the GNU General Public License, - * version 2, as published by the Free Software Foundation. - * - * This program is distributed in the hope 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 - * this program; if not, write to the Free Software Foundation, Inc., 59 Temple - * Place - Suite 330, Boston, MA 02111-1307 USA. - * - */ -#include "acpi2_0.h" -#include "acpi_facs.h" - -// -// Firmware ACPI Control Structure -// - -ACPI_2_0_FACS Facs = { - ACPI_2_0_FACS_SIGNATURE, - sizeof (ACPI_2_0_FACS), - - // - // Hardware Signature - // - 0x00000000, - - ACPI_FIRMWARE_WAKING_VECTOR, - ACPI_GLOBAL_LOCK, - ACPI_FIRMWARE_CONTROL_STRUCTURE_FLAGS, - ACPI_X_FIRMWARE_WAKING_VECTOR, - ACPI_2_0_FACS_VERSION, - { - 0x00, // Reserved Fields - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - } -}; diff -r 15b5cc51db30 -r 1bf4f15c5141 tools/firmware/acpi/acpi_facs.h --- a/tools/firmware/acpi/acpi_facs.h Tue Oct 31 11:44:47 2006 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,32 +0,0 @@ -/* - * Copyright (c) 2004, Intel Corporation. - * - * This program is free software; you can redistribute it and/or modify it - * under the terms and conditions of the GNU General Public License, - * version 2, as published by the Free Software Foundation. - * - * This program is distributed in the hope 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 - * this program; if not, write to the Free Software Foundation, Inc., 59 Temple - * Place - Suite 330, Boston, MA 02111-1307 USA. - * - */ -#ifndef _FACS_H -#define _FACS_H - -// -// FACS Definitions -// - -#define ACPI_FIRMWARE_WAKING_VECTOR 0x00000000 -#define ACPI_GLOBAL_LOCK 0x00000000 - -#define ACPI_FIRMWARE_CONTROL_STRUCTURE_FLAGS 0x00000000 - -#define ACPI_X_FIRMWARE_WAKING_VECTOR 0x0000000000000000 - -#endif diff -r 15b5cc51db30 -r 1bf4f15c5141 tools/firmware/acpi/acpi_fadt.c --- a/tools/firmware/acpi/acpi_fadt.c Tue Oct 31 11:44:47 2006 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,193 +0,0 @@ -/* - * Copyright (c) 2004, Intel Corporation. - * - * This program is free software; you can redistribute it and/or modify it - * under the terms and conditions of the GNU General Public License, - * version 2, as published by the Free Software Foundation. - * - * This program is distributed in the hope 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 - * this program; if not, write to the Free Software Foundation, Inc., 59 Temple - * Place - Suite 330, Boston, MA 02111-1307 USA. - * - */ - -#include "acpi2_0.h" -#include "acpi_fadt.h" - -// -// Fixed ACPI Description Table -// - -ACPI_2_0_FADT Fadt = { - { - ACPI_2_0_FADT_SIGNATURE, - sizeof (ACPI_2_0_FADT), - ACPI_2_0_FADT_REVISION, - 0x00,// Checksum will be updated later - ACPI_OEM_ID, // OEM ID - ACPI_OEM_TABLE_ID, // OEM Table ID - ACPI_OEM_REVISION, // OEM Revision - ACPI_CREATOR_ID, // Creator ID - ACPI_CREATOR_REVISION, // Creator Revision - }, - // - // These addresses will be updated later - // - 0x00000000, // Physical Address (0~4G) of the FACS - 0x00000000, // Physical Address (0~4G) of the DSDT - - 0x00, - ACPI_PREFERRED_PM_PROFILE, // Enterprise - ACPI_SCI_INT, // IRQ 9 - ACPI_SMI_CMD, - ACPI_ACPI_ENABLE, - ACPI_ACPI_DISABLE, - ACPI_S4_BIOS_REQ, // zero. not supported - ACPI_PSTATE_CNT, // not supported - - ACPI_PM1A_EVT_BLK_ADDRESS, // required - ACPI_PM1B_EVT_BLK_ADDRESS, // not supported - ACPI_PM1A_CNT_BLK_ADDRESS, // required - ACPI_PM1B_CNT_BLK_ADDRESS, // not supported - ACPI_PM2_CNT_BLK_ADDRESS, // not supported - ACPI_PM_TMR_BLK_ADDRESS, // required - ACPI_GPE0_BLK_ADDRESS, // not supported - ACPI_GPE1_BLK_ADDRESS, // not supported - ACPI_PM1_EVT_LEN, - ACPI_PM1_CNT_LEN, - ACPI_PM2_CNT_LEN, - ACPI_PM_TMR_LEN, - ACPI_GPE0_BLK_LEN, - ACPI_GPE1_BLK_LEN, - ACPI_GPE1_BASE, - - ACPI_CST_CNT, - ACPI_P_LVL2_LAT, // >100, not support C2 state - ACPI_P_LVL3_LAT, // >1000, not support C3 state - ACPI_FLUSH_SIZE, // not support - ACPI_FLUSH_STRIDE, // not support - ACPI_DUTY_OFFSET, // not support - ACPI_DUTY_WIDTH, // not support - ACPI_DAY_ALRM, // not support - ACPI_MON_ALRM, // not support - ACPI_CENTURY, // not support - ACPI_IAPC_BOOT_ARCH, - 0x00, - ACPI_FIXED_FEATURE_FLAGS, - - // - // Reset Register Block - // - { ACPI_RESET_REG_ADDRESS_SPACE_ID, - ACPI_RESET_REG_BIT_WIDTH, - ACPI_RESET_REG_BIT_OFFSET, - 0x00, - ACPI_RESET_REG_ADDRESS, - }, - - ACPI_RESET_VALUE, - { - 0x00, - 0x00, - 0x00, - }, - // - // These addresses will be updated later - // - 0x0000000000000000, // X_FIRMWARE_CTRL: 64bit physical address of the FACS. - 0x0000000000000000, // X_DSDT: 64bit physical address of the DSDT. - - // - // PM1a Event Register Block - // - { - ACPI_PM1A_EVT_BLK_ADDRESS_SPACE_ID, - ACPI_PM1A_EVT_BLK_BIT_WIDTH, - ACPI_PM1A_EVT_BLK_BIT_OFFSET, - 0x00, - ACPI_PM1A_EVT_BLK_ADDRESS, - }, - - // - // PM1b Event Register Block - // - { - ACPI_PM1B_EVT_BLK_ADDRESS_SPACE_ID, // not support - ACPI_PM1B_EVT_BLK_BIT_WIDTH, - ACPI_PM1B_EVT_BLK_BIT_OFFSET, - 0x00, - ACPI_PM1B_EVT_BLK_ADDRESS, - }, - - // - // PM1a Control Register Block - // - { - ACPI_PM1A_CNT_BLK_ADDRESS_SPACE_ID, - ACPI_PM1A_CNT_BLK_BIT_WIDTH, - ACPI_PM1A_CNT_BLK_BIT_OFFSET, - 0x00, - ACPI_PM1A_CNT_BLK_ADDRESS, - }, - - // - // PM1b Control Register Block - // - { - ACPI_PM1B_CNT_BLK_ADDRESS_SPACE_ID, - ACPI_PM1B_CNT_BLK_BIT_WIDTH, - ACPI_PM1B_CNT_BLK_BIT_OFFSET, - 0x00, - ACPI_PM1B_CNT_BLK_ADDRESS, - }, - - // - // PM2 Control Register Block - // - { - ACPI_PM2_CNT_BLK_ADDRESS_SPACE_ID, - ACPI_PM2_CNT_BLK_BIT_WIDTH, - ACPI_PM2_CNT_BLK_BIT_OFFSET, - 0x00, - ACPI_PM2_CNT_BLK_ADDRESS, - }, - - // - // PM Timer Control Register Block - // - { - ACPI_PM_TMR_BLK_ADDRESS_SPACE_ID, - ACPI_PM_TMR_BLK_BIT_WIDTH, - ACPI_PM_TMR_BLK_BIT_OFFSET, - 0x00, - ACPI_PM_TMR_BLK_ADDRESS, - }, - - // - // General Purpose Event 0 Register Block - // - { - ACPI_GPE0_BLK_ADDRESS_SPACE_ID, - ACPI_GPE0_BLK_BIT_WIDTH, - ACPI_GPE0_BLK_BIT_OFFSET, - 0x00, - ACPI_GPE0_BLK_ADDRESS, - }, - - // - // General Purpose Event 1 Register Block - // - { - ACPI_GPE1_BLK_ADDRESS_SPACE_ID, - ACPI_GPE1_BLK_BIT_WIDTH, - ACPI_GPE1_BLK_BIT_OFFSET, - 0x00, - ACPI_GPE1_BLK_ADDRESS - } - -}; diff -r 15b5cc51db30 -r 1bf4f15c5141 tools/firmware/acpi/acpi_fadt.h --- a/tools/firmware/acpi/acpi_fadt.h Tue Oct 31 11:44:47 2006 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,166 +0,0 @@ -/* - * Copyright (c) 2004, Intel Corporation. - * - * This program is free software; you can redistribute it and/or modify it - * under the terms and conditions of the GNU General Public License, - * version 2, as published by the Free Software Foundation. - * - * This program is distributed in the hope 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 - * this program; if not, write to the Free Software Foundation, Inc., 59 Temple - * Place - Suite 330, Boston, MA 02111-1307 USA. - * - */ -#ifndef _FADT_H_ -#define _FADT_H_ - -#include <xen/hvm/ioreq.h> - -// -// FADT Definitions, see ACPI 2.0 specification for details. -// - -#define ACPI_OEM_FADT_REVISION 0x00000001 // TBD - -#define ACPI_PREFERRED_PM_PROFILE 0x00 -#define ACPI_SCI_INT 0x0009 -#define ACPI_SMI_CMD 0x00000000 -#define ACPI_ACPI_ENABLE 0x00 -#define ACPI_ACPI_DISABLE 0x00 -#define ACPI_S4_BIOS_REQ 0x00 -#define ACPI_PSTATE_CNT 0x00 -#define ACPI_GPE1_BASE 0x00 -#define ACPI_CST_CNT 0x00 -#define ACPI_P_LVL2_LAT 0x0064 -#define ACPI_P_LVL3_LAT 0X03E8 -#define ACPI_FLUSH_SIZE 0x00 -#define ACPI_FLUSH_STRIDE 0x00 -#define ACPI_DUTY_OFFSET 0x01 -#define ACPI_DUTY_WIDTH 0x00 -#define ACPI_DAY_ALRM 0x00 -#define ACPI_MON_ALRM 0x00 -#define ACPI_CENTURY 0x00 - -// -// IA-PC Boot Architecture Flags, see ACPI 2.0 table specification and Acpi2_0.h -// -#define ACPI_IAPC_BOOT_ARCH (ACPI_LEGACY_DEVICES | ACPI_8042) - -// -// Fixed Feature Flags -// -#define ACPI_FIXED_FEATURE_FLAGS (ACPI_PROC_C1 | ACPI_SLP_BUTTON | \ - ACPI_WBINVD | ACPI_PWR_BUTTON | \ - ACPI_FIX_RTC | ACPI_TMR_VAL_EXT) - -// -// PM1A Event Register Block Generic Address Information -// -#define ACPI_PM1A_EVT_BLK_ADDRESS_SPACE_ID ACPI_SYSTEM_IO -#define ACPI_PM1A_EVT_BLK_BIT_WIDTH 0x20 -#define ACPI_PM1A_EVT_BLK_BIT_OFFSET 0x00 - -// -// PM1B Event Register Block Generic Address Information -// -#define ACPI_PM1B_EVT_BLK_ADDRESS_SPACE_ID ACPI_SYSTEM_IO -#define ACPI_PM1B_EVT_BLK_BIT_WIDTH 0x00 -#define ACPI_PM1B_EVT_BLK_BIT_OFFSET 0x00 -#define ACPI_PM1B_EVT_BLK_ADDRESS 0x0000000000000000 - -// -// PM1A Control Register Block Generic Address Information -// -#define ACPI_PM1A_CNT_BLK_ADDRESS_SPACE_ID ACPI_SYSTEM_IO -#define ACPI_PM1A_CNT_BLK_BIT_WIDTH 0x10 -#define ACPI_PM1A_CNT_BLK_BIT_OFFSET 0x00 - -// -// PM1B Control Register Block Generic Address Information -// -#define ACPI_PM1B_CNT_BLK_ADDRESS_SPACE_ID ACPI_SYSTEM_IO -#define ACPI_PM1B_CNT_BLK_BIT_WIDTH 0x00 -#define ACPI_PM1B_CNT_BLK_BIT_OFFSET 0x00 -#define ACPI_PM1B_CNT_BLK_ADDRESS 0x0000000000000000 - -// -// PM2 Control Register Block Generic Address Information -// -#define ACPI_PM2_CNT_BLK_ADDRESS_SPACE_ID ACPI_SYSTEM_IO -#define ACPI_PM2_CNT_BLK_BIT_WIDTH 0x00 -#define ACPI_PM2_CNT_BLK_BIT_OFFSET 0x00 -#define ACPI_PM2_CNT_BLK_ADDRESS 0x0000000000000000 - -// -// Power Management Timer Control Register Block Generic Address -// Information -// -#define ACPI_PM_TMR_BLK_ADDRESS_SPACE_ID ACPI_SYSTEM_IO -#define ACPI_PM_TMR_BLK_BIT_WIDTH 0x20 -#define ACPI_PM_TMR_BLK_BIT_OFFSET 0x00 - -// -// General Purpose Event 0 Register Block Generic Address -// Information -// - -#define ACPI_GPE0_BLK_ADDRESS_SPACE_ID ACPI_SYSTEM_IO -#define ACPI_GPE0_BLK_BIT_WIDTH 0x00 -#define ACPI_GPE0_BLK_BIT_OFFSET 0x00 -#define ACPI_GPE0_BLK_ADDRESS 0x00 - -// -// General Purpose Event 1 Register Block Generic Address -// Information -// - -#define ACPI_GPE1_BLK_ADDRESS_SPACE_ID ACPI_SYSTEM_IO -#define ACPI_GPE1_BLK_BIT_WIDTH 0x00 -#define ACPI_GPE1_BLK_BIT_OFFSET 0x00 -#define ACPI_GPE1_BLK_ADDRESS 0x00 - - -// -// Reset Register Generic Address Information -// -#define ACPI_RESET_REG_ADDRESS_SPACE_ID ACPI_SYSTEM_IO -#define ACPI_RESET_REG_BIT_WIDTH 0x08 -#define ACPI_RESET_REG_BIT_OFFSET 0x00 -#define ACPI_RESET_REG_ADDRESS 0x0000000000000CF9 -#define ACPI_RESET_VALUE 0x06 - -// -// Number of bytes decoded by PM1 event blocks (a and b) -// -#define ACPI_PM1_EVT_LEN ((ACPI_PM1A_EVT_BLK_BIT_WIDTH + ACPI_PM1B_EVT_BLK_BIT_WIDTH) / 8) - -// -// Number of bytes decoded by PM1 control blocks (a and b) -// -#define ACPI_PM1_CNT_LEN ((ACPI_PM1A_CNT_BLK_BIT_WIDTH + ACPI_PM1B_CNT_BLK_BIT_WIDTH) / 8) - -// -// Number of bytes decoded by PM2 control block -// -#define ACPI_PM2_CNT_LEN (ACPI_PM2_CNT_BLK_BIT_WIDTH / 8) - -// -// Number of bytes decoded by PM timer block -// -#define ACPI_PM_TMR_LEN (ACPI_PM_TMR_BLK_BIT_WIDTH / 8) - -// -// Number of bytes decoded by GPE0 block -// -#define ACPI_GPE0_BLK_LEN (ACPI_GPE0_BLK_BIT_WIDTH / 8) - -// -// Number of bytes decoded by GPE1 block -// -#define ACPI_GPE1_BLK_LEN 0 - -#endif diff -r 15b5cc51db30 -r 1bf4f15c5141 tools/firmware/acpi/acpi_gen.c --- a/tools/firmware/acpi/acpi_gen.c Tue Oct 31 11:44:47 2006 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,53 +0,0 @@ -/* - * Copyright (c) 2004, Intel Corporation. - * - * This program is free software; you can redistribute it and/or modify it - * under the terms and conditions of the GNU General Public License, - * version 2, as published by the Free Software Foundation. - * - * This program is distributed in the hope 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 - * this program; if not, write to the Free Software Foundation, Inc., 59 Temple - * Place - Suite 330, Boston, MA 02111-1307 USA. - * - */ -#include "acpi2_0.h" -#include <stdio.h> -#include <stdlib.h> -#include <unistd.h> - -#define USAGE "Usage: acpi_gen filename \n" \ - " generage acpitable and write to the binary \n" \ - " filename - the binary name\n" - -int main(int argc, char **argv) -{ - char *filename; - char buf[ACPI_TABLE_SIZE] = { 0 }; - FILE *f; - - if (argc < 2) { - fprintf(stderr,"%s",USAGE); - exit(1); - } - - filename = argv[1]; - - if ((f = fopen(filename, "w+")) == NULL) { - fprintf(stderr,"Can not open %s", filename); - exit(1); - } - - AcpiBuildTable((uint8_t *)buf); - - if (fwrite(buf, ACPI_TABLE_SIZE, 1, f) < 1) { - fprintf(stderr,"Can not write to %s\n", filename); - exit(1); - } - - return 0; -} diff -r 15b5cc51db30 -r 1bf4f15c5141 tools/firmware/acpi/acpi_madt.c --- a/tools/firmware/acpi/acpi_madt.c Tue Oct 31 11:44:47 2006 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,68 +0,0 @@ -/* - * Copyright (c) 2004, Intel Corporation. - * - * This program is free software; you can redistribute it and/or modify it - * under the terms and conditions of the GNU General Public License, - * version 2, as published by the Free Software Foundation. - * - * This program is distributed in the hope 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 - * this program; if not, write to the Free Software Foundation, Inc., 59 Temple - * Place - Suite 330, Boston, MA 02111-1307 USA. - * - */ -#include "acpi_madt.h" - -// -// Multiple APIC Description Table -// - -ACPI_MULTIPLE_APIC_DESCRIPTION_TABLE Madt = { - { - { - ACPI_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE, - sizeof (ACPI_MULTIPLE_APIC_DESCRIPTION_TABLE), - ACPI_2_0_MADT_REVISION, - 0x00, // Checksum - ACPI_OEM_ID, - ACPI_OEM_TABLE_ID, - ACPI_OEM_REVISION, - ACPI_CREATOR_ID, - ACPI_CREATOR_REVISION, - }, - ACPI_LOCAL_APIC_ADDRESS, - ACPI_MULTIPLE_APIC_FLAGS, - }, - - // - // IO APIC - // - { - { - ACPI_IO_APIC, - sizeof (ACPI_IO_APIC_STRUCTURE), - 0x00, - 0x00, - ACPI_IO_APIC_ADDRESS_1, - 0x0000 - } - }, - - // - // LOCAL APIC Entries for up to 32 processors. - // - { - { - ACPI_PROCESSOR_LOCAL_APIC, - sizeof (ACPI_LOCAL_APIC_STRUCTURE), - 0x00, - 0x00, - 0x00000001, - } - - } -}; diff -r 15b5cc51db30 -r 1bf4f15c5141 tools/firmware/acpi/acpi_madt.h --- a/tools/firmware/acpi/acpi_madt.h Tue Oct 31 11:44:47 2006 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,44 +0,0 @@ -/* - * Copyright (c) 2004, Intel Corporation. - * - * This program is free software; you can redistribute it and/or modify it - * under the terms and conditions of the GNU General Public License, - * version 2, as published by the Free Software Foundation. - * - * This program is distributed in the hope 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 - * this program; if not, write to the Free Software Foundation, Inc., 59 Temple - * Place - Suite 330, Boston, MA 02111-1307 USA. - * - */ -#ifndef _MADT_H_ -#define _MADT_H_ - -#include "acpi2_0.h" - -// -// MADT Definitions, see ACPI 2.0 specification for details -// - -#define ACPI_LOCAL_APIC_ADDRESS 0xFEE00000 - -#define ACPI_MULTIPLE_APIC_FLAGS (ACPI_PCAT_COMPAT) - -#define ACPI_IO_APIC_ADDRESS_1 0xFEC00000 - -// -// MADT structure -// -#pragma pack (1) -typedef struct { - ACPI_2_0_MADT Header; - ACPI_IO_APIC_STRUCTURE IoApic[1]; - ACPI_LOCAL_APIC_STRUCTURE LocalApic[32]; -} ACPI_MULTIPLE_APIC_DESCRIPTION_TABLE; -#pragma pack () - -#endif diff -r 15b5cc51db30 -r 1bf4f15c5141 tools/firmware/acpi/acpi_rsdt.c --- a/tools/firmware/acpi/acpi_rsdt.c Tue Oct 31 11:44:47 2006 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,68 +0,0 @@ -/* - * Copyright (c) 2004, Intel Corporation. - * - * This program is free software; you can redistribute it and/or modify it - * under the terms and conditions of the GNU General Public License, - * version 2, as published by the Free Software Foundation. - * - * This program is distributed in the hope 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 - * this program; if not, write to the Free Software Foundation, Inc., 59 Temple - * Place - Suite 330, Boston, MA 02111-1307 USA. - * - */ -#include "acpi2_0.h" - -ACPI_2_0_RSDT Rsdt={ - { - ACPI_2_0_RSDT_SIGNATURE, - sizeof (ACPI_TABLE_HEADER), // udpated later - ACPI_2_0_RSDT_REVISION, - 0x0, //Checksum, updated later - ACPI_OEM_ID, - ACPI_OEM_TABLE_ID, - ACPI_OEM_REVISION, - ACPI_CREATOR_ID, - ACPI_CREATOR_REVISION, - }, - {0x0, 0x0} -}; - -ACPI_2_0_XSDT Xsdt={ - { - ACPI_2_0_XSDT_SIGNATURE, - sizeof (ACPI_TABLE_HEADER), //update later - ACPI_2_0_XSDT_REVISION, - 0x0, //Checksum, update later - ACPI_OEM_ID, - ACPI_OEM_TABLE_ID, - ACPI_OEM_REVISION, - ACPI_CREATOR_ID, - ACPI_CREATOR_REVISION, - }, - {0x0, 0x0}, -}; - - -ACPI_2_0_RSDP Rsdp={ - ACPI_2_0_RSDP_SIGNATURE, - 0x00, // Checksum, updated in later - ACPI_OEM_ID, // OEM ID, - ACPI_OEM_REVISION, - 0x0, // RSDT address, updated later - sizeof (ACPI_2_0_RSDP), - 0x0, // XSDT address, updated later - 0x0, // Extended Checksum, update later - { - 0x0, // Reserved - 0x0, // Reserved - 0x0, // Reserved - } -}; - - - _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |