[lm-sensors] [PATCH 2/2 RESEND] hwmon: documentation for new SMSC DME1737 driver

Jean Delvare khali at linux-fr.org
Mon May 21 10:51:21 CEST 2007


Hi Juerg,

On Sun, 20 May 2007 11:16:39 -0700, Juerg Haefliger wrote:
> On 5/20/07, Jean Delvare <khali at linux-fr.org> wrote:
> > Hi Juerg,
> >
> > On Sat, 19 May 2007 14:15:22 -0700, Juerg Haefliger wrote:
> > > Fixed remaining issues from Jean's latest review.
> > >
> > > ---
> > > This patch adds documentation for the new SMSC DME1737 driver.
> > >
> > > Signed-off-by: Juerg Haefliger <juergh at gmail.com>
> >
> > > diff -uprN -X linux-2.6.21-mm1/Documentation/dontdiff -x drivers -x include linux-2.6.21-mm1.orig/Documentation/hwmon/dme1737 linux-2.6.21-mm1/Documentation/hwmon/dme1737
> > > --- linux-2.6.21-mm1.orig/Documentation/hwmon/dme1737 1969-12-31 16:00:00.000000000 -0800
> > > +++ linux-2.6.21-mm1/Documentation/hwmon/dme1737      2007-05-15 16:50:48.000000000 -0700
> > > @@ -0,0 +1,257 @@
> > > +Kernel driver dme1737
> > > +=====================
> > > +
> > > +Supported chips:
> > > +  * SMSC DME1737 and compatibles, Asus A8000
> >
> > This too should be reworded, as the Kconfig help text was.
> 
> How about:
> SMSC DME1737 and compatibles (like Asus A8000)
> 
> 
> >
> > > +    Prefix: 'dme1737'
> > > +    Addresses scanned: I2C 0x2c, 0x2d, 0x2e
> > > +    Datasheet: Provided by SMSC upon request and under NDA
> > > +
> > > +Authors:
> > > +    Juerg Haefliger <juergh at 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.
> > > +
> > > +Note that there is no need to use this parameter if the driver loads without
> > > +complaining. The driver will say so if it is necessary.
> > > +
> > > +
> > > +Description
> > > +-----------
> > > +
> > > +This driver implements support for the hardware monitoring capabilities of the
> > > +SMSC DME1737 and Asus A8000 (which are the same) Super-I/O chips. This chip
> > > +features 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 6 fan speeds
> > > +fan[1-6]. Additionally, the chip implements 5 PWM outputs pwm[1-3,5-6] for
> > > +controlling fan speeds both manually and automatically.
> > > +
> > > +Fan[3-6] and pwm[3,5-6] are optional features and their availability is
> > > +dependent on the configuration of the chip. The driver will detect which
> > > +features are present during initialization and create the sysfs attributes
> > > +accordingly.
> > > +
> > > +
> > > +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):
> > > +
> > > +     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
> > > +
> > > +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 and :
> >
> > The trailing " and " shouldn't be there, should it?
> 
> Correct, the 'and' is a copy-paste leftover.
> 
> 
> > > +
> > > +     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.
> >
> > auto_point1_pwm (no leading capital)?
> 
> Correct, all lower-case.
> 
> 
> > > +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).
> > > diff -uprN -X linux-2.6.21-mm1/Documentation/dontdiff -x drivers -x include linux-2.6.21-mm1.orig/MAINTAINERS linux-2.6.21-mm1/MAINTAINERS
> > > --- linux-2.6.21-mm1.orig/MAINTAINERS 2007-05-07 12:16:20.000000000 -0700
> > > +++ linux-2.6.21-mm1/MAINTAINERS      2007-05-07 12:25:53.000000000 -0700
> > > @@ -1249,6 +1249,12 @@ M:     christopher.leech at intel.com
> > >  L:   linux-kernel at vger.kernel.org
> > >  S:   Maintained
> > >
> > > +DME1737 HARDWARE MONITOR DRIVER
> > > +P:   Juerg Haefliger
> > > +M:   juergh at gmail.com
> > > +L:   lm-sensors at lm-sensors.org
> > > +S:   Maintained
> > > +
> > >  DOCBOOK FOR DOCUMENTATION
> > >  P:   Randy Dunlap
> > >  M:   rdunlap at xenotime.net
> >
> > Other than that, it's OK and I'm taking the patch. I'll adjust it
> > manually based on your reply to my comments.

OK, I've updated all three points. Thanks.

-- 
Jean Delvare




More information about the lm-sensors mailing list