My Project
evrFRIBRegMap.h
1 /*
2  * This software is Copyright by the Board of Trustees of Michigan
3  * State University (c) Copyright 2017.
4  *
5  * Author: Michael Davidsaver <mdavidsaver@gmail.com>
6  */
7 
8 #ifndef EVRFRIBREGMAP_H
9 #define EVRFRIBREGMAP_H
10 
11 #include <mrfBitOps.h>
12 #include <shareLib.h> /* for INLINE (C only) */
13 
14 #define NUMPULSER 2
15 
16 #define REGLEN (4*0x900)
17 
18 // RO
19 #define U32_FWInfo (4*0)
20 # define FWInfo_Version_mask (0x000000ff)
21 # define FWInfo_Version_shift 0
22 # define FWInfo_Flavor_mask (0x0000ff00)
23 # define FWInfo_Flavor_shift 8
24 # define FWInfo_Flavor_EVR (0xe1)
25 # define FWInfo_Flavor_EVG (0xe8)
26 # define FWInfo_Flavor_BPM (0xb1)
27 
28 // RO
29 #define U32_Status (4*1)
30 # define Status_Alive (0x1)
31 # define Status_Sim (0x2)
32 # define Status_CycleCnt_mask (0xffff0000)
33 # define Status_CycleCnt_shift 16
34 
35 // RW
36 #define U32_Config (4*2)
37 # define Config_TestPatt (0x1)
38 # define Config_FPSSim (0x2)
39 # define Config_EVGSim (0x4)
40 # define Config_BeamOn (0x8)
41 
42 // RW
43 #define U32_OutSelect (4*3)
44 # define OutSelect_Divider_mask (0xffff)
45 # define OutSelect_Divider_shift 0
46 # define OutSelect_Enable (0x80000000)
47 
48 // RW
49 #define U32_Command (4*4)
50 # define Command_ResetEVR (0x1)
51 # define Command_ResetFPSComm (0x2)
52 # define Command_ForceNPermit (0x4)
53 # define Command_NOKClear (0x8)
54 # define Command_NOKForce (0x10)
55 
56 // RO
57 #define U32_FPSComm (4*5)
58 # define FPSComm_HBLost_mask (0xffff0000)
59 # define FPSComm_HBLost_shift 16
60 # define FPSComm_HBPresent_mask (0x0000ffff)
61 # define FPSComm_HBPresent_shift 0
62 
63 // RO (read latches TimeFrac)
64 #define U32_TimeSec (4*6)
65 // RO
66 #define U32_TimeFrac (4*7)
67 
68 // RO
69 #define U32_FPSSource (4*8)
70 
71 // RO
72 #define U32_FPSStatus (4*9)
73 # define FPSStatus_NPERMIT (0x1)
74 # define FPSStatus_NOK_AUTO (0x2)
75 # define FPSStatus_NOK_LATCH (0x4)
76 # define FPSStatus_NOK (0x8)
77 
78 // RO
79 #define U32_NOKTimeSec (4*0xa)
80 // RO
81 #define U32_NOKTimeFrac (4*0xb)
82 // RO
83 #define U32_BeamDuty (4*0xc)
84 
85 // RO
86 #define U32_FIFOCode (4*0x20)
87 // RO
88 #define U32_FIFOSec (4*0x21)
89 // RO
90 #define U32_FIFOFrac (4*0x22)
91 // RO
92 #define U32_FIFOSts (4*0x23)
93 // RW
94 #define U32_FIFOEna (4*0x24)
95 
96 // RW
97 #define U32_EvtConfig(N) (4*(0x100+(N)))
98 # define EvtConfig_FIFOUnMap (1u<<24u)
99 # define EvtConfig_Pulse(N) (1u<<(16u+(N)))
100 # define EvtConfig_Set(N) (1u<<(8u+(N)))
101 # define EvtConfig_Clear(N) (1u<<(0u+(N)))
102 
103 // RW
104 #define U32_PulserDelay(N) (4*(0x200+2*(N)))
105 // RW
106 #define U32_PulserWidth(N) (4*(0x201+2*(N)))
107 
108 // RW
109 #define U32_FlashLockout (4*0x801)
110 // RW
111 #define U32_FlashCmdAddr (4*0x802)
112 // WO
113 #define U32_FlashData (4*0x803)
114 // RO
115 #define U32_FlashDataRB (4*0x804)
116 // WO
117 #define U32_FlashCmdWord (4*0x805)
118 // WO
119 #define U32_FlashCmdExec (4*0x806)
120 
121 #endif // EVRFRIBREGMAP_H