git: ca9e31eead41 - main - Revert "apcidump: Add dumping SPCR"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Fri, 11 Oct 2024 18:06:59 UTC
The branch main has been updated by imp: URL: https://cgit.FreeBSD.org/src/commit/?id=ca9e31eead41ff1b5d2fcf8989ab527c89485a90 commit ca9e31eead41ff1b5d2fcf8989ab527c89485a90 Author: Warner Losh <imp@FreeBSD.org> AuthorDate: 2024-10-11 17:52:59 +0000 Commit: Warner Losh <imp@FreeBSD.org> CommitDate: 2024-10-11 18:06:33 +0000 Revert "apcidump: Add dumping SPCR" This reverts commit 593d7a1634b5: In preparation for importing new SPCR definitions, back out my hack since it conflicts with the new definitions. Sponsored by: Netflix --- usr.sbin/acpi/acpidump/acpi.c | 170 +------------------------------------- usr.sbin/acpi/acpidump/acpidump.8 | 1 - 2 files changed, 3 insertions(+), 168 deletions(-) diff --git a/usr.sbin/acpi/acpidump/acpi.c b/usr.sbin/acpi/acpidump/acpi.c index 95ecb42825eb..fe68b5062351 100644 --- a/usr.sbin/acpi/acpidump/acpi.c +++ b/usr.sbin/acpi/acpidump/acpi.c @@ -1257,180 +1257,18 @@ acpi_handle_tcpa(ACPI_TABLE_HEADER *sdp) printf(END_COMMENT); } - static void acpi_handle_tpm2(ACPI_TABLE_HEADER *sdp) { ACPI_TABLE_TPM2 *tpm2; - + printf (BEGIN_COMMENT); acpi_print_sdt(sdp); tpm2 = (ACPI_TABLE_TPM2 *) sdp; printf ("\t\tControlArea=%jx\n", tpm2->ControlAddress); - printf ("\t\tStartMethod=%x\n", tpm2->StartMethod); - printf (END_COMMENT); -} - -static int spcr_xlate_baud(uint8_t r) -{ - static int rates[] = { 9600, 19200, -1, 57600, 115200 }; - _Static_assert(nitems(rates) == 7 - 3 + 1, "rates array size incorrect"); - - if (r == 0) - return (0); - - if (r < 3 || r > 7) - return (-1); - - return (rates[r - 3]); -} - -static const char *spcr_interface_type(int ift) -{ - static const char *if_names[] = { - [0x00] = "Fully 16550-compatible", - [0x01] = "16550 subset compatible with DBGP Revision 1", - [0x02] = "MAX311xE SPI UART", - [0x03] = "Arm PL011 UART", - [0x04] = "MSM8x60 (e.g. 8960)", - [0x05] = "Nvidia 16550", - [0x06] = "TI OMAP", - [0x07] = "Reserved (Do Not Use)", - [0x08] = "APM88xxxx", - [0x09] = "MSM8974", - [0x0a] = "SAM5250", - [0x0b] = "Intel USIF", - [0x0c] = "i.MX 6", - [0x0d] = "(deprecated) Arm SBSA (2.x only) Generic UART supporting only 32-bit accesses", - [0x0e] = "Arm SBSA Generic UART", - [0x0f] = "Arm DCC", - [0x10] = "BCM2835", - [0x11] = "SDM845 with clock rate of 1.8432 MHz", - [0x12] = "16550-compatible with parameters defined in Generic Address Structure", - [0x13] = "SDM845 with clock rate of 7.372 MHz", - [0x14] = "Intel LPSS", - [0x15] = "RISC-V SBI console (any supported SBI mechanism)", - }; - - if (ift >= (int)nitems(if_names) || if_names[ift] == NULL) - return ("Reserved"); - return (if_names[ift]); -} - -static const char *spcr_interrupt_type(int ift) -{ - static char buf[100]; - -#define APPEND(b,s) \ - if ((ift & (b)) != 0) { \ - if (strlen(buf) > 0) \ - strlcat(buf, ",", sizeof(buf)); \ - strlcat(buf, s, sizeof(buf)); \ - } - - *buf = '\0'; - APPEND(0x01, "PC/AT IRQ"); - APPEND(0x02, "I/O APIC"); - APPEND(0x04, "I/O SAPIC"); - APPEND(0x08, "ARMH GIC"); - APPEND(0x10, "RISC-V PLIC/APLIC"); - -#undef APPEND - - return (buf); -} - -static const char *spcr_terminal_type(int type) -{ - static const char *term_names[] = { - [0] = "VT100", - [1] = "Extended VT100", - [2] = "VT-UTF8", - [3] = "ANSI", - }; - - if (type >= (int)nitems(term_names) || term_names[type] == NULL) - return ("Reserved"); - return (term_names[type]); -} - -/* - * Serial Port Console Redirection version 3 and 4 are too new to have proper - * definitions in ACPI headers, so provide them. - */ -#pragma pack(1) -struct SPCR_3 -{ - ACPI_TABLE_SPCR spcr2; - UINT32 UARTClockFrequency; -}; - -struct SPCR_4 -{ - struct SPCR_3 spcr3; - UINT32 PreciseBaudRate; - UINT16 NamespaceStringLength; - UINT16 NamespaceStringOffset; -}; -#pragma pack() - -static void acpi_handle_spcr(ACPI_TABLE_HEADER *sdp) -{ - ACPI_TABLE_SPCR *spcr; - - printf (BEGIN_COMMENT); - acpi_print_sdt(sdp); - - /* Rev 1 and 2 are the same size */ - spcr = (ACPI_TABLE_SPCR *) sdp; - printf ("\tInterfaceType=%d (%s)\n", spcr->InterfaceType, - spcr_interface_type(spcr->InterfaceType)); - printf ("\tSerialPort="); - acpi_print_gas(&spcr->SerialPort); - printf ("\n\tInterruptType=%#x (%s)\n", spcr->InterruptType, - spcr_interrupt_type(spcr->InterruptType)); - printf ("\tPcInterrupt=%d (%s)\n", spcr->PcInterrupt, - (spcr->InterruptType & 0x1) ? "Valid" : "Invalid"); - printf ("\tInterrupt=%d\n", spcr->Interrupt); - printf ("\tBaudRate=%d (%d)\n", spcr_xlate_baud(spcr->BaudRate), spcr->BaudRate); - printf ("\tParity=%d\n", spcr->Parity); - printf ("\tStopBits=%d\n", spcr->StopBits); - printf ("\tFlowControl=%d\n", spcr->FlowControl); - printf ("\tTerminalType=%d (%s)\n", spcr->TerminalType, - spcr_terminal_type(spcr->TerminalType)); - printf ("\tPciDeviceId=%#04x\n", spcr->PciDeviceId); - printf ("\tPciVendorId=%#04x\n", spcr->PciVendorId); - printf ("\tPciBus=%d\n", spcr->PciBus); - printf ("\tPciDevice=%d\n", spcr->PciDevice); - printf ("\tPciFunction=%d\n", spcr->PciFunction); - printf ("\tPciFlags=%d\n", spcr->PciFlags); - printf ("\tPciSegment=%d\n", spcr->PciSegment); - - /* Rev 3 added UARTClockFrequency */ - if (sdp->Revision >= 3) { - struct SPCR_3 *spcr3 = (struct SPCR_3 *)sdp; - - printf("\tUARTClockFrequency=%jd", - (uintmax_t)spcr3->UARTClockFrequency); - } - - /* Rev 4 added PreciseBaudRate and Namespace* */ - if (sdp->Revision >= 4) { - struct SPCR_4 *spcr4 = (struct SPCR_4 *)sdp; - - printf("\tPreciseBaudRate=%jd", - (uintmax_t)spcr4->PreciseBaudRate); - if (spcr4->NamespaceStringLength > 0 && - spcr4->NamespaceStringOffset >= sizeof(*spcr4) && - sdp->Length >= spcr4->NamespaceStringOffset + - spcr4->NamespaceStringLength) { - printf ("\tNamespaceString='%s'\n", - (char *)sdp + spcr4->NamespaceStringOffset); - } - } - + printf ("\t\tStartMethod=%x\n", tpm2->StartMethod); printf (END_COMMENT); } - + static const char * devscope_type2str(int type) { @@ -2630,8 +2468,6 @@ acpi_handle_rsdt(ACPI_TABLE_HEADER *rsdp) acpi_handle_lpit(sdp); else if (!memcmp(sdp->Signature, ACPI_SIG_TPM2, 4)) acpi_handle_tpm2(sdp); - else if (!memcmp(sdp->Signature, ACPI_SIG_SPCR, 4)) - acpi_handle_spcr(sdp); else { printf(BEGIN_COMMENT); acpi_print_sdt(sdp); diff --git a/usr.sbin/acpi/acpidump/acpidump.8 b/usr.sbin/acpi/acpidump/acpidump.8 index 9703741f418f..f193b9a3511a 100644 --- a/usr.sbin/acpi/acpidump/acpidump.8 +++ b/usr.sbin/acpi/acpidump/acpidump.8 @@ -112,7 +112,6 @@ utility dumps contents of the following tables: .It RSD PTR .It RSDT .It SLIT -.It SPCR Serial Port Console Redirection .It SRAT .It TCPA .It TPM2