Diff below moves the attach glue from acpi.c into acpi_machdep.c.
Gets rid of an #ifdef and helps me avoid an ugly hack on arm64.  There
is some additional code duplication, but I think this is acceptable.

ok?


Index: arch/amd64/amd64/acpi_machdep.c
===================================================================
RCS file: /cvs/src/sys/arch/amd64/amd64/acpi_machdep.c,v
retrieving revision 1.82
diff -u -p -r1.82 acpi_machdep.c
--- arch/amd64/amd64/acpi_machdep.c     25 Jun 2018 22:33:24 -0000      1.82
+++ arch/amd64/amd64/acpi_machdep.c     1 Jul 2018 14:56:50 -0000
@@ -32,11 +32,12 @@
 
 #include <machine/cpuvar.h>
 
-#include <dev/isa/isareg.h>
 #include <dev/acpi/acpireg.h>
 #include <dev/acpi/acpivar.h>
 #include <dev/acpi/acpidev.h>
 #include <dev/acpi/dsdt.h>
+#include <dev/isa/isareg.h>
+#include <dev/pci/pcivar.h>
 
 #include "isa.h"
 #include "ioapic.h"
@@ -63,6 +64,42 @@ extern int acpi_savecpu(void) __returns_
 #define ACPI_BIOS_RSDP_WINDOW_SIZE        0x20000
 
 u_int8_t       *acpi_scan(struct acpi_mem_map *, paddr_t, size_t);
+
+int    acpi_match(struct device *, void *, void *);
+void   acpi_attach(struct device *, struct device *, void *);
+
+struct cfattach acpi_ca = {
+       sizeof(struct acpi_softc), acpi_match, acpi_attach
+};
+
+int
+acpi_match(struct device *parent, void *match, void *aux)
+{
+       struct bios_attach_args *ba = aux;
+       struct cfdata           *cf = match;
+
+       /* sanity */
+       if (strcmp(ba->ba_name, cf->cf_driver->cd_name))
+               return (0);
+
+       if (!acpi_probe(parent, cf, ba))
+               return (0);
+
+       return (1);
+}
+
+void
+acpi_attach(struct device *parent, struct device *self, void *aux)
+{
+       struct acpi_softc *sc = (struct acpi_softc *)self;
+       struct bios_attach_args *ba = aux;
+
+       sc->sc_iot = ba->ba_iot;
+       sc->sc_memt = ba->ba_memt;
+       sc->sc_dmat = &pci_bus_dma_tag;
+
+       acpi_attach_common(sc, ba->ba_acpipbase);
+}
 
 int
 acpi_map(paddr_t pa, size_t len, struct acpi_mem_map *handle)
Index: arch/amd64/conf/files.amd64
===================================================================
RCS file: /cvs/src/sys/arch/amd64/conf/files.amd64,v
retrieving revision 1.95
diff -u -p -r1.95 files.amd64
--- arch/amd64/conf/files.amd64 25 Jan 2018 15:06:29 -0000      1.95
+++ arch/amd64/conf/files.amd64 1 Jul 2018 14:56:50 -0000
@@ -232,6 +232,7 @@ include "dev/gpio/files.gpio"
 # ACPI
 #
 include "dev/acpi/files.acpi"
+attach acpi at bios
 file   arch/amd64/amd64/acpi_machdep.c         acpi
 file   arch/amd64/amd64/acpi_wakecode.S        acpi & !small_kernel
 
Index: arch/i386/conf/files.i386
===================================================================
RCS file: /cvs/src/sys/arch/i386/conf/files.i386,v
retrieving revision 1.237
diff -u -p -r1.237 files.i386
--- arch/i386/conf/files.i386   25 Jan 2018 15:06:29 -0000      1.237
+++ arch/i386/conf/files.i386   1 Jul 2018 14:56:50 -0000
@@ -389,6 +389,7 @@ include "dev/onewire/files.onewire"
 include "dev/sdmmc/files.sdmmc"
 
 include "dev/acpi/files.acpi"
+attach acpi at bios
 file   arch/i386/i386/acpi_machdep.c           acpi
 file   arch/i386/i386/acpi_wakecode.S          acpi & !small_kernel
 
Index: arch/i386/i386/acpi_machdep.c
===================================================================
RCS file: /cvs/src/sys/arch/i386/i386/acpi_machdep.c,v
retrieving revision 1.66
diff -u -p -r1.66 acpi_machdep.c
--- arch/i386/i386/acpi_machdep.c       25 Jun 2018 22:33:24 -0000      1.66
+++ arch/i386/i386/acpi_machdep.c       1 Jul 2018 14:56:50 -0000
@@ -39,10 +39,11 @@
 #include <machine/cpuvar.h>
 #include <machine/npx.h>
 
-#include <dev/isa/isareg.h>
 #include <dev/acpi/acpireg.h>
 #include <dev/acpi/acpivar.h>
 #include <dev/acpi/acpidev.h>
+#include <dev/isa/isareg.h>
+#include <dev/pci/pcivar.h>
 
 #include "apm.h"
 #include "isa.h"
@@ -73,6 +74,42 @@ extern void intr_calculatemasks(void);
 #define ACPI_BIOS_RSDP_WINDOW_SIZE        0x20000
 
 u_int8_t       *acpi_scan(struct acpi_mem_map *, paddr_t, size_t);
+
+int    acpi_match(struct device *, void *, void *);
+void   acpi_attach(struct device *, struct device *, void *);
+
+struct cfattach acpi_ca = {
+       sizeof(struct acpi_softc), acpi_match, acpi_attach
+};
+
+int
+acpi_match(struct device *parent, void *match, void *aux)
+{
+       struct bios_attach_args *ba = aux;
+       struct cfdata           *cf = match;
+
+       /* sanity */
+       if (strcmp(ba->ba_name, cf->cf_driver->cd_name))
+               return (0);
+
+       if (!acpi_probe(parent, cf, ba))
+               return (0);
+
+       return (1);
+}
+
+void
+acpi_attach(struct device *parent, struct device *self, void *aux)
+{
+       struct acpi_softc *sc = (struct acpi_softc *)self;
+       struct bios_attach_args *ba = aux;
+
+       sc->sc_iot = ba->ba_iot;
+       sc->sc_memt = ba->ba_memt;
+       sc->sc_dmat = &pci_bus_dma_tag;
+
+       acpi_attach_common(sc, ba->ba_acpipbase);
+}
 
 int
 acpi_map(paddr_t pa, size_t len, struct acpi_mem_map *handle)
Index: dev/acpi/acpi.c
===================================================================
RCS file: /cvs/src/sys/dev/acpi/acpi.c,v
retrieving revision 1.351
diff -u -p -r1.351 acpi.c
--- dev/acpi/acpi.c     1 Jul 2018 10:27:34 -0000       1.351
+++ dev/acpi/acpi.c     1 Jul 2018 14:56:51 -0000
@@ -205,48 +205,6 @@ struct cfdriver acpi_cd = {
        NULL, "acpi", DV_DULL
 };
 
-#if defined(__amd64__) || defined(__i386__)
-
-#include <machine/biosvar.h>
-
-int    acpi_match(struct device *, void *, void *);
-void   acpi_attach(struct device *, struct device *, void *);
-
-struct cfattach acpi_ca = {
-       sizeof(struct acpi_softc), acpi_match, acpi_attach
-};
-
-int
-acpi_match(struct device *parent, void *match, void *aux)
-{
-       struct bios_attach_args *ba = aux;
-       struct cfdata           *cf = match;
-
-       /* sanity */
-       if (strcmp(ba->ba_name, cf->cf_driver->cd_name))
-               return (0);
-
-       if (!acpi_probe(parent, cf, ba))
-               return (0);
-
-       return (1);
-}
-
-void
-acpi_attach(struct device *parent, struct device *self, void *aux)
-{
-       struct acpi_softc *sc = (struct acpi_softc *)self;
-       struct bios_attach_args *ba = aux;
-
-       sc->sc_iot = ba->ba_iot;
-       sc->sc_memt = ba->ba_memt;
-       sc->sc_dmat = &pci_bus_dma_tag;
-
-       acpi_attach_common(sc, ba->ba_acpipbase);
-}
-
-#endif
-
 uint8_t
 acpi_pci_conf_read_1(pci_chipset_tag_t pc, pcitag_t tag, int reg)
 {
Index: dev/acpi/files.acpi
===================================================================
RCS file: /cvs/src/sys/dev/acpi/files.acpi,v
retrieving revision 1.45
diff -u -p -r1.45 files.acpi
--- dev/acpi/files.acpi 1 Jul 2018 10:29:30 -0000       1.45
+++ dev/acpi/files.acpi 1 Jul 2018 14:56:51 -0000
@@ -5,7 +5,6 @@
 
 define acpi {}
 device acpi
-attach acpi at bios
 file   dev/acpi/acpi.c                 acpi needs-flag
 file   dev/acpi/acpiutil.c             acpi
 file   dev/acpi/dsdt.c                 acpi

Reply via email to