Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp507690ybt; Wed, 24 Jun 2020 04:49:10 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx8BiJdeBI79BGqJkY3v5PItDqk978jwp0dGZgzmqt1SF1cygfRPnQ0AK+t0xel5bgHixIO X-Received: by 2002:a17:906:3483:: with SMTP id g3mr24182604ejb.373.1592999350473; Wed, 24 Jun 2020 04:49:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1592999350; cv=none; d=google.com; s=arc-20160816; b=XQs1/hvnr3LCpbg+s6SoZyYAzMhc2ULazYBSS5z7vFZcLKq0zR1OkSsAYeYMoGP8Rz YJ7+nk7WP389ozcpFMbYuHr5uqwBR3vh9AEi0bF2H3GSbJdtMRKLmv6W1ia/2eC1doVJ vGDonKbCzMAnklvGQ70GPHDFFuinFCMG1Q07NTBc6XEovt2CNNZZmggRXVFnl2l4DsnR /w3e340W828uMDnTarnRVJyLJWsrsH7XNG7Ix+0Roc67X9DxUo+muIgBZY1FQQdLGfMV 32a0+Nt6H3U9fx2GP8fAIFXjSNAYFF1IF9cSRncFB+wVZ/Rp64ZFZbOxR4OIg3G3NBZD kOzQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=6X9zZUsoFQTdU0DIGFIuVsDvl3k1u78biIHYBoola70=; b=Q9TvWV5S1KcPc5xdsrj5H9WQy6+QyK35qoUw8neZXLc48L9/t1D/IVdiS0fc+zo7yU /8CLTgq1QI8UbYRRdpkDOlkUiGzhACZtpRBvX37iCVo/CZ/HTPBHsduO/PN+9jtDVAXK j/47IfCp41gIqJG94gsZdE8LRKC5OXpCSlDa1+g8ZiZQW+3Ij31dsfvpzlRiBGkZJ5d9 eHWGrID+TT1AxPjPCW0Y/dTFBNQ64O4dhvixUraVrlotkaXabwn28lHZl67L5SrUmDke fMhZ4NdY5sMSW9xbu+6lvoUBfx3/qq5laQd95A9iRH9x+3dgtbCIr94pjnXhoSBlSI3I yAOA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@ti.com header.s=ti-com-17Q1 header.b=IRwG4JIz; 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=QUARANTINE sp=NONE dis=NONE) header.from=ti.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id x22si12833250eje.542.2020.06.24.04.48.47; Wed, 24 Jun 2020 04:49:10 -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=@ti.com header.s=ti-com-17Q1 header.b=IRwG4JIz; 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=QUARANTINE sp=NONE dis=NONE) header.from=ti.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2390770AbgFXLrh (ORCPT + 99 others); Wed, 24 Jun 2020 07:47:37 -0400 Received: from fllv0015.ext.ti.com ([198.47.19.141]:42410 "EHLO fllv0015.ext.ti.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2388491AbgFXLrh (ORCPT ); Wed, 24 Jun 2020 07:47:37 -0400 Received: from fllv0035.itg.ti.com ([10.64.41.0]) by fllv0015.ext.ti.com (8.15.2/8.15.2) with ESMTP id 05OBjqYb027297; Wed, 24 Jun 2020 06:45:52 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=ti-com-17Q1; t=1592999152; bh=6X9zZUsoFQTdU0DIGFIuVsDvl3k1u78biIHYBoola70=; h=From:To:CC:Subject:Date:In-Reply-To:References; b=IRwG4JIzY464dSINOVUTDq2mdgfxdkE4PwrWioubCV4tnlJexcL6eNMPqR1xX41Pm cUl2QXkTnqrylpa8f5IvLG2PwQGo1THbA/hk6dm5a44vndGFTrA8XFEzDzYiCvjOZv L11csoT38o/KQ62gTYyecv/MKpcii4aoS0yRicSQ= Received: from DLEE105.ent.ti.com (dlee105.ent.ti.com [157.170.170.35]) by fllv0035.itg.ti.com (8.15.2/8.15.2) with ESMTP id 05OBjpl1076329; Wed, 24 Jun 2020 06:45:52 -0500 Received: from DLEE109.ent.ti.com (157.170.170.41) by DLEE105.ent.ti.com (157.170.170.35) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1979.3; Wed, 24 Jun 2020 06:45:51 -0500 Received: from fllv0040.itg.ti.com (10.64.41.20) by DLEE109.ent.ti.com (157.170.170.41) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1979.3 via Frontend Transport; Wed, 24 Jun 2020 06:45:51 -0500 Received: from sokoban.bb.dnainternet.fi (ileax41-snat.itg.ti.com [10.172.224.153]) by fllv0040.itg.ti.com (8.15.2/8.15.2) with ESMTP id 05OBjkCN118804; Wed, 24 Jun 2020 06:45:50 -0500 From: Tero Kristo To: , , CC: , Subject: [PATCH 2/2] watchdog: rti: tweak min_hw_heartbeat_ms to match initial allowed window Date: Wed, 24 Jun 2020 14:45:34 +0300 Message-ID: <20200624114534.1362-3-t-kristo@ti.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200624114534.1362-1-t-kristo@ti.com> References: <20200624114534.1362-1-t-kristo@ti.com> MIME-Version: 1.0 Content-Type: text/plain X-EXCLAIMER-MD-CONFIG: e1e8a2fd-e40a-4ac6-ac9b-f7e9cc9ee180 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org If the RTI watchdog has been started by someone (like bootloader) when the driver probes, we must adjust the initial ping timeout to match the currently running watchdog window to avoid generating watchdog reset. Signed-off-by: Tero Kristo --- drivers/watchdog/rti_wdt.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/drivers/watchdog/rti_wdt.c b/drivers/watchdog/rti_wdt.c index d456dd72d99a..02ea2b2435f5 100644 --- a/drivers/watchdog/rti_wdt.c +++ b/drivers/watchdog/rti_wdt.c @@ -55,11 +55,13 @@ static int heartbeat; * @base - base io address of WD device * @freq - source clock frequency of WDT * @wdd - hold watchdog device as is in WDT core + * @min_hw_heartbeat_save - save of the min hw heartbeat value */ struct rti_wdt_device { void __iomem *base; unsigned long freq; struct watchdog_device wdd; + unsigned int min_hw_heartbeat_save; }; static int rti_wdt_start(struct watchdog_device *wdd) @@ -107,6 +109,11 @@ static int rti_wdt_ping(struct watchdog_device *wdd) /* put watchdog in active state */ writel_relaxed(WDKEY_SEQ1, wdt->base + RTIWDKEY); + if (wdt->min_hw_heartbeat_save) { + wdd->min_hw_heartbeat_ms = wdt->min_hw_heartbeat_save; + wdt->min_hw_heartbeat_save = 0; + } + return 0; } @@ -201,6 +208,24 @@ static int rti_wdt_probe(struct platform_device *pdev) goto err_iomap; } + if (readl(wdt->base + RTIDWDCTRL) == WDENABLE_KEY) { + u32 time_left; + u32 heartbeat; + + set_bit(WDOG_HW_RUNNING, &wdd->status); + time_left = rti_wdt_get_timeleft(wdd); + heartbeat = readl(wdt->base + RTIDWDPRLD); + heartbeat <<= WDT_PRELOAD_SHIFT; + heartbeat /= wdt->freq; + if (time_left < heartbeat / 2) + wdd->min_hw_heartbeat_ms = 0; + else + wdd->min_hw_heartbeat_ms = + (time_left - heartbeat / 2 + 1) * 1000; + + wdt->min_hw_heartbeat_save = 11 * heartbeat * 1000 / 20; + } + ret = watchdog_register_device(wdd); if (ret) { dev_err(dev, "cannot register watchdog device\n"); -- 2.17.1 -- Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki