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
>