]>
Commit | Line | Data |
---|---|---|
7f15b664 RM |
1 | Kernel driver fscher |
2 | ==================== | |
3 | ||
4 | Supported chips: | |
5 | * Fujitsu-Siemens Hermes chip | |
6 | Prefix: 'fscher' | |
7 | Addresses scanned: I2C 0x73 | |
8 | ||
9 | Authors: | |
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 | ||
15 | Description | |
16 | ----------- | |
17 | ||
18 | This driver implements support for the Fujitsu-Siemens Hermes chip. It is | |
19 | described in the 'Register Set Specification BMC Hermes based Systemboard' | |
20 | from Fujitsu-Siemens. | |
21 | ||
22 | The Hermes chip implements a hardware-based system management, e.g. for | |
23 | controlling fan speed and core voltage. There is also a watchdog counter on | |
24 | the chip which can trigger an alarm and even shut the system down. | |
25 | ||
26 | The chip provides three temperature values (CPU, motherboard and | |
27 | auxiliary), three voltage values (+12V, +5V and battery) and three fans | |
28 | (power supply, CPU and auxiliary). | |
29 | ||
30 | Temperatures are measured in degrees Celsius. The resolution is 1 degree. | |
31 | ||
32 | Fan rotation speeds are reported in RPM (rotations per minute). The value | |
33 | can be divided by a programmable divider (1, 2 or 4) which is stored on | |
34 | the chip. | |
35 | ||
36 | Voltage sensors (also known as "in" sensors) report their values in volts. | |
37 | ||
38 | All values are reported as final values from the driver. There is no need | |
39 | for further calculations. | |
40 | ||
41 | ||
42 | Detailed description | |
43 | -------------------- | |
44 | ||
45 | Below you'll find a single line description of all the bit values. With | |
46 | this information, you're able to decode e. g. alarms, wdog, etc. To make | |
47 | use of the watchdog, you'll need to set the watchdog time and enable the | |
48 | watchdog. After that it is necessary to restart the watchdog time within | |
49 | the 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 | ||
149 | Limitations | |
150 | ----------- | |
151 | ||
152 | * Measuring fan speed | |
153 | It seems that the chip counts "ripples" (typical fans produce 2 ripples per | |
154 | rotation while VERAX fans produce 18) in a 9-bit register. This register is | |
155 | read out every second, then the ripple prescaler (2, 4 or 8) is applied and | |
156 | the result is stored in the 8 bit output register. Due to the limitation of | |
157 | the counting register to 9 bits, it is impossible to measure a VERAX fan | |
158 | properly (even with a prescaler of 8). At its maximum speed of 3500 RPM the | |
159 | fan produces 1080 ripples per second which causes the counting register to | |
160 | overflow twice, leading to only 186 RPM. | |
161 | ||
162 | * Measuring input voltages | |
163 | in2 ("battery") reports the voltage of the onboard lithium battery and not | |
164 | +3.3V from the power supply. | |
165 | ||
166 | * Undocumented features | |
167 | Fujitsu-Siemens Computers has not documented all features of the chip so | |
168 | far. Their software, System Guard, shows that there are a still some | |
169 | features which cannot be controlled by this implementation. |