Sun Apr 16 16:55:02 2023 UTC ()
DesignWare watchdog ACPI attach glue
(jmcneill)
diff -r1.210 -r1.211 src/sys/arch/evbarm/conf/GENERIC64
diff -r0 -r1.1 src/sys/dev/acpi/dwcwdt_acpi.c
diff -r1.126 -r1.127 src/sys/dev/acpi/files.acpi
--- src/sys/arch/evbarm/conf/GENERIC64 2023/02/25 08:19:35 1.210
+++ src/sys/arch/evbarm/conf/GENERIC64 2023/04/16 16:55:01 1.211
| @@ -1,15 +1,15 @@ | | | @@ -1,15 +1,15 @@ |
1 | # | | 1 | # |
2 | # $NetBSD: GENERIC64,v 1.210 2023/02/25 08:19:35 skrll Exp $ | | 2 | # $NetBSD: GENERIC64,v 1.211 2023/04/16 16:55:01 jmcneill Exp $ |
3 | # | | 3 | # |
4 | # GENERIC ARM (aarch64) kernel | | 4 | # GENERIC ARM (aarch64) kernel |
5 | # | | 5 | # |
6 | | | 6 | |
7 | include "arch/evbarm/conf/std.generic64" | | 7 | include "arch/evbarm/conf/std.generic64" |
8 | include "arch/evbarm/conf/files.generic64" | | 8 | include "arch/evbarm/conf/files.generic64" |
9 | include "arch/evbarm/conf/GENERIC.common" | | 9 | include "arch/evbarm/conf/GENERIC.common" |
10 | | | 10 | |
11 | maxusers 64 | | 11 | maxusers 64 |
12 | | | 12 | |
13 | options CPU_CORTEX | | 13 | options CPU_CORTEX |
14 | options CPU_THUNDERX | | 14 | options CPU_THUNDERX |
15 | options SOC_APPLE | | 15 | options SOC_APPLE |
| @@ -152,26 +152,27 @@ gpioleds* at fdt? | | | @@ -152,26 +152,27 @@ gpioleds* at fdt? |
152 | syscon* at fdt? pass 1 # Generic System Controller | | 152 | syscon* at fdt? pass 1 # Generic System Controller |
153 | sunxisramc* at fdt? pass 1 # Allwinner System Control | | 153 | sunxisramc* at fdt? pass 1 # Allwinner System Control |
154 | | | 154 | |
155 | # Timer | | 155 | # Timer |
156 | gtmr* at fdt? pass 2 # ARM Generic Timer | | 156 | gtmr* at fdt? pass 2 # ARM Generic Timer |
157 | gtmr* at acpi? | | 157 | gtmr* at acpi? |
158 | armgtmr0 at gtmr? | | 158 | armgtmr0 at gtmr? |
159 | tegratimer* at fdt? # Timers | | 159 | tegratimer* at fdt? # Timers |
160 | | | 160 | |
161 | # Watchdog | | 161 | # Watchdog |
162 | applewdog* at fdt? # Apple watchdog | | 162 | applewdog* at fdt? # Apple watchdog |
163 | bcmpmwdog* at fdt? # Broadcom BCM283x watchdog | | 163 | bcmpmwdog* at fdt? # Broadcom BCM283x watchdog |
164 | dwcwdt* at fdt? # DesignWare watchdog | | 164 | dwcwdt* at fdt? # DesignWare watchdog |
| | | 165 | dwcwdt* at acpi? |
165 | mesongxwdt* at fdt? # Amlogic Meson GX watchdog | | 166 | mesongxwdt* at fdt? # Amlogic Meson GX watchdog |
166 | sbsawdt* at acpi? # ARM SBSA-compliant watchdog | | 167 | sbsawdt* at acpi? # ARM SBSA-compliant watchdog |
167 | sunxiwdt* at fdt? # Allwinner watchdog | | 168 | sunxiwdt* at fdt? # Allwinner watchdog |
168 | | | 169 | |
169 | # Interrupt controller | | 170 | # Interrupt controller |
170 | appleintc* at fdt? pass 1 # Apple AIC | | 171 | appleintc* at fdt? pass 1 # Apple AIC |
171 | bcmicu* at fdt? pass 1 # Broadcom BCM283x ICU | | 172 | bcmicu* at fdt? pass 1 # Broadcom BCM283x ICU |
172 | tegralic* at fdt? pass 1 # NVIDIA Tegra LIC | | 173 | tegralic* at fdt? pass 1 # NVIDIA Tegra LIC |
173 | gic* at fdt? pass 1 # ARM GICv2 | | 174 | gic* at fdt? pass 1 # ARM GICv2 |
174 | gic* at acpi? | | 175 | gic* at acpi? |
175 | armgic0 at gic? | | 176 | armgic0 at gic? |
176 | gicvthree* at fdt? pass 1 # ARM GICv3 | | 177 | gicvthree* at fdt? pass 1 # ARM GICv3 |
177 | gicvthree* at acpi? | | 178 | gicvthree* at acpi? |
/* $NetBSD: dwcwdt_acpi.c,v 1.1 2023/04/16 16:55:01 jmcneill Exp $ */
/*-
* Copyright (c) 2023 Jared McNeill <jmcneill@invisible.ca>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: dwcwdt_acpi.c,v 1.1 2023/04/16 16:55:01 jmcneill Exp $");
#include <sys/param.h>
#include <sys/bus.h>
#include <sys/device.h>
#include <sys/intr.h>
#include <sys/systm.h>
#include <sys/mutex.h>
#include <sys/wdog.h>
#include <dev/sysmon/sysmonvar.h>
#include <dev/ic/dwc_wdt_var.h>
#include <dev/acpi/acpireg.h>
#include <dev/acpi/acpivar.h>
static const struct device_compatible_entry compat_data[] = {
{ .compat = "snps,dw-wdt" },
DEVICE_COMPAT_EOL
};
static int
dwcwdt_acpi_match(device_t parent, cfdata_t cf, void *aux)
{
struct acpi_attach_args *aa = aux;
return acpi_compatible_match(aa, compat_data);
}
static void
dwcwdt_acpi_attach(device_t parent, device_t self, void *aux)
{
struct dwcwdt_softc * const sc = device_private(self);
struct acpi_attach_args *aa = aux;
ACPI_HANDLE handle = aa->aa_node->ad_handle;
struct acpi_resources res;
struct acpi_mem *mem;
ACPI_INTEGER ival;
ACPI_STATUS rv;
rv = acpi_resource_parse(sc->sc_dev, handle, "_CRS",
&res, &acpi_resource_parse_ops_default);
if (ACPI_FAILURE(rv)) {
return;
}
mem = acpi_res_mem(&res, 0);
if (mem == NULL) {
aprint_error_dev(self, "couldn't find mem resource\n");
goto done;
}
sc->sc_dev = self;
sc->sc_bst = aa->aa_memt;
if (bus_space_map(sc->sc_bst, mem->ar_base, mem->ar_length,
0, &sc->sc_bsh) != 0) {
aprint_error_dev(self, "couldn't map registers\n");
goto done;
}
if (ACPI_SUCCESS(acpi_dsd_integer(handle, "clock-frequency", &ival))) {
sc->sc_clkrate = ival;
}
dwcwdt_init(sc);
done:
acpi_resource_cleanup(&res);
}
CFATTACH_DECL_NEW(dwcwdt_acpi, sizeof(struct dwcwdt_softc),
dwcwdt_acpi_match, dwcwdt_acpi_attach, NULL, NULL);
--- src/sys/dev/acpi/files.acpi 2022/05/26 02:16:44 1.126
+++ src/sys/dev/acpi/files.acpi 2023/04/16 16:55:01 1.127
| @@ -1,14 +1,14 @@ | | | @@ -1,14 +1,14 @@ |
1 | # $NetBSD: files.acpi,v 1.126 2022/05/26 02:16:44 mrg Exp $ | | 1 | # $NetBSD: files.acpi,v 1.127 2023/04/16 16:55:01 jmcneill Exp $ |
2 | | | 2 | |
3 | defflag opt_acpi.h ACPIVERBOSE ACPI_DEBUG ACPI_ACTIVATE_DEV | | 3 | defflag opt_acpi.h ACPIVERBOSE ACPI_DEBUG ACPI_ACTIVATE_DEV |
4 | ACPI_DSDT_OVERRIDE ACPI_SCANPCI ACPI_BREAKPOINT | | 4 | ACPI_DSDT_OVERRIDE ACPI_SCANPCI ACPI_BREAKPOINT |
5 | ACPI_REDUCED_HW ACPI__DIS_IS_BROKEN | | 5 | ACPI_REDUCED_HW ACPI__DIS_IS_BROKEN |
6 | defparam opt_acpi.h ACPI_DSDT_FILE := "\"/dev/null\"" | | 6 | defparam opt_acpi.h ACPI_DSDT_FILE := "\"/dev/null\"" |
7 | defparam opt_acpi.h ACPI_BLACKLIST_YEAR = 2000 | | 7 | defparam opt_acpi.h ACPI_BLACKLIST_YEAR = 2000 |
8 | | | 8 | |
9 | define acpiapmbus { } | | 9 | define acpiapmbus { } |
10 | define acpinodebus { } | | 10 | define acpinodebus { } |
11 | define acpiecdtbus { } | | 11 | define acpiecdtbus { } |
12 | define acpihpetbus { } | | 12 | define acpihpetbus { } |
13 | define acpiwdrtbus { } | | 13 | define acpiwdrtbus { } |
14 | define acpisdtbus { } | | 14 | define acpisdtbus { } |
| @@ -298,14 +298,18 @@ file dev/acpi/genet_acpi.c genet_acpi | | | @@ -298,14 +298,18 @@ file dev/acpi/genet_acpi.c genet_acpi |
298 | | | 298 | |
299 | # DesignWare Ethernet Quality-of-Service controller | | 299 | # DesignWare Ethernet Quality-of-Service controller |
300 | attach eqos at acpinodebus with eqos_acpi | | 300 | attach eqos at acpinodebus with eqos_acpi |
301 | file dev/acpi/eqos_acpi.c eqos_acpi | | 301 | file dev/acpi/eqos_acpi.c eqos_acpi |
302 | | | 302 | |
303 | # Intel GPIO | | 303 | # Intel GPIO |
304 | attach igpio at acpinodebus with igpio_acpi | | 304 | attach igpio at acpinodebus with igpio_acpi |
305 | file dev/acpi/igpio_acpi.c igpio_acpi | | 305 | file dev/acpi/igpio_acpi.c igpio_acpi |
306 | | | 306 | |
307 | # DesignWare Mobile Storage Host Controller | | 307 | # DesignWare Mobile Storage Host Controller |
308 | attach dwcmmc at acpinodebus with dwcmmc_acpi | | 308 | attach dwcmmc at acpinodebus with dwcmmc_acpi |
309 | file dev/acpi/dwcmmc_acpi.c dwcmmc_acpi | | 309 | file dev/acpi/dwcmmc_acpi.c dwcmmc_acpi |
310 | | | 310 | |
| | | 311 | # DesignWare Watchdog |
| | | 312 | attach dwcwdt at acpinodebus with dwcwdt_acpi |
| | | 313 | file dev/acpi/dwcwdt_acpi.c dwcwdt_acpi |
| | | 314 | |
311 | include "dev/acpi/wmi/files.wmi" | | 315 | include "dev/acpi/wmi/files.wmi" |