Merge tag 'spi-fix-v5.8-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi
[linux-2.6-microblaze.git] / Documentation / w1 / slaves / w1_therm.rst
1 ======================
2 Kernel driver w1_therm
3 ======================
4
5 Supported chips:
6
7   * Maxim ds18*20 based temperature sensors.
8   * Maxim ds1825 based temperature sensors.
9
10 Author: Evgeniy Polyakov <johnpol@2ka.mipt.ru>
11
12
13 Description
14 -----------
15
16 w1_therm provides basic temperature conversion for ds18*20 devices, and the
17 ds28ea00 device.
18
19 Supported family codes:
20
21 ====================    ====
22 W1_THERM_DS18S20        0x10
23 W1_THERM_DS1822         0x22
24 W1_THERM_DS18B20        0x28
25 W1_THERM_DS1825         0x3B
26 W1_THERM_DS28EA00       0x42
27 ====================    ====
28
29 Support is provided through the sysfs w1_slave file. Each open and
30 read sequence will initiate a temperature conversion then provide two
31 lines of ASCII output. The first line contains the nine hex bytes
32 read along with a calculated crc value and YES or NO if it matched.
33 If the crc matched the returned values are retained. The second line
34 displays the retained values along with a temperature in millidegrees
35 Centigrade after t=.
36
37 Alternatively, temperature can be read using temperature sysfs, it
38 return only temperature in millidegrees Centigrade.
39
40 A bulk read of all devices on the bus could be done writing 'trigger'
41 in the therm_bulk_read sysfs entry at w1_bus_master level. This will
42 sent the convert command on all devices on the bus, and if parasite
43 powered devices are detected on the bus (and strong pullup is enable
44 in the module), it will drive the line high during the longer conversion
45 time required by parasited powered device on the line. Reading
46 therm_bulk_read will return 0 if no bulk conversion pending,
47 -1 if at least one sensor still in conversion, 1 if conversion is complete
48 but at least one sensor value has not been read yet. Result temperature is
49 then accessed by reading the temperature sysfs entry of each device, which
50 may return empty if conversion is still in progress. Note that if a bulk
51 read is sent but one sensor is not read immediately, the next access to
52 temperature on this device will return the temperature measured at the
53 time of issue of the bulk read command (not the current temperature).
54
55 Writing a value between 9 and 12 to the sysfs w1_slave file will change the
56 precision of the sensor for the next readings. This value is in (volatile)
57 SRAM, so it is reset when the sensor gets power-cycled.
58
59 To store the current precision configuration into EEPROM, the value 0
60 has to be written to the sysfs w1_slave file. Since the EEPROM has a limited
61 amount of writes (>50k), this command should be used wisely.
62
63 Alternatively, resolution can be set or read (value from 9 to 12) using the
64 dedicated resolution sysfs entry on each device. This sysfs entry is not
65 present for devices not supporting this feature. Driver will adjust the
66 correct conversion time for each device regarding to its resolution setting.
67 In particular, strong pullup will be applied if required during the conversion
68 duration.
69
70 The write-only sysfs entry eeprom is an alternative for EEPROM operations:
71   * 'save': will save device RAM to EEPROM
72   * 'restore': will restore EEPROM data in device RAM.
73
74 ext_power syfs entry allow tho check the power status of each device.
75   * '0': device parasite powered
76   * '1': device externally powered
77
78 sysfs alarms allow read or write TH and TL (Temperature High an Low) alarms.
79 Values shall be space separated and in the device range (typical -55 degC
80 to 125 degC). Values are integer as they are store in a 8bit register in
81 the device. Lowest value is automatically put to TL.Once set, alarms could
82 be search at master level.
83
84 The module parameter strong_pullup can be set to 0 to disable the
85 strong pullup, 1 to enable autodetection or 2 to force strong pullup.
86 In case of autodetection, the driver will use the "READ POWER SUPPLY"
87 command to check if there are pariste powered devices on the bus.
88 If so, it will activate the master's strong pullup.
89 In case the detection of parasite devices using this command fails
90 (seems to be the case with some DS18S20) the strong pullup can
91 be force-enabled.
92
93 If the strong pullup is enabled, the master's strong pullup will be
94 driven when the conversion is taking place, provided the master driver
95 does support the strong pullup (or it falls back to a pullup
96 resistor).  The DS18b20 temperature sensor specification lists a
97 maximum current draw of 1.5mA and that a 5k pullup resistor is not
98 sufficient.  The strong pullup is designed to provide the additional
99 current required.
100
101 The DS28EA00 provides an additional two pins for implementing a sequence
102 detection algorithm.  This feature allows you to determine the physical
103 location of the chip in the 1-wire bus without needing pre-existing
104 knowledge of the bus ordering.  Support is provided through the sysfs
105 w1_seq file.  The file will contain a single line with an integer value
106 representing the device index in the bus starting at 0.