1 // SPDX-License-Identifier: GPL-2.0 2 /* 3 * Copyright 2013-2016 Freescale Semiconductor Inc. 4 * Copyright 2016-2018 NXP 5 */ 6 7 #ifndef __FSL_DPRTC_H 8 #define __FSL_DPRTC_H 9 10 /* Data Path Real Time Counter API 11 * Contains initialization APIs and runtime control APIs for RTC 12 */ 13 14 struct fsl_mc_io; 15 16 /** 17 * Number of irq's 18 */ 19 #define DPRTC_MAX_IRQ_NUM 1 20 #define DPRTC_IRQ_INDEX 0 21 22 /** 23 * Interrupt event masks: 24 */ 25 26 /** 27 * Interrupt event mask indicating alarm event had occurred 28 */ 29 #define DPRTC_EVENT_ALARM 0x40000000 30 /** 31 * Interrupt event mask indicating periodic pulse event had occurred 32 */ 33 #define DPRTC_EVENT_PPS 0x08000000 34 35 int dprtc_open(struct fsl_mc_io *mc_io, 36 u32 cmd_flags, 37 int dprtc_id, 38 u16 *token); 39 40 int dprtc_close(struct fsl_mc_io *mc_io, 41 u32 cmd_flags, 42 u16 token); 43 44 /** 45 * struct dprtc_cfg - Structure representing DPRTC configuration 46 * @options: place holder 47 */ 48 struct dprtc_cfg { 49 u32 options; 50 }; 51 52 int dprtc_create(struct fsl_mc_io *mc_io, 53 u16 dprc_token, 54 u32 cmd_flags, 55 const struct dprtc_cfg *cfg, 56 u32 *obj_id); 57 58 int dprtc_destroy(struct fsl_mc_io *mc_io, 59 u16 dprc_token, 60 u32 cmd_flags, 61 u32 object_id); 62 63 int dprtc_enable(struct fsl_mc_io *mc_io, 64 u32 cmd_flags, 65 u16 token); 66 67 int dprtc_disable(struct fsl_mc_io *mc_io, 68 u32 cmd_flags, 69 u16 token); 70 71 int dprtc_is_enabled(struct fsl_mc_io *mc_io, 72 u32 cmd_flags, 73 u16 token, 74 int *en); 75 76 int dprtc_reset(struct fsl_mc_io *mc_io, 77 u32 cmd_flags, 78 u16 token); 79 80 int dprtc_set_clock_offset(struct fsl_mc_io *mc_io, 81 u32 cmd_flags, 82 u16 token, 83 int64_t offset); 84 85 int dprtc_set_freq_compensation(struct fsl_mc_io *mc_io, 86 u32 cmd_flags, 87 u16 token, 88 u32 freq_compensation); 89 90 int dprtc_get_freq_compensation(struct fsl_mc_io *mc_io, 91 u32 cmd_flags, 92 u16 token, 93 u32 *freq_compensation); 94 95 int dprtc_get_time(struct fsl_mc_io *mc_io, 96 u32 cmd_flags, 97 u16 token, 98 uint64_t *time); 99 100 int dprtc_set_time(struct fsl_mc_io *mc_io, 101 u32 cmd_flags, 102 u16 token, 103 uint64_t time); 104 105 int dprtc_set_alarm(struct fsl_mc_io *mc_io, 106 u32 cmd_flags, 107 u16 token, 108 uint64_t time); 109 110 int dprtc_set_irq_enable(struct fsl_mc_io *mc_io, 111 u32 cmd_flags, 112 u16 token, 113 u8 irq_index, 114 u8 en); 115 116 int dprtc_get_irq_enable(struct fsl_mc_io *mc_io, 117 u32 cmd_flags, 118 u16 token, 119 u8 irq_index, 120 u8 *en); 121 122 int dprtc_set_irq_mask(struct fsl_mc_io *mc_io, 123 u32 cmd_flags, 124 u16 token, 125 u8 irq_index, 126 u32 mask); 127 128 int dprtc_get_irq_mask(struct fsl_mc_io *mc_io, 129 u32 cmd_flags, 130 u16 token, 131 u8 irq_index, 132 u32 *mask); 133 134 int dprtc_get_irq_status(struct fsl_mc_io *mc_io, 135 u32 cmd_flags, 136 u16 token, 137 u8 irq_index, 138 u32 *status); 139 140 int dprtc_clear_irq_status(struct fsl_mc_io *mc_io, 141 u32 cmd_flags, 142 u16 token, 143 u8 irq_index, 144 u32 status); 145 146 /** 147 * struct dprtc_attr - Structure representing DPRTC attributes 148 * @id: DPRTC object ID 149 */ 150 struct dprtc_attr { 151 int id; 152 }; 153 154 int dprtc_get_attributes(struct fsl_mc_io *mc_io, 155 u32 cmd_flags, 156 u16 token, 157 struct dprtc_attr *attr); 158 159 int dprtc_get_api_version(struct fsl_mc_io *mc_io, 160 u32 cmd_flags, 161 u16 *major_ver, 162 u16 *minor_ver); 163 164 #endif /* __FSL_DPRTC_H */ 165