Thread (6 messages) 6 messages, 2 authors, 2011-03-02
STALE5569d

[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.c
diff --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 system
diff --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
? ? ? ?help
diff --git a/arch/arm/mach-exynos4/Makefile b/arch/arm/mach-
exynos4/Makefile
quoted
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.o
quoted
+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)
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help