1210284Sjmallett/***********************license start*************** 2215990Sjmallett * Copyright (c) 2003-2010 Cavium Networks (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 18215990Sjmallett * * Neither the name of Cavium Networks 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" 29215990Sjmallett * AND WITH ALL FAULTS AND CAVIUM NETWORKS 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. 49215990Sjmallett * <hr>$Revision: 52004 $<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 65210284Sjmallett#define CVMX_BOOTINFO_MIN_VER 2 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 { 79210284Sjmallett uint32_t major_version; 80210284Sjmallett uint32_t minor_version; 81210284Sjmallett 82210284Sjmallett uint64_t stack_top; 83210284Sjmallett uint64_t heap_base; 84210284Sjmallett uint64_t heap_end; 85210284Sjmallett uint64_t desc_vaddr; 86210284Sjmallett 87210284Sjmallett uint32_t exception_base_addr; 88210284Sjmallett uint32_t stack_size; 89210284Sjmallett uint32_t flags; 90210284Sjmallett uint32_t core_mask; 91210284Sjmallett uint32_t dram_size; /**< DRAM size in megabytes */ 92210284Sjmallett uint32_t phy_mem_desc_addr; /**< physical address of free memory descriptor block*/ 93210284Sjmallett uint32_t debugger_flags_base_addr; /**< used to pass flags from app to debugger */ 94210284Sjmallett uint32_t eclock_hz; /**< CPU clock speed, in hz */ 95210284Sjmallett uint32_t dclock_hz; /**< DRAM clock speed, in hz */ 96210284Sjmallett uint32_t reserved0; 97210284Sjmallett uint16_t board_type; 98210284Sjmallett uint8_t board_rev_major; 99210284Sjmallett uint8_t board_rev_minor; 100210284Sjmallett uint16_t reserved1; 101210284Sjmallett uint8_t reserved2; 102210284Sjmallett uint8_t reserved3; 103210284Sjmallett char board_serial_number[CVMX_BOOTINFO_OCTEON_SERIAL_LEN]; 104210284Sjmallett uint8_t mac_addr_base[6]; 105210284Sjmallett uint8_t mac_addr_count; 106210284Sjmallett#if (CVMX_BOOTINFO_MIN_VER >= 1) 107210284Sjmallett /* Several boards support compact flash on the Octeon boot bus. The CF 108210284Sjmallett ** memory spaces may be mapped to different addresses on different boards. 109210284Sjmallett ** These are the physical addresses, so care must be taken to use the correct 110210284Sjmallett ** XKPHYS/KSEG0 addressing depending on the application's ABI. 111210284Sjmallett ** These values will be 0 if CF is not present */ 112210284Sjmallett uint64_t compact_flash_common_base_addr; 113210284Sjmallett uint64_t compact_flash_attribute_base_addr; 114210284Sjmallett /* Base address of the LED display (as on EBT3000 board) 115210284Sjmallett ** This will be 0 if LED display not present. */ 116210284Sjmallett uint64_t led_display_base_addr; 117210284Sjmallett#endif 118210284Sjmallett#if (CVMX_BOOTINFO_MIN_VER >= 2) 119210284Sjmallett uint32_t dfa_ref_clock_hz; /**< DFA reference clock in hz (if applicable)*/ 120210284Sjmallett uint32_t config_flags; /**< flags indicating various configuration options. These flags supercede 121210284Sjmallett ** the 'flags' variable and should be used instead if available */ 122210284Sjmallett#endif 123210284Sjmallett 124210284Sjmallett 125215990Sjmallett}; 126210284Sjmallett 127215990Sjmalletttypedef struct cvmx_bootinfo cvmx_bootinfo_t; 128215990Sjmallett 129210284Sjmallett#define CVMX_BOOTINFO_CFG_FLAG_PCI_HOST (1ull << 0) 130210284Sjmallett#define CVMX_BOOTINFO_CFG_FLAG_PCI_TARGET (1ull << 1) 131210284Sjmallett#define CVMX_BOOTINFO_CFG_FLAG_DEBUG (1ull << 2) 132210284Sjmallett#define CVMX_BOOTINFO_CFG_FLAG_NO_MAGIC (1ull << 3) 133210284Sjmallett/* This flag is set if the TLB mappings are not contained in the 134210284Sjmallett** 0x10000000 - 0x20000000 boot bus region. */ 135210284Sjmallett#define CVMX_BOOTINFO_CFG_FLAG_OVERSIZE_TLB_MAPPING (1ull << 4) 136210284Sjmallett#define CVMX_BOOTINFO_CFG_FLAG_BREAK (1ull << 5) 137210284Sjmallett 138210284Sjmallett#endif /* (CVMX_BOOTINFO_MAJ_VER == 1) */ 139210284Sjmallett 140210284Sjmallett 141210284Sjmallett/* Type defines for board and chip types */ 142210284Sjmallettenum cvmx_board_types_enum { 143210284Sjmallett CVMX_BOARD_TYPE_NULL = 0, 144210284Sjmallett CVMX_BOARD_TYPE_SIM = 1, 145210284Sjmallett CVMX_BOARD_TYPE_EBT3000 = 2, 146210284Sjmallett CVMX_BOARD_TYPE_KODAMA = 3, 147210284Sjmallett CVMX_BOARD_TYPE_NIAGARA = 4, /* Obsolete, no longer supported */ 148210284Sjmallett CVMX_BOARD_TYPE_NAC38 = 5, /* formerly NAO38 */ 149210284Sjmallett CVMX_BOARD_TYPE_THUNDER = 6, 150210284Sjmallett CVMX_BOARD_TYPE_TRANTOR = 7, /* Obsolete, no longer supported */ 151210284Sjmallett CVMX_BOARD_TYPE_EBH3000 = 8, 152210284Sjmallett CVMX_BOARD_TYPE_EBH3100 = 9, 153210284Sjmallett CVMX_BOARD_TYPE_HIKARI = 10, 154210284Sjmallett CVMX_BOARD_TYPE_CN3010_EVB_HS5 = 11, 155210284Sjmallett CVMX_BOARD_TYPE_CN3005_EVB_HS5 = 12, 156210284Sjmallett CVMX_BOARD_TYPE_KBP = 13, 157210284Sjmallett CVMX_BOARD_TYPE_CN3020_EVB_HS5 = 14, /* Deprecated, CVMX_BOARD_TYPE_CN3010_EVB_HS5 supports the CN3020 */ 158210284Sjmallett CVMX_BOARD_TYPE_EBT5800 = 15, 159210284Sjmallett CVMX_BOARD_TYPE_NICPRO2 = 16, 160210284Sjmallett CVMX_BOARD_TYPE_EBH5600 = 17, 161210284Sjmallett CVMX_BOARD_TYPE_EBH5601 = 18, 162210284Sjmallett CVMX_BOARD_TYPE_EBH5200 = 19, 163210284Sjmallett CVMX_BOARD_TYPE_BBGW_REF = 20, 164210284Sjmallett CVMX_BOARD_TYPE_NIC_XLE_4G = 21, 165210284Sjmallett CVMX_BOARD_TYPE_EBT5600 = 22, 166210284Sjmallett CVMX_BOARD_TYPE_EBH5201 = 23, 167210284Sjmallett CVMX_BOARD_TYPE_EBT5200 = 24, 168210284Sjmallett CVMX_BOARD_TYPE_CB5600 = 25, 169210284Sjmallett CVMX_BOARD_TYPE_CB5601 = 26, 170210284Sjmallett CVMX_BOARD_TYPE_CB5200 = 27, 171210284Sjmallett CVMX_BOARD_TYPE_GENERIC = 28, /* Special 'generic' board type, supports many boards */ 172215990Sjmallett CVMX_BOARD_TYPE_EBH5610 = 29, 173215990Sjmallett CVMX_BOARD_TYPE_LANAI2_A = 30, 174215990Sjmallett CVMX_BOARD_TYPE_LANAI2_U = 31, 175215990Sjmallett CVMX_BOARD_TYPE_EBB5600 = 32, 176215990Sjmallett CVMX_BOARD_TYPE_EBB6300 = 33, 177215990Sjmallett CVMX_BOARD_TYPE_NIC_XLE_10G = 34, 178215990Sjmallett CVMX_BOARD_TYPE_LANAI2_G = 35, 179215990Sjmallett CVMX_BOARD_TYPE_EBT5810 = 36, 180215990Sjmallett CVMX_BOARD_TYPE_NIC10E = 37, 181210284Sjmallett CVMX_BOARD_TYPE_MAX, 182210284Sjmallett 183210284Sjmallett /* The range from CVMX_BOARD_TYPE_MAX to CVMX_BOARD_TYPE_CUST_DEFINED_MIN is reserved 184210284Sjmallett ** for future SDK use. */ 185210284Sjmallett 186210284Sjmallett /* Set aside a range for customer boards. These numbers are managed 187210284Sjmallett ** by Cavium. 188210284Sjmallett */ 189210284Sjmallett CVMX_BOARD_TYPE_CUST_DEFINED_MIN = 10000, 190210284Sjmallett CVMX_BOARD_TYPE_CUST_WSX16 = 10001, 191210284Sjmallett CVMX_BOARD_TYPE_CUST_NS0216 = 10002, 192210284Sjmallett CVMX_BOARD_TYPE_CUST_NB5 = 10003, 193210284Sjmallett CVMX_BOARD_TYPE_CUST_WMR500 = 10004, 194210284Sjmallett CVMX_BOARD_TYPE_CUST_ITB101 = 10005, 195210284Sjmallett CVMX_BOARD_TYPE_CUST_NTE102 = 10006, 196210284Sjmallett CVMX_BOARD_TYPE_CUST_AGS103 = 10007, 197212844Sjmallett#if !defined(OCTEON_VENDOR_LANNER) 198210284Sjmallett CVMX_BOARD_TYPE_CUST_GST104 = 10008, 199212844Sjmallett#else 200212844Sjmallett CVMX_BOARD_TYPE_CUST_LANNER_MR955= 10008, 201212844Sjmallett#endif 202210284Sjmallett CVMX_BOARD_TYPE_CUST_GCT105 = 10009, 203210284Sjmallett CVMX_BOARD_TYPE_CUST_AGS106 = 10010, 204210284Sjmallett CVMX_BOARD_TYPE_CUST_SGM107 = 10011, 205210284Sjmallett CVMX_BOARD_TYPE_CUST_GCT108 = 10012, 206210284Sjmallett CVMX_BOARD_TYPE_CUST_AGS109 = 10013, 207210284Sjmallett CVMX_BOARD_TYPE_CUST_GCT110 = 10014, 208215990Sjmallett CVMX_BOARD_TYPE_CUST_L2_AIR_SENDER = 10015, 209215990Sjmallett CVMX_BOARD_TYPE_CUST_L2_AIR_RECEIVER= 10016, 210215990Sjmallett CVMX_BOARD_TYPE_CUST_L2_ACCTON2_TX = 10017, 211215990Sjmallett CVMX_BOARD_TYPE_CUST_L2_ACCTON2_RX = 10018, 212215990Sjmallett CVMX_BOARD_TYPE_CUST_L2_WSTRNSNIC_TX= 10019, 213215990Sjmallett CVMX_BOARD_TYPE_CUST_L2_WSTRNSNIC_RX= 10020, 214215014Sjmallett#if defined(OCTEON_VENDOR_LANNER) 215215990Sjmallett CVMX_BOARD_TYPE_CUST_LANNER_MR730 = 10021, 216215990Sjmallett#else 217215990Sjmallett CVMX_BOARD_TYPE_CUST_L2_ZINWELL = 10021, 218215014Sjmallett#endif 219210284Sjmallett CVMX_BOARD_TYPE_CUST_DEFINED_MAX = 20000, 220210284Sjmallett 221210284Sjmallett /* Set aside a range for customer private use. The SDK won't 222210284Sjmallett ** use any numbers in this range. */ 223210284Sjmallett CVMX_BOARD_TYPE_CUST_PRIVATE_MIN = 20001, 224210311Sjmallett#if defined(OCTEON_VENDOR_LANNER) 225210311Sjmallett CVMX_BOARD_TYPE_CUST_LANNER_MR320= 20002, 226216476Sjmallett CVMX_BOARD_TYPE_CUST_LANNER_MR321X=20007, 227210311Sjmallett#endif 228210284Sjmallett CVMX_BOARD_TYPE_CUST_PRIVATE_MAX = 30000, 229210284Sjmallett 230215990Sjmallett 231215990Sjmallett /* Range for IO modules */ 232215990Sjmallett CVMX_BOARD_TYPE_MODULE_MIN = 30001, 233215990Sjmallett CVMX_BOARD_TYPE_MODULE_PCIE_RC_4X = 30002, 234215990Sjmallett CVMX_BOARD_TYPE_MODULE_PCIE_EP_4X = 30003, 235215990Sjmallett CVMX_BOARD_TYPE_MODULE_SGMII_MARVEL = 30004, 236215990Sjmallett CVMX_BOARD_TYPE_MODULE_SFPPLUS_BCM = 30005, 237215990Sjmallett CVMX_BOARD_TYPE_MODULE_SRIO = 30006, 238215990Sjmallett CVMX_BOARD_TYPE_MODULE_EBB5600_QLM0 = 30007, 239215990Sjmallett CVMX_BOARD_TYPE_MODULE_EBB5600_QLM1 = 30008, 240215990Sjmallett CVMX_BOARD_TYPE_MODULE_EBB5600_QLM2 = 30009, 241215990Sjmallett CVMX_BOARD_TYPE_MODULE_EBB5600_QLM3 = 30010, 242215990Sjmallett CVMX_BOARD_TYPE_MODULE_MAX = 31000, 243215990Sjmallett 244210284Sjmallett /* The remaining range is reserved for future use. */ 245210284Sjmallett}; 246210284Sjmallettenum cvmx_chip_types_enum { 247210284Sjmallett CVMX_CHIP_TYPE_NULL = 0, 248210284Sjmallett CVMX_CHIP_SIM_TYPE_DEPRECATED = 1, 249210284Sjmallett CVMX_CHIP_TYPE_OCTEON_SAMPLE = 2, 250210284Sjmallett CVMX_CHIP_TYPE_MAX, 251210284Sjmallett}; 252210284Sjmallett 253210284Sjmallett/* Compatability alias for NAC38 name change, planned to be removed from SDK 1.7 */ 254210284Sjmallett#define CVMX_BOARD_TYPE_NAO38 CVMX_BOARD_TYPE_NAC38 255210284Sjmallett 256210284Sjmallett/* Functions to return string based on type */ 257210284Sjmallett#define ENUM_BRD_TYPE_CASE(x) case x: return(#x + 16); /* Skip CVMX_BOARD_TYPE_ */ 258210284Sjmallettstatic inline const char *cvmx_board_type_to_string(enum cvmx_board_types_enum type) 259210284Sjmallett{ 260210284Sjmallett switch (type) 261210284Sjmallett { 262210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_NULL) 263210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_SIM) 264210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_EBT3000) 265210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_KODAMA) 266210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_NIAGARA) 267210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_NAC38) 268210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_THUNDER) 269210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_TRANTOR) 270210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_EBH3000) 271210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_EBH3100) 272210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_HIKARI) 273210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CN3010_EVB_HS5) 274210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CN3005_EVB_HS5) 275210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_KBP) 276210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CN3020_EVB_HS5) 277210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_EBT5800) 278210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_NICPRO2) 279210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_EBH5600) 280210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_EBH5601) 281210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_EBH5200) 282210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_BBGW_REF) 283210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_NIC_XLE_4G) 284210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_EBT5600) 285210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_EBH5201) 286210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_EBT5200) 287210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CB5600) 288210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CB5601) 289210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CB5200) 290210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_GENERIC) 291215990Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_EBH5610) 292215990Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_LANAI2_A) 293215990Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_LANAI2_U) 294215990Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_EBB5600) 295215990Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_EBB6300) 296215990Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_NIC_XLE_10G) 297215990Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_LANAI2_G) 298215990Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_EBT5810) 299215990Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_NIC10E) 300210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_MAX) 301210284Sjmallett 302210284Sjmallett /* Customer boards listed here */ 303210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_DEFINED_MIN) 304210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_WSX16) 305210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_NS0216) 306210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_NB5) 307210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_WMR500) 308210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_ITB101) 309210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_NTE102) 310210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_AGS103) 311212844Sjmallett#if !defined(OCTEON_VENDOR_LANNER) 312210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_GST104) 313212844Sjmallett#else 314212844Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_LANNER_MR955) 315212844Sjmallett#endif 316210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_GCT105) 317210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_AGS106) 318210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_SGM107) 319210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_GCT108) 320210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_AGS109) 321210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_GCT110) 322215990Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_L2_AIR_SENDER) 323215990Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_L2_AIR_RECEIVER) 324215990Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_L2_ACCTON2_TX) 325215990Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_L2_ACCTON2_RX) 326215990Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_L2_WSTRNSNIC_TX) 327215990Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_L2_WSTRNSNIC_RX) 328215014Sjmallett#if defined(OCTEON_VENDOR_LANNER) 329215014Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_LANNER_MR730) 330215990Sjmallett#else 331215990Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_L2_ZINWELL) 332215014Sjmallett#endif 333215990Sjmallett 334210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_DEFINED_MAX) 335210284Sjmallett 336210284Sjmallett /* Customer private range */ 337210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_PRIVATE_MIN) 338210311Sjmallett#if defined(OCTEON_VENDOR_LANNER) 339210311Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_LANNER_MR320) 340216476Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_LANNER_MR321X) 341210311Sjmallett#endif 342210284Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_PRIVATE_MAX) 343215990Sjmallett 344215990Sjmallett /* Module range */ 345215990Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_MODULE_MIN) 346215990Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_MODULE_PCIE_RC_4X) 347215990Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_MODULE_PCIE_EP_4X) 348215990Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_MODULE_SGMII_MARVEL) 349215990Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_MODULE_SFPPLUS_BCM) 350215990Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_MODULE_SRIO) 351215990Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_MODULE_EBB5600_QLM0) 352215990Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_MODULE_EBB5600_QLM1) 353215990Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_MODULE_EBB5600_QLM2) 354215990Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_MODULE_EBB5600_QLM3) 355215990Sjmallett ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_MODULE_MAX) 356210284Sjmallett } 357210284Sjmallett return "Unsupported Board"; 358210284Sjmallett} 359210284Sjmallett 360210284Sjmallett#define ENUM_CHIP_TYPE_CASE(x) case x: return(#x + 15); /* Skip CVMX_CHIP_TYPE */ 361210284Sjmallettstatic inline const char *cvmx_chip_type_to_string(enum cvmx_chip_types_enum type) 362210284Sjmallett{ 363210284Sjmallett switch (type) 364210284Sjmallett { 365210284Sjmallett ENUM_CHIP_TYPE_CASE(CVMX_CHIP_TYPE_NULL) 366210284Sjmallett ENUM_CHIP_TYPE_CASE(CVMX_CHIP_SIM_TYPE_DEPRECATED) 367210284Sjmallett ENUM_CHIP_TYPE_CASE(CVMX_CHIP_TYPE_OCTEON_SAMPLE) 368210284Sjmallett ENUM_CHIP_TYPE_CASE(CVMX_CHIP_TYPE_MAX) 369210284Sjmallett } 370210284Sjmallett return "Unsupported Chip"; 371210284Sjmallett} 372210284Sjmallett 373210284Sjmallett 374210284Sjmallettextern int cvmx_debug_uart; 375210284Sjmallett 376210284Sjmallett 377210284Sjmallett 378210284Sjmallett#ifdef __cplusplus 379210284Sjmallett} 380210284Sjmallett#endif 381210284Sjmallett 382210284Sjmallett#endif /* __CVMX_APP_INIT_H__ */ 383