Received: by 2002:a05:6a10:9e8c:0:0:0:0 with SMTP id y12csp110675pxx; Tue, 27 Oct 2020 23:10:57 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyoKWRHCgqF3/Zxs5A2R8tC5fDZoRp3AmNLze2GzEmD/2WRPcpjf4uTmdqaDHCrr4HMC8WP X-Received: by 2002:a17:906:3a55:: with SMTP id a21mr5870698ejf.357.1603865457334; Tue, 27 Oct 2020 23:10:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1603865457; cv=none; d=google.com; s=arc-20160816; b=0afTa5Tbbb7ACKNznXQpoTpFF9CKaUJikttcU3y5e6NdT1M+JY1U/nLatZVWWzXVhv IH0MZ6BDWJClYdTYiDP5czHbzFT3Qrl0v+aJt0asdgc4V6Dw4TtSEv747/96fDUH/b7B Xts9Ty0JtYK07JEfsvcB4pGgXsVu+rJxCKX3R7Afx6vBVLkd1dOGSvYcOQCqaucJ82Tu 2XYT6kcPLcImOc0RPoS73XIhIzvD0T911GvnOlu9lDtWbBWaGBAABNG6v9EpFjQU9adR iS3+bTqiIgEe6xCiya6zmZulnRZukXItTYuUxw6pmtReTDFf0nGF6ktWRIgiv2XDpXCK AJag== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=KnJoJgk84FwLk/ANyG7dQFanuIJ2r/lfRIWtEAhvPa4=; b=ET3yUqN95bjFV6+EEqq7tiMbzTaf6gbxJWu6Inrn381rtfPfxnySf2O6biLE0BC5ek jQJ1as5sQ9/IS/PYUOLei7Vdft24+gVtecc2LL07OSZLz6qKH65VUuWEXVaYhswZbPR2 r3wKWDMoALq3nYknXxra56JbmfXPjzBrPrjs5ReyIBOZ49ocDXKLO/bjk/Vt+rdcEuIN jeAQiH9C7BL8L7YZt1SX9Y287cncMUiLZ3G0xfBM/pLAVxt6cjhLjZ9OdlOkJPtysJ5v JR+HhmX29RKkRbIdHUVjkhYgMX4GWbRJW157OmzDZRCxW1sLyHg8wKlwWykC3/7cscDa sASg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=ujnM88ue; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id y21si2645088edu.215.2020.10.27.23.10.34; Tue, 27 Oct 2020 23:10:57 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=ujnM88ue; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2505001AbgJ0JRj (ORCPT + 99 others); Tue, 27 Oct 2020 05:17:39 -0400 Received: from mail-wr1-f68.google.com ([209.85.221.68]:45118 "EHLO mail-wr1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2390503AbgJ0JRj (ORCPT ); Tue, 27 Oct 2020 05:17:39 -0400 Received: by mail-wr1-f68.google.com with SMTP id e17so970002wru.12; Tue, 27 Oct 2020 02:17:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=KnJoJgk84FwLk/ANyG7dQFanuIJ2r/lfRIWtEAhvPa4=; b=ujnM88ueWDajGmHeeT5G7HpaOgXoDvx+qDaU6FkBUQay6RhNQnKKhCFk6Wx1jMAlTW gZSIpD/CVojtMtIa2W/8W0DCvEL2J5QYfcnfzQm2p7rA7Hc89o98eq+i9wi2AfwCFnEa Ygv0J62U/Tv1dk52NxcLfxOQwnl6+gHGEds1CPYfuOPOv02hRF0P+E9DnXVqsQGYYeMs hWOzxQDesGDEvQOO43ah4CUB08SJqsp2+I9tWtZnRO4LdkiZpXE+nDzPw3PVpUTHGsIk pOtaM33FroDZohGx9BSrMw1ZmEkPGHxvtiP+55WT7ve3+MPpQIyw5H+FvWmjajUJJMuv 3QnA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=KnJoJgk84FwLk/ANyG7dQFanuIJ2r/lfRIWtEAhvPa4=; b=qpAOQTaqwz4cUb02rwOgRE2ytACRz9mZgtjYENcBUJIp4otnJuv8nmskPo9r1uWcUF vQtWWdpzxURA7vLBRCmepZMdzzzvT2rsFyyvliHrTs+4qwaU687NlwycOFOFR5eQfWM0 COXPu8IpSpo1sq1WzP80K3hsW78AcJ66baaSvZ57HqSJl0oxecCllV5GTS3BZUeoht87 NUvZOyHNSd0uZYz41Q5QlkXFDBW5c8ZlflpKXSkpRFgwPfnDpglNZbMxhcPYw8kumOBM fzwghGQRzS5Y9m5ywuEvkIBXLqPEe8F510AEwEdyEjhnOAFM5z0R+vy3o6frmYSozzGw jyYg== X-Gm-Message-State: AOAM530Ypz5tTMj6DbDJDTdIr0ZHljDwV1kesfIAt+ctTQrhK3N3Cifp 9sdmHtlvHvmpkHKV06TQmGIwcyIjyMOfj+gsPb0= X-Received: by 2002:adf:82ab:: with SMTP id 40mr1592860wrc.420.1603790257100; Tue, 27 Oct 2020 02:17:37 -0700 (PDT) MIME-Version: 1.0 References: <20201026080919.28413-1-zhang.lyra@gmail.com> <20201026080919.28413-4-zhang.lyra@gmail.com> In-Reply-To: From: Chunyan Zhang Date: Tue, 27 Oct 2020 17:17:00 +0800 Message-ID: Subject: Re: [PATCH 3/3] watchdog: sprd: check busy bit before kick watchdog To: Guenter Roeck Cc: Wim Van Sebroeck , linux-watchdog@vger.kernel.org, Linux Kernel Mailing List , Orson Zhai , Baolin Wang , Chunyan Zhang , Lingling Xu , jingchao.ye@unisoc.com, xiaoqing.wu@unisoc.com Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, 26 Oct 2020 at 22:44, Guenter Roeck wrote: > > On 10/26/20 1:09 AM, Chunyan Zhang wrote: > > From: Lingling Xu > > > > As the specification described, checking busy bit must be done before kick > > watchdog. > > > > That is a key functional change: So far the code checked if a value > was accepted after loading it. That is no longer the case. Effectively, > with this change, the _next_ operation will now check if the previous > operation was accepted. Is this intentional ? Yes, the busy bit indicates whether the previous operation is done, so we have to make sure the last loading completed (the busy bit is not set) before new loading. The spec says that this bit is set after a new loading, and would last 2 or 3 RTC clock cycles. > > Also, does this really solve a problem, or is it just an optimization ? > By checking for busy prior to an operation instead of after it the only > real difference is that the busy check will most likely succeed immediately > because enough time has passed since the last write. > > Ultimately it is your call how you want to handle this, but I think the > impact should be spelled out. Ok, I will add more details in the commit message. Many thanks for the review! Chunyan > > Guenter > > > Fixes: 477603467009 ("watchdog: Add Spreadtrum watchdog driver") > > Signed-off-by: Lingling Xu > > Signed-off-by: Chunyan Zhang > > --- > > drivers/watchdog/sprd_wdt.c | 27 ++++++++++++++------------- > > 1 file changed, 14 insertions(+), 13 deletions(-) > > > > diff --git a/drivers/watchdog/sprd_wdt.c b/drivers/watchdog/sprd_wdt.c > > index 4f2a8c6d6485..14071c66ff49 100644 > > --- a/drivers/watchdog/sprd_wdt.c > > +++ b/drivers/watchdog/sprd_wdt.c > > @@ -108,20 +108,8 @@ static int sprd_wdt_load_value(struct sprd_wdt *wdt, u32 timeout, > > u32 tmr_step = timeout * SPRD_WDT_CNT_STEP; > > u32 prtmr_step = pretimeout * SPRD_WDT_CNT_STEP; > > > > - sprd_wdt_unlock(wdt->base); > > - writel_relaxed((tmr_step >> SPRD_WDT_CNT_HIGH_SHIFT) & > > - SPRD_WDT_LOW_VALUE_MASK, wdt->base + SPRD_WDT_LOAD_HIGH); > > - writel_relaxed((tmr_step & SPRD_WDT_LOW_VALUE_MASK), > > - wdt->base + SPRD_WDT_LOAD_LOW); > > - writel_relaxed((prtmr_step >> SPRD_WDT_CNT_HIGH_SHIFT) & > > - SPRD_WDT_LOW_VALUE_MASK, > > - wdt->base + SPRD_WDT_IRQ_LOAD_HIGH); > > - writel_relaxed(prtmr_step & SPRD_WDT_LOW_VALUE_MASK, > > - wdt->base + SPRD_WDT_IRQ_LOAD_LOW); > > - sprd_wdt_lock(wdt->base); > > - > > /* > > - * Waiting the load value operation done, > > + * Waiting the last load value operation done, > > * it needs two or three RTC clock cycles. > > */ > > do { > > @@ -134,6 +122,19 @@ static int sprd_wdt_load_value(struct sprd_wdt *wdt, u32 timeout, > > > > if (delay_cnt >= SPRD_WDT_LOAD_TIMEOUT) > > return -EBUSY; > > + > > + sprd_wdt_unlock(wdt->base); > > + writel_relaxed((tmr_step >> SPRD_WDT_CNT_HIGH_SHIFT) & > > + SPRD_WDT_LOW_VALUE_MASK, wdt->base + SPRD_WDT_LOAD_HIGH); > > + writel_relaxed((tmr_step & SPRD_WDT_LOW_VALUE_MASK), > > + wdt->base + SPRD_WDT_LOAD_LOW); > > + writel_relaxed((prtmr_step >> SPRD_WDT_CNT_HIGH_SHIFT) & > > + SPRD_WDT_LOW_VALUE_MASK, > > + wdt->base + SPRD_WDT_IRQ_LOAD_HIGH); > > + writel_relaxed(prtmr_step & SPRD_WDT_LOW_VALUE_MASK, > > + wdt->base + SPRD_WDT_IRQ_LOAD_LOW); > > + sprd_wdt_lock(wdt->base); > > + > > return 0; > > } > > > > >