From: baruch@tkos.co.il (Baruch Siach)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 2/8] clocksource: sun4i: Add clocksource and sched clock drivers
Date: Thu, 27 Jun 2013 09:02:34 +0300 [thread overview]
Message-ID: <20130627060234.GD4824@tarshish> (raw)
In-Reply-To: <1372281421-2099-3-git-send-email-maxime.ripard@free-electrons.com>
Hi Maxime,
On Wed, Jun 26, 2013 at 11:16:55PM +0200, Maxime Ripard wrote:
> The A10 and the A13 has a 64 bits free running counter that we can use
> as a clocksource and a sched clock, that were both not used yet on these
> platforms.
>
> Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
> ---
> drivers/clocksource/sun4i_timer.c | 27 +++++++++++++++++++++++++++
> 1 file changed, 27 insertions(+)
>
> diff --git a/drivers/clocksource/sun4i_timer.c b/drivers/clocksource/sun4i_timer.c
> index bdf34d9..1d2eaa0 100644
> --- a/drivers/clocksource/sun4i_timer.c
> +++ b/drivers/clocksource/sun4i_timer.c
> @@ -23,6 +23,8 @@
> #include <linux/of_address.h>
> #include <linux/of_irq.h>
>
> +#include <asm/sched_clock.h>
In the tip.git tree (and -next) this header is moved to <linux/sched_clock.h>
in 38ff87f77a (sched_clock: Make ARM's sched_clock generic for all
architectures).
> +
> #define TIMER_IRQ_EN_REG 0x00
> #define TIMER_IRQ_EN(val) BIT(val)
> #define TIMER_IRQ_ST_REG 0x04
> @@ -34,6 +36,11 @@
> #define TIMER_CNTVAL_REG(val) (0x10 * val + 0x18)
>
> #define TIMER_SCAL 16
> +#define TIMER_CNT64_CTL_REG 0xa0
> +#define TIMER_CNT64_CTL_CLR BIT(0)
> +#define TIMER_CNT64_CTL_RL BIT(1)
> +#define TIMER_CNT64_LOW_REG 0xa4
> +#define TIMER_CNT64_HIGH_REG 0xa8
>
> static void __iomem *timer_base;
>
> @@ -96,6 +103,20 @@ static struct irqaction sun4i_timer_irq = {
> .dev_id = &sun4i_clockevent,
> };
>
> +static u32 sun4i_timer_sched_read(void)
You commit message mentions "64 bits free running counter", but this one only
returns 32 bit.
baruch
> +{
> + u32 reg = readl(timer_base + TIMER_CNT64_CTL_REG);
> + writel(reg | TIMER_CNT64_CTL_RL, timer_base + TIMER_CNT64_CTL_REG);
> + while (readl(timer_base + TIMER_CNT64_CTL_REG) & TIMER_CNT64_CTL_REG);
> +
> + return readl(timer_base + TIMER_CNT64_LOW_REG);
> +}
> +
> +static cycle_t sun4i_timer_clksrc_read(struct clocksource *c)
> +{
> + return sun4i_timer_sched_read();
> +}
> +
> static void __init sun4i_timer_init(struct device_node *node)
> {
> unsigned long rate = 0;
> @@ -117,6 +138,12 @@ static void __init sun4i_timer_init(struct device_node *node)
>
> rate = clk_get_rate(clk);
>
> + writel(TIMER_CNT64_CTL_CLR, timer_base + TIMER_CNT64_CTL_REG);
> + setup_sched_clock(sun4i_timer_sched_read, 32, clk_get_rate(clk));
> + clocksource_mmio_init(timer_base + TIMER_CNT64_LOW_REG, node->name,
> + clk_get_rate(clk), 300, 32,
> + sun4i_timer_clksrc_read);
> +
> writel(rate / (TIMER_SCAL * HZ),
> timer_base + TIMER_INTVAL_REG(0));
>
--
http://baruch.siach.name/blog/ ~. .~ Tk Open Systems
=}------------------------------------------------ooO--U--Ooo------------{=
- baruch at tkos.co.il - tel: +972.2.679.5364, http://www.tkos.co.il -
WARNING: multiple messages have this Message-ID (diff)
From: Baruch Siach <baruch@tkos.co.il>
To: Maxime Ripard <maxime.ripard@free-electrons.com>
Cc: John Stultz <john.stultz@linaro.org>,
Thomas Gleixner <tglx@linutronix.de>,
Emilio Lopez <emilio@elopez.com.ar>,
linux-kernel@vger.kernel.org, linux-sunxi@googlegroups.com,
sunny@allwinnertech.com, shuge@allwinnertech.com,
kevin@allwinnertech.com, linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH 2/8] clocksource: sun4i: Add clocksource and sched clock drivers
Date: Thu, 27 Jun 2013 09:02:34 +0300 [thread overview]
Message-ID: <20130627060234.GD4824@tarshish> (raw)
In-Reply-To: <1372281421-2099-3-git-send-email-maxime.ripard@free-electrons.com>
Hi Maxime,
On Wed, Jun 26, 2013 at 11:16:55PM +0200, Maxime Ripard wrote:
> The A10 and the A13 has a 64 bits free running counter that we can use
> as a clocksource and a sched clock, that were both not used yet on these
> platforms.
>
> Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
> ---
> drivers/clocksource/sun4i_timer.c | 27 +++++++++++++++++++++++++++
> 1 file changed, 27 insertions(+)
>
> diff --git a/drivers/clocksource/sun4i_timer.c b/drivers/clocksource/sun4i_timer.c
> index bdf34d9..1d2eaa0 100644
> --- a/drivers/clocksource/sun4i_timer.c
> +++ b/drivers/clocksource/sun4i_timer.c
> @@ -23,6 +23,8 @@
> #include <linux/of_address.h>
> #include <linux/of_irq.h>
>
> +#include <asm/sched_clock.h>
In the tip.git tree (and -next) this header is moved to <linux/sched_clock.h>
in 38ff87f77a (sched_clock: Make ARM's sched_clock generic for all
architectures).
> +
> #define TIMER_IRQ_EN_REG 0x00
> #define TIMER_IRQ_EN(val) BIT(val)
> #define TIMER_IRQ_ST_REG 0x04
> @@ -34,6 +36,11 @@
> #define TIMER_CNTVAL_REG(val) (0x10 * val + 0x18)
>
> #define TIMER_SCAL 16
> +#define TIMER_CNT64_CTL_REG 0xa0
> +#define TIMER_CNT64_CTL_CLR BIT(0)
> +#define TIMER_CNT64_CTL_RL BIT(1)
> +#define TIMER_CNT64_LOW_REG 0xa4
> +#define TIMER_CNT64_HIGH_REG 0xa8
>
> static void __iomem *timer_base;
>
> @@ -96,6 +103,20 @@ static struct irqaction sun4i_timer_irq = {
> .dev_id = &sun4i_clockevent,
> };
>
> +static u32 sun4i_timer_sched_read(void)
You commit message mentions "64 bits free running counter", but this one only
returns 32 bit.
baruch
> +{
> + u32 reg = readl(timer_base + TIMER_CNT64_CTL_REG);
> + writel(reg | TIMER_CNT64_CTL_RL, timer_base + TIMER_CNT64_CTL_REG);
> + while (readl(timer_base + TIMER_CNT64_CTL_REG) & TIMER_CNT64_CTL_REG);
> +
> + return readl(timer_base + TIMER_CNT64_LOW_REG);
> +}
> +
> +static cycle_t sun4i_timer_clksrc_read(struct clocksource *c)
> +{
> + return sun4i_timer_sched_read();
> +}
> +
> static void __init sun4i_timer_init(struct device_node *node)
> {
> unsigned long rate = 0;
> @@ -117,6 +138,12 @@ static void __init sun4i_timer_init(struct device_node *node)
>
> rate = clk_get_rate(clk);
>
> + writel(TIMER_CNT64_CTL_CLR, timer_base + TIMER_CNT64_CTL_REG);
> + setup_sched_clock(sun4i_timer_sched_read, 32, clk_get_rate(clk));
> + clocksource_mmio_init(timer_base + TIMER_CNT64_LOW_REG, node->name,
> + clk_get_rate(clk), 300, 32,
> + sun4i_timer_clksrc_read);
> +
> writel(rate / (TIMER_SCAL * HZ),
> timer_base + TIMER_INTVAL_REG(0));
>
--
http://baruch.siach.name/blog/ ~. .~ Tk Open Systems
=}------------------------------------------------ooO--U--Ooo------------{=
- baruch@tkos.co.il - tel: +972.2.679.5364, http://www.tkos.co.il -
next prev parent reply other threads:[~2013-06-27 6:02 UTC|newest]
Thread overview: 70+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-06-26 21:16 [PATCH 0/8] clocksource: sunxi: Timer fixes and cleanup Maxime Ripard
2013-06-26 21:16 ` Maxime Ripard
2013-06-26 21:16 ` [PATCH 1/8] clocksource: sun4i: Use the BIT macros where possible Maxime Ripard
2013-06-26 21:16 ` Maxime Ripard
2013-06-26 21:16 ` [PATCH 2/8] clocksource: sun4i: Add clocksource and sched clock drivers Maxime Ripard
2013-06-26 21:16 ` Maxime Ripard
2013-06-26 21:27 ` Daniel Lezcano
2013-06-26 21:27 ` Daniel Lezcano
2013-06-27 9:31 ` Maxime Ripard
2013-06-27 9:31 ` Maxime Ripard
2013-06-27 6:02 ` Baruch Siach [this message]
2013-06-27 6:02 ` Baruch Siach
2013-06-27 9:35 ` Maxime Ripard
2013-06-27 9:35 ` Maxime Ripard
2013-06-27 9:46 ` Baruch Siach
2013-06-27 9:46 ` Baruch Siach
2013-06-27 17:21 ` Maxime Ripard
2013-06-27 17:21 ` Maxime Ripard
2013-06-27 17:36 ` Baruch Siach
2013-06-27 17:36 ` Baruch Siach
2013-06-27 19:16 ` Maxime Ripard
2013-06-27 19:16 ` Maxime Ripard
2013-06-27 10:17 ` [linux-sunxi] " Siarhei Siamashka
2013-06-27 10:17 ` Siarhei Siamashka
2013-06-27 17:02 ` Maxime Ripard
2013-06-27 17:02 ` Maxime Ripard
2013-06-27 19:51 ` Siarhei Siamashka
2013-06-27 19:51 ` Siarhei Siamashka
2013-06-28 10:19 ` Maxime Ripard
2013-06-28 10:19 ` Maxime Ripard
2013-06-26 21:16 ` [PATCH 3/8] clocksource: sun4i: Don't forget to enable the clock we use Maxime Ripard
2013-06-26 21:16 ` Maxime Ripard
2013-06-26 21:16 ` [PATCH 4/8] clocksource: sun4i: Fix the next event code Maxime Ripard
2013-06-26 21:16 ` Maxime Ripard
2013-06-26 21:16 ` [PATCH 5/8] clocksource: sun4i: Factor out some timer code Maxime Ripard
2013-06-26 21:16 ` Maxime Ripard
2013-06-26 21:16 ` [PATCH 6/8] clocksource: sun4i: Remove TIMER_SCAL variable Maxime Ripard
2013-06-26 21:16 ` Maxime Ripard
2013-06-26 21:17 ` [PATCH 7/8] clocksource: sun4i: Cleanup parent clock setup Maxime Ripard
2013-06-26 21:17 ` Maxime Ripard
2013-06-26 21:17 ` [PATCH 8/8] clocksource: sun4i: Fix bug when switching from periodic to oneshot modes Maxime Ripard
2013-06-26 21:17 ` Maxime Ripard
2013-06-27 9:27 ` [linux-sunxi] [PATCH 0/8] clocksource: sunxi: Timer fixes and cleanup Hans de Goede
2013-06-27 9:27 ` Hans de Goede
2013-06-27 9:43 ` Maxime Ripard
2013-06-27 9:43 ` Maxime Ripard
2013-06-27 9:54 ` Hans de Goede
2013-06-27 9:54 ` Hans de Goede
2013-06-27 16:54 ` Maxime Ripard
2013-06-27 16:54 ` Maxime Ripard
2013-06-27 18:13 ` Hans de Goede
2013-06-27 18:13 ` Hans de Goede
2013-06-28 10:41 ` Maxime Ripard
2013-06-28 10:41 ` Maxime Ripard
2013-06-27 20:26 ` Siarhei Siamashka
2013-06-27 20:26 ` Siarhei Siamashka
2013-06-28 8:17 ` Hans de Goede
2013-06-28 8:17 ` Hans de Goede
[not found] ` <2013062809433715678058@allwinnertech.com>
2013-06-28 9:48 ` Siarhei Siamashka
2013-06-28 10:26 ` Thomas Gleixner
2013-06-28 10:26 ` Thomas Gleixner
2013-06-28 11:14 ` Siarhei Siamashka
2013-06-28 11:14 ` Siarhei Siamashka
2013-06-28 10:29 ` Siarhei Siamashka
2013-06-28 14:16 ` maxime.ripard
2013-06-28 14:16 ` maxime.ripard
2013-06-28 14:02 ` Thomas Gleixner
2013-06-28 14:02 ` Thomas Gleixner
2013-06-28 17:03 ` maxime.ripard
2013-06-28 17:03 ` maxime.ripard
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20130627060234.GD4824@tarshish \
--to=baruch@tkos.co.il \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.