1Kernel driver fscher
2====================
3
4Supported chips:
5  * Fujitsu-Siemens Hermes chip
6    Prefix: 'fscher'
7    Addresses scanned: I2C 0x73
8
9Authors:
10        Reinhard Nissl <rnissl@gmx.de> based on work
11        from Hermann Jung <hej@odn.de>,
12        Frodo Looijaard <frodol@dds.nl>,
13        Philip Edelbrock <phil@netroedge.com>
14
15Description
16-----------
17
18This driver implements support for the Fujitsu-Siemens Hermes chip. It is
19described in the 'Register Set Specification BMC Hermes based Systemboard'
20from Fujitsu-Siemens.
21
22The Hermes chip implements a hardware-based system management, e.g. for
23controlling fan speed and core voltage. There is also a watchdog counter on
24the chip which can trigger an alarm and even shut the system down.
25
26The chip provides three temperature values (CPU, motherboard and
27auxiliary), three voltage values (+12V, +5V and battery) and three fans
28(power supply, CPU and auxiliary).
29
30Temperatures are measured in degrees Celsius. The resolution is 1 degree.
31
32Fan rotation speeds are reported in RPM (rotations per minute). The value
33can be divided by a programmable divider (1, 2 or 4) which is stored on
34the chip.
35
36Voltage sensors (also known as "in" sensors) report their values in volts.
37
38All values are reported as final values from the driver. There is no need
39for further calculations.
40
41
42Detailed description
43--------------------
44
45Below you'll find a single line description of all the bit values. With
46this information, you're able to decode e. g. alarms, wdog, etc. To make
47use of the watchdog, you'll need to set the watchdog time and enable the
48watchdog. After that it is necessary to restart the watchdog time within
49the specified period of time, or a system reset will occur.
50
51* revision
52  READING & 0xff = 0x??: HERMES revision identification
53
54* alarms
55  READING & 0x80 = 0x80: CPU throttling active
56  READING & 0x80 = 0x00: CPU running at full speed
57
58  READING & 0x10 = 0x10: software event (see control:1)
59  READING & 0x10 = 0x00: no software event
60
61  READING & 0x08 = 0x08: watchdog event (see wdog:2)
62  READING & 0x08 = 0x00: no watchdog event
63
64  READING & 0x02 = 0x02: thermal event (see temp*:1)
65  READING & 0x02 = 0x00: no thermal event
66
67  READING & 0x01 = 0x01: fan event (see fan*:1)
68  READING & 0x01 = 0x00: no fan event
69
70  READING & 0x13 ! 0x00: ALERT LED is flashing
71
72* control
73  READING & 0x01 = 0x01: software event
74  READING & 0x01 = 0x00: no software event
75
76  WRITING & 0x01 = 0x01: set software event
77  WRITING & 0x01 = 0x00: clear software event
78
79* watchdog_control
80  READING & 0x80 = 0x80: power off on watchdog event while thermal event
81  READING & 0x80 = 0x00: watchdog power off disabled (just system reset enabled)
82
83  READING & 0x40 = 0x40: watchdog timebase 60 seconds (see also wdog:1)
84  READING & 0x40 = 0x00: watchdog timebase  2 seconds
85
86  READING & 0x10 = 0x10: watchdog enabled
87  READING & 0x10 = 0x00: watchdog disabled
88
89  WRITING & 0x80 = 0x80: enable "power off on watchdog event while thermal event"
90  WRITING & 0x80 = 0x00: disable "power off on watchdog event while thermal event"
91
92  WRITING & 0x40 = 0x40: set watchdog timebase to 60 seconds
93  WRITING & 0x40 = 0x00: set watchdog timebase to  2 seconds
94
95  WRITING & 0x20 = 0x20: disable watchdog
96
97  WRITING & 0x10 = 0x10: enable watchdog / restart watchdog time
98
99* watchdog_state
100  READING & 0x02 = 0x02: watchdog system reset occurred
101  READING & 0x02 = 0x00: no watchdog system reset occurred
102
103  WRITING & 0x02 = 0x02: clear watchdog event
104
105* watchdog_preset
106  READING & 0xff = 0x??: configured watch dog time in units (see wdog:3 0x40)
107
108  WRITING & 0xff = 0x??: configure watch dog time in units
109
110* in*     (0: +5V, 1: +12V, 2: onboard 3V battery)
111  READING: actual voltage value
112
113* temp*_status   (1: CPU sensor, 2: onboard sensor, 3: auxiliary sensor)
114  READING & 0x02 = 0x02: thermal event (overtemperature)
115  READING & 0x02 = 0x00: no thermal event
116
117  READING & 0x01 = 0x01: sensor is working
118  READING & 0x01 = 0x00: sensor is faulty
119
120  WRITING & 0x02 = 0x02: clear thermal event
121
122* temp*_input   (1: CPU sensor, 2: onboard sensor, 3: auxiliary sensor)
123  READING: actual temperature value
124
125* fan*_status   (1: power supply fan, 2: CPU fan, 3: auxiliary fan)
126  READING & 0x04 = 0x04: fan event (fan fault)
127  READING & 0x04 = 0x00: no fan event
128
129  WRITING & 0x04 = 0x04: clear fan event
130
131* fan*_div (1: power supply fan, 2: CPU fan, 3: auxiliary fan)
132  	Divisors 2,4 and 8 are supported, both for reading and writing
133
134* fan*_pwm   (1: power supply fan, 2: CPU fan, 3: auxiliary fan)
135  READING & 0xff = 0x00: fan may be switched off
136  READING & 0xff = 0x01: fan must run at least at minimum speed (supply: 6V)
137  READING & 0xff = 0xff: fan must run at maximum speed (supply: 12V)
138  READING & 0xff = 0x??: fan must run at least at given speed (supply: 6V..12V)
139
140  WRITING & 0xff = 0x00: fan may be switched off
141  WRITING & 0xff = 0x01: fan must run at least at minimum speed (supply: 6V)
142  WRITING & 0xff = 0xff: fan must run at maximum speed (supply: 12V)
143  WRITING & 0xff = 0x??: fan must run at least at given speed (supply: 6V..12V)
144
145* fan*_input   (1: power supply fan, 2: CPU fan, 3: auxiliary fan)
146  READING: actual RPM value
147
148
149Limitations
150-----------
151
152* Measuring fan speed
153It seems that the chip counts "ripples" (typical fans produce 2 ripples per
154rotation while VERAX fans produce 18) in a 9-bit register. This register is
155read out every second, then the ripple prescaler (2, 4 or 8) is applied and
156the result is stored in the 8 bit output register. Due to the limitation of
157the counting register to 9 bits, it is impossible to measure a VERAX fan
158properly (even with a prescaler of 8). At its maximum speed of 3500 RPM the
159fan produces 1080 ripples per second which causes the counting register to
160overflow twice, leading to only 186 RPM.
161
162* Measuring input voltages
163in2 ("battery") reports the voltage of the onboard lithium battery and not
164+3.3V from the power supply.
165
166* Undocumented features
167Fujitsu-Siemens Computers has not documented all features of the chip so
168far. Their software, System Guard, shows that there are a still some
169features which cannot be controlled by this implementation.
170