summaryrefslogtreecommitdiff
path: root/static/netbsd/man4/dbcool.4 3.html
blob: 10ccbb27dffec3b840adc5670cee8ced4b7150aa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
<table class="head">
  <tr>
    <td class="head-ltitle">DBCOOL(4)</td>
    <td class="head-vol">Device Drivers Manual</td>
    <td class="head-rtitle">DBCOOL(4)</td>
  </tr>
</table>
<div class="manual-text">
<section class="Sh">
<h1 class="Sh" id="NAME"><a class="permalink" href="#NAME">NAME</a></h1>
<p class="Pp"><code class="Nm">dbcool</code>, <code class="Nm">adm1027</code>,
    <code class="Nm">adm1030</code>, <code class="Nm">adm1031</code>,
    <code class="Nm">adt7463</code>, <code class="Nm">adt7466</code>,
    <code class="Nm">adt7467</code>, <code class="Nm">adt7468</code>,
    <code class="Nm">adt7473</code>, <code class="Nm">adt7475</code>,
    <code class="Nm">adt7476</code>, <code class="Nm">adt7490</code>,
    <code class="Nm">emc6d103s</code> &#x2014; <span class="Nd">dbCool(tm)
    family of environmental monitors and fan controllers</span></p>
</section>
<section class="Sh">
<h1 class="Sh" id="SYNOPSIS"><a class="permalink" href="#SYNOPSIS">SYNOPSIS</a></h1>
<p class="Pp"><code class="Cd">dbcool* at ki2c?</code>
  <br/>
  <code class="Cd">dbcool* at iic? addr 0x2e</code></p>
</section>
<section class="Sh">
<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
<p class="Pp">The <code class="Nm">dbcool</code> driver provides support for the
    Analog Devices dbCool and the SMSC EMC6D103S environmental monitor chips to
    be used with the <a class="Xr">envsys(4)</a> API.</p>
<p class="Pp">These chips support up to fifteen sensors. Not all of the
    following sensors are supported on all chips.</p>
<table class="Bl-column Bd-indent">
  <tr id="Sensor">
    <td><a class="permalink" href="#Sensor"><b class="Sy">Sensor</b></a></td>
    <td><a class="permalink" href="#Units"><b class="Sy" id="Units">Units</b></a></td>
    <td><a class="permalink" href="#Typical"><b class="Sy" id="Typical">Typical
      Use</b></a></td>
  </tr>
  <tr id="l_temp">
    <td><a class="permalink" href="#l_temp"><code class="Li">l_temp</code></a></td>
    <td>uK</td>
    <td>local chip temperature</td>
  </tr>
  <tr id="r1_temp">
    <td><a class="permalink" href="#r1_temp"><code class="Li">r1_temp</code></a></td>
    <td>uK</td>
    <td>CPU temperature</td>
  </tr>
  <tr id="r2_temp">
    <td><a class="permalink" href="#r2_temp"><code class="Li">r2_temp</code></a></td>
    <td>uK</td>
    <td>GPU temperature</td>
  </tr>
  <tr id="Vccp">
    <td><a class="permalink" href="#Vccp"><code class="Li">Vccp</code></a></td>
    <td>uV DC</td>
    <td>CPU Vcore</td>
  </tr>
  <tr id="Vcc">
    <td><a class="permalink" href="#Vcc"><code class="Li">Vcc</code></a></td>
    <td>uV DC</td>
    <td>Chip's supply voltage</td>
  </tr>
  <tr id="2.5V">
    <td><a class="permalink" href="#2.5V"><code class="Li">2.5V</code></a></td>
    <td>uV DC</td>
    <td>2.5V supply</td>
  </tr>
  <tr id="5V">
    <td><a class="permalink" href="#5V"><code class="Li">5V</code></a></td>
    <td>uV DC</td>
    <td>5V supply</td>
  </tr>
  <tr id="12V">
    <td><a class="permalink" href="#12V"><code class="Li">12V</code></a></td>
    <td>uV DC</td>
    <td>12V supply</td>
  </tr>
  <tr id="Vtt">
    <td><a class="permalink" href="#Vtt"><code class="Li">Vtt</code></a></td>
    <td>uV DC</td>
    <td>PECI ref. voltage (2.25V ref, ADT7490 only)</td>
  </tr>
  <tr id="Imon">
    <td><a class="permalink" href="#Imon"><code class="Li">Imon</code></a></td>
    <td>uV DC</td>
    <td>Current monitor (2.25V ref, ADT7490 only)</td>
  </tr>
  <tr id="AIN1">
    <td><a class="permalink" href="#AIN1"><code class="Li">AIN1</code></a></td>
    <td>uV DC</td>
    <td>Analog In (2.25V ref, ADT7466 only)</td>
  </tr>
  <tr id="AIN2">
    <td><a class="permalink" href="#AIN2"><code class="Li">AIN2</code></a></td>
    <td>uV DC</td>
    <td>Analog In (2.25V ref, ADT7466 only)</td>
  </tr>
  <tr id="fan1">
    <td><a class="permalink" href="#fan1"><code class="Li">fan1</code></a></td>
    <td>RPM</td>
    <td>Chassis Fan</td>
  </tr>
  <tr id="fan2">
    <td><a class="permalink" href="#fan2"><code class="Li">fan2</code></a></td>
    <td>RPM</td>
    <td>Chassis Fan</td>
  </tr>
  <tr id="fan3">
    <td><a class="permalink" href="#fan3"><code class="Li">fan3</code></a></td>
    <td>RPM</td>
    <td>Chassis Fan</td>
  </tr>
  <tr id="fan4">
    <td><a class="permalink" href="#fan4"><code class="Li">fan4</code></a></td>
    <td>RPM</td>
    <td>Chassis Fan</td>
  </tr>
  <tr id="VID">
    <td><a class="permalink" href="#VID"><code class="Li">VID</code></a></td>
    <td>(none)</td>
    <td>CPU VID code (selected chips only)</td>
  </tr>
</table>
<p class="Pp">Each temperature and voltage sensor has programmable hardware
    high- and low-limits; fan sensors have only a low-limit. These limits can be
    set using the <a class="Xr">envstat(8)</a> utility. Due to hardware
    limitations, the minimum permissible value for the fan speed low-limits is
    83 RPM.</p>
<p class="Pp" id="Trange">Temperature sensors also have <i class="Em">Tmin</i>,
    <a class="permalink" href="#Trange"><i class="Em">Trange</i></a>,
    <i class="Em">Thyst</i>, and <i class="Em">Ttherm</i>
    <a class="Xr">sysctl(8)</a> variables; these values are used by the fan
    speed controllers. Their values are in units of degC, since this is the unit
    which is programmed into the device registers.</p>
<p class="Pp">All members of the dbCool family support Pulse-Width Modulated
    (PWM) fan speed control based on temperature thresholds - the fan will spin
    up when its associated thermal sensor(s) exceeds its configured
    <i class="Em">Tmin</i> value. The fan will go faster as the temperature
    rises, and will slow down as the temperature falls. If the temperature
    exceeds the sensor's <i class="Em">Ttherm</i> value, the THERM signal will
    be asserted, and if enabled the fan will run at full speed. The fan will be
    turned off when the sensor(s) that triggered it reports a temperature which
    is at least <i class="Em">Thyst</i> degrees below its <i class="Em">Tmin</i>
    threshold.</p>
<p class="Pp">Each fan controller is programmable using the following
    <a class="Xr">sysctl(8)</a> variables.</p>
<div class="Bd Pp Bd-indent Li">
<pre>hw.dbcool0.fan_ctl_0.behavior
hw.dbcool0.fan_ctl_0.min_duty
hw.dbcool0.fan_ctl_0.max_duty
hw.dbcool0.fan_ctl_0.cur_duty</pre>
</div>
<p class="Pp" id="range">The <i class="Em">behavior</i> variable controls the
    selection of temperature sensors associated with the fan controller. When
    the associated temperature sensor reaches its <i class="Em">Tmin</i> value,
    the fan controller starts the fan at its minimum duty cycle; when the
    associated temperature sensor reaches its <i class="Em">Ttherm</i> value and
    asserts the THERM signal (or if an external THERM signal is asserted), the
    fan controller sets the fan speed to a 100% duty cycle. Between these two
    settings, each temperature sensor is used to calculate a duty cycle linearly
    based on the slope defined by the temperature sensor's
    <a class="permalink" href="#range"><i class="Em">range</i></a> variable.
    When the associated temperature falls at least <i class="Em">Thyst</i>
    degrees below its <i class="Em">Tmin</i> value, the fan controller will turn
    off the fan. (On the ADM1030, the value for <i class="Em">Thyst</i> is fixed
    at 5 degC.)</p>
<p class="Pp">Valid values for the <i class="Em">behavior</i> variable are:</p>
<div class="Bd Pp Bd-indent Li">
<pre>local           (not available on ADM1030)
remote1
remote2         (not available on ADM1030)
local+remote2   (not available on ADM1030)
all-temps
full-speed      (not available on ADM1030)
manual
disabled</pre>
</div>
<p class="Pp">When the <i class="Em">behavior</i> variable is set to
    &#x201C;manual&#x201D;, the <i class="Em">cur-duty</i> variable becomes
    user-writable and can be set to any value between 0 and 100 inclusive to
    control the fan's duty cycle manually. In all other
    <i class="Em">behavior</i> modes, the <i class="Em">cur-duty</i> variable is
    read-only and updates are ignored.</p>
<p class="Pp" id="min-duty">The
    <a class="permalink" href="#min-duty"><i class="Em">min-duty</i></a> and
    <i class="Em">max-duty</i> variables define the range over which the fan
    controller will manage the fan's duty cycle. On the ADM1030, these values
    are not separately controllable. The <i class="Em">max-duty</i> is fixed at
    100%, and the <i class="Em">cur-duty</i> variable is used to specify the
    minimum duty cycle when the fan controller is running in automatic mode.</p>
<p class="Pp">Note that the duty-cycle value does not directly correspond to the
    fan's speed. That is, a 33% duty cycle does not mean that the fan runs at
    33% of its maximum speed; in actuality, a 33% duty cycle drives the fan at a
    speed close to 50% of its maximum. Fan speed correlates approximately to the
    square root of the duty cycle.</p>
</section>
<section class="Sh">
<h1 class="Sh" id="EXAMPLES"><a class="permalink" href="#EXAMPLES">EXAMPLES</a></h1>
<p class="Pp">The <a class="Xr">envstat(8)</a> utility can be used to determine
    the sensors supported:</p>
<div class="Bd Pp Bd-indent Li">
<pre>            Current  CritMax  WarnMax  WarnMin  CritMin Unit
 l_temp:     44.250                                     degC
r1_temp:     41.250                                     degC
r2_temp:        N/A
   Vccp:      0.002                                     V
    Vcc:      3.351                                     V
   fan1:        N/A
   fan2:        N/A
   fan3:        N/A
   fan4:        N/A</pre>
</div>
<p class="Pp">Using this information, the following commands in
    <span class="Pa">/etc/envsys.conf</span> will set appropriate limits for CPU
    temperature and chip supply voltage, and powerd will be notified if the
    limits are exceeded:</p>
<div class="Bd Pp Bd-indent Li">
<pre>dbcool0 {
        sensor1 {
                warning-max  = 60C;
                critical-max = 65C;
        }
        sensor4 {
                critical-min = 3.1;
                warning-min =  3.2;
                critical-max = 3.5;
        }
}</pre>
</div>
</section>
<section class="Sh">
<h1 class="Sh" id="SEE_ALSO"><a class="permalink" href="#SEE_ALSO">SEE
  ALSO</a></h1>
<p class="Pp"><a class="Xr">envsys(4)</a>, <a class="Xr">iic(4)</a>,
    <a class="Xr">envstat(8)</a>, <a class="Xr">powerd(8)</a>,
    <a class="Xr">sysctl(8)</a></p>
</section>
<section class="Sh">
<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
<p class="Pp">The <code class="Nm">dbcool</code> device appeared in
    <span class="Ux">NetBSD 5.0</span>.</p>
</section>
<section class="Sh">
<h1 class="Sh" id="BUGS"><a class="permalink" href="#BUGS">BUGS</a></h1>
<p class="Pp">Although the sensor limit registers can be programmed, there is
    currently no use of the dbCool chips' ability to generate an SMBus interrupt
    when the limits are exceeded. Limit checking and event generation are done
    in software, and are performed only when the sensor values are polled and
    refreshed.</p>
<p class="Pp">The ADT7466 chip, although officially a member of the dbCool
    family, is programmed quite differently. The fan controllers on this chip
    are not currently implemented.</p>
<p class="Pp">The PECI (Processor Environment Control Interface) temperature
    sensors and the associated PWM behavior modes on the ADT7490 are not
    currently supported.</p>
</section>
</div>
<table class="foot">
  <tr>
    <td class="foot-date">June 10, 2016</td>
    <td class="foot-os">NetBSD 10.1</td>
  </tr>
</table>