1 /* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0) 2 * Copyright 2019 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 /** 90 * struct dprtc_attr - Structure representing DPRTC attributes 91 * @id: DPRTC object ID 92 */ 93 struct dprtc_attr { 94 int id; 95 int paddr; 96 int little_endian; 97 }; 98 99 int dprtc_get_attributes(struct fsl_mc_io *mc_io, 100 uint32_t cmd_flags, 101 uint16_t token, 102 struct dprtc_attr *attr); 103 104 int dprtc_get_api_version(struct fsl_mc_io *mc_io, 105 uint32_t cmd_flags, 106 uint16_t *major_ver, 107 uint16_t *minor_ver); 108 109 #endif /* __FSL_DPRTC_H */ 110