1210284Sjmallett/***********************license start*************** 2232812Sjmallett * Copyright (c) 2003-2012 Cavium Inc. (support@cavium.com). All rights 3215990Sjmallett * reserved. 4210284Sjmallett * 5210284Sjmallett * 6215990Sjmallett * Redistribution and use in source and binary forms, with or without 7215990Sjmallett * modification, are permitted provided that the following conditions are 8215990Sjmallett * met: 9210284Sjmallett * 10215990Sjmallett * * Redistributions of source code must retain the above copyright 11215990Sjmallett * notice, this list of conditions and the following disclaimer. 12210284Sjmallett * 13215990Sjmallett * * Redistributions in binary form must reproduce the above 14215990Sjmallett * copyright notice, this list of conditions and the following 15215990Sjmallett * disclaimer in the documentation and/or other materials provided 16215990Sjmallett * with the distribution. 17215990Sjmallett 18232812Sjmallett * * Neither the name of Cavium Inc. nor the names of 19215990Sjmallett * its contributors may be used to endorse or promote products 20215990Sjmallett * derived from this software without specific prior written 21215990Sjmallett * permission. 22215990Sjmallett 23215990Sjmallett * This Software, including technical data, may be subject to U.S. export control 24215990Sjmallett * laws, including the U.S. Export Administration Act and its associated 25215990Sjmallett * regulations, and may be subject to export or import regulations in other 26215990Sjmallett * countries. 27215990Sjmallett 28215990Sjmallett * TO THE MAXIMUM EXTENT PERMITTED BY LAW, THE SOFTWARE IS PROVIDED "AS IS" 29232812Sjmallett * AND WITH ALL FAULTS AND CAVIUM INC. MAKES NO PROMISES, REPRESENTATIONS OR 30215990Sjmallett * WARRANTIES, EITHER EXPRESS, IMPLIED, STATUTORY, OR OTHERWISE, WITH RESPECT TO 31215990Sjmallett * THE SOFTWARE, INCLUDING ITS CONDITION, ITS CONFORMITY TO ANY REPRESENTATION OR 32215990Sjmallett * DESCRIPTION, OR THE EXISTENCE OF ANY LATENT OR PATENT DEFECTS, AND CAVIUM 33215990Sjmallett * SPECIFICALLY DISCLAIMS ALL IMPLIED (IF ANY) WARRANTIES OF TITLE, 34215990Sjmallett * MERCHANTABILITY, NONINFRINGEMENT, FITNESS FOR A PARTICULAR PURPOSE, LACK OF 35215990Sjmallett * VIRUSES, ACCURACY OR COMPLETENESS, QUIET ENJOYMENT, QUIET POSSESSION OR 36215990Sjmallett * CORRESPONDENCE TO DESCRIPTION. THE ENTIRE RISK ARISING OUT OF USE OR 37215990Sjmallett * PERFORMANCE OF THE SOFTWARE LIES WITH YOU. 38210284Sjmallett ***********************license end**************************************/ 39210284Sjmallett 40210284Sjmallett 41210284Sjmallett 42210284Sjmallett 43210284Sjmallett 44215990Sjmallett 45210284Sjmallett/** 46210284Sjmallett * @file 47210284Sjmallett * Header file for simple executive application initialization. This defines 48210284Sjmallett * part of the ABI between the bootloader and the application. 49232812Sjmallett * <hr>$Revision: 70327 $<hr> 50210284Sjmallett * 51210284Sjmallett */ 52210284Sjmallett 53210284Sjmallett#ifndef __CVMX_APP_INIT_H__ 54210284Sjmallett#define __CVMX_APP_INIT_H__ 55210284Sjmallett 56210284Sjmallett#ifdef __cplusplus 57210284Sjmallettextern "C" { 58210284Sjmallett#endif 59210284Sjmallett 60210284Sjmallett 61210284Sjmallett/* Current major and minor versions of the CVMX bootinfo block that is passed 62210284Sjmallett** from the bootloader to the application. This is versioned so that applications 63210284Sjmallett** can properly handle multiple bootloader versions. */ 64210284Sjmallett#define CVMX_BOOTINFO_MAJ_VER 1 65232812Sjmallett#define CVMX_BOOTINFO_MIN_VER 3 66210284Sjmallett 67210284Sjmallett 68210284Sjmallett#if (CVMX_BOOTINFO_MAJ_VER == 1) 69210284Sjmallett#define CVMX_BOOTINFO_OCTEON_SERIAL_LEN 20 70210284Sjmallett/* This structure is populated by the bootloader. For binary 71210284Sjmallett** compatibility the only changes that should be made are 72210284Sjmallett** adding members to the end of the structure, and the minor 73210284Sjmallett** version should be incremented at that time. 74210284Sjmallett** If an incompatible change is made, the major version 75210284Sjmallett** must be incremented, and the minor version should be reset 76210284Sjmallett** to 0. 77210284Sjmallett*/ 78215990Sjmallettstruct cvmx_bootinfo { 79232812Sjmallett#ifdef __BIG_ENDIAN_BITFIELD 80210284Sjmallett uint32_t major_version; 81210284Sjmallett uint32_t minor_version; 82210284Sjmallett 83210284Sjmallett uint64_t stack_top; 84210284Sjmallett uint64_t heap_base; 85210284Sjmallett uint64_t heap_end; 86210284Sjmallett uint64_t desc_vaddr; 87210284Sjmallett 88210284Sjmallett uint32_t exception_base_addr; 89210284Sjmallett uint32_t stack_size; 90210284Sjmallett uint32_t flags; 91210284Sjmallett uint32_t core_mask; 92210284Sjmallett uint32_t dram_size; /**< DRAM size in megabytes */ 93210284Sjmallett uint32_t phy_mem_desc_addr; /**< physical address of free memory descriptor block*/ 94210284Sjmallett uint32_t debugger_flags_base_addr; /**< used to pass flags from app to debugger */ 95210284Sjmallett uint32_t eclock_hz; /**< CPU clock speed, in hz */ 96210284Sjmallett uint32_t dclock_hz; /**< DRAM clock speed, in hz */ 97210284Sjmallett uint32_t reserved0; 98210284Sjmallett uint16_t board_type; 99210284Sjmallett uint8_t board_rev_major; 100210284Sjmallett uint8_t board_rev_minor; 101210284Sjmallett uint16_t reserved1; 102210284Sjmallett uint8_t reserved2; 103210284Sjmallett uint8_t reserved3; 104210284Sjmallett char board_serial_number[CVMX_BOOTINFO_OCTEON_SERIAL_LEN]; 105210284Sjmallett uint8_t mac_addr_base[6]; 106210284Sjmallett uint8_t mac_addr_count; 107210284Sjmallett#if (CVMX_BOOTINFO_MIN_VER >= 1) 108210284Sjmallett /* Several boards support compact flash on the Octeon boot bus. The CF 109210284Sjmallett ** memory spaces may be mapped to different addresses on different boards. 110210284Sjmallett ** These are the physical addresses, so care must be taken to use the correct 111210284Sjmallett ** XKPHYS/KSEG0 addressing depending on the application's ABI. 112210284Sjmallett ** These values will be 0 if CF is not present */ 113210284Sjmallett uint64_t compact_flash_common_base_addr; 114210284Sjmallett uint64_t compact_flash_attribute_base_addr; 115210284Sjmallett /* Base address of the LED display (as on EBT3000 board) 116210284Sjmallett ** This will be 0 if LED display not present. */ 117210284Sjmallett uint64_t led_display_base_addr; 118210284Sjmallett#endif 119210284Sjmallett#if (CVMX_BOOTINFO_MIN_VER >= 2) 120210284Sjmallett uint32_t dfa_ref_clock_hz; /**< DFA reference clock in hz (if applicable)*/ 121210284Sjmallett uint32_t config_flags; /**< flags indicating various configuration options. These flags supercede 122210284Sjmallett ** the 'flags' variable and should be used instead if available */ 123250428Simp#if defined(OCTEON_VENDOR_GEFES) 124250428Simp uint32_t dfm_size; /**< DFA Size */ 125210284Sjmallett#endif 126250428Simp#endif 127232812Sjmallett#if (CVMX_BOOTINFO_MIN_VER >= 3) 128232812Sjmallett uint64_t fdt_addr; /**< Address of the OF Flattened Device Tree structure describing the board. */ 129232812Sjmallett#endif 130232812Sjmallett#else /* __BIG_ENDIAN */ 131232812Sjmallett /* 132232812Sjmallett * Little-Endian: When the CPU mode is switched to 133232812Sjmallett * little-endian, the view of the structure has some of the 134232812Sjmallett * fields swapped. 135232812Sjmallett */ 136232812Sjmallett uint32_t minor_version; 137232812Sjmallett uint32_t major_version; 138210284Sjmallett 139232812Sjmallett uint64_t stack_top; 140232812Sjmallett uint64_t heap_base; 141232812Sjmallett uint64_t heap_end; 142232812Sjmallett uint64_t desc_vaddr; 143210284Sjmallett 144232812Sjmallett uint32_t stack_size; 145232812Sjmallett uint32_t exception_base_addr; 146232812Sjmallett 147232812Sjmallett uint32_t core_mask; 148232812Sjmallett uint32_t flags; 149232812Sjmallett 150232812Sjmallett uint32_t phy_mem_desc_addr; 151232812Sjmallett uint32_t dram_size; 152232812Sjmallett 153232812Sjmallett uint32_t eclock_hz; 154232812Sjmallett uint32_t debugger_flags_base_addr; 155232812Sjmallett 156232812Sjmallett uint32_t reserved0; 157232812Sjmallett uint32_t dclock_hz; 158232812Sjmallett 159232812Sjmallett uint8_t reserved3; 160232812Sjmallett uint8_t reserved2; 161232812Sjmallett uint16_t reserved1; 162232812Sjmallett uint8_t board_rev_minor; 163232812Sjmallett uint8_t board_rev_major; 164232812Sjmallett uint16_t board_type; 165232812Sjmallett 166232812Sjmallett union cvmx_bootinfo_scramble { 167232812Sjmallett /* Must byteswap these four words so that...*/ 168232812Sjmallett uint64_t s[4]; 169232812Sjmallett /* ... this strucure has the proper data arrangement. */ 170232812Sjmallett struct { 171232812Sjmallett char board_serial_number[CVMX_BOOTINFO_OCTEON_SERIAL_LEN]; 172232812Sjmallett uint8_t mac_addr_base[6]; 173232812Sjmallett uint8_t mac_addr_count; 174232812Sjmallett uint8_t pad[5]; 175232812Sjmallett } le; 176232812Sjmallett } scramble1; 177232812Sjmallett 178232812Sjmallett#if (CVMX_BOOTINFO_MIN_VER >= 1) 179232812Sjmallett uint64_t compact_flash_common_base_addr; 180232812Sjmallett uint64_t compact_flash_attribute_base_addr; 181232812Sjmallett uint64_t led_display_base_addr; 182232812Sjmallett#endif 183232812Sjmallett#if (CVMX_BOOTINFO_MIN_VER >= 2) 184232812Sjmallett uint32_t config_flags; 185232812Sjmallett uint32_t dfa_ref_clock_hz; 186232812Sjmallett#endif 187232812Sjmallett#if (CVMX_BOOTINFO_MIN_VER >= 3) 188232812Sjmallett uint64_t fdt_addr; 189232812Sjmallett#endif 190232812Sjmallett#endif 191215990Sjmallett}; 192210284Sjmallett 193215990Sjmalletttypedef struct cvmx_bootinfo cvmx_bootinfo_t; 194215990Sjmallett 195210284Sjmallett#define CVMX_BOOTINFO_CFG_FLAG_PCI_HOST (1ull << 0) 196210284Sjmallett#define CVMX_BOOTINFO_CFG_FLAG_PCI_TARGET (1ull << 1) 197210284Sjmallett#define CVMX_BOOTINFO_CFG_FLAG_DEBUG (1ull << 2) 198210284Sjmallett#define CVMX_BOOTINFO_CFG_FLAG_NO_MAGIC (1ull << 3) 199210284Sjmallett/* This flag is set if the TLB mappings are not contained in the 200210284Sjmallett** 0x10000000 - 0x20000000 boot bus region. */ 201210284Sjmallett#define CVMX_BOOTINFO_CFG_FLAG_OVERSIZE_TLB_MAPPING (1ull << 4) 202210284Sjmallett#define CVMX_BOOTINFO_CFG_FLAG_BREAK (1ull << 5) 203210284Sjmallett 204210284Sjmallett#endif /* (CVMX_BOOTINFO_MAJ_VER == 1) */ 205210284Sjmallett 206210284Sjmallett 207210284Sjmallett/* Type defines for board and chip types */ 208210284Sjmallettenum cvmx_board_types_enum { 209210284Sjmallett CVMX_BOARD_TYPE_NULL = 0, 210210284Sjmallett CVMX_BOARD_TYPE_SIM = 1, 211210284Sjmallett CVMX_BOARD_TYPE_EBT3000 = 2, 212210284Sjmallett CVMX_BOARD_TYPE_KODAMA = 3, 213210284Sjmallett CVMX_BOARD_TYPE_NIAGARA = 4, /* Obsolete, no longer supported */ 214232812Sjmallett CVMX_BOARD_TYPE_NAC38 = 5, /* Obsolete, no longer supported */ 215210284Sjmallett CVMX_BOARD_TYPE_THUNDER = 6, 216210284Sjmallett CVMX_BOARD_TYPE_TRANTOR = 7, /* Obsolete, no longer supported */ 217210284Sjmallett CVMX_BOARD_TYPE_EBH3000 = 8, 218210284Sjmallett CVMX_BOARD_TYPE_EBH3100 = 9, 219210284Sjmallett CVMX_BOARD_TYPE_HIKARI = 10, 220210284Sjmallett CVMX_BOARD_TYPE_CN3010_EVB_HS5 = 11, 221210284Sjmallett CVMX_BOARD_TYPE_CN3005_EVB_HS5 = 12, 222250428Simp#if defined(OCTEON_VENDOR_GEFES) 223250428Simp CVMX_BOARD_TYPE_TNPA3804 = 13, 224250428Simp CVMX_BOARD_TYPE_AT5810 = 14, 225250428Simp CVMX_BOARD_TYPE_WNPA3850 = 15, 226250428Simp CVMX_BOARD_TYPE_W3860 = 16, 227250428Simp#else 228210284Sjmallett CVMX_BOARD_TYPE_KBP = 13, 229210284Sjmallett CVMX_BOARD_TYPE_CN3020_EVB_HS5 = 14, /* Deprecated, CVMX_BOARD_TYPE_CN3010_EVB_HS5 supports the CN3020 */ 230210284Sjmallett CVMX_BOARD_TYPE_EBT5800 = 15, 231210284Sjmallett CVMX_BOARD_TYPE_NICPRO2 = 16, 232250428Simp#endif 233210284Sjmallett CVMX_BOARD_TYPE_EBH5600 = 17, 234210284Sjmallett CVMX_BOARD_TYPE_EBH5601 = 18, 235210284Sjmallett CVMX_BOARD_TYPE_EBH5200 = 19, 236210284Sjmallett CVMX_BOARD_TYPE_BBGW_REF = 20, 237210284Sjmallett CVMX_BOARD_TYPE_NIC_XLE_4G = 21, 238210284Sjmallett CVMX_BOARD_TYPE_EBT5600 = 22, 239210284Sjmallett CVMX_BOARD_TYPE_EBH5201 = 23, 240210284Sjmallett CVMX_BOARD_TYPE_EBT5200 = 24, 241210284Sjmallett CVMX_BOARD_TYPE_CB5600 = 25, 242210284Sjmallett CVMX_BOARD_TYPE_CB5601 = 26, 243210284Sjmallett CVMX_BOARD_TYPE_CB5200 = 27, 244210284Sjmallett CVMX_BOARD_TYPE_GENERIC = 28, /* Special 'generic' board type, supports many boards */ 245215990Sjmallett CVMX_BOARD_TYPE_EBH5610 = 29, 246215990Sjmallett CVMX_BOARD_TYPE_LANAI2_A = 30, 247215990Sjmallett CVMX_BOARD_TYPE_LANAI2_U = 31, 248215990Sjmallett CVMX_BOARD_TYPE_EBB5600 = 32, 249215990Sjmallett CVMX_BOARD_TYPE_EBB6300 = 33, 250215990Sjmallett CVMX_BOARD_TYPE_NIC_XLE_10G = 34, 251215990Sjmallett CVMX_BOARD_TYPE_LANAI2_G = 35, 252215990Sjmallett CVMX_BOARD_TYPE_EBT5810 = 36, 253215990Sjmallett CVMX_BOARD_TYPE_NIC10E = 37, 254232812Sjmallett CVMX_BOARD_TYPE_EP6300C = 38, 255232812Sjmallett CVMX_BOARD_TYPE_EBB6800 = 39, 256232812Sjmallett CVMX_BOARD_TYPE_NIC4E = 40, 257232812Sjmallett CVMX_BOARD_TYPE_NIC2E = 41, 258232812Sjmallett CVMX_BOARD_TYPE_EBB6600 = 42, 259232812Sjmallett CVMX_BOARD_TYPE_REDWING = 43, 260232812Sjmallett CVMX_BOARD_TYPE_NIC68_4 = 44, 261232812Sjmallett CVMX_BOARD_TYPE_NIC10E_66 = 45, 262232812Sjmallett CVMX_BOARD_TYPE_EBB6100 = 46, 263232812Sjmallett CVMX_BOARD_TYPE_EVB7100 = 47, 264210284Sjmallett CVMX_BOARD_TYPE_MAX, 265232812Sjmallett /* NOTE: 256-257 are being used by a customer. */ 266210284Sjmallett 267210284Sjmallett /* The range from CVMX_BOARD_TYPE_MAX to CVMX_BOARD_TYPE_CUST_DEFINED_MIN is reserved 268210284Sjmallett ** for future SDK use. */ 269210284Sjmallett 270210284Sjmallett /* Set aside a range for customer boards. These numbers are managed 271210284Sjmallett ** by Cavium. 272210284Sjmallett */ 273210284Sjmallett CVMX_BOARD_TYPE_CUST_DEFINED_MIN = 10000, 274210284Sjmallett CVMX_BOARD_TYPE_CUST_WSX16 = 10001, 275210284Sjmallett CVMX_BOARD_TYPE_CUST_NS0216 = 10002, 276210284Sjmallett CVMX_BOARD_TYPE_CUST_NB5 = 10003, 277210284Sjmallett CVMX_BOARD_TYPE_CUST_WMR500 = 10004, 278210284Sjmallett CVMX_BOARD_TYPE_CUST_ITB101 = 10005, 279210284Sjmallett CVMX_BOARD_TYPE_CUST_NTE102 = 10006, 280210284Sjmallett CVMX_BOARD_TYPE_CUST_AGS103 = 10007, 281212844Sjmallett#if !defined(OCTEON_VENDOR_LANNER) 282210284Sjmallett CVMX_BOARD_TYPE_CUST_GST104 = 10008, 283212844Sjmallett#else 284212844Sjmallett CVMX_BOARD_TYPE_CUST_LANNER_MR955= 10008, 285212844Sjmallett#endif 286210284Sjmallett CVMX_BOARD_TYPE_CUST_GCT105 = 10009, 287210284Sjmallett CVMX_BOARD_TYPE_CUST_AGS106 = 10010, 288210284Sjmallett CVMX_BOARD_TYPE_CUST_SGM107 = 10011, 289210284Sjmallett CVMX_BOARD_TYPE_CUST_GCT108 = 10012, 290210284Sjmallett CVMX_BOARD_TYPE_CUST_AGS109 = 10013, 291210284Sjmallett CVMX_BOARD_TYPE_CUST_GCT110 = 10014, 292215990Sjmallett CVMX_BOARD_TYPE_CUST_L2_AIR_SENDER = 10015, 293215990Sjmallett CVMX_BOARD_TYPE_CUST_L2_AIR_RECEIVER= 10016, 294215990Sjmallett CVMX_BOARD_TYPE_CUST_L2_ACCTON2_TX = 10017, 295215990Sjmallett CVMX_BOARD_TYPE_CUST_L2_ACCTON2_RX = 10018, 296215990Sjmallett CVMX_BOARD_TYPE_CUST_L2_WSTRNSNIC_TX= 10019, 297215990Sjmallett CVMX_BOARD_TYPE_CUST_L2_WSTRNSNIC_RX= 10020, 298215014Sjmallett#if defined(OCTEON_VENDOR_LANNER) 299215990Sjmallett CVMX_BOARD_TYPE_CUST_LANNER_MR730 = 10021, 300215990Sjmallett#else 301215990Sjmallett CVMX_BOARD_TYPE_CUST_L2_ZINWELL = 10021, 302215014Sjmallett#endif 303210284Sjmallett CVMX_BOARD_TYPE_CUST_DEFINED_MAX = 20000, 304210284Sjmallett 305210284Sjmallett /* Set aside a range for customer private use. The SDK won't 306210284Sjmallett ** use any numbers in this range. */ 307210284Sjmallett CVMX_BOARD_TYPE_CUST_PRIVATE_MIN = 20001, 308210311Sjmallett#if defined(OCTEON_VENDOR_LANNER) 309210311Sjmallett CVMX_BOARD_TYPE_CUST_LANNER_MR320= 20002, 310216476Sjmallett CVMX_BOARD_TYPE_CUST_LANNER_MR321X=20007, 311210311Sjmallett#endif 312244984Sjmallett#if defined(OCTEON_VENDOR_UBIQUITI) 313244984Sjmallett CVMX_BOARD_TYPE_CUST_UBIQUITI_E100=20002, 314244984Sjmallett#endif 315242104Sjmallett#if defined(OCTEON_VENDOR_RADISYS) 316242104Sjmallett CVMX_BOARD_TYPE_CUST_RADISYS_RSYS4GBE=20002, 317242104Sjmallett#endif 318250428Simp#if defined(OCTEON_VENDOR_GEFES) 319250428Simp CVMX_BOARD_TYPE_CUST_TNPA5804 = 20005, 320250428Simp CVMX_BOARD_TYPE_CUST_W5434 = 20006, 321250428Simp CVMX_BOARD_TYPE_CUST_W5650 = 20007, 322250428Simp CVMX_BOARD_TYPE_CUST_W5800 = 20008, 323250428Simp CVMX_BOARD_TYPE_CUST_W5651X = 20009, 324250428Simp CVMX_BOARD_TYPE_CUST_TNPA5651X = 20010, 325250428Simp CVMX_BOARD_TYPE_CUST_TNPA56X4 = 20011, 326250428Simp CVMX_BOARD_TYPE_CUST_W63XX = 20013, 327250428Simp#endif 328210284Sjmallett CVMX_BOARD_TYPE_CUST_PRIVATE_MAX = 30000, 329210284Sjmallett 330215990Sjmallett 331215990Sjmallett /* Range for IO modules */ 332215990Sjmallett CVMX_BOARD_TYPE_MODULE_MIN = 30001, 333215990Sjmallett CVMX_BOARD_TYPE_MODULE_PCIE_RC_4X = 30002, 334215990Sjmallett CVMX_BOARD_TYPE_MODULE_PCIE_EP_4X = 30003, 335215990Sjmallett CVMX_BOARD_TYPE_MODULE_SGMII_MARVEL = 30004, 336215990Sjmallett CVMX_BOARD_TYPE_MODULE_SFPPLUS_BCM = 30005, 337215990Sjmallett CVMX_BOARD_TYPE_MODULE_SRIO = 30006, 338215990Sjmallett CVMX_BOARD_TYPE_MODULE_EBB5600_QLM0 = 30007, 339215990Sjmallett CVMX_BOARD_TYPE_MODULE_EBB5600_QLM1 = 30008, 340215990Sjmallett CVMX_BOARD_TYPE_MODULE_EBB5600_QLM2 = 30009, 341215990Sjmallett CVMX_BOARD_TYPE_MODULE_EBB5600_QLM3 = 30010, 342232812Sjmallett CVMX_BOARD_TYPE_MODULE_MAX = 31000 343215990Sjmallett 344210284Sjmallett /* The remaining range is reserved for future use. */ 345210284Sjmallett}; 346210284Sjmallettenum cvmx_chip_types_enum { 347210284Sjmallett CVMX_CHIP_TYPE_NULL = 0, 348210284Sjmallett CVMX_CHIP_SIM_TYPE_DEPRECATED = 1, 349210284Sjmallett CVMX_CHIP_TYPE_OCTEON_SAMPLE = 2, 350232812Sjmallett CVMX_CHIP_TYPE_MAX 351210284Sjmallett}; 352210284Sjmallett 353210284Sjmallett/* Compatability alias for NAC38 name change, planned to be removed from SDK 1.7 */ 354210284Sjmallett#define CVMX_BOARD_TYPE_NAO38 CVMX_BOARD_TYPE_NAC38 355210284Sjmallett 356210284Sjmallett/* Functions to return string based on type */ 357210284Sjmallett#define ENUM_BRD_TYPE_CASE(x) case x: return(#x + 16); /* Skip CVMX_BOARD_TYPE_ */ 358210284Sjmallettstatic inline const char *cvmx_board_type_to_string(enum cvmx_board_types_enum type) 359210284Sjmallett{ 360210284Sjmallett switch (type) 361210284Sjmallett { 362210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_NULL) 363210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_SIM) 364210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_EBT3000) 365210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_KODAMA) 366210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_NIAGARA) 367210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_NAC38) 368210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_THUNDER) 369210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_TRANTOR) 370210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_EBH3000) 371210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_EBH3100) 372210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_HIKARI) 373210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CN3010_EVB_HS5) 374210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CN3005_EVB_HS5) 375250428Simp#if defined(OCTEON_VENDOR_GEFES) 376250428Simp ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_TNPA3804) 377250428Simp ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_AT5810) 378250428Simp ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_WNPA3850) 379250428Simp ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_W3860) 380250428Simp#else 381210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_KBP) 382210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CN3020_EVB_HS5) 383210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_EBT5800) 384210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_NICPRO2) 385250428Simp#endif 386210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_EBH5600) 387210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_EBH5601) 388210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_EBH5200) 389210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_BBGW_REF) 390210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_NIC_XLE_4G) 391210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_EBT5600) 392210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_EBH5201) 393210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_EBT5200) 394210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CB5600) 395210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CB5601) 396210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CB5200) 397210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_GENERIC) 398215990Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_EBH5610) 399215990Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_LANAI2_A) 400215990Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_LANAI2_U) 401215990Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_EBB5600) 402215990Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_EBB6300) 403215990Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_NIC_XLE_10G) 404215990Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_LANAI2_G) 405215990Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_EBT5810) 406215990Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_NIC10E) 407232812Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_EP6300C) 408232812Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_EBB6800) 409232812Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_NIC4E) 410232812Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_NIC2E) 411232812Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_EBB6600) 412232812Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_REDWING) 413232812Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_NIC68_4) 414232812Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_NIC10E_66) 415232812Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_EBB6100) 416232812Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_EVB7100) 417210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_MAX) 418210284Sjmallett 419210284Sjmallett /* Customer boards listed here */ 420210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_DEFINED_MIN) 421210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_WSX16) 422210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_NS0216) 423210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_NB5) 424210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_WMR500) 425210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_ITB101) 426210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_NTE102) 427210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_AGS103) 428212844Sjmallett#if !defined(OCTEON_VENDOR_LANNER) 429210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_GST104) 430212844Sjmallett#else 431212844Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_LANNER_MR955) 432212844Sjmallett#endif 433210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_GCT105) 434210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_AGS106) 435210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_SGM107) 436210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_GCT108) 437210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_AGS109) 438210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_GCT110) 439215990Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_L2_AIR_SENDER) 440215990Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_L2_AIR_RECEIVER) 441215990Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_L2_ACCTON2_TX) 442215990Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_L2_ACCTON2_RX) 443215990Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_L2_WSTRNSNIC_TX) 444215990Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_L2_WSTRNSNIC_RX) 445215014Sjmallett#if defined(OCTEON_VENDOR_LANNER) 446215014Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_LANNER_MR730) 447215990Sjmallett#else 448215990Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_L2_ZINWELL) 449215014Sjmallett#endif 450210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_DEFINED_MAX) 451210284Sjmallett 452210284Sjmallett /* Customer private range */ 453210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_PRIVATE_MIN) 454210311Sjmallett#if defined(OCTEON_VENDOR_LANNER) 455210311Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_LANNER_MR320) 456216476Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_LANNER_MR321X) 457210311Sjmallett#endif 458244984Sjmallett#if defined(OCTEON_VENDOR_UBIQUITI) 459244984Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_UBIQUITI_E100) 460244984Sjmallett#endif 461242104Sjmallett#if defined(OCTEON_VENDOR_RADISYS) 462242104Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_RADISYS_RSYS4GBE) 463242104Sjmallett#endif 464250428Simp#if defined(OCTEON_VENDOR_GEFES) 465250428Simp ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_TNPA5804) 466250428Simp ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_W5434) 467250428Simp ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_W5650) 468250428Simp ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_W5800) 469250428Simp ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_W5651X) 470250428Simp ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_TNPA5651X) 471250428Simp ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_TNPA56X4) 472250428Simp ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_W63XX) 473250428Simp#endif 474210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_PRIVATE_MAX) 475215990Sjmallett 476215990Sjmallett /* Module range */ 477215990Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_MODULE_MIN) 478215990Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_MODULE_PCIE_RC_4X) 479215990Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_MODULE_PCIE_EP_4X) 480215990Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_MODULE_SGMII_MARVEL) 481215990Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_MODULE_SFPPLUS_BCM) 482215990Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_MODULE_SRIO) 483215990Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_MODULE_EBB5600_QLM0) 484215990Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_MODULE_EBB5600_QLM1) 485215990Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_MODULE_EBB5600_QLM2) 486215990Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_MODULE_EBB5600_QLM3) 487215990Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_MODULE_MAX) 488210284Sjmallett } 489210284Sjmallett return "Unsupported Board"; 490210284Sjmallett} 491210284Sjmallett 492210284Sjmallett#define ENUM_CHIP_TYPE_CASE(x) case x: return(#x + 15); /* Skip CVMX_CHIP_TYPE */ 493210284Sjmallettstatic inline const char *cvmx_chip_type_to_string(enum cvmx_chip_types_enum type) 494210284Sjmallett{ 495210284Sjmallett switch (type) 496210284Sjmallett { 497210284Sjmallett ENUM_CHIP_TYPE_CASE(CVMX_CHIP_TYPE_NULL) 498210284Sjmallett ENUM_CHIP_TYPE_CASE(CVMX_CHIP_SIM_TYPE_DEPRECATED) 499210284Sjmallett ENUM_CHIP_TYPE_CASE(CVMX_CHIP_TYPE_OCTEON_SAMPLE) 500210284Sjmallett ENUM_CHIP_TYPE_CASE(CVMX_CHIP_TYPE_MAX) 501210284Sjmallett } 502210284Sjmallett return "Unsupported Chip"; 503210284Sjmallett} 504210284Sjmallett 505210284Sjmallett 506210284Sjmallettextern int cvmx_debug_uart; 507210284Sjmallett 508210284Sjmallett 509210284Sjmallett 510210284Sjmallett#ifdef __cplusplus 511210284Sjmallett} 512210284Sjmallett#endif 513210284Sjmallett 514210284Sjmallett#endif /* __CVMX_APP_INIT_H__ */ 515