common/sfc_efx/base: add interrupts module for Riverhead
[dpdk.git] / drivers / common / sfc_efx / base / rhead_impl.h
1 /* SPDX-License-Identifier: BSD-3-Clause
2  *
3  * Copyright(c) 2019-2020 Xilinx, Inc.
4  * Copyright(c) 2018-2019 Solarflare Communications Inc.
5  */
6
7 #ifndef _SYS_RHEAD_IMPL_H
8 #define _SYS_RHEAD_IMPL_H
9
10 #ifdef  __cplusplus
11 extern "C" {
12 #endif
13
14
15 #define RHEAD_EVQ_MAXNEVS       16384
16 #define RHEAD_EVQ_MINNEVS       256
17
18 #define RHEAD_RXQ_MAXNDESCS     16384
19 #define RHEAD_RXQ_MINNDESCS     256
20
21 #define RHEAD_TXQ_MAXNDESCS     16384
22 #define RHEAD_TXQ_MINNDESCS     256
23
24 #define RHEAD_EVQ_DESC_SIZE     (sizeof (efx_qword_t))
25 #define RHEAD_RXQ_DESC_SIZE     (sizeof (efx_qword_t))
26 #define RHEAD_TXQ_DESC_SIZE     (sizeof (efx_oword_t))
27
28
29 /* NIC */
30
31 LIBEFX_INTERNAL
32 extern  __checkReturn   efx_rc_t
33 rhead_board_cfg(
34         __in            efx_nic_t *enp);
35
36 LIBEFX_INTERNAL
37 extern  __checkReturn   efx_rc_t
38 rhead_nic_probe(
39         __in            efx_nic_t *enp);
40
41 LIBEFX_INTERNAL
42 extern  __checkReturn   efx_rc_t
43 rhead_nic_set_drv_limits(
44         __inout         efx_nic_t *enp,
45         __in            efx_drv_limits_t *edlp);
46
47 LIBEFX_INTERNAL
48 extern  __checkReturn   efx_rc_t
49 rhead_nic_get_vi_pool(
50         __in            efx_nic_t *enp,
51         __out           uint32_t *vi_countp);
52
53 LIBEFX_INTERNAL
54 extern  __checkReturn   efx_rc_t
55 rhead_nic_get_bar_region(
56         __in            efx_nic_t *enp,
57         __in            efx_nic_region_t region,
58         __out           uint32_t *offsetp,
59         __out           size_t *sizep);
60
61 LIBEFX_INTERNAL
62 extern  __checkReturn   efx_rc_t
63 rhead_nic_reset(
64         __in            efx_nic_t *enp);
65
66 LIBEFX_INTERNAL
67 extern  __checkReturn   efx_rc_t
68 rhead_nic_init(
69         __in            efx_nic_t *enp);
70
71 LIBEFX_INTERNAL
72 extern  __checkReturn   boolean_t
73 rhead_nic_hw_unavailable(
74         __in            efx_nic_t *enp);
75
76 LIBEFX_INTERNAL
77 extern                  void
78 rhead_nic_set_hw_unavailable(
79         __in            efx_nic_t *enp);
80
81 #if EFSYS_OPT_DIAG
82
83 LIBEFX_INTERNAL
84 extern  __checkReturn   efx_rc_t
85 rhead_nic_register_test(
86         __in            efx_nic_t *enp);
87
88 #endif  /* EFSYS_OPT_DIAG */
89
90 LIBEFX_INTERNAL
91 extern                  void
92 rhead_nic_fini(
93         __in            efx_nic_t *enp);
94
95 LIBEFX_INTERNAL
96 extern                  void
97 rhead_nic_unprobe(
98         __in            efx_nic_t *enp);
99
100
101 /* INTR */
102
103 LIBEFX_INTERNAL
104 extern  __checkReturn   efx_rc_t
105 rhead_intr_init(
106         __in            efx_nic_t *enp,
107         __in            efx_intr_type_t type,
108         __in            efsys_mem_t *esmp);
109
110 LIBEFX_INTERNAL
111 extern                  void
112 rhead_intr_enable(
113         __in            efx_nic_t *enp);
114
115 LIBEFX_INTERNAL
116 extern                  void
117 rhead_intr_disable(
118         __in            efx_nic_t *enp);
119
120 LIBEFX_INTERNAL
121 extern                  void
122 rhead_intr_disable_unlocked(
123         __in            efx_nic_t *enp);
124
125 LIBEFX_INTERNAL
126 extern  __checkReturn   efx_rc_t
127 rhead_intr_trigger(
128         __in            efx_nic_t *enp,
129         __in            unsigned int level);
130
131 LIBEFX_INTERNAL
132 extern                  void
133 rhead_intr_status_line(
134         __in            efx_nic_t *enp,
135         __out           boolean_t *fatalp,
136         __out           uint32_t *qmaskp);
137
138 LIBEFX_INTERNAL
139 extern                  void
140 rhead_intr_status_message(
141         __in            efx_nic_t *enp,
142         __in            unsigned int message,
143         __out           boolean_t *fatalp);
144
145 LIBEFX_INTERNAL
146 extern                  void
147 rhead_intr_fatal(
148         __in            efx_nic_t *enp);
149
150 LIBEFX_INTERNAL
151 extern                  void
152 rhead_intr_fini(
153         __in            efx_nic_t *enp);
154
155
156 #ifdef  __cplusplus
157 }
158 #endif
159
160 #endif  /* _SYS_RHEAD_IMPL_H */