aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/w1/slaves
diff options
context:
space:
mode:
authorDavid Fries <david@fries.net>2008-10-16 01:04:43 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2008-10-16 14:21:49 -0400
commit6cd159744eaf212f3729d154f3881230a7c19eb2 (patch)
treec2a76ecf90e0b156f480044f26d6379dba46d7eb /drivers/w1/slaves
parent6a158c0de791a81eb761ccf26ead1bd0834abac2 (diff)
W1: feature, w1_therm.c use strong pullup and documentation
Added strong pullup to thermal sensor driver and general documentation on the sensor. Signed-off-by: David Fries <david@fries.net> Signed-off-by: Evgeniy Polyakov <johnpol@2ka.mipt.ru> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/w1/slaves')
-rw-r--r--drivers/w1/slaves/w1_therm.c15
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");
37MODULE_AUTHOR("Evgeniy Polyakov <johnpol@2ka.mipt.ru>"); 37MODULE_AUTHOR("Evgeniy Polyakov <johnpol@2ka.mipt.ru>");
38MODULE_DESCRIPTION("Driver for 1-wire Dallas network protocol, temperature family."); 38MODULE_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 */
45static int w1_strong_pullup = 1;
46module_param_named(strong_pullup, w1_strong_pullup, int, 0);
47
40static u8 bad_roms[][9] = { 48static 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