xen/arm: Add support for device tree specified arch_timer clock frequency.
authorChen Baozi <baozich@gmail.com>
Thu, 8 Aug 2013 10:52:24 +0000 (18:52 +0800)
committerIan Campbell <ian.campbell@citrix.com>
Thu, 8 Aug 2013 11:43:19 +0000 (12:43 +0100)
Signed-off-by: Chen Baozi <baozich@gmail.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
xen/arch/arm/time.c

index 4ed78827222b8aafaf81aafdbc343d09bce6b294..9a1b080489302857a7d2434b66cd19c270a534a9 100644 (file)
@@ -104,6 +104,7 @@ int __init init_xen_time(void)
     struct dt_device_node *dev;
     int res;
     unsigned int i;
+    u32 rate;
 
     dev = dt_find_compatible_node(NULL, NULL, "arm,armv7-timer");
     if ( !dev )
@@ -134,7 +135,11 @@ int __init init_xen_time(void)
     if ( !cpu_has_gentimer )
         panic("CPU does not support the Generic Timer v1 interface.\n");
 
-    cpu_khz = READ_SYSREG32(CNTFRQ_EL0) / 1000;
+    res = dt_property_read_u32(dev, "clock-frequency", &rate);
+    if ( res )
+        cpu_khz = rate / 1000;
+    else
+        cpu_khz = READ_SYSREG32(CNTFRQ_EL0) / 1000;
 
     boot_count = READ_SYSREG64(CNTPCT_EL0);
     printk("Using generic timer at %lu KHz\n", cpu_khz);