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
next prev parent 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: linkBe 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.