xref: /openbmc/linux/Documentation/hwmon/lm73.rst (revision ad736c1a)
17ebd8b66SMauro Carvalho ChehabKernel driver lm73
27ebd8b66SMauro Carvalho Chehab==================
37ebd8b66SMauro Carvalho Chehab
47ebd8b66SMauro Carvalho ChehabSupported chips:
57ebd8b66SMauro Carvalho Chehab
67ebd8b66SMauro Carvalho Chehab  * Texas Instruments LM73
77ebd8b66SMauro Carvalho Chehab
87ebd8b66SMauro Carvalho Chehab    Prefix: 'lm73'
97ebd8b66SMauro Carvalho Chehab
107ebd8b66SMauro Carvalho Chehab    Addresses scanned: I2C 0x48, 0x49, 0x4a, 0x4c, 0x4d, and 0x4e
117ebd8b66SMauro Carvalho Chehab
127ebd8b66SMauro Carvalho Chehab    Datasheet: Publicly available at the Texas Instruments website
137ebd8b66SMauro Carvalho Chehab
14ad736c1aSAlexander A. Klimov	       https://www.ti.com/product/lm73
157ebd8b66SMauro Carvalho Chehab
167ebd8b66SMauro Carvalho Chehab
177ebd8b66SMauro Carvalho ChehabAuthor: Guillaume Ligneul <guillaume.ligneul@gmail.com>
187ebd8b66SMauro Carvalho Chehab
197ebd8b66SMauro Carvalho ChehabDocumentation: Chris Verges <kg4ysn@gmail.com>
207ebd8b66SMauro Carvalho Chehab
217ebd8b66SMauro Carvalho Chehab
227ebd8b66SMauro Carvalho ChehabDescription
237ebd8b66SMauro Carvalho Chehab-----------
247ebd8b66SMauro Carvalho Chehab
257ebd8b66SMauro Carvalho ChehabThe LM73 is a digital temperature sensor.  All temperature values are
267ebd8b66SMauro Carvalho Chehabgiven in degrees Celsius.
277ebd8b66SMauro Carvalho Chehab
287ebd8b66SMauro Carvalho ChehabMeasurement Resolution Support
297ebd8b66SMauro Carvalho Chehab------------------------------
307ebd8b66SMauro Carvalho Chehab
317ebd8b66SMauro Carvalho ChehabThe LM73 supports four resolutions, defined in terms of degrees C per
327ebd8b66SMauro Carvalho ChehabLSB: 0.25, 0.125, 0.0625, and 0.3125.  Changing the resolution mode
337ebd8b66SMauro Carvalho Chehabaffects the conversion time of the LM73's analog-to-digital converter.
347ebd8b66SMauro Carvalho ChehabFrom userspace, the desired resolution can be specified as a function of
357ebd8b66SMauro Carvalho Chehabconversion time via the 'update_interval' sysfs attribute for the
367ebd8b66SMauro Carvalho Chehabdevice.  This attribute will normalize ranges of input values to the
377ebd8b66SMauro Carvalho Chehabmaximum times defined for the resolution in the datasheet.
387ebd8b66SMauro Carvalho Chehab
397ebd8b66SMauro Carvalho Chehab    ============= ============= ============
407ebd8b66SMauro Carvalho Chehab    Resolution    Conv. Time    Input Range
417ebd8b66SMauro Carvalho Chehab    (C/LSB)       (msec)        (msec)
427ebd8b66SMauro Carvalho Chehab    ============= ============= ============
437ebd8b66SMauro Carvalho Chehab    0.25          14             0..14
447ebd8b66SMauro Carvalho Chehab    0.125         28            15..28
457ebd8b66SMauro Carvalho Chehab    0.0625        56            29..56
467ebd8b66SMauro Carvalho Chehab    0.03125       112           57..infinity
477ebd8b66SMauro Carvalho Chehab    ============= ============= ============
487ebd8b66SMauro Carvalho Chehab
497ebd8b66SMauro Carvalho ChehabThe following examples show how the 'update_interval' attribute can be
507ebd8b66SMauro Carvalho Chehabused to change the conversion time::
517ebd8b66SMauro Carvalho Chehab
527ebd8b66SMauro Carvalho Chehab    $ echo 0 > update_interval
537ebd8b66SMauro Carvalho Chehab    $ cat update_interval
547ebd8b66SMauro Carvalho Chehab    14
557ebd8b66SMauro Carvalho Chehab    $ cat temp1_input
567ebd8b66SMauro Carvalho Chehab    24250
577ebd8b66SMauro Carvalho Chehab
587ebd8b66SMauro Carvalho Chehab    $ echo 22 > update_interval
597ebd8b66SMauro Carvalho Chehab    $ cat update_interval
607ebd8b66SMauro Carvalho Chehab    28
617ebd8b66SMauro Carvalho Chehab    $ cat temp1_input
627ebd8b66SMauro Carvalho Chehab    24125
637ebd8b66SMauro Carvalho Chehab
647ebd8b66SMauro Carvalho Chehab    $ echo 56 > update_interval
657ebd8b66SMauro Carvalho Chehab    $ cat update_interval
667ebd8b66SMauro Carvalho Chehab    56
677ebd8b66SMauro Carvalho Chehab    $ cat temp1_input
687ebd8b66SMauro Carvalho Chehab    24062
697ebd8b66SMauro Carvalho Chehab
707ebd8b66SMauro Carvalho Chehab    $ echo 85 > update_interval
717ebd8b66SMauro Carvalho Chehab    $ cat update_interval
727ebd8b66SMauro Carvalho Chehab    112
737ebd8b66SMauro Carvalho Chehab    $ cat temp1_input
747ebd8b66SMauro Carvalho Chehab    24031
757ebd8b66SMauro Carvalho Chehab
767ebd8b66SMauro Carvalho ChehabAs shown here, the lm73 driver automatically adjusts any user input for
777ebd8b66SMauro Carvalho Chehab'update_interval' via a step function.  Reading back the
787ebd8b66SMauro Carvalho Chehab'update_interval' value after a write operation will confirm the
797ebd8b66SMauro Carvalho Chehabconversion time actively in use.
807ebd8b66SMauro Carvalho Chehab
817ebd8b66SMauro Carvalho ChehabMathematically, the resolution can be derived from the conversion time
827ebd8b66SMauro Carvalho Chehabvia the following function:
837ebd8b66SMauro Carvalho Chehab
847ebd8b66SMauro Carvalho Chehab   g(x) = 0.250 * [log(x/14) / log(2)]
857ebd8b66SMauro Carvalho Chehab
867ebd8b66SMauro Carvalho Chehabwhere 'x' is the output from 'update_interval' and 'g(x)' is the
877ebd8b66SMauro Carvalho Chehabresolution in degrees C per LSB.
887ebd8b66SMauro Carvalho Chehab
897ebd8b66SMauro Carvalho ChehabAlarm Support
907ebd8b66SMauro Carvalho Chehab-------------
917ebd8b66SMauro Carvalho Chehab
927ebd8b66SMauro Carvalho ChehabThe LM73 features a simple over-temperature alarm mechanism.  This
937ebd8b66SMauro Carvalho Chehabfeature is exposed via the sysfs attributes.
947ebd8b66SMauro Carvalho Chehab
957ebd8b66SMauro Carvalho ChehabThe attributes 'temp1_max_alarm' and 'temp1_min_alarm' are flags
967ebd8b66SMauro Carvalho Chehabprovided by the LM73 that indicate whether the measured temperature has
977ebd8b66SMauro Carvalho Chehabpassed the 'temp1_max' and 'temp1_min' thresholds, respectively.  These
987ebd8b66SMauro Carvalho Chehabvalues _must_ be read to clear the registers on the LM73.
99