Kernel driver smsc47m192¶
Supported chips:
SMSC LPC47M192, LPC47M15x, LPC47M292 and LPC47M997
Prefix: ‘smsc47m192’
Addresses scanned: I2C 0x2c - 0x2d
Datasheet: The datasheet for LPC47M192 is publicly available from
- Author:
- Hartmut Rick <linux@rick.claranet.de>
- Special thanks to Jean Delvare for careful checking of the code and many helpful comments and suggestions.
Description¶
This driver implements support for the hardware sensor capabilities of the SMSC LPC47M192 and compatible Super-I/O chips.
These chips support 3 temperature channels and 8 voltage inputs as well as CPU voltage VID input.
They do also have fan monitoring and control capabilities, but the these features are accessed via ISA bus and are not supported by this driver. Use the ‘smsc47m1’ driver for fan monitoring and control.
Voltages and temperatures are measured by an 8-bit ADC, the resolution of the temperatures is 1 bit per degree C. Voltages are scaled such that the nominal voltage corresponds to 192 counts, i.e. 3/4 of the full range. Thus the available range for each voltage channel is 0V … 255/192*(nominal voltage), the resolution is 1 bit per (nominal voltage)/192. Both voltage and temperature values are scaled by 1000, the sys files show voltages in mV and temperatures in units of 0.001 degC.
The +12V analog voltage input channel (in4_input) is multiplexed with bit 4 of the encoded CPU voltage. This means that you either get a +12V voltage measurement or a 5 bit CPU VID, but not both. The default setting is to use the pin as 12V input, and use only 4 bit VID. This driver assumes that the information in the configuration register is correct, i.e. that the BIOS has updated the configuration if the motherboard has this input wired to VID4.
The temperature and voltage readings are updated once every 1.5 seconds. Reading them more often repeats the same values.
sysfs interface¶
in0_input | +2.5V voltage input |
in1_input | CPU voltage input (nominal 2.25V) |
in2_input | +3.3V voltage input |
in3_input | +5V voltage input |
in4_input | +12V voltage input (may be missing if used as VID4) |
in5_input | Vcc voltage input (nominal 3.3V) This is the supply voltage of the sensor chip itself. |
in6_input | +1.5V voltage input |
in7_input | +1.8V voltage input |
in[0-7]_min, | |
in[0-7]_max | lower and upper alarm thresholds for in[0-7]_input reading All voltages are read and written in mV. |
in[0-7]_alarm | alarm flags for voltage inputs These files read ‘1’ in case of alarm, ‘0’ otherwise. |
temp1_input | chip temperature measured by on-chip diode |
temp[2-3]_input | temperature measured by external diodes (one of these would typically be wired to the diode inside the CPU) |
temp[1-3]_min, | |
temp[1-3]_max | lower and upper alarm thresholds for temperatures |
temp[1-3]_offset | temperature offset registers The chip adds the offsets stored in these registers to the corresponding temperature readings. Note that temp1 and temp2 offsets share the same register, they cannot both be different from zero at the same time. Writing a non-zero number to one of them will reset the other offset to zero. All temperatures and offsets are read and written in units of 0.001 degC. |
temp[1-3]_alarm | alarm flags for temperature inputs, ‘1’ in case of alarm, ‘0’ otherwise. |
temp[2-3]_input_fault | diode fault flags for temperature inputs 2 and 3. A fault is detected if the two pins for the corresponding sensor are open or shorted, or any of the two is shorted to ground or Vcc. ‘1’ indicates a diode fault. |
cpu0_vid | CPU voltage as received from the CPU |
vrm | CPU VID standard used for decoding CPU voltage |
The *_min, *_max, *_offset and vrm files can be read and written, all others are read-only.