Loading Documentation/w1/slaves/w1_therm +10 −3 Original line number Diff line number Diff line Loading @@ -34,9 +34,16 @@ currently supported. The driver also doesn't support reduced precision (which would also reduce the conversion time). The module parameter strong_pullup can be set to 0 to disable the strong pullup or 1 to enable. If enabled the 5V strong pullup will be enabled when the conversion is taking place provided the master driver must support the strong pullup (or it falls back to a pullup strong pullup, 1 to enable autodetection or 2 to force strong pullup. In case of autodetection, the driver will use the "READ POWER SUPPLY" command to check if there are pariste powered devices on the bus. If so, it will activate the master's strong pullup. In case the detection of parasite devices using this command fails (seems to be the case with some DS18S20) the strong pullup can be force-enabled. If the strong pullup is enabled, the master's strong pullup will be driven when the conversion is taking place, provided the master driver does support the strong pullup (or it falls back to a pullup resistor). The DS18b20 temperature sensor specification lists a maximum current draw of 1.5mA and that a 5k pullup resistor is not sufficient. The strong pullup is designed to provide the additional Loading drivers/w1/slaves/w1_therm.c +10 −1 Original line number Diff line number Diff line Loading @@ -41,6 +41,14 @@ MODULE_DESCRIPTION("Driver for 1-wire Dallas network protocol, temperature famil * If it was disabled a parasite powered device might not get the require * current to do a temperature conversion. If it is enabled parasite powered * devices have a better chance of getting the current required. * In case the parasite power-detection is not working (seems to be the case * for some DS18S20) the strong pullup can also be forced, regardless of the * power state of the devices. * * Summary of options: * - strong_pullup = 0 Disable strong pullup completely * - strong_pullup = 1 Enable automatic strong pullup detection * - strong_pullup = 2 Force strong pullup */ static int w1_strong_pullup = 1; module_param_named(strong_pullup, w1_strong_pullup, int, 0); Loading Loading @@ -197,7 +205,8 @@ static ssize_t w1_therm_read(struct device *device, continue; /* 750ms strong pullup (or delay) after the convert */ if (!external_power && w1_strong_pullup) if (w1_strong_pullup == 2 || (!external_power && w1_strong_pullup)) w1_next_pullup(dev, tm); w1_write_8(dev, W1_CONVERT_TEMP); Loading Loading
Documentation/w1/slaves/w1_therm +10 −3 Original line number Diff line number Diff line Loading @@ -34,9 +34,16 @@ currently supported. The driver also doesn't support reduced precision (which would also reduce the conversion time). The module parameter strong_pullup can be set to 0 to disable the strong pullup or 1 to enable. If enabled the 5V strong pullup will be enabled when the conversion is taking place provided the master driver must support the strong pullup (or it falls back to a pullup strong pullup, 1 to enable autodetection or 2 to force strong pullup. In case of autodetection, the driver will use the "READ POWER SUPPLY" command to check if there are pariste powered devices on the bus. If so, it will activate the master's strong pullup. In case the detection of parasite devices using this command fails (seems to be the case with some DS18S20) the strong pullup can be force-enabled. If the strong pullup is enabled, the master's strong pullup will be driven when the conversion is taking place, provided the master driver does support the strong pullup (or it falls back to a pullup resistor). The DS18b20 temperature sensor specification lists a maximum current draw of 1.5mA and that a 5k pullup resistor is not sufficient. The strong pullup is designed to provide the additional Loading
drivers/w1/slaves/w1_therm.c +10 −1 Original line number Diff line number Diff line Loading @@ -41,6 +41,14 @@ MODULE_DESCRIPTION("Driver for 1-wire Dallas network protocol, temperature famil * If it was disabled a parasite powered device might not get the require * current to do a temperature conversion. If it is enabled parasite powered * devices have a better chance of getting the current required. * In case the parasite power-detection is not working (seems to be the case * for some DS18S20) the strong pullup can also be forced, regardless of the * power state of the devices. * * Summary of options: * - strong_pullup = 0 Disable strong pullup completely * - strong_pullup = 1 Enable automatic strong pullup detection * - strong_pullup = 2 Force strong pullup */ static int w1_strong_pullup = 1; module_param_named(strong_pullup, w1_strong_pullup, int, 0); Loading Loading @@ -197,7 +205,8 @@ static ssize_t w1_therm_read(struct device *device, continue; /* 750ms strong pullup (or delay) after the convert */ if (!external_power && w1_strong_pullup) if (w1_strong_pullup == 2 || (!external_power && w1_strong_pullup)) w1_next_pullup(dev, tm); w1_write_8(dev, W1_CONVERT_TEMP); Loading