]> git.baikalelectronics.ru Git - kernel.git/commit
w1: ds2408: reset on output_write retry with readback
authorJean-Francois Dagenais <jeff.dagenais@gmail.com>
Thu, 28 Mar 2019 16:41:11 +0000 (12:41 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 25 Apr 2019 17:41:27 +0000 (19:41 +0200)
commita56b9c8d5ec0f47100c97184a4d86689fa08beaf
tree728bf9e3f938acd442063721a9c23c93d0c6cb36
parent49263554d17f946feffb6ea17a4e1a22b45abe58
w1: ds2408: reset on output_write retry with readback

When we have success in 'Channel Access Write' but reading back latch
states fails, a write is retried without doing a proper slave reset.
This leads to protocol errors as the slave treats the next 'Channel
Access Write' as the continuation of previous command.

This commit is fixing this by making sure if the retry loop re-runs, a
reset is performed, whatever the failure (CONFIRM_BYTE or the read
back).

The loop was quite due for a cleanup and this change mandated it. By
isolating the CONFIG_W1_SLAVE_DS2408_READBACK case into it's own
function, we vastly reduce the visual and branching(runtime and
compile-time) noise.

Reported-by: Mariusz Bialonczyk <manio@skyboo.net>
Tested-by: Mariusz Bialonczyk <manio@skyboo.net>
Signed-off-by: Jean-Francois Dagenais <jeff.dagenais@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/w1/slaves/w1_ds2408.c