[PATCH V4] ARM: EXYNOS4: Implement kernel timers using MCT
From: Kukjin Kim <hidden>
Date: 2011-03-02 07:29:19
Also in:
linux-samsung-soc
Kyungmin Park wrote:
Hi, MCT is only possible from EVT1.0 or later. The current universal_c210 used the EVT0 version. So can you remove the ifdef and board can select which timer is used? Please refer the omap implementation and how to use it.
Basically, "CONFIG_EXYNOS4_MCT" can be selected in kernel menuconfig. It means default one is using local timer which is included in every Exynos4210.
If we use the same configuration, It will be boot failed at universal_c210 board.
No, see as above. One more basically, each machine specific CONFIGs should be selected in kernel menuconfig after "make exynos4_defconfig". Because each machine supports different components on each one now. As a note, however, I don't want to add each machine's defconfig. Maybe Russell also. Thanks. Best regards, Kgene. -- Kukjin Kim [off-list ref], Senior Engineer, SW Solution Development Team, Samsung Electronics Co., Ltd.
Thank you, Kyungmin Park On Mon, Feb 28, 2011 at 2:16 PM, Kukjin Kim [off-list ref] wrote:quoted
From: Changhwan Youn <redacted> The Multi-Core Timer(MCT) of EXYNOS4 is designed for implementing clock source timer and clock event timers. This patch implements 1 clock source timer with 64 bit free running counter of MCT and 2 clock event timers with two of 31-bit tick counters. Signed-off-by: Changhwan Youn <redacted> Cc: Ben Dooks <ben-linux@fluff.org> Cc: Russell King <redacted> Signed-off-by: Kukjin Kim <redacted> --- Changes since v3: - Re-worked based on exynos4 - Changed member of clock_evetn_device like following ?struct mct_clock_event_device { ? ? ? ?struct clock_event_device *evt; ?... - Address comments from Russell King ?Added static into "irqreturn_t exynos4_mct_comp_isr()" ?Added .dev_id member into "struct irqaction mct_comp_event_irq" Changes since v2: - Addressed comments from Russell King ?Added mct_clock_event_device structure - Removed suspend()/resume() which are not used now Changes since v1: - Addressed comments from Russell King ?(implemented global timer, used local timer and so on) - Fixed small things ?arch/arm/Kconfig ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?| ? ?2 +- ?arch/arm/mach-exynos4/Kconfig ? ? ? ? ? ? ? ? | ? ?5 + ?arch/arm/mach-exynos4/Makefile ? ? ? ? ? ? ? ?| ? 11 +- ?arch/arm/mach-exynos4/include/mach/regs-mct.h | ? 52 +++ ?arch/arm/mach-exynos4/mct.c ? ? ? ? ? ? ? ? ? | ?421+++++++++++++++++++++++++quoted
?5 files changed, 488 insertions(+), 3 deletions(-) ?create mode 100644 arch/arm/mach-exynos4/include/mach/regs-mct.h ?create mode 100644 arch/arm/mach-exynos4/mct.cdiff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index ec3bf98..b4db99b 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig@@ -1366,7 +1366,7 @@ config LOCAL_TIMERS? ? ? ?bool "Use local timer interrupts" ? ? ? ?depends on SMP ? ? ? ?default y - ? ? ? select HAVE_ARM_TWD if !ARCH_MSM_SCORPIONMP + ? ? ? select HAVE_ARM_TWD if (!ARCH_MSM_SCORPIONMP && !EXYNOS4_MCT) ? ? ? ?help ? ? ? ? ?Enable support for local timers on SMP platforms, rather then
the
quoted
? ? ? ? ?legacy IPI broadcast method. ?Local timers allows the systemdiff --git a/arch/arm/mach-exynos4/Kconfig
b/arch/arm/mach-exynos4/Kconfig
quoted
index ad03840..77b5d93 100644--- a/arch/arm/mach-exynos4/Kconfig +++ b/arch/arm/mach-exynos4/Kconfig@@ -15,6 +15,11 @@ config CPU_EXYNOS4210? ? ? ?help ? ? ? ? ?Enable EXYNOS4210 CPU support +config EXYNOS4_MCT + ? ? ? bool "Kernel timer support by MCT" + ? ? ? help + ? ? ? ? Use MCT (Multi Core Timer) as kernel timers + ?config EXYNOS4_DEV_PD ? ? ? ?bool ? ? ? ?helpdiff --git a/arch/arm/mach-exynos4/Makefile b/arch/arm/mach-exynos4/Makefilequoted
index 0558235..de20b91 100644--- a/arch/arm/mach-exynos4/Makefile +++ b/arch/arm/mach-exynos4/Makefile@@ -13,11 +13,18 @@ obj- ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?:=?# Core support for EXYNOS4 system ?obj-$(CONFIG_CPU_EXYNOS4210) ? += cpu.o init.o clock.o irq-combiner.o -obj-$(CONFIG_CPU_EXYNOS4210) ? += setup-i2c0.o time.o gpiolib.o
irq-eint.o
dma.oquoted
+obj-$(CONFIG_CPU_EXYNOS4210) ? += setup-i2c0.o gpiolib.o irq-eint.o
dma.o
quoted
?obj-$(CONFIG_CPU_FREQ) ? ? ? ? += cpufreq.o ?obj-$(CONFIG_SMP) ? ? ? ? ? ? ?+= platsmp.o headsmp.o -obj-$(CONFIG_LOCAL_TIMERS) ? ? += localtimer.o + +ifeq ($(CONFIG_EXYNOS4_MCT),y) +obj-y ? ? ? ? ? ? ? ? ? ? ? ? ?+= mct.o +else +obj-y ? ? ? ? ? ? ? ? ? ? ? ? ?+= time.o +obj-$(CONFIG_LOCAL_TIMERS) ? ? += localtimer.o +endif + ?obj-$(CONFIG_HOTPLUG_CPU) ? ? ?+= hotplug.o ?# machine support
(snip)