source: rtems/c/src/lib/libbsp/sparc/shared/include/grctm.h @ 3823f5c

4.11
Last change on this file since 3823f5c was 3823f5c, checked in by Daniel Hellstrom <daniel@…>, on Feb 11, 2015 at 8:20:40 AM

GRCTM: fix build warnings

  • Property mode set to 100644
File size: 4.8 KB
Line 
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.com/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
26struct 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
60struct 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
Note: See TracBrowser for help on using the repository browser.