1 // SPDX-License-Identifier: GPL-2.0 2 /* 3 * SH-Mobile Timer 4 * 5 * Copyright (C) 2010 Magnus Damm 6 * Copyright (C) 2002 - 2009 Paul Mundt 7 */ 8 #include <linux/platform_device.h> 9 #include <linux/clocksource.h> 10 #include <linux/delay.h> 11 #include <linux/of_address.h> 12 13 #include "common.h" 14 15 void __init shmobile_init_delay(void) 16 { 17 struct device_node *np; 18 u32 max_freq = 0; 19 20 for_each_of_cpu_node(np) { 21 u32 freq; 22 23 if (!of_property_read_u32(np, "clock-frequency", &freq)) 24 max_freq = max(max_freq, freq); 25 } 26 27 if (!max_freq) 28 return; 29 30 /* 31 * Calculate a worst-case loops-per-jiffy value 32 * based on maximum cpu core hz setting and the 33 * __delay() implementation in arch/arm/lib/delay.S. 34 * 35 * This will result in a longer delay than expected 36 * when the cpu core runs on lower frequencies. 37 */ 38 39 if (!preset_lpj) 40 preset_lpj = max_freq / HZ; 41 } 42