Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1664475
| Path | csiph.com!weretis.net!feeder6.news.weretis.net!news.glorb.com!bofh.it!news.nic.it!robomod |
|---|---|
| From | Andrew Jeffery <andrew@aj.id.au> |
| Newsgroups | linux.kernel |
| Subject | Re: [PATCH 2/2] drivers/clocksource/fttmr010: Implement delay timer |
| Date | Tue, 13 Jun 2017 08:20:01 +0200 |
| Message-ID | <tRNlf-4p4-3@gated-at.bofh.it> (permalink) |
| References | <tRiAN-1GW-3@gated-at.bofh.it> <tRiAO-1GW-13@gated-at.bofh.it> |
| X-Original-To | Linus Walleij <linus.walleij@linaro.org>, Daniel Lezcano <daniel.lezcano@linaro.org>, Thomas Gleixner <tglx@linutronix.de>, Joel Stanley <joel@jms.id.au>, Jonas Jensen <jonas.jensen@gmail.com> |
| Dkim-Signature | v=1; a=rsa-sha256; c=relaxed/relaxed; d=aj.id.au; h=cc :content-type:date:from:in-reply-to:message-id:mime-version :references:subject:to:x-me-sender:x-me-sender:x-sasl-enc :x-sasl-enc; s=fm1; bh=omkADPurO22mlPRI7DBexteDsxMyzglnm84RjLDTx KQ=; b=QrJPFH6NulzO+wWqyHlCqxRasUoFDFOorV/mKlwaAZrEeAkHHeXMdsYZp LjEN5z2/TkZa3PRRwdUsUbbFPZvc4KdCb6F4VNwlTDYH30Bf3A8enWoH6D0By/d6 T6rgFC5Azq+EVJhYZe100TPw7yyojDCkJdzbWh7ts7YhPobkIusUE84J8wh0lKKi Ly+wzOr3wQZ0mpT5Xj7CLALDYp+QTxkrGnIViSeOPaPlA4AXV41KK/AgiQfFT2q5 mt4C2RFegJl/znkC8m47IlxjEC3QNuaqt178oDR2kPx6Wq7AA4Ak4rNe029q2ma8 Zt5ypbsGHgqGeegr+PQABH2CQUCNw== |
| Dkim-Signature | v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-me-sender :x-me-sender:x-sasl-enc:x-sasl-enc; s=fm1; bh=omkADPurO22mlPRI7D BexteDsxMyzglnm84RjLDTxKQ=; b=aFW4bNjAis3TqdHcauTNtOTAcQvyC1mn5N C6Tfo0i6rUcxGfdPTVnSOxWo27BKj+ah5en3mtyPTVZFTAoI5IExv7tJmVHT+rxC D5tyu5ToROZxVBTnIgFLCj5mTUOhHcuXVHgg62B3lxdBDnZeZPGdppBazveTkitD mBG+sY25lYnj56kRPOvZdA2XUs/5tK5CekQVlM5qCiEv3jMGFK5ovsHcjWuPjxgX z01312qIQtjFcnV9MfP9I0hyWQ9jbia70xvcWN3kUwrMjEKDdk6kDpxj3yZux8mJ MkFLZQSKsp4fZ6zivmi4qGu3pvxEF5NpM4PFHaYlzG5rARgThs3g== |
| X-Me-Sender | <xms:8oE_WfJO8ZfmhHq6-fua2d1_T40Bx9m-woaLdgdkOZU7AhPP6JyAPA> |
| X-Sasl-Enc | HA2zuNg8LNif1XPt0L0H6rSjghqNzmI87lR0yFbiAp3j 1497334258 |
| Content-Type | multipart/signed; micalg="pgp-sha512"; protocol="application/pgp-signature"; boundary="=-BJXFqad9QsFKUTL7ojnS" |
| X-Mailer | Evolution 3.22.6-1ubuntu1 |
| MIME-Version | 1.0 |
| Sender | robomod@news.nic.it |
| List-ID | <linux-kernel.vger.kernel.org> |
| X-Mailing-List | linux-kernel@vger.kernel.org |
| Approved | robomod@news.nic.it |
| Lines | 139 |
| Organization | linux.* mail to news gateway |
| X-Original-Cc | Janos Laube <janos.dev@gmail.com>, Paulius Zaleckas <paulius.zaleckas@gmail.com>, linux-arm-kernel@lists.infradead.org, Hans Ulli Kroll <ulli.kroll@googlemail.com>, Florian Fainelli <f.fainelli@gmail.com>, linux-kernel@vger.kernel.org |
| X-Original-Date | Tue, 13 Jun 2017 15:40:46 +0930 |
| X-Original-Message-ID | <1497334246.11158.4.camel@aj.id.au> |
| X-Original-References | <20170611212617.6906-1-linus.walleij@linaro.org> <20170611212617.6906-2-linus.walleij@linaro.org> |
| X-Original-Sender | linux-kernel-owner@vger.kernel.org |
| Xref | csiph.com linux.kernel:1664475 |
Show key headers only | View raw
[Multipart message — attachments visible in raw view] - view raw
On Sun, 2017-06-11 at 23:26 +0200, Linus Walleij wrote:
> This timer is often used on the ARM architecture, so as with so
> many siblings, we can implement delay timers, removing the need
> for the system to calibrate jiffys at boot, and potentially
> handling CPU frequency scaling on targets.
>
> We cannot just protect the Kconfig with a "depends on ARM" because
> it is already known that different architectures are using Faraday
> IP blocks, so it is better to make things open-ended and use
Seems like we're missing the end of the sentence?
>
> Result on boot dmesg:
>
> Switching to timer-based delay loop, resolution 40n
> Calibrating delay loop (skipped), value calculated using
> timer frequency.. 50.00 BogoMIPS (lpj=250000)
>
> This is accurately the timer frequency, 250MHz on the APB
> bus.
>
> > Cc: Andrew Jeffery <andrew@aj.id.au>
> > Cc: Joel Stanley <joel@jms.id.au>
> > Cc: Jonas Jensen <jonas.jensen@gmail.com>
> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Tried both patches on an AST2500, everything worked as suggested.
Tested-by: Andrew Jeffery <andrew@aj.id.au>
> ---
> drivers/clocksource/timer-fttmr010.c | 35 ++++++++++++++++++++++++++++++++++-
> 1 file changed, 34 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/clocksource/timer-fttmr010.c b/drivers/clocksource/timer-fttmr010.c
> index 5e82469995cb..0074d89cd2ce 100644
> --- a/drivers/clocksource/timer-fttmr010.c
> +++ b/drivers/clocksource/timer-fttmr010.c
> @@ -17,6 +17,7 @@
> #include <linux/clk.h>
> #include <linux/slab.h>
> #include <linux/bitops.h>
> +#include <linux/delay.h>
>
> /*
> * Register definitions for the timers
> @@ -81,9 +82,15 @@ struct fttmr010 {
> > bool count_down;
> > u32 t1_enable_val;
> > struct clock_event_device clkevt;
> +#ifdef CONFIG_ARM
> > + struct delay_timer delay_timer;
> +#endif
> };
>
> -/* A local singleton used by sched_clock, which is stateless */
> +/*
> + * A local singleton used by sched_clock and delay timer reads, which are
> + * fast and stateless
> + */
> static struct fttmr010 *local_fttmr;
>
> static inline struct fttmr010 *to_fttmr010(struct clock_event_device *evt)
> @@ -101,6 +108,20 @@ static u64 notrace fttmr010_read_sched_clock_down(void)
> > return ~readl(local_fttmr->base + TIMER2_COUNT);
> }
>
> +#ifdef CONFIG_ARM
> +
> +static unsigned long fttmr010_read_current_timer_up(void)
> +{
> > + return readl(local_fttmr->base + TIMER2_COUNT);
> +}
> +
> +static unsigned long fttmr010_read_current_timer_down(void)
> +{
> > + return ~readl(local_fttmr->base + TIMER2_COUNT);
> +}
> +
> +#endif
> +
> static int fttmr010_timer_set_next_event(unsigned long cycles,
> > struct clock_event_device *evt)
> {
> @@ -349,6 +370,18 @@ static int __init fttmr010_timer_init(struct device_node *np)
> > fttmr010->tick_rate,
> > 1, 0xffffffff);
>
> +#ifdef CONFIG_ARM
> > + /* Also use this timer for delays */
> > + if (fttmr010->count_down)
> > + fttmr010->delay_timer.read_current_timer =
> > + fttmr010_read_current_timer_down;
> > + else
> > + fttmr010->delay_timer.read_current_timer =
> > + fttmr010_read_current_timer_up;
> > + fttmr010->delay_timer.freq = fttmr010->tick_rate;
> > + register_current_timer_delay(&fttmr010->delay_timer);
> +#endif
> +
> > return 0;
>
> out_unmap:
Back to linux.kernel | Previous | Next — Previous in thread | Find similar | Unroll thread
[PATCH 1/2] drivers/clocksource/fttmr010: Optimize sched_clock() Linus Walleij <linus.walleij@linaro.org> - 2017-06-11 23:30 +0200
[PATCH 2/2] drivers/clocksource/fttmr010: Implement delay timer Linus Walleij <linus.walleij@linaro.org> - 2017-06-11 23:30 +0200
Re: [PATCH 2/2] drivers/clocksource/fttmr010: Implement delay timer Daniel Lezcano <daniel.lezcano@linaro.org> - 2017-06-12 09:40 +0200
Re: [PATCH 2/2] drivers/clocksource/fttmr010: Implement delay timer Jonas Jensen <jonas.jensen@gmail.com> - 2017-06-12 14:50 +0200
Re: [PATCH 2/2] drivers/clocksource/fttmr010: Implement delay timer Linus Walleij <linus.walleij@linaro.org> - 2017-06-13 11:20 +0200
Re: [PATCH 2/2] drivers/clocksource/fttmr010: Implement delay timer Andrew Jeffery <andrew@aj.id.au> - 2017-06-13 08:20 +0200
csiph-web