fscher 6.0 KB

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