diff options
Diffstat (limited to 'drivers/w1/slaves/w1_therm.c')
-rw-r--r-- | drivers/w1/slaves/w1_therm.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/drivers/w1/slaves/w1_therm.c b/drivers/w1/slaves/w1_therm.c index fb28acaeed6c..e87f464a6fb0 100644 --- a/drivers/w1/slaves/w1_therm.c +++ b/drivers/w1/slaves/w1_therm.c | |||
@@ -37,6 +37,14 @@ MODULE_LICENSE("GPL"); | |||
37 | MODULE_AUTHOR("Evgeniy Polyakov <johnpol@2ka.mipt.ru>"); | 37 | MODULE_AUTHOR("Evgeniy Polyakov <johnpol@2ka.mipt.ru>"); |
38 | MODULE_DESCRIPTION("Driver for 1-wire Dallas network protocol, temperature family."); | 38 | MODULE_DESCRIPTION("Driver for 1-wire Dallas network protocol, temperature family."); |
39 | 39 | ||
40 | /* Allow the strong pullup to be disabled, but default to enabled. | ||
41 | * If it was disabled a parasite powered device might not get the require | ||
42 | * current to do a temperature conversion. If it is enabled parasite powered | ||
43 | * devices have a better chance of getting the current required. | ||
44 | */ | ||
45 | static int w1_strong_pullup = 1; | ||
46 | module_param_named(strong_pullup, w1_strong_pullup, int, 0); | ||
47 | |||
40 | static u8 bad_roms[][9] = { | 48 | static u8 bad_roms[][9] = { |
41 | {0xaa, 0x00, 0x4b, 0x46, 0xff, 0xff, 0x0c, 0x10, 0x87}, | 49 | {0xaa, 0x00, 0x4b, 0x46, 0xff, 0xff, 0x0c, 0x10, 0x87}, |
42 | {} | 50 | {} |
@@ -192,9 +200,12 @@ static ssize_t w1_therm_read_bin(struct kobject *kobj, | |||
192 | int count = 0; | 200 | int count = 0; |
193 | unsigned int tm = 750; | 201 | unsigned int tm = 750; |
194 | 202 | ||
203 | /* 750ms strong pullup (or delay) after the convert */ | ||
204 | if (w1_strong_pullup) | ||
205 | w1_next_pullup(dev, tm); | ||
195 | w1_write_8(dev, W1_CONVERT_TEMP); | 206 | w1_write_8(dev, W1_CONVERT_TEMP); |
196 | 207 | if (!w1_strong_pullup) | |
197 | msleep(tm); | 208 | msleep(tm); |
198 | 209 | ||
199 | if (!w1_reset_select_slave(sl)) { | 210 | if (!w1_reset_select_slave(sl)) { |
200 | 211 | ||