From: Tony Lindgren <tony@atomide.com>
To: Arnd Bergmann <arnd@arndb.de>, Olof Johansson <olof@lixom.net>
Cc: linux-omap@vger.kernel.org, linux-arm-kernel@lists.infradead.org
Subject: Re: [GIT PULL 8/10] omap timer cleanup for v3.5 merge window
Date: Thu, 10 May 2012 13:24:16 -0700 [thread overview]
Message-ID: <20120510202415.GO21851@atomide.com> (raw)
In-Reply-To: <20120510185130.GJ21851@atomide.com>
* Tony Lindgren <tony@atomide.com> [120510 11:55]:
> * Tony Lindgren <tony@atomide.com> [120510 11:49]:
> > The following changes since commit bfd17879866b36e95c58721da070d9f2ac7f8901:
> >
> > Merge tag 'omap-devel-c-for-3.5' of git://git.kernel.org/pub/scm/linux/kernel/git/pjw/omap-pending into devel-hwmod-data (2012-05-09 09:58:42 -0700)
> >
> > are available in the git repository at:
> >
> >
> > git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap tags/omap-cleanup-timer-for-v3.5
> >
> > for you to fetch changes up to 1fe97c8f6a1de67a5f56e029a818903d5bed8017:
> >
> > ARM: OMAP: Make OMAP clocksource source selection using kernel param (2012-05-09 10:07:05 -0700)
> >
> > ----------------------------------------------------------------
> > Timer changes to make it easier to support various SoCs
> >
> > ----------------------------------------------------------------
>
> And this has a conflict for common headers:
...
Also looks like this produces a merge conflict with linux-next
commit bd0493ea (ARM: 7413/1: move read_{boot,persistent}_clock to
the architecture level). To resolve, the line to add
register_persistent_clock(NULL, omap_read_persistent_clock);
needs to be resolved as below.
Regards,
Tony
--- a/arch/arm/plat-omap/counter_32k.c
+++ b/arch/arm/plat-omap/counter_32k.c
@@@ -69,40 -69,55 +70,41 @@@ static void omap_read_persistent_clock(
*ts = *tsp;
}
-int __init omap_init_clocksource_32k(void)
+/**
+ * omap_init_clocksource_32k - setup and register counter 32k as a
+ * kernel clocksource
+ * @pbase: base addr of counter_32k module
+ * @size: size of counter_32k to map
+ *
+ * Returns 0 upon success or negative error code upon failure.
+ *
+ */
+int __init omap_init_clocksource_32k(void __iomem *vbase)
{
- static char err[] __initdata = KERN_ERR
- "%s: can't register clocksource!\n";
-
- if (cpu_is_omap16xx() || cpu_class_is_omap2()) {
- u32 pbase;
- unsigned long size = SZ_4K;
- void __iomem *base;
- struct clk *sync_32k_ick;
-
- if (cpu_is_omap16xx()) {
- pbase = OMAP16XX_TIMER_32K_SYNCHRONIZED;
- size = SZ_1K;
- } else if (cpu_is_omap2420())
- pbase = OMAP2420_32KSYNCT_BASE + 0x10;
- else if (cpu_is_omap2430())
- pbase = OMAP2430_32KSYNCT_BASE + 0x10;
- else if (cpu_is_omap34xx())
- pbase = OMAP3430_32KSYNCT_BASE + 0x10;
- else if (cpu_is_omap44xx())
- pbase = OMAP4430_32KSYNCT_BASE + 0x10;
- else
- return -ENODEV;
-
- /* For this to work we must have a static mapping in io.c for this area */
- base = ioremap(pbase, size);
- if (!base)
- return -ENODEV;
-
- sync_32k_ick = clk_get(NULL, "omap_32ksync_ick");
- if (!IS_ERR(sync_32k_ick))
- clk_enable(sync_32k_ick);
-
- timer_32k_base = base;
-
- /*
- * 120000 rough estimate from the calculations in
- * __clocksource_updatefreq_scale.
- */
- clocks_calc_mult_shift(&persistent_mult, &persistent_shift,
- 32768, NSEC_PER_SEC, 120000);
-
- if (clocksource_mmio_init(base, "32k_counter", 32768, 250, 32,
- clocksource_mmio_readl_up))
- printk(err, "32k_counter");
-
- setup_sched_clock(omap_32k_read_sched_clock, 32, 32768);
- register_persistent_clock(NULL, omap_read_persistent_clock);
+ int ret;
+
+ /*
+ * 32k sync Counter register offset is at 0x10
+ */
+ sync32k_cnt_reg = vbase + OMAP2_32KSYNCNT_CR_OFF;
+
+ /*
+ * 120000 rough estimate from the calculations in
+ * __clocksource_updatefreq_scale.
+ */
+ clocks_calc_mult_shift(&persistent_mult, &persistent_shift,
+ 32768, NSEC_PER_SEC, 120000);
+
+ ret = clocksource_mmio_init(sync32k_cnt_reg, "32k_counter", 32768,
+ 250, 32, clocksource_mmio_readl_up);
+ if (ret) {
+ pr_err("32k_counter: can't register clocksource\n");
+ return ret;
}
+
+ setup_sched_clock(omap_32k_read_sched_clock, 32, 32768);
+ pr_info("OMAP clocksource: 32k_counter at 32768 Hz\n");
++ register_persistent_clock(NULL, omap_read_persistent_clock);
+
return 0;
}
WARNING: multiple messages have this Message-ID (diff)
From: tony@atomide.com (Tony Lindgren)
To: linux-arm-kernel@lists.infradead.org
Subject: [GIT PULL 8/10] omap timer cleanup for v3.5 merge window
Date: Thu, 10 May 2012 13:24:16 -0700 [thread overview]
Message-ID: <20120510202415.GO21851@atomide.com> (raw)
In-Reply-To: <20120510185130.GJ21851@atomide.com>
* Tony Lindgren <tony@atomide.com> [120510 11:55]:
> * Tony Lindgren <tony@atomide.com> [120510 11:49]:
> > The following changes since commit bfd17879866b36e95c58721da070d9f2ac7f8901:
> >
> > Merge tag 'omap-devel-c-for-3.5' of git://git.kernel.org/pub/scm/linux/kernel/git/pjw/omap-pending into devel-hwmod-data (2012-05-09 09:58:42 -0700)
> >
> > are available in the git repository at:
> >
> >
> > git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap tags/omap-cleanup-timer-for-v3.5
> >
> > for you to fetch changes up to 1fe97c8f6a1de67a5f56e029a818903d5bed8017:
> >
> > ARM: OMAP: Make OMAP clocksource source selection using kernel param (2012-05-09 10:07:05 -0700)
> >
> > ----------------------------------------------------------------
> > Timer changes to make it easier to support various SoCs
> >
> > ----------------------------------------------------------------
>
> And this has a conflict for common headers:
...
Also looks like this produces a merge conflict with linux-next
commit bd0493ea (ARM: 7413/1: move read_{boot,persistent}_clock to
the architecture level). To resolve, the line to add
register_persistent_clock(NULL, omap_read_persistent_clock);
needs to be resolved as below.
Regards,
Tony
--- a/arch/arm/plat-omap/counter_32k.c
+++ b/arch/arm/plat-omap/counter_32k.c
@@@ -69,40 -69,55 +70,41 @@@ static void omap_read_persistent_clock(
*ts = *tsp;
}
-int __init omap_init_clocksource_32k(void)
+/**
+ * omap_init_clocksource_32k - setup and register counter 32k as a
+ * kernel clocksource
+ * @pbase: base addr of counter_32k module
+ * @size: size of counter_32k to map
+ *
+ * Returns 0 upon success or negative error code upon failure.
+ *
+ */
+int __init omap_init_clocksource_32k(void __iomem *vbase)
{
- static char err[] __initdata = KERN_ERR
- "%s: can't register clocksource!\n";
-
- if (cpu_is_omap16xx() || cpu_class_is_omap2()) {
- u32 pbase;
- unsigned long size = SZ_4K;
- void __iomem *base;
- struct clk *sync_32k_ick;
-
- if (cpu_is_omap16xx()) {
- pbase = OMAP16XX_TIMER_32K_SYNCHRONIZED;
- size = SZ_1K;
- } else if (cpu_is_omap2420())
- pbase = OMAP2420_32KSYNCT_BASE + 0x10;
- else if (cpu_is_omap2430())
- pbase = OMAP2430_32KSYNCT_BASE + 0x10;
- else if (cpu_is_omap34xx())
- pbase = OMAP3430_32KSYNCT_BASE + 0x10;
- else if (cpu_is_omap44xx())
- pbase = OMAP4430_32KSYNCT_BASE + 0x10;
- else
- return -ENODEV;
-
- /* For this to work we must have a static mapping in io.c for this area */
- base = ioremap(pbase, size);
- if (!base)
- return -ENODEV;
-
- sync_32k_ick = clk_get(NULL, "omap_32ksync_ick");
- if (!IS_ERR(sync_32k_ick))
- clk_enable(sync_32k_ick);
-
- timer_32k_base = base;
-
- /*
- * 120000 rough estimate from the calculations in
- * __clocksource_updatefreq_scale.
- */
- clocks_calc_mult_shift(&persistent_mult, &persistent_shift,
- 32768, NSEC_PER_SEC, 120000);
-
- if (clocksource_mmio_init(base, "32k_counter", 32768, 250, 32,
- clocksource_mmio_readl_up))
- printk(err, "32k_counter");
-
- setup_sched_clock(omap_32k_read_sched_clock, 32, 32768);
- register_persistent_clock(NULL, omap_read_persistent_clock);
+ int ret;
+
+ /*
+ * 32k sync Counter register offset is at 0x10
+ */
+ sync32k_cnt_reg = vbase + OMAP2_32KSYNCNT_CR_OFF;
+
+ /*
+ * 120000 rough estimate from the calculations in
+ * __clocksource_updatefreq_scale.
+ */
+ clocks_calc_mult_shift(&persistent_mult, &persistent_shift,
+ 32768, NSEC_PER_SEC, 120000);
+
+ ret = clocksource_mmio_init(sync32k_cnt_reg, "32k_counter", 32768,
+ 250, 32, clocksource_mmio_readl_up);
+ if (ret) {
+ pr_err("32k_counter: can't register clocksource\n");
+ return ret;
}
+
+ setup_sched_clock(omap_32k_read_sched_clock, 32, 32768);
+ pr_info("OMAP clocksource: 32k_counter at 32768 Hz\n");
++ register_persistent_clock(NULL, omap_read_persistent_clock);
+
return 0;
}
next prev parent reply other threads:[~2012-05-10 20:24 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-05-10 18:39 [GIT PULL 1/10] omap non-critical fixes for v3.5 merge window Tony Lindgren
2012-05-10 18:39 ` [GIT PULL 2/10] omap soc clean-up " Tony Lindgren
2012-05-10 18:39 ` [GIT PULL 3/10] more " Tony Lindgren
2012-05-10 18:39 ` Tony Lindgren
2012-05-10 18:39 ` [GIT PULL 2/10] " Tony Lindgren
2012-05-10 18:39 ` [GIT PULL 5/10] omap board file changes " Tony Lindgren
2012-05-10 18:39 ` Tony Lindgren
2012-05-10 18:39 ` [GIT PULL 4/10] updates for omap PRCM (Power, Reset, Clock Management) Tony Lindgren
2012-05-10 18:39 ` [GIT PULL 6/10] omap hwmod data additions for v3.5, depends on devel-prcm Tony Lindgren
2012-05-10 18:39 ` [GIT PULL 7/10] omap device init clean-up for v3.5 Tony Lindgren
2012-05-10 18:39 ` [GIT PULL 4/10] updates for omap PRCM (Power, Reset, Clock Management) Tony Lindgren
2012-05-10 18:39 ` [GIT PULL 7/10] omap device init clean-up for v3.5 Tony Lindgren
2012-05-10 18:39 ` [GIT PULL 6/10] omap hwmod data additions for v3.5, depends on devel-prcm Tony Lindgren
2012-05-10 18:39 ` [GIT PULL 10/10] omap dss clean up for v3.5 merge window Tony Lindgren
2012-05-10 18:39 ` [GIT PULL 8/10] omap timer cleanup " Tony Lindgren
2012-05-10 18:39 ` Tony Lindgren
2012-05-10 18:39 ` [GIT PULL 9/10] omap devicetree updates " Tony Lindgren
2012-05-10 18:39 ` Tony Lindgren
2012-05-10 18:39 ` [GIT PULL 10/10] omap dss clean up " Tony Lindgren
[not found] ` <E1SSYIv-0006IZ-NG@merlin.infradead.org>
2012-05-10 18:50 ` [GIT PULL 9/10] omap devicetree updates " Tony Lindgren
2012-05-10 18:50 ` Tony Lindgren
[not found] ` <E1SSYJA-0006UJ-4H@merlin.infradead.org>
2012-05-10 18:51 ` [GIT PULL 8/10] omap timer cleanup " Tony Lindgren
2012-05-10 18:51 ` Tony Lindgren
2012-05-10 20:24 ` Tony Lindgren [this message]
2012-05-10 20:24 ` Tony Lindgren
2012-05-11 7:07 ` Olof Johansson
2012-05-11 7:07 ` Olof Johansson
[not found] ` <E1SSYJW-0006gd-Dw@merlin.infradead.org>
2012-05-10 18:53 ` [GIT PULL 10/10] omap dss clean up " Tony Lindgren
2012-05-10 18:53 ` Tony Lindgren
[not found] ` <E1SSYHG-0005cy-Cu@merlin.infradead.org>
2012-05-10 18:55 ` [GIT PULL 2/10] omap soc clean-up " Tony Lindgren
2012-05-10 18:55 ` 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=20120510202415.GO21851@atomide.com \
--to=tony@atomide.com \
--cc=arnd@arndb.de \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-omap@vger.kernel.org \
--cc=olof@lixom.net \
/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.