Re: acpi(4) attach glue for amd64/i386
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 - 1.82 > +++ arch/amd64/amd64/acpi_machdep.c 1 Jul 2018 14:56:50 - > @@ -32,11 +32,12 @@ > > #include > > -#include > #include > #include > #include > #include > +#include > +#include > > #include "isa.h" > #include "ioapic.h" > @@ -63,6 +64,42 @@ extern int acpi_savecpu(void) __returns_ > #define ACPI_BIOS_RSDP_WINDOW_SIZE0x2 > > 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 = _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 - 1.95 > +++ arch/amd64/conf/files.amd64 1 Jul 2018 14:56:50 - > @@ -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.Sacpi & !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 - 1.237 > +++ arch/i386/conf/files.i386 1 Jul 2018 14:56:50 - > @@ -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 - 1.66 > +++ arch/i386/i386/acpi_machdep.c 1 Jul 2018 14:56:50 - > @@ -39,10 +39,11 @@ > #include > #include > > -#include > #include > #include > #include > +#include > +#include > > #include "apm.h" > #include "isa.h" > @@ -73,6 +74,42 @@ extern void intr_calculatemasks(void); > #define ACPI_BIOS_RSDP_WINDOW_SIZE0x2 > > 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 = _bus_dma_tag; > + > + acpi_attach_common(sc,
Re: acpi(4) attach glue for amd64/i386
On Sun, Jul 1, 2018 at 8:00 AM 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? > Fewer ifdefs, yay. ok guenther@
acpi(4) attach glue for amd64/i386
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 - 1.82 +++ arch/amd64/amd64/acpi_machdep.c 1 Jul 2018 14:56:50 - @@ -32,11 +32,12 @@ #include -#include #include #include #include #include +#include +#include #include "isa.h" #include "ioapic.h" @@ -63,6 +64,42 @@ extern int acpi_savecpu(void) __returns_ #define ACPI_BIOS_RSDP_WINDOW_SIZE0x2 u_int8_t *acpi_scan(struct acpi_mem_map *, paddr_t, size_t); + +intacpi_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 = _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 - 1.95 +++ arch/amd64/conf/files.amd64 1 Jul 2018 14:56:50 - @@ -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.Sacpi & !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 - 1.237 +++ arch/i386/conf/files.i386 1 Jul 2018 14:56:50 - @@ -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 - 1.66 +++ arch/i386/i386/acpi_machdep.c 1 Jul 2018 14:56:50 - @@ -39,10 +39,11 @@ #include #include -#include #include #include #include +#include +#include #include "apm.h" #include "isa.h" @@ -73,6 +74,42 @@ extern void intr_calculatemasks(void); #define ACPI_BIOS_RSDP_WINDOW_SIZE0x2 u_int8_t *acpi_scan(struct acpi_mem_map *, paddr_t, size_t); + +intacpi_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 = _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 - 1.351 +++