Belle II Software  release-05-01-25
copper.h
1 #ifndef _COPPER_H_
2 #define _COPPER_H_
3 
4 #define COPPER_DRIVER_HEADER_MAGIC 0x7FFF0008
5 #define COPPER_DRIVER_FOOTER_MAGIC 0x7FFF0009
6 
7 struct copper_header {
8  int magic;
9  int event_number;
10  int subsys;
11  int crate;
12  int slot;
13  unsigned int ttrx[2];
14 };
15 
16 struct copper_footer {
17  int chksum_xor;
18  int magic;
19 };
20 
21 #ifndef _LINUX_IOCTL_H
22 #include <linux/ioctl.h>
23 #endif
24 
25 int peek_next_event_size(void);
26 int shift_next_event_size(void);
27 
28 /* register positions */
29 #define COPPER_FF_STA 0x00000000 // COPPER Event FIFO Status
30 #define COPPER_CONF_WA_AE 0x00000010 // COPPER Event FIFO Ach Almost Empty
31 #define COPPER_CONF_WB_AE 0x00000014 // COPPER Event FIFO Bch Almost Empty
32 #define COPPER_CONF_WC_AE 0x00000018 // COPPER Event FIFO Cch Almost Empty
33 #define COPPER_CONF_WD_AE 0x0000001C // COPPER Event FIFO Dch Almost Empty
34 #define COPPER_CONF_WA_FF 0x00000020 // COPPER Event FIFO Ach Defined Quantity
35 #define COPPER_CONF_WB_FF 0x00000024 // COPPER Event FIFO Bch Defined Quantity
36 #define COPPER_CONF_WC_FF 0x00000028 // COPPER Event FIFO Cch Defined Quantity
37 #define COPPER_CONF_WD_FF 0x0000002C // COPPER Event FIFO Dch Defined Quantity
38 #define COPPER_CONF_WA_AF 0x00000030 // COPPER Event FIFO Ach Almost Full
39 #define COPPER_CONF_WB_AF 0x00000034 // COPPER Event FIFO Bch Almost Full
40 #define COPPER_CONF_WC_AF 0x00000038 // COPPER Event FIFO Cch Almost Full
41 #define COPPER_CONF_WD_AF 0x0000003C // COPPER Event FIFO Dch Almost Full
42 #define COPPER_FF_RST 0x00000050 // COPPER Event FIFO & FINESSE Soft Reset
43 #define COPPER_FINESSE_STA 0x00000054 // FINESSE Status
44 #define COPPER_ALMFULL_ENB 0x00000058 // COPPER Almost Full Flag Enable
45 #define COPPER_VERSION 0x0000005C // COPPER firmware version
46 #define COPPER_TRGCM 0x00000060 // COPPER Trigger Command
47 #define COPPER_TRG_LENG 0x00000064 // COPPER Trigger Interval
48 #define COPPER_LEF_READSEL 0x00000068 // Length FIFO Read Select
49 #define COPPER_LEF_TOTAL 0x0000006C // Length FIFO Total Data
50 #define COPPER_LEF_AB 0x00000080 // COPPER Length FIFO A&Bch Data
51 #define COPPER_LEF_CD 0x00000084 // COPPER Length FIFO C&Dch Data
52 #define COPPER_LEF_STA 0x00000088 // COPPER Length FIFO Status
53 #define COPPER_LEF_WA_FF 0x00000090 // COPPER Length FIFO Ach Defined Quantity
54 #define COPPER_LEF_WB_FF 0x00000094 // COPPER Length FIFO Bch Defined Quantity
55 #define COPPER_LEF_WC_FF 0x00000098 // COPPER Length FIFO Cch Defined Quantity
56 #define COPPER_LEF_WD_FF 0x0000009C // COPPER Length FIFO Dch Defined Quantity
57 #define COPPER_LEF_WA_AF 0x000000A0 // COPPER Length FIFO Ach Almost Full
58 #define COPPER_LEF_WB_AF 0x000000A4 // COPPER Length FIFO Bch Almost Full
59 #define COPPER_LEF_WC_AF 0x000000A8 // COPPER Length FIFO Cch Almost Full
60 #define COPPER_LEF_WD_AF 0x000000AC // COPPER Length FIFO Dch Almost Full
61 #define COPPER_INT_STA 0x000000B0 // COPPER Interrupt Status
62 #define COPPER_INT_MASK 0x000000B4 // COPPER Interrupt Mask
63 #define COPPER_FF_RW 0x000000B8 // COPPER Event FIFO Single Read/Write Control
64 #define COPPER_INT_FACTOR 0x000000BC // COPPER Interruption Factor Reg.
65 #define COPPER_FF_WA 0x00000100 // COPPER Event FIFO Ach Single Write
66 #define COPPER_FF_WB 0x00000104 // COPPER Event FIFO Bch Single Write
67 #define COPPER_FF_WC 0x00000108 // COPPER Event FIFO Cch Single Write
68 #define COPPER_FF_WD 0x0000010C // COPPER Event FIFO Dch Single Write
69 #define COPPER_FF_RA 0x00000110 // COPPER Event FIFO Ach Single Read
70 #define COPPER_FF_RB 0x00000114 // COPPER Event FIFO Bch Single Read
71 #define COPPER_FF_RC 0x00000118 // COPPER Event FIFO Cch Single Read
72 #define COPPER_FF_RD 0x0000011C // COPPER Event FIFO Dch Single Read
73 #define COPPER_FF_DMA 0x00400000 // Event FIFO DMA Read Reg.
74 
75 // 2005/01/17 Append
76 #define COPPER_EWRP_A 0x00000140 // COPPER Event FIFO Ach Read/Write Pointer
77 #define COPPER_EWRP_B 0x00000144 // COPPER Event FIFO Bch Read/Write Pointer
78 #define COPPER_EWRP_C 0x00000148 // COPPER Event FIFO Cch Read/Write Pointer
79 #define COPPER_EWRP_D 0x0000014C // COPPER Event FIFO Dch Read/Write Pointer
80 
81 #define COPPER_WEA_COUNTER 0x00000150 // FINESSE Ach WE Counter
82 #define COPPER_WEB_COUNTER 0x00000154 // FINESSE Bch WE Counter
83 #define COPPER_WEC_COUNTER 0x00000158 // FINESSE Cch WE Counter
84 #define COPPER_WED_COUNTER 0x0000015C // FINESSE Dch WE Counter
85 
86 #define COPPER_LWRA_DMA 0x00000160 // COPPER Length FIFO Ach Read/Write Pointer for DMA
87 #define COPPER_LWRB_DMA 0x00000164 // COPPER Length FIFO Bch Read/Write Pointer for DMA
88 #define COPPER_LWRC_DMA 0x00000168 // COPPER Length FIFO Cch Read/Write Pointer for DMA
89 #define COPPER_LWRD_DMA 0x0000016C // COPPER Length FIFO Dch Read/Write Pointer for DMA
90 
91 #define COPPER_DMA_TRANS 0x00000170 // COPPER DMA Counter
92 #define COPPER_DMA_TS_ENB 0x00000174 // COPPER DMA Counter Control
93 
94 #define COPPER_RW_DEBUG 0x000000FC // Memory for Debug
95 
96 /* alias */
97 
98 #define COPPER_LEF_WA_THR COPPER_LEF_WA_FF
99 #define COPPER_LEF_WB_THR COPPER_LEF_WB_FF
100 #define COPPER_LEF_WC_THR COPPER_LEF_WC_FF
101 #define COPPER_LEF_WD_THR COPPER_LEF_WD_FF
102 
103 /* ioctl cmds */
104 
105 #define COPPER_MAGIC 0xdf
106 
107 #define CPRIOGET_FF_STA _IOR(COPPER_MAGIC, COPPER_FF_STA, sizeof(unsigned int))
108 #define CPRIOGET_CONF_WA_AE _IOR(COPPER_MAGIC, COPPER_CONF_WA_AE, sizeof(unsigned int))
109 #define CPRIOGET_CONF_WB_AE _IOR(COPPER_MAGIC, COPPER_CONF_WB_AE, sizeof(unsigned int))
110 #define CPRIOGET_CONF_WC_AE _IOR(COPPER_MAGIC, COPPER_CONF_WC_AE, sizeof(unsigned int))
111 #define CPRIOGET_CONF_WD_AE _IOR(COPPER_MAGIC, COPPER_CONF_WD_AE, sizeof(unsigned int))
112 #define CPRIOGET_CONF_WA_FF _IOR(COPPER_MAGIC, COPPER_CONF_WA_FF, sizeof(unsigned int))
113 #define CPRIOGET_CONF_WB_FF _IOR(COPPER_MAGIC, COPPER_CONF_WB_FF, sizeof(unsigned int))
114 #define CPRIOGET_CONF_WC_FF _IOR(COPPER_MAGIC, COPPER_CONF_WC_FF, sizeof(unsigned int))
115 #define CPRIOGET_CONF_WD_FF _IOR(COPPER_MAGIC, COPPER_CONF_WD_FF, sizeof(unsigned int))
116 #define CPRIOGET_CONF_WA_AF _IOR(COPPER_MAGIC, COPPER_CONF_WA_AF, sizeof(unsigned int))
117 #define CPRIOGET_CONF_WB_AF _IOR(COPPER_MAGIC, COPPER_CONF_WB_AF, sizeof(unsigned int))
118 #define CPRIOGET_CONF_WC_AF _IOR(COPPER_MAGIC, COPPER_CONF_WC_AF, sizeof(unsigned int))
119 #define CPRIOGET_CONF_WD_AF _IOR(COPPER_MAGIC, COPPER_CONF_WD_AF, sizeof(unsigned int))
120 #define CPRIOGET_FF_RST _IOR(COPPER_MAGIC, COPPER_FF_RST, sizeof(unsigned int))
121 #define CPRIOGET_FINESSE_STA _IOR(COPPER_MAGIC, COPPER_FINESSE_STA, sizeof(unsigned int))
122 #define CPRIOGET_ALMFULL_ENB _IOR(COPPER_MAGIC, COPPER_ALMFULL_ENB, sizeof(unsigned int))
123 #define CPRIOGET_VERSION _IOR(COPPER_MAGIC, COPPER_VERSION, sizeof(unsigned int))
124 #define CPRIOGET_TRGCM _IOR(COPPER_MAGIC, COPPER_TRGCM, sizeof(unsigned int))
125 #define CPRIOGET_TRG_LENG _IOR(COPPER_MAGIC, COPPER_TRG_LENG, sizeof(unsigned int))
126 #define CPRIOGET_LEF_READSEL _IOR(COPPER_MAGIC, COPPER_LEF_READSEL, sizeof(unsigned int))
127 #define CPRIOGET_LEF_TOTAL _IOR(COPPER_MAGIC, COPPER_LEF_TOTAL, sizeof(unsigned int))
128 #define CPRIOGET_LEF_AB _IOR(COPPER_MAGIC, COPPER_LEF_AB, sizeof(unsigned int))
129 #define CPRIOGET_LEF_CD _IOR(COPPER_MAGIC, COPPER_LEF_CD, sizeof(unsigned int))
130 #define CPRIOGET_LEF_STA _IOR(COPPER_MAGIC, COPPER_LEF_STA, sizeof(unsigned int))
131 #define CPRIOGET_LEF_WA_FF _IOR(COPPER_MAGIC, COPPER_LEF_WA_FF, sizeof(unsigned int))
132 #define CPRIOGET_LEF_WB_FF _IOR(COPPER_MAGIC, COPPER_LEF_WB_FF, sizeof(unsigned int))
133 #define CPRIOGET_LEF_WC_FF _IOR(COPPER_MAGIC, COPPER_LEF_WC_FF, sizeof(unsigned int))
134 #define CPRIOGET_LEF_WD_FF _IOR(COPPER_MAGIC, COPPER_LEF_WD_FF, sizeof(unsigned int))
135 #define CPRIOGET_LEF_WA_AF _IOR(COPPER_MAGIC, COPPER_LEF_WA_AF, sizeof(unsigned int))
136 #define CPRIOGET_LEF_WB_AF _IOR(COPPER_MAGIC, COPPER_LEF_WB_AF, sizeof(unsigned int))
137 #define CPRIOGET_LEF_WC_AF _IOR(COPPER_MAGIC, COPPER_LEF_WC_AF, sizeof(unsigned int))
138 #define CPRIOGET_LEF_WD_AF _IOR(COPPER_MAGIC, COPPER_LEF_WD_AF, sizeof(unsigned int))
139 #define CPRIOGET_INT_STA _IOR(COPPER_MAGIC, COPPER_INT_STA, sizeof(unsigned int))
140 #define CPRIOGET_INT_MASK _IOR(COPPER_MAGIC, COPPER_INT_MASK, sizeof(unsigned int))
141 #define CPRIOGET_FF_RW _IOR(COPPER_MAGIC, COPPER_FF_RW, sizeof(unsigned int))
142 #define CPRIOGET_INT_FACTOR _IOR(COPPER_MAGIC, COPPER_INT_FACTOR, sizeof(unsigned int))
143 #define CPRIOGET_FF_WA _IOR(COPPER_MAGIC, COPPER_FF_WA, sizeof(unsigned int))
144 #define CPRIOGET_FF_WB _IOR(COPPER_MAGIC, COPPER_FF_WB, sizeof(unsigned int))
145 #define CPRIOGET_FF_WC _IOR(COPPER_MAGIC, COPPER_FF_WC, sizeof(unsigned int))
146 #define CPRIOGET_FF_WD _IOR(COPPER_MAGIC, COPPER_FF_WD, sizeof(unsigned int))
147 #define CPRIOGET_FF_RA _IOR(COPPER_MAGIC, COPPER_FF_RA, sizeof(unsigned int))
148 #define CPRIOGET_FF_RB _IOR(COPPER_MAGIC, COPPER_FF_RB, sizeof(unsigned int))
149 #define CPRIOGET_FF_RC _IOR(COPPER_MAGIC, COPPER_FF_RC, sizeof(unsigned int))
150 #define CPRIOGET_FF_RD _IOR(COPPER_MAGIC, COPPER_FF_RD, sizeof(unsigned int))
151 #define CPRIOGET_FF_DMA _IOR(COPPER_MAGIC, COPPER_FF_DMA, sizeof(unsigned int))
152 
153 #define CPRIOSET_FF_STA _IOW(COPPER_MAGIC, COPPER_FF_STA, sizeof(unsigned int))
154 #define CPRIOSET_CONF_WA_AE _IOW(COPPER_MAGIC, COPPER_CONF_WA_AE, sizeof(unsigned int))
155 #define CPRIOSET_CONF_WB_AE _IOW(COPPER_MAGIC, COPPER_CONF_WB_AE, sizeof(unsigned int))
156 #define CPRIOSET_CONF_WC_AE _IOW(COPPER_MAGIC, COPPER_CONF_WC_AE, sizeof(unsigned int))
157 #define CPRIOSET_CONF_WD_AE _IOW(COPPER_MAGIC, COPPER_CONF_WD_AE, sizeof(unsigned int))
158 #define CPRIOSET_CONF_WA_FF _IOW(COPPER_MAGIC, COPPER_CONF_WA_FF, sizeof(unsigned int))
159 #define CPRIOSET_CONF_WB_FF _IOW(COPPER_MAGIC, COPPER_CONF_WB_FF, sizeof(unsigned int))
160 #define CPRIOSET_CONF_WC_FF _IOW(COPPER_MAGIC, COPPER_CONF_WC_FF, sizeof(unsigned int))
161 #define CPRIOSET_CONF_WD_FF _IOW(COPPER_MAGIC, COPPER_CONF_WD_FF, sizeof(unsigned int))
162 #define CPRIOSET_CONF_WA_AF _IOW(COPPER_MAGIC, COPPER_CONF_WA_AF, sizeof(unsigned int))
163 #define CPRIOSET_CONF_WB_AF _IOW(COPPER_MAGIC, COPPER_CONF_WB_AF, sizeof(unsigned int))
164 #define CPRIOSET_CONF_WC_AF _IOW(COPPER_MAGIC, COPPER_CONF_WC_AF, sizeof(unsigned int))
165 #define CPRIOSET_CONF_WD_AF _IOW(COPPER_MAGIC, COPPER_CONF_WD_AF, sizeof(unsigned int))
166 #define CPRIOSET_FF_RST _IOW(COPPER_MAGIC, COPPER_FF_RST, sizeof(unsigned int))
167 #define CPRIOSET_FINESSE_STA _IOW(COPPER_MAGIC, COPPER_FINESSE_STA, sizeof(unsigned int))
168 #define CPRIOSET_ALMFULL_ENB _IOW(COPPER_MAGIC, COPPER_ALMFULL_ENB, sizeof(unsigned int))
169 #define CPRIOSET_TRGCM _IOW(COPPER_MAGIC, COPPER_TRGCM, sizeof(unsigned int))
170 #define CPRIOSET_TRG_LENG _IOW(COPPER_MAGIC, COPPER_TRG_LENG, sizeof(unsigned int))
171 #define CPRIOSET_LEF_READSEL _IOW(COPPER_MAGIC, COPPER_LEF_READSEL, sizeof(unsigned int))
172 #define CPRIOSET_LEF_TOTAL _IOW(COPPER_MAGIC, COPPER_LEF_TOTAL, sizeof(unsigned int))
173 #define CPRIOSET_LEF_AB _IOW(COPPER_MAGIC, COPPER_LEF_AB, sizeof(unsigned int))
174 #define CPRIOSET_LEF_CD _IOW(COPPER_MAGIC, COPPER_LEF_CD, sizeof(unsigned int))
175 #define CPRIOSET_LEF_STA _IOW(COPPER_MAGIC, COPPER_LEF_STA, sizeof(unsigned int))
176 #define CPRIOSET_LEF_WA_FF _IOW(COPPER_MAGIC, COPPER_LEF_WA_FF, sizeof(unsigned int))
177 #define CPRIOSET_LEF_WB_FF _IOW(COPPER_MAGIC, COPPER_LEF_WB_FF, sizeof(unsigned int))
178 #define CPRIOSET_LEF_WC_FF _IOW(COPPER_MAGIC, COPPER_LEF_WC_FF, sizeof(unsigned int))
179 #define CPRIOSET_LEF_WD_FF _IOW(COPPER_MAGIC, COPPER_LEF_WD_FF, sizeof(unsigned int))
180 #define CPRIOSET_LEF_WA_AF _IOW(COPPER_MAGIC, COPPER_LEF_WA_AF, sizeof(unsigned int))
181 #define CPRIOSET_LEF_WB_AF _IOW(COPPER_MAGIC, COPPER_LEF_WB_AF, sizeof(unsigned int))
182 #define CPRIOSET_LEF_WC_AF _IOW(COPPER_MAGIC, COPPER_LEF_WC_AF, sizeof(unsigned int))
183 #define CPRIOSET_LEF_WD_AF _IOW(COPPER_MAGIC, COPPER_LEF_WD_AF, sizeof(unsigned int))
184 #define CPRIOSET_INT_STA _IOW(COPPER_MAGIC, COPPER_INT_STA, sizeof(unsigned int))
185 #define CPRIOSET_INT_MASK _IOW(COPPER_MAGIC, COPPER_INT_MASK, sizeof(unsigned int))
186 #define CPRIOSET_FF_RW _IOW(COPPER_MAGIC, COPPER_FF_RW, sizeof(unsigned int))
187 #define CPRIOSET_INT_FACTOR _IOW(COPPER_MAGIC, COPPER_INT_FACTOR, sizeof(unsigned int))
188 #define CPRIOSET_FF_WA _IOW(COPPER_MAGIC, COPPER_FF_WA, sizeof(unsigned int))
189 #define CPRIOSET_FF_WB _IOW(COPPER_MAGIC, COPPER_FF_WB, sizeof(unsigned int))
190 #define CPRIOSET_FF_WC _IOW(COPPER_MAGIC, COPPER_FF_WC, sizeof(unsigned int))
191 #define CPRIOSET_FF_WD _IOW(COPPER_MAGIC, COPPER_FF_WD, sizeof(unsigned int))
192 #define CPRIOSET_FF_RA _IOW(COPPER_MAGIC, COPPER_FF_RA, sizeof(unsigned int))
193 #define CPRIOSET_FF_RB _IOW(COPPER_MAGIC, COPPER_FF_RB, sizeof(unsigned int))
194 #define CPRIOSET_FF_RC _IOW(COPPER_MAGIC, COPPER_FF_RC, sizeof(unsigned int))
195 #define CPRIOSET_FF_RD _IOW(COPPER_MAGIC, COPPER_FF_RD, sizeof(unsigned int))
196 #define CPRIOSET_FF_DMA _IOW(COPPER_MAGIC, COPPER_FF_DMA, sizeof(unsigned int))
197 
198 /* alias */
199 
200 #define CPRIOSET_LEF_WA_THR CPRIOSET_LEF_WA_FF
201 #define CPRIOSET_LEF_WB_THR CPRIOSET_LEF_WB_FF
202 #define CPRIOSET_LEF_WC_THR CPRIOSET_LEF_WC_FF
203 #define CPRIOSET_LEF_WD_THR CPRIOSET_LEF_WD_FF
204 
205 #define CPRIOGET_LEF_WA_THR CPRIOGET_LEF_WA_FF
206 #define CPRIOGET_LEF_WB_THR CPRIOGET_LEF_WB_FF
207 #define CPRIOGET_LEF_WC_THR CPRIOGET_LEF_WC_FF
208 #define CPRIOGET_LEF_WD_THR CPRIOGET_LEF_WD_FF
209 
210 /* cmds */
211 
212 #define CPRIO_RESET_FINESSE _IO(COPPER_MAGIC, 1)
213 #define CPRIO_INIT_RUN _IO(COPPER_MAGIC, 2)
214 #define CPRIO_RESET_COPPER _IO(COPPER_MAGIC, 3)
215 #define CPRIO_SET_SUBSYS _IO(COPPER_MAGIC, 4)
216 #define CPRIO_SET_CRATE _IO(COPPER_MAGIC, 5)
217 #define CPRIO_SET_SLOT _IO(COPPER_MAGIC, 6)
218 #define CPRIO_FORCE_DMA _IO(COPPER_MAGIC, 7)
219 #define CPRIO_END_RUN _IO(COPPER_MAGIC, 8)
220 
221 #endif /* _COPPER_H_ */
copper_header
Definition: copper.h:7