1====================== 2Kernel driver w1_therm 3====================== 4 5Supported chips: 6 7 * Maxim ds18*20 based temperature sensors. 8 * Maxim ds1825 based temperature sensors. 9 * GXCAS GC20MH01 temperature sensor. 10 11Author: Evgeniy Polyakov <johnpol@2ka.mipt.ru> 12 13 14Description 15----------- 16 17w1_therm provides basic temperature conversion for ds18*20, ds28ea00, GX20MH01 18devices. 19 20Supported family codes: 21 22==================== ==== 23W1_THERM_DS18S20 0x10 24W1_THERM_DS1822 0x22 25W1_THERM_DS18B20 0x28 26W1_THERM_DS1825 0x3B 27W1_THERM_DS28EA00 0x42 28==================== ==== 29 30Support is provided through the sysfs entry ``w1_slave``. Each open and 31read sequence will initiate a temperature conversion, then provide two 32lines of ASCII output. The first line contains the nine hex bytes 33read along with a calculated crc value and YES or NO if it matched. 34If the crc matched the returned values are retained. The second line 35displays the retained values along with a temperature in millidegrees 36Centigrade after t=. 37 38Alternatively, temperature can be read using ``temperature`` sysfs, it 39returns only the temperature in millidegrees Centigrade. 40 41A bulk read of all devices on the bus could be done writing ``trigger`` 42to ``therm_bulk_read`` entry at w1_bus_master level. This will 43send the convert command to all devices on the bus, and if parasite 44powered devices are detected on the bus (and strong pullup is enabled 45in the module), it will drive the line high during the longer conversion 46time required by parasited powered device on the line. Reading 47``therm_bulk_read`` will return 0 if no bulk conversion pending, 48-1 if at least one sensor still in conversion, 1 if conversion is complete 49but at least one sensor value has not been read yet. Result temperature is 50then accessed by reading the ``temperature`` entry of each device, which 51may return empty if conversion is still in progress. Note that if a bulk 52read is sent but one sensor is not read immediately, the next access to 53``temperature`` on this device will return the temperature measured at the 54time of issue of the bulk read command (not the current temperature). 55 56A strong pullup will be applied during the conversion if required. 57 58``conv_time`` is used to get current conversion time (read), and 59adjust it (write). A temperature conversion time depends on the device type and 60it's current resolution. Default conversion time is set by the driver according 61to the device datasheet. A conversion time for many original device clones 62deviate from datasheet specs. There are three options: 1) manually set the 63correct conversion time by writing a value in milliseconds to ``conv_time``; 2) 64auto measure and set a conversion time by writing ``1`` to 65``conv_time``; 3) use ``features`` to enable poll for conversion 66completion. Options 2, 3 can't be used in parasite power mode. To get back to 67the default conversion time write ``0`` to ``conv_time``. 68 69Writing a resolution value (in bits) to ``w1_slave`` will change the 70precision of the sensor for the next readings. Allowed resolutions are defined by 71the sensor. Resolution is reset when the sensor gets power-cycled. 72 73To store the current resolution in EEPROM, write ``0`` to ``w1_slave``. 74Since the EEPROM has a limited amount of writes (>50k), this command should be 75used wisely. 76 77Alternatively, resolution can be read or written using the dedicated 78``resolution`` entry on each device, if supported by the sensor. 79 80Some non-genuine DS18B20 chips are fixed in 12-bit mode only, so the actual 81resolution is read back from the chip and verified. 82 83Note: Changing the resolution reverts the conversion time to default. 84 85The write-only sysfs entry ``eeprom_cmd`` is an alternative for EEPROM operations. 86Write ``save`` to save device RAM to EEPROM. Write ``restore`` to restore EEPROM 87data in device RAM. 88 89``ext_power`` entry allows checking the power state of each device. Reads 90``0`` if the device is parasite powered, ``1`` if the device is externally powered. 91 92Sysfs ``alarms`` allow read or write TH and TL (Temperature High an Low) alarms. 93Values shall be space separated and in the device range (typical -55 degC 94to 125 degC). Values are integer as they are store in a 8bit register in 95the device. Lowest value is automatically put to TL. Once set, alarms could 96be search at master level. 97 98The module parameter strong_pullup can be set to 0 to disable the 99strong pullup, 1 to enable autodetection or 2 to force strong pullup. 100In case of autodetection, the driver will use the "READ POWER SUPPLY" 101command to check if there are pariste powered devices on the bus. 102If so, it will activate the master's strong pullup. 103In case the detection of parasite devices using this command fails 104(seems to be the case with some DS18S20) the strong pullup can 105be force-enabled. 106 107If the strong pullup is enabled, the master's strong pullup will be 108driven when the conversion is taking place, provided the master driver 109does support the strong pullup (or it falls back to a pullup 110resistor). The DS18b20 temperature sensor specification lists a 111maximum current draw of 1.5mA and that a 5k pullup resistor is not 112sufficient. The strong pullup is designed to provide the additional 113current required. 114 115The DS28EA00 provides an additional two pins for implementing a sequence 116detection algorithm. This feature allows you to determine the physical 117location of the chip in the 1-wire bus without needing pre-existing 118knowledge of the bus ordering. Support is provided through the sysfs 119``w1_seq``. The file will contain a single line with an integer value 120representing the device index in the bus starting at 0. 121 122``features`` sysfs entry controls optional driver settings per device. 123Insufficient power in parasite mode, line noise and insufficient conversion 124time may lead to conversion failure. Original DS18B20 and some clones allow for 125detection of invalid conversion. Write bit mask ``1`` to ``features`` to enable 126checking the conversion success. If byte 6 of scratchpad memory is 0xC after 127conversion and temperature reads 85.00 (powerup value) or 127.94 (insufficient 128power), the driver returns a conversion error. Bit mask ``2`` enables poll for 129conversion completion (normal power only) by generating read cycles on the bus 130after conversion starts. In parasite power mode this feature is not available. 131Feature bit masks may be combined (OR). More details in 132Documentation/ABI/testing/sysfs-driver-w1_therm 133 134GX20MH01 device shares family number 0x28 with DS18*20. The device is generally 135compatible with DS18B20. Added are lowest 2\ :sup:`-5`, 2\ :sup:`-6` temperature 136bits in Config register; R2 bit in Config register enabling 13 and 14 bit 137resolutions. The device is powered up in 14-bit resolution mode. The conversion 138times specified in the datasheet are too low and have to be increased. The 139device supports driver features ``1`` and ``2``. 140