cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

timer-versatile.c (866B)


      1// SPDX-License-Identifier: GPL-2.0-only
      2/*
      3 *
      4 * Copyright (C) 2014 ARM Limited
      5 */
      6
      7#include <linux/clocksource.h>
      8#include <linux/io.h>
      9#include <linux/of.h>
     10#include <linux/of_address.h>
     11#include <linux/sched_clock.h>
     12
     13#define SYS_24MHZ 0x05c
     14
     15static void __iomem *versatile_sys_24mhz;
     16
     17static u64 notrace versatile_sys_24mhz_read(void)
     18{
     19	return readl(versatile_sys_24mhz);
     20}
     21
     22static int __init versatile_sched_clock_init(struct device_node *node)
     23{
     24	void __iomem *base = of_iomap(node, 0);
     25
     26	of_node_clear_flag(node, OF_POPULATED);
     27
     28	if (!base)
     29		return -ENXIO;
     30
     31	versatile_sys_24mhz = base + SYS_24MHZ;
     32
     33	sched_clock_register(versatile_sys_24mhz_read, 32, 24000000);
     34
     35	return 0;
     36}
     37TIMER_OF_DECLARE(vexpress, "arm,vexpress-sysreg",
     38		       versatile_sched_clock_init);
     39TIMER_OF_DECLARE(versatile, "arm,versatile-sysreg",
     40		       versatile_sched_clock_init);