From 755dd63262f1613baf07d1edcb64720f55ab0d55 Mon Sep 17 00:00:00 2001 From: msaitoh Date: Mon, 5 Nov 2018 07:39:57 +0000 Subject: [PATCH] Decode Boot Graghics Resource Table (BGRT). --- usr.sbin/acpitools/acpidump/acpi.c | 38 ++++++++++++++++++++++++-- usr.sbin/acpitools/acpidump/acpidump.8 | 5 ++-- 2 files changed, 39 insertions(+), 4 deletions(-) diff --git a/usr.sbin/acpitools/acpidump/acpi.c b/usr.sbin/acpitools/acpidump/acpi.c index 99e83920d947..63b52ae03d5f 100644 --- a/usr.sbin/acpitools/acpidump/acpi.c +++ b/usr.sbin/acpitools/acpidump/acpi.c @@ -1,4 +1,4 @@ -/* $NetBSD: acpi.c,v 1.39 2018/11/01 03:08:46 msaitoh Exp $ */ +/* $NetBSD: acpi.c,v 1.40 2018/11/05 07:39:57 msaitoh Exp $ */ /*- * Copyright (c) 1998 Doug Rabson @@ -30,7 +30,7 @@ */ #include -__RCSID("$NetBSD: acpi.c,v 1.39 2018/11/01 03:08:46 msaitoh Exp $"); +__RCSID("$NetBSD: acpi.c,v 1.40 2018/11/05 07:39:57 msaitoh Exp $"); #include #include @@ -86,6 +86,7 @@ static void acpi_print_intr(uint32_t intr, uint16_t mps_flags); static void acpi_print_local_nmi(u_int lint, uint16_t mps_flags); static void acpi_print_madt(ACPI_SUBTABLE_HEADER *mp); static void acpi_handle_bert(ACPI_TABLE_HEADER *sdp); +static void acpi_handle_bgrt(ACPI_TABLE_HEADER *sdp); static void acpi_handle_boot(ACPI_TABLE_HEADER *sdp); static void acpi_handle_cpep(ACPI_TABLE_HEADER *sdp); static void acpi_handle_csrt(ACPI_TABLE_HEADER *sdp); @@ -1221,6 +1222,37 @@ acpi_handle_bert(ACPI_TABLE_HEADER *sdp) printf(END_COMMENT); } +static void +acpi_handle_bgrt(ACPI_TABLE_HEADER *sdp) +{ + ACPI_TABLE_BGRT *bgrt; + unsigned int degree; + + printf(BEGIN_COMMENT); + acpi_print_sdt(sdp); + bgrt = (ACPI_TABLE_BGRT *)sdp; + + printf("\tVersion=%hu\n", bgrt->Version); + degree = ((unsigned int)(bgrt->Status & ACPI_BGRT_ORIENTATION_OFFSET) + >> 1) * 90; + printf("\tDegree=%u\n", degree); + printf("\tDisplayed=%hhu\n", bgrt->Status & ACPI_BGRT_DISPLAYED); + printf("\tImage Type="); + switch (bgrt->ImageType) { + case 0: + printf("Bitmap\n"); + break; + default: + printf("reserved (0x%hhx)\n", bgrt->ImageType); + break; + } + printf("\tImage Address=0x%"PRIx64"\n", bgrt->ImageAddress); + printf("\tImage Offset X=0x%08x\n", bgrt->ImageOffsetX); + printf("\tImage Offset Y=0x%08x\n", bgrt->ImageOffsetY); + + printf(END_COMMENT); +} + static void acpi_handle_boot(ACPI_TABLE_HEADER *sdp) { @@ -3896,6 +3928,8 @@ acpi_handle_rsdt(ACPI_TABLE_HEADER *rsdp) acpi_handle_fadt(sdp); else if (!memcmp(sdp->Signature, ACPI_SIG_BERT, 4)) acpi_handle_bert(sdp); + else if (!memcmp(sdp->Signature, ACPI_SIG_BGRT, 4)) + acpi_handle_bgrt(sdp); else if (!memcmp(sdp->Signature, ACPI_SIG_BOOT, 4)) acpi_handle_boot(sdp); else if (!memcmp(sdp->Signature, ACPI_SIG_CPEP, 4)) diff --git a/usr.sbin/acpitools/acpidump/acpidump.8 b/usr.sbin/acpitools/acpidump/acpidump.8 index e781b035f41d..256d7fc12c62 100644 --- a/usr.sbin/acpitools/acpidump/acpidump.8 +++ b/usr.sbin/acpitools/acpidump/acpidump.8 @@ -1,4 +1,4 @@ -.\" $NetBSD: acpidump.8,v 1.13 2018/11/01 03:08:46 msaitoh Exp $ +.\" $NetBSD: acpidump.8,v 1.14 2018/11/05 07:39:57 msaitoh Exp $ .\" ACPI (ACPI Package) .\" .\" Copyright (c) 1999 Doug Rabson @@ -30,7 +30,7 @@ .\" .\" $FreeBSD: head/usr.sbin/acpi/acpidump/acpidump.8 267668 2014-06-20 09:57:27Z bapt $ .\" -.Dd November 1, 2018 +.Dd November 5, 2018 .Dt ACPIDUMP 8 .Os .Sh NAME @@ -97,6 +97,7 @@ utility dumps contents of the following tables: .Bl -tag -offset indent -width 12345 -compact .It APIC .It BERT +.It BGRT .It BOOT .It CPEP .It CSRT