From: khilman@ti•com (Kevin Hilman)
To: linux-arm-kernel@lists•infradead.org
Subject: [PATCH 05/10] omap2+: Use dmtimer macros for clockevent
Date: Thu, 23 Jun 2011 10:07:10 -0700 [thread overview]
Message-ID: <87r56ka341.fsf@ti.com> (raw)
In-Reply-To: <20110620092339.357.10396.stgit@kaulin> (Tony Lindgren's message of "Mon, 20 Jun 2011 02:23:39 -0700")
Tony Lindgren <tony@atomide•com> writes:
> This patch makes timer-gp.c to use only a subset of dmtimer
> functions without the need to initialize dmtimer code early.
>
> Also note that now with the inline functions, timer_set_next_event
> becomes more efficient in the lines of assembly code.
>
> Signed-off-by: Tony Lindgren <tony@atomide•com>
> Reviewed-by: Kevin Hilman <khilman@ti•com>
In order for this to work, *all* the dmtimer functions need to be
converted. Some still call the real driver, which may not yet be
initialized (as pointed out for [7/10]...
[...]
> +static int __init omap_dm_timer_init_one(struct omap_dm_timer *timer,
> + int gptimer_id,
> + const char *fck_source)
> {
> - u32 tick_rate;
> - int src;
> - char clockevent_hwmod_name[8]; /* 8 = sizeof("timerXX0") */
> + char name[10]; /* 10 = sizeof("gptXX_Xck0") */
> + struct omap_hwmod *oh;
> + size_t size;
> + int res = 0;
> +
> + sprintf(name, "timer%d", gptimer_id);
> + omap_hwmod_setup_one(name);
> + oh = omap_hwmod_lookup(name);
> + if (!oh)
> + return -ENODEV;
> +
> + timer->irq = oh->mpu_irqs[0].irq;
> + timer->phys_base = oh->slaves[0]->addr->pa_start;
> + size = oh->slaves[0]->addr->pa_end - timer->phys_base;
> +
> + /* Static mapping, never released */
> + timer->io_base = ioremap(timer->phys_base, size);
> + if (!timer->io_base)
> + return -ENXIO;
> +
> + /* After the dmtimer is using hwmod these clocks won't be needed */
> + sprintf(name, "gpt%d_fck", gptimer_id);
> + timer->fclk = clk_get(NULL, name);
> + if (IS_ERR(timer->fclk))
> + return -ENODEV;
> +
> + sprintf(name, "gpt%d_ick", gptimer_id);
> + timer->iclk = clk_get(NULL, name);
> + if (IS_ERR(timer->iclk)) {
> + clk_put(timer->fclk);
> + return -ENODEV;
> + }
>
> - inited = 1;
> + omap_hwmod_enable(oh);
> +
> + if (gptimer_id != 12) {
> + struct clk *src;
> +
> + src = clk_get(NULL, fck_source);
> + if (IS_ERR(src)) {
> + res = -EINVAL;
> + } else {
> + res = __omap_dm_timer_set_source(timer->fclk, src);
> + if (IS_ERR_VALUE(res))
> + pr_warning("%s: timer%i cannot set source\n",
> + __func__, gptimer_id);
> + clk_put(src);
> + }
> + }
> + __omap_dm_timer_reset(timer->io_base, 1, 1);
> + timer->posted = 1;
> +
> + timer->rate = clk_get_rate(timer->fclk);
>
> - sprintf(clockevent_hwmod_name, "timer%d", gptimer_id);
> - omap_hwmod_setup_one(clockevent_hwmod_name);
> + timer->reserved = 1;
>
> gptimer = omap_dm_timer_request_specific(gptimer_id);
Here remains a call to the real driver, which is not yet initialized
when called from sys_timer.init.
> BUG_ON(gptimer == NULL);
> gptimer_wakeup = gptimer;
>
> -#if defined(CONFIG_OMAP_32K_TIMER)
> - src = OMAP_TIMER_SRC_32_KHZ;
> -#else
> - src = OMAP_TIMER_SRC_SYS_CLK;
> - WARN(gptimer_id == 12, "WARNING: GPTIMER12 can only use the "
> - "secure 32KiHz clock source\n");
> -#endif
> + return res;
> +}
Kevin
next prev parent reply other threads:[~2011-06-23 17:07 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-06-20 9:23 [PATCH 00/10] init_early cleanup for omap init_irq and init_timer Tony Lindgren
2011-06-20 9:23 ` [PATCH 01/10] omap: Use separate init_irq functions to avoid cpu_is_omap tests early Tony Lindgren
2011-06-20 9:54 ` Russell King - ARM Linux
2011-06-20 10:14 ` Tony Lindgren
2011-06-27 17:08 ` Kevin Hilman
2011-06-20 9:23 ` [PATCH 02/10] omap: Set separate timer init functions to avoid cpu_is_omap tests Tony Lindgren
2011-06-20 9:23 ` [PATCH 03/10] omap: Move dmtimer defines to dmtimer.h Tony Lindgren
2011-06-20 9:56 ` Russell King - ARM Linux
2011-06-20 10:17 ` Tony Lindgren
2011-06-20 9:23 ` [PATCH 04/10] omap: Make a subset of dmtimer functions into inline functions Tony Lindgren
2011-06-20 9:23 ` [PATCH 05/10] omap2+: Use dmtimer macros for clockevent Tony Lindgren
2011-06-23 17:07 ` Kevin Hilman [this message]
2011-06-27 7:39 ` Tony Lindgren
2011-06-20 9:23 ` [PATCH 06/10] omap2+: Remove gptimer_wakeup for now Tony Lindgren
2011-06-20 9:39 ` Santosh Shilimkar
2011-06-20 9:48 ` Tony Lindgren
2011-06-23 15:05 ` Kevin Hilman
2011-06-23 15:13 ` Santosh Shilimkar
2011-06-27 8:08 ` Tony Lindgren
2011-06-27 16:30 ` Kevin Hilman
2011-06-27 18:16 ` Tony Lindgren
2011-06-27 17:32 ` Kevin Hilman
2011-06-27 19:19 ` Tony Lindgren
2011-06-27 21:16 ` Kevin Hilman
2011-06-20 9:23 ` [PATCH 07/10] omap2+: Reserve clocksource and timesource and initialize dmtimer later Tony Lindgren
2011-06-23 17:01 ` Kevin Hilman
2011-06-27 7:48 ` Tony Lindgren
2011-06-27 16:41 ` Kevin Hilman
2011-06-23 17:13 ` Kevin Hilman
2011-06-27 7:51 ` Tony Lindgren
2011-06-27 10:44 ` Tony Lindgren
2011-06-20 9:23 ` [PATCH 08/10] omap2+: Use dmtimer macros for clocksource Tony Lindgren
2011-06-23 15:28 ` Kevin Hilman
2011-06-23 16:47 ` Kevin Hilman
2011-06-23 17:10 ` Kevin Hilman
2011-06-27 7:54 ` Tony Lindgren
2011-06-27 10:48 ` Tony Lindgren
2011-06-27 16:41 ` Kevin Hilman
2011-06-20 9:23 ` [PATCH 09/10] omap2+: Remove omap2_gp_clockevent_set_gptimer Tony Lindgren
2011-06-20 9:23 ` [PATCH 10/10] omap2+: Rename timer-gp.c into timer.c to combine timer init functions Tony Lindgren
-- strict thread matches above, loose matches on Subject: below --
2011-03-28 22:21 [PATCH 00/10] omap init_early changes for irq and timer init Tony Lindgren
2011-03-28 22:21 ` [PATCH 05/10] omap2+: Use dmtimer macros for clockevent Tony Lindgren
2011-03-29 17:16 ` Tony Lindgren
2011-03-31 21:35 ` Kevin Hilman
2011-03-31 22:04 ` Tony Lindgren
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=87r56ka341.fsf@ti.com \
--to=khilman@ti$(echo .)com \
--cc=linux-arm-kernel@lists$(echo .)infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox