16 #include <mrfBitOps.h>
21 # define INLINE static inline
45 #define evrNumDbusBit 8
47 #define U32_Status 0x000
48 # define Status_dbus_mask 0xff000000
49 # define Status_dbus_shift 24
50 # define Status_legvio 0x00010000
51 # define Status_sfpmod 0x00000080
52 # define Status_linksts 0x00000040
53 # define Status_fifostop 0x00000020
55 #define U32_Control 0x004
56 # define Control_enable 0x80000000
58 # define Control_evtfwd 0x40000000
61 # define Control_txloop 0x20000000
63 # define Control_rxloop 0x10000000
65 # define Control_outena 0x08000000
67 # define Control_sreset 0x04000000
69 # define Control_endian 0x02000000
71 # define Control_GTXio 0x01000000
73 # define Control_DCEna 0x00400000
75 # define Control_pspol 0x00008000
78 # define Control_tsdbus 0x00004000
79 # define Control_tsrst 0x00002000
80 # define Control_tsltch 0x00000400
82 # define Control_mapena 0x00000200
83 # define Control_mapsel 0x00000100
85 # define Control_logrst 0x00000080
86 # define Control_logena 0x00000040
87 # define Control_logdis 0x00000020
89 # define Control_logsea 0x00000010
90 # define Control_fiforst 0x00000008
92 #define U32_IRQFlag 0x008
93 # define IRQ_EoS 0x1000
94 # define IRQ_SoS 0x0100
95 # define IRQ_LinkChg 0x40
96 # define IRQ_BufFull 0x20
97 # define IRQ_HWMapped 0x10
98 # define IRQ_Event 0x08
99 # define IRQ_Heartbeat 0x04
100 # define IRQ_FIFOFull 0x02
101 # define IRQ_RXErr 0x01
103 #define U32_IRQEnable 0x00c
105 # define IRQ_Enable 0x80000000
106 # define IRQ_PCIee 0x40000000
108 #define U32_IRQPulseMap 0x010
113 #define U32_SwEvent 0x0018
115 #define SwEvent_Ena 0x00000100
116 #define SwEvent_Pend 0x00000200
117 #define SwEvent_Code_MASK 0x000000ff
118 #define SwEvent_Code_SHIFT 0
121 #define U32_PCI_MIE 0x001C
122 #define EVG_MIE_ENABLE 0x40000000
124 #define U32_DataBufCtrl 0x020
126 # define DataBufCtrl_rx 0x8000
128 # define DataBufCtrl_stop 0x4000
129 # define DataBufCtrl_sumerr 0x2000
130 # define DataBufCtrl_mode 0x1000
131 # define DataBufCtrl_len_mask 0x0fff
133 #define U32_DataTxCtrl 0x024
134 # define DataTxCtrl_done 0x100000
135 # define DataTxCtrl_run 0x080000
136 # define DataTxCtrl_trig 0x040000
137 # define DataTxCtrl_ena 0x020000
138 # define DataTxCtrl_mode 0x010000
139 # define DataTxCtrl_len_mask 0x0007fc
141 #define U32_FWVersion 0x02c
142 # define FWVersion_type_mask 0xf0000000
143 # define FWVersion_type_shift 28
144 # define FWVersion_form_mask 0x0f000000
145 # define FWVersion_form_shift 24
146 # define FWVersion_ver_mask 0x0000ffff
147 # define FWVersion_ver_shift 0
149 #define U32_CounterPS 0x040
151 #define U32_USecDiv 0x04C
153 #define U32_ClkCtrl 0x050
154 # define ClkCtrl_plllock 0x80000000
155 # define ClkCtrl_pllbw 0x70000000
156 # define ClkCtrl_pllbw_SHIFT 28
157 # define ClkCtrl_clkmd_MASK 0x06000000
158 # define ClkCtrl_clkmd_SHIFT 25
159 # define ClkCtrl_cglock 0x00000200
160 # define PLLBandwidth_MAX 4
162 #define U32_SRSec 0x05C
164 #define U32_TSSec 0x060
165 #define U32_TSEvt 0x064
166 #define U32_TSSecLatch 0x068
167 #define U32_TSEvtLatch 0x06c
169 #define U32_EvtFIFOSec 0x070
170 #define U32_EvtFIFOEvt 0x074
171 #define U32_EvtFIFOCode 0x078
173 #define U32_LogStatus 0x07C
175 #define U32_FracDiv 0x080
177 #define U32_RFInitPhas 0x088
179 #define U32_GPIODir 0x090
180 #define U32_GPIOIn 0x094
181 #define U32_GPIOOut 0x098
184 #define U32_SPIDData 0x0A0
185 #define U32_SPIDCtrl 0x0A4
187 #define U32_DCTarget 0x0b0
188 #define U32_DCRxVal 0x0b4
189 #define U32_DCIntVal 0x0b8
190 #define U32_DCStatus 0x0bc
191 #define U32_TOPID 0x0c0
193 #define U32_SeqControl_base 0x00e0
194 #define U32_SeqControl(n) (U32_SeqControl_base + (4*n))
197 #define U32_ScalerN 0x100
200 #define U32_Scaler(N) (U32_ScalerN + (4*(N)))
201 # define ScalerPhasOffs_offset 0x20
202 #define U32_ScalerPulsTrig(N) (U32_ScalerN + 0x40 + (4*(N)))
204 #define U32_DBusTrigN 0x180
205 #define U32_DBusPulsTrig(N) (U32_DBusTrigN + (4*(N)))
207 #define U32_PulserNCtrl 0x200
208 #define U32_PulserNScal 0x204
209 #define U32_PulserNDely 0x208
210 #define U32_PulserNWdth 0x20c
211 # define PulserMax 24
214 #define U32_PulserCtrl(N) (U32_PulserNCtrl + (16*(N)))
215 # define PulserCtrl_masks 0xf0000000
216 # define PulserCtrl_masks_shift 28
217 # define PulserCtrl_enables 0x00f00000
218 # define PulserCtrl_enables_shift 20
219 # define PulserCtrl_ena 0x01
220 # define PulserCtrl_mtrg 0x02
221 # define PulserCtrl_mset 0x04
222 # define PulserCtrl_mrst 0x08
223 # define PulserCtrl_pol 0x10
224 # define PulserCtrl_srst 0x20
225 # define PulserCtrl_sset 0x40
226 # define PulserCtrl_rbv 0x80
228 #define U32_PulserScal(N) (U32_PulserNScal + (16*(N)))
229 #define U32_PulserDely(N) (U32_PulserNDely + (16*(N)))
230 #define U32_PulserWdth(N) (U32_PulserNWdth + (16*(N)))
240 #define Output_mask(N) ( ((N)&1) ? 0x0000ffff : 0xffff0000 )
241 #define Output_shift(N) ( ((N)&1) ? 0 : 16)
244 #define U32_OutputMapFPN 0x400
245 # define OutputMapFPMax 8
248 #define U32_OutputMapFP(N) (U32_OutputMapFPN + (2*( (N) & (~0x1) )))
251 #define U32_OutputMapFPUnivN 0x440
252 # define OutputMapFPUnivMax 10
255 #define U32_OutputMapFPUniv(N) (U32_OutputMapFPUnivN + (2*( (N) & (~0x1) )))
258 #define U32_OutputMapRBN 0x480
259 # define OutputMapRBMax 32
262 #define U32_OutputMapRB(N) (U32_OutputMapRBN + (2*( (N) & (~0x1) )))
265 #define U32_OutputMapBackplaneN 0x4C0
266 # define OutputMapBackplaneMax 8
269 #define U32_OutputMapBackplane(N) (U32_OutputMapBackplaneN + (2*( (N) & (~0x1) )))
272 #define U32_InputMapFPN 0x500
273 # define InputMapFP_state 0x80000000
274 # define InputMapFP_lvl 0x20000000
275 # define InputMapFP_blvl 0x10000000
276 # define InputMapFP_elvl 0x08000000
277 # define InputMapFP_edge 0x04000000
278 # define InputMapFP_bedg 0x02000000
279 # define InputMapFP_eedg 0x01000000
280 # define InputMapFP_dbus_mask 0x00ff0000
281 # define InputMapFP_dbus_shft 16
282 # define InputMapFP_back_mask 0x0000ff00
283 # define InputMapFP_back_shft 8
284 # define InputMapFP_ext_mask 0x000000ff
285 # define InputMapFP_ext_shft 0
286 # define InputMapFPMax 32
294 #define U32_InputMapFP(N) (U32_InputMapFPN + (4*(N)))
297 #define U32_GTXDelayN 0x580
298 #define U32_GTXDelay(N) (U32_GTXDelayN + (4*(N)))
301 #define U32_OutputCMLNLow 0x600
302 #define U32_OutputCMLNRise 0x604
303 #define U32_OutputCMLNFall 0x608
304 #define U32_OutputCMLNHigh 0x60c
305 #define U32_OutputCMLNEna 0x610
306 # define OutputCMLEna_ftrig_mask 0xffff0000
307 # define OutputCMLEna_ftrig_shft 16
308 # define OutputCMLEna_type_mask 0x0c00
309 # define OutputCMLEna_type_300 0x0800
310 # define OutputCMLEna_type_203 0x0400
311 # define OutputCMLEna_type_cml 0x0000
312 # define OutputCMLEna_pha_mask 0x0300
313 # define OutputCMLEna_pha_shift 8
314 # define OutputCMLEna_cycl 0x80
315 # define OutputCMLEna_ftrg 0x40
316 # define OutputCMLEna_mode_mask 0x30
317 # define OutputCMLEna_mode_orig 0x00
318 # define OutputCMLEna_mode_freq 0x10
319 # define OutputCMLEna_mode_patt 0x20
320 # define OutputCMLEna_rst 0x04
321 # define OutputCMLEna_pow 0x02
322 # define OutputCMLEna_ena 0x01
323 #define U32_OutputCMLNCount 0x0614
324 # define OutputCMLCount_mask 0xffff
325 # define OutputCMLCount_high_shft 16
326 # define OutputCMLCount_low_shft 0
327 #define U32_OutputCMLNPatLength 0x0618
328 # define OutputCMLPatLengthMax 2047
330 #define U32_OutputCMLNPat_base 0x20000
331 #define U32_OutputCMLPat(i,N) (U32_OutputCMLNPat_base + 0x4000*(i) + 4*(N))
333 # define OutputCMLMax 4
334 # define OutputGTXMax 8
337 #define U32_OutputCMLLow(N) (U32_OutputCMLNLow +(0x20*(N)))
338 #define U32_OutputCMLRise(N) (U32_OutputCMLNRise +(0x20*(N)))
339 #define U32_OutputCMLFall(N) (U32_OutputCMLNFall +(0x20*(N)))
340 #define U32_OutputCMLHigh(N) (U32_OutputCMLNHigh +(0x20*(N)))
341 #define U32_OutputCMLEna(N) (U32_OutputCMLNEna +(0x20*(N)))
343 #define U32_OutputCMLCount(N) (U32_OutputCMLNCount +(0x20*(N)))
344 #define U32_OutputCMLPatLength(N) (U32_OutputCMLNPatLength +(0x20*(N)))
346 #define U32_DataRx_base 0x0800
347 #define U32_DataTx_base 0x1800
348 #define U32_EventLog_base 0x2000
351 #define U32_DataRx(N) (U32_DataRx_base + (N))
352 #define U32_DataTx(N) (U32_DataTx_base + (N))
355 #define U32_EventLog(N) (U32_EventLog_base + (N))
363 #define U32_MappingRam_base 0x4000
365 #define MappingRamBlockInternal 0x0
366 #define MappingRamBlockTrigger 0x4
367 #define MappingRamBlockSet 0x8
368 #define MappingRamBlockReset 0xc
370 #define U32__MappingRam(M,E,N) (U32_MappingRam_base + (0x1000*(M)) + (0x10*(E)) + (N))
371 #define U32_MappingRam(M,E,N) U32__MappingRam(M,E, MappingRamBlock##N)
374 #define ActionFIFOSave 127
375 #define ActionTSLatch 126
376 #define ActionLEDBlink 125
377 #define ActionEvtFwd 124
378 #define ActionLogStop 123
379 #define ActionLogSave 122
380 #define ActionHeartBeat 101
381 #define ActionPSRst 100
384 #define U32_SeqRamTS_base 0xc000
385 #define U32_SeqRamTS(n,m) (U32_SeqRamTS_base + (0x4000*(n)) + (8*(m)))
387 #define U32_SFPEEPROM_base 0x8200
388 #define U32_SFPEEPROM(N) (U32_SFPEEPROM_base + (N))
389 #define U32_SFPDIAG_base 0x8300
390 #define U32_SFPDIAG(N) (U32_SFPDIAG_base + (N))
392 #define EVR_REGMAP_SIZE 0x40000