^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) Kernel driver smsc47m192
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) ========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) Supported chips:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) * SMSC LPC47M192, LPC47M15x, LPC47M292 and LPC47M997
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) Prefix: 'smsc47m192'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) Addresses scanned: I2C 0x2c - 0x2d
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) Datasheet: The datasheet for LPC47M192 is publicly available from
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) http://www.smsc.com/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) The LPC47M15x, LPC47M292 and LPC47M997 are compatible for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) hardware monitoring.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) Author:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) - Hartmut Rick <linux@rick.claranet.de>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) - Special thanks to Jean Delvare for careful checking
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) of the code and many helpful comments and suggestions.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) Description
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) -----------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) This driver implements support for the hardware sensor capabilities
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) of the SMSC LPC47M192 and compatible Super-I/O chips.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) These chips support 3 temperature channels and 8 voltage inputs
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) as well as CPU voltage VID input.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) They do also have fan monitoring and control capabilities, but the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) these features are accessed via ISA bus and are not supported by this
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) driver. Use the 'smsc47m1' driver for fan monitoring and control.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) Voltages and temperatures are measured by an 8-bit ADC, the resolution
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) of the temperatures is 1 bit per degree C.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) Voltages are scaled such that the nominal voltage corresponds to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) 192 counts, i.e. 3/4 of the full range. Thus the available range for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) each voltage channel is 0V ... 255/192*(nominal voltage), the resolution
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) is 1 bit per (nominal voltage)/192.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) Both voltage and temperature values are scaled by 1000, the sys files
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) show voltages in mV and temperatures in units of 0.001 degC.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) The +12V analog voltage input channel (in4_input) is multiplexed with
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) bit 4 of the encoded CPU voltage. This means that you either get
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) a +12V voltage measurement or a 5 bit CPU VID, but not both.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) The default setting is to use the pin as 12V input, and use only 4 bit VID.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) This driver assumes that the information in the configuration register
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) is correct, i.e. that the BIOS has updated the configuration if
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) the motherboard has this input wired to VID4.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) The temperature and voltage readings are updated once every 1.5 seconds.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) Reading them more often repeats the same values.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) sysfs interface
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) ---------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) ===================== ==========================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) in0_input +2.5V voltage input
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) in1_input CPU voltage input (nominal 2.25V)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) in2_input +3.3V voltage input
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) in3_input +5V voltage input
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) in4_input +12V voltage input (may be missing if used as VID4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) in5_input Vcc voltage input (nominal 3.3V)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) This is the supply voltage of the sensor chip itself.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) in6_input +1.5V voltage input
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) in7_input +1.8V voltage input
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) in[0-7]_min,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) in[0-7]_max lower and upper alarm thresholds for in[0-7]_input reading
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) All voltages are read and written in mV.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) in[0-7]_alarm alarm flags for voltage inputs
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) These files read '1' in case of alarm, '0' otherwise.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) temp1_input chip temperature measured by on-chip diode
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) temp[2-3]_input temperature measured by external diodes (one of these
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) would typically be wired to the diode inside the CPU)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) temp[1-3]_min,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) temp[1-3]_max lower and upper alarm thresholds for temperatures
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) temp[1-3]_offset temperature offset registers
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) The chip adds the offsets stored in these registers to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) the corresponding temperature readings.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) Note that temp1 and temp2 offsets share the same register,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) they cannot both be different from zero at the same time.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97) Writing a non-zero number to one of them will reset the other
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) offset to zero.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) All temperatures and offsets are read and written in
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) units of 0.001 degC.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) temp[1-3]_alarm alarm flags for temperature inputs, '1' in case of alarm,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) '0' otherwise.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) temp[2-3]_input_fault diode fault flags for temperature inputs 2 and 3.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) A fault is detected if the two pins for the corresponding
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) sensor are open or shorted, or any of the two is shorted
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) to ground or Vcc. '1' indicates a diode fault.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) cpu0_vid CPU voltage as received from the CPU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) vrm CPU VID standard used for decoding CPU voltage
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) ===================== ==========================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) The `*_min`, `*_max`, `*_offset` and `vrm` files can be read and written,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) all others are read-only.