RTEMS  5.1
grascs.h
1 /*
2  * Header file for GRASCS RTEMS driver
3  *
4  * COPYRIGHT (c) 2008.
5  * Cobham Gaisler AB.
6  *
7  * The license and distribution terms for this file may be
8  * found in the file LICENSE in this distribution or at
9  * http://www.rtems.org/license/LICENSE.
10  */
11 
12 #ifndef __GRASCS_H__
13 #define __GRASCS_H__
14 
15 #ifdef __cplusplus
16 extern "C" {
17 #endif
18 
19 /* Minimum and maximum system frequency */
20 #define GRASCS_MIN_SFREQ 10000
21 #define GRASCS_MAX_SFREQ 255000
22 
23 /* Default, minimum and maximum ETR pulse frequency */
24 #define GRASCS_DEFAULT_ETRFREQ 10
25 #define GRASCS_MIN_ETRFREQ 1
26 #define GRASCS_MAX_ETRFREQ 100
27 
28 /* Maximum number of external time markers */
29 #define GRASCS_MAX_TMS 6
30 
31 /* Error codes */
32 #define GRASCS_ERROR_STARTSTOP 1 /* Serial/synch interface is running/stopped */
33 #define GRASCS_ERROR_TRANSACTIVE 2 /* Busy with transaction */
34 #define GRASCS_ERROR_CAPFAULT 3 /* Core capabilities prohibit request */
35 
36 /* Command register */
37 #define GRASCS_CMD_RESET (1 << 0)
38 #define GRASCS_CMD_STARTSTOP (1 << 1)
39 #define GRASCS_CMD_ESTARTSTOP (1 << 2)
40 #define GRASCS_CMD_SENDTM (1 << 3)
41 #define GRASCS_CMD_ETRCTRL (7 << 4)
42 #define GRASCS_CMD_ETRCTRL_BITS 4
43 #define GRASCS_CMD_SLAVESEL (15 << 8)
44 #define GRASCS_CMD_SLAVESEL_BITS 8
45 #define GRASCS_CMD_TCDONE (1 << 12)
46 #define GRASCS_CMD_TMDONE (1 << 13)
47 #define GRASCS_CMD_US1 (255 << 16)
48 #define GRASCS_CMD_US1_BITS 16
49 #define GRASCS_CMD_US1C (1 << 24)
50 
51 /* Clock scale register */
52 #define GRASCS_CLK_ETRFREQ_BITS 12
53 
54 /* Status register */
55 #define GRASCS_STS_RUNNING (1 << 0)
56 #define GRASCS_STS_ERUNNING (1 << 1)
57 #define GRASCS_STS_TCDONE (1 << 4)
58 #define GRASCS_STS_TMDONE (1 << 5)
59 #define GRASCS_STS_DBITS_BITS 8
60 #define GRASCS_STS_NSLAVES_BITS 13
61 #define GRASCS_STS_USCONF_BITS 18
62 #define GRASCS_STS_TMCONF_BITS 19
63 
64 extern int ASCS_init(void);
65 
66 extern int ASCS_input_select(int slave);
67 
68 extern int ASCS_etr_select(int etr, int freq);
69 
70 extern void ASCS_start(void);
71 
72 extern void ASCS_stop(void);
73 
74 extern int ASCS_iface_status(void);
75 
76 extern int ASCS_TC_send(int *word);
77 
78 extern int ASCS_TC_send_block(int *block, int ntrans);
79 
80 extern void ASCS_TC_sync_start(void);
81 
82 extern void ASCS_TC_sync_stop(void);
83 
84 extern int ASCS_TM_recv(int *word);
85 
86 extern int ASCS_TM_recv_block(int *block, int ntrans);
87 
88 #ifdef __cplusplus
89 }
90 #endif
91 
92 #endif