Merge tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dledford/rdma
[deliverable/linux.git] / arch / arm / mach-shmobile / timer.c
index 67d79f9c6bad5be8be0418a331d90f4be42e94f7..6196a638038530481da95f6938bdf8198c56c880 100644 (file)
 
 #include "common.h"
 
-static void __init shmobile_setup_delay_hz(unsigned int max_cpu_core_hz,
-                                          unsigned int mult, unsigned int div)
-{
-       /* calculate a worst-case loops-per-jiffy value
-        * based on maximum cpu core hz setting and the
-        * __delay() implementation in arch/arm/lib/delay.S
-        *
-        * this will result in a longer delay than expected
-        * when the cpu core runs on lower frequencies.
-        */
-
-       unsigned int value = HZ * div / mult;
-
-       if (!preset_lpj)
-               preset_lpj = max_cpu_core_hz / value;
-}
-
 void __init shmobile_init_delay(void)
 {
        struct device_node *np, *cpus;
-       unsigned int div = 0;
-       bool has_arch_timer = false;
        u32 max_freq = 0;
 
        cpus = of_find_node_by_path("/cpus");
@@ -51,25 +32,32 @@ void __init shmobile_init_delay(void)
        for_each_child_of_node(cpus, np) {
                u32 freq;
 
+               if (IS_ENABLED(CONFIG_ARM_ARCH_TIMER) &&
+                   (of_device_is_compatible(np, "arm,cortex-a7") ||
+                    of_device_is_compatible(np, "arm,cortex-a15"))) {
+                       of_node_put(np);
+                       of_node_put(cpus);
+                       return;
+               }
+
                if (!of_property_read_u32(np, "clock-frequency", &freq))
                        max_freq = max(max_freq, freq);
-
-               if (of_device_is_compatible(np, "arm,cortex-a8")) {
-                       div = 2;
-               } else if (of_device_is_compatible(np, "arm,cortex-a9")) {
-                       div = 1;
-               } else if (of_device_is_compatible(np, "arm,cortex-a7") ||
-                        of_device_is_compatible(np, "arm,cortex-a15")) {
-                       div = 1;
-                       has_arch_timer = true;
-               }
        }
 
        of_node_put(cpus);
 
-       if (!max_freq || !div)
+       if (!max_freq)
                return;
 
-       if (!has_arch_timer || !IS_ENABLED(CONFIG_ARM_ARCH_TIMER))
-               shmobile_setup_delay_hz(max_freq, 1, div);
+       /*
+        * Calculate a worst-case loops-per-jiffy value
+        * based on maximum cpu core hz setting and the
+        * __delay() implementation in arch/arm/lib/delay.S.
+        *
+        * This will result in a longer delay than expected
+        * when the cpu core runs on lower frequencies.
+        */
+
+       if (!preset_lpj)
+               preset_lpj = max_freq / HZ;
 }
This page took 0.038487 seconds and 5 git commands to generate.