RTEMS: bsps/include/grlib/grctm.h Source File

| RTEMS 5.4-rc2

Loading...
Searching...
No Matches
grctm.h
1/* GRCTM - CCSDS Time Manager - register driver interface.
2 *
3 * COPYRIGHT (c) 2009.
4 * Cobham Gaisler AB
5 *
6 * The license and distribution terms for this file may be
7 * found in the file LICENSE in this distribution or at
8 * http://www.rtems.org/license/LICENSE.
9 */
10
11#ifndef __GRCTM_H__
12#define __GRCTM_H__
13
14#define DAT0_IRQ 0x1
15#define DAT1_IRQ 0x2
16#define DAT2_IRQ 0x4
17#define PULSE0_IRQ 0x10
18#define PULSE1_IRQ 0x20
19#define PULSE2_IRQ 0x40
20#define PULSE3_IRQ 0x80
21#define PULSE4_IRQ 0x100
22#define PULSE5_IRQ 0x200
23#define PULSE6_IRQ 0x400
24#define PULSE7_IRQ 0x800
25
26 struct grctm_regs {
27 volatile unsigned int grr;
28 volatile unsigned int gcr;
29 volatile unsigned int gsr;
30 volatile unsigned int unused[2];
31 volatile unsigned int pfr;
32 volatile unsigned int etcr;
33 volatile unsigned int etfr;
34 volatile unsigned int dcr0;
35 volatile unsigned int dfr0;
36 volatile unsigned int dcr1;
37 volatile unsigned int dfr1;
38 volatile unsigned int dcr2;
39 volatile unsigned int dfr2;
40 volatile unsigned int stcr;
41 volatile unsigned int stfr;
42 volatile unsigned int pdr[8];
43 volatile unsigned int pimsr;
44 volatile unsigned int pimr;
45 volatile unsigned int pisr;
46 volatile unsigned int pir;
47 volatile unsigned int imr;
48 volatile unsigned int picr;
49 volatile unsigned int unused1[2];
50 volatile unsigned int etir;
51 volatile unsigned int fsir;
52 volatile unsigned int serconf;
53 volatile unsigned int unused2;
54 volatile unsigned int twsc;
55 volatile unsigned int twadj;
56 volatile unsigned int twtx;
57 volatile unsigned int twrx;
58};
59
60 struct grctm_stats {
61
62 /* IRQ Stats */
63 unsigned int nirqs;
64 unsigned int pulse;
65};
66
67/* Function ISR callback prototype */
68typedef void (*grctm_isr_t)(unsigned int pimr, void *data);
69
70/* Open a GRCTM device by minor number. */
71extern void *grctm_open(int minor);
72
73/* Close a previously opened GRCTM device */
74extern void grctm_close(void *spwcuc);
75
76/* Hardware Reset of GRCTM */
77extern int grctm_reset(void *grctm);
78
79/* Enable Interrupts at Interrupt controller */
80extern void grctm_int_enable(void *grctm);
81
82/* Disable Interrupts at Interrupt controller */
83extern void grctm_int_disable(void *grctm);
84
85/* Clear Statistics gathered by the driver */
86extern void grctm_clr_stats(void *grctm);
87
88/* Get Statistics gathered by the driver */
89extern void grctm_get_stats(void *grctm, struct grctm_stats *stats);
90
91/* Register an Interrupt handler and custom data, the function call is
92 * removed by setting func to NULL.
93 */
94extern void grctm_int_register(void *grctm, grctm_isr_t func, void *data);
95
96/* Enable external synchronisation (from spwcuc) */
97extern void grctm_enable_ext_sync(void *grctm);
98
99/* Disable external synchronisation (from spwcuc) */
100extern void grctm_disable_ext_sync(void *grctm);
101
102/* Enable TimeWire synchronisation */
103extern void grctm_enable_tw_sync(void *grctm);
104
105/* Disable TimeWire synchronisation */
106extern void grctm_disable_tw_sync(void *grctm);
107
108/* Disable frequency synthesizer from driving ET */
109extern void grctm_disable_fs(void *grctm);
110
111/* Enable frequency synthesizer to drive ET */
112extern void grctm_enable_fs(void *grctm);
113
114/* Return elapsed coarse time */
115extern unsigned int grctm_get_et_coarse(void *grctm);
116
117/* Return elapsed fine time */
118extern unsigned int grctm_get_et_fine(void *grctm);
119
120/* Return elapsed time (coarse and fine) */
121extern unsigned long long grctm_get_et(void *grctm);
122
123/* Return 1 if specified datation has been latched */
124extern int grctm_is_dat_latched(void *grctm, int dat);
125
126/* Set triggering edge of datation input */
127extern void grctm_set_dat_edge(void *grctm, int dat, int edge);
128
129/* Return latched datation coarse time */
130extern unsigned int grctm_get_dat_coarse(void *grctm, int dat);
131
132/* Return latched datation fine time */
133extern unsigned int grctm_get_dat_fine(void *grctm, int dat);
134
135/* Return latched datation ET */
136extern unsigned long long grctm_get_dat_et(void *grctm, int dat);
137
138/* Return current pulse configuration */
139extern unsigned int grctm_get_pulse_reg(void *grctm, int pulse);
140
141/* Set pulse register */
142extern void grctm_set_pulse_reg(void *grctm, int pulse, unsigned int val);
143
144/* Configure pulse: pp = period, pw = width, pl = level, en = enable */
145extern void grctm_cfg_pulse(void *grctm, int pulse, int pp, int pw, int pl, int en);
146
147/* Enable pulse output */
148extern void grctm_enable_pulse(void *grctm, int pulse);
149
150/* Disable pulse output */
151extern void grctm_disable_pulse(void *grctm, int pulse);
152
153/* Clear interrupts */
154extern void grctm_clear_irqs(void *grctm, int irqs);
155
156/* Enable interrupts */
157extern void grctm_enable_irqs(void *grctm, int irqs);
158
159/* Set Frequency synthesizer increment */
160void grctm_set_fs_incr(void *grctm, int incr);
161
162/* Set ET increment */
163void grctm_set_et_incr(void *grctm, int incr);
164
165/* Get register base address */
166struct grctm_regs *grctm_get_regs(void *grctm);
167
168/* Register the GRCTM driver to Driver Manager */
169extern void grctm_register(void);
170
171#endif
grctm_regs
Definition: grctm.h:26
grctm_stats
Definition: grctm.h:60