Module Name: src Committed By: jruoho Date: Sun Feb 27 18:32:54 UTC 2011
Modified Files: src/sys/arch/x86/acpi: acpi_cpu_md.c src/sys/dev/acpi: acpi_cpu.c acpi_cpu.h Log Message: Provide MD wrappers for match and attach. To generate a diff of this commit: cvs rdiff -u -r1.47 -r1.48 src/sys/arch/x86/acpi/acpi_cpu_md.c cvs rdiff -u -r1.30 -r1.31 src/sys/dev/acpi/acpi_cpu.c cvs rdiff -u -r1.33 -r1.34 src/sys/dev/acpi/acpi_cpu.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/x86/acpi/acpi_cpu_md.c diff -u src/sys/arch/x86/acpi/acpi_cpu_md.c:1.47 src/sys/arch/x86/acpi/acpi_cpu_md.c:1.48 --- src/sys/arch/x86/acpi/acpi_cpu_md.c:1.47 Sun Feb 27 17:27:28 2011 +++ src/sys/arch/x86/acpi/acpi_cpu_md.c Sun Feb 27 18:32:54 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: acpi_cpu_md.c,v 1.47 2011/02/27 17:27:28 jruoho Exp $ */ +/* $NetBSD: acpi_cpu_md.c,v 1.48 2011/02/27 18:32:54 jruoho Exp $ */ /*- * Copyright (c) 2010, 2011 Jukka Ruohonen <jruoho...@iki.fi> @@ -27,10 +27,11 @@ * SUCH DAMAGE. */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: acpi_cpu_md.c,v 1.47 2011/02/27 17:27:28 jruoho Exp $"); +__KERNEL_RCSID(0, "$NetBSD: acpi_cpu_md.c,v 1.48 2011/02/27 18:32:54 jruoho Exp $"); #include <sys/param.h> #include <sys/bus.h> +#include <sys/device.h> #include <sys/kcore.h> #include <sys/sysctl.h> #include <sys/xcall.h> @@ -118,6 +119,25 @@ static bool acpicpu_pstate_status = false; static struct sysctllog *acpicpu_log = NULL; +struct cpu_info * +acpicpu_md_match(device_t parent, cfdata_t match, void *aux) +{ + struct cpufeature_attach_args *cfaa = aux; + + if (strcmp(cfaa->name, "frequency") != 0) + return NULL; + + return cfaa->ci; +} + +struct cpu_info * +acpicpu_md_attach(device_t parent, device_t self, void *aux) +{ + struct cpufeature_attach_args *cfaa = aux; + + return cfaa->ci; +} + uint32_t acpicpu_md_cap(void) { Index: src/sys/dev/acpi/acpi_cpu.c diff -u src/sys/dev/acpi/acpi_cpu.c:1.30 src/sys/dev/acpi/acpi_cpu.c:1.31 --- src/sys/dev/acpi/acpi_cpu.c:1.30 Sun Feb 27 17:10:33 2011 +++ src/sys/dev/acpi/acpi_cpu.c Sun Feb 27 18:32:53 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: acpi_cpu.c,v 1.30 2011/02/27 17:10:33 jruoho Exp $ */ +/* $NetBSD: acpi_cpu.c,v 1.31 2011/02/27 18:32:53 jruoho Exp $ */ /*- * Copyright (c) 2010, 2011 Jukka Ruohonen <jruoho...@iki.fi> @@ -27,7 +27,7 @@ * SUCH DAMAGE. */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: acpi_cpu.c,v 1.30 2011/02/27 17:10:33 jruoho Exp $"); +__KERNEL_RCSID(0, "$NetBSD: acpi_cpu.c,v 1.31 2011/02/27 18:32:53 jruoho Exp $"); #include <sys/param.h> #include <sys/cpu.h> @@ -85,26 +85,32 @@ static int acpicpu_match(device_t parent, cfdata_t match, void *aux) { - struct cpufeature_attach_args *cfaa = aux; + struct cpu_info *ci; if (acpi_softc == NULL) return 0; - if (strcmp(cfaa->name, "frequency") != 0) + ci = acpicpu_md_match(parent, match, aux); + + if (ci == NULL) return 0; - return acpicpu_find(cfaa->ci, NULL); + return acpicpu_find(ci, NULL); } static void acpicpu_attach(device_t parent, device_t self, void *aux) { struct acpicpu_softc *sc = device_private(self); - struct cpufeature_attach_args *cfaa = aux; - struct cpu_info *ci = cfaa->ci; + struct cpu_info *ci; cpuid_t id; int rv; + ci = acpicpu_md_attach(parent, self, aux); + + if (ci == NULL) + return; + sc->sc_ci = ci; sc->sc_dev = self; sc->sc_cold = true; @@ -409,7 +415,7 @@ if (ptr != NULL) *ptr = ad; - return 10; /* Beat est(4) and powernow(4). */ + return 10; } static uint32_t Index: src/sys/dev/acpi/acpi_cpu.h diff -u src/sys/dev/acpi/acpi_cpu.h:1.33 src/sys/dev/acpi/acpi_cpu.h:1.34 --- src/sys/dev/acpi/acpi_cpu.h:1.33 Fri Feb 25 20:59:37 2011 +++ src/sys/dev/acpi/acpi_cpu.h Sun Feb 27 18:32:53 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: acpi_cpu.h,v 1.33 2011/02/25 20:59:37 jruoho Exp $ */ +/* $NetBSD: acpi_cpu.h,v 1.34 2011/02/27 18:32:53 jruoho Exp $ */ /*- * Copyright (c) 2010, 2011 Jukka Ruohonen <jruoho...@iki.fi> @@ -230,45 +230,48 @@ bool sc_cold; }; -void acpicpu_cstate_attach(device_t); -int acpicpu_cstate_detach(device_t); -void acpicpu_cstate_start(device_t); -bool acpicpu_cstate_suspend(device_t); -bool acpicpu_cstate_resume(device_t); -void acpicpu_cstate_callback(void *); -void acpicpu_cstate_idle(void); - -void acpicpu_pstate_attach(device_t); -int acpicpu_pstate_detach(device_t); -void acpicpu_pstate_start(device_t); -bool acpicpu_pstate_suspend(device_t); -bool acpicpu_pstate_resume(device_t); -void acpicpu_pstate_callback(void *); -int acpicpu_pstate_get(struct acpicpu_softc *, uint32_t *); -int acpicpu_pstate_set(struct acpicpu_softc *, uint32_t); - -void acpicpu_tstate_attach(device_t); -int acpicpu_tstate_detach(device_t); -void acpicpu_tstate_start(device_t); -bool acpicpu_tstate_suspend(device_t); -bool acpicpu_tstate_resume(device_t); -void acpicpu_tstate_callback(void *); -int acpicpu_tstate_get(struct acpicpu_softc *, uint32_t *); -int acpicpu_tstate_set(struct acpicpu_softc *, uint32_t); - -uint32_t acpicpu_md_cap(void); -uint32_t acpicpu_md_flags(void); -void acpicpu_md_quirk_c1e(void); -int acpicpu_md_cstate_start(struct acpicpu_softc *); -int acpicpu_md_cstate_stop(void); -void acpicpu_md_cstate_enter(int, int); -int acpicpu_md_pstate_start(struct acpicpu_softc *); -int acpicpu_md_pstate_stop(void); -int acpicpu_md_pstate_pss(struct acpicpu_softc *); -uint8_t acpicpu_md_pstate_percent(struct acpicpu_softc *); -int acpicpu_md_pstate_get(struct acpicpu_softc *, uint32_t *); -int acpicpu_md_pstate_set(struct acpicpu_pstate *); -int acpicpu_md_tstate_get(struct acpicpu_softc *, uint32_t *); -int acpicpu_md_tstate_set(struct acpicpu_tstate *); +void acpicpu_cstate_attach(device_t); +int acpicpu_cstate_detach(device_t); +void acpicpu_cstate_start(device_t); +bool acpicpu_cstate_suspend(device_t); +bool acpicpu_cstate_resume(device_t); +void acpicpu_cstate_callback(void *); +void acpicpu_cstate_idle(void); + +void acpicpu_pstate_attach(device_t); +int acpicpu_pstate_detach(device_t); +void acpicpu_pstate_start(device_t); +bool acpicpu_pstate_suspend(device_t); +bool acpicpu_pstate_resume(device_t); +void acpicpu_pstate_callback(void *); +int acpicpu_pstate_get(struct acpicpu_softc *, uint32_t *); +int acpicpu_pstate_set(struct acpicpu_softc *, uint32_t); + +void acpicpu_tstate_attach(device_t); +int acpicpu_tstate_detach(device_t); +void acpicpu_tstate_start(device_t); +bool acpicpu_tstate_suspend(device_t); +bool acpicpu_tstate_resume(device_t); +void acpicpu_tstate_callback(void *); +int acpicpu_tstate_get(struct acpicpu_softc *, uint32_t *); +int acpicpu_tstate_set(struct acpicpu_softc *, uint32_t); + +struct cpu_info *acpicpu_md_match(device_t, cfdata_t, void *); +struct cpu_info *acpicpu_md_attach(device_t, device_t, void *); + +uint32_t acpicpu_md_cap(void); +uint32_t acpicpu_md_flags(void); +void acpicpu_md_quirk_c1e(void); +int acpicpu_md_cstate_start(struct acpicpu_softc *); +int acpicpu_md_cstate_stop(void); +void acpicpu_md_cstate_enter(int, int); +int acpicpu_md_pstate_start(struct acpicpu_softc *); +int acpicpu_md_pstate_stop(void); +int acpicpu_md_pstate_pss(struct acpicpu_softc *); +uint8_t acpicpu_md_pstate_percent(struct acpicpu_softc *); +int acpicpu_md_pstate_get(struct acpicpu_softc *, uint32_t *); +int acpicpu_md_pstate_set(struct acpicpu_pstate *); +int acpicpu_md_tstate_get(struct acpicpu_softc *, uint32_t *); +int acpicpu_md_tstate_set(struct acpicpu_tstate *); #endif /* !_SYS_DEV_ACPI_ACPI_CPU_H */