]> Git Repo - J-linux.git/blob - drivers/crypto/intel/qat/qat_common/adf_gen4_ras.h
Merge tag 'vfs-6.13-rc7.fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs
[J-linux.git] / drivers / crypto / intel / qat / qat_common / adf_gen4_ras.h
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 /* Copyright(c) 2023 Intel Corporation */
3 #ifndef ADF_GEN4_RAS_H_
4 #define ADF_GEN4_RAS_H_
5
6 #include <linux/bits.h>
7
8 struct adf_ras_ops;
9
10 /* ERRSOU0 Correctable error mask*/
11 #define ADF_GEN4_ERRSOU0_BIT                            BIT(0)
12
13 /* HI AE Correctable error log */
14 #define ADF_GEN4_HIAECORERRLOG_CPP0                     0x41A308
15
16 /* HI AE Correctable error log enable */
17 #define ADF_GEN4_HIAECORERRLOGENABLE_CPP0               0x41A318
18 #define ADF_GEN4_ERRSOU1_HIAEUNCERRLOG_CPP0_BIT         BIT(0)
19 #define ADF_GEN4_ERRSOU1_HICPPAGENTCMDPARERRLOG_BIT     BIT(1)
20 #define ADF_GEN4_ERRSOU1_RIMEM_PARERR_STS_BIT           BIT(2)
21 #define ADF_GEN4_ERRSOU1_TIMEM_PARERR_STS_BIT           BIT(3)
22 #define ADF_GEN4_ERRSOU1_RIMISCSTS_BIT                  BIT(4)
23
24 #define ADF_GEN4_ERRSOU1_BITMASK ( \
25         (ADF_GEN4_ERRSOU1_HIAEUNCERRLOG_CPP0_BIT)       | \
26         (ADF_GEN4_ERRSOU1_HICPPAGENTCMDPARERRLOG_BIT)   | \
27         (ADF_GEN4_ERRSOU1_RIMEM_PARERR_STS_BIT) | \
28         (ADF_GEN4_ERRSOU1_TIMEM_PARERR_STS_BIT) | \
29         (ADF_GEN4_ERRSOU1_RIMISCSTS_BIT))
30
31 /* HI AE Uncorrectable error log */
32 #define ADF_GEN4_HIAEUNCERRLOG_CPP0                     0x41A300
33
34 /* HI AE Uncorrectable error log enable */
35 #define ADF_GEN4_HIAEUNCERRLOGENABLE_CPP0               0x41A320
36
37 /* HI CPP Agent Command parity error log */
38 #define ADF_GEN4_HICPPAGENTCMDPARERRLOG                 0x41A310
39
40 /* HI CPP Agent Command parity error logging enable */
41 #define ADF_GEN4_HICPPAGENTCMDPARERRLOGENABLE           0x41A314
42
43 /* RI Memory parity error status register */
44 #define ADF_GEN4_RIMEM_PARERR_STS                       0x41B128
45
46 /* RI Memory parity error reporting enable */
47 #define ADF_GEN4_RI_MEM_PAR_ERR_EN0                     0x41B12C
48
49 /*
50  * RI Memory parity error mask
51  * BIT(0) - BIT(3) - ri_iosf_pdata_rxq[0:3] parity error
52  * BIT(4) - ri_tlq_phdr parity error
53  * BIT(5) - ri_tlq_pdata parity error
54  * BIT(6) - ri_tlq_nphdr parity error
55  * BIT(7) - ri_tlq_npdata parity error
56  * BIT(8) - BIT(9) - ri_tlq_cplhdr[0:1] parity error
57  * BIT(10) - BIT(17) - ri_tlq_cpldata[0:7] parity error
58  * BIT(18) - set this bit to 1 to enable logging status to ri_mem_par_err_sts0
59  * BIT(19) - ri_cds_cmd_fifo parity error
60  * BIT(20) - ri_obc_ricpl_fifo parity error
61  * BIT(21) - ri_obc_tiricpl_fifo parity error
62  * BIT(22) - ri_obc_cppcpl_fifo parity error
63  * BIT(23) - ri_obc_pendcpl_fifo parity error
64  * BIT(24) - ri_cpp_cmd_fifo parity error
65  * BIT(25) - ri_cds_ticmd_fifo parity error
66  * BIT(26) - riti_cmd_fifo parity error
67  * BIT(27) - ri_int_msixtbl parity error
68  * BIT(28) - ri_int_imstbl parity error
69  * BIT(30) - ri_kpt_fuses parity error
70  */
71 #define ADF_GEN4_RIMEM_PARERR_STS_UNCERR_BITMASK \
72         (BIT(0) | BIT(1) | BIT(2) | BIT(3) | BIT(5) | \
73          BIT(7) | BIT(10) | BIT(11) | BIT(12) | BIT(13) | \
74          BIT(14) | BIT(15) | BIT(16) | BIT(17) | BIT(18) | BIT(19) | \
75          BIT(20) | BIT(21) | BIT(22) | BIT(23) | BIT(24) | BIT(25) | \
76          BIT(26) | BIT(27) | BIT(28) | BIT(30))
77
78 #define ADF_GEN4_RIMEM_PARERR_STS_FATAL_BITMASK \
79         (BIT(4) | BIT(6) | BIT(8) | BIT(9))
80
81 /* TI CI parity status */
82 #define ADF_GEN4_TI_CI_PAR_STS                          0x50060C
83
84 /* TI CI parity reporting mask */
85 #define ADF_GEN4_TI_CI_PAR_ERR_MASK                     0x500608
86
87 /*
88  * TI CI parity status mask
89  * BIT(0) - CdCmdQ_sts patiry error status
90  * BIT(1) - CdDataQ_sts parity error status
91  * BIT(3) - CPP_SkidQ_sts parity error status
92  * BIT(7) - CPP_SkidQ_sc_sts parity error status
93  */
94 #define ADF_GEN4_TI_CI_PAR_STS_BITMASK \
95         (BIT(0) | BIT(1) | BIT(3) | BIT(7))
96
97 /* TI PULLFUB parity status */
98 #define ADF_GEN4_TI_PULL0FUB_PAR_STS                    0x500618
99
100 /* TI PULLFUB parity error reporting mask */
101 #define ADF_GEN4_TI_PULL0FUB_PAR_ERR_MASK               0x500614
102
103 /*
104  * TI PULLFUB parity status mask
105  * BIT(0) - TrnPullReqQ_sts parity status
106  * BIT(1) - TrnSharedDataQ_sts parity status
107  * BIT(2) - TrnPullReqDataQ_sts parity status
108  * BIT(4) - CPP_CiPullReqQ_sts parity status
109  * BIT(5) - CPP_TrnPullReqQ_sts parity status
110  * BIT(6) - CPP_PullidQ_sts parity status
111  * BIT(7) - CPP_WaitDataQ_sts parity status
112  * BIT(8) - CPP_CdDataQ_sts parity status
113  * BIT(9) - CPP_TrnDataQP0_sts parity status
114  * BIT(10) - BIT(11) - CPP_TrnDataQRF[00:01]_sts parity status
115  * BIT(12) - CPP_TrnDataQP1_sts parity status
116  * BIT(13) - BIT(14) - CPP_TrnDataQRF[10:11]_sts parity status
117  */
118 #define ADF_GEN4_TI_PULL0FUB_PAR_STS_BITMASK \
119         (BIT(0) | BIT(1) | BIT(2) | BIT(4) | BIT(5) | BIT(6) | BIT(7) | \
120          BIT(8) | BIT(9) | BIT(10) | BIT(11) | BIT(12) | BIT(13) | BIT(14))
121
122 /* TI PUSHUB parity status */
123 #define ADF_GEN4_TI_PUSHFUB_PAR_STS                     0x500630
124
125 /* TI PUSHFUB parity error reporting mask */
126 #define ADF_GEN4_TI_PUSHFUB_PAR_ERR_MASK                0x50062C
127
128 /*
129  * TI PUSHUB parity status mask
130  * BIT(0) - SbPushReqQ_sts parity status
131  * BIT(1) - BIT(2) - SbPushDataQ[0:1]_sts parity status
132  * BIT(4) - CPP_CdPushReqQ_sts parity status
133  * BIT(5) - BIT(6) - CPP_CdPushDataQ[0:1]_sts parity status
134  * BIT(7) - CPP_SbPushReqQ_sts parity status
135  * BIT(8) - CPP_SbPushDataQP_sts parity status
136  * BIT(9) - BIT(10) - CPP_SbPushDataQRF[0:1]_sts parity status
137  */
138 #define ADF_GEN4_TI_PUSHFUB_PAR_STS_BITMASK \
139         (BIT(0) | BIT(1) | BIT(2) | BIT(4) | BIT(5) | \
140          BIT(6) | BIT(7) | BIT(8) | BIT(9) | BIT(10))
141
142 /* TI CD parity status */
143 #define ADF_GEN4_TI_CD_PAR_STS                          0x50063C
144
145 /* TI CD parity error mask */
146 #define ADF_GEN4_TI_CD_PAR_ERR_MASK                     0x500638
147
148 /*
149  * TI CD parity status mask
150  * BIT(0) - BIT(15) - CtxMdRam[0:15]_sts parity status
151  * BIT(16) - Leaf2ClusterRam_sts parity status
152  * BIT(17) - BIT(18) - Ring2LeafRam[0:1]_sts parity status
153  * BIT(19) - VirtualQ_sts parity status
154  * BIT(20) - DtRdQ_sts parity status
155  * BIT(21) - DtWrQ_sts parity status
156  * BIT(22) - RiCmdQ_sts parity status
157  * BIT(23) - BypassQ_sts parity status
158  * BIT(24) - DtRdQ_sc_sts parity status
159  * BIT(25) - DtWrQ_sc_sts parity status
160  */
161 #define ADF_GEN4_TI_CD_PAR_STS_BITMASK \
162         (BIT(0) | BIT(1) | BIT(2) | BIT(3) | BIT(4) | BIT(5) | BIT(6) | \
163          BIT(7) | BIT(8) | BIT(9) | BIT(10) | BIT(11) | BIT(12) | BIT(13) | \
164          BIT(14) | BIT(15) | BIT(16) | BIT(17) | BIT(18) | BIT(19) | BIT(20) | \
165          BIT(21) | BIT(22) | BIT(23) | BIT(24) | BIT(25))
166
167 /* TI TRNSB parity status */
168 #define ADF_GEN4_TI_TRNSB_PAR_STS                       0x500648
169
170 /* TI TRNSB Parity error reporting mask */
171 #define ADF_GEN4_TI_TRNSB_PAR_ERR_MASK                  0x500644
172
173 /*
174  * TI TRNSB parity status mask
175  * BIT(0) - TrnPHdrQP_sts parity status
176  * BIT(1) - TrnPHdrQRF_sts parity status
177  * BIT(2) - TrnPDataQP_sts parity status
178  * BIT(3) - BIT(6) - TrnPDataQRF[0:3]_sts parity status
179  * BIT(7) - TrnNpHdrQP_sts parity status
180  * BIT(8) - BIT(9) - TrnNpHdrQRF[0:1]_sts parity status
181  * BIT(10) - TrnCplHdrQ_sts parity status
182  * BIT(11) - TrnPutObsReqQ_sts parity status
183  * BIT(12) - TrnPushReqQ_sts parity status
184  * BIT(13) - SbSplitIdRam_sts parity status
185  * BIT(14) - SbReqCountQ_sts parity status
186  * BIT(15) - SbCplTrkRam_sts parity status
187  * BIT(16) - SbGetObsReqQ_sts parity status
188  * BIT(17) - SbEpochIdQ_sts parity status
189  * BIT(18) - SbAtCplHdrQ_sts parity status
190  * BIT(19) - SbAtCplDataQ_sts parity status
191  * BIT(20) - SbReqCountRam_sts parity status
192  * BIT(21) - SbAtCplHdrQ_sc_sts parity status
193  */
194 #define ADF_GEN4_TI_TRNSB_PAR_STS_BITMASK \
195         (BIT(0) | BIT(1) | BIT(2) | BIT(3) | BIT(4) | BIT(5) | BIT(6) | \
196          BIT(7) | BIT(8) | BIT(9) | BIT(10) | BIT(11) | BIT(12) | \
197          BIT(13) | BIT(14) | BIT(15) | BIT(16) | BIT(17) | BIT(18) | \
198          BIT(19) | BIT(20) | BIT(21))
199
200 /* Status register to log misc error on RI */
201 #define ADF_GEN4_RIMISCSTS                              0x41B1B8
202
203 /* Status control register to log misc RI error */
204 #define ADF_GEN4_RIMISCCTL                              0x41B1BC
205
206 /*
207  * ERRSOU2 bit mask
208  * BIT(0) - SSM Interrupt Mask
209  * BIT(1) - CFC on CPP. ORed of CFC Push error and Pull error
210  * BIT(2) - BIT(4) - CPP attention interrupts, deprecated on gen4 devices
211  * BIT(18) - PM interrupt
212  */
213 #define ADF_GEN4_ERRSOU2_SSM_ERR_BIT                    BIT(0)
214 #define ADF_GEN4_ERRSOU2_CPP_CFC_ERR_STATUS_BIT BIT(1)
215 #define ADF_GEN4_ERRSOU2_CPP_CFC_ATT_INT_BITMASK \
216         (BIT(2) | BIT(3) | BIT(4))
217
218 #define ADF_GEN4_ERRSOU2_PM_INT_BIT                     BIT(18)
219
220 #define ADF_GEN4_ERRSOU2_BITMASK \
221         (ADF_GEN4_ERRSOU2_SSM_ERR_BIT | \
222          ADF_GEN4_ERRSOU2_CPP_CFC_ERR_STATUS_BIT)
223
224 #define ADF_GEN4_ERRSOU2_DIS_BITMASK \
225         (ADF_GEN4_ERRSOU2_SSM_ERR_BIT | \
226          ADF_GEN4_ERRSOU2_CPP_CFC_ERR_STATUS_BIT | \
227          ADF_GEN4_ERRSOU2_CPP_CFC_ATT_INT_BITMASK)
228
229 #define ADF_GEN4_IAINTSTATSSM                           0x28
230
231 /* IAINTSTATSSM error bit mask definitions */
232 #define ADF_GEN4_IAINTSTATSSM_UERRSSMSH_BIT             BIT(0)
233 #define ADF_GEN4_IAINTSTATSSM_CERRSSMSH_BIT             BIT(1)
234 #define ADF_GEN4_IAINTSTATSSM_PPERR_BIT                 BIT(2)
235 #define ADF_GEN4_IAINTSTATSSM_SLICEHANG_ERR_BIT         BIT(3)
236 #define ADF_GEN4_IAINTSTATSSM_SPPPARERR_BIT             BIT(4)
237 #define ADF_GEN4_IAINTSTATSSM_SSMCPPERR_BIT             BIT(5)
238 #define ADF_GEN4_IAINTSTATSSM_SSMSOFTERRORPARITY_BIT    BIT(6)
239 #define ADF_GEN4_IAINTSTATSSM_SER_ERR_SSMSH_CERR_BIT    BIT(7)
240 #define ADF_GEN4_IAINTSTATSSM_SER_ERR_SSMSH_UNCERR_BIT  BIT(8)
241
242 #define ADF_GEN4_IAINTSTATSSM_BITMASK \
243         (ADF_GEN4_IAINTSTATSSM_UERRSSMSH_BIT | \
244          ADF_GEN4_IAINTSTATSSM_CERRSSMSH_BIT | \
245          ADF_GEN4_IAINTSTATSSM_PPERR_BIT | \
246          ADF_GEN4_IAINTSTATSSM_SLICEHANG_ERR_BIT | \
247          ADF_GEN4_IAINTSTATSSM_SPPPARERR_BIT | \
248          ADF_GEN4_IAINTSTATSSM_SSMCPPERR_BIT | \
249          ADF_GEN4_IAINTSTATSSM_SSMSOFTERRORPARITY_BIT | \
250          ADF_GEN4_IAINTSTATSSM_SER_ERR_SSMSH_CERR_BIT | \
251          ADF_GEN4_IAINTSTATSSM_SER_ERR_SSMSH_UNCERR_BIT)
252
253 #define ADF_GEN4_UERRSSMSH                              0x18
254
255 /*
256  * UERRSSMSH error bit masks definitions
257  *
258  * BIT(0) - Indicates one uncorrectable error
259  * BIT(15) - Indicates multiple uncorrectable errors
260  *           in device shared memory
261  */
262 #define ADF_GEN4_UERRSSMSH_BITMASK                      (BIT(0) | BIT(15))
263
264 #define ADF_GEN4_UERRSSMSHAD                            0x1C
265
266 #define ADF_GEN4_CERRSSMSH                              0x10
267
268 /*
269  * CERRSSMSH error bit
270  * BIT(0) - Indicates one correctable error
271  */
272 #define ADF_GEN4_CERRSSMSH_ERROR_BIT                    BIT(0)
273
274 #define ADF_GEN4_CERRSSMSHAD                            0x14
275
276 /* SSM error handling features enable register */
277 #define ADF_GEN4_SSMFEATREN                             0x198
278
279 /*
280  * Disable SSM error detection and reporting features
281  * enabled by device driver on RAS initialization
282  *
283  * following bits should be cleared :
284  * BIT(4)  - Disable parity for CPP parity
285  * BIT(12) - Disable logging push/pull data error in pperr register.
286  * BIT(16) - BIT(23) - Disable parity for SPPs
287  * BIT(24) - BIT(27) - Disable parity for SPPs, if it's supported on the device.
288  */
289 #define ADF_GEN4_SSMFEATREN_DIS_BITMASK \
290         (BIT(0) | BIT(1) | BIT(2) | BIT(3) | BIT(5) | BIT(6) | BIT(7) | \
291          BIT(8) | BIT(9) | BIT(10) | BIT(11) | BIT(13) | BIT(14) | BIT(15))
292
293 #define ADF_GEN4_INTMASKSSM                             0x0
294
295 /*
296  * Error reporting mask in INTMASKSSM
297  * BIT(0) - Shared memory uncorrectable interrupt mask
298  * BIT(1) - Shared memory correctable interrupt mask
299  * BIT(2) - PPERR interrupt mask
300  * BIT(3) - CPP parity error Interrupt mask
301  * BIT(4) - SSM interrupt generated by SER correctable error mask
302  * BIT(5) - SSM interrupt generated by SER uncorrectable error
303  *          - not stop and scream - mask
304  */
305 #define ADF_GEN4_INTMASKSSM_BITMASK \
306         (BIT(0) | BIT(1) | BIT(2) | BIT(3) | BIT(4) | BIT(5))
307
308 /* CPP push or pull error */
309 #define ADF_GEN4_PPERR                                  0x8
310
311 #define ADF_GEN4_PPERR_BITMASK                          (BIT(0) | BIT(1))
312
313 #define ADF_GEN4_PPERRID                                0xC
314
315 /* Slice hang handling related registers */
316 #define ADF_GEN4_SLICEHANGSTATUS_ATH_CPH                0x84
317 #define ADF_GEN4_SLICEHANGSTATUS_CPR_XLT                0x88
318 #define ADF_GEN4_SLICEHANGSTATUS_DCPR_UCS               0x90
319 #define ADF_GEN4_SLICEHANGSTATUS_WAT_WCP                0x8C
320 #define ADF_GEN4_SLICEHANGSTATUS_PKE                    0x94
321
322 #define ADF_GEN4_SHINTMASKSSM_ATH_CPH                   0xF0
323 #define ADF_GEN4_SHINTMASKSSM_CPR_XLT                   0xF4
324 #define ADF_GEN4_SHINTMASKSSM_DCPR_UCS                  0xFC
325 #define ADF_GEN4_SHINTMASKSSM_WAT_WCP                   0xF8
326 #define ADF_GEN4_SHINTMASKSSM_PKE                       0x100
327
328 /* SPP pull cmd parity err_*slice* CSR */
329 #define ADF_GEN4_SPPPULLCMDPARERR_ATH_CPH               0x1A4
330 #define ADF_GEN4_SPPPULLCMDPARERR_CPR_XLT               0x1A8
331 #define ADF_GEN4_SPPPULLCMDPARERR_DCPR_UCS              0x1B0
332 #define ADF_GEN4_SPPPULLCMDPARERR_PKE                   0x1B4
333 #define ADF_GEN4_SPPPULLCMDPARERR_WAT_WCP               0x1AC
334
335 /* SPP pull data parity err_*slice* CSR */
336 #define ADF_GEN4_SPPPULLDATAPARERR_ATH_CPH              0x1BC
337 #define ADF_GEN4_SPPPULLDATAPARERR_CPR_XLT              0x1C0
338 #define ADF_GEN4_SPPPULLDATAPARERR_DCPR_UCS             0x1C8
339 #define ADF_GEN4_SPPPULLDATAPARERR_PKE                  0x1CC
340 #define ADF_GEN4_SPPPULLDATAPARERR_WAT_WCP              0x1C4
341
342 /* SPP push cmd parity err_*slice* CSR */
343 #define ADF_GEN4_SPPPUSHCMDPARERR_ATH_CPH               0x1D4
344 #define ADF_GEN4_SPPPUSHCMDPARERR_CPR_XLT               0x1D8
345 #define ADF_GEN4_SPPPUSHCMDPARERR_DCPR_UCS              0x1E0
346 #define ADF_GEN4_SPPPUSHCMDPARERR_PKE                   0x1E4
347 #define ADF_GEN4_SPPPUSHCMDPARERR_WAT_WCP               0x1DC
348
349 /* SPP push data parity err_*slice* CSR */
350 #define ADF_GEN4_SPPPUSHDATAPARERR_ATH_CPH              0x1EC
351 #define ADF_GEN4_SPPPUSHDATAPARERR_CPR_XLT              0x1F0
352 #define ADF_GEN4_SPPPUSHDATAPARERR_DCPR_UCS             0x1F8
353 #define ADF_GEN4_SPPPUSHDATAPARERR_PKE                  0x1FC
354 #define ADF_GEN4_SPPPUSHDATAPARERR_WAT_WCP              0x1F4
355
356 /* Accelerator SPP parity error mask registers */
357 #define ADF_GEN4_SPPPARERRMSK_ATH_CPH                   0x204
358 #define ADF_GEN4_SPPPARERRMSK_CPR_XLT                   0x208
359 #define ADF_GEN4_SPPPARERRMSK_DCPR_UCS                  0x210
360 #define ADF_GEN4_SPPPARERRMSK_PKE                       0x214
361 #define ADF_GEN4_SPPPARERRMSK_WAT_WCP                   0x20C
362
363 #define ADF_GEN4_SSMCPPERR                              0x224
364
365 /*
366  * Uncorrectable error mask in SSMCPPERR
367  * BIT(0) - indicates CPP command parity error
368  * BIT(1) - indicates CPP Main Push PPID parity error
369  * BIT(2) - indicates CPP Main ePPID parity error
370  * BIT(3) - indicates CPP Main push data parity error
371  * BIT(4) - indicates CPP Main Pull PPID parity error
372  * BIT(5) - indicates CPP target pull data parity error
373  */
374 #define ADF_GEN4_SSMCPPERR_FATAL_BITMASK \
375         (BIT(0) | BIT(1) | BIT(4))
376
377 #define ADF_GEN4_SSMCPPERR_UNCERR_BITMASK \
378         (BIT(2) | BIT(3) | BIT(5))
379
380 #define ADF_GEN4_SSMSOFTERRORPARITY_SRC                 0x9C
381 #define ADF_GEN4_SSMSOFTERRORPARITYMASK_SRC             0xB8
382
383 #define ADF_GEN4_SSMSOFTERRORPARITY_ATH_CPH             0xA0
384 #define ADF_GEN4_SSMSOFTERRORPARITYMASK_ATH_CPH         0xBC
385
386 #define ADF_GEN4_SSMSOFTERRORPARITY_CPR_XLT             0xA4
387 #define ADF_GEN4_SSMSOFTERRORPARITYMASK_CPR_XLT         0xC0
388
389 #define ADF_GEN4_SSMSOFTERRORPARITY_DCPR_UCS            0xAC
390 #define ADF_GEN4_SSMSOFTERRORPARITYMASK_DCPR_UCS        0xC8
391
392 #define ADF_GEN4_SSMSOFTERRORPARITY_PKE                 0xB0
393 #define ADF_GEN4_SSMSOFTERRORPARITYMASK_PKE             0xCC
394
395 #define ADF_GEN4_SSMSOFTERRORPARITY_WAT_WCP             0xA8
396 #define ADF_GEN4_SSMSOFTERRORPARITYMASK_WAT_WCP         0xC4
397
398 /* RF parity error detected in SharedRAM */
399 #define ADF_GEN4_SSMSOFTERRORPARITY_SRC_BIT             BIT(0)
400
401 #define ADF_GEN4_SER_ERR_SSMSH                          0x44C
402
403 /*
404  * Fatal error mask in SER_ERR_SSMSH
405  * BIT(0) - Indicates an uncorrectable error has occurred in the
406  *          accelerator controller command RFs
407  * BIT(2) - Parity error occurred in the bank SPP fifos
408  * BIT(3) - Indicates Parity error occurred in following fifos in
409  *          the design
410  * BIT(4) - Parity error occurred in flops in the design
411  * BIT(5) - Uncorrectable error has occurred in the
412  *          target push and pull data register flop
413  * BIT(7) - Indicates Parity error occurred in the Resource Manager
414  *          pending lock request fifos
415  * BIT(8) - Indicates Parity error occurred in the Resource Manager
416  *          MECTX command queues logic
417  * BIT(9) - Indicates Parity error occurred in the Resource Manager
418  *          MECTX sigdone fifo flops
419  * BIT(10) - Indicates an uncorrectable error has occurred in the
420  *           Resource Manager MECTX command RFs
421  * BIT(14) - Parity error occurred in Buffer Manager sigdone FIFO
422  */
423  #define ADF_GEN4_SER_ERR_SSMSH_FATAL_BITMASK \
424          (BIT(0) | BIT(2) | BIT(3) | BIT(4) | BIT(5) | BIT(7) | \
425           BIT(8) | BIT(9) | BIT(10) | BIT(14))
426
427 /*
428  * Uncorrectable error mask in SER_ERR_SSMSH
429  * BIT(12) Parity error occurred in Buffer Manager pool 0
430  * BIT(13) Parity error occurred in Buffer Manager pool 1
431  */
432 #define ADF_GEN4_SER_ERR_SSMSH_UNCERR_BITMASK \
433         (BIT(12) | BIT(13))
434
435 /*
436  * Correctable error mask in SER_ERR_SSMSH
437  * BIT(1) - Indicates a correctable Error has occurred
438  *          in the slice controller command RFs
439  * BIT(6) - Indicates a correctable Error has occurred in
440  *          the target push and pull data RFs
441  * BIT(11) - Indicates an correctable Error has occurred in
442  *           the Resource Manager MECTX command RFs
443  */
444 #define ADF_GEN4_SER_ERR_SSMSH_CERR_BITMASK \
445         (BIT(1) | BIT(6) | BIT(11))
446
447 /* SSM shared memory SER error reporting mask */
448 #define ADF_GEN4_SER_EN_SSMSH                           0x450
449
450 /*
451  * SSM SER error reporting mask in SER_en_err_ssmsh
452  * BIT(0) - Enables uncorrectable Error detection in :
453  *          1) slice controller command RFs.
454  *          2) target push/pull data registers
455  * BIT(1) - Enables correctable Error detection in :
456  *          1) slice controller command RFs
457  *          2) target push/pull data registers
458  * BIT(2) - Enables Parity error detection in
459  *          1) bank SPP fifos
460  *          2) gen4_pull_id_queue
461  *          3) gen4_push_id_queue
462  *          4) AE_pull_sigdn_fifo
463  *          5) DT_push_sigdn_fifo
464  *          6) slx_push_sigdn_fifo
465  *          7) secure_push_cmd_fifo
466  *          8) secure_pull_cmd_fifo
467  *          9) Head register in FIFO wrapper
468  *          10) current_cmd in individual push queue
469  *          11) current_cmd in individual pull queue
470  *          12) push_command_rxp arbitrated in ssm_push_cmd_queues
471  *          13) pull_command_rxp arbitrated in ssm_pull_cmd_queues
472  * BIT(3) - Enables uncorrectable Error detection in
473  *          the resource manager mectx cmd RFs.
474  * BIT(4) - Enables correctable error detection in the Resource Manager
475  *          mectx command RFs
476  * BIT(5) - Enables Parity error detection in
477  *          1) resource manager lock request fifo
478  *          2) mectx cmdqueues logic
479  *          3) mectx sigdone fifo
480  * BIT(6) - Enables Parity error detection in Buffer Manager pools
481  *          and sigdone fifo
482  */
483 #define ADF_GEN4_SER_EN_SSMSH_BITMASK \
484         (BIT(0) | BIT(1) | BIT(2) | BIT(3) | BIT(4) | BIT(5) | BIT(6))
485
486 #define ADF_GEN4_CPP_CFC_ERR_STATUS                     0x640C04
487
488 /*
489  * BIT(1) - Indicates multiple CPP CFC errors
490  * BIT(7) - Indicates CPP CFC command parity error type
491  * BIT(8) - Indicated CPP CFC data parity error type
492  */
493 #define ADF_GEN4_CPP_CFC_ERR_STATUS_MERR_BIT            BIT(1)
494 #define ADF_GEN4_CPP_CFC_ERR_STATUS_CMDPAR_BIT          BIT(7)
495 #define ADF_GEN4_CPP_CFC_ERR_STATUS_DATAPAR_BIT         BIT(8)
496
497 /*
498  * BIT(0) - Enables CFC to detect and log push/pull data error
499  * BIT(1) - Enables CFC to generate interrupt to PCIEP for CPP error
500  * BIT(4) - When 1 Parity detection is disabled
501  * BIT(5) - When 1 Parity detection is disabled on CPP command bus
502  * BIT(6) - When 1 Parity detection is disabled on CPP push/pull bus
503  * BIT(9) - When 1 RF parity error detection is disabled
504  */
505 #define ADF_GEN4_CPP_CFC_ERR_CTRL_BITMASK               (BIT(0) | BIT(1))
506
507 #define ADF_GEN4_CPP_CFC_ERR_CTRL_DIS_BITMASK \
508         (BIT(4) | BIT(5) | BIT(6) | BIT(9) | BIT(10))
509
510 #define ADF_GEN4_CPP_CFC_ERR_CTRL                       0x640C00
511
512 /*
513  * BIT(0) - Clears bit(0) of ADF_GEN4_CPP_CFC_ERR_STATUS
514  *          when an error is reported on CPP
515  * BIT(1) - Clears bit(1) of ADF_GEN4_CPP_CFC_ERR_STATUS
516  *          when multiple errors are reported on CPP
517  * BIT(2) - Clears bit(2) of ADF_GEN4_CPP_CFC_ERR_STATUS
518  *          when attention interrupt is reported
519  */
520 #define ADF_GEN4_CPP_CFC_ERR_STATUS_CLR_BITMASK (BIT(0) | BIT(1) | BIT(2))
521 #define ADF_GEN4_CPP_CFC_ERR_STATUS_CLR                 0x640C08
522
523 #define ADF_GEN4_CPP_CFC_ERR_PPID_LO                    0x640C0C
524 #define ADF_GEN4_CPP_CFC_ERR_PPID_HI                    0x640C10
525
526 /* Exception reporting in QAT SSM CMP */
527 #define ADF_GEN4_EXPRPSSMCPR                            0x2000
528
529 /*
530  * Uncorrectable error mask in EXPRPSSMCPR
531  * BIT(2) - Hard fatal error
532  * BIT(16) - Parity error detected in CPR Push FIFO
533  * BIT(17) - Parity error detected in CPR Pull FIFO
534  * BIT(18) - Parity error detected in CPR Hash Table
535  * BIT(19) - Parity error detected in CPR History Buffer Copy 0
536  * BIT(20) - Parity error detected in CPR History Buffer Copy 1
537  * BIT(21) - Parity error detected in CPR History Buffer Copy 2
538  * BIT(22) - Parity error detected in CPR History Buffer Copy 3
539  * BIT(23) - Parity error detected in CPR History Buffer Copy 4
540  * BIT(24) - Parity error detected in CPR History Buffer Copy 5
541  * BIT(25) - Parity error detected in CPR History Buffer Copy 6
542  * BIT(26) - Parity error detected in CPR History Buffer Copy 7
543  */
544 #define ADF_GEN4_EXPRPSSMCPR_UNCERR_BITMASK \
545         (BIT(2) | BIT(16) | BIT(17) | BIT(18) | BIT(19) | BIT(20) | \
546          BIT(21) | BIT(22) | BIT(23) | BIT(24) | BIT(25) | BIT(26))
547
548 /* Exception reporting in QAT SSM XLT */
549 #define ADF_GEN4_EXPRPSSMXLT                            0xA000
550
551 /*
552  * Uncorrectable error mask in EXPRPSSMXLT
553  * BIT(2) - If set, an Uncorrectable Error event occurred
554  * BIT(16) - Parity error detected in XLT Push FIFO
555  * BIT(17) - Parity error detected in XLT Pull FIFO
556  * BIT(18) - Parity error detected in XLT HCTB0
557  * BIT(19) - Parity error detected in XLT HCTB1
558  * BIT(20) - Parity error detected in XLT HCTB2
559  * BIT(21) - Parity error detected in XLT HCTB3
560  * BIT(22) - Parity error detected in XLT CBCL
561  * BIT(23) - Parity error detected in XLT LITPTR
562  */
563 #define ADF_GEN4_EXPRPSSMXLT_UNCERR_BITMASK \
564         (BIT(2) | BIT(16) | BIT(17) | BIT(18) | BIT(19) | BIT(20) | BIT(21) | \
565          BIT(22) | BIT(23))
566
567 /*
568  * Correctable error mask in EXPRPSSMXLT
569  * BIT(3) - Correctable error event occurred.
570  */
571 #define ADF_GEN4_EXPRPSSMXLT_CERR_BIT                   BIT(3)
572
573 /* Exception reporting in QAT SSM DCMP */
574 #define ADF_GEN4_EXPRPSSMDCPR(_n_) (0x12000 + (_n_) * 0x80)
575
576 /*
577  * Uncorrectable error mask in EXPRPSSMDCPR
578  * BIT(2) - Even hard fatal error
579  * BIT(4) - Odd hard fatal error
580  * BIT(6) - decode soft error
581  * BIT(16) - Parity error detected in CPR Push FIFO
582  * BIT(17) - Parity error detected in CPR Pull FIFO
583  * BIT(18) - Parity error detected in the Input Buffer
584  * BIT(19) - symbuf0parerr
585  *           Parity error detected in CPR Push FIFO
586  * BIT(20) - symbuf1parerr
587  *           Parity error detected in CPR Push FIFO
588  */
589 #define ADF_GEN4_EXPRPSSMDCPR_UNCERR_BITMASK \
590         (BIT(2) | BIT(4) | BIT(6) | BIT(16) | BIT(17) | \
591          BIT(18) | BIT(19) | BIT(20))
592
593 /*
594  * Correctable error mask in EXPRPSSMDCPR
595  * BIT(3) - Even ecc correctable error
596  * BIT(5) - Odd ecc correctable error
597  */
598 #define ADF_GEN4_EXPRPSSMDCPR_CERR_BITMASK              (BIT(3) | BIT(5))
599
600 #define ADF_GEN4_DCPR_SLICES_NUM                        3
601
602 /*
603  * ERRSOU3 bit masks
604  * BIT(0) - indicates error Response Order Overflow and/or BME error
605  * BIT(1) - indicates RI push/pull error
606  * BIT(2) - indicates TI push/pull error
607  * BIT(3) - indicates ARAM correctable error
608  * BIT(4) - indicates ARAM uncorrectable error
609  * BIT(5) - indicates TI pull parity error
610  * BIT(6) - indicates RI push parity error
611  * BIT(7) - indicates VFLR interrupt
612  * BIT(8) - indicates ring pair interrupts for ATU detected fault
613  * BIT(9) - indicates error when accessing RLT block
614  */
615 #define ADF_GEN4_ERRSOU3_TIMISCSTS_BIT                  BIT(0)
616 #define ADF_GEN4_ERRSOU3_RICPPINTSTS_BITMASK            (BIT(1) | BIT(6))
617 #define ADF_GEN4_ERRSOU3_TICPPINTSTS_BITMASK            (BIT(2) | BIT(5))
618 #define ADF_GEN4_ERRSOU3_REG_ARAMCERR_BIT               BIT(3)
619 #define ADF_GEN4_ERRSOU3_REG_ARAMUERR_BIT               BIT(4)
620 #define ADF_GEN4_ERRSOU3_VFLRNOTIFY_BIT                 BIT(7)
621 #define ADF_GEN4_ERRSOU3_ATUFAULTSTATUS_BIT             BIT(8)
622 #define ADF_GEN4_ERRSOU3_RLTERROR_BIT                   BIT(9)
623
624 #define ADF_GEN4_ERRSOU3_BITMASK ( \
625         (ADF_GEN4_ERRSOU3_TIMISCSTS_BIT) | \
626         (ADF_GEN4_ERRSOU3_RICPPINTSTS_BITMASK) | \
627         (ADF_GEN4_ERRSOU3_TICPPINTSTS_BITMASK) | \
628         (ADF_GEN4_ERRSOU3_REG_ARAMCERR_BIT) | \
629         (ADF_GEN4_ERRSOU3_REG_ARAMUERR_BIT) | \
630         (ADF_GEN4_ERRSOU3_VFLRNOTIFY_BIT) | \
631         (ADF_GEN4_ERRSOU3_ATUFAULTSTATUS_BIT) | \
632         (ADF_GEN4_ERRSOU3_RLTERROR_BIT))
633
634 /* TI Misc status register */
635 #define ADF_GEN4_TIMISCSTS                              0x50054C
636
637 /* TI Misc error reporting mask */
638 #define ADF_GEN4_TIMISCCTL                              0x500548
639
640 /*
641  * TI Misc error reporting control mask
642  * BIT(0) - Enables error detection and logging in TIMISCSTS register
643  * BIT(1) - It has effect only when SRIOV enabled, this bit is 0 by default
644  * BIT(2) - Enables the D-F-x counter within the dispatch arbiter
645  *          to start based on the command triggered from
646  * BIT(30) - Disables VFLR functionality
647  *           By setting this bit will revert to CPM1.x functionality
648  * bits 1, 2 and 30 value should be preserved and not meant to be changed
649  * within RAS.
650  */
651 #define ADF_GEN4_TIMISCCTL_BIT                          BIT(0)
652 #define ADF_GEN4_TIMSCCTL_RELAY_BITMASK (BIT(1) | BIT(2) | BIT(30))
653
654 /* RI CPP interface status register */
655 #define ADF_GEN4_RICPPINTSTS                            0x41A330
656
657 /*
658  * Uncorrectable error mask in RICPPINTSTS register
659  * BIT(0) - RI asserted the CPP error signal during a push
660  * BIT(1) - RI detected the CPP error signal asserted during a pull
661  * BIT(2) - RI detected a push data parity error
662  * BIT(3) - RI detected a push valid parity error
663  */
664 #define ADF_GEN4_RICPPINTSTS_BITMASK \
665         (BIT(0) | BIT(1) | BIT(2) | BIT(3))
666
667 /* RI CPP interface status register control */
668 #define ADF_GEN4_RICPPINTCTL                            0x41A32C
669
670 /*
671  * Control bit mask for RICPPINTCTL register
672  * BIT(0) - value of 1 enables error detection and reporting
673  *          on the RI CPP Push interface
674  * BIT(1) - value of 1 enables error detection and reporting
675  *          on the RI CPP Pull interface
676  * BIT(2) - value of 1 enables error detection and reporting
677  *          on the RI Parity
678  * BIT(3) - value of 1 enable checking parity on CPP
679  * BIT(4) - value of 1 enables the stop feature of the stop and stream
680  *          for all RI CPP Command RFs
681  */
682 #define ADF_GEN4_RICPPINTCTL_BITMASK \
683         (BIT(0) | BIT(1) | BIT(2) | BIT(3) | BIT(4))
684
685 /* Push ID of the command which triggered the transaction error on RI */
686 #define ADF_GEN4_RIERRPUSHID                            0x41A334
687
688 /* Pull ID of the command which triggered the transaction error on RI */
689 #define ADF_GEN4_RIERRPULLID                            0x41A338
690
691 /* TI CPP interface status register */
692 #define ADF_GEN4_TICPPINTSTS                            0x50053C
693
694 /*
695  * Uncorrectable error mask in TICPPINTSTS register
696  * BIT(0) - value of 1 indicates that the TI asserted
697  *          the CPP error signal during a push
698  * BIT(1) - value of 1 indicates that the TI detected
699  *          the CPP error signal asserted during a pull
700  * BIT(2) - value of 1 indicates that the TI detected
701  *          a pull data parity error
702  */
703 #define ADF_GEN4_TICPPINTSTS_BITMASK \
704         (BIT(0) | BIT(1) | BIT(2))
705
706 /* TI CPP interface status register control */
707 #define ADF_GEN4_TICPPINTCTL                            0x500538
708
709 /*
710  * Control bit mask for TICPPINTCTL register
711  * BIT(0) - value of 1 enables error detection and reporting on
712  *          the TI CPP Push interface
713  * BIT(1) - value of 1 enables error detection and reporting on
714  *          the TI CPP Push interface
715  * BIT(2) - value of 1 enables parity error detection and logging on
716  *          the TI CPP Pull interface
717  * BIT(3) - value of 1 enables CPP CMD and Pull Data parity checking
718  * BIT(4) - value of 1 enables TI stop part of stop and scream mode on
719  *          CPP/RF Parity error
720  */
721 #define ADF_GEN4_TICPPINTCTL_BITMASK \
722         (BIT(0) | BIT(1) | BIT(2) | BIT(3) | BIT(4))
723
724 /* Push ID of the command which triggered the transaction error on TI */
725 #define ADF_GEN4_TIERRPUSHID                            0x500540
726
727 /* Pull ID of the command which triggered the transaction error on TI */
728 #define ADF_GEN4_TIERRPULLID                            0x500544
729
730 /* Correctable error in ARAM agent register */
731 #define ADF_GEN4_REG_ARAMCERR                           0x1700
732
733 #define ADF_GEN4_REG_ARAMCERR_BIT                       BIT(0)
734
735 /*
736  * Correctable error enablement in ARAM bit mask
737  * BIT(3) - enable ARAM RAM to fix and log correctable error
738  * BIT(26) - enables ARAM agent to generate interrupt for correctable error
739  */
740 #define ADF_GEN4_REG_ARAMCERR_EN_BITMASK                (BIT(3) | BIT(26))
741
742 /* Correctable error address in ARAM agent register */
743 #define ADF_GEN4_REG_ARAMCERRAD                         0x1708
744
745 /* Uncorrectable error in ARAM agent register */
746 #define ADF_GEN4_REG_ARAMUERR                           0x1704
747
748 /*
749  * ARAM error bit mask
750  * BIT(0) - indicates error logged in ARAMCERR or ARAMUCERR
751  * BIT(18) - indicates uncorrectable multiple errors in ARAM agent
752  */
753 #define ADF_GEN4_REG_ARAMUERR_ERROR_BIT                 BIT(0)
754 #define ADF_GEN4_REG_ARAMUERR_MULTI_ERRORS_BIT          BIT(18)
755
756 /*
757  * Uncorrectable error enablement in ARAM bit mask
758  * BIT(3) - enable ARAM RAM to fix and log uncorrectable error
759  * BIT(19) - enables ARAM agent to generate interrupt for uncorrectable error
760  */
761 #define ADF_GEN4_REG_ARAMUERR_EN_BITMASK                (BIT(3) | BIT(19))
762
763 /* Unorrectable error address in ARAM agent register */
764 #define ADF_GEN4_REG_ARAMUERRAD                         0x170C
765
766 /* Uncorrectable error transaction push/pull ID registers*/
767 #define ADF_GEN4_REG_ERRPPID_LO                         0x1714
768 #define ADF_GEN4_REG_ERRPPID_HI                         0x1718
769
770 /* ARAM ECC block error enablement */
771 #define ADF_GEN4_REG_ARAMCERRUERR_EN                    0x1808
772
773 /*
774  * ARAM ECC block error control bit masks
775  * BIT(0) - enable ARAM CD ECC block error detecting
776  * BIT(1) - enable ARAM pull request ECC error detecting
777  * BIT(2) - enable ARAM command dispatch ECC error detecting
778  * BIT(3) - enable ARAM read datapath push ECC error detecting
779  * BIT(4) - enable ARAM read datapath pull ECC error detecting
780  * BIT(5) - enable ARAM RMW ECC error detecting
781  * BIT(6) - enable ARAM write datapath RMW ECC error detecting
782  * BIT(7) - enable ARAM write datapath ECC error detecting
783  */
784 #define ADF_GEN4_REG_ARAMCERRUERR_EN_BITMASK \
785         (BIT(0) | BIT(1) | BIT(2) | BIT(3) | BIT(4) | \
786          BIT(5) | BIT(6) | BIT(7))
787
788 /* ARAM misc memory target error registers*/
789 #define ADF_GEN4_REG_CPPMEMTGTERR                       0x1710
790
791 /*
792  * ARAM misc memory target error bit masks
793  * BIT(0) - indicates an error in ARAM target memory
794  * BIT(1) - indicates multiple errors in ARAM target memory
795  * BIT(4) - indicates pull error in ARAM target memory
796  * BIT(5) - indicates parity pull error in ARAM target memory
797  * BIT(6) - indicates push error in ARAM target memory
798  */
799 #define ADF_GEN4_REG_CPPMEMTGTERR_BITMASK \
800         (BIT(0) | BIT(4) | BIT(5) | BIT(6))
801
802 #define ADF_GEN4_REG_CPPMEMTGTERR_MULTI_ERRORS_BIT      BIT(1)
803
804 /*
805  * ARAM misc memory target error enablement mask
806  * BIT(2) - enables CPP memory to detect and log push/pull data error
807  * BIT(7) - enables push/pull error to generate interrupts to RI
808  * BIT(8) - enables ARAM to check parity on pull data and CPP command buses
809  * BIT(9) - enables ARAM to autopush to AE when push/parity error is detected
810  *          on lookaside DT
811  */
812 #define ADF_GEN4_REG_CPPMEMTGTERR_EN_BITMASK \
813         (BIT(2) | BIT(7) | BIT(8) | BIT(9))
814
815 /* ATU fault status register */
816 #define ADF_GEN4_ATUFAULTSTATUS(i)                      (0x506000 + ((i) * 0x4))
817
818 #define ADF_GEN4_ATUFAULTSTATUS_BIT                     BIT(0)
819
820 /* Command Parity error detected on IOSFP Command to QAT */
821 #define ADF_GEN4_RIMISCSTS_BIT                          BIT(0)
822
823 void adf_gen4_init_ras_ops(struct adf_ras_ops *ras_ops);
824
825 #endif /* ADF_GEN4_RAS_H_ */
This page took 0.076799 seconds and 4 git commands to generate.