Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1240750 > unrolled thread
| Started by | Felipe Balbi <balbi@ti.com> |
|---|---|
| First post | 2015-10-06 19:10 +0200 |
| Last post | 2015-10-07 05:10 +0200 |
| Articles | 10 — 4 participants |
Back to article view | Back to linux.kernel
[PATCH 00/11] arm: omap: counter32k rework Felipe Balbi <balbi@ti.com> - 2015-10-06 19:10 +0200
[PATCH 07/11] arm: omap2: timer: remove omap4_local_timer_init Felipe Balbi <balbi@ti.com> - 2015-10-06 19:10 +0200
[PATCH 04/11] arm: omap2: timer: provide generic sync32k_timer_init function Felipe Balbi <balbi@ti.com> - 2015-10-06 19:10 +0200
Re: [PATCH 04/11] arm: omap2: timer: provide generic sync32k_timer_init function Suman Anna <s-anna@ti.com> - 2015-10-06 20:40 +0200
Re: [PATCH 04/11] arm: omap2: timer: provide generic sync32k_timer_init function Felipe Balbi <balbi@ti.com> - 2015-10-06 21:20 +0200
[PATCH 02/11] arm: omap2: timer: add a gptimer argument to sync32k_timer_init() Felipe Balbi <balbi@ti.com> - 2015-10-06 19:10 +0200
[PATCH 06/11] arm: omap2: timer: always call clocksource_of_init() when DT Felipe Balbi <balbi@ti.com> - 2015-10-06 19:10 +0200
[PATCH 09/11] clocksource: add TI 32.768 Hz counter driver Felipe Balbi <balbi@ti.com> - 2015-10-06 19:10 +0200
Re: [PATCH 09/11] clocksource: add TI 32.768 Hz counter driver Daniel Lezcano <daniel.lezcano@linaro.org> - 2015-10-07 01:30 +0200
Re: [PATCH 09/11] clocksource: add TI 32.768 Hz counter driver Felipe Balbi <balbi@TI.COM> - 2015-10-07 05:10 +0200
| From | Felipe Balbi <balbi@ti.com> |
|---|---|
| Date | 2015-10-06 19:10 +0200 |
| Subject | [PATCH 00/11] arm: omap: counter32k rework |
| Message-ID | <qgDUt-3Yw-3@gated-at.bofh.it> |
Hi, the following patches de-obfuscate arch/arm/mach-omap2/timer.c and start moving code to drivers/clocksource. So far only counter32k has been moved over. Note that we can't get rid of all the code (yet) because there are still platforms relying to legacy boot and because of the strong coupling with OMAP's hwmod layer. This has a dependency on [1]. Boot tested with AM335x and AM437x. [1] http://marc.info/?l=linux-omap&m=144354336924308&w=2 Here are the changes since v1: - removed register_persistent_clock() in favor of CLOCK_SOURCE_SUSPEND_NONSTOP - make dropped patch setting status=okay to 32k - made sure hwmod wouldn't disable 32k counter - rebased on v4.3-rc4 Boot logs: - AM437x SK: http://hastebin.com/zuvetojaqe - BBB: http://hastebin.com/ihuponayap Felipe Balbi (11): arm: omap2: timer: get rid of obfuscating macros arm: omap2: timer: add a gptimer argument to sync32k_timer_init() arm: omap2: timer: remove __omap_gptimer_init() arm: omap2: timer: provide generic sync32k_timer_init function arm: omap2: timer: move realtime_counter_init() around arm: omap2: timer: always call clocksource_of_init() when DT arm: omap2: timer: remove omap4_local_timer_init arm: omap2: timer: rename omap_sync32k_timer_init() clocksource: add TI 32.768 Hz counter driver arm: omap2+: select 32k clocksource driver arm: omap2: timer: limit hwmod usage to non-DT boots arch/arm/mach-omap2/Kconfig | 1 + arch/arm/mach-omap2/board-generic.c | 14 ++-- arch/arm/mach-omap2/board-ldp.c | 2 +- arch/arm/mach-omap2/board-rx51.c | 2 +- arch/arm/mach-omap2/common.h | 4 +- arch/arm/mach-omap2/timer.c | 141 +++++++++++++++--------------------- drivers/clocksource/Kconfig | 7 ++ drivers/clocksource/Makefile | 1 + drivers/clocksource/timer-ti-32k.c | 122 +++++++++++++++++++++++++++++++ 9 files changed, 199 insertions(+), 95 deletions(-) create mode 100644 drivers/clocksource/timer-ti-32k.c -- 2.5.3 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [next] | [standalone]
| From | Felipe Balbi <balbi@ti.com> |
|---|---|
| Date | 2015-10-06 19:10 +0200 |
| Subject | [PATCH 07/11] arm: omap2: timer: remove omap4_local_timer_init |
| Message-ID | <qgDUx-3Yw-67@gated-at.bofh.it> |
| In reply to | #1240750 |
We're now always calling clocksource_of_init()
whenever booting with DT, so we can use the
generic omap_sync32k_timer_init() (which will
be renamed in a follow-up patch) for OMAP4
as well.
Signed-off-by: Felipe Balbi <balbi@ti.com>
---
arch/arm/mach-omap2/board-generic.c | 4 ++--
arch/arm/mach-omap2/common.h | 1 -
arch/arm/mach-omap2/timer.c | 8 --------
3 files changed, 2 insertions(+), 11 deletions(-)
diff --git a/arch/arm/mach-omap2/board-generic.c b/arch/arm/mach-omap2/board-generic.c
index 871db0f0fa66..20d5e82ab6ee 100644
--- a/arch/arm/mach-omap2/board-generic.c
+++ b/arch/arm/mach-omap2/board-generic.c
@@ -228,7 +228,7 @@ DT_MACHINE_START(OMAP4_DT, "Generic OMAP4 (Flattened Device Tree)")
.init_irq = omap_gic_of_init,
.init_machine = omap_generic_init,
.init_late = omap4430_init_late,
- .init_time = omap4_local_timer_init,
+ .init_time = omap_sync32k_timer_init,
.dt_compat = omap4_boards_compat,
.restart = omap44xx_restart,
MACHINE_END
@@ -272,7 +272,7 @@ DT_MACHINE_START(AM43_DT, "Generic AM43 (Flattened Device Tree)")
.init_late = am43xx_init_late,
.init_irq = omap_gic_of_init,
.init_machine = omap_generic_init,
- .init_time = omap4_local_timer_init,
+ .init_time = omap_sync32k_timer_init,
.dt_compat = am43_boards_compat,
.restart = omap44xx_restart,
MACHINE_END
diff --git a/arch/arm/mach-omap2/common.h b/arch/arm/mach-omap2/common.h
index 844ad031f7f0..bf42fc4e78f4 100644
--- a/arch/arm/mach-omap2/common.h
+++ b/arch/arm/mach-omap2/common.h
@@ -91,7 +91,6 @@ extern void omap2_init_common_infrastructure(void);
extern void omap_sync32k_timer_init(void);
extern void omap3_secure_sync32k_timer_init(void);
extern void omap3_gptimer_timer_init(void);
-extern void omap4_local_timer_init(void);
#ifdef CONFIG_CACHE_L2X0
int omap_l2_cache_init(void);
#define OMAP_L2C_AUX_CTRL (L2C_AUX_CTRL_SHARED_OVERRIDE | \
diff --git a/arch/arm/mach-omap2/timer.c b/arch/arm/mach-omap2/timer.c
index b523426f38a5..f41e526ffa46 100644
--- a/arch/arm/mach-omap2/timer.c
+++ b/arch/arm/mach-omap2/timer.c
@@ -517,14 +517,6 @@ void __init omap3_gptimer_timer_init(void)
}
#endif
-#if defined(CONFIG_ARCH_OMAP4) || defined(CONFIG_SOC_OMAP5) || \
- defined(CONFIG_SOC_DRA7XX) || defined(CONFIG_SOC_AM43XX)
-void __init omap4_local_timer_init(void)
-{
- omap_sync32k_timer_init();
-}
-#endif
-
#if defined(CONFIG_SOC_OMAP5) || defined(CONFIG_SOC_DRA7XX)
/*
--
2.5.3
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Felipe Balbi <balbi@ti.com> |
|---|---|
| Date | 2015-10-06 19:10 +0200 |
| Subject | [PATCH 04/11] arm: omap2: timer: provide generic sync32k_timer_init function |
| Message-ID | <qgDUx-3Yw-69@gated-at.bofh.it> |
| In reply to | #1240750 |
instead of constantly defining a small wrapper
around __omap_sync32k_timer_init(), let's define
a generic one which can be used by all OMAPs.
Signed-off-by: Felipe Balbi <balbi@ti.com>
---
arch/arm/mach-omap2/board-generic.c | 10 +++++-----
arch/arm/mach-omap2/board-ldp.c | 2 +-
arch/arm/mach-omap2/board-rx51.c | 2 +-
arch/arm/mach-omap2/common.h | 3 +--
arch/arm/mach-omap2/timer.c | 20 +++-----------------
5 files changed, 11 insertions(+), 26 deletions(-)
diff --git a/arch/arm/mach-omap2/board-generic.c b/arch/arm/mach-omap2/board-generic.c
index 9df14ed7dab1..871db0f0fa66 100644
--- a/arch/arm/mach-omap2/board-generic.c
+++ b/arch/arm/mach-omap2/board-generic.c
@@ -46,7 +46,7 @@ DT_MACHINE_START(OMAP242X_DT, "Generic OMAP2420 (Flattened Device Tree)")
.map_io = omap242x_map_io,
.init_early = omap2420_init_early,
.init_machine = omap_generic_init,
- .init_time = omap2_sync32k_timer_init,
+ .init_time = omap_sync32k_timer_init,
.dt_compat = omap242x_boards_compat,
.restart = omap2xxx_restart,
MACHINE_END
@@ -63,7 +63,7 @@ DT_MACHINE_START(OMAP243X_DT, "Generic OMAP2430 (Flattened Device Tree)")
.map_io = omap243x_map_io,
.init_early = omap2430_init_early,
.init_machine = omap_generic_init,
- .init_time = omap2_sync32k_timer_init,
+ .init_time = omap_sync32k_timer_init,
.dt_compat = omap243x_boards_compat,
.restart = omap2xxx_restart,
MACHINE_END
@@ -82,7 +82,7 @@ DT_MACHINE_START(OMAP3_N900_DT, "Nokia RX-51 board")
.init_early = omap3430_init_early,
.init_machine = omap_generic_init,
.init_late = omap3_init_late,
- .init_time = omap3_sync32k_timer_init,
+ .init_time = omap_sync32k_timer_init,
.dt_compat = n900_boards_compat,
.restart = omap3xxx_restart,
MACHINE_END
@@ -100,7 +100,7 @@ DT_MACHINE_START(OMAP3_DT, "Generic OMAP3 (Flattened Device Tree)")
.init_early = omap3430_init_early,
.init_machine = omap_generic_init,
.init_late = omap3_init_late,
- .init_time = omap3_sync32k_timer_init,
+ .init_time = omap_sync32k_timer_init,
.dt_compat = omap3_boards_compat,
.restart = omap3xxx_restart,
MACHINE_END
@@ -116,7 +116,7 @@ DT_MACHINE_START(OMAP36XX_DT, "Generic OMAP36xx (Flattened Device Tree)")
.init_early = omap3630_init_early,
.init_machine = omap_generic_init,
.init_late = omap3_init_late,
- .init_time = omap3_sync32k_timer_init,
+ .init_time = omap_sync32k_timer_init,
.dt_compat = omap36xx_boards_compat,
.restart = omap3xxx_restart,
MACHINE_END
diff --git a/arch/arm/mach-omap2/board-ldp.c b/arch/arm/mach-omap2/board-ldp.c
index c2975af4cd5d..0d3a57c6931f 100644
--- a/arch/arm/mach-omap2/board-ldp.c
+++ b/arch/arm/mach-omap2/board-ldp.c
@@ -424,6 +424,6 @@ MACHINE_START(OMAP_LDP, "OMAP LDP board")
.init_irq = omap3_init_irq,
.init_machine = omap_ldp_init,
.init_late = omap3430_init_late,
- .init_time = omap3_sync32k_timer_init,
+ .init_time = omap_sync32k_timer_init,
.restart = omap3xxx_restart,
MACHINE_END
diff --git a/arch/arm/mach-omap2/board-rx51.c b/arch/arm/mach-omap2/board-rx51.c
index 2d1e5a6beb85..830256c434ec 100644
--- a/arch/arm/mach-omap2/board-rx51.c
+++ b/arch/arm/mach-omap2/board-rx51.c
@@ -136,6 +136,6 @@ MACHINE_START(NOKIA_RX51, "Nokia RX-51 board")
.init_irq = omap3_init_irq,
.init_machine = rx51_init,
.init_late = omap3430_init_late,
- .init_time = omap3_sync32k_timer_init,
+ .init_time = omap_sync32k_timer_init,
.restart = omap3xxx_restart,
MACHINE_END
diff --git a/arch/arm/mach-omap2/common.h b/arch/arm/mach-omap2/common.h
index 92e92cfc2775..844ad031f7f0 100644
--- a/arch/arm/mach-omap2/common.h
+++ b/arch/arm/mach-omap2/common.h
@@ -88,8 +88,7 @@ static inline int omap_mux_late_init(void)
extern void omap2_init_common_infrastructure(void);
-extern void omap2_sync32k_timer_init(void);
-extern void omap3_sync32k_timer_init(void);
+extern void omap_sync32k_timer_init(void);
extern void omap3_secure_sync32k_timer_init(void);
extern void omap3_gptimer_timer_init(void);
extern void omap4_local_timer_init(void);
diff --git a/arch/arm/mach-omap2/timer.c b/arch/arm/mach-omap2/timer.c
index 976ff9fa3594..d14e25b2d7a4 100644
--- a/arch/arm/mach-omap2/timer.c
+++ b/arch/arm/mach-omap2/timer.c
@@ -608,21 +608,13 @@ static void __init __omap_sync32k_timer_init(int clkev_nr, const char *clkev_src
omap2_sync32k_clocksource_init();
}
-#ifdef CONFIG_ARCH_OMAP2
-void __init omap2_sync32k_timer_init(void)
+void __init omap_sync32k_timer_init(void)
{
__omap_sync32k_timer_init(1, "timer_32k_ck", "ti,timer-alwon",
2, "timer_sys_ck", NULL, false);
}
-#endif /* CONFIG_ARCH_OMAP2 */
#if defined(CONFIG_ARCH_OMAP3) || defined(CONFIG_SOC_AM43XX)
-void __init omap3_sync32k_timer_init(void)
-{
- __omap_sync32k_timer_init(1, "timer_32k_ck", "ti,timer-alwon",
- 2, "timer_sys_ck", NULL, false);
-}
-
void __init omap3_secure_sync32k_timer_init(void)
{
__omap_sync32k_timer_init(12, "secure_32k_fck", "ti,timer-secure",
@@ -640,15 +632,9 @@ void __init omap3_gptimer_timer_init(void)
#if defined(CONFIG_ARCH_OMAP4) || defined(CONFIG_SOC_OMAP5) || \
defined(CONFIG_SOC_DRA7XX) || defined(CONFIG_SOC_AM43XX)
-static void __init omap4_sync32k_timer_init(void)
-{
- __omap_sync32k_timer_init(1, "timer_32k_ck", "ti,timer-alwon",
- 2, "sys_clkin_ck", NULL, false);
-}
-
void __init omap4_local_timer_init(void)
{
- omap4_sync32k_timer_init();
+ omap_sync32k_timer_init();
clocksource_of_init();
}
#endif
@@ -656,7 +642,7 @@ void __init omap4_local_timer_init(void)
#if defined(CONFIG_SOC_OMAP5) || defined(CONFIG_SOC_DRA7XX)
void __init omap5_realtime_timer_init(void)
{
- omap4_sync32k_timer_init();
+ omap_sync32k_timer_init();
realtime_counter_init();
clocksource_of_init();
--
2.5.3
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Suman Anna <s-anna@ti.com> |
|---|---|
| Date | 2015-10-06 20:40 +0200 |
| Subject | Re: [PATCH 04/11] arm: omap2: timer: provide generic sync32k_timer_init function |
| Message-ID | <qgFjA-5St-1@gated-at.bofh.it> |
| In reply to | #1240752 |
On 10/06/2015 12:02 PM, Balbi, Felipe wrote:
> instead of constantly defining a small wrapper
> around __omap_sync32k_timer_init(), let's define
> a generic one which can be used by all OMAPs.
>
> Signed-off-by: Felipe Balbi <balbi@ti.com>
> ---
> arch/arm/mach-omap2/board-generic.c | 10 +++++-----
> arch/arm/mach-omap2/board-ldp.c | 2 +-
> arch/arm/mach-omap2/board-rx51.c | 2 +-
> arch/arm/mach-omap2/common.h | 3 +--
> arch/arm/mach-omap2/timer.c | 20 +++-----------------
> 5 files changed, 11 insertions(+), 26 deletions(-)
>
> diff --git a/arch/arm/mach-omap2/board-generic.c b/arch/arm/mach-omap2/board-generic.c
> index 9df14ed7dab1..871db0f0fa66 100644
> --- a/arch/arm/mach-omap2/board-generic.c
> +++ b/arch/arm/mach-omap2/board-generic.c
> @@ -46,7 +46,7 @@ DT_MACHINE_START(OMAP242X_DT, "Generic OMAP2420 (Flattened Device Tree)")
> .map_io = omap242x_map_io,
> .init_early = omap2420_init_early,
> .init_machine = omap_generic_init,
> - .init_time = omap2_sync32k_timer_init,
> + .init_time = omap_sync32k_timer_init,
> .dt_compat = omap242x_boards_compat,
> .restart = omap2xxx_restart,
> MACHINE_END
> @@ -63,7 +63,7 @@ DT_MACHINE_START(OMAP243X_DT, "Generic OMAP2430 (Flattened Device Tree)")
> .map_io = omap243x_map_io,
> .init_early = omap2430_init_early,
> .init_machine = omap_generic_init,
> - .init_time = omap2_sync32k_timer_init,
> + .init_time = omap_sync32k_timer_init,
> .dt_compat = omap243x_boards_compat,
> .restart = omap2xxx_restart,
> MACHINE_END
> @@ -82,7 +82,7 @@ DT_MACHINE_START(OMAP3_N900_DT, "Nokia RX-51 board")
> .init_early = omap3430_init_early,
> .init_machine = omap_generic_init,
> .init_late = omap3_init_late,
> - .init_time = omap3_sync32k_timer_init,
> + .init_time = omap_sync32k_timer_init,
> .dt_compat = n900_boards_compat,
> .restart = omap3xxx_restart,
> MACHINE_END
> @@ -100,7 +100,7 @@ DT_MACHINE_START(OMAP3_DT, "Generic OMAP3 (Flattened Device Tree)")
> .init_early = omap3430_init_early,
> .init_machine = omap_generic_init,
> .init_late = omap3_init_late,
> - .init_time = omap3_sync32k_timer_init,
> + .init_time = omap_sync32k_timer_init,
> .dt_compat = omap3_boards_compat,
> .restart = omap3xxx_restart,
> MACHINE_END
> @@ -116,7 +116,7 @@ DT_MACHINE_START(OMAP36XX_DT, "Generic OMAP36xx (Flattened Device Tree)")
> .init_early = omap3630_init_early,
> .init_machine = omap_generic_init,
> .init_late = omap3_init_late,
> - .init_time = omap3_sync32k_timer_init,
> + .init_time = omap_sync32k_timer_init,
> .dt_compat = omap36xx_boards_compat,
> .restart = omap3xxx_restart,
> MACHINE_END
> diff --git a/arch/arm/mach-omap2/board-ldp.c b/arch/arm/mach-omap2/board-ldp.c
> index c2975af4cd5d..0d3a57c6931f 100644
> --- a/arch/arm/mach-omap2/board-ldp.c
> +++ b/arch/arm/mach-omap2/board-ldp.c
> @@ -424,6 +424,6 @@ MACHINE_START(OMAP_LDP, "OMAP LDP board")
> .init_irq = omap3_init_irq,
> .init_machine = omap_ldp_init,
> .init_late = omap3430_init_late,
> - .init_time = omap3_sync32k_timer_init,
> + .init_time = omap_sync32k_timer_init,
> .restart = omap3xxx_restart,
> MACHINE_END
> diff --git a/arch/arm/mach-omap2/board-rx51.c b/arch/arm/mach-omap2/board-rx51.c
> index 2d1e5a6beb85..830256c434ec 100644
> --- a/arch/arm/mach-omap2/board-rx51.c
> +++ b/arch/arm/mach-omap2/board-rx51.c
> @@ -136,6 +136,6 @@ MACHINE_START(NOKIA_RX51, "Nokia RX-51 board")
> .init_irq = omap3_init_irq,
> .init_machine = rx51_init,
> .init_late = omap3430_init_late,
> - .init_time = omap3_sync32k_timer_init,
> + .init_time = omap_sync32k_timer_init,
> .restart = omap3xxx_restart,
> MACHINE_END
> diff --git a/arch/arm/mach-omap2/common.h b/arch/arm/mach-omap2/common.h
> index 92e92cfc2775..844ad031f7f0 100644
> --- a/arch/arm/mach-omap2/common.h
> +++ b/arch/arm/mach-omap2/common.h
> @@ -88,8 +88,7 @@ static inline int omap_mux_late_init(void)
>
> extern void omap2_init_common_infrastructure(void);
>
> -extern void omap2_sync32k_timer_init(void);
> -extern void omap3_sync32k_timer_init(void);
> +extern void omap_sync32k_timer_init(void);
> extern void omap3_secure_sync32k_timer_init(void);
> extern void omap3_gptimer_timer_init(void);
> extern void omap4_local_timer_init(void);
> diff --git a/arch/arm/mach-omap2/timer.c b/arch/arm/mach-omap2/timer.c
> index 976ff9fa3594..d14e25b2d7a4 100644
> --- a/arch/arm/mach-omap2/timer.c
> +++ b/arch/arm/mach-omap2/timer.c
> @@ -608,21 +608,13 @@ static void __init __omap_sync32k_timer_init(int clkev_nr, const char *clkev_src
> omap2_sync32k_clocksource_init();
> }
>
> -#ifdef CONFIG_ARCH_OMAP2
> -void __init omap2_sync32k_timer_init(void)
> +void __init omap_sync32k_timer_init(void)
> {
> __omap_sync32k_timer_init(1, "timer_32k_ck", "ti,timer-alwon",
> 2, "timer_sys_ck", NULL, false);
> }
> -#endif /* CONFIG_ARCH_OMAP2 */
>
> #if defined(CONFIG_ARCH_OMAP3) || defined(CONFIG_SOC_AM43XX)
> -void __init omap3_sync32k_timer_init(void)
> -{
> - __omap_sync32k_timer_init(1, "timer_32k_ck", "ti,timer-alwon",
> - 2, "timer_sys_ck", NULL, false);
> -}
> -
> void __init omap3_secure_sync32k_timer_init(void)
> {
> __omap_sync32k_timer_init(12, "secure_32k_fck", "ti,timer-secure",
> @@ -640,15 +632,9 @@ void __init omap3_gptimer_timer_init(void)
>
> #if defined(CONFIG_ARCH_OMAP4) || defined(CONFIG_SOC_OMAP5) || \
> defined(CONFIG_SOC_DRA7XX) || defined(CONFIG_SOC_AM43XX)
> -static void __init omap4_sync32k_timer_init(void)
> -{
> - __omap_sync32k_timer_init(1, "timer_32k_ck", "ti,timer-alwon",
> - 2, "sys_clkin_ck", NULL, false);
> -}
> -
> void __init omap4_local_timer_init(void)
> {
> - omap4_sync32k_timer_init();
> + omap_sync32k_timer_init();
Hmm, this is changing the parent clock source for the timer from
sys_clkin_ck to timer_sys_ck for OMAP4 and OMAP5 below. I am not sure of
the history behind the parent source, but is this what you intended to
do here.
regards
Suman
> clocksource_of_init();
> }
> #endif
> @@ -656,7 +642,7 @@ void __init omap4_local_timer_init(void)
> #if defined(CONFIG_SOC_OMAP5) || defined(CONFIG_SOC_DRA7XX)
> void __init omap5_realtime_timer_init(void)
> {
> - omap4_sync32k_timer_init();
> + omap_sync32k_timer_init();
> realtime_counter_init();
>
> clocksource_of_init();
>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Felipe Balbi <balbi@ti.com> |
|---|---|
| Date | 2015-10-06 21:20 +0200 |
| Subject | Re: [PATCH 04/11] arm: omap2: timer: provide generic sync32k_timer_init function |
| Message-ID | <qgFWh-6Rt-1@gated-at.bofh.it> |
| In reply to | #1240849 |
[Multipart message — attachments visible in raw view] — view raw
Hi,
Suman Anna <s-anna@ti.com> writes:
>> diff --git a/arch/arm/mach-omap2/timer.c b/arch/arm/mach-omap2/timer.c
>> index 976ff9fa3594..d14e25b2d7a4 100644
>> --- a/arch/arm/mach-omap2/timer.c
>> +++ b/arch/arm/mach-omap2/timer.c
>> @@ -608,21 +608,13 @@ static void __init __omap_sync32k_timer_init(int clkev_nr, const char *clkev_src
>> omap2_sync32k_clocksource_init();
>> }
>>
>> -#ifdef CONFIG_ARCH_OMAP2
>> -void __init omap2_sync32k_timer_init(void)
>> +void __init omap_sync32k_timer_init(void)
>> {
>> __omap_sync32k_timer_init(1, "timer_32k_ck", "ti,timer-alwon",
>> 2, "timer_sys_ck", NULL, false);
>> }
>> -#endif /* CONFIG_ARCH_OMAP2 */
>>
>> #if defined(CONFIG_ARCH_OMAP3) || defined(CONFIG_SOC_AM43XX)
>> -void __init omap3_sync32k_timer_init(void)
>> -{
>> - __omap_sync32k_timer_init(1, "timer_32k_ck", "ti,timer-alwon",
>> - 2, "timer_sys_ck", NULL, false);
>> -}
>> -
>> void __init omap3_secure_sync32k_timer_init(void)
>> {
>> __omap_sync32k_timer_init(12, "secure_32k_fck", "ti,timer-secure",
>> @@ -640,15 +632,9 @@ void __init omap3_gptimer_timer_init(void)
>>
>> #if defined(CONFIG_ARCH_OMAP4) || defined(CONFIG_SOC_OMAP5) || \
>> defined(CONFIG_SOC_DRA7XX) || defined(CONFIG_SOC_AM43XX)
>> -static void __init omap4_sync32k_timer_init(void)
>> -{
>> - __omap_sync32k_timer_init(1, "timer_32k_ck", "ti,timer-alwon",
>> - 2, "sys_clkin_ck", NULL, false);
>> -}
>> -
>> void __init omap4_local_timer_init(void)
>> {
>> - omap4_sync32k_timer_init();
>> + omap_sync32k_timer_init();
>
> Hmm, this is changing the parent clock source for the timer from
> sys_clkin_ck to timer_sys_ck for OMAP4 and OMAP5 below. I am not sure of
> the history behind the parent source, but is this what you intended to
> do here.
good catch. I'll fix this for next revision
--
balbi
[toc] | [prev] | [next] | [standalone]
| From | Felipe Balbi <balbi@ti.com> |
|---|---|
| Date | 2015-10-06 19:10 +0200 |
| Subject | [PATCH 02/11] arm: omap2: timer: add a gptimer argument to sync32k_timer_init() |
| Message-ID | <qgDUx-3Yw-77@gated-at.bofh.it> |
| In reply to | #1240750 |
as it turns out, __omap_gptimer_init() and
__omap_sync32k_timer_init() are essentially
the same thing, but __omap_gptimer_init() wants
to always use gptimer.
Instead of forcing all those devices to pass
a use_gptimer cmdline argument, we add a new
function argument to __omap_sync32k_timer_init()
in preparation to deleting __omap_gptimer_init().
On a follow-up patch, we will remove uses of
__omap_gptimer_init() and replace them with
__omap_sync32k_timer_init() and pass the last
argument as true.
Signed-off-by: Felipe Balbi <balbi@ti.com>
---
arch/arm/mach-omap2/timer.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/arch/arm/mach-omap2/timer.c b/arch/arm/mach-omap2/timer.c
index 23e58ea6a171..f53ed049d710 100644
--- a/arch/arm/mach-omap2/timer.c
+++ b/arch/arm/mach-omap2/timer.c
@@ -604,14 +604,14 @@ static void __init __omap_gptimer_init(int clkev_nr, const char *clkev_src,
static void __init __omap_sync32k_timer_init(int clkev_nr, const char *clkev_src,
const char *clkev_prop, int clksrc_nr, const char *clksrc_src,
- const char *clksrc_prop)
+ const char *clksrc_prop, bool gptimer)
{
omap_clk_init();
omap_dmtimer_init();
omap2_gp_clockevent_init(clkev_nr, clkev_src, clkev_prop);
/* Enable the use of clocksource="gp_timer" kernel parameter */
- if (use_gptimer_clksrc)
+ if (use_gptimer_clksrc || gptimer)
omap2_gptimer_clocksource_init(clksrc_nr, clksrc_src,
clksrc_prop);
else
@@ -622,7 +622,7 @@ static void __init __omap_sync32k_timer_init(int clkev_nr, const char *clkev_src
void __init omap2_sync32k_timer_init(void)
{
__omap_sync32k_timer_init(1, "timer_32k_ck", "ti,timer-alwon",
- 2, "timer_sys_ck", NULL);
+ 2, "timer_sys_ck", NULL, false);
}
#endif /* CONFIG_ARCH_OMAP2 */
@@ -630,13 +630,13 @@ void __init omap2_sync32k_timer_init(void)
void __init omap3_sync32k_timer_init(void)
{
__omap_sync32k_timer_init(1, "timer_32k_ck", "ti,timer-alwon",
- 2, "timer_sys_ck", NULL);
+ 2, "timer_sys_ck", NULL, false);
}
void __init omap3_secure_sync32k_timer_init(void)
{
__omap_sync32k_timer_init(12, "secure_32k_fck", "ti,timer-secure",
- 2, "timer_sys_ck", NULL);
+ 2, "timer_sys_ck", NULL, false);
}
#endif /* CONFIG_ARCH_OMAP3 */
@@ -653,7 +653,7 @@ void __init omap3_gptimer_timer_init(void)
static void __init omap4_sync32k_timer_init(void)
{
__omap_sync32k_timer_init(1, "timer_32k_ck", "ti,timer-alwon",
- 2, "sys_clkin_ck", NULL);
+ 2, "sys_clkin_ck", NULL, false);
}
void __init omap4_local_timer_init(void)
--
2.5.3
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Felipe Balbi <balbi@ti.com> |
|---|---|
| Date | 2015-10-06 19:10 +0200 |
| Subject | [PATCH 06/11] arm: omap2: timer: always call clocksource_of_init() when DT |
| Message-ID | <qgDUx-3Yw-73@gated-at.bofh.it> |
| In reply to | #1240750 |
If booting with DT, let's make sure to always
call clocksource_of_init() as this will make
it easier to move timer code to drivers/clocksource
in the future.
Signed-off-by: Felipe Balbi <balbi@ti.com>
---
arch/arm/mach-omap2/timer.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/arch/arm/mach-omap2/timer.c b/arch/arm/mach-omap2/timer.c
index dcc0f032e717..b523426f38a5 100644
--- a/arch/arm/mach-omap2/timer.c
+++ b/arch/arm/mach-omap2/timer.c
@@ -496,6 +496,9 @@ void __init omap_sync32k_timer_init(void)
{
__omap_sync32k_timer_init(1, "timer_32k_ck", "ti,timer-alwon",
2, "timer_sys_ck", NULL, false);
+
+ if (of_have_populated_dt())
+ clocksource_of_init();
}
#if defined(CONFIG_ARCH_OMAP3) || defined(CONFIG_SOC_AM43XX)
@@ -519,7 +522,6 @@ void __init omap3_gptimer_timer_init(void)
void __init omap4_local_timer_init(void)
{
omap_sync32k_timer_init();
- clocksource_of_init();
}
#endif
@@ -640,10 +642,8 @@ sysclk1_based:
void __init omap5_realtime_timer_init(void)
{
- omap_sync32k_timer_init();
realtime_counter_init();
-
- clocksource_of_init();
+ omap_sync32k_timer_init();
}
#endif /* CONFIG_SOC_OMAP5 || CONFIG_SOC_DRA7XX */
--
2.5.3
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Felipe Balbi <balbi@ti.com> |
|---|---|
| Date | 2015-10-06 19:10 +0200 |
| Subject | [PATCH 09/11] clocksource: add TI 32.768 Hz counter driver |
| Message-ID | <qgDUx-3Yw-75@gated-at.bofh.it> |
| In reply to | #1240750 |
Introduce a new clocksource driver for Texas
Instruments 32.768 Hz device which is available
on most OMAP-like devices.
Signed-off-by: Felipe Balbi <balbi@ti.com>
---
drivers/clocksource/Kconfig | 7 +++
drivers/clocksource/Makefile | 1 +
drivers/clocksource/timer-ti-32k.c | 122 +++++++++++++++++++++++++++++++++++++
3 files changed, 130 insertions(+)
create mode 100644 drivers/clocksource/timer-ti-32k.c
diff --git a/drivers/clocksource/Kconfig b/drivers/clocksource/Kconfig
index a7726db13abb..98b2a9b9bfad 100644
--- a/drivers/clocksource/Kconfig
+++ b/drivers/clocksource/Kconfig
@@ -115,6 +115,13 @@ config CLKSRC_PISTACHIO
bool
select CLKSRC_OF
+config CLKSRC_TI_32K
+ bool "Texas Instruments 32.768 Hz Clocksource" if COMPILE_TEST
+ select CLKSRC_OF if OF
+ help
+ This option enables support for Texas Instruments 32.768 Hz clocksource
+ available on many OMAP-like platforms.
+
config CLKSRC_STM32
bool "Clocksource for STM32 SoCs" if !ARCH_STM32
depends on OF && ARM && (ARCH_STM32 || COMPILE_TEST)
diff --git a/drivers/clocksource/Makefile b/drivers/clocksource/Makefile
index 5c00863c3e33..749abc3665b3 100644
--- a/drivers/clocksource/Makefile
+++ b/drivers/clocksource/Makefile
@@ -45,6 +45,7 @@ obj-$(CONFIG_VF_PIT_TIMER) += vf_pit_timer.o
obj-$(CONFIG_CLKSRC_QCOM) += qcom-timer.o
obj-$(CONFIG_MTK_TIMER) += mtk_timer.o
obj-$(CONFIG_CLKSRC_PISTACHIO) += time-pistachio.o
+obj-$(CONFIG_CLKSRC_TI_32K) += timer-ti-32k.o
obj-$(CONFIG_ARM_ARCH_TIMER) += arm_arch_timer.o
obj-$(CONFIG_ARM_GLOBAL_TIMER) += arm_global_timer.o
diff --git a/drivers/clocksource/timer-ti-32k.c b/drivers/clocksource/timer-ti-32k.c
new file mode 100644
index 000000000000..12e2ca7bcc49
--- /dev/null
+++ b/drivers/clocksource/timer-ti-32k.c
@@ -0,0 +1,122 @@
+/**
+ * timer-ti-32k.c - OMAP2 32k Timer Support
+ *
+ * Copyright (C) 2009 Nokia Corporation
+ *
+ * Update to use new clocksource/clockevent layers
+ * Author: Kevin Hilman, MontaVista Software, Inc. <source@mvista.com>
+ * Copyright (C) 2007 MontaVista Software, Inc.
+ *
+ * Original driver:
+ * Copyright (C) 2005 Nokia Corporation
+ * Author: Paul Mundt <paul.mundt@nokia.com>
+ * Juha Yrjölä <juha.yrjola@nokia.com>
+ * OMAP Dual-mode timer framework support by Timo Teras
+ *
+ * Some parts based off of TI's 24xx code:
+ *
+ * Copyright (C) 2004-2009 Texas Instruments, Inc.
+ *
+ * Roughly modelled after the OMAP1 MPU timer code.
+ * Added OMAP4 support - Santosh Shilimkar <santosh.shilimkar@ti.com>
+ *
+ * Copyright (C) 2015 Texas Instruments Incorporated - http://www.ti.com
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 of
+ * the License as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <linux/init.h>
+#include <linux/time.h>
+#include <linux/sched_clock.h>
+#include <linux/clocksource.h>
+#include <linux/of.h>
+#include <linux/of_address.h>
+
+/*
+ * 32KHz clocksource ... always available, on pretty most chips except
+ * OMAP 730 and 1510. Other timers could be used as clocksources, with
+ * higher resolution in free-running counter modes (e.g. 12 MHz xtal),
+ * but systems won't necessarily want to spend resources that way.
+ */
+
+#define OMAP2_32KSYNCNT_REV_OFF 0x0
+#define OMAP2_32KSYNCNT_REV_SCHEME (0x3 << 30)
+#define OMAP2_32KSYNCNT_CR_OFF_LOW 0x10
+#define OMAP2_32KSYNCNT_CR_OFF_HIGH 0x30
+
+struct ti_32k {
+ void __iomem *base;
+ void __iomem *counter;
+ struct clocksource cs;
+};
+#define to_ti_32k(cs) (container_of((cs), struct ti_32k, cs))
+
+static cycle_t ti_32k_read_cycles(struct clocksource *cs)
+{
+ struct ti_32k *ti = to_ti_32k(cs);
+
+ return (cycle_t)readl_relaxed(ti->counter);
+}
+
+static struct ti_32k ti_32k_timer = {
+ .cs = {
+ .name = "32k_counter",
+ .rating = 250,
+ .read = ti_32k_read_cycles,
+ .mask = CLOCKSOURCE_MASK(32),
+ .flags = CLOCK_SOURCE_IS_CONTINUOUS |
+ CLOCK_SOURCE_SUSPEND_NONSTOP,
+ },
+};
+
+static u64 notrace omap_32k_read_sched_clock(void)
+{
+ return ti_32k_read_cycles(&ti_32k_timer.cs);
+}
+
+static void __init ti_32k_timer_init(struct device_node *np)
+{
+ int ret;
+
+ ti_32k_timer.base = of_iomap(np, 0);
+ if (!ti_32k_timer.base) {
+ pr_err("Can't ioremap 32k timer base\n");
+ return;
+ }
+
+ ti_32k_timer.counter = ti_32k_timer.base;
+
+ /*
+ * 32k sync Counter IP register offsets vary between the highlander
+ * version and the legacy ones.
+ *
+ * The 'SCHEME' bits(30-31) of the revision register is used to identify
+ * the version.
+ */
+ if (readl_relaxed(ti_32k_timer.base + OMAP2_32KSYNCNT_REV_OFF) &
+ OMAP2_32KSYNCNT_REV_SCHEME)
+ ti_32k_timer.counter += OMAP2_32KSYNCNT_CR_OFF_HIGH;
+ else
+ ti_32k_timer.counter += OMAP2_32KSYNCNT_CR_OFF_LOW;
+
+ ret = clocksource_register_hz(&ti_32k_timer.cs, 32768);
+ if (ret) {
+ pr_err("32k_counter: can't register clocksource\n");
+ return;
+ }
+
+ sched_clock_register(omap_32k_read_sched_clock, 32, 32768);
+ pr_info("OMAP clocksource: 32k_counter at 32768 Hz\n");
+}
+CLOCKSOURCE_OF_DECLARE(ti_32k_timer, "ti,omap-counter32k",
+ ti_32k_timer_init);
--
2.5.3
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Daniel Lezcano <daniel.lezcano@linaro.org> |
|---|---|
| Date | 2015-10-07 01:30 +0200 |
| Subject | Re: [PATCH 09/11] clocksource: add TI 32.768 Hz counter driver |
| Message-ID | <qgJQe-44b-1@gated-at.bofh.it> |
| In reply to | #1240756 |
On 10/06/2015 07:02 PM, Felipe Balbi wrote:
> Introduce a new clocksource driver for Texas
> Instruments 32.768 Hz device which is available
> on most OMAP-like devices.
>
> Signed-off-by: Felipe Balbi <balbi@ti.com>
Hi Felipe,
With the couple of nits below fixed, you can my:
Acked-by: Daniel Lezcano <daniel.lezcano@linaro.org>
[ ... ]
> +#define OMAP2_32KSYNCNT_REV_OFF 0x0
> +#define OMAP2_32KSYNCNT_REV_SCHEME (0x3 << 30)
> +#define OMAP2_32KSYNCNT_CR_OFF_LOW 0x10
> +#define OMAP2_32KSYNCNT_CR_OFF_HIGH 0x30
> +
> +struct ti_32k {
> + void __iomem *base;
> + void __iomem *counter;
> + struct clocksource cs;
> +};
> +#define to_ti_32k(cs) (container_of((cs), struct ti_32k, cs))
Usually a static inline is used instead of a macro for that.
> +static cycle_t ti_32k_read_cycles(struct clocksource *cs)
> +{
> + struct ti_32k *ti = to_ti_32k(cs);
format
--
<http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs
Follow Linaro: <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Felipe Balbi <balbi@TI.COM> |
|---|---|
| Date | 2015-10-07 05:10 +0200 |
| Subject | Re: [PATCH 09/11] clocksource: add TI 32.768 Hz counter driver |
| Message-ID | <qgNh7-HZ-1@gated-at.bofh.it> |
| In reply to | #1241079 |
[Multipart message — attachments visible in raw view] — view raw
Hi,
Daniel Lezcano <daniel.lezcano@linaro.org> writes:
> On 10/06/2015 07:02 PM, Felipe Balbi wrote:
>> Introduce a new clocksource driver for Texas
>> Instruments 32.768 Hz device which is available
>> on most OMAP-like devices.
>>
>> Signed-off-by: Felipe Balbi <balbi@ti.com>
>
> Hi Felipe,
>
> With the couple of nits below fixed, you can my:
>
> Acked-by: Daniel Lezcano <daniel.lezcano@linaro.org>
>
> [ ... ]
>
>> +#define OMAP2_32KSYNCNT_REV_OFF 0x0
>> +#define OMAP2_32KSYNCNT_REV_SCHEME (0x3 << 30)
>> +#define OMAP2_32KSYNCNT_CR_OFF_LOW 0x10
>> +#define OMAP2_32KSYNCNT_CR_OFF_HIGH 0x30
>> +
>> +struct ti_32k {
>> + void __iomem *base;
>> + void __iomem *counter;
>> + struct clocksource cs;
>> +};
>> +#define to_ti_32k(cs) (container_of((cs), struct ti_32k, cs))
>
> Usually a static inline is used instead of a macro for that.
not so true and also completely unnecessary, considering container_of()
already type safety ;-)
Try this:
$ git grep -e "#define.*container_of" | wc -l
no strong feelings though. I tend to prefer a macro to wrap
container_of() but won't go into an argument
--
balbi
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web