⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fscher

📁 linux 内核源代码
💻
字号:
Kernel driver fscher====================Supported chips:  * Fujitsu-Siemens Hermes chip    Prefix: 'fscher'    Addresses scanned: I2C 0x73Authors:        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 isdescribed in the 'Register Set Specification BMC Hermes based Systemboard'from Fujitsu-Siemens.The Hermes chip implements a hardware-based system management, e.g. forcontrolling fan speed and core voltage. There is also a watchdog counter onthe chip which can trigger an alarm and even shut the system down.The chip provides three temperature values (CPU, motherboard andauxiliary), 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 valuecan be divided by a programmable divider (1, 2 or 4) which is stored onthe 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 needfor further calculations.Detailed description--------------------Below you'll find a single line description of all the bit values. Withthis information, you're able to decode e. g. alarms, wdog, etc. To makeuse of the watchdog, you'll need to set the watchdog time and enable thewatchdog. After that it is necessary to restart the watchdog time withinthe 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 valueLimitations-----------* Measuring fan speedIt seems that the chip counts "ripples" (typical fans produce 2 ripples perrotation while VERAX fans produce 18) in a 9-bit register. This register isread out every second, then the ripple prescaler (2, 4 or 8) is applied andthe result is stored in the 8 bit output register. Due to the limitation ofthe counting register to 9 bits, it is impossible to measure a VERAX fanproperly (even with a prescaler of 8). At its maximum speed of 3500 RPM thefan produces 1080 ripples per second which causes the counting register tooverflow twice, leading to only 186 RPM.* Measuring input voltagesin2 ("battery") reports the voltage of the onboard lithium battery and not+3.3V from the power supply.* Undocumented featuresFujitsu-Siemens Computers has not documented all features of the chip sofar. Their software, System Guard, shows that there are a still somefeatures which cannot be controlled by this implementation.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -