1 /* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0) 2 * Copyright 2019-2021 NXP 3 */ 4 #ifndef __FSL_DPRTC_H 5 #define __FSL_DPRTC_H 6 7 /** @addtogroup dprtc Data Path Real Time Counter API 8 * Contains initialization APIs and runtime control APIs for RTC 9 * @{ 10 */ 11 12 struct fsl_mc_io; 13 14 int dprtc_open(struct fsl_mc_io *mc_io, 15 uint32_t cmd_flags, 16 int dprtc_id, 17 uint16_t *token); 18 19 int dprtc_close(struct fsl_mc_io *mc_io, 20 uint32_t cmd_flags, 21 uint16_t token); 22 23 /** 24 * struct dprtc_cfg - Structure representing DPRTC configuration 25 * @options: place holder 26 */ 27 struct dprtc_cfg { 28 uint32_t options; 29 }; 30 31 int dprtc_create(struct fsl_mc_io *mc_io, 32 uint16_t dprc_token, 33 uint32_t cmd_flags, 34 const struct dprtc_cfg *cfg, 35 uint32_t *obj_id); 36 37 int dprtc_destroy(struct fsl_mc_io *mc_io, 38 uint16_t dprc_token, 39 uint32_t cmd_flags, 40 uint32_t object_id); 41 42 int dprtc_enable(struct fsl_mc_io *mc_io, 43 uint32_t cmd_flags, 44 uint16_t token); 45 46 int dprtc_disable(struct fsl_mc_io *mc_io, 47 uint32_t cmd_flags, 48 uint16_t token); 49 50 int dprtc_is_enabled(struct fsl_mc_io *mc_io, 51 uint32_t cmd_flags, 52 uint16_t token, 53 int *en); 54 55 int dprtc_reset(struct fsl_mc_io *mc_io, 56 uint32_t cmd_flags, 57 uint16_t token); 58 59 int dprtc_set_clock_offset(struct fsl_mc_io *mc_io, 60 uint32_t cmd_flags, 61 uint16_t token, 62 int64_t offset); 63 64 int dprtc_set_freq_compensation(struct fsl_mc_io *mc_io, 65 uint32_t cmd_flags, 66 uint16_t token, 67 uint32_t freq_compensation); 68 69 int dprtc_get_freq_compensation(struct fsl_mc_io *mc_io, 70 uint32_t cmd_flags, 71 uint16_t token, 72 uint32_t *freq_compensation); 73 74 int dprtc_get_time(struct fsl_mc_io *mc_io, 75 uint32_t cmd_flags, 76 uint16_t token, 77 uint64_t *time); 78 79 int dprtc_set_time(struct fsl_mc_io *mc_io, 80 uint32_t cmd_flags, 81 uint16_t token, 82 uint64_t time); 83 84 int dprtc_set_alarm(struct fsl_mc_io *mc_io, 85 uint32_t cmd_flags, 86 uint16_t token, 87 uint64_t time); 88 89 struct dprtc_ext_trigger_status { 90 uint64_t timestamp; 91 uint8_t unread_valid_timestamp; 92 }; 93 94 int dprtc_get_ext_trigger_timestamp(struct fsl_mc_io *mc_io, 95 uint32_t cmd_flags, 96 uint16_t token, 97 uint8_t id, 98 struct dprtc_ext_trigger_status *status); 99 100 int dprtc_set_fiper_loopback(struct fsl_mc_io *mc_io, 101 uint32_t cmd_flags, 102 uint16_t token, 103 uint8_t id, 104 uint8_t fiper_as_input); 105 106 /** 107 * struct dprtc_attr - Structure representing DPRTC attributes 108 * @id: DPRTC object ID 109 */ 110 struct dprtc_attr { 111 int id; 112 int paddr; 113 int little_endian; 114 }; 115 116 int dprtc_get_attributes(struct fsl_mc_io *mc_io, 117 uint32_t cmd_flags, 118 uint16_t token, 119 struct dprtc_attr *attr); 120 121 int dprtc_get_api_version(struct fsl_mc_io *mc_io, 122 uint32_t cmd_flags, 123 uint16_t *major_ver, 124 uint16_t *minor_ver); 125 126 #endif /* __FSL_DPRTC_H */ 127