Received: by 2002:a25:ab43:0:0:0:0:0 with SMTP id u61csp3822275ybi; Tue, 18 Jun 2019 07:05:13 -0700 (PDT) X-Google-Smtp-Source: APXvYqxzr4WlLU7bLbwWLKNfs1mMXsal9Xfr2rD/wmTtopfLWNKhR7jRd3yRPdCIDYYYeH+RtWsr X-Received: by 2002:a17:902:2006:: with SMTP id n6mr57411608pla.232.1560866713454; Tue, 18 Jun 2019 07:05:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1560866713; cv=none; d=google.com; s=arc-20160816; b=fviEOweXUD5gOy8Bj3IBk2xznFqMSTJBhSGIM650FasuE8ncWi14Ka3X0Yob4fBd/J yWvIcp9FIf7npOXjuYIek+4BTIoScBs1b8MNq9kxqCes7A9me1kG0rBM6xkc/EBLqzc1 Ve1dpOAHXuVN57zTHl1+y+47ls1npk1m7oGXwbck9s5HSwdd9sDZg6sr/UnqTlxf3+tm f8CoiiQy/EsncoUmwVF76AbEVYhYYc/LnYA9LkaoOE6fGb18A6rz/kncpGh0m2NoCYey Ssbxn+a8SBNhNjSSqnEOnU9umFM1SgzyUICnUzGHSks0N1onP4WS6grcoC5RnsyF8nV8 UjcQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=up9rfJN2yTf53TU5ASdE2UZxjubVaBIyfo3rdkQL5fQ=; b=nik+4dE41Cs3Cj3BsAa+c3aD+EeR2vsUwptxPXXh1yMLPS/nnMSHYfkpuyvZoSwF5L TX7E1R0Og6fheO8zr9+82q+9lc06sxOgWnMFO/KfU3L6vfJhhNzN/L6AkHOUNX/8Ay0M 7J9mwH+Ymd00RWZTZrMNw6Q01WeA1Phd9LzvUChWsexoL9xkFZTloB6dXJqI5YOxDwsc BmMqKUXpVGQy8G13Nciohe1yvTAmbxeOKTvAvH37E9A0ZANVo5MrDMrffplG8yz0/u57 VjjDY9EBaDCBuuci63s8HeGU57lr+d47oqy5vLokzHk7CxWUKL8Aqu2qVD/38mGnMLJU cBCg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=Oev9jiOT; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 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. [209.132.180.67]) by mx.google.com with ESMTP id j59si13216487plb.176.2019.06.18.07.04.58; Tue, 18 Jun 2019 07:05:13 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=Oev9jiOT; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 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 S1729636AbfFROEp (ORCPT + 99 others); Tue, 18 Jun 2019 10:04:45 -0400 Received: from mail-lj1-f194.google.com ([209.85.208.194]:33237 "EHLO mail-lj1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729496AbfFROEo (ORCPT ); Tue, 18 Jun 2019 10:04:44 -0400 Received: by mail-lj1-f194.google.com with SMTP id h10so13281877ljg.0; Tue, 18 Jun 2019 07:04:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=up9rfJN2yTf53TU5ASdE2UZxjubVaBIyfo3rdkQL5fQ=; b=Oev9jiOTJ9iv4s5dh7zAiRV6UezxI2Nb5SFR8aeYakZe1OPEZ9UVfva2dkgwiiINnA KRFxHLuv/OUhHthdOgVoW7NNJcF3RDeyuYDWf+uOyfYz8Q/g706Ne+Tc2vPunJzTmv5h uwBblDUswVf01U0YzhR7FkAmD0+NAWjUzy/QRNWnpij+eIu3KsqlB9jTlidC9EWVvVyD B2cBWQ00VWd3PWGZUE+7J/gyHHUDF2enkpH+fauh8Qy0mLbobnTy6t2CYVd0IobZTHRi R34GHjG7VvbzXy9siVwNhmpa9LRFBukbJREl/sVSuCb+MxuMmQC2GW/y3tX0clR06a+U UkGA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=up9rfJN2yTf53TU5ASdE2UZxjubVaBIyfo3rdkQL5fQ=; b=XUSx5dzPxz4eNS7SigX4Nh+qK+yAWinpvbH4VJROB+y6kop5N8mOFG63ObIIpJzUyI 8Plvv0oNHX6/vJwZ5TtESBZr/e+LVYqQeonH70nUKp86JPSNhmullM0BvjDVUphr3XtC eFEOC4PTFRlCS2uvbOZM0G+oWmJ0fTsGzrHFtBz7wkxIQ1DiWzpIvXPU2lzc+fTR3v9D 4Dve0ILhb2wzMuodu4ECuifvUlM2MqE3NIA9U7U+wbidN8DEMSZOuKmlf6YTNjvRZp7m jbahbjR+sjE9DYiWi7dKiiTTu28qbxA7RdDbgdS0SP/i1GD3w1hvGKTIGLLcLhZ9mheE 8OEA== X-Gm-Message-State: APjAAAWpcLBjnUJTlyq4ztpusaHk12rjGwqqzOc/ttp1PfLazQ/SB5my vMqgQFzwzYGfSEj9aYc5jLQiqXgj X-Received: by 2002:a2e:980e:: with SMTP id a14mr53670259ljj.60.1560866682561; Tue, 18 Jun 2019 07:04:42 -0700 (PDT) Received: from localhost.localdomain (ppp91-79-162-197.pppoe.mtu-net.ru. [91.79.162.197]) by smtp.gmail.com with ESMTPSA id q6sm2650538lji.70.2019.06.18.07.04.41 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 18 Jun 2019 07:04:42 -0700 (PDT) From: Dmitry Osipenko To: Daniel Lezcano , Thierry Reding , Jonathan Hunter , Peter De Schrijver Cc: linux-tegra@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v3 7/8] clocksource/drivers/tegra: Cycles can't be 0 Date: Tue, 18 Jun 2019 17:03:57 +0300 Message-Id: <20190618140358.13148-8-digetx@gmail.com> X-Mailer: git-send-email 2.22.0 In-Reply-To: <20190618140358.13148-1-digetx@gmail.com> References: <20190618140358.13148-1-digetx@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Tegra's timer uses n+1 scheme for the counter, i.e. timer will fire after one tick if 0 is loaded. The minimum and maximum numbers of oneshot ticks are defined by clockevents_config_and_register(min, max) invocation and the min value is set to 1 tick. Hence "cycles" value can't ever be 0, unless it's a bug in clocksource core. Signed-off-by: Dmitry Osipenko --- drivers/clocksource/timer-tegra.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/drivers/clocksource/timer-tegra.c b/drivers/clocksource/timer-tegra.c index 2673b6e0caa8..b84324288749 100644 --- a/drivers/clocksource/timer-tegra.c +++ b/drivers/clocksource/timer-tegra.c @@ -54,9 +54,16 @@ static int tegra_timer_set_next_event(unsigned long cycles, { void __iomem *reg_base = timer_of_base(to_timer_of(evt)); - writel_relaxed(TIMER_PTV_EN | - ((cycles > 1) ? (cycles - 1) : 0), /* n+1 scheme */ - reg_base + TIMER_PTV); + /* + * Tegra's timer uses n+1 scheme for the counter, i.e. timer will + * fire after one tick if 0 is loaded. + * + * The minimum and maximum numbers of oneshot ticks are defined + * by clockevents_config_and_register(1, 0x1fffffff + 1) invocation + * below in the code. Hence the cycles (ticks) can't be outside of + * a range supportable by hardware. + */ + writel_relaxed(TIMER_PTV_EN | (cycles - 1), reg_base + TIMER_PTV); return 0; } -- 2.22.0