From 55d7ff9ea2cd95aa5bae0c7e65409712efacbb7d Mon Sep 17 00:00:00 2001 From: Nate Lawson Date: Wed, 10 Sep 2003 23:52:12 +0000 Subject: [PATCH] Add dumping of the ECDT table. Courtesy of: USENIX hall track --- usr.sbin/acpi/acpidump/acpi.c | 20 ++++++++++++++++++++ usr.sbin/acpi/acpidump/acpidump.h | 9 +++++++++ 2 files changed, 29 insertions(+) diff --git a/usr.sbin/acpi/acpidump/acpi.c b/usr.sbin/acpi/acpidump/acpi.c index 92be215f2c8f..830e93c2f56f 100644 --- a/usr.sbin/acpi/acpidump/acpi.c +++ b/usr.sbin/acpi/acpidump/acpi.c @@ -337,6 +337,24 @@ acpi_handle_hpet(struct ACPIsdt *sdp) printf(END_COMMENT); } +static void +acpi_handle_ecdt(struct ACPIsdt *sdp) +{ + struct ECDTbody *ecdt; + + printf(BEGIN_COMMENT); + acpi_print_sdt(sdp); + ecdt = (struct ECDTbody *) sdp->body; + printf("\tEC_CONTROL="); + acpi_print_gas(&ecdt->ec_control); + printf("\n\tEC_DATA="); + acpi_print_gas(&ecdt->ec_data); + printf("\n\tUID=%#x, ", ecdt->uid); + printf("GPE_BIT=%#x\n", ecdt->gpe_bit); + printf("\tEC_ID=%s\n", ecdt->ec_id); + printf(END_COMMENT); +} + static void acpi_print_sdt(struct ACPIsdt *sdp) { @@ -626,6 +644,8 @@ acpi_handle_rsdt(struct ACPIsdt *rsdp) acpi_handle_apic(sdp); else if (!memcmp(sdp->signature, "HPET", 4)) acpi_handle_hpet(sdp); + else if (!memcmp(sdp->signature, "ECDT", 4)) + acpi_handle_ecdt(sdp); else { printf(BEGIN_COMMENT); acpi_print_sdt(sdp); diff --git a/usr.sbin/acpi/acpidump/acpidump.h b/usr.sbin/acpi/acpidump/acpidump.h index 783fc6dd2cca..0d13adc53823 100644 --- a/usr.sbin/acpi/acpidump/acpidump.h +++ b/usr.sbin/acpi/acpidump/acpidump.h @@ -284,6 +284,15 @@ struct HPETbody { u_int16_t clock_tick __packed; } __packed; +/* Embedded Controller Description Table */ +struct ECDTbody { + struct ACPIgas ec_control; /* Control register */ + struct ACPIgas ec_data; /* Data register */ + uint32_t uid; /* Same value as _UID in namespace */ + uint8_t gpe_bit; /* GPE bit for the EC */ + u_char ec_id[1]; /* Variable length name string */ +} __packed; + /* Find and map the RSD PTR structure and return it for parsing */ struct ACPIsdt *sdt_load_devmem(void);