123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169 |
- Kernel driver fscher
- ====================
- Supported chips:
- * Fujitsu-Siemens Hermes chip
- Prefix: 'fscher'
- Addresses scanned: I2C 0x73
- Authors:
- Reinhard Nissl <rnissl@gmx.de> based on work
- from Hermann Jung <hej@odn.de>,
- Frodo Looijaard <frodol@dds.nl>,
- Philip Edelbrock <phil@netroedge.com>
- Description
- -----------
- This driver implements support for the Fujitsu-Siemens Hermes chip. It is
- described in the 'Register Set Specification BMC Hermes based Systemboard'
- from Fujitsu-Siemens.
- The Hermes chip implements a hardware-based system management, e.g. for
- controlling fan speed and core voltage. There is also a watchdog counter on
- the chip which can trigger an alarm and even shut the system down.
- The chip provides three temperature values (CPU, motherboard and
- auxiliary), three voltage values (+12V, +5V and battery) and three fans
- (power supply, CPU and auxiliary).
- Temperatures are measured in degrees Celsius. The resolution is 1 degree.
- Fan rotation speeds are reported in RPM (rotations per minute). The value
- can be divided by a programmable divider (1, 2 or 4) which is stored on
- the chip.
- Voltage sensors (also known as "in" sensors) report their values in volts.
- All values are reported as final values from the driver. There is no need
- for further calculations.
- Detailed description
- --------------------
- Below you'll find a single line description of all the bit values. With
- this information, you're able to decode e. g. alarms, wdog, etc. To make
- use of the watchdog, you'll need to set the watchdog time and enable the
- watchdog. After that it is necessary to restart the watchdog time within
- the specified period of time, or a system reset will occur.
- * revision
- READING & 0xff = 0x??: HERMES revision identification
- * alarms
- READING & 0x80 = 0x80: CPU throttling active
- READING & 0x80 = 0x00: CPU running at full speed
- READING & 0x10 = 0x10: software event (see control:1)
- READING & 0x10 = 0x00: no software event
- READING & 0x08 = 0x08: watchdog event (see wdog:2)
- READING & 0x08 = 0x00: no watchdog event
- READING & 0x02 = 0x02: thermal event (see temp*:1)
- READING & 0x02 = 0x00: no thermal event
- READING & 0x01 = 0x01: fan event (see fan*:1)
- READING & 0x01 = 0x00: no fan event
- READING & 0x13 ! 0x00: ALERT LED is flashing
- * control
- READING & 0x01 = 0x01: software event
- READING & 0x01 = 0x00: no software event
- WRITING & 0x01 = 0x01: set software event
- WRITING & 0x01 = 0x00: clear software event
- * watchdog_control
- READING & 0x80 = 0x80: power off on watchdog event while thermal event
- READING & 0x80 = 0x00: watchdog power off disabled (just system reset enabled)
- READING & 0x40 = 0x40: watchdog timebase 60 seconds (see also wdog:1)
- READING & 0x40 = 0x00: watchdog timebase 2 seconds
- READING & 0x10 = 0x10: watchdog enabled
- READING & 0x10 = 0x00: watchdog disabled
- WRITING & 0x80 = 0x80: enable "power off on watchdog event while thermal event"
- WRITING & 0x80 = 0x00: disable "power off on watchdog event while thermal event"
- WRITING & 0x40 = 0x40: set watchdog timebase to 60 seconds
- WRITING & 0x40 = 0x00: set watchdog timebase to 2 seconds
- WRITING & 0x20 = 0x20: disable watchdog
- WRITING & 0x10 = 0x10: enable watchdog / restart watchdog time
- * watchdog_state
- READING & 0x02 = 0x02: watchdog system reset occurred
- READING & 0x02 = 0x00: no watchdog system reset occurred
- WRITING & 0x02 = 0x02: clear watchdog event
- * watchdog_preset
- READING & 0xff = 0x??: configured watch dog time in units (see wdog:3 0x40)
- WRITING & 0xff = 0x??: configure watch dog time in units
- * in* (0: +5V, 1: +12V, 2: onboard 3V battery)
- READING: actual voltage value
- * temp*_status (1: CPU sensor, 2: onboard sensor, 3: auxiliary sensor)
- READING & 0x02 = 0x02: thermal event (overtemperature)
- READING & 0x02 = 0x00: no thermal event
- READING & 0x01 = 0x01: sensor is working
- READING & 0x01 = 0x00: sensor is faulty
- WRITING & 0x02 = 0x02: clear thermal event
- * temp*_input (1: CPU sensor, 2: onboard sensor, 3: auxiliary sensor)
- READING: actual temperature value
- * fan*_status (1: power supply fan, 2: CPU fan, 3: auxiliary fan)
- READING & 0x04 = 0x04: fan event (fan fault)
- READING & 0x04 = 0x00: no fan event
- WRITING & 0x04 = 0x04: clear fan event
- * fan*_div (1: power supply fan, 2: CPU fan, 3: auxiliary fan)
- Divisors 2,4 and 8 are supported, both for reading and writing
- * fan*_pwm (1: power supply fan, 2: CPU fan, 3: auxiliary fan)
- READING & 0xff = 0x00: fan may be switched off
- READING & 0xff = 0x01: fan must run at least at minimum speed (supply: 6V)
- READING & 0xff = 0xff: fan must run at maximum speed (supply: 12V)
- READING & 0xff = 0x??: fan must run at least at given speed (supply: 6V..12V)
- WRITING & 0xff = 0x00: fan may be switched off
- WRITING & 0xff = 0x01: fan must run at least at minimum speed (supply: 6V)
- WRITING & 0xff = 0xff: fan must run at maximum speed (supply: 12V)
- WRITING & 0xff = 0x??: fan must run at least at given speed (supply: 6V..12V)
- * fan*_input (1: power supply fan, 2: CPU fan, 3: auxiliary fan)
- READING: actual RPM value
- Limitations
- -----------
- * Measuring fan speed
- It seems that the chip counts "ripples" (typical fans produce 2 ripples per
- rotation while VERAX fans produce 18) in a 9-bit register. This register is
- read out every second, then the ripple prescaler (2, 4 or 8) is applied and
- the result is stored in the 8 bit output register. Due to the limitation of
- the counting register to 9 bits, it is impossible to measure a VERAX fan
- properly (even with a prescaler of 8). At its maximum speed of 3500 RPM the
- fan produces 1080 ripples per second which causes the counting register to
- overflow twice, leading to only 186 RPM.
- * Measuring input voltages
- in2 ("battery") reports the voltage of the onboard lithium battery and not
- +3.3V from the power supply.
- * Undocumented features
- Fujitsu-Siemens Computers has not documented all features of the chip so
- far. Their software, System Guard, shows that there are a still some
- features which cannot be controlled by this implementation.
|