aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/geode_32.c
diff options
context:
space:
mode:
authorAndres Salomon <dilinger@queued.net>2007-10-12 23:04:06 +0200
committerThomas Gleixner <tglx@inhelltoy.tec.linutronix.de>2007-10-12 23:04:06 +0200
commit83d7384f8d4aa216b49cf9cb286ea743054b119f (patch)
tree9f56bf83bbbb0dc7056c3dd5e11b1d0ab0d4cefb /arch/x86/kernel/geode_32.c
parent5fa3a246ea2e1be2ffaa01343bc183c8c0bfa472 (diff)
downloadkernel_samsung_smdk4412-83d7384f8d4aa216b49cf9cb286ea743054b119f.zip
kernel_samsung_smdk4412-83d7384f8d4aa216b49cf9cb286ea743054b119f.tar.gz
kernel_samsung_smdk4412-83d7384f8d4aa216b49cf9cb286ea743054b119f.tar.bz2
x86: Geode Multi-Function General Purpose Timers support
This adds support for Multi-Function General Purpose Timers. It detects the available timers during southbridge init, and provides an API for allocating and setting the timers. They're higher resolution than the standard PIT, so the MFGPTs come in handy for quite a few things. Note that we never clobber the timers that the BIOS might have opted to use; we just check for unused timers. Signed-off-by: Jordan Crouse <jordan.crouse@amd.com> Signed-off-by: Andres Salomon <dilinger@debian.org> Cc: Andi Kleen <ak@suse.de> Cc: Alan Cox <alan@lxorguk.ukuu.org.uk> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Arjan van de Ven <arjan@linux.intel.com> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'arch/x86/kernel/geode_32.c')
-rw-r--r--arch/x86/kernel/geode_32.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/arch/x86/kernel/geode_32.c b/arch/x86/kernel/geode_32.c
index 41e8aec..f12d8c5 100644
--- a/arch/x86/kernel/geode_32.c
+++ b/arch/x86/kernel/geode_32.c
@@ -145,10 +145,14 @@ EXPORT_SYMBOL_GPL(geode_gpio_setup_event);
static int __init geode_southbridge_init(void)
{
+ int timers;
+
if (!is_geode())
return -ENODEV;
init_lbars();
+ timers = geode_mfgpt_detect();
+ printk(KERN_INFO "geode: %d MFGPT timers available.\n", timers);
return 0;
}