| Kernel driver smsc47m192 |
| ======================== |
| |
| Supported chips: |
| * SMSC LPC47M192 and LPC47M997 |
| Prefix: 'smsc47m192' |
| Addresses scanned: I2C 0x2c - 0x2d |
| Datasheet: The datasheet for LPC47M192 is publicly available from |
| http://www.smsc.com/ |
| The LPC47M997 is compatible for hardware monitoring. |
| |
| 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 LPC47M997 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. |