From patchwork Thu Dec 12 14:57:03 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Colin Ian King X-Patchwork-Id: 300677 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) by ozlabs.org (Postfix) with ESMTP id 5E7682C0095 for ; Fri, 13 Dec 2013 01:57:15 +1100 (EST) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.76) (envelope-from ) id 1Vr7hR-0004Ha-4X; Thu, 12 Dec 2013 14:57:13 +0000 Received: from youngberry.canonical.com ([91.189.89.112]) by huckleberry.canonical.com with esmtp (Exim 4.76) (envelope-from ) id 1Vr7hL-0004HL-06 for fwts-devel@lists.ubuntu.com; Thu, 12 Dec 2013 14:57:07 +0000 Received: from cpc3-craw6-2-0-cust180.croy.cable.virginm.net ([77.100.248.181] helo=localhost) by youngberry.canonical.com with esmtpsa (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1Vr7hK-0007cX-T7 for fwts-devel@lists.ubuntu.com; Thu, 12 Dec 2013 14:57:06 +0000 From: Colin King To: fwts-devel@lists.ubuntu.com Subject: [PATCH 1/3] acpi: acpidump: add SPCR table (LP: #1260351) Date: Thu, 12 Dec 2013 14:57:03 +0000 Message-Id: <1386860225-1666-1-git-send-email-colin.king@canonical.com> X-Mailer: git-send-email 1.8.5.1 X-BeenThere: fwts-devel@lists.ubuntu.com X-Mailman-Version: 2.1.14 Precedence: list List-Id: Firmware Test Suite Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: fwts-devel-bounces@lists.ubuntu.com Sender: fwts-devel-bounces@lists.ubuntu.com From: Colin Ian King Add support for the Serial Port Console Redirection Table Signed-off-by: Colin Ian King Acked-by: Ivan Hu Acked-by: Keng-Yu Lin Acked-by: Keng-Yu Lin --- src/acpi/acpidump/acpidump.c | 35 +++++++++++++++++++++++++++++++++++ src/lib/include/fwts_acpi.h | 24 ++++++++++++++++++++++++ 2 files changed, 59 insertions(+) diff --git a/src/acpi/acpidump/acpidump.c b/src/acpi/acpidump/acpidump.c index 240f6a9..2114134 100644 --- a/src/acpi/acpidump/acpidump.c +++ b/src/acpi/acpidump/acpidump.c @@ -1679,6 +1679,40 @@ static void acpidump_pcct(fwts_framework *fw, const fwts_acpi_table_info *table) } } +/* + * acpidump_spcr() + * dump spcr, Serial Port Console Redirection Table + */ +static void acpidump_spcr(fwts_framework *fw, const fwts_acpi_table_info *table) +{ + static const fwts_acpidump_field spcr_fields[] = { + FIELD_UINT("Interface Type", fwts_acpi_table_spcr, interface_type), + FIELD_UINT("Reserved", fwts_acpi_table_spcr, reserved1), + FIELD_GAS ("Base Address", fwts_acpi_table_spcr, base_address), + FIELD_UINT("Interrupt Type", fwts_acpi_table_spcr, interrupt_type), + FIELD_UINT("IRQ", fwts_acpi_table_spcr, irq), + FIELD_UINT("Global System Interrupt", fwts_acpi_table_spcr, gsi), + FIELD_UINT("Baud Rate", fwts_acpi_table_spcr, baud_rate), + FIELD_UINT("Parity", fwts_acpi_table_spcr, parity), + FIELD_UINT("Stop Bits", fwts_acpi_table_spcr, stop_bits), + FIELD_UINT("Flow Control", fwts_acpi_table_spcr, flow_control), + FIELD_UINT("Terminal Type", fwts_acpi_table_spcr, terminal_type), + FIELD_UINT("Reserved", fwts_acpi_table_spcr, reserved2), + FIELD_UINT("PCI Device ID", fwts_acpi_table_spcr, pci_device_id), + FIELD_UINT("PCI Vendor ID", fwts_acpi_table_spcr, pci_vendor_id), + FIELD_UINT("PCI Bus Number", fwts_acpi_table_spcr, pci_bus_number), + FIELD_UINT("PCI Device Number", fwts_acpi_table_spcr, pci_device_number), + FIELD_UINT("PCI Function Number", fwts_acpi_table_spcr, pci_function_number), + FIELD_UINT("PCI Flags", fwts_acpi_table_spcr, pci_flags), + FIELD_UINT("PCI Segment", fwts_acpi_table_spcr, pci_segment), + FIELD_UINT("Reserved", fwts_acpi_table_spcr, reserved3), + FIELD_END + }; + + acpi_dump_table_fields(fw, table->data, spcr_fields, 0, table->length); +} + + typedef struct { const char *name; void (*func)(fwts_framework *fw, const fwts_acpi_table_info *table); @@ -1718,6 +1752,7 @@ static const acpidump_table_vec table_vec[] = { { "RSDT", acpidump_rsdt, 1 }, { "RSD PTR ", acpidump_rsdp, 0 }, { "SBST", acpidump_sbst, 1 }, + { "SPCR", acpidump_spcr, 1 }, { "SSDT", acpidump_amlcode, 1 }, { "SLIT", acpidump_slit, 1 }, { "SLIC", acpidump_slic, 1 }, diff --git a/src/lib/include/fwts_acpi.h b/src/lib/include/fwts_acpi.h index d466d32..171bdc4 100644 --- a/src/lib/include/fwts_acpi.h +++ b/src/lib/include/fwts_acpi.h @@ -681,6 +681,30 @@ typedef struct { uint16_t min_request_turnaround_time; } __attribute__ ((packed)) fwts_acpi_table_pcct_subspace_type_0; +typedef struct { + fwts_acpi_table_header header; + uint8_t interface_type; + uint8_t reserved1[3]; + fwts_acpi_gas base_address; + uint8_t interrupt_type; + uint8_t irq; + uint32_t gsi; + uint8_t baud_rate; + uint8_t parity; + uint8_t stop_bits; + uint8_t flow_control; + uint8_t terminal_type; + uint8_t reserved2; + uint16_t pci_device_id; + uint16_t pci_vendor_id; + uint8_t pci_bus_number; + uint8_t pci_device_number; + uint8_t pci_function_number; + uint32_t pci_flags; + uint8_t pci_segment; + uint32_t reserved3; +} __attribute__ ((packed)) fwts_acpi_table_spcr; + void fwts_acpi_table_get_header(fwts_acpi_table_header *hdr, uint8_t *data); #endif