1 |
62 |
marcus.erl |
Kernel driver smsc47m192
|
2 |
|
|
========================
|
3 |
|
|
|
4 |
|
|
Supported chips:
|
5 |
|
|
* SMSC LPC47M192, LPC47M15x, LPC47M292 and LPC47M997
|
6 |
|
|
Prefix: 'smsc47m192'
|
7 |
|
|
Addresses scanned: I2C 0x2c - 0x2d
|
8 |
|
|
Datasheet: The datasheet for LPC47M192 is publicly available from
|
9 |
|
|
http://www.smsc.com/
|
10 |
|
|
The LPC47M15x, LPC47M292 and LPC47M997 are compatible for
|
11 |
|
|
hardware monitoring.
|
12 |
|
|
|
13 |
|
|
Author: Hartmut Rick
|
14 |
|
|
Special thanks to Jean Delvare for careful checking
|
15 |
|
|
of the code and many helpful comments and suggestions.
|
16 |
|
|
|
17 |
|
|
|
18 |
|
|
Description
|
19 |
|
|
-----------
|
20 |
|
|
|
21 |
|
|
This driver implements support for the hardware sensor capabilities
|
22 |
|
|
of the SMSC LPC47M192 and compatible Super-I/O chips.
|
23 |
|
|
|
24 |
|
|
These chips support 3 temperature channels and 8 voltage inputs
|
25 |
|
|
as well as CPU voltage VID input.
|
26 |
|
|
|
27 |
|
|
They do also have fan monitoring and control capabilities, but the
|
28 |
|
|
these features are accessed via ISA bus and are not supported by this
|
29 |
|
|
driver. Use the 'smsc47m1' driver for fan monitoring and control.
|
30 |
|
|
|
31 |
|
|
Voltages and temperatures are measured by an 8-bit ADC, the resolution
|
32 |
|
|
of the temperatures is 1 bit per degree C.
|
33 |
|
|
Voltages are scaled such that the nominal voltage corresponds to
|
34 |
|
|
192 counts, i.e. 3/4 of the full range. Thus the available range for
|
35 |
|
|
each voltage channel is 0V ... 255/192*(nominal voltage), the resolution
|
36 |
|
|
is 1 bit per (nominal voltage)/192.
|
37 |
|
|
Both voltage and temperature values are scaled by 1000, the sys files
|
38 |
|
|
show voltages in mV and temperatures in units of 0.001 degC.
|
39 |
|
|
|
40 |
|
|
The +12V analog voltage input channel (in4_input) is multiplexed with
|
41 |
|
|
bit 4 of the encoded CPU voltage. This means that you either get
|
42 |
|
|
a +12V voltage measurement or a 5 bit CPU VID, but not both.
|
43 |
|
|
The default setting is to use the pin as 12V input, and use only 4 bit VID.
|
44 |
|
|
This driver assumes that the information in the configuration register
|
45 |
|
|
is correct, i.e. that the BIOS has updated the configuration if
|
46 |
|
|
the motherboard has this input wired to VID4.
|
47 |
|
|
|
48 |
|
|
The temperature and voltage readings are updated once every 1.5 seconds.
|
49 |
|
|
Reading them more often repeats the same values.
|
50 |
|
|
|
51 |
|
|
|
52 |
|
|
sysfs interface
|
53 |
|
|
---------------
|
54 |
|
|
|
55 |
|
|
in0_input - +2.5V voltage input
|
56 |
|
|
in1_input - CPU voltage input (nominal 2.25V)
|
57 |
|
|
in2_input - +3.3V voltage input
|
58 |
|
|
in3_input - +5V voltage input
|
59 |
|
|
in4_input - +12V voltage input (may be missing if used as VID4)
|
60 |
|
|
in5_input - Vcc voltage input (nominal 3.3V)
|
61 |
|
|
This is the supply voltage of the sensor chip itself.
|
62 |
|
|
in6_input - +1.5V voltage input
|
63 |
|
|
in7_input - +1.8V voltage input
|
64 |
|
|
|
65 |
|
|
in[0-7]_min,
|
66 |
|
|
in[0-7]_max - lower and upper alarm thresholds for in[0-7]_input reading
|
67 |
|
|
|
68 |
|
|
All voltages are read and written in mV.
|
69 |
|
|
|
70 |
|
|
in[0-7]_alarm - alarm flags for voltage inputs
|
71 |
|
|
These files read '1' in case of alarm, '0' otherwise.
|
72 |
|
|
|
73 |
|
|
temp1_input - chip temperature measured by on-chip diode
|
74 |
|
|
temp[2-3]_input - temperature measured by external diodes (one of these would
|
75 |
|
|
typically be wired to the diode inside the CPU)
|
76 |
|
|
|
77 |
|
|
temp[1-3]_min,
|
78 |
|
|
temp[1-3]_max - lower and upper alarm thresholds for temperatures
|
79 |
|
|
|
80 |
|
|
temp[1-3]_offset - temperature offset registers
|
81 |
|
|
The chip adds the offsets stored in these registers to
|
82 |
|
|
the corresponding temperature readings.
|
83 |
|
|
Note that temp1 and temp2 offsets share the same register,
|
84 |
|
|
they cannot both be different from zero at the same time.
|
85 |
|
|
Writing a non-zero number to one of them will reset the other
|
86 |
|
|
offset to zero.
|
87 |
|
|
|
88 |
|
|
All temperatures and offsets are read and written in
|
89 |
|
|
units of 0.001 degC.
|
90 |
|
|
|
91 |
|
|
temp[1-3]_alarm - alarm flags for temperature inputs, '1' in case of alarm,
|
92 |
|
|
'0' otherwise.
|
93 |
|
|
temp[2-3]_input_fault - diode fault flags for temperature inputs 2 and 3.
|
94 |
|
|
A fault is detected if the two pins for the corresponding
|
95 |
|
|
sensor are open or shorted, or any of the two is shorted
|
96 |
|
|
to ground or Vcc. '1' indicates a diode fault.
|
97 |
|
|
|
98 |
|
|
cpu0_vid - CPU voltage as received from the CPU
|
99 |
|
|
|
100 |
|
|
vrm - CPU VID standard used for decoding CPU voltage
|
101 |
|
|
|
102 |
|
|
The *_min, *_max, *_offset and vrm files can be read and
|
103 |
|
|
written, all others are read-only.
|