From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.8 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B6E30C2BC73 for ; Wed, 4 Dec 2019 18:24:57 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 839A320661 for ; Wed, 4 Dec 2019 18:24:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1575483897; bh=cC+AaLKi1MCjWftMUPCXFQDUqGCKEaeipBYcLrwOllI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=VoK8s3qvqpEfe7OebUSst4QNH7D8QvpEY7zb9zxpYoVu0eyNSNWR+VsIyyLxHATBK 0Cvuxnpw4b+j+QnSuhI+hvVEGzsa//lUF0vjI7F36b6z5uYsWHGPEkA737W41og5fN xbhIHGub130pLaPOUYgC6Uthz+Maie5gOn9nbBMI= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729674AbfLDSBu (ORCPT ); Wed, 4 Dec 2019 13:01:50 -0500 Received: from mail.kernel.org ([198.145.29.99]:42724 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729245AbfLDSBq (ORCPT ); Wed, 4 Dec 2019 13:01:46 -0500 Received: from localhost (unknown [217.68.49.72]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 6D08F20675; Wed, 4 Dec 2019 18:01:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1575482505; bh=cC+AaLKi1MCjWftMUPCXFQDUqGCKEaeipBYcLrwOllI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=MihOl13B/b3AW9QXmwtVTkk4E6nDqJ5lb0gAACYuRFd5Hht7RHKD2CRpUsXezDSt5 zpKXgnzh4LhfKtzDXL72Vh4HAbv3uRhVE+iV+8qOtxUtWcNEcK38sjZ6hinLRPRr14 9700sppUiLAGm8EG4Prq33W6kUfIJlUU2SqbneFc= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Xingyu Chen , Neil Armstrong , Kevin Hilman , Guenter Roeck , Wim Van Sebroeck , Sasha Levin Subject: [PATCH 4.14 023/209] watchdog: meson: Fix the wrong value of left time Date: Wed, 4 Dec 2019 18:53:55 +0100 Message-Id: <20191204175323.096279200@linuxfoundation.org> X-Mailer: git-send-email 2.24.0 In-Reply-To: <20191204175321.609072813@linuxfoundation.org> References: <20191204175321.609072813@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Xingyu Chen [ Upstream commit 2c77734642d52448aca673e889b39f981110828b ] The left time value is wrong when we get it by sysfs. The left time value should be equal to preset timeout value minus elapsed time value. According to the Meson-GXB/GXL datasheets which can be found at [0], the timeout value is saved to BIT[0-15] of the WATCHDOG_TCNT, and elapsed time value is saved to BIT[16-31] of the WATCHDOG_TCNT. [0]: http://linux-meson.com Fixes: 683fa50f0e18 ("watchdog: Add Meson GXBB Watchdog Driver") Signed-off-by: Xingyu Chen Acked-by: Neil Armstrong Reviewed-by: Kevin Hilman Reviewed-by: Guenter Roeck Signed-off-by: Guenter Roeck Signed-off-by: Wim Van Sebroeck Signed-off-by: Sasha Levin --- drivers/watchdog/meson_gxbb_wdt.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/watchdog/meson_gxbb_wdt.c b/drivers/watchdog/meson_gxbb_wdt.c index 69a5a57f14462..61297a6ab43a0 100644 --- a/drivers/watchdog/meson_gxbb_wdt.c +++ b/drivers/watchdog/meson_gxbb_wdt.c @@ -137,8 +137,8 @@ static unsigned int meson_gxbb_wdt_get_timeleft(struct watchdog_device *wdt_dev) reg = readl(data->reg_base + GXBB_WDT_TCNT_REG); - return ((reg >> GXBB_WDT_TCNT_CNT_SHIFT) - - (reg & GXBB_WDT_TCNT_SETUP_MASK)) / 1000; + return ((reg & GXBB_WDT_TCNT_SETUP_MASK) - + (reg >> GXBB_WDT_TCNT_CNT_SHIFT)) / 1000; } static const struct watchdog_ops meson_gxbb_wdt_ops = { -- 2.20.1