diff options
Diffstat (limited to 'Documentation/hwmon/fscher')
| -rw-r--r-- | Documentation/hwmon/fscher | 169 |
1 files changed, 169 insertions, 0 deletions
diff --git a/Documentation/hwmon/fscher b/Documentation/hwmon/fscher new file mode 100644 index 000000000000..64031659aff3 --- /dev/null +++ b/Documentation/hwmon/fscher | |||
| @@ -0,0 +1,169 @@ | |||
| 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. | ||
