On Sun, Jul 01, 2018 at 04:59:47PM +0200, Mark Kettenis wrote: > 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? >
ok mlarkin, and thanks. > > 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 >