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 15void __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