| // SPDX-License-Identifier: GPL-2.0 |
| /* |
| * Copyright 2013-2016 Freescale Semiconductor Inc. |
| * Copyright 2016-2018 NXP |
| */ |
| |
| #ifndef __FSL_DPRTC_H |
| #define __FSL_DPRTC_H |
| |
| /* Data Path Real Time Counter API |
| * Contains initialization APIs and runtime control APIs for RTC |
| */ |
| |
| struct fsl_mc_io; |
| |
| /** |
| * Number of irq's |
| */ |
| #define DPRTC_MAX_IRQ_NUM 1 |
| #define DPRTC_IRQ_INDEX 0 |
| |
| /** |
| * Interrupt event masks: |
| */ |
| |
| /** |
| * Interrupt event mask indicating alarm event had occurred |
| */ |
| #define DPRTC_EVENT_ALARM 0x40000000 |
| /** |
| * Interrupt event mask indicating periodic pulse event had occurred |
| */ |
| #define DPRTC_EVENT_PPS 0x08000000 |
| |
| int dprtc_open(struct fsl_mc_io *mc_io, |
| u32 cmd_flags, |
| int dprtc_id, |
| u16 *token); |
| |
| int dprtc_close(struct fsl_mc_io *mc_io, |
| u32 cmd_flags, |
| u16 token); |
| |
| /** |
| * struct dprtc_cfg - Structure representing DPRTC configuration |
| * @options: place holder |
| */ |
| struct dprtc_cfg { |
| u32 options; |
| }; |
| |
| int dprtc_create(struct fsl_mc_io *mc_io, |
| u16 dprc_token, |
| u32 cmd_flags, |
| const struct dprtc_cfg *cfg, |
| u32 *obj_id); |
| |
| int dprtc_destroy(struct fsl_mc_io *mc_io, |
| u16 dprc_token, |
| u32 cmd_flags, |
| u32 object_id); |
| |
| int dprtc_enable(struct fsl_mc_io *mc_io, |
| u32 cmd_flags, |
| u16 token); |
| |
| int dprtc_disable(struct fsl_mc_io *mc_io, |
| u32 cmd_flags, |
| u16 token); |
| |
| int dprtc_is_enabled(struct fsl_mc_io *mc_io, |
| u32 cmd_flags, |
| u16 token, |
| int *en); |
| |
| int dprtc_reset(struct fsl_mc_io *mc_io, |
| u32 cmd_flags, |
| u16 token); |
| |
| int dprtc_set_clock_offset(struct fsl_mc_io *mc_io, |
| u32 cmd_flags, |
| u16 token, |
| int64_t offset); |
| |
| int dprtc_set_freq_compensation(struct fsl_mc_io *mc_io, |
| u32 cmd_flags, |
| u16 token, |
| u32 freq_compensation); |
| |
| int dprtc_get_freq_compensation(struct fsl_mc_io *mc_io, |
| u32 cmd_flags, |
| u16 token, |
| u32 *freq_compensation); |
| |
| int dprtc_get_time(struct fsl_mc_io *mc_io, |
| u32 cmd_flags, |
| u16 token, |
| uint64_t *time); |
| |
| int dprtc_set_time(struct fsl_mc_io *mc_io, |
| u32 cmd_flags, |
| u16 token, |
| uint64_t time); |
| |
| int dprtc_set_alarm(struct fsl_mc_io *mc_io, |
| u32 cmd_flags, |
| u16 token, |
| uint64_t time); |
| |
| int dprtc_set_irq_enable(struct fsl_mc_io *mc_io, |
| u32 cmd_flags, |
| u16 token, |
| u8 irq_index, |
| u8 en); |
| |
| int dprtc_get_irq_enable(struct fsl_mc_io *mc_io, |
| u32 cmd_flags, |
| u16 token, |
| u8 irq_index, |
| u8 *en); |
| |
| int dprtc_set_irq_mask(struct fsl_mc_io *mc_io, |
| u32 cmd_flags, |
| u16 token, |
| u8 irq_index, |
| u32 mask); |
| |
| int dprtc_get_irq_mask(struct fsl_mc_io *mc_io, |
| u32 cmd_flags, |
| u16 token, |
| u8 irq_index, |
| u32 *mask); |
| |
| int dprtc_get_irq_status(struct fsl_mc_io *mc_io, |
| u32 cmd_flags, |
| u16 token, |
| u8 irq_index, |
| u32 *status); |
| |
| int dprtc_clear_irq_status(struct fsl_mc_io *mc_io, |
| u32 cmd_flags, |
| u16 token, |
| u8 irq_index, |
| u32 status); |
| |
| /** |
| * struct dprtc_attr - Structure representing DPRTC attributes |
| * @id: DPRTC object ID |
| */ |
| struct dprtc_attr { |
| int id; |
| }; |
| |
| int dprtc_get_attributes(struct fsl_mc_io *mc_io, |
| u32 cmd_flags, |
| u16 token, |
| struct dprtc_attr *attr); |
| |
| int dprtc_get_api_version(struct fsl_mc_io *mc_io, |
| u32 cmd_flags, |
| u16 *major_ver, |
| u16 *minor_ver); |
| |
| #endif /* __FSL_DPRTC_H */ |