Lines Matching +full:ring +full:- +full:disable +full:- +full:pullup
1 // SPDX-License-Identifier: GPL-2.0-or-later
31 * Allow the strong pullup to be disabled, but default to enabled.
35 * In case the parasite power-detection is not working (seems to be the case
36 * for some DS18S20) the strong pullup can also be forced, regardless of the
40 * - strong_pullup = 0 Disable strong pullup completely
41 * - strong_pullup = 1 Enable automatic strong pullup detection
42 * - strong_pullup = 2 Force strong pullup
66 #define MIN_TEMP -55 /* min temperature that can be measured */
102 (((struct w1_therm_family_data *)(sl->family_data))->specific_functions)
105 * return the power mode of the sl slave : 1-ext, 0-parasite, <0 unknown
109 (((struct w1_therm_family_data *)(sl->family_data))->external_powered)
116 (((struct w1_therm_family_data *)(sl->family_data))->resolution)
123 (((struct w1_therm_family_data *)(sl->family_data))->conv_time_override)
130 (((struct w1_therm_family_data *)(sl->family_data))->features)
135 * * -1: conversion is in progress
139 (((struct w1_therm_family_data *)(sl->family_data))->convert_triggered)
143 (&((struct w1_therm_family_data *)family_data)->refcnt)
148 * struct w1_therm_family_converter - bind device specific functions
149 * @broken: flag for non-registred families
172 * struct w1_therm_family_data - device data
177 * -x error or undefined
181 * @features: bit mask - enable temperature validity check, poll for completion
196 * struct therm_info - store temperature reading
210 * reset_select_slave() - reset and select a slave
216 * At the beginning of the such process, sl->master->slave_count is 1 even if
226 * convert_t() - Query the device for temperature conversion and read
230 * Return: 0 if success, -kernel error code otherwise
235 * read_scratchpad() - read the data in device RAM
239 * Return: 0 if success, -kernel error code otherwise
244 * write_scratchpad() - write nb_bytes in the device RAM
249 * Return: 0 if success, -kernel error code otherwise
254 * copy_scratchpad() - Copy the content of scratchpad in device EEPROM
257 * Return: 0 if success, -kernel error code otherwise
262 * recall_eeprom() - Restore EEPROM data to device RAM
265 * Return: 0 if success, -kernel error code otherwise
270 * read_powermode() - Query the power mode of the slave
284 * trigger_bulk_read() - function to trigger a bulk read on the bus
291 * Return: 0 if success, -kernel error code otherwise
363 * w1_therm_add_slave() - Called when a new slave is discovered
369 * Return: 0 - If success, negative kernel code otherwise
374 * w1_therm_remove_slave() - Called when a slave is removed
443 return -EOPNOTSUPP; in w1_read()
532 if (!sl->family_data) in w1_DS18B20_convert_time()
533 return -ENODEV; /* device unknown */ in w1_DS18B20_convert_time()
558 ret = 1600; /* GX20MH01 only. Datasheet says 1000ms - not enough */ in w1_DS18B20_convert_time()
568 if (!sl->family_data) in w1_DS18S20_convert_time()
569 return -ENODEV; /* device unknown */ in w1_DS18S20_convert_time()
581 if (!sl->family_data) in w1_DS1825_convert_time()
582 return -ENODEV; /* device unknown */ in w1_DS1825_convert_time()
634 return -EINVAL; in w1_DS18B20_set_resolution()
637 val = (val - W1_THERM_RESOLUTION_MIN) << W1_THERM_RESOLUTION_SHIFT; in w1_DS18B20_set_resolution()
670 return -EIO; in w1_DS18B20_set_resolution()
698 * w1_DS18B20_convert_temp() - temperature computation for DS18B20
710 /* Signed 16-bit value to unsigned, cpu order */ in w1_DS18B20_convert_temp()
713 /* Config register bit R2 = 1 - GX20MH01 in 13 or 14 bit resolution mode */ in w1_DS18B20_convert_temp()
718 t = (s16) bv; /* Degrees, lowest bit is 2^-6 */ in w1_DS18B20_convert_temp()
719 return (int)t * 1000 / 64; /* Sign-extend to int; millidegrees */ in w1_DS18B20_convert_temp()
721 t = (s16)bv; /* Degrees, lowest bit is 2^-4 */ in w1_DS18B20_convert_temp()
722 return (int)t * 1000 / 16; /* Sign-extend to int; millidegrees */ in w1_DS18B20_convert_temp()
726 * w1_DS18S20_convert_temp() - temperature computation for DS18S20
745 t = 1000*(-1*(s32)(0x100-rom[0]) >> 1); in w1_DS18S20_convert_temp()
747 t -= 250; in w1_DS18S20_convert_temp()
748 h = 1000*((s32)rom[7] - (s32)rom[6]); in w1_DS18S20_convert_temp()
756 * w1_DS1825_convert_temp() - temperature computation for DS1825
770 /* Signed 16-bit value to unsigned, cpu order */ in w1_DS1825_convert_temp()
773 /* Config register bit 7 = 1 - MA31850 found, 14 bit resolution */ in w1_DS1825_convert_temp()
777 bv = (bv & 0xFFFC); /* Degrees, lowest 4 bits are 2^-1, 2^-2 and 2 zero bits */ in w1_DS1825_convert_temp()
779 t = (s16)bv; /* Degrees, lowest bit is 2^-4 */ in w1_DS1825_convert_temp()
780 return (int)t * 1000 / 16; /* Sign-extend to int; millidegrees */ in w1_DS1825_convert_temp()
839 * device_family() - Retrieve a pointer on &struct w1_therm_family_converter
850 if (w1_therm_families[i].f->fid == sl->family->fid) { in device_family()
859 * bus_mutex_lock() - Acquire the mutex
877 max_trying--; in bus_mutex_lock()
887 * check_family_data() - Check if family data and specific functions are present
890 * Return: 0 - OK, negative value - error
894 if ((!sl->family_data) || (!SLAVE_SPECIFIC_FUNC(sl))) { in check_family_data()
895 dev_info(&sl->dev, in check_family_data()
897 return -EINVAL; /* No device family */ in check_family_data()
903 * bulk_read_support() - check if slave support bulk read
911 return SLAVE_SPECIFIC_FUNC(sl)->bulk_read; in bulk_read_support()
913 dev_info(&sl->dev, in bulk_read_support()
920 * conversion_time() - get the Tconv for the slave
932 return SLAVE_SPECIFIC_FUNC(sl)->get_conversion_time(sl); in conversion_time()
934 dev_info(&sl->dev, in conversion_time()
937 return -ENODEV; /* No device family */ in conversion_time()
941 * temperature_from_RAM() - Convert the read info to temperature
952 return SLAVE_SPECIFIC_FUNC(sl)->convert(rom); in temperature_from_RAM()
954 dev_info(&sl->dev, in temperature_from_RAM()
961 * int_to_short() - Safe casting of int to short
986 sl->family_data = kzalloc(sizeof(struct w1_therm_family_data), in w1_therm_add_slave()
988 if (!sl->family_data) in w1_therm_add_slave()
989 return -ENOMEM; in w1_therm_add_slave()
991 atomic_set(THERM_REFCNT(sl->family_data), 1); in w1_therm_add_slave()
996 kfree(sl->family_data); in w1_therm_add_slave()
997 return -ENODEV; in w1_therm_add_slave()
1008 int err = device_create_file(&sl->master->dev, in w1_therm_add_slave()
1012 dev_warn(&sl->dev, in w1_therm_add_slave()
1025 dev_warn(&sl->dev, in w1_therm_add_slave()
1031 if (SLAVE_SPECIFIC_FUNC(sl)->get_resolution) { in w1_therm_add_slave()
1033 SLAVE_SPECIFIC_FUNC(sl)->get_resolution(sl); in w1_therm_add_slave()
1036 dev_warn(&sl->dev, in w1_therm_add_slave()
1050 int refcnt = atomic_sub_return(1, THERM_REFCNT(sl->family_data)); in w1_therm_remove_slave()
1053 bulk_read_device_counter--; in w1_therm_remove_slave()
1056 device_remove_file(&sl->master->dev, in w1_therm_remove_slave()
1062 refcnt = atomic_read(THERM_REFCNT(sl->family_data)); in w1_therm_remove_slave()
1064 kfree(sl->family_data); in w1_therm_remove_slave()
1065 sl->family_data = NULL; in w1_therm_remove_slave()
1070 /* Safe version of reset_select_slave - avoid using the one in w_io.c */
1074 u64 rn = le64_to_cpu(*((u64 *)&sl->reg_num)); in reset_select_slave()
1076 if (w1_reset_bus(sl->master)) in reset_select_slave()
1077 return -ENODEV; in reset_select_slave()
1080 w1_write_block(sl->master, match, 9); in reset_select_slave()
1086 * w1_poll_completion - Poll for operation completion, with timeout
1093 * Return: 0 - OK, negative error - timeout
1108 return -EIO; in w1_poll_completion()
1115 struct w1_master *dev_master = sl->master; in convert_t()
1118 int ret = -ENODEV; in convert_t()
1121 if (!sl->family_data) in convert_t()
1129 dev_warn(&sl->dev, in convert_t()
1138 memset(info->rom, 0, sizeof(info->rom)); in convert_t()
1141 atomic_inc(THERM_REFCNT(sl->family_data)); in convert_t()
1143 if (!bus_mutex_lock(&dev_master->bus_mutex)) { in convert_t()
1144 ret = -EAGAIN; /* Didn't acquire the mutex */ in convert_t()
1148 while (max_trying-- && ret) { /* ret should be 0 */ in convert_t()
1150 info->verdict = 0; in convert_t()
1151 info->crc = 0; in convert_t()
1156 /* 750ms strong pullup (or delay) after the convert */ in convert_t()
1165 dev_dbg(&sl->dev, "%s: Timeout\n", __func__); in convert_t()
1168 mutex_unlock(&dev_master->bus_mutex); in convert_t()
1169 } else if (!strong_pullup) { /*no device need pullup */ in convert_t()
1172 ret = -EINTR; in convert_t()
1175 mutex_unlock(&dev_master->bus_mutex); in convert_t()
1176 } else { /*some device need pullup */ in convert_t()
1177 mutex_unlock(&dev_master->bus_mutex); in convert_t()
1180 ret = -EINTR; in convert_t()
1188 (info->rom[6] == 0xC) && in convert_t()
1189 ((info->rom[1] == 0x5 && info->rom[0] == 0x50) || in convert_t()
1190 (info->rom[1] == 0x7 && info->rom[0] == 0xFF)) in convert_t()
1196 ret = -EIO; in convert_t()
1205 mutex_unlock(&dev_master->bus_mutex); in convert_t()
1207 atomic_dec(THERM_REFCNT(sl->family_data)); in convert_t()
1216 struct w1_master *dev_master = sl->master; in conv_time_measure()
1218 int ret = -ENODEV; in conv_time_measure()
1221 if (!sl->family_data) in conv_time_measure()
1230 return -EINVAL; in conv_time_measure()
1233 memset(info->rom, 0, sizeof(info->rom)); in conv_time_measure()
1236 atomic_inc(THERM_REFCNT(sl->family_data)); in conv_time_measure()
1238 if (!bus_mutex_lock(&dev_master->bus_mutex)) { in conv_time_measure()
1239 ret = -EAGAIN; /* Didn't acquire the mutex */ in conv_time_measure()
1243 while (max_trying-- && ret) { /* ret should be 0 */ in conv_time_measure()
1244 info->verdict = 0; in conv_time_measure()
1245 info->crc = 0; in conv_time_measure()
1250 /*no device need pullup */ in conv_time_measure()
1256 dev_dbg(&sl->dev, "%s: Timeout\n", __func__); in conv_time_measure()
1261 *conv_time = jiffies_to_msecs(j_end-j_start)*12/10; in conv_time_measure()
1265 ret = -EIO; in conv_time_measure()
1268 mutex_unlock(&dev_master->bus_mutex); in conv_time_measure()
1275 mutex_unlock(&dev_master->bus_mutex); in conv_time_measure()
1277 atomic_dec(THERM_REFCNT(sl->family_data)); in conv_time_measure()
1284 struct w1_master *dev_master = sl->master; in read_scratchpad()
1286 int ret = -ENODEV; in read_scratchpad()
1288 info->verdict = 0; in read_scratchpad()
1290 if (!sl->family_data) in read_scratchpad()
1293 memset(info->rom, 0, sizeof(info->rom)); in read_scratchpad()
1296 atomic_inc(THERM_REFCNT(sl->family_data)); in read_scratchpad()
1298 if (!bus_mutex_lock(&dev_master->bus_mutex)) { in read_scratchpad()
1299 ret = -EAGAIN; /* Didn't acquire the mutex */ in read_scratchpad()
1303 while (max_trying-- && ret) { /* ret should be 0 */ in read_scratchpad()
1310 nb_bytes_read = w1_read_block(dev_master, info->rom, 9); in read_scratchpad()
1312 dev_warn(&sl->dev, in read_scratchpad()
1315 ret = -EIO; in read_scratchpad()
1318 info->crc = w1_calc_crc8(info->rom, 8); in read_scratchpad()
1320 if (info->rom[8] == info->crc) { in read_scratchpad()
1321 info->verdict = 1; in read_scratchpad()
1324 ret = -EIO; /* CRC not checked */ in read_scratchpad()
1328 mutex_unlock(&dev_master->bus_mutex); in read_scratchpad()
1331 atomic_dec(THERM_REFCNT(sl->family_data)); in read_scratchpad()
1338 struct w1_master *dev_master = sl->master; in write_scratchpad()
1340 int ret = -ENODEV; in write_scratchpad()
1342 if (!sl->family_data) in write_scratchpad()
1346 atomic_inc(THERM_REFCNT(sl->family_data)); in write_scratchpad()
1348 if (!bus_mutex_lock(&dev_master->bus_mutex)) { in write_scratchpad()
1349 ret = -EAGAIN; /* Didn't acquire the mutex */ in write_scratchpad()
1353 while (max_trying-- && ret) { /* ret should be 0 */ in write_scratchpad()
1361 mutex_unlock(&dev_master->bus_mutex); in write_scratchpad()
1364 atomic_dec(THERM_REFCNT(sl->family_data)); in write_scratchpad()
1371 struct w1_master *dev_master = sl->master; in copy_scratchpad()
1373 int t_write, ret = -ENODEV; in copy_scratchpad()
1376 if (!sl->family_data) in copy_scratchpad()
1385 atomic_inc(THERM_REFCNT(sl->family_data)); in copy_scratchpad()
1387 if (!bus_mutex_lock(&dev_master->bus_mutex)) { in copy_scratchpad()
1388 ret = -EAGAIN; /* Didn't acquire the mutex */ in copy_scratchpad()
1392 while (max_trying-- && ret) { /* ret should be 0 */ in copy_scratchpad()
1397 /* 10ms strong pullup (or delay) after the convert */ in copy_scratchpad()
1406 ret = -EINTR; in copy_scratchpad()
1416 mutex_unlock(&dev_master->bus_mutex); in copy_scratchpad()
1418 atomic_dec(THERM_REFCNT(sl->family_data)); in copy_scratchpad()
1425 struct w1_master *dev_master = sl->master; in recall_eeprom()
1427 int ret = -ENODEV; in recall_eeprom()
1429 if (!sl->family_data) in recall_eeprom()
1433 atomic_inc(THERM_REFCNT(sl->family_data)); in recall_eeprom()
1435 if (!bus_mutex_lock(&dev_master->bus_mutex)) { in recall_eeprom()
1436 ret = -EAGAIN; /* Didn't acquire the mutex */ in recall_eeprom()
1440 while (max_trying-- && ret) { /* ret should be 0 */ in recall_eeprom()
1450 mutex_unlock(&dev_master->bus_mutex); in recall_eeprom()
1453 atomic_dec(THERM_REFCNT(sl->family_data)); in recall_eeprom()
1460 struct w1_master *dev_master = sl->master; in read_powermode()
1462 int ret = -ENODEV; in read_powermode()
1464 if (!sl->family_data) in read_powermode()
1468 atomic_inc(THERM_REFCNT(sl->family_data)); in read_powermode()
1470 if (!bus_mutex_lock(&dev_master->bus_mutex)) { in read_powermode()
1471 ret = -EAGAIN; /* Didn't acquire the mutex */ in read_powermode()
1475 while ((max_trying--) && (ret < 0)) { in read_powermode()
1488 mutex_unlock(&dev_master->bus_mutex); in read_powermode()
1491 atomic_dec(THERM_REFCNT(sl->family_data)); in read_powermode()
1501 int ret = -ENODEV; in trigger_bulk_read()
1507 * so we can apply a strong pullup if required in trigger_bulk_read()
1509 list_for_each_entry(sl, &dev_master->slist, w1_slave_entry) { in trigger_bulk_read()
1510 if (!sl->family_data) in trigger_bulk_read()
1530 if (!bus_mutex_lock(&dev_master->bus_mutex)) { in trigger_bulk_read()
1531 ret = -EAGAIN; /* Didn't acquire the mutex */ in trigger_bulk_read()
1535 while ((max_trying--) && (ret < 0)) { /* ret should be either 0 */ in trigger_bulk_read()
1542 if (strong_pullup) /* Apply pullup if required */ in trigger_bulk_read()
1549 &dev_master->slist, w1_slave_entry) { in trigger_bulk_read()
1551 SLAVE_CONVERT_TRIGGERED(sl) = -1; in trigger_bulk_read()
1554 if (strong_pullup) { /* some device need pullup */ in trigger_bulk_read()
1557 ret = -EINTR; in trigger_bulk_read()
1560 mutex_unlock(&dev_master->bus_mutex); in trigger_bulk_read()
1562 mutex_unlock(&dev_master->bus_mutex); in trigger_bulk_read()
1565 ret = -EINTR; in trigger_bulk_read()
1575 mutex_unlock(&dev_master->bus_mutex); in trigger_bulk_read()
1578 list_for_each_entry(sl, &dev_master->slist, w1_slave_entry) { in trigger_bulk_read()
1593 u8 *family_data = sl->family_data; in w1_slave_show()
1620 c -= snprintf(buf + PAGE_SIZE - c, c, "%02x ", info.rom[i]); in w1_slave_show()
1621 c -= snprintf(buf + PAGE_SIZE - c, c, ": crc=%02x %s\n", in w1_slave_show()
1630 c -= snprintf(buf + PAGE_SIZE - c, c, "%02x ", in w1_slave_show()
1633 c -= snprintf(buf + PAGE_SIZE - c, c, "t=%d\n", in w1_slave_show()
1636 ret = PAGE_SIZE - c; in w1_slave_show()
1655 if ((!sl->family_data) || (!SLAVE_SPECIFIC_FUNC(sl))) { in w1_slave_store()
1664 if (SLAVE_SPECIFIC_FUNC(sl)->set_resolution) in w1_slave_store()
1665 ret = SLAVE_SPECIFIC_FUNC(sl)->set_resolution(sl, val); in w1_slave_store()
1669 dev_warn(device, "%s: Set resolution - error %d\n", __func__, ret); in w1_slave_store()
1674 /* Reset the conversion time to default - it depends on resolution */ in w1_slave_store()
1687 if ((!sl->family_data) || (!SLAVE_SPECIFIC_FUNC(sl))) { in temperature_show()
1723 if (!sl->family_data) { in ext_power_show()
1745 if ((!sl->family_data) || (!SLAVE_SPECIFIC_FUNC(sl))) { in resolution_show()
1752 SLAVE_RESOLUTION(sl) = SLAVE_SPECIFIC_FUNC(sl)->get_resolution(sl); in resolution_show()
1777 if ((!sl->family_data) || (!SLAVE_SPECIFIC_FUNC(sl))) { in resolution_store()
1789 ret = SLAVE_SPECIFIC_FUNC(sl)->set_resolution(sl, val); in resolution_store()
1805 int ret = -EINVAL; /* Invalid argument */ in eeprom_cmd_store()
1808 if (!strncmp(buf, EEPROM_CMD_WRITE, sizeof(EEPROM_CMD_WRITE)-1)) in eeprom_cmd_store()
1811 if (!strncmp(buf, EEPROM_CMD_READ, sizeof(EEPROM_CMD_READ)-1)) in eeprom_cmd_store()
1851 s8 tl, th; /* 1 byte per value + temp ring order */ in alarms_store()
1859 __func__, -ENOMEM); in alarms_store()
1869 "%s: error parsing args %d\n", __func__, -EINVAL); in alarms_store()
1887 "%s: error parsing args %d\n", __func__, -EINVAL); in alarms_store()
1907 * (th : byte 2 - tl: byte 3) in alarms_store()
1925 __func__, -ENODEV); in alarms_store()
1929 ret = SLAVE_SPECIFIC_FUNC(sl)->write_data(sl, new_config_register); in alarms_store()
1946 int ret = -EINVAL; /* Invalid argument */ in therm_bulk_read_store()
1950 sizeof(BULK_TRIGGER_CMD)-1)) in therm_bulk_read_store()
1968 list_for_each_entry(sl, &dev_master->slist, w1_slave_entry) { in therm_bulk_read_show()
1969 if (sl->family_data) { in therm_bulk_read_show()
1971 if (SLAVE_CONVERT_TRIGGERED(sl) == -1) { in therm_bulk_read_show()
1972 ret = -1; in therm_bulk_read_show()
1990 if ((!sl->family_data) || (!SLAVE_SPECIFIC_FUNC(sl))) { in conv_time_show()
2005 return -EINVAL; in conv_time_store()
2008 return -ENODEV; in conv_time_store()
2014 return -EINVAL; in conv_time_store()
2021 return -EIO; in conv_time_store()
2032 if ((!sl->family_data) || (!SLAVE_SPECIFIC_FUNC(sl))) { in features_show()
2049 return -EINVAL; /* invalid number */ in features_store()
2051 if ((!sl->family_data) || (!SLAVE_SPECIFIC_FUNC(sl))) { in features_store()
2053 return -ENODEV; in features_store()
2057 return -EINVAL; in features_store()
2066 dev_warn(&sl->dev, in features_store()
2090 ret = -EIO; in w1_read_temp()
2098 ret = -EOPNOTSUPP; in w1_read_temp()
2127 mutex_lock(&sl->master->bus_mutex); in w1_seq_show()
2129 if (w1_reset_bus(sl->master)) in w1_seq_show()
2131 w1_write_8(sl->master, W1_SKIP_ROM); in w1_seq_show()
2132 w1_write_8(sl->master, W1_42_CHAIN); in w1_seq_show()
2133 w1_write_8(sl->master, W1_42_CHAIN_ON); in w1_seq_show()
2134 w1_write_8(sl->master, W1_42_CHAIN_ON_INV); in w1_seq_show()
2135 msleep(sl->master->pullup_duration); in w1_seq_show()
2138 ack = w1_read_8(sl->master); in w1_seq_show()
2144 if (w1_reset_bus(sl->master)) in w1_seq_show()
2147 w1_write_8(sl->master, W1_42_COND_READ); in w1_seq_show()
2148 w1_read_block(sl->master, (u8 *)&rn, 8); in w1_seq_show()
2150 if (reg_num->family == W1_42_FINISHED_BYTE) in w1_seq_show()
2152 if (sl->reg_num.id == reg_num->id) in w1_seq_show()
2155 if (w1_reset_bus(sl->master)) in w1_seq_show()
2159 w1_write_8(sl->master, W1_MATCH_ROM); in w1_seq_show()
2160 w1_write_block(sl->master, (u8 *)&rn, 8); in w1_seq_show()
2161 w1_write_8(sl->master, W1_42_CHAIN); in w1_seq_show()
2162 w1_write_8(sl->master, W1_42_CHAIN_DONE); in w1_seq_show()
2163 w1_write_8(sl->master, W1_42_CHAIN_DONE_INV); in w1_seq_show()
2166 ack = w1_read_8(sl->master); in w1_seq_show()
2172 if (w1_reset_bus(sl->master)) in w1_seq_show()
2174 w1_write_8(sl->master, W1_SKIP_ROM); in w1_seq_show()
2175 w1_write_8(sl->master, W1_42_CHAIN); in w1_seq_show()
2176 w1_write_8(sl->master, W1_42_CHAIN_OFF); in w1_seq_show()
2177 w1_write_8(sl->master, W1_42_CHAIN_OFF_INV); in w1_seq_show()
2180 ack = w1_read_8(sl->master); in w1_seq_show()
2183 mutex_unlock(&sl->master->bus_mutex); in w1_seq_show()
2185 c -= snprintf(buf + PAGE_SIZE - c, c, "%d\n", seq); in w1_seq_show()
2186 return PAGE_SIZE - c; in w1_seq_show()
2188 mutex_unlock(&sl->master->bus_mutex); in w1_seq_show()
2189 return -EIO; in w1_seq_show()
2218 MODULE_DESCRIPTION("Driver for 1-wire Dallas network protocol, temperature family.");
2220 MODULE_ALIAS("w1-family-" __stringify(W1_THERM_DS18S20));
2221 MODULE_ALIAS("w1-family-" __stringify(W1_THERM_DS1822));
2222 MODULE_ALIAS("w1-family-" __stringify(W1_THERM_DS18B20));
2223 MODULE_ALIAS("w1-family-" __stringify(W1_THERM_DS1825));
2224 MODULE_ALIAS("w1-family-" __stringify(W1_THERM_DS28EA00));