[PATCH] w1: w1-gpio: Loosen timings to improve cold boot reliability

Eugen.Hristev at microchip.com Eugen.Hristev at microchip.com
Mon Nov 22 12:16:22 CET 2021


On 11/8/21 5:07 PM, Chris Morgan wrote:
> From: Chris Morgan <macromorgan at hotmail.com>
> 
> On my NTC CHIP whenever I do a cold boot any attached DIPs cannot be
> found. Rebooting on the other hand appears to fix the issue. I found
> that if I modified the timing slightly (but still within spec) the
> w1 identification on cold boot became far more reliable.
> 
> Signed-off-by: Chris Morgan <macromorgan at hotmail.com>
> ---
>   drivers/w1/w1-gpio.c | 4 ++--
>   1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/w1/w1-gpio.c b/drivers/w1/w1-gpio.c
> index 9346f810ce..5565de2a92 100644
> --- a/drivers/w1/w1-gpio.c
> +++ b/drivers/w1/w1-gpio.c
> @@ -22,8 +22,8 @@
>   #define W1_TIMING_E    9
>   #define W1_TIMING_F    55
>   #define W1_TIMING_G    0
> -#define W1_TIMING_H    480
> -#define W1_TIMING_I    70
> +#define W1_TIMING_H    600
> +#define W1_TIMING_I    100
>   #define W1_TIMING_J    410
> 
>   struct w1_gpio_pdata {
> --
> 2.30.2
> 


Hi Chris,

I tested your patch on my board sama5d2_xplained, and it works.
Thus, you can add my
Tested-by: Eugen Hristev <eugen.hristev at microchip.com>

However, I disagree with the changes you did in timings. What I found 
was that timing 'H' could go up to 640 , but timing 'I' to a maximum of 
75 or so. [1]

I am thinking maybe you could also check your udelays with a scope on 
the 1wire line ? Because your problem might be in fact in some other 
part , like udelays not properly aligned/synchronized/accurate at cold 
boot time, depending on the source of clock you are using.

Eugen


[1] 
https://www.maximintegrated.com/content/dam/files/design/tools/tech-docs/126/AN126-timing-calculation.zip


More information about the U-Boot mailing list