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=-8.2 required=3.0 tests=DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED,DKIM_VALID,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_PASS,URIBL_BLOCKED,USER_AGENT_MUTT 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 6194EC4360F for ; Tue, 2 Apr 2019 14:46:15 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 2E54820693 for ; Tue, 2 Apr 2019 14:46:15 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="Ioqu6ru2"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Qi2bZdRD" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 2E54820693 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender:Content-Type:Cc: List-Subscribe:List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id: In-Reply-To:MIME-Version:References:Message-ID:Subject:To:From:Date:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=u5E1KT80nKgBIBlAub3FmadfuYuB5K6h/26B9VRhq3U=; b=Ioqu6ru2YTGduXO+2MvgYNS61 Phx8EJezIp9O/CfIszquQViPbdPWalkzsgh9N2MXawfj5G5E2v4gnekFcv+VQgUwyUnFAV9h4c1eX Gg0yptdmBrJQ8tJ/9lnO5SqHlhx84596y3eIGo7HTrlt6MXje1CHx6uRJ64iMrlp36mrYqJ1lz/au ZCOGEtSxtRIcBz8kaFbN1ShTbOwxVYcZtgn8WSH6y0uV87wXytlVvi/MPWkLN4g155aCIUhGMWgJR HcPryey0s99vaEiNrV8ojpCYFP/TA5ZzJvy8/SgJoclhkFgD/m/Fv0oiN1rc62GXXODN6ikL5ocgb UVs+yCQmw==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1hBKfx-0001Xr-2M; Tue, 02 Apr 2019 14:46:09 +0000 Received: from mail-wr1-x443.google.com ([2a00:1450:4864:20::443]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1hBKfu-0001Vu-CV for linux-arm-kernel@lists.infradead.org; Tue, 02 Apr 2019 14:46:07 +0000 Received: by mail-wr1-x443.google.com with SMTP id g3so17006796wrx.9 for ; Tue, 02 Apr 2019 07:46:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=MwjCCGTxgkAmdndEGq++weJ/jiz+EjWccWUiOzDO7+E=; b=Qi2bZdRDe7Od+n3IRK+vQk1TpgbLKoy2Tb6Y2/5cXhQsWl0CqcCK8cTYZOyCG9tJEe Qb4vpH/R03XaU/5sY1gFSSfsFWwra3o4jaNV1QeFgJh01Mrsx6CphwZILOs/aSPp7VPZ y63r81KW1qFt9MZr8i0lVlQaH56uGaaGLHg48d09CUVpnUq/fItGPQ7bO+/+Tlcji16w tcHNRyPz5pjOZPNPn4ej+mgiEZaqLzUiKrfQDbFwPtk861/h+2lyxR3oJHWk5VaHDcli 3u+5tWy9VETkpzEM7/RhdIxZkmL5MkfHT1VtmcUY8eSW2VYDt4cAUbkmW7TED3vYUUcR ri9A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=MwjCCGTxgkAmdndEGq++weJ/jiz+EjWccWUiOzDO7+E=; b=iMZrTuTSYlfQ8pMHR1uiXXe9N+mqszKiYTBpBGXPvuDIvs5pFzJ5AUvji4TBTm195X GWDoZfu2wnMXPnEWNVuAYqXK4gALsFRZNAXa38CpBkE/OSqnUrEW8QrlCtD+uKg+zAWp bQ4gKRpXiNFyTzJElCpj2/QIrY4rtSTK1zpVUps0QNiEM+oEiQKJ8PL/2eOrLctU68sq bOxLXdJCK+eRSdZI7zKx+agTnSKHCYNMien2zwcA06HOlEOzlBo69tOcx9XkiWVYdtm0 kpiy6ouVf52TsqETNKoaGaSTdI+F+xEzr+EoKjjJVKcg3+HiyK5uLMOW0AUdhJSudFZE TaVw== X-Gm-Message-State: APjAAAU+GhQmmCFL2GAlFaj5f45bGTYSLMBcqSihMQGuFGHj/ss/jaib Ht5OU+1IKl4qhnND7IuArMM= X-Google-Smtp-Source: APXvYqzZlkgOElYI1LqXts4akZJ7BW4kq23ZaVmF9JxYfHSIaDGYwb5EtKP/98wkQIhN9luUwy+O7A== X-Received: by 2002:adf:db0c:: with SMTP id s12mr20860736wri.184.1554216364892; Tue, 02 Apr 2019 07:46:04 -0700 (PDT) Received: from localhost (pD9E51B25.dip0.t-ipconnect.de. [217.229.27.37]) by smtp.gmail.com with ESMTPSA id f11sm15255051wrm.30.2019.04.02.07.46.03 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 02 Apr 2019 07:46:04 -0700 (PDT) Date: Tue, 2 Apr 2019 16:46:03 +0200 From: Thierry Reding To: Joseph Lo Subject: Re: [PATCH] clocksource/drivers/tegra: rework for compensation of suspend time Message-ID: <20190402144603.GE8017@ulmo> References: <20190402030234.13488-1-josephl@nvidia.com> MIME-Version: 1.0 In-Reply-To: <20190402030234.13488-1-josephl@nvidia.com> User-Agent: Mutt/1.11.4 (2019-03-13) X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190402_074606_478409_E7655563 X-CRM114-Status: GOOD ( 24.77 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Daniel Lezcano , linux-kernel@vger.kernel.org, Jonathan Hunter , linux-tegra@vger.kernel.org, Thomas Gleixner , linux-arm-kernel@lists.infradead.org Content-Type: multipart/mixed; boundary="===============8951818269614996528==" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org --===============8951818269614996528== Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="hwvH6HDNit2nSK4j" Content-Disposition: inline --hwvH6HDNit2nSK4j Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Tue, Apr 02, 2019 at 11:02:34AM +0800, Joseph Lo wrote: > Since the clocksource framework has the support for suspend time > compensation. Re-work the driver to use that, so we can reduce the > duplicate code. >=20 > Suggested-by: Daniel Lezcano > Signed-off-by: Joseph Lo > --- > drivers/clocksource/timer-tegra20.c | 63 +++++++++-------------------- > 1 file changed, 20 insertions(+), 43 deletions(-) Nice! >=20 > diff --git a/drivers/clocksource/timer-tegra20.c b/drivers/clocksource/ti= mer-tegra20.c > index fdb3d795a409..919b3568c495 100644 > --- a/drivers/clocksource/timer-tegra20.c > +++ b/drivers/clocksource/timer-tegra20.c > @@ -60,9 +60,6 @@ > static u32 usec_config; > static void __iomem *timer_reg_base; > #ifdef CONFIG_ARM > -static void __iomem *rtc_base; > -static struct timespec64 persistent_ts; > -static u64 persistent_ms, last_persistent_ms; > static struct delay_timer tegra_delay_timer; > #endif > =20 > @@ -199,40 +196,30 @@ static unsigned long tegra_delay_timer_read_counter= _long(void) > return readl(timer_reg_base + TIMERUS_CNTR_1US); > } > =20 > +static struct timer_of suspend_rtc_to =3D { > + .flags =3D TIMER_OF_BASE | TIMER_OF_CLOCK, > +}; > + > /* > * tegra_rtc_read - Reads the Tegra RTC registers > * Care must be taken that this funciton is not called while the > * tegra_rtc driver could be executing to avoid race conditions > * on the RTC shadow register > */ > -static u64 tegra_rtc_read_ms(void) > +static u64 tegra_rtc_read_ms(struct clocksource *cs) > { > - u32 ms =3D readl(rtc_base + RTC_MILLISECONDS); > - u32 s =3D readl(rtc_base + RTC_SHADOW_SECONDS); > + u32 ms =3D readl(timer_of_base(&suspend_rtc_to) + RTC_MILLISECONDS); > + u32 s =3D readl(timer_of_base(&suspend_rtc_to) + RTC_SHADOW_SECONDS); > return (u64)s * MSEC_PER_SEC + ms; > } > =20 > -/* > - * tegra_read_persistent_clock64 - Return time from a persistent clock. > - * > - * Reads the time from a source which isn't disabled during PM, the > - * 32k sync timer. Convert the cycles elapsed since last read into > - * nsecs and adds to a monotonically increasing timespec64. > - * Care must be taken that this funciton is not called while the > - * tegra_rtc driver could be executing to avoid race conditions > - * on the RTC shadow register > - */ > -static void tegra_read_persistent_clock64(struct timespec64 *ts) > -{ > - u64 delta; > - > - last_persistent_ms =3D persistent_ms; > - persistent_ms =3D tegra_rtc_read_ms(); > - delta =3D persistent_ms - last_persistent_ms; > - > - timespec64_add_ns(&persistent_ts, delta * NSEC_PER_MSEC); > - *ts =3D persistent_ts; > -} > +static struct clocksource suspend_rtc_clocksource =3D { > + .name =3D "tegra_suspend_timer", > + .rating =3D 200, > + .read =3D tegra_rtc_read_ms, > + .mask =3D CLOCKSOURCE_MASK(32), > + .flags =3D CLOCK_SOURCE_IS_CONTINUOUS | CLOCK_SOURCE_SUSPEND_NONSTOP, > +}; > #endif > =20 > static int tegra_timer_common_init(struct device_node *np, struct timer_= of *to) > @@ -385,25 +372,15 @@ static int __init tegra_init_timer(struct device_no= de *np) > =20 > static int __init tegra20_init_rtc(struct device_node *np) > { > - struct clk *clk; > + int ret; > =20 > - rtc_base =3D of_iomap(np, 0); > - if (!rtc_base) { > - pr_err("Can't map RTC registers\n"); > - return -ENXIO; > - } > + ret =3D timer_of_init(np, &suspend_rtc_to); > + if (ret) > + return ret; > =20 > - /* > - * rtc registers are used by read_persistent_clock, keep the rtc clock > - * enabled > - */ > - clk =3D of_clk_get(np, 0); > - if (IS_ERR(clk)) > - pr_warn("Unable to get rtc-tegra clock\n"); > - else > - clk_prepare_enable(clk); > + clocksource_register_hz(&suspend_rtc_clocksource, 1000); > =20 > - return register_persistent_clock(tegra_read_persistent_clock64); > + return 0; > } > TIMER_OF_DECLARE(tegra20_rtc, "nvidia,tegra20-rtc", tegra20_init_rtc); > #endif I wonder if there's any reason left for the #ifdefs now. My recollection is that these were only needed because register_persistent_clock() was not available on 64-bit ARM. The new APIs seem to be available regardless of architecture, so do we still need to differentiate? Thierry --hwvH6HDNit2nSK4j Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEEiOrDCAFJzPfAjcif3SOs138+s6EFAlyjdakACgkQ3SOs138+ s6HcVw/+LuMdZgQke1X++Jfjr7/7JpGMznffzO518GTbknew4gEUJMzmBXKkcO2u KKs84gfd3Qz7TBqjIfFaqcW8BzgntKUxXE7+aFD3rZPn9cCqIDUjWB0YhyOFPWUu SGDdRlBByUHIYDI1uhTE7CYmbYSgBJ4ZOSTeZcmARuqgBs0SlzpKKzD9NiIAMZu+ RjPlVxUegnmzJ4hMbFmScH/PdSLDdvuKNe+IErEF164quMvSZiU4NQIuVHj4Jo0N gULaJamKMxZPZGboYM92t5E5bv9P/S+/D5rGI3Z+rIvrr97qaoWKeuwTt4/fola/ Hpe42iEuwUIvogSHQFdrJUcHl24wxRKgkwNjoXSI/dMCkXIV+RL5BAgB9ULocFCS H8v6Kd+vgpKmfSqejLPcdV6Dw45aUrhuUpqMzmMUOAyyxbzLTMxT57XagT5m35hK iZqGM0UzEo+RX7i3Yzk5LR9/1fngFFeA3g/IRiIzTb4p9997SA5Rh3QZVB6cpJll BJ3geuFBaiJl5binR4mScTwTXehlco1HorAdGv6WmMOrkPH6vEJq1Q56PyjnGp9n 7DA3owb897JsZ0kJTP5VH/NCOrFZch0NSqnJAtr6Xj6obIJKdmjnti0fV8QD7STl l0suLGIzjGAKNXkbrE10BQqrIUJ9fvNh5k+ois2LmE3cKVNR4wI= =JGMg -----END PGP SIGNATURE----- --hwvH6HDNit2nSK4j-- --===============8951818269614996528== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel --===============8951818269614996528==--