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