diff options
Diffstat (limited to 'drivers/w1/w1_io.c')
-rw-r--r-- | drivers/w1/w1_io.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/drivers/w1/w1_io.c b/drivers/w1/w1_io.c index 3ebe9726a9e5..8e8b64cfafb6 100644 --- a/drivers/w1/w1_io.c +++ b/drivers/w1/w1_io.c | |||
@@ -390,6 +390,32 @@ int w1_reset_select_slave(struct w1_slave *sl) | |||
390 | EXPORT_SYMBOL_GPL(w1_reset_select_slave); | 390 | EXPORT_SYMBOL_GPL(w1_reset_select_slave); |
391 | 391 | ||
392 | /** | 392 | /** |
393 | * When the workflow with a slave amongst many requires several | ||
394 | * successive commands a reset between each, this function is similar | ||
395 | * to doing a reset then a match ROM for the last matched ROM. The | ||
396 | * advantage being that the matched ROM step is skipped in favor of the | ||
397 | * resume command. The slave must support the command of course. | ||
398 | * | ||
399 | * If the bus has only one slave, traditionnaly the match ROM is skipped | ||
400 | * and a "SKIP ROM" is done for efficiency. On multi-slave busses, this | ||
401 | * doesn't work of course, but the resume command is the next best thing. | ||
402 | * | ||
403 | * The w1 master lock must be held. | ||
404 | * | ||
405 | * @param dev the master device | ||
406 | */ | ||
407 | int w1_reset_resume_command(struct w1_master *dev) | ||
408 | { | ||
409 | if (w1_reset_bus(dev)) | ||
410 | return -1; | ||
411 | |||
412 | /* This will make only the last matched slave perform a skip ROM. */ | ||
413 | w1_write_8(dev, W1_RESUME_CMD); | ||
414 | return 0; | ||
415 | } | ||
416 | EXPORT_SYMBOL_GPL(w1_reset_resume_command); | ||
417 | |||
418 | /** | ||
393 | * Put out a strong pull-up of the specified duration after the next write | 419 | * Put out a strong pull-up of the specified duration after the next write |
394 | * operation. Not all hardware supports strong pullups. Hardware that | 420 | * operation. Not all hardware supports strong pullups. Hardware that |
395 | * doesn't support strong pullups will sleep for the given time after the | 421 | * doesn't support strong pullups will sleep for the given time after the |