Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags   |
// SPDX-License-Identifier: GPL-2.0-only
/*
* Based on arch/arm/kernel/time.c
*
* Copyright (C) 1991, 1992, 1995 Linus Torvalds
* Modifications for ARM (C) 1994-2001 Russell King
* Copyright (C) 2012 ARM Ltd.
*/
#include <linux/clockchips.h>
#include <linux/export.h>
#include <linux/kernel.h>
#include <linux/interrupt.h>
#include <linux/time.h>
#include <linux/init.h>
#include <linux/sched.h>
#include <linux/smp.h>
#include <linux/timex.h>
#include <linux/errno.h>
#include <linux/profile.h>
#include <linux/syscore_ops.h>
#include <linux/timer.h>
#include <linux/irq.h>
#include <linux/delay.h>
#include <linux/clocksource.h>
#include <linux/of_clk.h>
#include <linux/acpi.h>
#include <clocksource/arm_arch_timer.h>
#include <asm/thread_info.h>
#include <asm/stacktrace.h>
#include <asm/paravirt.h>
unsigned long profile_pc(struct pt_regs *regs)
{
<------>struct stackframe frame;
<------>if (!in_lock_functions(regs->pc))
<------><------>return regs->pc;
<------>start_backtrace(&frame, regs->regs[29], regs->pc);
<------>do {
<------><------>int ret = unwind_frame(NULL, &frame);
<------><------>if (ret < 0)
<------><------><------>return 0;
<------>} while (in_lock_functions(frame.pc));
<------>return frame.pc;
}
EXPORT_SYMBOL(profile_pc);
void __init time_init(void)
{
<------>u32 arch_timer_rate;
<------>of_clk_init(NULL);
<------>timer_probe();
<------>tick_setup_hrtimer_broadcast();
<------>arch_timer_rate = arch_timer_get_rate();
<------>if (!arch_timer_rate)
<------><------>panic("Unable to initialise architected timer.\n");
<------>/* Calibrate the delay loop directly */
<------>lpj_fine = arch_timer_rate / HZ;
<------>pv_time_init();
}