All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kevin Hilman <khilman@ti.com>
To: Tony Lindgren <tony@atomide.com>
Cc: linux-arm-kernel@lists.infradead.org, linux-omap@vger.kernel.org
Subject: Re: [PATCH 04/10] omap: Make a subset of dmtimer functions into inline functions
Date: Tue, 29 Mar 2011 10:51:22 -0700	[thread overview]
Message-ID: <87y63xx1b9.fsf@ti.com> (raw)
In-Reply-To: <20110328222137.4046.32363.stgit@baageli.muru.com> (Tony Lindgren's message of "Mon, 28 Mar 2011 15:21:37 -0700")

Tony Lindgren <tony@atomide.com> writes:

> This will allow us to share the code between system timer and
> dmtimer device driver code without having to initialize all
> dmtimers early. It will also make the timer_set_next_event
> more efficient as the inline functions will optimize the code
> better in this case.
>
> Signed-off-by: Tony Lindgren <tony@atomide.com>

[...]

> -static void omap_dm_timer_reset(struct omap_dm_timer *timer)
> +/* Assumes the source clock has been set by caller */
> +void __omap_dm_timer_reset(struct omap_dm_timer *timer, int autoidle,
> +				int wakeup)
>  {
>  	u32 l;
>  
> +	l = omap_dm_timer_read_reg(timer, OMAP_TIMER_OCP_CFG_REG);
> +	l |= 0x02 << 3;  /* Set to smart-idle mode */
> +	l |= 0x2 << 8;   /* Set clock activity to perserve f-clock on idle */
> +
> +	if (autoidle)
> +		l |= 0x1 << 0;
> +
> +	if (wakeup)
> +		l |= 1 << 2;
> +
> +	omap_dm_timer_write_reg(timer, OMAP_TIMER_OCP_CFG_REG, l);
> +
> +	/* Match hardware reset default of posted mode */
> +	omap_dm_timer_write_reg(timer, OMAP_TIMER_IF_CTRL_REG,
> +			OMAP_TIMER_CTRL_POSTED);
> +	timer->posted = 1;
> +}

The reset code is an example of something that will not be able to be
shared between a system timer driver and a real device driver.  In the
real driver, the reset (as well as smart-idle, autoidle, wakeup
capability, etc.) will all be handled by the hwmod.

With a hwmod conversion, the system timer will have to have
duplicate/alternate compared to the real timer.

Ideally, what we need is a way for the system timer to be early_init
only.  When the real driver is available, it switches to that.  This
could probably be done pretty easily by using the 'rating' field of the
clockevent so when the "real" timer driver becomes available with a
higher rating, the clockevent code would switch to it.

Kevin

WARNING: multiple messages have this Message-ID (diff)
From: khilman@ti.com (Kevin Hilman)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 04/10] omap: Make a subset of dmtimer functions into inline functions
Date: Tue, 29 Mar 2011 10:51:22 -0700	[thread overview]
Message-ID: <87y63xx1b9.fsf@ti.com> (raw)
In-Reply-To: <20110328222137.4046.32363.stgit@baageli.muru.com> (Tony Lindgren's message of "Mon, 28 Mar 2011 15:21:37 -0700")

Tony Lindgren <tony@atomide.com> writes:

> This will allow us to share the code between system timer and
> dmtimer device driver code without having to initialize all
> dmtimers early. It will also make the timer_set_next_event
> more efficient as the inline functions will optimize the code
> better in this case.
>
> Signed-off-by: Tony Lindgren <tony@atomide.com>

[...]

> -static void omap_dm_timer_reset(struct omap_dm_timer *timer)
> +/* Assumes the source clock has been set by caller */
> +void __omap_dm_timer_reset(struct omap_dm_timer *timer, int autoidle,
> +				int wakeup)
>  {
>  	u32 l;
>  
> +	l = omap_dm_timer_read_reg(timer, OMAP_TIMER_OCP_CFG_REG);
> +	l |= 0x02 << 3;  /* Set to smart-idle mode */
> +	l |= 0x2 << 8;   /* Set clock activity to perserve f-clock on idle */
> +
> +	if (autoidle)
> +		l |= 0x1 << 0;
> +
> +	if (wakeup)
> +		l |= 1 << 2;
> +
> +	omap_dm_timer_write_reg(timer, OMAP_TIMER_OCP_CFG_REG, l);
> +
> +	/* Match hardware reset default of posted mode */
> +	omap_dm_timer_write_reg(timer, OMAP_TIMER_IF_CTRL_REG,
> +			OMAP_TIMER_CTRL_POSTED);
> +	timer->posted = 1;
> +}

The reset code is an example of something that will not be able to be
shared between a system timer driver and a real device driver.  In the
real driver, the reset (as well as smart-idle, autoidle, wakeup
capability, etc.) will all be handled by the hwmod.

With a hwmod conversion, the system timer will have to have
duplicate/alternate compared to the real timer.

Ideally, what we need is a way for the system timer to be early_init
only.  When the real driver is available, it switches to that.  This
could probably be done pretty easily by using the 'rating' field of the
clockevent so when the "real" timer driver becomes available with a
higher rating, the clockevent code would switch to it.

Kevin

  reply	other threads:[~2011-03-29 17:51 UTC|newest]

Thread overview: 76+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-03-28 22:21 [PATCH 00/10] omap init_early changes for irq and timer init Tony Lindgren
2011-03-28 22:21 ` Tony Lindgren
2011-03-28 22:21 ` [PATCH 01/10] omap: Use separate init_irq functions to avoid cpu_is_omap tests early Tony Lindgren
2011-03-28 22:21   ` Tony Lindgren
2011-03-29  6:11   ` [PATCH 01/10] omap: Use separate init_irq functions to avoidcpu_is_omap " Santosh Shilimkar
2011-03-29  6:11     ` Santosh Shilimkar
2011-03-29  6:11   ` Santosh Shilimkar
2011-03-29  6:11     ` Santosh Shilimkar
2011-03-29  6:11   ` Santosh Shilimkar
2011-03-29  6:11     ` Santosh Shilimkar
2011-03-29  6:11   ` Santosh Shilimkar
2011-03-29  6:11     ` Santosh Shilimkar
2011-03-29 15:30     ` Tony Lindgren
2011-03-29 15:30       ` Tony Lindgren
2011-03-29 22:27       ` Tony Lindgren
2011-03-29 22:27         ` Tony Lindgren
2011-03-29 17:11   ` [PATCH 01/10] omap: Use separate init_irq functions to avoid cpu_is_omap " Kevin Hilman
2011-03-29 17:11     ` Kevin Hilman
2011-03-29 17:14     ` Tony Lindgren
2011-03-29 17:14       ` Tony Lindgren
2011-05-17 11:28       ` Tony Lindgren
2011-05-17 11:28         ` Tony Lindgren
2011-03-28 22:21 ` [PATCH 02/10] omap: Set separate timer init functions to avoid cpu_is_omap tests Tony Lindgren
2011-03-28 22:21   ` Tony Lindgren
2011-03-28 22:21 ` [PATCH 03/10] omap: Move dmtimer defines to dmtimer.h Tony Lindgren
2011-03-28 22:21   ` Tony Lindgren
2011-03-29 17:41   ` Kevin Hilman
2011-03-29 17:41     ` Kevin Hilman
2011-03-29 17:44     ` Tony Lindgren
2011-03-29 17:44       ` Tony Lindgren
2011-03-28 22:21 ` [PATCH 04/10] omap: Make a subset of dmtimer functions into inline functions Tony Lindgren
2011-03-28 22:21   ` Tony Lindgren
2011-03-29 17:51   ` Kevin Hilman [this message]
2011-03-29 17:51     ` Kevin Hilman
2011-03-29 17:58     ` Tony Lindgren
2011-03-29 17:58       ` Tony Lindgren
2011-03-29 18:01       ` Kevin Hilman
2011-03-29 18:01         ` Kevin Hilman
2011-03-29 18:02         ` Tony Lindgren
2011-03-29 18:02           ` Tony Lindgren
2011-03-28 22:21 ` [PATCH 05/10] omap2+: Use dmtimer macros for clockevent Tony Lindgren
2011-03-28 22:21   ` Tony Lindgren
2011-03-29 17:16   ` Tony Lindgren
2011-03-29 17:16     ` Tony Lindgren
2011-03-31 21:35   ` Kevin Hilman
2011-03-31 21:35     ` Kevin Hilman
2011-03-31 22:04     ` Tony Lindgren
2011-03-31 22:04       ` Tony Lindgren
2011-03-28 22:21 ` [PATCH 06/10] omap2+: Remove gptimer_wakekup for now Tony Lindgren
2011-03-28 22:21   ` Tony Lindgren
2011-03-31 22:09   ` Kevin Hilman
2011-03-31 22:09     ` Kevin Hilman
2011-04-01 16:26     ` Santosh Shilimkar
2011-04-01 16:26       ` Santosh Shilimkar
2011-03-28 22:21 ` [PATCH 07/10] omap2+: Reserve clocksource and timesource and initialize dmtimer later Tony Lindgren
2011-03-28 22:21   ` Tony Lindgren
2011-03-28 22:21 ` [PATCH 08/10] omap2+: Use dmtimer macros for clocksource Tony Lindgren
2011-03-28 22:21   ` Tony Lindgren
2011-03-28 22:21 ` [PATCH 09/10] omap2+: Remove omap2_gp_clockevent_set_gptimer Tony Lindgren
2011-03-28 22:21   ` Tony Lindgren
2011-03-28 22:21 ` [PATCH 10/10] omap2+: Rename timer-gp.c into timer.c to combine timer init functions Tony Lindgren
2011-03-28 22:21   ` Tony Lindgren
2011-03-29 18:16 ` [PATCH 00/10] omap init_early changes for irq and timer init Kevin Hilman
2011-03-29 18:16   ` Kevin Hilman
2011-03-30  7:56 ` Santosh Shilimkar
2011-03-30  7:56   ` Santosh Shilimkar
2011-03-30 18:22   ` Tony Lindgren
2011-03-30 18:22     ` Tony Lindgren
2011-03-31  8:16     ` Santosh Shilimkar
2011-03-31  8:16       ` Santosh Shilimkar
2011-03-31 17:32       ` Tony Lindgren
2011-03-31 17:32         ` Tony Lindgren
2011-04-01  8:39         ` Santosh Shilimkar
2011-04-01  8:39           ` Santosh Shilimkar
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 04/10] omap: Make a subset of dmtimer functions into inline functions Tony Lindgren
2011-06-20  9:23   ` 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=87y63xx1b9.fsf@ti.com \
    --to=khilman@ti.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=tony@atomide.com \
    /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.