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

cavium_ptp.h (1437B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2/* cavium_ptp.h - PTP 1588 clock on Cavium hardware
      3 * Copyright (c) 2003-2015, 2017 Cavium, Inc.
      4 */
      5
      6#ifndef CAVIUM_PTP_H
      7#define CAVIUM_PTP_H
      8
      9#include <linux/ptp_clock_kernel.h>
     10#include <linux/timecounter.h>
     11
     12struct cavium_ptp {
     13	struct pci_dev *pdev;
     14
     15	/* Serialize access to cycle_counter, time_counter and hw_registers */
     16	spinlock_t spin_lock;
     17	struct cyclecounter cycle_counter;
     18	struct timecounter time_counter;
     19	void __iomem *reg_base;
     20
     21	u32 clock_rate;
     22
     23	struct ptp_clock_info ptp_info;
     24	struct ptp_clock *ptp_clock;
     25};
     26
     27#if IS_REACHABLE(CONFIG_CAVIUM_PTP)
     28
     29struct cavium_ptp *cavium_ptp_get(void);
     30void cavium_ptp_put(struct cavium_ptp *ptp);
     31
     32static inline u64 cavium_ptp_tstamp2time(struct cavium_ptp *ptp, u64 tstamp)
     33{
     34	unsigned long flags;
     35	u64 ret;
     36
     37	spin_lock_irqsave(&ptp->spin_lock, flags);
     38	ret = timecounter_cyc2time(&ptp->time_counter, tstamp);
     39	spin_unlock_irqrestore(&ptp->spin_lock, flags);
     40
     41	return ret;
     42}
     43
     44static inline int cavium_ptp_clock_index(struct cavium_ptp *clock)
     45{
     46	return ptp_clock_index(clock->ptp_clock);
     47}
     48
     49#else
     50
     51static inline struct cavium_ptp *cavium_ptp_get(void)
     52{
     53	return ERR_PTR(-ENODEV);
     54}
     55
     56static inline void cavium_ptp_put(struct cavium_ptp *ptp) {}
     57
     58static inline u64 cavium_ptp_tstamp2time(struct cavium_ptp *ptp, u64 tstamp)
     59{
     60	return 0;
     61}
     62
     63static inline int cavium_ptp_clock_index(struct cavium_ptp *clock)
     64{
     65	return -1;
     66}
     67
     68#endif
     69
     70#endif