Module Name:    src
Committed By:   jruoho
Date:           Thu Aug 19 04:12:45 UTC 2010

Modified Files:
        src/sys/arch/x86/include: powernow.h
        src/sys/arch/x86/x86: powernow_k8.c

Log Message:
Add sysctl-glue for interaction with the acpicpu(4).


To generate a diff of this commit:
cvs rdiff -u -r1.9 -r1.10 src/sys/arch/x86/include/powernow.h
cvs rdiff -u -r1.26 -r1.27 src/sys/arch/x86/x86/powernow_k8.c

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/include/powernow.h
diff -u src/sys/arch/x86/include/powernow.h:1.9 src/sys/arch/x86/include/powernow.h:1.10
--- src/sys/arch/x86/include/powernow.h:1.9	Sat Mar 24 15:35:15 2007
+++ src/sys/arch/x86/include/powernow.h	Thu Aug 19 04:12:45 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: powernow.h,v 1.9 2007/03/24 15:35:15 xtraeme Exp $	*/
+/*	$NetBSD: powernow.h,v 1.10 2010/08/19 04:12:45 jruoho Exp $	*/
 
 /*-
  * Copyright (c) 2004 Martin Végiard.
@@ -178,6 +178,7 @@
 
 /* x86/x86/powernow_k8.c */
 void k8_powernow_init(void);
+void k8_powernow_init_main(int);
 void k8_powernow_destroy(void);
 
 #endif

Index: src/sys/arch/x86/x86/powernow_k8.c
diff -u src/sys/arch/x86/x86/powernow_k8.c:1.26 src/sys/arch/x86/x86/powernow_k8.c:1.27
--- src/sys/arch/x86/x86/powernow_k8.c:1.26	Mon Oct  5 23:59:31 2009
+++ src/sys/arch/x86/x86/powernow_k8.c	Thu Aug 19 04:12:45 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: powernow_k8.c,v 1.26 2009/10/05 23:59:31 rmind Exp $ */
+/*	$NetBSD: powernow_k8.c,v 1.27 2010/08/19 04:12:45 jruoho Exp $ */
 /*	$OpenBSD: powernow-k8.c,v 1.8 2006/06/16 05:58:50 gwk Exp $ */
 
 /*-
@@ -59,7 +59,7 @@
 /* AMD POWERNOW K8 driver */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: powernow_k8.c,v 1.26 2009/10/05 23:59:31 rmind Exp $");
+__KERNEL_RCSID(0, "$NetBSD: powernow_k8.c,v 1.27 2010/08/19 04:12:45 jruoho Exp $");
 
 #include <sys/types.h>
 #include <sys/param.h>
@@ -70,6 +70,7 @@
 #include <sys/xcall.h>
 
 #include <x86/cpu_msr.h>
+#include <x86/cpuvar.h>
 #include <x86/powernow.h>
 
 #include <dev/isa/isareg.h>
@@ -79,13 +80,6 @@
 #include <machine/cpufunc.h>
 #include <machine/bus.h>
 
-#ifdef _MODULE
-static struct sysctllog *sysctllog;
-#define SYSCTLLOG	&sysctllog
-#else
-#define SYSCTLLOG	NULL
-#endif
-
 static struct powernow_cpu_state *k8pnow_current_state;
 static unsigned int cur_freq;
 static int powernow_node_target, powernow_node_current;
@@ -98,7 +92,6 @@
     unsigned int);
 static int k8_powernow_setperf(unsigned int);
 static int k8_powernow_init_once(void);
-static void k8_powernow_init_main(void);
 
 static uint64_t
 k8pnow_wr_fidvid(u_int fid, uint64_t vid, uint64_t ctrl)
@@ -341,7 +334,7 @@
 static int
 k8_powernow_init_once(void)
 {
-	k8_powernow_init_main();
+	k8_powernow_init_main(0);
 	return 0;
 }
 
@@ -357,8 +350,8 @@
 	}
 }
 
-static void
-k8_powernow_init_main(void)
+void
+k8_powernow_init_main(int vendor)
 {
 	uint64_t status;
 	uint32_t maxfid, maxvid, i;
@@ -425,29 +418,34 @@
 		goto err;
 	}
 
+	if (cpu_freq_sysctllog != NULL)
+		goto err;
+
+	cpu_freq_init = k8_powernow_init_main;
+
 	/* Create sysctl machdep.powernow.frequency. */
-	if (sysctl_createv(SYSCTLLOG, 0, NULL, &node,
+	if (sysctl_createv(&cpu_freq_sysctllog, 0, NULL, &node,
 	    CTLFLAG_PERMANENT,
 	    CTLTYPE_NODE, "machdep", NULL,
 	    NULL, 0, NULL, 0,
 	    CTL_MACHDEP, CTL_EOL) != 0)
 		goto err;
 
-	if (sysctl_createv(SYSCTLLOG, 0, &node, &pnownode,
+	if (sysctl_createv(&cpu_freq_sysctllog, 0, &node, &pnownode,
 	    0,
 	    CTLTYPE_NODE, "powernow", NULL,
 	    NULL, 0, NULL, 0,
 	    CTL_CREATE, CTL_EOL) != 0)
 		goto err;
 
-	if (sysctl_createv(SYSCTLLOG, 0, &pnownode, &freqnode,
+	if (sysctl_createv(&cpu_freq_sysctllog, 0, &pnownode, &freqnode,
 	    0,
 	    CTLTYPE_NODE, "frequency", NULL,
 	    NULL, 0, NULL, 0,
 	    CTL_CREATE, CTL_EOL) != 0)
 		goto err;
 
-	if (sysctl_createv(SYSCTLLOG, 0, &freqnode, &node,
+	if (sysctl_createv(&cpu_freq_sysctllog, 0, &freqnode, &node,
 	    CTLFLAG_READWRITE,
 	    CTLTYPE_INT, "target", NULL,
 	    k8pnow_sysctl_helper, 0, NULL, 0,
@@ -456,7 +454,7 @@
 
 	powernow_node_target = node->sysctl_num;
 
-	if (sysctl_createv(SYSCTLLOG, 0, &freqnode, &node,
+	if (sysctl_createv(&cpu_freq_sysctllog, 0, &freqnode, &node,
 	    0,
 	    CTLTYPE_INT, "current", NULL,
 	    k8pnow_sysctl_helper, 0, NULL, 0,
@@ -465,7 +463,7 @@
 
 	powernow_node_current = node->sysctl_num;
 
-	if (sysctl_createv(SYSCTLLOG, 0, &freqnode, &node,
+	if (sysctl_createv(&cpu_freq_sysctllog, 0, &freqnode, &node,
 	    0,
 	    CTLTYPE_STRING, "available", NULL,
 	    NULL, 0, freq_names, freq_names_len,
@@ -481,18 +479,26 @@
 
 	return;
 
-  err:
+err:
 	if (cstate)
 		free(cstate, M_DEVBUF);
+
 	if (freq_names)
 		free(freq_names, M_SYSCTLDATA);
+
+	if (cpu_freq_sysctllog) {
+		sysctl_teardown(&cpu_freq_sysctllog);
+		cpu_freq_sysctllog = NULL;
+	}
+
+	cpu_freq_init = NULL;
 }
 
 void
 k8_powernow_destroy(void)
 {
 #ifdef _MODULE
-	sysctl_teardown(SYSCTLLOG);
+	sysctl_teardown(&cpu_freq_sysctllog);
 
 	if (k8pnow_current_state)
 		free(k8pnow_current_state, M_DEVBUF);

Reply via email to