lkml.org 
[lkml]   [2022]   [Apr]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.4 409/475] w1: w1_therm: fixes w1_seq for ds28ea00 sensors
    Date
    From: Lucas Denefle <lucas.denefle@converge.io>

    [ Upstream commit 41a92a89eee819298f805c40187ad8b02bb53426 ]

    w1_seq was failing due to several devices responding to the
    CHAIN_DONE at the same time. Now properly selects the current
    device in the chain with MATCH_ROM. Also acknowledgment was
    read twice.

    Signed-off-by: Lucas Denefle <lucas.denefle@converge.io>
    Link: https://lore.kernel.org/r/20220223113558.232750-1-lucas.denefle@converge.io
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/w1/slaves/w1_therm.c | 8 ++++++--
    1 file changed, 6 insertions(+), 2 deletions(-)

    diff --git a/drivers/w1/slaves/w1_therm.c b/drivers/w1/slaves/w1_therm.c
    index e028e0092799..cf1e01f0dede 100644
    --- a/drivers/w1/slaves/w1_therm.c
    +++ b/drivers/w1/slaves/w1_therm.c
    @@ -679,16 +679,20 @@ static ssize_t w1_seq_show(struct device *device,
    if (sl->reg_num.id == reg_num->id)
    seq = i;

    + if (w1_reset_bus(sl->master))
    + goto error;
    +
    + /* Put the device into chain DONE state */
    + w1_write_8(sl->master, W1_MATCH_ROM);
    + w1_write_block(sl->master, (u8 *)&rn, 8);
    w1_write_8(sl->master, W1_42_CHAIN);
    w1_write_8(sl->master, W1_42_CHAIN_DONE);
    w1_write_8(sl->master, W1_42_CHAIN_DONE_INV);
    - w1_read_block(sl->master, &ack, sizeof(ack));

    /* check for acknowledgment */
    ack = w1_read_8(sl->master);
    if (ack != W1_42_SUCCESS_CONFIRM_BYTE)
    goto error;
    -
    }

    /* Exit from CHAIN state */
    --
    2.35.1


    \
     
     \ /
      Last update: 2022-04-14 17:18    [W:4.084 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site