Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/netbsd-6]: src Pull up following revision(s) (requested by jdp in ticket...
details: https://anonhg.NetBSD.org/src/rev/e522591f581b
branches: netbsd-6
changeset: 776361:e522591f581b
user: msaitoh <msaitoh%NetBSD.org@localhost>
date: Thu Jun 13 07:30:45 2013 +0000
description:
Pull up following revision(s) (requested by jdp in ticket #893):
sys/arch/sparc64/dev/tda.c 1.7-1.8
share/man/man4/man4.sparc64/tda.4 1.1-1.3
share/man/man4/man4.sparc64/Makefile 1.7
distrib/sets/lists/man/mi 1.1419
Add sysmon support to display the CPU and Sytem fan speeds for the
tda driver. Add a manual page for tda(4). Fix a bug which caused
the system fan to always run at full speed.
diffstat:
distrib/sets/lists/man/mi | 5 +-
share/man/man4/man4.sparc64/Makefile | 4 +-
share/man/man4/man4.sparc64/tda.4 | 69 ++++++++++++++++++++++++++
sys/arch/sparc64/dev/tda.c | 93 +++++++++++++++++++++++++++++++++--
4 files changed, 162 insertions(+), 9 deletions(-)
diffs (268 lines):
diff -r 125a0ec2e402 -r e522591f581b distrib/sets/lists/man/mi
--- a/distrib/sets/lists/man/mi Thu Jun 13 07:22:44 2013 +0000
+++ b/distrib/sets/lists/man/mi Thu Jun 13 07:30:45 2013 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: mi,v 1.1379.2.9 2012/12/15 05:40:18 riz Exp $
+# $NetBSD: mi,v 1.1379.2.10 2013/06/13 07:30:45 msaitoh Exp $
#
# Note: don't delete entries from here - mark them as "obsolete" instead.
#
@@ -1587,6 +1587,7 @@
./usr/share/man/cat4/sparc64/lom.0 man-sys-catman .cat
./usr/share/man/cat4/sparc64/sab.0 man-sys-catman .cat
./usr/share/man/cat4/sparc64/sabtty.0 man-sys-catman .cat
+./usr/share/man/cat4/sparc64/tda.0 man-sys-catman .cat
./usr/share/man/cat4/spc.0 man-sys-catman .cat
./usr/share/man/cat4/spdmem.0 man-sys-catman .cat
./usr/share/man/cat4/speaker.0 man-sys-catman .cat
@@ -4393,6 +4394,7 @@
./usr/share/man/html4/sparc64/lom.html man-sys-htmlman html
./usr/share/man/html4/sparc64/sab.html man-sys-htmlman html
./usr/share/man/html4/sparc64/sabtty.html man-sys-htmlman html
+./usr/share/man/html4/sparc64/tda.html man-sys-htmlman html
./usr/share/man/html4/spc.html man-sys-htmlman html
./usr/share/man/html4/spdmem.html man-sys-htmlman html
./usr/share/man/html4/speaker.html man-sys-htmlman html
@@ -7112,6 +7114,7 @@
./usr/share/man/man4/sparc64/lom.4 man-sys-man .man
./usr/share/man/man4/sparc64/sab.4 man-sys-man .man
./usr/share/man/man4/sparc64/sabtty.4 man-sys-man .man
+./usr/share/man/man4/sparc64/tda.4 man-sys-man .man
./usr/share/man/man4/spc.4 man-sys-man .man
./usr/share/man/man4/spdmem.4 man-sys-man .man
./usr/share/man/man4/speaker.4 man-sys-man .man
diff -r 125a0ec2e402 -r e522591f581b share/man/man4/man4.sparc64/Makefile
--- a/share/man/man4/man4.sparc64/Makefile Thu Jun 13 07:22:44 2013 +0000
+++ b/share/man/man4/man4.sparc64/Makefile Thu Jun 13 07:30:45 2013 +0000
@@ -1,8 +1,8 @@
-# $NetBSD: Makefile,v 1.6 2011/04/09 19:37:13 jdc Exp $
+# $NetBSD: Makefile,v 1.6.6.1 2013/06/13 07:30:45 msaitoh Exp $
MANSUBDIR=/sparc64
-MAN= envctrl.4 ffb.4 fdc.4 intro.4 lom.4 sab.4
+MAN= envctrl.4 ffb.4 fdc.4 intro.4 lom.4 sab.4 tda.4
MLINKS+= sab.4 sabtty.4
diff -r 125a0ec2e402 -r e522591f581b share/man/man4/man4.sparc64/tda.4
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/share/man/man4/man4.sparc64/tda.4 Thu Jun 13 07:30:45 2013 +0000
@@ -0,0 +1,69 @@
+.\" $NetBSD: tda.4,v 1.3.4.2 2013/06/13 07:30:45 msaitoh Exp $
+.\"
+.\" Copyright (c) 2013 The NetBSD Foundation, Inc.
+.\" All rights reserved.
+.\"
+.\" This code is derived from software contributed to The NetBSD Foundation
+.\" by Julian Coleman
+.\"
+.\" 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 NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+.\" ``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 FOUNDATION OR CONTRIBUTORS
+.\" 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.
+.\"
+.Dd February 2, 2013
+.Dt TDA 4 sparc64
+.Os
+.Sh NAME
+.Nm tda
+.Nd TDA8444 fan speed controller
+.Sh SYNOPSIS
+.Cd "tda0 at iic1 addr 0x24: fan-control"
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for the TDA8444 DAC used to control the fan speeds
+in Sun Blade 1000 and Blade 2000 systems.
+The speed of the CPU fan and of the system fan are automatically adjusted
+every 60 seconds, based on the currently reported CPU and system
+temperatures, respectively.
+.Pp
+The speed-related values are made available through the
+.Xr envstat 8
+interface.
+The range of the values are:
+.Bl -column -offset indent ".Sy System temperature" ".Sy Minimum" ".Sy Maximum"
+.It Sy Ta Sy Minimum Ta Sy Maximum
+.It Li CPU temperature Ta <=57 Ta >=67
+.It Li System temperature Ta <=20 Ta >=30
+.It Li Speed value Ta 12 Ta 63
+.El
+.Sh SEE ALSO
+.Xr admtemp 4 ,
+.Xr envstat 8
+.Sh BUGS
+The temperatures are reported as
+.Sq internal
+and
+.Sq external
+instead of
+.Sq system
+and
+.Sq CPU ,
+respectively.
diff -r 125a0ec2e402 -r e522591f581b sys/arch/sparc64/dev/tda.c
--- a/sys/arch/sparc64/dev/tda.c Thu Jun 13 07:22:44 2013 +0000
+++ b/sys/arch/sparc64/dev/tda.c Thu Jun 13 07:30:45 2013 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: tda.c,v 1.4 2011/04/03 06:25:11 jdc Exp $ */
+/* $NetBSD: tda.c,v 1.4.10.1 2013/06/13 07:30:45 msaitoh Exp $ */
/* $OpenBSD: tda.c,v 1.4 2008/02/27 17:25:00 robert Exp $ */
/*
@@ -41,10 +41,14 @@
#define TDA_PSFAN_ON 0x1f
#define TDA_PSFAN_OFF 0x00
-/* Internal and External temperature senor numbers */
+/* Internal and External temperature sensor numbers */
#define SENSOR_TEMP_EXT 0
#define SENSOR_TEMP_INT 1
+/* Fan sensor numbers */
+#define SENSOR_FAN_CPU 0
+#define SENSOR_FAN_SYS 1
+
#define CPU_TEMP_MAX (67 * 1000000 + 273150000)
#define CPU_TEMP_MIN (57 * 1000000 + 273150000)
#define SYS_TEMP_MAX (30 * 1000000 + 273150000)
@@ -58,19 +62,25 @@
u_int16_t sc_cfan_speed; /* current CPU fan speed */
u_int16_t sc_sfan_speed; /* current SYS fan speed */
+ struct sysmon_envsys *sc_sme;
+ envsys_data_t sc_sensor[2];
+
callout_t sc_timer;
};
int tda_match(struct device *, struct cfdata *, void *);
void tda_attach(struct device *, struct device *, void *);
+static int tda_detach(struct device *, int);
+void tda_refresh(struct sysmon_envsys *, envsys_data_t *);
void tda_setspeed(struct tda_softc *);
static void tda_adjust(void *);
static void tda_timeout(void *);
-CFATTACH_DECL_NEW(tda, sizeof(struct tda_softc),
- tda_match, tda_attach, NULL, NULL);
+CFATTACH_DECL3_NEW(tda, sizeof(struct tda_softc),
+ tda_match, tda_attach, tda_detach, NULL, NULL, NULL,
+ DVF_DETACH_SHUTDOWN);
int
tda_match(struct device *parent, struct cfdata *match, void *aux)
@@ -112,9 +122,61 @@
*/
sc->sc_cfan_speed = sc->sc_sfan_speed = (TDA_FANSPEED_MAX+TDA_FANSPEED_MIN)/2;
tda_setspeed(sc);
-
+
callout_init(&sc->sc_timer, CALLOUT_MPSAFE);
callout_reset(&sc->sc_timer, hz*20, tda_timeout, sc);
+
+ /* Initialise sensor data */
+ sc->sc_sensor[SENSOR_FAN_CPU].state = ENVSYS_SINVALID;
+ sc->sc_sensor[SENSOR_FAN_CPU].units = ENVSYS_INTEGER;
+ sc->sc_sensor[SENSOR_FAN_CPU].flags = ENVSYS_FMONNOTSUPP;
+ strlcpy(sc->sc_sensor[SENSOR_FAN_CPU].desc,
+ "fan.cpu",sizeof("fan.cpu"));
+ sc->sc_sensor[SENSOR_FAN_SYS].state = ENVSYS_SINVALID;
+ sc->sc_sensor[SENSOR_FAN_SYS].units = ENVSYS_INTEGER;
+ sc->sc_sensor[SENSOR_FAN_SYS].flags = ENVSYS_FMONNOTSUPP;
+ strlcpy(sc->sc_sensor[SENSOR_FAN_SYS].desc,
+ "fan.sys",sizeof("fan.sys"));
+ sc->sc_sme = sysmon_envsys_create();
+ if (sysmon_envsys_sensor_attach(
+ sc->sc_sme, &sc->sc_sensor[SENSOR_FAN_CPU])) {
+ sysmon_envsys_destroy(sc->sc_sme);
+ aprint_error_dev(self,
+ "unable to attach cpu fan at sysmon\n");
+ return;
+ }
+ if (sysmon_envsys_sensor_attach(
+ sc->sc_sme, &sc->sc_sensor[SENSOR_FAN_SYS])) {
+ sysmon_envsys_destroy(sc->sc_sme);
+ aprint_error_dev(self,
+ "unable to attach sys fan at sysmon\n");
+ return;
+ }
+ sc->sc_sme->sme_name = device_xname(self);
+ sc->sc_sme->sme_cookie = sc;
+ sc->sc_sme->sme_refresh = tda_refresh;
+ if (sysmon_envsys_register(sc->sc_sme)) {
+ aprint_error_dev(self,
+ "unable to register with sysmon\n");
+ sysmon_envsys_destroy(sc->sc_sme);
+ return;
+ }
+}
+
+int
+tda_detach(struct device *self, int flags)
+{
+ struct tda_softc *sc = device_private(self);
+
+ if (sc->sc_sme != NULL)
+ sysmon_envsys_destroy(sc->sc_sme);
+
+ callout_halt(&sc->sc_timer, NULL);
+ callout_destroy(&sc->sc_timer);
+
+ sc->sc_cfan_speed = sc->sc_sfan_speed = TDA_FANSPEED_MAX;
+ tda_setspeed(sc);
+ return 0;
}
static void
@@ -218,7 +280,7 @@
if (stemp < SYS_TEMP_MIN)
sspeed = TDA_FANSPEED_MIN;
else if (stemp < SYS_TEMP_MAX)
- sc->sc_sfan_speed = TDA_FANSPEED_MIN +
+ sspeed = TDA_FANSPEED_MIN +
(stemp - SYS_TEMP_MIN) *
(TDA_FANSPEED_MAX - TDA_FANSPEED_MIN) /
(SYS_TEMP_MAX - SYS_TEMP_MIN);
@@ -230,3 +292,22 @@
sc->sc_cfan_speed = cspeed;
tda_setspeed(sc);
}
+
+void
+tda_refresh(struct sysmon_envsys *sme, envsys_data_t *edata)
+{
+ struct tda_softc *sc = sme->sme_cookie;
+ u_int16_t speed;
+
+ if (edata->sensor == SENSOR_FAN_CPU)
+ speed = sc->sc_cfan_speed;
+ else
+ speed = sc->sc_sfan_speed;
+ if (!speed)
+ edata->state = ENVSYS_SINVALID;
+ else {
+ edata->value_cur = speed;
+ edata->state = ENVSYS_SVALID;
+ }
+}
+
Home |
Main Index |
Thread Index |
Old Index