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