LCOV - code coverage report
Current view: top level - zephyr/drivers - ptp_clock.h Hit Total Coverage
Test: new.info Lines: 4 11 36.4 %
Date: 2024-12-22 00:14:23

          Line data    Source code
       1           0 : /*
       2             :  * Copyright (c) 2018 Intel Corporation.
       3             :  *
       4             :  * SPDX-License-Identifier: Apache-2.0
       5             :  */
       6             : 
       7             : #ifndef ZEPHYR_INCLUDE_DRIVERS_PTP_CLOCK_H_
       8             : #define ZEPHYR_INCLUDE_DRIVERS_PTP_CLOCK_H_
       9             : 
      10             : #include <zephyr/kernel.h>
      11             : #include <stdint.h>
      12             : #include <zephyr/device.h>
      13             : #include <zephyr/sys/util.h>
      14             : #include <zephyr/net/ptp_time.h>
      15             : 
      16             : #ifdef __cplusplus
      17             : extern "C" {
      18             : #endif
      19             : 
      20             : /* Name of the PTP clock driver */
      21             : #if !defined(PTP_CLOCK_NAME)
      22           0 : #define PTP_CLOCK_NAME "PTP_CLOCK"
      23             : #endif
      24             : 
      25           0 : __subsystem struct ptp_clock_driver_api {
      26           0 :         int (*set)(const struct device *dev, struct net_ptp_time *tm);
      27           0 :         int (*get)(const struct device *dev, struct net_ptp_time *tm);
      28           0 :         int (*adjust)(const struct device *dev, int increment);
      29           0 :         int (*rate_adjust)(const struct device *dev, double ratio);
      30             : };
      31             : 
      32             : /**
      33             :  * @brief Set the time of the PTP clock.
      34             :  *
      35             :  * @param dev PTP clock device
      36             :  * @param tm Time to set
      37             :  *
      38             :  * @return 0 if ok, <0 if error
      39             :  */
      40           1 : static inline int ptp_clock_set(const struct device *dev,
      41             :                                 struct net_ptp_time *tm)
      42             : {
      43             :         const struct ptp_clock_driver_api *api =
      44             :                 (const struct ptp_clock_driver_api *)dev->api;
      45             : 
      46             :         return api->set(dev, tm);
      47             : }
      48             : 
      49             : /**
      50             :  * @brief Get the time of the PTP clock.
      51             :  *
      52             :  * @param dev PTP clock device
      53             :  * @param tm Where to store the current time.
      54             :  *
      55             :  * @return 0 if ok, <0 if error
      56             :  */
      57           1 : __syscall int ptp_clock_get(const struct device *dev, struct net_ptp_time *tm);
      58             : 
      59             : static inline int z_impl_ptp_clock_get(const struct device *dev,
      60             :                                        struct net_ptp_time *tm)
      61             : {
      62             :         const struct ptp_clock_driver_api *api =
      63             :                 (const struct ptp_clock_driver_api *)dev->api;
      64             : 
      65             :         return api->get(dev, tm);
      66             : }
      67             : 
      68             : /**
      69             :  * @brief Adjust the PTP clock time.
      70             :  *
      71             :  * @param dev PTP clock device
      72             :  * @param increment Increment of the clock in nanoseconds
      73             :  *
      74             :  * @return 0 if ok, <0 if error
      75             :  */
      76           1 : static inline int ptp_clock_adjust(const struct device *dev, int increment)
      77             : {
      78             :         const struct ptp_clock_driver_api *api =
      79             :                 (const struct ptp_clock_driver_api *)dev->api;
      80             : 
      81             :         return api->adjust(dev, increment);
      82             : }
      83             : 
      84             : /**
      85             :  * @brief Adjust the PTP clock time change rate when compared to its neighbor.
      86             :  *
      87             :  * @param dev PTP clock device
      88             :  * @param rate Rate of the clock time change
      89             :  *
      90             :  * @return 0 if ok, <0 if error
      91             :  */
      92           1 : static inline int ptp_clock_rate_adjust(const struct device *dev, double rate)
      93             : {
      94             :         const struct ptp_clock_driver_api *api =
      95             :                 (const struct ptp_clock_driver_api *)dev->api;
      96             : 
      97             :         return api->rate_adjust(dev, rate);
      98             : }
      99             : 
     100             : #ifdef __cplusplus
     101             : }
     102             : #endif
     103             : 
     104             : #include <zephyr/syscalls/ptp_clock.h>
     105             : 
     106             : #endif /* ZEPHYR_INCLUDE_DRIVERS_PTP_CLOCK_H_ */

Generated by: LCOV version 1.14