Module Name:    src
Committed By:   jmcneill
Date:           Sun Dec 13 20:24:26 UTC 2020

Modified Files:
        src/sys/arch/arm/acpi: acpi_machdep.c
        src/sys/dev/acpi: acpi.c

Log Message:
Add MI support for attaching drivers to arbitrary System Description
Tables.


To generate a diff of this commit:
cvs rdiff -u -r1.20 -r1.21 src/sys/arch/arm/acpi/acpi_machdep.c
cvs rdiff -u -r1.287 -r1.288 src/sys/dev/acpi/acpi.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/arm/acpi/acpi_machdep.c
diff -u src/sys/arch/arm/acpi/acpi_machdep.c:1.20 src/sys/arch/arm/acpi/acpi_machdep.c:1.21
--- src/sys/arch/arm/acpi/acpi_machdep.c:1.20	Sat Oct 24 07:08:22 2020
+++ src/sys/arch/arm/acpi/acpi_machdep.c	Sun Dec 13 20:24:26 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: acpi_machdep.c,v 1.20 2020/10/24 07:08:22 skrll Exp $ */
+/* $NetBSD: acpi_machdep.c,v 1.21 2020/12/13 20:24:26 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2018 The NetBSD Foundation, Inc.
@@ -32,7 +32,7 @@
 #include "pci.h"
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: acpi_machdep.c,v 1.20 2020/10/24 07:08:22 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: acpi_machdep.c,v 1.21 2020/12/13 20:24:26 jmcneill Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -346,8 +346,6 @@ acpi_md_mcfg_bs_map(void *t, bus_addr_t 
 void
 acpi_md_callback(struct acpi_softc *sc)
 {
-	ACPI_TABLE_HEADER *hdrp;
-
 #if NPCI > 0
 	acpi_md_mcfg_bs_tag = arm_generic_bs_tag;
 	acpi_md_mcfg_bs_tag.bs_map = acpi_md_mcfg_bs_map;
@@ -364,9 +362,6 @@ acpi_md_callback(struct acpi_softc *sc)
 		panic("Failed to map GTDT");
 	acpi_gtdt_walk(acpi_md_gtdt_probe, sc);
 	acpi_gtdt_unmap();
-
-	if (ACPI_SUCCESS(AcpiGetTable(ACPI_SIG_GTDT, 0, &hdrp)))
-		config_found_ia(sc->sc_dev, "acpisdtbus", hdrp, NULL);
 }
 
 static const char * const module_hid[] = {

Index: src/sys/dev/acpi/acpi.c
diff -u src/sys/dev/acpi/acpi.c:1.287 src/sys/dev/acpi/acpi.c:1.288
--- src/sys/dev/acpi/acpi.c:1.287	Mon Dec  7 10:57:41 2020
+++ src/sys/dev/acpi/acpi.c	Sun Dec 13 20:24:26 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: acpi.c,v 1.287 2020/12/07 10:57:41 jmcneill Exp $	*/
+/*	$NetBSD: acpi.c,v 1.288 2020/12/13 20:24:26 jmcneill Exp $	*/
 
 /*-
  * Copyright (c) 2003, 2007 The NetBSD Foundation, Inc.
@@ -100,7 +100,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: acpi.c,v 1.287 2020/12/07 10:57:41 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: acpi.c,v 1.288 2020/12/13 20:24:26 jmcneill Exp $");
 
 #include "pci.h"
 #include "opt_acpi.h"
@@ -430,8 +430,9 @@ acpi_attach(device_t parent, device_t se
 {
 	struct acpi_softc *sc = device_private(self);
 	struct acpibus_attach_args *aa = aux;
-	ACPI_TABLE_HEADER *rsdt;
+	ACPI_TABLE_HEADER *rsdt, *hdr;
 	ACPI_STATUS rv;
+	int i;
 
 	aprint_naive("\n");
 	aprint_normal(": Intel ACPICA %08x\n", ACPI_CA_VERSION);
@@ -543,6 +544,18 @@ acpi_attach(device_t parent, device_t se
 		acpi_register_fixed_button(sc, ACPI_EVENT_SLEEP_BUTTON);
 	}
 
+	/*
+	 * Load drivers that operate on System Description Tables.
+	 */
+	for (i = 0; i < AcpiGbl_RootTableList.CurrentTableCount; ++i) {
+		rv = AcpiGetTableByIndex(i, &hdr);
+		if (ACPI_FAILURE(rv)) {
+			continue;
+		}
+		config_found_ia(sc->sc_dev, "acpisdtbus", hdr, NULL);
+		AcpiPutTable(hdr);
+	}
+
 	acpitimer_init(sc);
 	acpi_config_tree(sc);
 	acpi_sleep_init(sc);

Reply via email to