| Kernel driver dme1737 | |
| ===================== | |
| Supported chips: | |
| * SMSC DME1737 and compatibles (like Asus A8000) | |
| Prefix: 'dme1737' | |
| Addresses scanned: I2C 0x2c, 0x2d, 0x2e | |
| Datasheet: Provided by SMSC upon request and under NDA | |
| * SMSC SCH3112, SCH3114, SCH3116 | |
| Prefix: 'sch311x' | |
| Addresses scanned: none, address read from Super-I/O config space | |
| Datasheet: Available on the Internet | |
| * SMSC SCH5027 | |
| Prefix: 'sch5027' | |
| Addresses scanned: I2C 0x2c, 0x2d, 0x2e | |
| Datasheet: Provided by SMSC upon request and under NDA | |
| * SMSC SCH5127 | |
| Prefix: 'sch5127' | |
| Addresses scanned: none, address read from Super-I/O config space | |
| Datasheet: Provided by SMSC upon request and under NDA | |
| Authors: | |
| Juerg Haefliger <juergh@gmail.com> | |
| Module Parameters | |
| ----------------- | |
| * force_start: bool Enables the monitoring of voltage, fan and temp inputs | |
| and PWM output control functions. Using this parameter | |
| shouldn't be required since the BIOS usually takes care | |
| of this. | |
| * probe_all_addr: bool Include non-standard LPC addresses 0x162e and 0x164e | |
| when probing for ISA devices. This is required for the | |
| following boards: | |
| - VIA EPIA SN18000 | |
| Description | |
| ----------- | |
| This driver implements support for the hardware monitoring capabilities of the | |
| SMSC DME1737 and Asus A8000 (which are the same), SMSC SCH5027, SCH311x, | |
| and SCH5127 Super-I/O chips. These chips feature monitoring of 3 temp sensors | |
| temp[1-3] (2 remote diodes and 1 internal), 7 voltages in[0-6] (6 external and | |
| 1 internal) and up to 6 fan speeds fan[1-6]. Additionally, the chips implement | |
| up to 5 PWM outputs pwm[1-3,5-6] for controlling fan speeds both manually and | |
| automatically. | |
| For the DME1737, A8000 and SCH5027, fan[1-2] and pwm[1-2] are always present. | |
| Fan[3-6] and pwm[3,5-6] are optional features and their availability depends on | |
| the configuration of the chip. The driver will detect which features are | |
| present during initialization and create the sysfs attributes accordingly. | |
| For the SCH311x and SCH5127, fan[1-3] and pwm[1-3] are always present and | |
| fan[4-6] and pwm[5-6] don't exist. | |
| The hardware monitoring features of the DME1737, A8000, and SCH5027 are only | |
| accessible via SMBus, while the SCH311x and SCH5127 only provide access via | |
| the ISA bus. The driver will therefore register itself as an I2C client driver | |
| if it detects a DME1737, A8000, or SCH5027 and as a platform driver if it | |
| detects a SCH311x or SCH5127 chip. | |
| Voltage Monitoring | |
| ------------------ | |
| The voltage inputs are sampled with 12-bit resolution and have internal | |
| scaling resistors. The values returned by the driver therefore reflect true | |
| millivolts and don't need scaling. The voltage inputs are mapped as follows | |
| (the last column indicates the input ranges): | |
| DME1737, A8000: | |
| in0: +5VTR (+5V standby) 0V - 6.64V | |
| in1: Vccp (processor core) 0V - 3V | |
| in2: VCC (internal +3.3V) 0V - 4.38V | |
| in3: +5V 0V - 6.64V | |
| in4: +12V 0V - 16V | |
| in5: VTR (+3.3V standby) 0V - 4.38V | |
| in6: Vbat (+3.0V) 0V - 4.38V | |
| SCH311x: | |
| in0: +2.5V 0V - 3.32V | |
| in1: Vccp (processor core) 0V - 2V | |
| in2: VCC (internal +3.3V) 0V - 4.38V | |
| in3: +5V 0V - 6.64V | |
| in4: +12V 0V - 16V | |
| in5: VTR (+3.3V standby) 0V - 4.38V | |
| in6: Vbat (+3.0V) 0V - 4.38V | |
| SCH5027: | |
| in0: +5VTR (+5V standby) 0V - 6.64V | |
| in1: Vccp (processor core) 0V - 3V | |
| in2: VCC (internal +3.3V) 0V - 4.38V | |
| in3: V2_IN 0V - 1.5V | |
| in4: V1_IN 0V - 1.5V | |
| in5: VTR (+3.3V standby) 0V - 4.38V | |
| in6: Vbat (+3.0V) 0V - 4.38V | |
| SCH5127: | |
| in0: +2.5 0V - 3.32V | |
| in1: Vccp (processor core) 0V - 3V | |
| in2: VCC (internal +3.3V) 0V - 4.38V | |
| in3: V2_IN 0V - 1.5V | |
| in4: V1_IN 0V - 1.5V | |
| in5: VTR (+3.3V standby) 0V - 4.38V | |
| in6: Vbat (+3.0V) 0V - 4.38V | |
| Each voltage input has associated min and max limits which trigger an alarm | |
| when crossed. | |
| Temperature Monitoring | |
| ---------------------- | |
| Temperatures are measured with 12-bit resolution and reported in millidegree | |
| Celsius. The chip also features offsets for all 3 temperature inputs which - | |
| when programmed - get added to the input readings. The chip does all the | |
| scaling by itself and the driver therefore reports true temperatures that don't | |
| need any user-space adjustments. The temperature inputs are mapped as follows | |
| (the last column indicates the input ranges): | |
| temp1: Remote diode 1 (3904 type) temperature -127C - +127C | |
| temp2: DME1737 internal temperature -127C - +127C | |
| temp3: Remote diode 2 (3904 type) temperature -127C - +127C | |
| Each temperature input has associated min and max limits which trigger an alarm | |
| when crossed. Additionally, each temperature input has a fault attribute that | |
| returns 1 when a faulty diode or an unconnected input is detected and 0 | |
| otherwise. | |
| Fan Monitoring | |
| -------------- | |
| Fan RPMs are measured with 16-bit resolution. The chip provides inputs for 6 | |
| fan tachometers. All 6 inputs have an associated min limit which triggers an | |
| alarm when crossed. Fan inputs 1-4 provide type attributes that need to be set | |
| to the number of pulses per fan revolution that the connected tachometer | |
| generates. Supported values are 1, 2, and 4. Fan inputs 5-6 only support fans | |
| that generate 2 pulses per revolution. Fan inputs 5-6 also provide a max | |
| attribute that needs to be set to the maximum attainable RPM (fan at 100% duty- | |
| cycle) of the input. The chip adjusts the sampling rate based on this value. | |
| PWM Output Control | |
| ------------------ | |
| This chip features 5 PWM outputs. PWM outputs 1-3 are associated with fan | |
| inputs 1-3 and PWM outputs 5-6 are associated with fan inputs 5-6. PWM outputs | |
| 1-3 can be configured to operate either in manual or automatic mode by setting | |
| the appropriate enable attribute accordingly. PWM outputs 5-6 can only operate | |
| in manual mode, their enable attributes are therefore read-only. When set to | |
| manual mode, the fan speed is set by writing the duty-cycle value to the | |
| appropriate PWM attribute. In automatic mode, the PWM attribute returns the | |
| current duty-cycle as set by the fan controller in the chip. All PWM outputs | |
| support the setting of the output frequency via the freq attribute. | |
| In automatic mode, the chip supports the setting of the PWM ramp rate which | |
| defines how fast the PWM output is adjusting to changes of the associated | |
| temperature input. Associating PWM outputs to temperature inputs is done via | |
| temperature zones. The chip features 3 zones whose assignments to temperature | |
| inputs is static and determined during initialization. These assignments can | |
| be retrieved via the zone[1-3]_auto_channels_temp attributes. Each PWM output | |
| is assigned to one (or hottest of multiple) temperature zone(s) through the | |
| pwm[1-3]_auto_channels_zone attributes. Each PWM output has 3 distinct output | |
| duty-cycles: full, low, and min. Full is internally hard-wired to 255 (100%) | |
| and low and min can be programmed via pwm[1-3]_auto_point1_pwm and | |
| pwm[1-3]_auto_pwm_min, respectively. The thermal thresholds of the zones are | |
| programmed via zone[1-3]_auto_point[1-3]_temp and | |
| zone[1-3]_auto_point1_temp_hyst: | |
| pwm[1-3]_auto_point2_pwm full-speed duty-cycle (255, i.e., 100%) | |
| pwm[1-3]_auto_point1_pwm low-speed duty-cycle | |
| pwm[1-3]_auto_pwm_min min-speed duty-cycle | |
| zone[1-3]_auto_point3_temp full-speed temp (all outputs) | |
| zone[1-3]_auto_point2_temp full-speed temp | |
| zone[1-3]_auto_point1_temp low-speed temp | |
| zone[1-3]_auto_point1_temp_hyst min-speed temp | |
| The chip adjusts the output duty-cycle linearly in the range of auto_point1_pwm | |
| to auto_point2_pwm if the temperature of the associated zone is between | |
| auto_point1_temp and auto_point2_temp. If the temperature drops below the | |
| auto_point1_temp_hyst value, the output duty-cycle is set to the auto_pwm_min | |
| value which only supports two values: 0 or auto_point1_pwm. That means that the | |
| fan either turns completely off or keeps spinning with the low-speed | |
| duty-cycle. If any of the temperatures rise above the auto_point3_temp value, | |
| all PWM outputs are set to 100% duty-cycle. | |
| Following is another representation of how the chip sets the output duty-cycle | |
| based on the temperature of the associated thermal zone: | |
| Duty-Cycle Duty-Cycle | |
| Temperature Rising Temp Falling Temp | |
| ----------- ----------- ------------ | |
| full-speed full-speed full-speed | |
| < linearly adjusted duty-cycle > | |
| low-speed low-speed low-speed | |
| min-speed low-speed | |
| min-speed min-speed min-speed | |
| min-speed min-speed | |
| Sysfs Attributes | |
| ---------------- | |
| Following is a list of all sysfs attributes that the driver provides, their | |
| permissions and a short description: | |
| Name Perm Description | |
| ---- ---- ----------- | |
| cpu0_vid RO CPU core reference voltage in | |
| millivolts. | |
| vrm RW Voltage regulator module version | |
| number. | |
| in[0-6]_input RO Measured voltage in millivolts. | |
| in[0-6]_min RW Low limit for voltage input. | |
| in[0-6]_max RW High limit for voltage input. | |
| in[0-6]_alarm RO Voltage input alarm. Returns 1 if | |
| voltage input is or went outside the | |
| associated min-max range, 0 otherwise. | |
| temp[1-3]_input RO Measured temperature in millidegree | |
| Celsius. | |
| temp[1-3]_min RW Low limit for temp input. | |
| temp[1-3]_max RW High limit for temp input. | |
| temp[1-3]_offset RW Offset for temp input. This value will | |
| be added by the chip to the measured | |
| temperature. | |
| temp[1-3]_alarm RO Alarm for temp input. Returns 1 if temp | |
| input is or went outside the associated | |
| min-max range, 0 otherwise. | |
| temp[1-3]_fault RO Temp input fault. Returns 1 if the chip | |
| detects a faulty thermal diode or an | |
| unconnected temp input, 0 otherwise. | |
| zone[1-3]_auto_channels_temp RO Temperature zone to temperature input | |
| mapping. This attribute is a bitfield | |
| and supports the following values: | |
| 1: temp1 | |
| 2: temp2 | |
| 4: temp3 | |
| zone[1-3]_auto_point1_temp_hyst RW Auto PWM temp point1 hysteresis. The | |
| output of the corresponding PWM is set | |
| to the pwm_auto_min value if the temp | |
| falls below the auto_point1_temp_hyst | |
| value. | |
| zone[1-3]_auto_point[1-3]_temp RW Auto PWM temp points. Auto_point1 is | |
| the low-speed temp, auto_point2 is the | |
| full-speed temp, and auto_point3 is the | |
| temp at which all PWM outputs are set | |
| to full-speed (100% duty-cycle). | |
| fan[1-6]_input RO Measured fan speed in RPM. | |
| fan[1-6]_min RW Low limit for fan input. | |
| fan[1-6]_alarm RO Alarm for fan input. Returns 1 if fan | |
| input is or went below the associated | |
| min value, 0 otherwise. | |
| fan[1-4]_type RW Type of attached fan. Expressed in | |
| number of pulses per revolution that | |
| the fan generates. Supported values are | |
| 1, 2, and 4. | |
| fan[5-6]_max RW Max attainable RPM at 100% duty-cycle. | |
| Required for chip to adjust the | |
| sampling rate accordingly. | |
| pmw[1-3,5-6] RO/RW Duty-cycle of PWM output. Supported | |
| values are 0-255 (0%-100%). Only | |
| writeable if the associated PWM is in | |
| manual mode. | |
| pwm[1-3]_enable RW Enable of PWM outputs 1-3. Supported | |
| values are: | |
| 0: turned off (output @ 100%) | |
| 1: manual mode | |
| 2: automatic mode | |
| pwm[5-6]_enable RO Enable of PWM outputs 5-6. Always | |
| returns 1 since these 2 outputs are | |
| hard-wired to manual mode. | |
| pmw[1-3,5-6]_freq RW Frequency of PWM output. Supported | |
| values are in the range 11Hz-30000Hz | |
| (default is 25000Hz). | |
| pmw[1-3]_ramp_rate RW Ramp rate of PWM output. Determines how | |
| fast the PWM duty-cycle will change | |
| when the PWM is in automatic mode. | |
| Expressed in ms per PWM step. Supported | |
| values are in the range 0ms-206ms | |
| (default is 0, which means the duty- | |
| cycle changes instantly). | |
| pwm[1-3]_auto_channels_zone RW PWM output to temperature zone mapping. | |
| This attribute is a bitfield and | |
| supports the following values: | |
| 1: zone1 | |
| 2: zone2 | |
| 4: zone3 | |
| 6: highest of zone[2-3] | |
| 7: highest of zone[1-3] | |
| pwm[1-3]_auto_pwm_min RW Auto PWM min pwm. Minimum PWM duty- | |
| cycle. Supported values are 0 or | |
| auto_point1_pwm. | |
| pwm[1-3]_auto_point1_pwm RW Auto PWM pwm point. Auto_point1 is the | |
| low-speed duty-cycle. | |
| pwm[1-3]_auto_point2_pwm RO Auto PWM pwm point. Auto_point2 is the | |
| full-speed duty-cycle which is hard- | |
| wired to 255 (100% duty-cycle). | |
| Chip Differences | |
| ---------------- | |
| Feature dme1737 sch311x sch5027 sch5127 | |
| ------------------------------------------------------- | |
| temp[1-3]_offset yes yes | |
| vid yes | |
| zone3 yes yes yes | |
| zone[1-3]_hyst yes yes | |
| pwm min/off yes yes | |
| fan3 opt yes opt yes | |
| pwm3 opt yes opt yes | |
| fan4 opt opt | |
| fan5 opt opt | |
| pwm5 opt opt | |
| fan6 opt opt | |
| pwm6 opt opt |