158f07778SDavid Daney /***********************license start***************
258f07778SDavid Daney * Author: Cavium Networks
358f07778SDavid Daney *
458f07778SDavid Daney * Contact: support@caviumnetworks.com
558f07778SDavid Daney * This file is part of the OCTEON SDK
658f07778SDavid Daney *
758f07778SDavid Daney * Copyright (c) 2003-2008 Cavium Networks
858f07778SDavid Daney *
958f07778SDavid Daney * This file is free software; you can redistribute it and/or modify
1058f07778SDavid Daney * it under the terms of the GNU General Public License, Version 2, as
1158f07778SDavid Daney * published by the Free Software Foundation.
1258f07778SDavid Daney *
1358f07778SDavid Daney * This file is distributed in the hope that it will be useful, but
1458f07778SDavid Daney * AS-IS and WITHOUT ANY WARRANTY; without even the implied warranty
1558f07778SDavid Daney * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, TITLE, or
1658f07778SDavid Daney * NONINFRINGEMENT. See the GNU General Public License for more
1758f07778SDavid Daney * details.
1858f07778SDavid Daney *
1958f07778SDavid Daney * You should have received a copy of the GNU General Public License
2058f07778SDavid Daney * along with this file; if not, write to the Free Software
2158f07778SDavid Daney * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
2258f07778SDavid Daney * or visit http://www.gnu.org/licenses/.
2358f07778SDavid Daney *
2458f07778SDavid Daney * This file may also be available under a different license from Cavium.
2558f07778SDavid Daney * Contact Cavium Networks for more information
2658f07778SDavid Daney ***********************license end**************************************/
2758f07778SDavid Daney
2858f07778SDavid Daney /*
2958f07778SDavid Daney * Header file containing the ABI with the bootloader.
3058f07778SDavid Daney */
3158f07778SDavid Daney
3258f07778SDavid Daney #ifndef __CVMX_BOOTINFO_H__
3358f07778SDavid Daney #define __CVMX_BOOTINFO_H__
3458f07778SDavid Daney
357d52ab16SDavid Daney #include "cvmx-coremask.h"
367d52ab16SDavid Daney
3758f07778SDavid Daney /*
3858f07778SDavid Daney * Current major and minor versions of the CVMX bootinfo block that is
3958f07778SDavid Daney * passed from the bootloader to the application. This is versioned
4058f07778SDavid Daney * so that applications can properly handle multiple bootloader
4158f07778SDavid Daney * versions.
4258f07778SDavid Daney */
4358f07778SDavid Daney #define CVMX_BOOTINFO_MAJ_VER 1
447d52ab16SDavid Daney #define CVMX_BOOTINFO_MIN_VER 4
4558f07778SDavid Daney
4658f07778SDavid Daney #if (CVMX_BOOTINFO_MAJ_VER == 1)
4758f07778SDavid Daney #define CVMX_BOOTINFO_OCTEON_SERIAL_LEN 20
4858f07778SDavid Daney /*
4958f07778SDavid Daney * This structure is populated by the bootloader. For binary
5058f07778SDavid Daney * compatibility the only changes that should be made are
5158f07778SDavid Daney * adding members to the end of the structure, and the minor
5258f07778SDavid Daney * version should be incremented at that time.
5358f07778SDavid Daney * If an incompatible change is made, the major version
5458f07778SDavid Daney * must be incremented, and the minor version should be reset
5558f07778SDavid Daney * to 0.
5658f07778SDavid Daney */
5758f07778SDavid Daney struct cvmx_bootinfo {
58534c158eSDavid Daney #ifdef __BIG_ENDIAN_BITFIELD
5958f07778SDavid Daney uint32_t major_version;
6058f07778SDavid Daney uint32_t minor_version;
6158f07778SDavid Daney
6258f07778SDavid Daney uint64_t stack_top;
6358f07778SDavid Daney uint64_t heap_base;
6458f07778SDavid Daney uint64_t heap_end;
6558f07778SDavid Daney uint64_t desc_vaddr;
6658f07778SDavid Daney
6758f07778SDavid Daney uint32_t exception_base_addr;
6858f07778SDavid Daney uint32_t stack_size;
6958f07778SDavid Daney uint32_t flags;
7058f07778SDavid Daney uint32_t core_mask;
7158f07778SDavid Daney /* DRAM size in megabytes */
7258f07778SDavid Daney uint32_t dram_size;
7358f07778SDavid Daney /* physical address of free memory descriptor block*/
7458f07778SDavid Daney uint32_t phy_mem_desc_addr;
7558f07778SDavid Daney /* used to pass flags from app to debugger */
7658f07778SDavid Daney uint32_t debugger_flags_base_addr;
7758f07778SDavid Daney
7858f07778SDavid Daney /* CPU clock speed, in hz */
7958f07778SDavid Daney uint32_t eclock_hz;
8058f07778SDavid Daney
8158f07778SDavid Daney /* DRAM clock speed, in hz */
8258f07778SDavid Daney uint32_t dclock_hz;
8358f07778SDavid Daney
8458f07778SDavid Daney uint32_t reserved0;
8558f07778SDavid Daney uint16_t board_type;
8658f07778SDavid Daney uint8_t board_rev_major;
8758f07778SDavid Daney uint8_t board_rev_minor;
8858f07778SDavid Daney uint16_t reserved1;
8958f07778SDavid Daney uint8_t reserved2;
9058f07778SDavid Daney uint8_t reserved3;
9158f07778SDavid Daney char board_serial_number[CVMX_BOOTINFO_OCTEON_SERIAL_LEN];
9258f07778SDavid Daney uint8_t mac_addr_base[6];
9358f07778SDavid Daney uint8_t mac_addr_count;
9458f07778SDavid Daney #if (CVMX_BOOTINFO_MIN_VER >= 1)
9558f07778SDavid Daney /*
9658f07778SDavid Daney * Several boards support compact flash on the Octeon boot
9758f07778SDavid Daney * bus. The CF memory spaces may be mapped to different
9858f07778SDavid Daney * addresses on different boards. These are the physical
9958f07778SDavid Daney * addresses, so care must be taken to use the correct
10058f07778SDavid Daney * XKPHYS/KSEG0 addressing depending on the application's
10158f07778SDavid Daney * ABI. These values will be 0 if CF is not present.
10258f07778SDavid Daney */
10358f07778SDavid Daney uint64_t compact_flash_common_base_addr;
10458f07778SDavid Daney uint64_t compact_flash_attribute_base_addr;
10558f07778SDavid Daney /*
10658f07778SDavid Daney * Base address of the LED display (as on EBT3000 board)
10758f07778SDavid Daney * This will be 0 if LED display not present.
10858f07778SDavid Daney */
10958f07778SDavid Daney uint64_t led_display_base_addr;
11058f07778SDavid Daney #endif
11158f07778SDavid Daney #if (CVMX_BOOTINFO_MIN_VER >= 2)
11258f07778SDavid Daney /* DFA reference clock in hz (if applicable)*/
11358f07778SDavid Daney uint32_t dfa_ref_clock_hz;
11458f07778SDavid Daney
11558f07778SDavid Daney /*
11658f07778SDavid Daney * flags indicating various configuration options. These
11758f07778SDavid Daney * flags supercede the 'flags' variable and should be used
11858f07778SDavid Daney * instead if available.
11958f07778SDavid Daney */
12058f07778SDavid Daney uint32_t config_flags;
12158f07778SDavid Daney #endif
122506d24beSDavid Daney #if (CVMX_BOOTINFO_MIN_VER >= 3)
123506d24beSDavid Daney /*
124506d24beSDavid Daney * Address of the OF Flattened Device Tree structure
125506d24beSDavid Daney * describing the board.
126506d24beSDavid Daney */
127506d24beSDavid Daney uint64_t fdt_addr;
128506d24beSDavid Daney #endif
1297d52ab16SDavid Daney #if (CVMX_BOOTINFO_MIN_VER >= 4)
1307d52ab16SDavid Daney /*
1317d52ab16SDavid Daney * Coremask used for processors with more than 32 cores
1327d52ab16SDavid Daney * or with OCI. This replaces core_mask.
1337d52ab16SDavid Daney */
1347d52ab16SDavid Daney struct cvmx_coremask ext_core_mask;
1357d52ab16SDavid Daney #endif
136534c158eSDavid Daney #else /* __BIG_ENDIAN */
137534c158eSDavid Daney /*
138534c158eSDavid Daney * Little-Endian: When the CPU mode is switched to
139534c158eSDavid Daney * little-endian, the view of the structure has some of the
140534c158eSDavid Daney * fields swapped.
141534c158eSDavid Daney */
142534c158eSDavid Daney uint32_t minor_version;
143534c158eSDavid Daney uint32_t major_version;
144534c158eSDavid Daney
145534c158eSDavid Daney uint64_t stack_top;
146534c158eSDavid Daney uint64_t heap_base;
147534c158eSDavid Daney uint64_t heap_end;
148534c158eSDavid Daney uint64_t desc_vaddr;
149534c158eSDavid Daney
150534c158eSDavid Daney uint32_t stack_size;
151534c158eSDavid Daney uint32_t exception_base_addr;
152534c158eSDavid Daney
153534c158eSDavid Daney uint32_t core_mask;
154534c158eSDavid Daney uint32_t flags;
155534c158eSDavid Daney
156534c158eSDavid Daney uint32_t phy_mem_desc_addr;
157534c158eSDavid Daney uint32_t dram_size;
158534c158eSDavid Daney
159534c158eSDavid Daney uint32_t eclock_hz;
160534c158eSDavid Daney uint32_t debugger_flags_base_addr;
161534c158eSDavid Daney
162534c158eSDavid Daney uint32_t reserved0;
163534c158eSDavid Daney uint32_t dclock_hz;
164534c158eSDavid Daney
165534c158eSDavid Daney uint8_t reserved3;
166534c158eSDavid Daney uint8_t reserved2;
167534c158eSDavid Daney uint16_t reserved1;
168534c158eSDavid Daney uint8_t board_rev_minor;
169534c158eSDavid Daney uint8_t board_rev_major;
170534c158eSDavid Daney uint16_t board_type;
171534c158eSDavid Daney
172534c158eSDavid Daney char board_serial_number[CVMX_BOOTINFO_OCTEON_SERIAL_LEN];
173534c158eSDavid Daney uint8_t mac_addr_base[6];
174534c158eSDavid Daney uint8_t mac_addr_count;
175534c158eSDavid Daney uint8_t pad[5];
176534c158eSDavid Daney
177534c158eSDavid Daney #if (CVMX_BOOTINFO_MIN_VER >= 1)
178534c158eSDavid Daney uint64_t compact_flash_common_base_addr;
179534c158eSDavid Daney uint64_t compact_flash_attribute_base_addr;
180534c158eSDavid Daney uint64_t led_display_base_addr;
181534c158eSDavid Daney #endif
182534c158eSDavid Daney #if (CVMX_BOOTINFO_MIN_VER >= 2)
183534c158eSDavid Daney uint32_t config_flags;
184534c158eSDavid Daney uint32_t dfa_ref_clock_hz;
185534c158eSDavid Daney #endif
186534c158eSDavid Daney #if (CVMX_BOOTINFO_MIN_VER >= 3)
187534c158eSDavid Daney uint64_t fdt_addr;
188534c158eSDavid Daney #endif
1897d52ab16SDavid Daney #if (CVMX_BOOTINFO_MIN_VER >= 4)
1907d52ab16SDavid Daney struct cvmx_coremask ext_core_mask;
1917d52ab16SDavid Daney #endif
192534c158eSDavid Daney #endif
19358f07778SDavid Daney };
19458f07778SDavid Daney
19558f07778SDavid Daney #define CVMX_BOOTINFO_CFG_FLAG_PCI_HOST (1ull << 0)
19658f07778SDavid Daney #define CVMX_BOOTINFO_CFG_FLAG_PCI_TARGET (1ull << 1)
19758f07778SDavid Daney #define CVMX_BOOTINFO_CFG_FLAG_DEBUG (1ull << 2)
19858f07778SDavid Daney #define CVMX_BOOTINFO_CFG_FLAG_NO_MAGIC (1ull << 3)
19958f07778SDavid Daney /* This flag is set if the TLB mappings are not contained in the
20058f07778SDavid Daney * 0x10000000 - 0x20000000 boot bus region. */
20158f07778SDavid Daney #define CVMX_BOOTINFO_CFG_FLAG_OVERSIZE_TLB_MAPPING (1ull << 4)
20258f07778SDavid Daney #define CVMX_BOOTINFO_CFG_FLAG_BREAK (1ull << 5)
20358f07778SDavid Daney
20458f07778SDavid Daney #endif /* (CVMX_BOOTINFO_MAJ_VER == 1) */
20558f07778SDavid Daney
20658f07778SDavid Daney /* Type defines for board and chip types */
20758f07778SDavid Daney enum cvmx_board_types_enum {
20858f07778SDavid Daney CVMX_BOARD_TYPE_NULL = 0,
20958f07778SDavid Daney CVMX_BOARD_TYPE_SIM = 1,
21058f07778SDavid Daney CVMX_BOARD_TYPE_EBT3000 = 2,
21158f07778SDavid Daney CVMX_BOARD_TYPE_KODAMA = 3,
21258f07778SDavid Daney CVMX_BOARD_TYPE_NIAGARA = 4,
21358f07778SDavid Daney CVMX_BOARD_TYPE_NAC38 = 5, /* formerly NAO38 */
21458f07778SDavid Daney CVMX_BOARD_TYPE_THUNDER = 6,
21558f07778SDavid Daney CVMX_BOARD_TYPE_TRANTOR = 7,
21658f07778SDavid Daney CVMX_BOARD_TYPE_EBH3000 = 8,
21758f07778SDavid Daney CVMX_BOARD_TYPE_EBH3100 = 9,
21858f07778SDavid Daney CVMX_BOARD_TYPE_HIKARI = 10,
21958f07778SDavid Daney CVMX_BOARD_TYPE_CN3010_EVB_HS5 = 11,
22058f07778SDavid Daney CVMX_BOARD_TYPE_CN3005_EVB_HS5 = 12,
22158f07778SDavid Daney CVMX_BOARD_TYPE_KBP = 13,
22258f07778SDavid Daney /* Deprecated, CVMX_BOARD_TYPE_CN3010_EVB_HS5 supports the CN3020 */
22358f07778SDavid Daney CVMX_BOARD_TYPE_CN3020_EVB_HS5 = 14,
22458f07778SDavid Daney CVMX_BOARD_TYPE_EBT5800 = 15,
22558f07778SDavid Daney CVMX_BOARD_TYPE_NICPRO2 = 16,
22658f07778SDavid Daney CVMX_BOARD_TYPE_EBH5600 = 17,
22758f07778SDavid Daney CVMX_BOARD_TYPE_EBH5601 = 18,
22858f07778SDavid Daney CVMX_BOARD_TYPE_EBH5200 = 19,
22958f07778SDavid Daney CVMX_BOARD_TYPE_BBGW_REF = 20,
23058f07778SDavid Daney CVMX_BOARD_TYPE_NIC_XLE_4G = 21,
23158f07778SDavid Daney CVMX_BOARD_TYPE_EBT5600 = 22,
23258f07778SDavid Daney CVMX_BOARD_TYPE_EBH5201 = 23,
2332b1b62e8SDavid Daney CVMX_BOARD_TYPE_EBT5200 = 24,
2342b1b62e8SDavid Daney CVMX_BOARD_TYPE_CB5600 = 25,
2352b1b62e8SDavid Daney CVMX_BOARD_TYPE_CB5601 = 26,
2362b1b62e8SDavid Daney CVMX_BOARD_TYPE_CB5200 = 27,
2372b1b62e8SDavid Daney /* Special 'generic' board type, supports many boards */
2382b1b62e8SDavid Daney CVMX_BOARD_TYPE_GENERIC = 28,
2392b1b62e8SDavid Daney CVMX_BOARD_TYPE_EBH5610 = 29,
240ada11a33SDavid Daney CVMX_BOARD_TYPE_LANAI2_A = 30,
241ada11a33SDavid Daney CVMX_BOARD_TYPE_LANAI2_U = 31,
242ada11a33SDavid Daney CVMX_BOARD_TYPE_EBB5600 = 32,
243ada11a33SDavid Daney CVMX_BOARD_TYPE_EBB6300 = 33,
244ada11a33SDavid Daney CVMX_BOARD_TYPE_NIC_XLE_10G = 34,
245ada11a33SDavid Daney CVMX_BOARD_TYPE_LANAI2_G = 35,
246ada11a33SDavid Daney CVMX_BOARD_TYPE_EBT5810 = 36,
247ada11a33SDavid Daney CVMX_BOARD_TYPE_NIC10E = 37,
248ada11a33SDavid Daney CVMX_BOARD_TYPE_EP6300C = 38,
249ada11a33SDavid Daney CVMX_BOARD_TYPE_EBB6800 = 39,
250ada11a33SDavid Daney CVMX_BOARD_TYPE_NIC4E = 40,
251ada11a33SDavid Daney CVMX_BOARD_TYPE_NIC2E = 41,
252ada11a33SDavid Daney CVMX_BOARD_TYPE_EBB6600 = 42,
253ada11a33SDavid Daney CVMX_BOARD_TYPE_REDWING = 43,
254ada11a33SDavid Daney CVMX_BOARD_TYPE_NIC68_4 = 44,
255ada11a33SDavid Daney CVMX_BOARD_TYPE_NIC10E_66 = 45,
256*07bdec3cSStijn Tintel CVMX_BOARD_TYPE_SNIC10E = 50,
25758f07778SDavid Daney CVMX_BOARD_TYPE_MAX,
25858f07778SDavid Daney
25958f07778SDavid Daney /*
26058f07778SDavid Daney * The range from CVMX_BOARD_TYPE_MAX to
26158f07778SDavid Daney * CVMX_BOARD_TYPE_CUST_DEFINED_MIN is reserved for future
26258f07778SDavid Daney * SDK use.
26358f07778SDavid Daney */
26458f07778SDavid Daney
26558f07778SDavid Daney /*
26658f07778SDavid Daney * Set aside a range for customer boards. These numbers are managed
26758f07778SDavid Daney * by Cavium.
26858f07778SDavid Daney */
26958f07778SDavid Daney CVMX_BOARD_TYPE_CUST_DEFINED_MIN = 10000,
27058f07778SDavid Daney CVMX_BOARD_TYPE_CUST_WSX16 = 10001,
27158f07778SDavid Daney CVMX_BOARD_TYPE_CUST_NS0216 = 10002,
27258f07778SDavid Daney CVMX_BOARD_TYPE_CUST_NB5 = 10003,
27358f07778SDavid Daney CVMX_BOARD_TYPE_CUST_WMR500 = 10004,
274ada11a33SDavid Daney CVMX_BOARD_TYPE_CUST_ITB101 = 10005,
275ada11a33SDavid Daney CVMX_BOARD_TYPE_CUST_NTE102 = 10006,
276ada11a33SDavid Daney CVMX_BOARD_TYPE_CUST_AGS103 = 10007,
277ada11a33SDavid Daney CVMX_BOARD_TYPE_CUST_GST104 = 10008,
278ada11a33SDavid Daney CVMX_BOARD_TYPE_CUST_GCT105 = 10009,
279ada11a33SDavid Daney CVMX_BOARD_TYPE_CUST_AGS106 = 10010,
280ada11a33SDavid Daney CVMX_BOARD_TYPE_CUST_SGM107 = 10011,
281ada11a33SDavid Daney CVMX_BOARD_TYPE_CUST_GCT108 = 10012,
282ada11a33SDavid Daney CVMX_BOARD_TYPE_CUST_AGS109 = 10013,
283ada11a33SDavid Daney CVMX_BOARD_TYPE_CUST_GCT110 = 10014,
284ada11a33SDavid Daney CVMX_BOARD_TYPE_CUST_L2_AIR_SENDER = 10015,
285ada11a33SDavid Daney CVMX_BOARD_TYPE_CUST_L2_AIR_RECEIVER = 10016,
286ada11a33SDavid Daney CVMX_BOARD_TYPE_CUST_L2_ACCTON2_TX = 10017,
287ada11a33SDavid Daney CVMX_BOARD_TYPE_CUST_L2_ACCTON2_RX = 10018,
288ada11a33SDavid Daney CVMX_BOARD_TYPE_CUST_L2_WSTRNSNIC_TX = 10019,
289ada11a33SDavid Daney CVMX_BOARD_TYPE_CUST_L2_WSTRNSNIC_RX = 10020,
290ada11a33SDavid Daney CVMX_BOARD_TYPE_CUST_L2_ZINWELL = 10021,
29158f07778SDavid Daney CVMX_BOARD_TYPE_CUST_DEFINED_MAX = 20000,
29258f07778SDavid Daney
29358f07778SDavid Daney /*
29458f07778SDavid Daney * Set aside a range for customer private use. The SDK won't
29558f07778SDavid Daney * use any numbers in this range.
29658f07778SDavid Daney */
29758f07778SDavid Daney CVMX_BOARD_TYPE_CUST_PRIVATE_MIN = 20001,
298a135a9b5SAaro Koskinen CVMX_BOARD_TYPE_UBNT_E100 = 20002,
29990761ceeSMikhail Gusarov CVMX_BOARD_TYPE_UBNT_E200 = 20003,
30090761ceeSMikhail Gusarov CVMX_BOARD_TYPE_UBNT_E220 = 20005,
30101b985bcSAaro Koskinen CVMX_BOARD_TYPE_CUST_DSR1000N = 20006,
30268262983SAdrian Schmutzler CVMX_BOARD_TYPE_UBNT_E300 = 20300,
303cef232ecSAaro Koskinen CVMX_BOARD_TYPE_KONTRON_S1901 = 21901,
30458f07778SDavid Daney CVMX_BOARD_TYPE_CUST_PRIVATE_MAX = 30000,
30558f07778SDavid Daney
30658f07778SDavid Daney /* The remaining range is reserved for future use. */
30758f07778SDavid Daney };
30858f07778SDavid Daney
30958f07778SDavid Daney enum cvmx_chip_types_enum {
31058f07778SDavid Daney CVMX_CHIP_TYPE_NULL = 0,
31158f07778SDavid Daney CVMX_CHIP_SIM_TYPE_DEPRECATED = 1,
31258f07778SDavid Daney CVMX_CHIP_TYPE_OCTEON_SAMPLE = 2,
31358f07778SDavid Daney CVMX_CHIP_TYPE_MAX,
31458f07778SDavid Daney };
31558f07778SDavid Daney
31625985edcSLucas De Marchi /* Compatibility alias for NAC38 name change, planned to be removed
31758f07778SDavid Daney * from SDK 1.7 */
31858f07778SDavid Daney #define CVMX_BOARD_TYPE_NAO38 CVMX_BOARD_TYPE_NAC38
31958f07778SDavid Daney
32058f07778SDavid Daney /* Functions to return string based on type */
32158f07778SDavid Daney #define ENUM_BRD_TYPE_CASE(x) \
32295339b70STianjia Zhang case x: return (&#x[16]); /* Skip CVMX_BOARD_TYPE_ */
cvmx_board_type_to_string(enum cvmx_board_types_enum type)32358f07778SDavid Daney static inline const char *cvmx_board_type_to_string(enum
32458f07778SDavid Daney cvmx_board_types_enum type)
32558f07778SDavid Daney {
32658f07778SDavid Daney switch (type) {
32758f07778SDavid Daney ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_NULL)
32858f07778SDavid Daney ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_SIM)
32958f07778SDavid Daney ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_EBT3000)
33058f07778SDavid Daney ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_KODAMA)
33158f07778SDavid Daney ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_NIAGARA)
33258f07778SDavid Daney ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_NAC38)
33358f07778SDavid Daney ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_THUNDER)
33458f07778SDavid Daney ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_TRANTOR)
33558f07778SDavid Daney ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_EBH3000)
33658f07778SDavid Daney ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_EBH3100)
33758f07778SDavid Daney ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_HIKARI)
33858f07778SDavid Daney ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CN3010_EVB_HS5)
33958f07778SDavid Daney ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CN3005_EVB_HS5)
34058f07778SDavid Daney ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_KBP)
34158f07778SDavid Daney ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CN3020_EVB_HS5)
34258f07778SDavid Daney ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_EBT5800)
34358f07778SDavid Daney ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_NICPRO2)
34458f07778SDavid Daney ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_EBH5600)
34558f07778SDavid Daney ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_EBH5601)
34658f07778SDavid Daney ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_EBH5200)
34758f07778SDavid Daney ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_BBGW_REF)
34858f07778SDavid Daney ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_NIC_XLE_4G)
34958f07778SDavid Daney ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_EBT5600)
35058f07778SDavid Daney ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_EBH5201)
3512b1b62e8SDavid Daney ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_EBT5200)
3522b1b62e8SDavid Daney ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CB5600)
3532b1b62e8SDavid Daney ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CB5601)
3542b1b62e8SDavid Daney ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CB5200)
3552b1b62e8SDavid Daney ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_GENERIC)
3562b1b62e8SDavid Daney ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_EBH5610)
357ada11a33SDavid Daney ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_LANAI2_A)
358ada11a33SDavid Daney ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_LANAI2_U)
359ada11a33SDavid Daney ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_EBB5600)
360ada11a33SDavid Daney ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_EBB6300)
361ada11a33SDavid Daney ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_NIC_XLE_10G)
362ada11a33SDavid Daney ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_LANAI2_G)
363ada11a33SDavid Daney ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_EBT5810)
364ada11a33SDavid Daney ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_NIC10E)
365ada11a33SDavid Daney ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_EP6300C)
366ada11a33SDavid Daney ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_EBB6800)
367ada11a33SDavid Daney ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_NIC4E)
368ada11a33SDavid Daney ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_NIC2E)
369ada11a33SDavid Daney ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_EBB6600)
370ada11a33SDavid Daney ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_REDWING)
371ada11a33SDavid Daney ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_NIC68_4)
372ada11a33SDavid Daney ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_NIC10E_66)
373*07bdec3cSStijn Tintel ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_SNIC10E)
37458f07778SDavid Daney ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_MAX)
37558f07778SDavid Daney
37658f07778SDavid Daney /* Customer boards listed here */
37758f07778SDavid Daney ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_DEFINED_MIN)
37858f07778SDavid Daney ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_WSX16)
37958f07778SDavid Daney ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_NS0216)
38058f07778SDavid Daney ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_NB5)
38158f07778SDavid Daney ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_WMR500)
382ada11a33SDavid Daney ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_ITB101)
383ada11a33SDavid Daney ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_NTE102)
384ada11a33SDavid Daney ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_AGS103)
385ada11a33SDavid Daney ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_GST104)
386ada11a33SDavid Daney ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_GCT105)
387ada11a33SDavid Daney ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_AGS106)
388ada11a33SDavid Daney ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_SGM107)
389ada11a33SDavid Daney ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_GCT108)
390ada11a33SDavid Daney ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_AGS109)
391ada11a33SDavid Daney ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_GCT110)
392ada11a33SDavid Daney ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_L2_AIR_SENDER)
393ada11a33SDavid Daney ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_L2_AIR_RECEIVER)
394ada11a33SDavid Daney ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_L2_ACCTON2_TX)
395ada11a33SDavid Daney ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_L2_ACCTON2_RX)
396ada11a33SDavid Daney ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_L2_WSTRNSNIC_TX)
397ada11a33SDavid Daney ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_L2_WSTRNSNIC_RX)
398ada11a33SDavid Daney ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_L2_ZINWELL)
39958f07778SDavid Daney ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_DEFINED_MAX)
40058f07778SDavid Daney
40158f07778SDavid Daney /* Customer private range */
40258f07778SDavid Daney ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_PRIVATE_MIN)
403a135a9b5SAaro Koskinen ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_UBNT_E100)
40490761ceeSMikhail Gusarov ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_UBNT_E200)
40590761ceeSMikhail Gusarov ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_UBNT_E220)
40601b985bcSAaro Koskinen ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_DSR1000N)
40768262983SAdrian Schmutzler ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_UBNT_E300)
408cef232ecSAaro Koskinen ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_KONTRON_S1901)
40958f07778SDavid Daney ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_PRIVATE_MAX)
41058f07778SDavid Daney }
4116ecffafeSAaro Koskinen return NULL;
41258f07778SDavid Daney }
41358f07778SDavid Daney
41458f07778SDavid Daney #define ENUM_CHIP_TYPE_CASE(x) \
41595339b70STianjia Zhang case x: return (&#x[15]); /* Skip CVMX_CHIP_TYPE */
cvmx_chip_type_to_string(enum cvmx_chip_types_enum type)41658f07778SDavid Daney static inline const char *cvmx_chip_type_to_string(enum
41758f07778SDavid Daney cvmx_chip_types_enum type)
41858f07778SDavid Daney {
41958f07778SDavid Daney switch (type) {
42058f07778SDavid Daney ENUM_CHIP_TYPE_CASE(CVMX_CHIP_TYPE_NULL)
42158f07778SDavid Daney ENUM_CHIP_TYPE_CASE(CVMX_CHIP_SIM_TYPE_DEPRECATED)
42258f07778SDavid Daney ENUM_CHIP_TYPE_CASE(CVMX_CHIP_TYPE_OCTEON_SAMPLE)
42358f07778SDavid Daney ENUM_CHIP_TYPE_CASE(CVMX_CHIP_TYPE_MAX)
42458f07778SDavid Daney }
42558f07778SDavid Daney return "Unsupported Chip";
42658f07778SDavid Daney }
42758f07778SDavid Daney
42858f07778SDavid Daney #endif /* __CVMX_BOOTINFO_H__ */
429