Re: acpi(4) attach glue for amd64/i386

2018-07-01 Thread Mike Larkin
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

2018-07-01 Thread Philip Guenther
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

2018-07-01 Thread Mark Kettenis
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
+++