efx_check.h revision 299335
1283514Sarybchik/*-
2283514Sarybchik * Copyright (c) 2012-2015 Solarflare Communications Inc.
3283514Sarybchik * All rights reserved.
4283514Sarybchik *
5283514Sarybchik * Redistribution and use in source and binary forms, with or without
6283514Sarybchik * modification, are permitted provided that the following conditions are met:
7283514Sarybchik *
8283514Sarybchik * 1. Redistributions of source code must retain the above copyright notice,
9283514Sarybchik *    this list of conditions and the following disclaimer.
10283514Sarybchik * 2. Redistributions in binary form must reproduce the above copyright notice,
11283514Sarybchik *    this list of conditions and the following disclaimer in the documentation
12283514Sarybchik *    and/or other materials provided with the distribution.
13283514Sarybchik *
14283514Sarybchik * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
15283514Sarybchik * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
16283514Sarybchik * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
17283514Sarybchik * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
18283514Sarybchik * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19283514Sarybchik * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
20283514Sarybchik * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
21283514Sarybchik * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
22283514Sarybchik * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
23283514Sarybchik * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
24283514Sarybchik * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25283514Sarybchik *
26283514Sarybchik * The views and conclusions contained in the software and documentation are
27283514Sarybchik * those of the authors and should not be interpreted as representing official
28283514Sarybchik * policies, either expressed or implied, of the FreeBSD Project.
29283514Sarybchik *
30283514Sarybchik * $FreeBSD: head/sys/dev/sfxge/common/efx_check.h 299335 2016-05-10 07:20:18Z arybchik $
31283514Sarybchik */
32283514Sarybchik
33283514Sarybchik#ifndef _SYS_EFX_CHECK_H
34283514Sarybchik#define	_SYS_EFX_CHECK_H
35283514Sarybchik
36283514Sarybchik#include "efsys.h"
37283514Sarybchik
38283514Sarybchik/*
39283514Sarybchik * Check that the efsys.h header in client code has a valid combination of
40283514Sarybchik * EFSYS_OPT_xxx options.
41283514Sarybchik *
42283514Sarybchik * NOTE: Keep checks for obsolete options here to ensure that they are removed
43283514Sarybchik * from client code (and do not reappear in merges from other branches).
44283514Sarybchik */
45283514Sarybchik
46299253Sarybchik#ifdef EFSYS_OPT_FALCON
47299253Sarybchik# error "FALCON is obsolete and is not supported."
48299253Sarybchik#else
49299253Sarybchik/* FIXME: remove this after Falcon support has been removed */
50299253Sarybchik#define	EFSYS_OPT_PHY_TXC43128			(0)
51299253Sarybchik#endif
52299253Sarybchik
53283514Sarybchik/* Support NVRAM based boot config */
54283514Sarybchik#if EFSYS_OPT_BOOTCFG
55283514Sarybchik# if !EFSYS_OPT_NVRAM
56283514Sarybchik#  error "BOOTCFG requires NVRAM"
57283514Sarybchik# endif
58283514Sarybchik#endif /* EFSYS_OPT_BOOTCFG */
59283514Sarybchik
60283514Sarybchik/* Verify chip implements accessed registers */
61283514Sarybchik#if EFSYS_OPT_CHECK_REG
62299320Sarybchik# if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
63299320Sarybchik#  error "CHECK_REG requires SIENA or HUNTINGTON or MEDFORD"
64283514Sarybchik# endif
65283514Sarybchik#endif /* EFSYS_OPT_CHECK_REG */
66283514Sarybchik
67283514Sarybchik/* Decode fatal errors */
68283514Sarybchik#if EFSYS_OPT_DECODE_INTR_FATAL
69299320Sarybchik# if !EFSYS_OPT_SIENA
70299320Sarybchik#  error "INTR_FATAL requires SIENA"
71283514Sarybchik# endif
72283514Sarybchik#endif /* EFSYS_OPT_DECODE_INTR_FATAL */
73283514Sarybchik
74283514Sarybchik/* Support diagnostic hardware tests */
75283514Sarybchik#if EFSYS_OPT_DIAG
76299320Sarybchik# if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
77299320Sarybchik#  error "DIAG requires SIENA or HUNTINGTON or MEDFORD"
78283514Sarybchik# endif
79283514Sarybchik#endif /* EFSYS_OPT_DIAG */
80283514Sarybchik
81283514Sarybchik/* Support optimized EVQ data access */
82283514Sarybchik#if EFSYS_OPT_EV_PREFETCH
83299320Sarybchik# if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
84299320Sarybchik#  error "EV_PREFETCH requires SIENA or HUNTINGTON or MEDFORD"
85283514Sarybchik# endif
86283514Sarybchik#endif /* EFSYS_OPT_EV_PREFETCH */
87283514Sarybchik
88299321Sarybchik#ifdef EFSYS_OPT_FALCON_NIC_CFG_OVERRIDE
89299321Sarybchik# error "FALCON_NIC_CFG_OVERRIDE is obsolete and is not supported."
90299321Sarybchik#endif
91283514Sarybchik
92283514Sarybchik/* Support hardware packet filters */
93283514Sarybchik#if EFSYS_OPT_FILTER
94299320Sarybchik# if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
95299320Sarybchik#  error "FILTER requires SIENA or HUNTINGTON or MEDFORD"
96283514Sarybchik# endif
97283514Sarybchik#endif /* EFSYS_OPT_FILTER */
98283514Sarybchik
99293730Sarybchik#if (EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
100283514Sarybchik# if !EFSYS_OPT_FILTER
101293730Sarybchik#  error "HUNTINGTON or MEDFORD requires FILTER"
102283514Sarybchik# endif
103283514Sarybchik#endif /* EFSYS_OPT_HUNTINGTON */
104283514Sarybchik
105283514Sarybchik/* Support hardware loopback modes */
106283514Sarybchik#if EFSYS_OPT_LOOPBACK
107299320Sarybchik# if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
108299320Sarybchik#  error "LOOPBACK requires SIENA or HUNTINGTON or MEDFORD"
109283514Sarybchik# endif
110283514Sarybchik#endif /* EFSYS_OPT_LOOPBACK */
111283514Sarybchik
112299322Sarybchik#ifdef EFSYS_OPT_MAC_FALCON_GMAC
113299322Sarybchik# error "MAC_FALCON_GMAC is obsolete and is not supported."
114299322Sarybchik#endif
115283514Sarybchik
116299323Sarybchik#ifdef EFSYS_OPT_MAC_FALCON_XMAC
117299323Sarybchik# error "MAC_FALCON_XMAC is obsolete and is not supported."
118299323Sarybchik#endif
119283514Sarybchik
120283514Sarybchik/* Support MAC statistics */
121283514Sarybchik#if EFSYS_OPT_MAC_STATS
122299320Sarybchik# if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
123299320Sarybchik#  error "MAC_STATS requires SIENA or HUNTINGTON or MEDFORD"
124283514Sarybchik# endif
125283514Sarybchik#endif /* EFSYS_OPT_MAC_STATS */
126283514Sarybchik
127283514Sarybchik/* Support management controller messages */
128283514Sarybchik#if EFSYS_OPT_MCDI
129293730Sarybchik# if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
130293730Sarybchik#  error "MCDI requires SIENA or HUNTINGTON or MEDFORD"
131283514Sarybchik# endif
132283514Sarybchik#endif /* EFSYS_OPT_MCDI */
133283514Sarybchik
134293730Sarybchik#if (EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
135293730Sarybchik# if !EFSYS_OPT_MCDI
136293730Sarybchik#  error "SIENA or HUNTINGTON or MEDFORD requires MCDI"
137293730Sarybchik# endif
138283514Sarybchik#endif
139283514Sarybchik
140291677Sarybchik/* Support MCDI logging */
141291677Sarybchik#if EFSYS_OPT_MCDI_LOGGING
142291677Sarybchik# if !EFSYS_OPT_MCDI
143291677Sarybchik#  error "MCDI_LOGGING requires MCDI"
144291677Sarybchik# endif
145291677Sarybchik#endif /* EFSYS_OPT_MCDI_LOGGING */
146291677Sarybchik
147291927Sarybchik/* Support MCDI proxy authorization */
148291927Sarybchik#if EFSYS_OPT_MCDI_PROXY_AUTH
149291927Sarybchik# if !EFSYS_OPT_MCDI
150291927Sarybchik#  error "MCDI_PROXY_AUTH requires MCDI"
151291927Sarybchik# endif
152291927Sarybchik#endif /* EFSYS_OPT_MCDI_PROXY_AUTH */
153291927Sarybchik
154299324Sarybchik#ifdef EFSYS_OPT_MON_LM87
155299324Sarybchik# error "MON_LM87 is obsolete and is not supported."
156299324Sarybchik#endif
157283514Sarybchik
158299325Sarybchik#ifdef EFSYS_OPT_MON_MAX6647
159299325Sarybchik# error "MON_MAX6647 is obsolete and is not supported."
160299325Sarybchik#endif
161283514Sarybchik
162299326Sarybchik#ifdef EFSYS_OPT_MON_NULL
163299326Sarybchik# error "MON_NULL is obsolete and is not supported."
164299326Sarybchik#endif
165283514Sarybchik
166293767Sarybchik/* Obsolete option */
167283514Sarybchik#ifdef EFSYS_OPT_MON_SIENA
168293767Sarybchik#  error "MON_SIENA is obsolete (replaced by MON_MCDI)."
169283514Sarybchik#endif /* EFSYS_OPT_MON_SIENA*/
170283514Sarybchik
171293767Sarybchik/* Obsolete option */
172283514Sarybchik#ifdef EFSYS_OPT_MON_HUNTINGTON
173293767Sarybchik#  error "MON_HUNTINGTON is obsolete (replaced by MON_MCDI)."
174283514Sarybchik#endif /* EFSYS_OPT_MON_HUNTINGTON*/
175283514Sarybchik
176283514Sarybchik/* Support monitor statistics (voltage/temperature) */
177283514Sarybchik#if EFSYS_OPT_MON_STATS
178299320Sarybchik# if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
179299320Sarybchik#  error "MON_STATS requires SIENA or HUNTINGTON or MEDFORD"
180283514Sarybchik# endif
181283514Sarybchik#endif /* EFSYS_OPT_MON_STATS */
182283514Sarybchik
183283514Sarybchik/* Support Monitor via mcdi */
184283514Sarybchik#if EFSYS_OPT_MON_MCDI
185293730Sarybchik# if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
186293730Sarybchik#  error "MON_MCDI requires SIENA or HUNTINGTON or MEDFORD"
187283514Sarybchik# endif
188283514Sarybchik#endif /* EFSYS_OPT_MON_MCDI*/
189283514Sarybchik
190283514Sarybchik/* Support printable names for statistics */
191283514Sarybchik#if EFSYS_OPT_NAMES
192283514Sarybchik# if !(EFSYS_OPT_LOOPBACK || EFSYS_OPT_MAC_STATS || EFSYS_OPT_MCDI || \
193283514Sarybchik	EFSYS_MON_STATS || EFSYS_OPT_PHY_PROPS || EFSYS_OPT_PHY_STATS || \
194283514Sarybchik	EFSYS_OPT_QSTATS)
195283514Sarybchik#  error "NAMES requires LOOPBACK or xxxSTATS or MCDI or PHY_PROPS"
196283514Sarybchik# endif
197283514Sarybchik#endif /* EFSYS_OPT_NAMES */
198283514Sarybchik
199283514Sarybchik/* Support non volatile configuration */
200283514Sarybchik#if EFSYS_OPT_NVRAM
201299320Sarybchik# if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
202299320Sarybchik#  error "NVRAM requires SIENA or HUNTINGTON or MEDFORD"
203283514Sarybchik# endif
204283514Sarybchik#endif /* EFSYS_OPT_NVRAM */
205283514Sarybchik
206299327Sarybchik#ifdef EFSYS_OPT_NVRAM_FALCON_BOOTROM
207299327Sarybchik# error "NVRAM_FALCON_BOOTROM is obsolete and is not supported."
208299327Sarybchik#endif
209283514Sarybchik
210299328Sarybchik#ifdef EFSYS_OPT_NVRAM_SFT9001
211299328Sarybchik# error "NVRAM_SFT9001 is obsolete and is not supported."
212299328Sarybchik#endif
213283514Sarybchik
214299330Sarybchik#ifdef EFSYS_OPT_NVRAM_SFX7101
215299330Sarybchik# error "NVRAM_SFX7101 is obsolete and is not supported."
216299330Sarybchik#endif
217283514Sarybchik
218299254Sarybchik#ifdef EFSYS_OPT_PCIE_TUNE
219299254Sarybchik# error "PCIE_TUNE is obsolete and is not supported."
220299254Sarybchik#endif
221283514Sarybchik
222293767Sarybchik/* Obsolete option */
223299252Sarybchik#ifdef EFSYS_OPT_PHY_BIST
224299252Sarybchik# error "PHY_BIST is obsolete (replaced by BIST)."
225299252Sarybchik#endif
226283514Sarybchik
227283514Sarybchik/* Support PHY flags */
228283514Sarybchik#if EFSYS_OPT_PHY_FLAGS
229299320Sarybchik# if !EFSYS_OPT_SIENA
230299320Sarybchik#  error "PHY_FLAGS requires SIENA"
231283514Sarybchik# endif
232283514Sarybchik#endif /* EFSYS_OPT_PHY_FLAGS */
233283514Sarybchik
234283514Sarybchik/* Support for PHY LED control */
235283514Sarybchik#if EFSYS_OPT_PHY_LED_CONTROL
236299320Sarybchik# if !EFSYS_OPT_SIENA
237299320Sarybchik#  error "PHY_LED_CONTROL requires SIENA"
238283514Sarybchik# endif
239283514Sarybchik#endif /* EFSYS_OPT_PHY_LED_CONTROL */
240283514Sarybchik
241299331Sarybchik#ifdef EFSYS_OPT_PHY_NULL
242299331Sarybchik# error "PHY_NULL is obsolete and is not supported."
243299331Sarybchik#endif
244283514Sarybchik
245283514Sarybchik/* Obsolete option */
246283514Sarybchik#ifdef EFSYS_OPT_PHY_PM8358
247283514Sarybchik# error "EFSYS_OPT_PHY_PM8358 is obsolete and is not supported."
248283514Sarybchik#endif
249283514Sarybchik
250283514Sarybchik/* Support PHY properties */
251283514Sarybchik#if EFSYS_OPT_PHY_PROPS
252299320Sarybchik# if !EFSYS_OPT_SIENA
253299320Sarybchik#  error "PHY_PROPS requires SIENA"
254283514Sarybchik# endif
255283514Sarybchik#endif /* EFSYS_OPT_PHY_PROPS */
256283514Sarybchik
257299332Sarybchik#ifdef EFSYS_OPT_PHY_QT2022C2
258299332Sarybchik# error "PHY_QT2022C2 is obsolete and is not supported."
259299332Sarybchik#endif
260283514Sarybchik
261299333Sarybchik#ifdef EFSYS_OPT_PHY_QT2025C
262299333Sarybchik# error "PHY_QT2025C is obsolete and is not supported."
263299333Sarybchik#endif
264283514Sarybchik
265299334Sarybchik#ifdef EFSYS_OPT_PHY_SFT9001
266299334Sarybchik# error "PHY_SFT9001 is obsolete and is not supported."
267299334Sarybchik#endif
268283514Sarybchik
269299335Sarybchik#ifdef EFSYS_OPT_PHY_SFX7101
270299335Sarybchik# error "PHY_SFX7101 is obsolete and is not supported."
271299335Sarybchik#endif
272283514Sarybchik
273283514Sarybchik/* Support PHY statistics */
274283514Sarybchik#if EFSYS_OPT_PHY_STATS
275299320Sarybchik# if !EFSYS_OPT_SIENA
276299320Sarybchik#  error "PHY_STATS requires SIENA"
277283514Sarybchik# endif
278283514Sarybchik#endif /* EFSYS_OPT_PHY_STATS */
279283514Sarybchik
280283514Sarybchik/* Support TXC43128 PHY (SFE4003 NIC) */
281283514Sarybchik#if EFSYS_OPT_PHY_TXC43128
282283514Sarybchik# if !EFSYS_OPT_FALCON
283283514Sarybchik#  error "PHY_TXC43128 requires FALCON"
284283514Sarybchik# endif
285283514Sarybchik#endif /* EFSYS_OPT_PHY_TXC43128 */
286283514Sarybchik
287283514Sarybchik/* Support EVQ/RXQ/TXQ statistics */
288283514Sarybchik#if EFSYS_OPT_QSTATS
289299320Sarybchik# if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
290299320Sarybchik#  error "QSTATS requires SIENA or HUNTINGTON or MEDFORD"
291283514Sarybchik# endif
292283514Sarybchik#endif /* EFSYS_OPT_QSTATS */
293283514Sarybchik
294293806Sarybchik/* Obsolete option */
295293806Sarybchik#ifdef EFSYS_OPT_RX_HDR_SPLIT
296293806Sarybchik# error "RX_HDR_SPLIT is obsolete and is not supported"
297283514Sarybchik#endif /* EFSYS_OPT_RX_HDR_SPLIT */
298283514Sarybchik
299283514Sarybchik/* Support receive scaling (RSS) */
300283514Sarybchik#if EFSYS_OPT_RX_SCALE
301299320Sarybchik# if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
302299320Sarybchik#  error "RX_SCALE requires SIENA or HUNTINGTON or MEDFORD"
303283514Sarybchik# endif
304283514Sarybchik#endif /* EFSYS_OPT_RX_SCALE */
305283514Sarybchik
306283514Sarybchik/* Support receive scatter DMA */
307283514Sarybchik#if EFSYS_OPT_RX_SCATTER
308299320Sarybchik# if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
309299320Sarybchik#  error "RX_SCATTER requires SIENA or HUNTINGTON or MEDFORD"
310283514Sarybchik# endif
311283514Sarybchik#endif /* EFSYS_OPT_RX_SCATTER */
312283514Sarybchik
313283514Sarybchik/* Obsolete option */
314283514Sarybchik#ifdef EFSYS_OPT_STAT_NAME
315293767Sarybchik# error "STAT_NAME is obsolete (replaced by NAMES)."
316283514Sarybchik#endif
317283514Sarybchik
318283514Sarybchik/* Support PCI Vital Product Data (VPD) */
319283514Sarybchik#if EFSYS_OPT_VPD
320299320Sarybchik# if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
321299320Sarybchik#  error "VPD requires SIENA or HUNTINGTON or MEDFORD"
322283514Sarybchik# endif
323283514Sarybchik#endif /* EFSYS_OPT_VPD */
324283514Sarybchik
325283514Sarybchik/* Support Wake on LAN */
326283514Sarybchik#if EFSYS_OPT_WOL
327283514Sarybchik# if !EFSYS_OPT_SIENA
328283514Sarybchik#  error "WOL requires SIENA"
329283514Sarybchik# endif
330283514Sarybchik#endif /* EFSYS_OPT_WOL */
331283514Sarybchik
332293758Sarybchik/* Obsolete option */
333293758Sarybchik#ifdef EFSYS_OPT_MCAST_FILTER_LIST
334293767Sarybchik#  error "MCAST_FILTER_LIST is obsolete and is not supported"
335283514Sarybchik#endif /* EFSYS_OPT_MCAST_FILTER_LIST */
336283514Sarybchik
337283514Sarybchik/* Support BIST */
338283514Sarybchik#if EFSYS_OPT_BIST
339299320Sarybchik# if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
340299320Sarybchik#  error "BIST requires SIENA or HUNTINGTON or MEDFORD"
341283514Sarybchik# endif
342283514Sarybchik#endif /* EFSYS_OPT_BIST */
343283514Sarybchik
344293901Sarybchik/* Support MCDI licensing API */
345293901Sarybchik#if EFSYS_OPT_LICENSING
346293901Sarybchik# if !EFSYS_OPT_MCDI
347293901Sarybchik#  error "LICENSING requires MCDI"
348293901Sarybchik# endif
349293901Sarybchik# if !EFSYS_HAS_UINT64
350293901Sarybchik#  error "LICENSING requires UINT64"
351293901Sarybchik# endif
352293901Sarybchik#endif /* EFSYS_OPT_LICENSING */
353293901Sarybchik
354293901Sarybchik
355283514Sarybchik#endif /* _SYS_EFX_CHECK_H */
356