04b6fa8330
facilities as well as support for the Octeon 2 family of SoCs. XXX Note that with our antediluvian assembler, we can't support some Octeon 2 instructions and fall back to using the old ones instead.
4393 lines
212 KiB
C
4393 lines
212 KiB
C
/***********************license start***************
|
|
* Copyright (c) 2003-2010 Cavium Networks (support@cavium.com). All rights
|
|
* reserved.
|
|
*
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that the following conditions are
|
|
* met:
|
|
*
|
|
* * Redistributions of source code must retain the above copyright
|
|
* notice, this list of conditions and the following disclaimer.
|
|
*
|
|
* * Redistributions in binary form must reproduce the above
|
|
* copyright notice, this list of conditions and the following
|
|
* disclaimer in the documentation and/or other materials provided
|
|
* with the distribution.
|
|
|
|
* * Neither the name of Cavium Networks nor the names of
|
|
* its contributors may be used to endorse or promote products
|
|
* derived from this software without specific prior written
|
|
* permission.
|
|
|
|
* This Software, including technical data, may be subject to U.S. export control
|
|
* laws, including the U.S. Export Administration Act and its associated
|
|
* regulations, and may be subject to export or import regulations in other
|
|
* countries.
|
|
|
|
* TO THE MAXIMUM EXTENT PERMITTED BY LAW, THE SOFTWARE IS PROVIDED "AS IS"
|
|
* AND WITH ALL FAULTS AND CAVIUM NETWORKS MAKES NO PROMISES, REPRESENTATIONS OR
|
|
* WARRANTIES, EITHER EXPRESS, IMPLIED, STATUTORY, OR OTHERWISE, WITH RESPECT TO
|
|
* THE SOFTWARE, INCLUDING ITS CONDITION, ITS CONFORMITY TO ANY REPRESENTATION OR
|
|
* DESCRIPTION, OR THE EXISTENCE OF ANY LATENT OR PATENT DEFECTS, AND CAVIUM
|
|
* SPECIFICALLY DISCLAIMS ALL IMPLIED (IF ANY) WARRANTIES OF TITLE,
|
|
* MERCHANTABILITY, NONINFRINGEMENT, FITNESS FOR A PARTICULAR PURPOSE, LACK OF
|
|
* VIRUSES, ACCURACY OR COMPLETENESS, QUIET ENJOYMENT, QUIET POSSESSION OR
|
|
* CORRESPONDENCE TO DESCRIPTION. THE ENTIRE RISK ARISING OUT OF USE OR
|
|
* PERFORMANCE OF THE SOFTWARE LIES WITH YOU.
|
|
***********************license end**************************************/
|
|
|
|
|
|
/**
|
|
* cvmx-sriomaintx-defs.h
|
|
*
|
|
* Configuration and status register (CSR) type definitions for
|
|
* Octeon sriomaintx.
|
|
*
|
|
* This file is auto generated. Do not edit.
|
|
*
|
|
* <hr>$Revision$<hr>
|
|
*
|
|
*/
|
|
#ifndef __CVMX_SRIOMAINTX_TYPEDEFS_H__
|
|
#define __CVMX_SRIOMAINTX_TYPEDEFS_H__
|
|
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_SRIOMAINTX_ASMBLY_ID(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_SRIOMAINTX_ASMBLY_ID(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000000008ull;
|
|
}
|
|
#else
|
|
#define CVMX_SRIOMAINTX_ASMBLY_ID(block_id) (0x0000000000000008ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_SRIOMAINTX_ASMBLY_INFO(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_SRIOMAINTX_ASMBLY_INFO(%lu) is invalid on this chip\n", block_id);
|
|
return 0x000000000000000Cull;
|
|
}
|
|
#else
|
|
#define CVMX_SRIOMAINTX_ASMBLY_INFO(block_id) (0x000000000000000Cull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_SRIOMAINTX_BAR1_IDXX(unsigned long offset, unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && (((offset <= 15)) && ((block_id <= 1))))))
|
|
cvmx_warn("CVMX_SRIOMAINTX_BAR1_IDXX(%lu,%lu) is invalid on this chip\n", offset, block_id);
|
|
return CVMX_ADD_IO_SEG(0x0000000000200010ull) + (((offset) & 15) + ((block_id) & 1) * 0x0ull) * 4;
|
|
}
|
|
#else
|
|
#define CVMX_SRIOMAINTX_BAR1_IDXX(offset, block_id) (CVMX_ADD_IO_SEG(0x0000000000200010ull) + (((offset) & 15) + ((block_id) & 1) * 0x0ull) * 4)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_SRIOMAINTX_BELL_STATUS(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_SRIOMAINTX_BELL_STATUS(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000200080ull;
|
|
}
|
|
#else
|
|
#define CVMX_SRIOMAINTX_BELL_STATUS(block_id) (0x0000000000200080ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_SRIOMAINTX_COMP_TAG(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_SRIOMAINTX_COMP_TAG(%lu) is invalid on this chip\n", block_id);
|
|
return 0x000000000000006Cull;
|
|
}
|
|
#else
|
|
#define CVMX_SRIOMAINTX_COMP_TAG(block_id) (0x000000000000006Cull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_SRIOMAINTX_CORE_ENABLES(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_SRIOMAINTX_CORE_ENABLES(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000200070ull;
|
|
}
|
|
#else
|
|
#define CVMX_SRIOMAINTX_CORE_ENABLES(block_id) (0x0000000000200070ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_SRIOMAINTX_DEV_ID(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_SRIOMAINTX_DEV_ID(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000000000ull;
|
|
}
|
|
#else
|
|
#define CVMX_SRIOMAINTX_DEV_ID(block_id) (0x0000000000000000ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_SRIOMAINTX_DEV_REV(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_SRIOMAINTX_DEV_REV(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000000004ull;
|
|
}
|
|
#else
|
|
#define CVMX_SRIOMAINTX_DEV_REV(block_id) (0x0000000000000004ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_SRIOMAINTX_DST_OPS(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_SRIOMAINTX_DST_OPS(%lu) is invalid on this chip\n", block_id);
|
|
return 0x000000000000001Cull;
|
|
}
|
|
#else
|
|
#define CVMX_SRIOMAINTX_DST_OPS(block_id) (0x000000000000001Cull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_SRIOMAINTX_ERB_ATTR_CAPT(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_SRIOMAINTX_ERB_ATTR_CAPT(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000002048ull;
|
|
}
|
|
#else
|
|
#define CVMX_SRIOMAINTX_ERB_ATTR_CAPT(block_id) (0x0000000000002048ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_SRIOMAINTX_ERB_ERR_DET(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_SRIOMAINTX_ERB_ERR_DET(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000002040ull;
|
|
}
|
|
#else
|
|
#define CVMX_SRIOMAINTX_ERB_ERR_DET(block_id) (0x0000000000002040ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_SRIOMAINTX_ERB_ERR_RATE(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_SRIOMAINTX_ERB_ERR_RATE(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000002068ull;
|
|
}
|
|
#else
|
|
#define CVMX_SRIOMAINTX_ERB_ERR_RATE(block_id) (0x0000000000002068ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_SRIOMAINTX_ERB_ERR_RATE_EN(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_SRIOMAINTX_ERB_ERR_RATE_EN(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000002044ull;
|
|
}
|
|
#else
|
|
#define CVMX_SRIOMAINTX_ERB_ERR_RATE_EN(block_id) (0x0000000000002044ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_SRIOMAINTX_ERB_ERR_RATE_THR(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_SRIOMAINTX_ERB_ERR_RATE_THR(%lu) is invalid on this chip\n", block_id);
|
|
return 0x000000000000206Cull;
|
|
}
|
|
#else
|
|
#define CVMX_SRIOMAINTX_ERB_ERR_RATE_THR(block_id) (0x000000000000206Cull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_SRIOMAINTX_ERB_HDR(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_SRIOMAINTX_ERB_HDR(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000002000ull;
|
|
}
|
|
#else
|
|
#define CVMX_SRIOMAINTX_ERB_HDR(block_id) (0x0000000000002000ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_SRIOMAINTX_ERB_LT_ADDR_CAPT_H(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_SRIOMAINTX_ERB_LT_ADDR_CAPT_H(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000002010ull;
|
|
}
|
|
#else
|
|
#define CVMX_SRIOMAINTX_ERB_LT_ADDR_CAPT_H(block_id) (0x0000000000002010ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_SRIOMAINTX_ERB_LT_ADDR_CAPT_L(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_SRIOMAINTX_ERB_LT_ADDR_CAPT_L(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000002014ull;
|
|
}
|
|
#else
|
|
#define CVMX_SRIOMAINTX_ERB_LT_ADDR_CAPT_L(block_id) (0x0000000000002014ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_SRIOMAINTX_ERB_LT_CTRL_CAPT(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_SRIOMAINTX_ERB_LT_CTRL_CAPT(%lu) is invalid on this chip\n", block_id);
|
|
return 0x000000000000201Cull;
|
|
}
|
|
#else
|
|
#define CVMX_SRIOMAINTX_ERB_LT_CTRL_CAPT(block_id) (0x000000000000201Cull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_SRIOMAINTX_ERB_LT_DEV_ID(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_SRIOMAINTX_ERB_LT_DEV_ID(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000002028ull;
|
|
}
|
|
#else
|
|
#define CVMX_SRIOMAINTX_ERB_LT_DEV_ID(block_id) (0x0000000000002028ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_SRIOMAINTX_ERB_LT_DEV_ID_CAPT(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_SRIOMAINTX_ERB_LT_DEV_ID_CAPT(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000002018ull;
|
|
}
|
|
#else
|
|
#define CVMX_SRIOMAINTX_ERB_LT_DEV_ID_CAPT(block_id) (0x0000000000002018ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_SRIOMAINTX_ERB_LT_ERR_DET(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_SRIOMAINTX_ERB_LT_ERR_DET(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000002008ull;
|
|
}
|
|
#else
|
|
#define CVMX_SRIOMAINTX_ERB_LT_ERR_DET(block_id) (0x0000000000002008ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_SRIOMAINTX_ERB_LT_ERR_EN(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_SRIOMAINTX_ERB_LT_ERR_EN(%lu) is invalid on this chip\n", block_id);
|
|
return 0x000000000000200Cull;
|
|
}
|
|
#else
|
|
#define CVMX_SRIOMAINTX_ERB_LT_ERR_EN(block_id) (0x000000000000200Cull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_SRIOMAINTX_ERB_PACK_CAPT_1(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_SRIOMAINTX_ERB_PACK_CAPT_1(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000002050ull;
|
|
}
|
|
#else
|
|
#define CVMX_SRIOMAINTX_ERB_PACK_CAPT_1(block_id) (0x0000000000002050ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_SRIOMAINTX_ERB_PACK_CAPT_2(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_SRIOMAINTX_ERB_PACK_CAPT_2(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000002054ull;
|
|
}
|
|
#else
|
|
#define CVMX_SRIOMAINTX_ERB_PACK_CAPT_2(block_id) (0x0000000000002054ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_SRIOMAINTX_ERB_PACK_CAPT_3(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_SRIOMAINTX_ERB_PACK_CAPT_3(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000002058ull;
|
|
}
|
|
#else
|
|
#define CVMX_SRIOMAINTX_ERB_PACK_CAPT_3(block_id) (0x0000000000002058ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_SRIOMAINTX_ERB_PACK_SYM_CAPT(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_SRIOMAINTX_ERB_PACK_SYM_CAPT(%lu) is invalid on this chip\n", block_id);
|
|
return 0x000000000000204Cull;
|
|
}
|
|
#else
|
|
#define CVMX_SRIOMAINTX_ERB_PACK_SYM_CAPT(block_id) (0x000000000000204Cull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_SRIOMAINTX_HB_DEV_ID_LOCK(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_SRIOMAINTX_HB_DEV_ID_LOCK(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000000068ull;
|
|
}
|
|
#else
|
|
#define CVMX_SRIOMAINTX_HB_DEV_ID_LOCK(block_id) (0x0000000000000068ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_SRIOMAINTX_IR_BUFFER_CONFIG(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_SRIOMAINTX_IR_BUFFER_CONFIG(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000102000ull;
|
|
}
|
|
#else
|
|
#define CVMX_SRIOMAINTX_IR_BUFFER_CONFIG(block_id) (0x0000000000102000ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_SRIOMAINTX_IR_BUFFER_CONFIG2(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_SRIOMAINTX_IR_BUFFER_CONFIG2(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000102004ull;
|
|
}
|
|
#else
|
|
#define CVMX_SRIOMAINTX_IR_BUFFER_CONFIG2(block_id) (0x0000000000102004ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_SRIOMAINTX_IR_PD_PHY_CTRL(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_SRIOMAINTX_IR_PD_PHY_CTRL(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000107028ull;
|
|
}
|
|
#else
|
|
#define CVMX_SRIOMAINTX_IR_PD_PHY_CTRL(block_id) (0x0000000000107028ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_SRIOMAINTX_IR_PD_PHY_STAT(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_SRIOMAINTX_IR_PD_PHY_STAT(%lu) is invalid on this chip\n", block_id);
|
|
return 0x000000000010702Cull;
|
|
}
|
|
#else
|
|
#define CVMX_SRIOMAINTX_IR_PD_PHY_STAT(block_id) (0x000000000010702Cull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_SRIOMAINTX_IR_PI_PHY_CTRL(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_SRIOMAINTX_IR_PI_PHY_CTRL(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000107020ull;
|
|
}
|
|
#else
|
|
#define CVMX_SRIOMAINTX_IR_PI_PHY_CTRL(block_id) (0x0000000000107020ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_SRIOMAINTX_IR_PI_PHY_STAT(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_SRIOMAINTX_IR_PI_PHY_STAT(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000107024ull;
|
|
}
|
|
#else
|
|
#define CVMX_SRIOMAINTX_IR_PI_PHY_STAT(block_id) (0x0000000000107024ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_SRIOMAINTX_IR_SP_RX_CTRL(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_SRIOMAINTX_IR_SP_RX_CTRL(%lu) is invalid on this chip\n", block_id);
|
|
return 0x000000000010700Cull;
|
|
}
|
|
#else
|
|
#define CVMX_SRIOMAINTX_IR_SP_RX_CTRL(block_id) (0x000000000010700Cull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_SRIOMAINTX_IR_SP_RX_DATA(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_SRIOMAINTX_IR_SP_RX_DATA(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000107014ull;
|
|
}
|
|
#else
|
|
#define CVMX_SRIOMAINTX_IR_SP_RX_DATA(block_id) (0x0000000000107014ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_SRIOMAINTX_IR_SP_RX_STAT(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_SRIOMAINTX_IR_SP_RX_STAT(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000107010ull;
|
|
}
|
|
#else
|
|
#define CVMX_SRIOMAINTX_IR_SP_RX_STAT(block_id) (0x0000000000107010ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_SRIOMAINTX_IR_SP_TX_CTRL(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_SRIOMAINTX_IR_SP_TX_CTRL(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000107000ull;
|
|
}
|
|
#else
|
|
#define CVMX_SRIOMAINTX_IR_SP_TX_CTRL(block_id) (0x0000000000107000ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_SRIOMAINTX_IR_SP_TX_DATA(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_SRIOMAINTX_IR_SP_TX_DATA(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000107008ull;
|
|
}
|
|
#else
|
|
#define CVMX_SRIOMAINTX_IR_SP_TX_DATA(block_id) (0x0000000000107008ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_SRIOMAINTX_IR_SP_TX_STAT(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_SRIOMAINTX_IR_SP_TX_STAT(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000107004ull;
|
|
}
|
|
#else
|
|
#define CVMX_SRIOMAINTX_IR_SP_TX_STAT(block_id) (0x0000000000107004ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_SRIOMAINTX_LANE_X_STATUS_0(unsigned long offset, unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && (((offset <= 3)) && ((block_id <= 1))))))
|
|
cvmx_warn("CVMX_SRIOMAINTX_LANE_X_STATUS_0(%lu,%lu) is invalid on this chip\n", offset, block_id);
|
|
return CVMX_ADD_IO_SEG(0x0000000000001010ull) + (((offset) & 3) + ((block_id) & 1) * 0x0ull) * 32;
|
|
}
|
|
#else
|
|
#define CVMX_SRIOMAINTX_LANE_X_STATUS_0(offset, block_id) (CVMX_ADD_IO_SEG(0x0000000000001010ull) + (((offset) & 3) + ((block_id) & 1) * 0x0ull) * 32)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_SRIOMAINTX_LCS_BA0(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_SRIOMAINTX_LCS_BA0(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000000058ull;
|
|
}
|
|
#else
|
|
#define CVMX_SRIOMAINTX_LCS_BA0(block_id) (0x0000000000000058ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_SRIOMAINTX_LCS_BA1(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_SRIOMAINTX_LCS_BA1(%lu) is invalid on this chip\n", block_id);
|
|
return 0x000000000000005Cull;
|
|
}
|
|
#else
|
|
#define CVMX_SRIOMAINTX_LCS_BA1(block_id) (0x000000000000005Cull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_SRIOMAINTX_M2S_BAR0_START0(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_SRIOMAINTX_M2S_BAR0_START0(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000200000ull;
|
|
}
|
|
#else
|
|
#define CVMX_SRIOMAINTX_M2S_BAR0_START0(block_id) (0x0000000000200000ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_SRIOMAINTX_M2S_BAR0_START1(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_SRIOMAINTX_M2S_BAR0_START1(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000200004ull;
|
|
}
|
|
#else
|
|
#define CVMX_SRIOMAINTX_M2S_BAR0_START1(block_id) (0x0000000000200004ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_SRIOMAINTX_M2S_BAR1_START0(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_SRIOMAINTX_M2S_BAR1_START0(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000200008ull;
|
|
}
|
|
#else
|
|
#define CVMX_SRIOMAINTX_M2S_BAR1_START0(block_id) (0x0000000000200008ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_SRIOMAINTX_M2S_BAR1_START1(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_SRIOMAINTX_M2S_BAR1_START1(%lu) is invalid on this chip\n", block_id);
|
|
return 0x000000000020000Cull;
|
|
}
|
|
#else
|
|
#define CVMX_SRIOMAINTX_M2S_BAR1_START1(block_id) (0x000000000020000Cull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_SRIOMAINTX_M2S_BAR2_START(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_SRIOMAINTX_M2S_BAR2_START(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000200050ull;
|
|
}
|
|
#else
|
|
#define CVMX_SRIOMAINTX_M2S_BAR2_START(block_id) (0x0000000000200050ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_SRIOMAINTX_MAC_CTRL(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_SRIOMAINTX_MAC_CTRL(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000200068ull;
|
|
}
|
|
#else
|
|
#define CVMX_SRIOMAINTX_MAC_CTRL(block_id) (0x0000000000200068ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_SRIOMAINTX_PE_FEAT(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_SRIOMAINTX_PE_FEAT(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000000010ull;
|
|
}
|
|
#else
|
|
#define CVMX_SRIOMAINTX_PE_FEAT(block_id) (0x0000000000000010ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_SRIOMAINTX_PE_LLC(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_SRIOMAINTX_PE_LLC(%lu) is invalid on this chip\n", block_id);
|
|
return 0x000000000000004Cull;
|
|
}
|
|
#else
|
|
#define CVMX_SRIOMAINTX_PE_LLC(block_id) (0x000000000000004Cull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_SRIOMAINTX_PORT_0_CTL(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_SRIOMAINTX_PORT_0_CTL(%lu) is invalid on this chip\n", block_id);
|
|
return 0x000000000000015Cull;
|
|
}
|
|
#else
|
|
#define CVMX_SRIOMAINTX_PORT_0_CTL(block_id) (0x000000000000015Cull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_SRIOMAINTX_PORT_0_CTL2(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_SRIOMAINTX_PORT_0_CTL2(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000000154ull;
|
|
}
|
|
#else
|
|
#define CVMX_SRIOMAINTX_PORT_0_CTL2(block_id) (0x0000000000000154ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_SRIOMAINTX_PORT_0_ERR_STAT(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_SRIOMAINTX_PORT_0_ERR_STAT(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000000158ull;
|
|
}
|
|
#else
|
|
#define CVMX_SRIOMAINTX_PORT_0_ERR_STAT(block_id) (0x0000000000000158ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_SRIOMAINTX_PORT_0_LINK_REQ(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_SRIOMAINTX_PORT_0_LINK_REQ(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000000140ull;
|
|
}
|
|
#else
|
|
#define CVMX_SRIOMAINTX_PORT_0_LINK_REQ(block_id) (0x0000000000000140ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_SRIOMAINTX_PORT_0_LINK_RESP(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_SRIOMAINTX_PORT_0_LINK_RESP(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000000144ull;
|
|
}
|
|
#else
|
|
#define CVMX_SRIOMAINTX_PORT_0_LINK_RESP(block_id) (0x0000000000000144ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_SRIOMAINTX_PORT_0_LOCAL_ACKID(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_SRIOMAINTX_PORT_0_LOCAL_ACKID(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000000148ull;
|
|
}
|
|
#else
|
|
#define CVMX_SRIOMAINTX_PORT_0_LOCAL_ACKID(block_id) (0x0000000000000148ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_SRIOMAINTX_PORT_GEN_CTL(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_SRIOMAINTX_PORT_GEN_CTL(%lu) is invalid on this chip\n", block_id);
|
|
return 0x000000000000013Cull;
|
|
}
|
|
#else
|
|
#define CVMX_SRIOMAINTX_PORT_GEN_CTL(block_id) (0x000000000000013Cull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_SRIOMAINTX_PORT_LT_CTL(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_SRIOMAINTX_PORT_LT_CTL(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000000120ull;
|
|
}
|
|
#else
|
|
#define CVMX_SRIOMAINTX_PORT_LT_CTL(block_id) (0x0000000000000120ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_SRIOMAINTX_PORT_MBH0(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_SRIOMAINTX_PORT_MBH0(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000000100ull;
|
|
}
|
|
#else
|
|
#define CVMX_SRIOMAINTX_PORT_MBH0(block_id) (0x0000000000000100ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_SRIOMAINTX_PORT_RT_CTL(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_SRIOMAINTX_PORT_RT_CTL(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000000124ull;
|
|
}
|
|
#else
|
|
#define CVMX_SRIOMAINTX_PORT_RT_CTL(block_id) (0x0000000000000124ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_SRIOMAINTX_PORT_TTL_CTL(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_SRIOMAINTX_PORT_TTL_CTL(%lu) is invalid on this chip\n", block_id);
|
|
return 0x000000000000012Cull;
|
|
}
|
|
#else
|
|
#define CVMX_SRIOMAINTX_PORT_TTL_CTL(block_id) (0x000000000000012Cull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_SRIOMAINTX_PRI_DEV_ID(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_SRIOMAINTX_PRI_DEV_ID(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000000060ull;
|
|
}
|
|
#else
|
|
#define CVMX_SRIOMAINTX_PRI_DEV_ID(block_id) (0x0000000000000060ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_SRIOMAINTX_SEC_DEV_CTRL(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_SRIOMAINTX_SEC_DEV_CTRL(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000200064ull;
|
|
}
|
|
#else
|
|
#define CVMX_SRIOMAINTX_SEC_DEV_CTRL(block_id) (0x0000000000200064ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_SRIOMAINTX_SEC_DEV_ID(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_SRIOMAINTX_SEC_DEV_ID(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000200060ull;
|
|
}
|
|
#else
|
|
#define CVMX_SRIOMAINTX_SEC_DEV_ID(block_id) (0x0000000000200060ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_SRIOMAINTX_SERIAL_LANE_HDR(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_SRIOMAINTX_SERIAL_LANE_HDR(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000001000ull;
|
|
}
|
|
#else
|
|
#define CVMX_SRIOMAINTX_SERIAL_LANE_HDR(block_id) (0x0000000000001000ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_SRIOMAINTX_SRC_OPS(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_SRIOMAINTX_SRC_OPS(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000000018ull;
|
|
}
|
|
#else
|
|
#define CVMX_SRIOMAINTX_SRC_OPS(block_id) (0x0000000000000018ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_SRIOMAINTX_TX_DROP(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_SRIOMAINTX_TX_DROP(%lu) is invalid on this chip\n", block_id);
|
|
return 0x000000000020006Cull;
|
|
}
|
|
#else
|
|
#define CVMX_SRIOMAINTX_TX_DROP(block_id) (0x000000000020006Cull)
|
|
#endif
|
|
|
|
/**
|
|
* cvmx_sriomaint#_asmbly_id
|
|
*
|
|
* SRIOMAINT_ASMBLY_ID = SRIO Assembly ID
|
|
*
|
|
* The Assembly ID register shows the Assembly ID and Vendor
|
|
*
|
|
* Notes:
|
|
* The Assembly ID register shows the Assembly ID and Vendor specified in $SRIO_ASMBLY_ID.
|
|
*
|
|
* Clk_Rst: SRIOMAINT(0..1)_ASMBLY_ID hclk hrst_n
|
|
*/
|
|
union cvmx_sriomaintx_asmbly_id
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_sriomaintx_asmbly_id_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t assy_id : 16; /**< Assembly Identifer */
|
|
uint32_t assy_ven : 16; /**< Assembly Vendor Identifer */
|
|
#else
|
|
uint32_t assy_ven : 16;
|
|
uint32_t assy_id : 16;
|
|
#endif
|
|
} s;
|
|
struct cvmx_sriomaintx_asmbly_id_s cn63xx;
|
|
struct cvmx_sriomaintx_asmbly_id_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_sriomaintx_asmbly_id cvmx_sriomaintx_asmbly_id_t;
|
|
|
|
/**
|
|
* cvmx_sriomaint#_asmbly_info
|
|
*
|
|
* SRIOMAINT_ASMBLY_INFO = SRIO Assembly Information
|
|
*
|
|
* The Assembly Info register shows the Assembly Revision specified in $SRIO_ASMBLY_INFO
|
|
*
|
|
* Notes:
|
|
* The Assembly Info register shows the Assembly Revision specified in $SRIO_ASMBLY_INFO and Extended
|
|
* Feature Pointer.
|
|
*
|
|
* Clk_Rst: SRIOMAINT(0..1)_ASMBLY_INFO hclk hrst_n
|
|
*/
|
|
union cvmx_sriomaintx_asmbly_info
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_sriomaintx_asmbly_info_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t assy_rev : 16; /**< Assembly Revision */
|
|
uint32_t ext_fptr : 16; /**< Pointer to the first entry in the extended feature
|
|
list. */
|
|
#else
|
|
uint32_t ext_fptr : 16;
|
|
uint32_t assy_rev : 16;
|
|
#endif
|
|
} s;
|
|
struct cvmx_sriomaintx_asmbly_info_s cn63xx;
|
|
struct cvmx_sriomaintx_asmbly_info_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_sriomaintx_asmbly_info cvmx_sriomaintx_asmbly_info_t;
|
|
|
|
/**
|
|
* cvmx_sriomaint#_bar1_idx#
|
|
*
|
|
* SRIOMAINT_BAR1_IDXX = SRIO BAR1 IndexX Register
|
|
*
|
|
* Contains address index and control bits for access to memory ranges of BAR1.
|
|
*
|
|
* Notes:
|
|
* This register specifies the Octeon address, endian swap and cache status associated with each of
|
|
* the 16 BAR1 entries. The local address bits used are based on the BARSIZE field located in the
|
|
* SRIOMAINT(0..1)_M2S_BAR1_START0 register. This register is only writeable over SRIO if the
|
|
* SRIO(0..1)_ACC_CTRL.DENY_BAR1 bit is zero.
|
|
*
|
|
* Clk_Rst: SRIOMAINT(0..1)_BAR1_IDX[0:15] hclk hrst_n
|
|
*/
|
|
union cvmx_sriomaintx_bar1_idxx
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_sriomaintx_bar1_idxx_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t reserved_30_31 : 2;
|
|
uint32_t la : 22; /**< L2/DRAM Address bits [37:16]
|
|
Not all LA[21:0] bits are used by SRIO hardware,
|
|
depending on SRIOMAINT(0..1)_M2S_BAR1_START1[BARSIZE].
|
|
|
|
Become
|
|
L2/DRAM
|
|
Address Entry
|
|
BARSIZE LA Bits Used Bits Size
|
|
0 LA[21:0] [37:16] 64KB
|
|
1 LA[21:1] [37:17] 128KB
|
|
2 LA[21:2] [37:18] 256KB
|
|
3 LA[21:3] [37:19] 512KB
|
|
4 LA[21:4] [37:20] 1MB
|
|
5 LA[21:5] [37:21] 2MB
|
|
6 LA[21:6] [37:22] 4MB
|
|
7 LA[21:7] [37:23] 8MB
|
|
8 ** not in pass 1
|
|
9 ** not in pass 1
|
|
10 ** not in pass 1
|
|
11 ** not in pass 1
|
|
12 ** not in pass 1
|
|
13 ** not in pass 1 */
|
|
uint32_t reserved_6_7 : 2;
|
|
uint32_t es : 2; /**< Endian Swap Mode.
|
|
0 = No Swap
|
|
1 = 64-bit Swap Bytes [ABCD_EFGH] -> [HGFE_DCBA]
|
|
2 = 32-bit Swap Words [ABCD_EFGH] -> [DCBA_HGFE]
|
|
3 = 32-bit Word Exch [ABCD_EFGH] -> [EFGH_ABCD] */
|
|
uint32_t nca : 1; /**< Non-Cacheable Access Mode. When set, transfers
|
|
through this window are not cacheable. */
|
|
uint32_t reserved_1_2 : 2;
|
|
uint32_t enable : 1; /**< When set the selected index address is valid. */
|
|
#else
|
|
uint32_t enable : 1;
|
|
uint32_t reserved_1_2 : 2;
|
|
uint32_t nca : 1;
|
|
uint32_t es : 2;
|
|
uint32_t reserved_6_7 : 2;
|
|
uint32_t la : 22;
|
|
uint32_t reserved_30_31 : 2;
|
|
#endif
|
|
} s;
|
|
struct cvmx_sriomaintx_bar1_idxx_s cn63xx;
|
|
struct cvmx_sriomaintx_bar1_idxx_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_sriomaintx_bar1_idxx cvmx_sriomaintx_bar1_idxx_t;
|
|
|
|
/**
|
|
* cvmx_sriomaint#_bell_status
|
|
*
|
|
* SRIOMAINT_BELL_STATUS = SRIO Incoming Doorbell Status
|
|
*
|
|
* The SRIO Incoming (RX) Doorbell Status
|
|
*
|
|
* Notes:
|
|
* This register displays the status of the doorbells received. If FULL is set the SRIO device will
|
|
* retry incoming transactions.
|
|
*
|
|
* Clk_Rst: SRIOMAINT(0..1)_BELL_STATUS hclk hrst_n
|
|
*/
|
|
union cvmx_sriomaintx_bell_status
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_sriomaintx_bell_status_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t reserved_1_31 : 31;
|
|
uint32_t full : 1; /**< Not able to receive Doorbell Transactions */
|
|
#else
|
|
uint32_t full : 1;
|
|
uint32_t reserved_1_31 : 31;
|
|
#endif
|
|
} s;
|
|
struct cvmx_sriomaintx_bell_status_s cn63xx;
|
|
struct cvmx_sriomaintx_bell_status_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_sriomaintx_bell_status cvmx_sriomaintx_bell_status_t;
|
|
|
|
/**
|
|
* cvmx_sriomaint#_comp_tag
|
|
*
|
|
* SRIOMAINT_COMP_TAG = SRIO Component Tag
|
|
*
|
|
* Component Tag
|
|
*
|
|
* Notes:
|
|
* This register contains a component tag value for the processing element and the value can be
|
|
* assigned by software when the device is initialized.
|
|
*
|
|
* Clk_Rst: SRIOMAINT(0..1)_COMP_TAG hclk hrst_n
|
|
*/
|
|
union cvmx_sriomaintx_comp_tag
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_sriomaintx_comp_tag_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t comp_tag : 32; /**< Component Tag for Firmware Use */
|
|
#else
|
|
uint32_t comp_tag : 32;
|
|
#endif
|
|
} s;
|
|
struct cvmx_sriomaintx_comp_tag_s cn63xx;
|
|
struct cvmx_sriomaintx_comp_tag_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_sriomaintx_comp_tag cvmx_sriomaintx_comp_tag_t;
|
|
|
|
/**
|
|
* cvmx_sriomaint#_core_enables
|
|
*
|
|
* SRIOMAINT_CORE_ENABLES = SRIO Core Control
|
|
*
|
|
* Core Control
|
|
*
|
|
* Notes:
|
|
* This register displays the reset state of the Octeon Core Logic while the SRIO Link is running.
|
|
* The bit should be set after the software has initialized the chip to allow memory operations.
|
|
*
|
|
* Clk_Rst: SRIOMAINT(0..1)_CORE_ENABLES hclk hrst_n, srst_n
|
|
*/
|
|
union cvmx_sriomaintx_core_enables
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_sriomaintx_core_enables_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t reserved_5_31 : 27;
|
|
uint32_t halt : 1; /**< OCTEON currently in Reset
|
|
0 = All OCTEON resources are available.
|
|
1 = The OCTEON is in reset. When this bit is set,
|
|
SRIO maintenance registers can be accessed,
|
|
but BAR0, BAR1, and BAR2 cannot be. */
|
|
uint32_t imsg1 : 1; /**< Allow Incoming Message Unit 1 Operations
|
|
Note: This bit is cleared when the C63XX is reset
|
|
0 = SRIO Incoming Messages to Unit 1 ignored and
|
|
return error response
|
|
1 = SRIO Incoming Messages to Unit 1 */
|
|
uint32_t imsg0 : 1; /**< Allow Incoming Message Unit 0 Operations
|
|
Note: This bit is cleared when the C63XX is reset
|
|
0 = SRIO Incoming Messages to Unit 0 ignored and
|
|
return error response
|
|
1 = SRIO Incoming Messages to Unit 0 */
|
|
uint32_t doorbell : 1; /**< Allow Inbound Doorbell Operations
|
|
Note: This bit is cleared when the C63XX is reset
|
|
0 = SRIO Doorbell OPs ignored and return error
|
|
response
|
|
1 = SRIO Doorbell OPs Allowed */
|
|
uint32_t memory : 1; /**< Allow Inbound/Outbound Memory Operations
|
|
Note: This bit is cleared when the C63XX is reset
|
|
0 = SRIO Incoming Nwrites and Swrites are
|
|
dropped. Incoming Nreads, Atomics and
|
|
NwriteRs return responses with ERROR status.
|
|
SRIO Incoming Maintenance BAR Memory Accesses
|
|
are processed normally.
|
|
Outgoing Store Operations are Dropped
|
|
Outgoing Load Operations are not issued and
|
|
return all 1's with an ERROR status.
|
|
In Flight Operations started while the bit is
|
|
set in both directions will complete normally.
|
|
1 = SRIO Memory Read/Write OPs Allowed */
|
|
#else
|
|
uint32_t memory : 1;
|
|
uint32_t doorbell : 1;
|
|
uint32_t imsg0 : 1;
|
|
uint32_t imsg1 : 1;
|
|
uint32_t halt : 1;
|
|
uint32_t reserved_5_31 : 27;
|
|
#endif
|
|
} s;
|
|
struct cvmx_sriomaintx_core_enables_s cn63xx;
|
|
struct cvmx_sriomaintx_core_enables_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_sriomaintx_core_enables cvmx_sriomaintx_core_enables_t;
|
|
|
|
/**
|
|
* cvmx_sriomaint#_dev_id
|
|
*
|
|
* SRIOMAINT_DEV_ID = SRIO Device ID
|
|
*
|
|
* The DeviceVendor Identity field identifies the vendor that manufactured the device
|
|
*
|
|
* Notes:
|
|
* This register identifies Cavium Networks and the Product ID.
|
|
*
|
|
* Clk_Rst: SRIOMAINT(0..1)_DEV_ID hclk hrst_n
|
|
*/
|
|
union cvmx_sriomaintx_dev_id
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_sriomaintx_dev_id_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t device : 16; /**< Product Identity */
|
|
uint32_t vendor : 16; /**< Cavium Vendor Identity */
|
|
#else
|
|
uint32_t vendor : 16;
|
|
uint32_t device : 16;
|
|
#endif
|
|
} s;
|
|
struct cvmx_sriomaintx_dev_id_s cn63xx;
|
|
struct cvmx_sriomaintx_dev_id_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_sriomaintx_dev_id cvmx_sriomaintx_dev_id_t;
|
|
|
|
/**
|
|
* cvmx_sriomaint#_dev_rev
|
|
*
|
|
* SRIOMAINT_DEV_REV = SRIO Device Revision
|
|
*
|
|
* The Device Revision register identifies the chip pass and revision
|
|
*
|
|
* Notes:
|
|
* This register identifies the chip pass and revision derived from the fuses.
|
|
*
|
|
* Clk_Rst: SRIOMAINT(0..1)_DEV_REV hclk hrst_n
|
|
*/
|
|
union cvmx_sriomaintx_dev_rev
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_sriomaintx_dev_rev_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t reserved_8_31 : 24;
|
|
uint32_t revision : 8; /**< Chip Pass/Revision */
|
|
#else
|
|
uint32_t revision : 8;
|
|
uint32_t reserved_8_31 : 24;
|
|
#endif
|
|
} s;
|
|
struct cvmx_sriomaintx_dev_rev_s cn63xx;
|
|
struct cvmx_sriomaintx_dev_rev_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_sriomaintx_dev_rev cvmx_sriomaintx_dev_rev_t;
|
|
|
|
/**
|
|
* cvmx_sriomaint#_dst_ops
|
|
*
|
|
* SRIOMAINT_DST_OPS = SRIO Source Operations
|
|
*
|
|
* The logical operations supported from external devices.
|
|
*
|
|
* Notes:
|
|
* The logical operations supported from external devices. The Destination OPs register shows the
|
|
* operations specified in the SRIO(0..1)_IP_FEATURE.OPS register.
|
|
*
|
|
* Clk_Rst: SRIOMAINT(0..1)_DST_OPS hclk hrst_n
|
|
*/
|
|
union cvmx_sriomaintx_dst_ops
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_sriomaintx_dst_ops_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t gsm_read : 1; /**< PE does not support Read Home operations.
|
|
This is a RO copy of SRIO*_IP_FEATURE[OPS<31>] */
|
|
uint32_t i_read : 1; /**< PE does not support Instruction Read.
|
|
This is a RO copy of SRIO*_IP_FEATURE[OPS<30>] */
|
|
uint32_t rd_own : 1; /**< PE does not support Read for Ownership.
|
|
This is a RO copy of SRIO*_IP_FEATURE[OPS<29>] */
|
|
uint32_t d_invald : 1; /**< PE does not support Data Cache Invalidate.
|
|
This is a RO copy of SRIO*_IP_FEATURE[OPS<28>] */
|
|
uint32_t castout : 1; /**< PE does not support Castout Operations.
|
|
This is a RO copy of SRIO*_IP_FEATURE[OPS<27>] */
|
|
uint32_t d_flush : 1; /**< PE does not support Data Cache Flush.
|
|
This is a RO copy of SRIO*_IP_FEATURE[OPS<26>] */
|
|
uint32_t io_read : 1; /**< PE does not support IO Read.
|
|
This is a RO copy of SRIO*_IP_FEATURE[OPS<25>] */
|
|
uint32_t i_invald : 1; /**< PE does not support Instruction Cache Invalidate.
|
|
This is a RO copy of SRIO*_IP_FEATURE[OPS<24>] */
|
|
uint32_t tlb_inv : 1; /**< PE does not support TLB Entry Invalidate.
|
|
This is a RO copy of SRIO*_IP_FEATURE[OPS<23>] */
|
|
uint32_t tlb_invs : 1; /**< PE does not support TLB Entry Invalidate Sync.
|
|
This is a RO copy of SRIO*_IP_FEATURE[OPS<22>] */
|
|
uint32_t reserved_16_21 : 6;
|
|
uint32_t read : 1; /**< PE can support Nread operations.
|
|
This is a RO copy of SRIO*_IP_FEATURE[OPS<15>] */
|
|
uint32_t write : 1; /**< PE can support Nwrite operations.
|
|
This is a RO copy of SRIO*_IP_FEATURE[OPS<14>] */
|
|
uint32_t swrite : 1; /**< PE can support Swrite operations.
|
|
This is a RO copy of SRIO*_IP_FEATURE[OPS<13>] */
|
|
uint32_t write_r : 1; /**< PE can support Write with Response operations.
|
|
This is a RO copy of SRIO*_IP_FEATURE[OPS<12>] */
|
|
uint32_t msg : 1; /**< PE can support Data Message operations.
|
|
This is a RO copy of SRIO*_IP_FEATURE[OPS<11>] */
|
|
uint32_t doorbell : 1; /**< PE can support Doorbell operations.
|
|
This is a RO copy of SRIO*_IP_FEATURE[OPS<10>] */
|
|
uint32_t compswap : 1; /**< PE does not support Atomic Compare and Swap.
|
|
This is a RO copy of SRIO*_IP_FEATURE[OPS<9>] */
|
|
uint32_t testswap : 1; /**< PE does not support Atomic Test and Swap.
|
|
This is a RO copy of SRIO*_IP_FEATURE[OPS<8>] */
|
|
uint32_t atom_inc : 1; /**< PE can support Atomic increment operations.
|
|
This is a RO copy of SRIO*_IP_FEATURE[OPS<7>] */
|
|
uint32_t atom_dec : 1; /**< PE can support Atomic decrement operations.
|
|
This is a RO copy of SRIO*_IP_FEATURE[OPS<6>] */
|
|
uint32_t atom_set : 1; /**< PE can support Atomic set operations.
|
|
This is a RO copy of SRIO*_IP_FEATURE[OPS<5>] */
|
|
uint32_t atom_clr : 1; /**< PE can support Atomic clear operations.
|
|
This is a RO copy of SRIO*_IP_FEATURE[OPS<4>] */
|
|
uint32_t atom_swp : 1; /**< PE does not support Atomic Swap.
|
|
This is a RO copy of SRIO*_IP_FEATURE[OPS<3>] */
|
|
uint32_t port_wr : 1; /**< PE can Port Write operations.
|
|
This is a RO copy of SRIO*_IP_FEATURE[OPS<2>] */
|
|
uint32_t reserved_0_1 : 2;
|
|
#else
|
|
uint32_t reserved_0_1 : 2;
|
|
uint32_t port_wr : 1;
|
|
uint32_t atom_swp : 1;
|
|
uint32_t atom_clr : 1;
|
|
uint32_t atom_set : 1;
|
|
uint32_t atom_dec : 1;
|
|
uint32_t atom_inc : 1;
|
|
uint32_t testswap : 1;
|
|
uint32_t compswap : 1;
|
|
uint32_t doorbell : 1;
|
|
uint32_t msg : 1;
|
|
uint32_t write_r : 1;
|
|
uint32_t swrite : 1;
|
|
uint32_t write : 1;
|
|
uint32_t read : 1;
|
|
uint32_t reserved_16_21 : 6;
|
|
uint32_t tlb_invs : 1;
|
|
uint32_t tlb_inv : 1;
|
|
uint32_t i_invald : 1;
|
|
uint32_t io_read : 1;
|
|
uint32_t d_flush : 1;
|
|
uint32_t castout : 1;
|
|
uint32_t d_invald : 1;
|
|
uint32_t rd_own : 1;
|
|
uint32_t i_read : 1;
|
|
uint32_t gsm_read : 1;
|
|
#endif
|
|
} s;
|
|
struct cvmx_sriomaintx_dst_ops_s cn63xx;
|
|
struct cvmx_sriomaintx_dst_ops_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_sriomaintx_dst_ops cvmx_sriomaintx_dst_ops_t;
|
|
|
|
/**
|
|
* cvmx_sriomaint#_erb_attr_capt
|
|
*
|
|
* SRIOMAINT_ERB_ATTR_CAPT = SRIO Attributes Capture
|
|
*
|
|
* Attributes Capture
|
|
*
|
|
* Notes:
|
|
* This register contains the information captured during the error.
|
|
* The HW will not update this register (i.e. this register is locked) while
|
|
* VALID is set in this CSR.
|
|
* The HW sets SRIO_INT_REG[PHY_ERB] every time it sets VALID in this CSR.
|
|
* To handle the interrupt, the following procedure may be best:
|
|
* (1) clear SRIO_INT_REG[PHY_ERB],
|
|
* (2) read this CSR, corresponding SRIOMAINT*_ERB_ERR_DET, SRIOMAINT*_ERB_PACK_SYM_CAPT,
|
|
* SRIOMAINT*_ERB_PACK_CAPT_1, SRIOMAINT*_ERB_PACK_CAPT_2, and SRIOMAINT*_ERB_PACK_CAPT_3
|
|
* (3) Write VALID in this CSR to 0.
|
|
*
|
|
* Clk_Rst: SRIOMAINT(0..1)_ERB_ATTR_CAPT hclk hrst_n
|
|
*/
|
|
union cvmx_sriomaintx_erb_attr_capt
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_sriomaintx_erb_attr_capt_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t inf_type : 3; /**< Type of Information Logged.
|
|
000 - Packet
|
|
010 - Short Control Symbol
|
|
(use only first capture register)
|
|
All Others Reserved */
|
|
uint32_t err_type : 5; /**< The encoded value of the 31 minus the bit in
|
|
SRIOMAINT(0..1)_ERB_ERR_DET that describes the error
|
|
captured in SRIOMAINT(0..1)_ERB_*CAPT Registers.
|
|
(For example a value of 5 indicates 31-5 = bit 26) */
|
|
uint32_t err_info : 20; /**< Error Info. (Pass 2)
|
|
ERR_TYPE Bits Description
|
|
0 23 TX Protocol Error
|
|
22 RX Protocol Error
|
|
21 TX Link Response Timeout
|
|
20 TX ACKID Timeout
|
|
- 19:16 Reserved
|
|
- 15:12 TX Protocol ID
|
|
1 = Rcvd Unexpected Link Response
|
|
2 = Rcvd Link Response before Req
|
|
3 = Rcvd NACK servicing NACK
|
|
4 = Rcvd NACK
|
|
5 = Rcvd RETRY servicing RETRY
|
|
6 = Rcvd RETRY servicing NACK
|
|
7 = Rcvd ACK servicing RETRY
|
|
8 = Rcvd ACK servicing NACK
|
|
9 = Unexp ACKID on ACK or RETRY
|
|
10 = Unexp ACK or RETRY
|
|
- 11:8 Reserved
|
|
- 7:4 RX Protocol ID
|
|
1 = Rcvd EOP w/o Prev SOP
|
|
2 = Rcvd STOMP w/o Prev SOP
|
|
3 = Unexp RESTART
|
|
4 = Redundant Status from LinkReq
|
|
9-16 23:20 RX K Bits
|
|
- 19:0 Reserved
|
|
26 23:20 RX K Bits
|
|
- 19:0 Reserved
|
|
27 23:12 Type
|
|
0x000 TX
|
|
0x010 RX
|
|
- 11:8 RX or TX Protocol ID (see above)
|
|
- 7:4 Reserved
|
|
30 23:20 RX K Bits
|
|
- 19:0 Reserved
|
|
31 23:16 ACKID Timeout 0x2
|
|
- 15:14 Reserved
|
|
- 13:8 AckID
|
|
- 7:4 Reserved
|
|
All others ERR_TYPEs are reserved. */
|
|
uint32_t reserved_1_3 : 3;
|
|
uint32_t valid : 1; /**< This bit is set by hardware to indicate that the
|
|
Packet/control symbol capture registers contain
|
|
valid information. For control symbols, only
|
|
capture register 0 will contain meaningful
|
|
information. This bit must be cleared by software
|
|
to allow capture of other errors. */
|
|
#else
|
|
uint32_t valid : 1;
|
|
uint32_t reserved_1_3 : 3;
|
|
uint32_t err_info : 20;
|
|
uint32_t err_type : 5;
|
|
uint32_t inf_type : 3;
|
|
#endif
|
|
} s;
|
|
struct cvmx_sriomaintx_erb_attr_capt_s cn63xx;
|
|
struct cvmx_sriomaintx_erb_attr_capt_cn63xxp1
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t inf_type : 3; /**< Type of Information Logged.
|
|
000 - Packet
|
|
010 - Short Control Symbol
|
|
(use only first capture register)
|
|
All Others Reserved */
|
|
uint32_t err_type : 5; /**< The encoded value of the 31 minus the bit in
|
|
SRIOMAINT(0..1)_ERB_ERR_DET that describes the error
|
|
captured in SRIOMAINT(0..1)_ERB_*CAPT Registers.
|
|
(For example a value of 5 indicates 31-5 = bit 26) */
|
|
uint32_t reserved_1_23 : 23;
|
|
uint32_t valid : 1; /**< This bit is set by hardware to indicate that the
|
|
Packet/control symbol capture registers contain
|
|
valid information. For control symbols, only
|
|
capture register 0 will contain meaningful
|
|
information. This bit must be cleared by software
|
|
to allow capture of other errors. */
|
|
#else
|
|
uint32_t valid : 1;
|
|
uint32_t reserved_1_23 : 23;
|
|
uint32_t err_type : 5;
|
|
uint32_t inf_type : 3;
|
|
#endif
|
|
} cn63xxp1;
|
|
};
|
|
typedef union cvmx_sriomaintx_erb_attr_capt cvmx_sriomaintx_erb_attr_capt_t;
|
|
|
|
/**
|
|
* cvmx_sriomaint#_erb_err_det
|
|
*
|
|
* SRIOMAINT_ERB_ERR_DET = SRIO Error Detect
|
|
*
|
|
* Error Detect
|
|
*
|
|
* Notes:
|
|
* The Error Detect Register indicates physical layer transmission errors detected by the hardware.
|
|
* The HW will not update this register (i.e. this register is locked) while
|
|
* SRIOMAINT*_ERB_ATTR_CAPT[VALID] is set.
|
|
*
|
|
* Clk_Rst: SRIOMAINT(0..1)_ERB_ERR_DET hclk hrst_n
|
|
*/
|
|
union cvmx_sriomaintx_erb_err_det
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_sriomaintx_erb_err_det_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t imp_err : 1; /**< Implementation Specific Error added for Pass 2. */
|
|
uint32_t reserved_23_30 : 8;
|
|
uint32_t ctl_crc : 1; /**< Received a control symbol with a bad CRC value
|
|
Complete Symbol in SRIOMAINT(0..1)_ERB_PACK_SYM_CAPT */
|
|
uint32_t uns_id : 1; /**< Received an acknowledge control symbol with an
|
|
unexpected ackID (packet-accepted or packet_retry)
|
|
Partial Symbol in SRIOMAINT(0..1)_ERB_PACK_SYM_CAPT */
|
|
uint32_t nack : 1; /**< Received packet-not-accepted acknowledge control
|
|
symbols.
|
|
Partial Symbol in SRIOMAINT(0..1)_ERB_PACK_SYM_CAPT */
|
|
uint32_t out_ack : 1; /**< Received packet with unexpected ackID value
|
|
Header in SRIOMAINT(0..1)_ERB_PACK_SYM_CAPT */
|
|
uint32_t pkt_crc : 1; /**< Received a packet with a bad CRC value
|
|
Header in SRIOMAINT(0..1)_ERB_PACK_SYM_CAPT */
|
|
uint32_t size : 1; /**< Received packet which exceeds the maximum allowed
|
|
size of 276 bytes.
|
|
Header in SRIOMAINT(0..1)_ERB_PACK_SYM_CAPT */
|
|
uint32_t inv_char : 1; /**< Received illegal, 8B/10B error or undefined
|
|
codegroup within a packet. (Pass 2)
|
|
Header in SRIOMAINT(0..1)_ERB_PACK_SYM_CAPT */
|
|
uint32_t inv_data : 1; /**< Received data codegroup or 8B/10B error within an
|
|
IDLE sequence. (Pass 2)
|
|
Header in SRIOMAINT(0..1)_ERB_PACK_SYM_CAPT */
|
|
uint32_t reserved_6_14 : 9;
|
|
uint32_t bad_ack : 1; /**< Link_response received with an ackID that is not
|
|
outstanding.
|
|
Partial Symbol in SRIOMAINT(0..1)_ERB_PACK_SYM_CAPT */
|
|
uint32_t proterr : 1; /**< An unexpected packet or control symbol was
|
|
received.
|
|
Partial Symbol in SRIOMAINT(0..1)_ERB_PACK_SYM_CAPT */
|
|
uint32_t f_toggle : 1; /**< Reserved. */
|
|
uint32_t del_err : 1; /**< Received illegal or undefined codegroup.
|
|
(either INV_DATA or INV_CHAR) (Pass 2)
|
|
Complete Symbol in SRIOMAINT(0..1)_ERB_PACK_SYM_CAPT */
|
|
uint32_t uns_ack : 1; /**< An unexpected acknowledge control symbol was
|
|
received.
|
|
Partial Symbol in SRIOMAINT(0..1)_ERB_PACK_SYM_CAPT */
|
|
uint32_t lnk_tout : 1; /**< An acknowledge or link-response control symbol is
|
|
not received within the specified timeout interval
|
|
Partial Header in SRIOMAINT(0..1)_ERB_PACK_SYM_CAPT */
|
|
#else
|
|
uint32_t lnk_tout : 1;
|
|
uint32_t uns_ack : 1;
|
|
uint32_t del_err : 1;
|
|
uint32_t f_toggle : 1;
|
|
uint32_t proterr : 1;
|
|
uint32_t bad_ack : 1;
|
|
uint32_t reserved_6_14 : 9;
|
|
uint32_t inv_data : 1;
|
|
uint32_t inv_char : 1;
|
|
uint32_t size : 1;
|
|
uint32_t pkt_crc : 1;
|
|
uint32_t out_ack : 1;
|
|
uint32_t nack : 1;
|
|
uint32_t uns_id : 1;
|
|
uint32_t ctl_crc : 1;
|
|
uint32_t reserved_23_30 : 8;
|
|
uint32_t imp_err : 1;
|
|
#endif
|
|
} s;
|
|
struct cvmx_sriomaintx_erb_err_det_s cn63xx;
|
|
struct cvmx_sriomaintx_erb_err_det_cn63xxp1
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t reserved_23_31 : 9;
|
|
uint32_t ctl_crc : 1; /**< Received a control symbol with a bad CRC value
|
|
Complete Symbol in SRIOMAINT(0..1)_ERB_PACK_SYM_CAPT */
|
|
uint32_t uns_id : 1; /**< Received an acknowledge control symbol with an
|
|
unexpected ackID (packet-accepted or packet_retry)
|
|
Partial Symbol in SRIOMAINT(0..1)_ERB_PACK_SYM_CAPT */
|
|
uint32_t nack : 1; /**< Received packet-not-accepted acknowledge control
|
|
symbols.
|
|
Partial Symbol in SRIOMAINT(0..1)_ERB_PACK_SYM_CAPT */
|
|
uint32_t out_ack : 1; /**< Received packet with unexpected ackID value
|
|
Header in SRIOMAINT(0..1)_ERB_PACK_SYM_CAPT */
|
|
uint32_t pkt_crc : 1; /**< Received a packet with a bad CRC value
|
|
Header in SRIOMAINT(0..1)_ERB_PACK_SYM_CAPT */
|
|
uint32_t size : 1; /**< Received packet which exceeds the maximum allowed
|
|
size of 276 bytes.
|
|
Header in SRIOMAINT(0..1)_ERB_PACK_SYM_CAPT */
|
|
uint32_t reserved_6_16 : 11;
|
|
uint32_t bad_ack : 1; /**< Link_response received with an ackID that is not
|
|
outstanding.
|
|
Partial Symbol in SRIOMAINT(0..1)_ERB_PACK_SYM_CAPT */
|
|
uint32_t proterr : 1; /**< An unexpected packet or control symbol was
|
|
received.
|
|
Partial Symbol in SRIOMAINT(0..1)_ERB_PACK_SYM_CAPT */
|
|
uint32_t f_toggle : 1; /**< Reserved. */
|
|
uint32_t del_err : 1; /**< Received illegal or undefined codegroup.
|
|
(either INV_DATA or INV_CHAR) (Pass 2)
|
|
Complete Symbol in SRIOMAINT(0..1)_ERB_PACK_SYM_CAPT */
|
|
uint32_t uns_ack : 1; /**< An unexpected acknowledge control symbol was
|
|
received.
|
|
Partial Symbol in SRIOMAINT(0..1)_ERB_PACK_SYM_CAPT */
|
|
uint32_t lnk_tout : 1; /**< An acknowledge or link-response control symbol is
|
|
not received within the specified timeout interval
|
|
Partial Header in SRIOMAINT(0..1)_ERB_PACK_SYM_CAPT */
|
|
#else
|
|
uint32_t lnk_tout : 1;
|
|
uint32_t uns_ack : 1;
|
|
uint32_t del_err : 1;
|
|
uint32_t f_toggle : 1;
|
|
uint32_t proterr : 1;
|
|
uint32_t bad_ack : 1;
|
|
uint32_t reserved_6_16 : 11;
|
|
uint32_t size : 1;
|
|
uint32_t pkt_crc : 1;
|
|
uint32_t out_ack : 1;
|
|
uint32_t nack : 1;
|
|
uint32_t uns_id : 1;
|
|
uint32_t ctl_crc : 1;
|
|
uint32_t reserved_23_31 : 9;
|
|
#endif
|
|
} cn63xxp1;
|
|
};
|
|
typedef union cvmx_sriomaintx_erb_err_det cvmx_sriomaintx_erb_err_det_t;
|
|
|
|
/**
|
|
* cvmx_sriomaint#_erb_err_rate
|
|
*
|
|
* SRIOMAINT_ERB_ERR_RATE = SRIO Error Rate
|
|
*
|
|
* Error Rate
|
|
*
|
|
* Notes:
|
|
* The Error Rate register is used with the Error Rate Threshold register to monitor and control the
|
|
* reporting of transmission errors.
|
|
*
|
|
* Clk_Rst: SRIOMAINT(0..1)_ERB_ERR_RATE hclk hrst_n
|
|
*/
|
|
union cvmx_sriomaintx_erb_err_rate
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_sriomaintx_erb_err_rate_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t err_bias : 8; /**< These bits provide the error rate bias value.
|
|
0x00 - do not decrement the error rate counter
|
|
0x01 - decrement every 1ms (+/-34%)
|
|
0x02 - decrement every 10ms (+/-34%)
|
|
0x04 - decrement every 100ms (+/-34%)
|
|
0x08 - decrement every 1s (+/-34%)
|
|
0x10 - decrement every 10s (+/-34%)
|
|
0x20 - decrement every 100s (+/-34%)
|
|
0x40 - decrement every 1000s (+/-34%)
|
|
0x80 - decrement every 10000s (+/-34%)
|
|
All other values are reserved */
|
|
uint32_t reserved_18_23 : 6;
|
|
uint32_t rate_lim : 2; /**< These bits limit the incrementing of the error
|
|
rate counter above the failed threshold trigger.
|
|
00 - only count 2 errors above
|
|
01 - only count 4 errors above
|
|
10 - only count 16 error above
|
|
11 - do not limit incrementing the error rate ct */
|
|
uint32_t pk_rate : 8; /**< Peak Value attainted by the error rate counter */
|
|
uint32_t rate_cnt : 8; /**< These bits maintain a count of the number of
|
|
transmission errors that have been detected by the
|
|
port, decremented by the Error Rate Bias
|
|
mechanism, to create an indication of the link
|
|
error rate. */
|
|
#else
|
|
uint32_t rate_cnt : 8;
|
|
uint32_t pk_rate : 8;
|
|
uint32_t rate_lim : 2;
|
|
uint32_t reserved_18_23 : 6;
|
|
uint32_t err_bias : 8;
|
|
#endif
|
|
} s;
|
|
struct cvmx_sriomaintx_erb_err_rate_s cn63xx;
|
|
struct cvmx_sriomaintx_erb_err_rate_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_sriomaintx_erb_err_rate cvmx_sriomaintx_erb_err_rate_t;
|
|
|
|
/**
|
|
* cvmx_sriomaint#_erb_err_rate_en
|
|
*
|
|
* SRIOMAINT_ERB_ERR_RATE_EN = SRIO Error Rate Enable
|
|
*
|
|
* Error Rate Enable
|
|
*
|
|
* Notes:
|
|
* This register contains the bits that control when an error condition is allowed to increment the
|
|
* error rate counter in the Error Rate Threshold Register and lock the Error Capture registers.
|
|
*
|
|
* Clk_Rst: SRIOMAINT(0..1)_ERB_ERR_RATE_EN hclk hrst_n
|
|
*/
|
|
union cvmx_sriomaintx_erb_err_rate_en
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_sriomaintx_erb_err_rate_en_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t imp_err : 1; /**< Enable Implementation Specific Error (Pass 2). */
|
|
uint32_t reserved_23_30 : 8;
|
|
uint32_t ctl_crc : 1; /**< Enable error rate counting of control symbols with
|
|
bad CRC values */
|
|
uint32_t uns_id : 1; /**< Enable error rate counting of acknowledge control
|
|
symbol with unexpected ackIDs
|
|
(packet-accepted or packet_retry) */
|
|
uint32_t nack : 1; /**< Enable error rate counting of packet-not-accepted
|
|
acknowledge control symbols. */
|
|
uint32_t out_ack : 1; /**< Enable error rate counting of received packet with
|
|
unexpected ackID value */
|
|
uint32_t pkt_crc : 1; /**< Enable error rate counting of received a packet
|
|
with a bad CRC value */
|
|
uint32_t size : 1; /**< Enable error rate counting of received packet
|
|
which exceeds the maximum size of 276 bytes. */
|
|
uint32_t inv_char : 1; /**< Enable error rate counting of received illegal
|
|
illegal, 8B/10B error or undefined codegroup
|
|
within a packet. (Pass 2) */
|
|
uint32_t inv_data : 1; /**< Enable error rate counting of received data
|
|
codegroup or 8B/10B error within IDLE sequence.
|
|
(Pass 2) */
|
|
uint32_t reserved_6_14 : 9;
|
|
uint32_t bad_ack : 1; /**< Enable error rate counting of link_responses with
|
|
an ackID that is not outstanding. */
|
|
uint32_t proterr : 1; /**< Enable error rate counting of unexpected packet or
|
|
control symbols received. */
|
|
uint32_t f_toggle : 1; /**< Reserved. */
|
|
uint32_t del_err : 1; /**< Enable error rate counting of illegal or undefined
|
|
codegroups (either INV_DATA or INV_CHAR). (Pass 2) */
|
|
uint32_t uns_ack : 1; /**< Enable error rate counting of unexpected
|
|
acknowledge control symbols received. */
|
|
uint32_t lnk_tout : 1; /**< Enable error rate counting of acknowledge or
|
|
link-response control symbols not received within
|
|
the specified timeout interval */
|
|
#else
|
|
uint32_t lnk_tout : 1;
|
|
uint32_t uns_ack : 1;
|
|
uint32_t del_err : 1;
|
|
uint32_t f_toggle : 1;
|
|
uint32_t proterr : 1;
|
|
uint32_t bad_ack : 1;
|
|
uint32_t reserved_6_14 : 9;
|
|
uint32_t inv_data : 1;
|
|
uint32_t inv_char : 1;
|
|
uint32_t size : 1;
|
|
uint32_t pkt_crc : 1;
|
|
uint32_t out_ack : 1;
|
|
uint32_t nack : 1;
|
|
uint32_t uns_id : 1;
|
|
uint32_t ctl_crc : 1;
|
|
uint32_t reserved_23_30 : 8;
|
|
uint32_t imp_err : 1;
|
|
#endif
|
|
} s;
|
|
struct cvmx_sriomaintx_erb_err_rate_en_s cn63xx;
|
|
struct cvmx_sriomaintx_erb_err_rate_en_cn63xxp1
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t reserved_23_31 : 9;
|
|
uint32_t ctl_crc : 1; /**< Enable error rate counting of control symbols with
|
|
bad CRC values */
|
|
uint32_t uns_id : 1; /**< Enable error rate counting of acknowledge control
|
|
symbol with unexpected ackIDs
|
|
(packet-accepted or packet_retry) */
|
|
uint32_t nack : 1; /**< Enable error rate counting of packet-not-accepted
|
|
acknowledge control symbols. */
|
|
uint32_t out_ack : 1; /**< Enable error rate counting of received packet with
|
|
unexpected ackID value */
|
|
uint32_t pkt_crc : 1; /**< Enable error rate counting of received a packet
|
|
with a bad CRC value */
|
|
uint32_t size : 1; /**< Enable error rate counting of received packet
|
|
which exceeds the maximum size of 276 bytes. */
|
|
uint32_t reserved_6_16 : 11;
|
|
uint32_t bad_ack : 1; /**< Enable error rate counting of link_responses with
|
|
an ackID that is not outstanding. */
|
|
uint32_t proterr : 1; /**< Enable error rate counting of unexpected packet or
|
|
control symbols received. */
|
|
uint32_t f_toggle : 1; /**< Reserved. */
|
|
uint32_t del_err : 1; /**< Enable error rate counting of illegal or undefined
|
|
codegroups (either INV_DATA or INV_CHAR). (Pass 2) */
|
|
uint32_t uns_ack : 1; /**< Enable error rate counting of unexpected
|
|
acknowledge control symbols received. */
|
|
uint32_t lnk_tout : 1; /**< Enable error rate counting of acknowledge or
|
|
link-response control symbols not received within
|
|
the specified timeout interval */
|
|
#else
|
|
uint32_t lnk_tout : 1;
|
|
uint32_t uns_ack : 1;
|
|
uint32_t del_err : 1;
|
|
uint32_t f_toggle : 1;
|
|
uint32_t proterr : 1;
|
|
uint32_t bad_ack : 1;
|
|
uint32_t reserved_6_16 : 11;
|
|
uint32_t size : 1;
|
|
uint32_t pkt_crc : 1;
|
|
uint32_t out_ack : 1;
|
|
uint32_t nack : 1;
|
|
uint32_t uns_id : 1;
|
|
uint32_t ctl_crc : 1;
|
|
uint32_t reserved_23_31 : 9;
|
|
#endif
|
|
} cn63xxp1;
|
|
};
|
|
typedef union cvmx_sriomaintx_erb_err_rate_en cvmx_sriomaintx_erb_err_rate_en_t;
|
|
|
|
/**
|
|
* cvmx_sriomaint#_erb_err_rate_thr
|
|
*
|
|
* SRIOMAINT_ERB_ERR_RATE_THR = SRIO Error Rate Threshold
|
|
*
|
|
* Error Rate Threshold
|
|
*
|
|
* Notes:
|
|
* The Error Rate Threshold register is used to control the reporting of errors to the link status.
|
|
* Typically the Degraded Threshold is less than the Fail Threshold.
|
|
*
|
|
* Clk_Rst: SRIOMAINT(0..1)_ERB_ERR_RATE_THR hclk hrst_n
|
|
*/
|
|
union cvmx_sriomaintx_erb_err_rate_thr
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_sriomaintx_erb_err_rate_thr_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t fail_th : 8; /**< These bits provide the threshold value for
|
|
reporting an error condition due to a possibly
|
|
broken link.
|
|
0x00 - Disable the Error Rate Failed Threshold
|
|
Trigger
|
|
0x01 - Set the error reporting threshold to 1
|
|
0x02 - Set the error reporting threshold to 2
|
|
- ...
|
|
0xFF - Set the error reporting threshold to 255 */
|
|
uint32_t dgrad_th : 8; /**< These bits provide the threshold value for
|
|
reporting an error condition due to a possibly
|
|
degrading link.
|
|
0x00 - Disable the Degrade Rate Failed Threshold
|
|
Trigger
|
|
0x01 - Set the error reporting threshold to 1
|
|
0x02 - Set the error reporting threshold to 2
|
|
- ...
|
|
0xFF - Set the error reporting threshold to 255 */
|
|
uint32_t reserved_0_15 : 16;
|
|
#else
|
|
uint32_t reserved_0_15 : 16;
|
|
uint32_t dgrad_th : 8;
|
|
uint32_t fail_th : 8;
|
|
#endif
|
|
} s;
|
|
struct cvmx_sriomaintx_erb_err_rate_thr_s cn63xx;
|
|
struct cvmx_sriomaintx_erb_err_rate_thr_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_sriomaintx_erb_err_rate_thr cvmx_sriomaintx_erb_err_rate_thr_t;
|
|
|
|
/**
|
|
* cvmx_sriomaint#_erb_hdr
|
|
*
|
|
* SRIOMAINT_ERB_HDR = SRIO Error Reporting Block Header
|
|
*
|
|
* Error Reporting Block Header
|
|
*
|
|
* Notes:
|
|
* The error management extensions block header register contains the EF_PTR to the next EF_BLK and
|
|
* the EF_ID that identifies this as the error management extensions block header. In this
|
|
* implementation this is the last block and therefore the EF_PTR is a NULL pointer.
|
|
*
|
|
* Clk_Rst: SRIOMAINT(0..1)_ERB_HDR hclk hrst_n
|
|
*/
|
|
union cvmx_sriomaintx_erb_hdr
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_sriomaintx_erb_hdr_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t ef_ptr : 16; /**< Pointer to the next block in the extended features
|
|
data structure. */
|
|
uint32_t ef_id : 16; /**< Single Port ID */
|
|
#else
|
|
uint32_t ef_id : 16;
|
|
uint32_t ef_ptr : 16;
|
|
#endif
|
|
} s;
|
|
struct cvmx_sriomaintx_erb_hdr_s cn63xx;
|
|
struct cvmx_sriomaintx_erb_hdr_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_sriomaintx_erb_hdr cvmx_sriomaintx_erb_hdr_t;
|
|
|
|
/**
|
|
* cvmx_sriomaint#_erb_lt_addr_capt_h
|
|
*
|
|
* SRIOMAINT_ERB_LT_ADDR_CAPT_H = SRIO Logical/Transport Layer High Address Capture
|
|
*
|
|
* Logical/Transport Layer High Address Capture
|
|
*
|
|
* Notes:
|
|
* This register contains error information. It is locked when a Logical/Transport error is detected
|
|
* and unlocked when the SRIOMAINT(0..1)_ERB_LT_ERR_DET is written to zero. This register should be
|
|
* written only when error detection is disabled. This register is only required for end point
|
|
* transactions of 50 or 66 bits.
|
|
*
|
|
* Clk_Rst: SRIOMAINT(0..1)_ERB_LT_ADDR_CAPT_H hclk hrst_n
|
|
*/
|
|
union cvmx_sriomaintx_erb_lt_addr_capt_h
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_sriomaintx_erb_lt_addr_capt_h_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t addr : 32; /**< Most significant 32 bits of the address associated
|
|
with the error. Information supplied for requests
|
|
and responses if available. */
|
|
#else
|
|
uint32_t addr : 32;
|
|
#endif
|
|
} s;
|
|
struct cvmx_sriomaintx_erb_lt_addr_capt_h_s cn63xx;
|
|
struct cvmx_sriomaintx_erb_lt_addr_capt_h_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_sriomaintx_erb_lt_addr_capt_h cvmx_sriomaintx_erb_lt_addr_capt_h_t;
|
|
|
|
/**
|
|
* cvmx_sriomaint#_erb_lt_addr_capt_l
|
|
*
|
|
* SRIOMAINT_ERB_LT_ADDR_CAPT_L = SRIO Logical/Transport Layer Low Address Capture
|
|
*
|
|
* Logical/Transport Layer Low Address Capture
|
|
*
|
|
* Notes:
|
|
* This register contains error information. It is locked when a Logical/Transport error is detected
|
|
* and unlocked when the SRIOMAINT(0..1)_ERB_LT_ERR_DET is written to zero. This register should be
|
|
* written only when error detection is disabled.
|
|
*
|
|
* Clk_Rst: SRIOMAINT(0..1)_ERB_LT_ADDR_CAPT_L hclk hrst_n
|
|
*/
|
|
union cvmx_sriomaintx_erb_lt_addr_capt_l
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_sriomaintx_erb_lt_addr_capt_l_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t addr : 29; /**< Least significant 29 bits of the address
|
|
associated with the error. Bits 31:24 specify the
|
|
request HOP count for Maintenance Operations.
|
|
Information supplied for requests and responses if
|
|
available. */
|
|
uint32_t reserved_2_2 : 1;
|
|
uint32_t xaddr : 2; /**< Extended address bits of the address associated
|
|
with the error. Information supplied for requests
|
|
and responses if available. */
|
|
#else
|
|
uint32_t xaddr : 2;
|
|
uint32_t reserved_2_2 : 1;
|
|
uint32_t addr : 29;
|
|
#endif
|
|
} s;
|
|
struct cvmx_sriomaintx_erb_lt_addr_capt_l_s cn63xx;
|
|
struct cvmx_sriomaintx_erb_lt_addr_capt_l_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_sriomaintx_erb_lt_addr_capt_l cvmx_sriomaintx_erb_lt_addr_capt_l_t;
|
|
|
|
/**
|
|
* cvmx_sriomaint#_erb_lt_ctrl_capt
|
|
*
|
|
* SRIOMAINT_ERB_LT_CTRL_CAPT = SRIO Logical/Transport Layer Control Capture
|
|
*
|
|
* Logical/Transport Layer Control Capture
|
|
*
|
|
* Notes:
|
|
* This register contains error information. It is locked when a Logical/Transport error is detected
|
|
* and unlocked when the SRIOMAINT(0..1)_ERB_LT_ERR_DET is written to zero. This register should be
|
|
* written only when error detection is disabled.
|
|
*
|
|
* Clk_Rst: SRIOMAINT(0..1)_ERB_LT_CTRL_CAPT hclk hrst_n
|
|
*/
|
|
union cvmx_sriomaintx_erb_lt_ctrl_capt
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_sriomaintx_erb_lt_ctrl_capt_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t ftype : 4; /**< Format Type associated with the error */
|
|
uint32_t ttype : 4; /**< Transaction Type associated with the error
|
|
(For Messages)
|
|
Message Length */
|
|
uint32_t extra : 8; /**< Additional Information
|
|
(For Messages)
|
|
- 23:22 Letter
|
|
- 21:20 Mbox
|
|
- 19:16 Msgseg/xmbox
|
|
Information for the last message request sent
|
|
for the mailbox that had an error
|
|
(For Responses)
|
|
- 23:20 Response Request FTYPE
|
|
- 19:16 Response Request TTYPE
|
|
(For all other types)
|
|
Reserved. */
|
|
uint32_t status : 4; /**< Response Status.
|
|
(For all other Requests)
|
|
Reserved. */
|
|
uint32_t size : 4; /**< Size associated with the transaction. */
|
|
uint32_t tt : 1; /**< Transfer Type 0=ID8, 1=ID16. */
|
|
uint32_t wdptr : 1; /**< Word Pointer associated with the error. */
|
|
uint32_t reserved_5_5 : 1;
|
|
uint32_t capt_idx : 5; /**< Capture Index. 31 - Bit set in
|
|
SRIOMAINT(0..1)_ERB_LT_ERR_DET. */
|
|
#else
|
|
uint32_t capt_idx : 5;
|
|
uint32_t reserved_5_5 : 1;
|
|
uint32_t wdptr : 1;
|
|
uint32_t tt : 1;
|
|
uint32_t size : 4;
|
|
uint32_t status : 4;
|
|
uint32_t extra : 8;
|
|
uint32_t ttype : 4;
|
|
uint32_t ftype : 4;
|
|
#endif
|
|
} s;
|
|
struct cvmx_sriomaintx_erb_lt_ctrl_capt_s cn63xx;
|
|
struct cvmx_sriomaintx_erb_lt_ctrl_capt_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_sriomaintx_erb_lt_ctrl_capt cvmx_sriomaintx_erb_lt_ctrl_capt_t;
|
|
|
|
/**
|
|
* cvmx_sriomaint#_erb_lt_dev_id
|
|
*
|
|
* SRIOMAINT_ERB_LT_DEV_ID = SRIO Port-write Target deviceID
|
|
*
|
|
* Port-write Target deviceID
|
|
*
|
|
* Notes:
|
|
* This SRIO interface does not support generating Port-Writes based on ERB Errors. This register is
|
|
* currently unused and should be treated as reserved.
|
|
*
|
|
* Clk_Rst: SRIOMAINT_ERB_LT_DEV_ID hclk hrst_n
|
|
*/
|
|
union cvmx_sriomaintx_erb_lt_dev_id
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_sriomaintx_erb_lt_dev_id_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t id16 : 8; /**< This is the most significant byte of the
|
|
port-write destination deviceID (large transport
|
|
systems only)
|
|
destination ID used for Port Write errors */
|
|
uint32_t id8 : 8; /**< This is the port-write destination deviceID */
|
|
uint32_t tt : 1; /**< Transport Type used for Port Write
|
|
0 = Small Transport, ID8 Only
|
|
1 = Large Transport, ID16 and ID8 */
|
|
uint32_t reserved_0_14 : 15;
|
|
#else
|
|
uint32_t reserved_0_14 : 15;
|
|
uint32_t tt : 1;
|
|
uint32_t id8 : 8;
|
|
uint32_t id16 : 8;
|
|
#endif
|
|
} s;
|
|
struct cvmx_sriomaintx_erb_lt_dev_id_s cn63xx;
|
|
struct cvmx_sriomaintx_erb_lt_dev_id_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_sriomaintx_erb_lt_dev_id cvmx_sriomaintx_erb_lt_dev_id_t;
|
|
|
|
/**
|
|
* cvmx_sriomaint#_erb_lt_dev_id_capt
|
|
*
|
|
* SRIOMAINT_ERB_LT_DEV_ID_CAPT = SRIO Logical/Transport Layer Device ID Capture
|
|
*
|
|
* Logical/Transport Layer Device ID Capture
|
|
*
|
|
* Notes:
|
|
* This register contains error information. It is locked when a Logical/Transport error is detected
|
|
* and unlocked when the SRIOMAINT(0..1)_ERB_LT_ERR_DET is written to zero. This register should be
|
|
* written only when error detection is disabled.
|
|
*
|
|
* Clk_Rst: SRIOMAINT(0..1)_ERB_LT_DEV_ID_CAPT hclk hrst_n
|
|
*/
|
|
union cvmx_sriomaintx_erb_lt_dev_id_capt
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_sriomaintx_erb_lt_dev_id_capt_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t dst_id16 : 8; /**< Most significant byte of the large transport
|
|
destination ID associated with the error */
|
|
uint32_t dst_id8 : 8; /**< Least significant byte of the large transport
|
|
destination ID or the 8-bit small transport
|
|
destination ID associated with the error */
|
|
uint32_t src_id16 : 8; /**< Most significant byte of the large transport
|
|
source ID associated with the error */
|
|
uint32_t src_id8 : 8; /**< Least significant byte of the large transport
|
|
source ID or the 8-bit small transport source ID
|
|
associated with the error */
|
|
#else
|
|
uint32_t src_id8 : 8;
|
|
uint32_t src_id16 : 8;
|
|
uint32_t dst_id8 : 8;
|
|
uint32_t dst_id16 : 8;
|
|
#endif
|
|
} s;
|
|
struct cvmx_sriomaintx_erb_lt_dev_id_capt_s cn63xx;
|
|
struct cvmx_sriomaintx_erb_lt_dev_id_capt_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_sriomaintx_erb_lt_dev_id_capt cvmx_sriomaintx_erb_lt_dev_id_capt_t;
|
|
|
|
/**
|
|
* cvmx_sriomaint#_erb_lt_err_det
|
|
*
|
|
* SRIOMAINT_ERB_LT_ERR_DET = SRIO Logical/Transport Layer Error Detect
|
|
*
|
|
* SRIO Logical/Transport Layer Error Detect
|
|
*
|
|
* Notes:
|
|
* This register indicates the error that was detected by the Logical or Transport logic layer.
|
|
* Once a bit is set in this CSR, HW will lock the register until SW writes a zero to clear all the
|
|
* fields. The HW sets SRIO_INT_REG[LOG_ERB] every time it sets one of the bits.
|
|
* To handle the interrupt, the following procedure may be best:
|
|
* (1) clear SRIO_INT_REG[LOG_ERB],
|
|
* (2) read this CSR, corresponding SRIOMAINT*_ERB_LT_ADDR_CAPT_H, SRIOMAINT*_ERB_LT_ADDR_CAPT_L,
|
|
* SRIOMAINT*_ERB_LT_DEV_ID_CAPT, and SRIOMAINT*_ERB_LT_CTRL_CAPT
|
|
* (3) Write this CSR to 0.
|
|
*
|
|
* Clk_Rst: SRIOMAINT(0..1)_ERB_LT_ERR_DET hclk hrst_n
|
|
*/
|
|
union cvmx_sriomaintx_erb_lt_err_det
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_sriomaintx_erb_lt_err_det_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t io_err : 1; /**< Received a response of ERROR for an IO Logical
|
|
Layer Request. This includes all Maintenance and
|
|
Memory Responses not destined for the RX Soft
|
|
Packet FIFO. When SRIO receives an ERROR response
|
|
for a read, the issuing core or DPI DMA engine
|
|
receives result bytes with all bits set. In the
|
|
case of writes with response, this bit is the only
|
|
indication of failure. */
|
|
uint32_t msg_err : 1; /**< Received a response of ERROR for an outgoing
|
|
message segment. This bit is the only direct
|
|
indication of a MSG_ERR. When a MSG_ERR occurs,
|
|
SRIO drops the message segment and will not set
|
|
SRIO*_INT_REG[OMSG*] after the message
|
|
"transfer". NOTE: SRIO can continue to send or
|
|
retry other segments from the same message after
|
|
a MSG_ERR. */
|
|
uint32_t gsm_err : 1; /**< Received a response of ERROR for an GSM Logical
|
|
Request. SRIO hardware never sets this bit. GSM
|
|
operations are not supported (outside of the Soft
|
|
Packet FIFO). */
|
|
uint32_t msg_fmt : 1; /**< Received an incoming Message Segment with a
|
|
formating error. A MSG_FMT error occurs when SRIO
|
|
receives a message segment with a reserved SSIZE,
|
|
or a illegal data payload size, or a MSGSEG greater
|
|
than MSGLEN, or a MSGSEG that is the duplicate of
|
|
one already received by an inflight message.
|
|
When a non-duplicate MSG_FMT error occurs, SRIO
|
|
drops the segment and sends an ERROR response.
|
|
When a duplicate MSG_FMT error occurs, SRIO
|
|
(internally) terminates the currently-inflight
|
|
message with an error and processes the duplicate,
|
|
which may result in a new message being generated
|
|
internally for the duplicate. */
|
|
uint32_t ill_tran : 1; /**< Received illegal fields in the request/response
|
|
packet for a supported transaction or any packet
|
|
with a reserved transaction type. When an ILL_TRAN
|
|
error occurs, SRIO ignores the packet. ILL_TRAN
|
|
errors are 2nd priority after ILL_TGT and may mask
|
|
other problems. Packets with ILL_TRAN errors cannot
|
|
enter the RX Soft Packet FIFO.
|
|
There are two things that can set ILL_TRAN:
|
|
(1) SRIO received a packet with a tt value is not
|
|
0 or 1, or (2) SRIO received a response to an
|
|
outstanding message segment whose status was not
|
|
DONE, RETRY, or ERROR. */
|
|
uint32_t ill_tgt : 1; /**< Received a packet that contained a destination ID
|
|
other than SRIOMAINT*_PRI_DEV_ID or
|
|
SRIOMAINT*_SEC_DEV_ID. When an ILL_TGT error
|
|
occurs, SRIO drops the packet. ILL_TGT errors are
|
|
highest priority, so may mask other problems.
|
|
Packets with ILL_TGT errors cannot enter the RX
|
|
soft packet fifo. */
|
|
uint32_t msg_tout : 1; /**< An expected incoming message request has not been
|
|
received within the time-out interval specified in
|
|
SRIOMAINT(0..1)_PORT_RT_CTL. When a MSG_TOUT occurs,
|
|
SRIO (internally) terminates the inflight message
|
|
with an error. */
|
|
uint32_t pkt_tout : 1; /**< A required response has not been received to an
|
|
outgoing memory, maintenance or message request
|
|
before the time-out interval specified in
|
|
SRIOMAINT(0..1)_PORT_RT_CTL. When an IO or maintenance
|
|
read request operation has a PKT_TOUT, the issuing
|
|
core load or DPI DMA engine receive all ones for
|
|
the result. When an IO NWRITE_R has a PKT_TOUT,
|
|
this bit is the only indication of failure. When a
|
|
message request operation has a PKT_TOUT, SRIO
|
|
discards the the outgoing message segment, and
|
|
this bit is the only direct indication of failure.
|
|
NOTE: SRIO may continue to send or retry other
|
|
segments from the same message. When one or more of
|
|
the segments in an outgoing message have a
|
|
PKT_TOUT, SRIO will not set SRIO*_INT_REG[OMSG*]
|
|
after the message "transfer". */
|
|
uint32_t uns_resp : 1; /**< An unsolicited/unexpected memory, maintenance or
|
|
message response packet was received that was not
|
|
destined for the RX Soft Packet FIFO. When this
|
|
condition is detected, the packet is dropped. */
|
|
uint32_t uns_tran : 1; /**< A transaction is received that is not supported.
|
|
SRIO HW will never set this bit - SRIO routes all
|
|
unsupported transactions to the RX soft packet
|
|
FIFO. */
|
|
uint32_t reserved_1_21 : 21;
|
|
uint32_t resp_sz : 1; /**< Received an incoming Memory or Maintenance
|
|
Read response packet with a DONE status and less
|
|
data then expected. This condition causes the
|
|
Read to be completed and an error response to be
|
|
returned with all the data bits set to the issuing
|
|
Core or DMA Engine. */
|
|
#else
|
|
uint32_t resp_sz : 1;
|
|
uint32_t reserved_1_21 : 21;
|
|
uint32_t uns_tran : 1;
|
|
uint32_t uns_resp : 1;
|
|
uint32_t pkt_tout : 1;
|
|
uint32_t msg_tout : 1;
|
|
uint32_t ill_tgt : 1;
|
|
uint32_t ill_tran : 1;
|
|
uint32_t msg_fmt : 1;
|
|
uint32_t gsm_err : 1;
|
|
uint32_t msg_err : 1;
|
|
uint32_t io_err : 1;
|
|
#endif
|
|
} s;
|
|
struct cvmx_sriomaintx_erb_lt_err_det_s cn63xx;
|
|
struct cvmx_sriomaintx_erb_lt_err_det_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_sriomaintx_erb_lt_err_det cvmx_sriomaintx_erb_lt_err_det_t;
|
|
|
|
/**
|
|
* cvmx_sriomaint#_erb_lt_err_en
|
|
*
|
|
* SRIOMAINT_ERB_LT_ERR_EN = SRIO Logical/Transport Layer Error Enable
|
|
*
|
|
* SRIO Logical/Transport Layer Error Enable
|
|
*
|
|
* Notes:
|
|
* This register contains the bits that control if an error condition locks the Logical/Transport
|
|
* Layer Error Detect and Capture registers and is reported to the system host.
|
|
*
|
|
* Clk_Rst: SRIOMAINT(0..1)_ERB_LT_ERR_EN hclk hrst_n
|
|
*/
|
|
union cvmx_sriomaintx_erb_lt_err_en
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_sriomaintx_erb_lt_err_en_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t io_err : 1; /**< Enable reporting of an IO error response. Save and
|
|
lock original request transaction information in
|
|
all Logical/Transport Layer Capture CSRs. */
|
|
uint32_t msg_err : 1; /**< Enable reporting of a Message error response. Save
|
|
and lock original request transaction information
|
|
in all Logical/Transport Layer Capture CSRs. */
|
|
uint32_t gsm_err : 1; /**< Enable reporting of a GSM error response. Save and
|
|
lock original request transaction capture
|
|
information in all Logical/Transport Layer Capture
|
|
CSRs. */
|
|
uint32_t msg_fmt : 1; /**< Enable reporting of a message format error. Save
|
|
and lock transaction capture information in
|
|
Logical/Transport Layer Device ID and Control
|
|
Capture CSRs. */
|
|
uint32_t ill_tran : 1; /**< Enable reporting of an illegal transaction decode
|
|
error Save and lock transaction capture
|
|
information in Logical/Transport Layer Device ID
|
|
and Control Capture CSRs. */
|
|
uint32_t ill_tgt : 1; /**< Enable reporting of an illegal transaction target
|
|
error. Save and lock transaction capture
|
|
information in Logical/Transport Layer Device ID
|
|
and Control Capture CSRs. */
|
|
uint32_t msg_tout : 1; /**< Enable reporting of a Message Request time-out
|
|
error. Save and lock transaction capture
|
|
information in Logical/Transport Layer Device ID
|
|
and Control Capture CSRs for the last Message
|
|
request segment packet received. */
|
|
uint32_t pkt_tout : 1; /**< Enable reporting of a packet response time-out
|
|
error. Save and lock original request address in
|
|
Logical/Transport Layer Address Capture CSRs.
|
|
Save and lock original request Destination ID in
|
|
Logical/Transport Layer Device ID Capture CSR. */
|
|
uint32_t uns_resp : 1; /**< Enable reporting of an unsolicited response error.
|
|
Save and lock transaction capture information in
|
|
Logical/Transport Layer Device ID and Control
|
|
Capture CSRs. */
|
|
uint32_t uns_tran : 1; /**< Enable reporting of an unsupported transaction
|
|
error. Save and lock transaction capture
|
|
information in Logical/Transport Layer Device ID
|
|
and Control Capture CSRs. */
|
|
uint32_t reserved_1_21 : 21;
|
|
uint32_t resp_sz : 1; /**< Enable reporting of an incoming response with
|
|
unexpected data size */
|
|
#else
|
|
uint32_t resp_sz : 1;
|
|
uint32_t reserved_1_21 : 21;
|
|
uint32_t uns_tran : 1;
|
|
uint32_t uns_resp : 1;
|
|
uint32_t pkt_tout : 1;
|
|
uint32_t msg_tout : 1;
|
|
uint32_t ill_tgt : 1;
|
|
uint32_t ill_tran : 1;
|
|
uint32_t msg_fmt : 1;
|
|
uint32_t gsm_err : 1;
|
|
uint32_t msg_err : 1;
|
|
uint32_t io_err : 1;
|
|
#endif
|
|
} s;
|
|
struct cvmx_sriomaintx_erb_lt_err_en_s cn63xx;
|
|
struct cvmx_sriomaintx_erb_lt_err_en_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_sriomaintx_erb_lt_err_en cvmx_sriomaintx_erb_lt_err_en_t;
|
|
|
|
/**
|
|
* cvmx_sriomaint#_erb_pack_capt_1
|
|
*
|
|
* SRIOMAINT_ERB_PACK_CAPT_1 = SRIO Packet Capture 1
|
|
*
|
|
* Packet Capture 1
|
|
*
|
|
* Notes:
|
|
* Error capture register 1 contains either long symbol capture information or bytes 4 through 7 of
|
|
* the packet header.
|
|
* The HW will not update this register (i.e. this register is locked) while
|
|
* SRIOMAINT*_ERB_ATTR_CAPT[VALID] is set. This register should only be read while this bit is set.
|
|
*
|
|
* Clk_Rst: SRIOMAINT(0..1)_ERB_PACK_CAPT_1 hclk hrst_n
|
|
*/
|
|
union cvmx_sriomaintx_erb_pack_capt_1
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_sriomaintx_erb_pack_capt_1_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t capture : 32; /**< Bytes 4 thru 7 of the packet header. */
|
|
#else
|
|
uint32_t capture : 32;
|
|
#endif
|
|
} s;
|
|
struct cvmx_sriomaintx_erb_pack_capt_1_s cn63xx;
|
|
struct cvmx_sriomaintx_erb_pack_capt_1_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_sriomaintx_erb_pack_capt_1 cvmx_sriomaintx_erb_pack_capt_1_t;
|
|
|
|
/**
|
|
* cvmx_sriomaint#_erb_pack_capt_2
|
|
*
|
|
* SRIOMAINT_ERB_PACK_CAPT_2 = SRIO Packet Capture 2
|
|
*
|
|
* Packet Capture 2
|
|
*
|
|
* Notes:
|
|
* Error capture register 2 contains bytes 8 through 11 of the packet header.
|
|
* The HW will not update this register (i.e. this register is locked) while
|
|
* SRIOMAINT*_ERB_ATTR_CAPT[VALID] is set. This register should only be read while this bit is set.
|
|
*
|
|
* Clk_Rst: SRIOMAINT(0..1)_ERB_PACK_CAPT_2 hclk hrst_n
|
|
*/
|
|
union cvmx_sriomaintx_erb_pack_capt_2
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_sriomaintx_erb_pack_capt_2_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t capture : 32; /**< Bytes 8 thru 11 of the packet header. */
|
|
#else
|
|
uint32_t capture : 32;
|
|
#endif
|
|
} s;
|
|
struct cvmx_sriomaintx_erb_pack_capt_2_s cn63xx;
|
|
struct cvmx_sriomaintx_erb_pack_capt_2_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_sriomaintx_erb_pack_capt_2 cvmx_sriomaintx_erb_pack_capt_2_t;
|
|
|
|
/**
|
|
* cvmx_sriomaint#_erb_pack_capt_3
|
|
*
|
|
* SRIOMAINT_ERB_PACK_CAPT_3 = SRIO Packet Capture 3
|
|
*
|
|
* Packet Capture 3
|
|
*
|
|
* Notes:
|
|
* Error capture register 3 contains bytes 12 through 15 of the packet header.
|
|
* The HW will not update this register (i.e. this register is locked) while
|
|
* SRIOMAINT*_ERB_ATTR_CAPT[VALID] is set. This register should only be read while this bit is set.
|
|
*
|
|
* Clk_Rst: SRIOMAINT(0..1)_ERB_PACK_CAPT_3 hclk hrst_n
|
|
*/
|
|
union cvmx_sriomaintx_erb_pack_capt_3
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_sriomaintx_erb_pack_capt_3_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t capture : 32; /**< Bytes 12 thru 15 of the packet header. */
|
|
#else
|
|
uint32_t capture : 32;
|
|
#endif
|
|
} s;
|
|
struct cvmx_sriomaintx_erb_pack_capt_3_s cn63xx;
|
|
struct cvmx_sriomaintx_erb_pack_capt_3_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_sriomaintx_erb_pack_capt_3 cvmx_sriomaintx_erb_pack_capt_3_t;
|
|
|
|
/**
|
|
* cvmx_sriomaint#_erb_pack_sym_capt
|
|
*
|
|
* SRIOMAINT_ERB_PACK_SYM_CAPT = SRIO Packet/Control Symbol Capture
|
|
*
|
|
* Packet/Control Symbol Capture
|
|
*
|
|
* Notes:
|
|
* This register contains either captured control symbol information or the first 4 bytes of captured
|
|
* packet information. The Errors that generate Partial Control Symbols can be found in
|
|
* SRIOMAINT*_ERB_ERR_DET. The HW will not update this register (i.e. this register is locked) while
|
|
* SRIOMAINT*_ERB_ATTR_CAPT[VALID] is set. This register should only be read while this bit is set.
|
|
*
|
|
* Clk_Rst: SRIOMAINT(0..1)_ERB_PACK_SYM_CAPT hclk hrst_n
|
|
*/
|
|
union cvmx_sriomaintx_erb_pack_sym_capt
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_sriomaintx_erb_pack_sym_capt_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t capture : 32; /**< Control Character and Control Symbol or Bytes 0 to
|
|
3 of Packet Header
|
|
The Control Symbol consists of
|
|
- 31:24 - SC Character (0 in Partial Symbol)
|
|
- 23:21 - Stype 0
|
|
- 20:16 - Parameter 0
|
|
- 15:11 - Parameter 1
|
|
- 10: 8 - Stype 1 (0 in Partial Symbol)
|
|
- 7: 5 - Command (0 in Partial Symbol)
|
|
- 4: 0 - CRC5 (0 in Partial Symbol) */
|
|
#else
|
|
uint32_t capture : 32;
|
|
#endif
|
|
} s;
|
|
struct cvmx_sriomaintx_erb_pack_sym_capt_s cn63xx;
|
|
struct cvmx_sriomaintx_erb_pack_sym_capt_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_sriomaintx_erb_pack_sym_capt cvmx_sriomaintx_erb_pack_sym_capt_t;
|
|
|
|
/**
|
|
* cvmx_sriomaint#_hb_dev_id_lock
|
|
*
|
|
* SRIOMAINT_HB_DEV_ID_LOCK = SRIO Host Device ID Lock
|
|
*
|
|
* The Host Base Device ID
|
|
*
|
|
* Notes:
|
|
* This register contains the Device ID of the Host responsible for initializing this SRIO device.
|
|
* The register contains a special write once function that captures the first HOSTID written to it
|
|
* after reset. The function allows several potential hosts to write to this register and then read
|
|
* it to see if they have responsibility for initialization. The register can be unlocked by
|
|
* rewriting the current host value. This will reset the lock and restore the value to 0xFFFF.
|
|
*
|
|
* Clk_Rst: SRIOMAINT(0..1)_HB_DEV_ID_LOCK hclk hrst_n
|
|
*/
|
|
union cvmx_sriomaintx_hb_dev_id_lock
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_sriomaintx_hb_dev_id_lock_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t reserved_16_31 : 16;
|
|
uint32_t hostid : 16; /**< Primary 16-bit Device ID */
|
|
#else
|
|
uint32_t hostid : 16;
|
|
uint32_t reserved_16_31 : 16;
|
|
#endif
|
|
} s;
|
|
struct cvmx_sriomaintx_hb_dev_id_lock_s cn63xx;
|
|
struct cvmx_sriomaintx_hb_dev_id_lock_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_sriomaintx_hb_dev_id_lock cvmx_sriomaintx_hb_dev_id_lock_t;
|
|
|
|
/**
|
|
* cvmx_sriomaint#_ir_buffer_config
|
|
*
|
|
* SRIOMAINT_IR_BUFFER_CONFIG = SRIO Buffer Configuration
|
|
*
|
|
* Buffer Configuration
|
|
*
|
|
* Notes:
|
|
* This register controls the operation of the SRIO Core buffer mux logic.
|
|
*
|
|
* Clk_Rst: SRIOMAINT(0..1)_IR_BUFFER_CONFIG hclk hrst_n
|
|
*/
|
|
union cvmx_sriomaintx_ir_buffer_config
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_sriomaintx_ir_buffer_config_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t tx_wm0 : 4; /**< Transmitter Flow Control Priority 0 Threshold.
|
|
Number of Receive Buffers available before packet
|
|
can be scheduled for transmission.
|
|
Maximum Value 8.
|
|
Generally, TX_WM0 Must be > TX_WM1 to reserve
|
|
buffers for priority 1-3 packets when transmitting
|
|
in transmitter-controlled flow control mode.
|
|
TX_WM0 is not used by the hardware when TX_FLOW=0
|
|
or whenever transmitting in
|
|
receiver-controlled flow-control mode. */
|
|
uint32_t tx_wm1 : 4; /**< Transmitter Flow Control Priority 1 Threshold.
|
|
Number of Receive Buffers available before packet
|
|
can be scheduled for transmission.
|
|
Maximum Value 8.
|
|
Generally, TX_WM1 Must be > TX_WM2 to reserve
|
|
buffers for priority 2-3 packets when transmitting
|
|
in transmitter-controlled flow control mode.
|
|
TX_WM1 is not used by the hardware when TX_FLOW=0
|
|
or whenever transmitting in
|
|
receiver-controlled flow-control mode. */
|
|
uint32_t tx_wm2 : 4; /**< Transmitter Flow Control Priority 2 Threshold.
|
|
Number of Receive Buffers available before packet
|
|
can be scheduled for transmission.
|
|
Maximum Value 8.
|
|
Generally, TX_WM2 Must be > 0 to reserve a
|
|
buffer for priority 3 packets when transmitting
|
|
in transmitter-controlled flow control mode.
|
|
TX_WM2 is not used by the hardware when TX_FLOW=0
|
|
or whenever transmitting in
|
|
receiver-controlled flow-control mode. */
|
|
uint32_t reserved_3_19 : 17;
|
|
uint32_t tx_flow : 1; /**< Controls whether Transmitter Flow Control is
|
|
permitted on this device.
|
|
0 - Disabled
|
|
1 - Permitted
|
|
The reset value of this field is
|
|
SRIO*_IP_FEATURE[TX_FLOW]. */
|
|
uint32_t tx_sync : 1; /**< Controls whether the synchronizers are enabled
|
|
between the SRIO TXCLK and the Internal Clocks.
|
|
0 - Synchronizers are enabled
|
|
1 - Synchronizers are disabled */
|
|
uint32_t rx_sync : 1; /**< Controls whether the synchronizers are enabled
|
|
between the SRIO RXCLK and the Internal Clocks.
|
|
0 - Synchronizers are enabled
|
|
1 - Synchronizers are disabled */
|
|
#else
|
|
uint32_t rx_sync : 1;
|
|
uint32_t tx_sync : 1;
|
|
uint32_t tx_flow : 1;
|
|
uint32_t reserved_3_19 : 17;
|
|
uint32_t tx_wm2 : 4;
|
|
uint32_t tx_wm1 : 4;
|
|
uint32_t tx_wm0 : 4;
|
|
#endif
|
|
} s;
|
|
struct cvmx_sriomaintx_ir_buffer_config_s cn63xx;
|
|
struct cvmx_sriomaintx_ir_buffer_config_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_sriomaintx_ir_buffer_config cvmx_sriomaintx_ir_buffer_config_t;
|
|
|
|
/**
|
|
* cvmx_sriomaint#_ir_buffer_config2
|
|
*
|
|
* SRIOMAINT_IR_BUFFER_CONFIG2 = SRIO Buffer Configuration 2 (Pass 2)
|
|
*
|
|
* Buffer Configuration 2
|
|
*
|
|
* Notes:
|
|
* This register controls the RX and TX Buffer availablility by priority. The typical values are
|
|
* optimized for normal operation. Care must be taken when changing these values to avoid values
|
|
* which can result in deadlocks. Disabling a priority is not recommended and can result in system
|
|
* level failures.
|
|
*
|
|
* Clk_Rst: SRIOMAINT(0..1)_IR_BUFFER_CONFIG2 hclk hrst_n
|
|
*/
|
|
union cvmx_sriomaintx_ir_buffer_config2
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_sriomaintx_ir_buffer_config2_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t tx_wm3 : 4; /**< Number of buffers free before a priority 3 packet
|
|
will be transmitted. A value of 9 will disable
|
|
this priority. */
|
|
uint32_t tx_wm2 : 4; /**< Number of buffers free before a priority 2 packet
|
|
will be transmitted. A value of 9 will disable
|
|
this priority. */
|
|
uint32_t tx_wm1 : 4; /**< Number of buffers free before a priority 1 packet
|
|
will be transmitted. A value of 9 will disable
|
|
this priority. */
|
|
uint32_t tx_wm0 : 4; /**< Number of buffers free before a priority 0 packet
|
|
will be transmitted. A value of 9 will disable
|
|
this priority. */
|
|
uint32_t rx_wm3 : 4; /**< Number of buffers free before a priority 3 packet
|
|
will be accepted. A value of 9 will disable this
|
|
priority and always cause a physical layer RETRY. */
|
|
uint32_t rx_wm2 : 4; /**< Number of buffers free before a priority 2 packet
|
|
will be accepted. A value of 9 will disable this
|
|
priority and always cause a physical layer RETRY. */
|
|
uint32_t rx_wm1 : 4; /**< Number of buffers free before a priority 1 packet
|
|
will be accepted. A value of 9 will disable this
|
|
priority and always cause a physical layer RETRY. */
|
|
uint32_t rx_wm0 : 4; /**< Number of buffers free before a priority 0 packet
|
|
will be accepted. A value of 9 will disable this
|
|
priority and always cause a physical layer RETRY. */
|
|
#else
|
|
uint32_t rx_wm0 : 4;
|
|
uint32_t rx_wm1 : 4;
|
|
uint32_t rx_wm2 : 4;
|
|
uint32_t rx_wm3 : 4;
|
|
uint32_t tx_wm0 : 4;
|
|
uint32_t tx_wm1 : 4;
|
|
uint32_t tx_wm2 : 4;
|
|
uint32_t tx_wm3 : 4;
|
|
#endif
|
|
} s;
|
|
struct cvmx_sriomaintx_ir_buffer_config2_s cn63xx;
|
|
};
|
|
typedef union cvmx_sriomaintx_ir_buffer_config2 cvmx_sriomaintx_ir_buffer_config2_t;
|
|
|
|
/**
|
|
* cvmx_sriomaint#_ir_pd_phy_ctrl
|
|
*
|
|
* SRIOMAINT_IR_PD_PHY_CTRL = SRIO Platform Dependent PHY Control
|
|
*
|
|
* Platform Dependent PHY Control
|
|
*
|
|
* Notes:
|
|
* This register can be used for testing. The register is otherwise unused by the hardware.
|
|
*
|
|
* Clk_Rst: SRIOMAINT(0..1)_IR_PD_PHY_CTRL hclk hrst_n
|
|
*/
|
|
union cvmx_sriomaintx_ir_pd_phy_ctrl
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_sriomaintx_ir_pd_phy_ctrl_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t pd_ctrl : 32; /**< Unused Register available for testing */
|
|
#else
|
|
uint32_t pd_ctrl : 32;
|
|
#endif
|
|
} s;
|
|
struct cvmx_sriomaintx_ir_pd_phy_ctrl_s cn63xx;
|
|
struct cvmx_sriomaintx_ir_pd_phy_ctrl_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_sriomaintx_ir_pd_phy_ctrl cvmx_sriomaintx_ir_pd_phy_ctrl_t;
|
|
|
|
/**
|
|
* cvmx_sriomaint#_ir_pd_phy_stat
|
|
*
|
|
* SRIOMAINT_IR_PD_PHY_STAT = SRIO Platform Dependent PHY Status
|
|
*
|
|
* Platform Dependent PHY Status
|
|
*
|
|
* Notes:
|
|
* This register is used to monitor PHY status on each lane. They are documented here to assist in
|
|
* debugging only. The lane numbers take into account the lane swap pin.
|
|
*
|
|
* Clk_Rst: SRIOMAINT(0..1)_IR_PD_PHY_STAT hclk hrst_n
|
|
*/
|
|
union cvmx_sriomaintx_ir_pd_phy_stat
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_sriomaintx_ir_pd_phy_stat_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t reserved_16_31 : 16;
|
|
uint32_t ln3_rx : 3; /**< Phy Lane 3 RX Status
|
|
0XX = Normal Operation
|
|
100 = 8B/10B Error
|
|
101 = Elastic Buffer Overflow (Data Lost)
|
|
110 = Elastic Buffer Underflow (Data Corrupted)
|
|
111 = Disparity Error */
|
|
uint32_t ln3_dis : 1; /**< Lane 3 Phy Clock Disabled
|
|
0 = Phy Clock Valid
|
|
1 = Phy Clock InValid */
|
|
uint32_t ln2_rx : 3; /**< Phy Lane 2 RX Status
|
|
0XX = Normal Operation
|
|
100 = 8B/10B Error
|
|
101 = Elastic Buffer Overflow (Data Lost)
|
|
110 = Elastic Buffer Underflow (Data Corrupted)
|
|
111 = Disparity Error */
|
|
uint32_t ln2_dis : 1; /**< Lane 2 Phy Clock Disabled
|
|
0 = Phy Clock Valid
|
|
1 = Phy Clock InValid */
|
|
uint32_t ln1_rx : 3; /**< Phy Lane 1 RX Status
|
|
0XX = Normal Operation
|
|
100 = 8B/10B Error
|
|
101 = Elastic Buffer Overflow (Data Lost)
|
|
110 = Elastic Buffer Underflow (Data Corrupted)
|
|
111 = Disparity Error */
|
|
uint32_t ln1_dis : 1; /**< Lane 1 Phy Clock Disabled
|
|
0 = Phy Clock Valid
|
|
1 = Phy Clock InValid */
|
|
uint32_t ln0_rx : 3; /**< Phy Lane 0 RX Status
|
|
0XX = Normal Operation
|
|
100 = 8B/10B Error
|
|
101 = Elastic Buffer Overflow (Data Lost)
|
|
110 = Elastic Buffer Underflow (Data Corrupted)
|
|
111 = Disparity Error */
|
|
uint32_t ln0_dis : 1; /**< Lane 0 Phy Clock Disabled
|
|
0 = Phy Clock Valid
|
|
1 = Phy Clock InValid */
|
|
#else
|
|
uint32_t ln0_dis : 1;
|
|
uint32_t ln0_rx : 3;
|
|
uint32_t ln1_dis : 1;
|
|
uint32_t ln1_rx : 3;
|
|
uint32_t ln2_dis : 1;
|
|
uint32_t ln2_rx : 3;
|
|
uint32_t ln3_dis : 1;
|
|
uint32_t ln3_rx : 3;
|
|
uint32_t reserved_16_31 : 16;
|
|
#endif
|
|
} s;
|
|
struct cvmx_sriomaintx_ir_pd_phy_stat_s cn63xx;
|
|
struct cvmx_sriomaintx_ir_pd_phy_stat_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_sriomaintx_ir_pd_phy_stat cvmx_sriomaintx_ir_pd_phy_stat_t;
|
|
|
|
/**
|
|
* cvmx_sriomaint#_ir_pi_phy_ctrl
|
|
*
|
|
* SRIOMAINT_IR_PI_PHY_CTRL = SRIO Platform Independent PHY Control
|
|
*
|
|
* Platform Independent PHY Control
|
|
*
|
|
* Notes:
|
|
* This register is used to control platform independent operating modes of the transceivers. These
|
|
* control bits are uniform across all platforms.
|
|
*
|
|
* Clk_Rst: SRIOMAINT(0..1)_IR_PI_PHY_CTRL hclk hrst_n
|
|
*/
|
|
union cvmx_sriomaintx_ir_pi_phy_ctrl
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_sriomaintx_ir_pi_phy_ctrl_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t tx_reset : 1; /**< Outgoing PHY Logic Reset. 0=Reset, 1=Normal Op */
|
|
uint32_t rx_reset : 1; /**< Incoming PHY Logic Reset. 0=Reset, 1=Normal Op */
|
|
uint32_t reserved_29_29 : 1;
|
|
uint32_t loopback : 2; /**< These bits control the state of the loopback
|
|
control vector on the transceiver interface. The
|
|
loopback modes are enumerated as follows:
|
|
00 - No Loopback
|
|
01 - Near End PCS Loopback
|
|
10 - Far End PCS Loopback
|
|
11 - Both Near and Far End PCS Loopback */
|
|
uint32_t reserved_0_26 : 27;
|
|
#else
|
|
uint32_t reserved_0_26 : 27;
|
|
uint32_t loopback : 2;
|
|
uint32_t reserved_29_29 : 1;
|
|
uint32_t rx_reset : 1;
|
|
uint32_t tx_reset : 1;
|
|
#endif
|
|
} s;
|
|
struct cvmx_sriomaintx_ir_pi_phy_ctrl_s cn63xx;
|
|
struct cvmx_sriomaintx_ir_pi_phy_ctrl_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_sriomaintx_ir_pi_phy_ctrl cvmx_sriomaintx_ir_pi_phy_ctrl_t;
|
|
|
|
/**
|
|
* cvmx_sriomaint#_ir_pi_phy_stat
|
|
*
|
|
* SRIOMAINT_IR_PI_PHY_STAT = SRIO Platform Independent PHY Status
|
|
*
|
|
* Platform Independent PHY Status
|
|
*
|
|
* Notes:
|
|
* This register displays the status of the link initialization state machine. Changes to this state
|
|
* cause the SRIO(0..1)_INT_REG.LINK_UP or SRIO(0..1)_INT_REG.LINK_DOWN interrupts.
|
|
*
|
|
* Clk_Rst: SRIOMAINT(0..1)_IR_PI_PHY_STAT hclk hrst_n
|
|
*/
|
|
union cvmx_sriomaintx_ir_pi_phy_stat
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_sriomaintx_ir_pi_phy_stat_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t reserved_12_31 : 20;
|
|
uint32_t tx_rdy : 1; /**< Minimum number of Status Transmitted (Pass 2) */
|
|
uint32_t rx_rdy : 1; /**< Minimum number of Good Status Received (Pass 2) */
|
|
uint32_t init_sm : 10; /**< Initialization State Machine
|
|
001 - Silent
|
|
002 - Seek
|
|
004 - Discovery
|
|
008 - 1x_Mode_Lane0
|
|
010 - 1x_Mode_Lane1
|
|
020 - 1x_Mode_Lane2
|
|
040 - 1x_Recovery
|
|
080 - 2x_Mode
|
|
100 - 2x_Recovery
|
|
200 - 4x_Mode
|
|
All others are reserved */
|
|
#else
|
|
uint32_t init_sm : 10;
|
|
uint32_t rx_rdy : 1;
|
|
uint32_t tx_rdy : 1;
|
|
uint32_t reserved_12_31 : 20;
|
|
#endif
|
|
} s;
|
|
struct cvmx_sriomaintx_ir_pi_phy_stat_s cn63xx;
|
|
struct cvmx_sriomaintx_ir_pi_phy_stat_cn63xxp1
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t reserved_10_31 : 22;
|
|
uint32_t init_sm : 10; /**< Initialization State Machine
|
|
001 - Silent
|
|
002 - Seek
|
|
004 - Discovery
|
|
008 - 1x_Mode_Lane0
|
|
010 - 1x_Mode_Lane1
|
|
020 - 1x_Mode_Lane2
|
|
040 - 1x_Recovery
|
|
080 - 2x_Mode
|
|
100 - 2x_Recovery
|
|
200 - 4x_Mode
|
|
All others are reserved */
|
|
#else
|
|
uint32_t init_sm : 10;
|
|
uint32_t reserved_10_31 : 22;
|
|
#endif
|
|
} cn63xxp1;
|
|
};
|
|
typedef union cvmx_sriomaintx_ir_pi_phy_stat cvmx_sriomaintx_ir_pi_phy_stat_t;
|
|
|
|
/**
|
|
* cvmx_sriomaint#_ir_sp_rx_ctrl
|
|
*
|
|
* SRIOMAINT_IR_SP_RX_CTRL = SRIO Soft Packet FIFO Receive Control
|
|
*
|
|
* Soft Packet FIFO Receive Control
|
|
*
|
|
* Notes:
|
|
* This register is used to configure events generated by the reception of packets using the soft
|
|
* packet FIFO.
|
|
*
|
|
* Clk_Rst: SRIOMAINT(0..1)_IR_SP_RX_CTRL hclk hrst_n
|
|
*/
|
|
union cvmx_sriomaintx_ir_sp_rx_ctrl
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_sriomaintx_ir_sp_rx_ctrl_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t reserved_1_31 : 31;
|
|
uint32_t overwrt : 1; /**< When clear, SRIO drops received packets that should
|
|
enter the soft packet FIFO when the FIFO is full.
|
|
When set, SRIO
|
|
stalls received packets that should enter the soft
|
|
packet FIFO when the FIFO is full. SRIO may stop
|
|
receiving any packets in this stall case if
|
|
software does not drain the receive soft packet
|
|
FIFO. */
|
|
#else
|
|
uint32_t overwrt : 1;
|
|
uint32_t reserved_1_31 : 31;
|
|
#endif
|
|
} s;
|
|
struct cvmx_sriomaintx_ir_sp_rx_ctrl_s cn63xx;
|
|
struct cvmx_sriomaintx_ir_sp_rx_ctrl_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_sriomaintx_ir_sp_rx_ctrl cvmx_sriomaintx_ir_sp_rx_ctrl_t;
|
|
|
|
/**
|
|
* cvmx_sriomaint#_ir_sp_rx_data
|
|
*
|
|
* SRIOMAINT_IR_SP_RX_DATA = SRIO Soft Packet FIFO Receive Data
|
|
*
|
|
* Soft Packet FIFO Receive Data
|
|
*
|
|
* Notes:
|
|
* This register is used to read data from the soft packet FIFO. The Soft Packet FIFO contains the
|
|
* majority of the packet data received from the SRIO link. The packet does not include the Control
|
|
* Symbols or the initial byte containing AckId, 2 Reserved Bits and the CRF. In the case of packets
|
|
* with less than 80 bytes (including AckId byte) both the trailing CRC and Pad (if present) are
|
|
* included in the FIFO and Octet Count. In the case of a packet with exactly 80 bytes (including
|
|
* the AckId byte) the CRC is removed and the Pad is maintained so the Octet Count will read 81 bytes
|
|
* instead of the expected 83. In cases over 80 bytes the CRC at 80 bytes is removed but the
|
|
* trailing CRC and Pad (if necessary) are present.
|
|
*
|
|
* Clk_Rst: SRIOMAINT(0..1)_IR_SP_RX_DATA hclk hrst_n
|
|
*/
|
|
union cvmx_sriomaintx_ir_sp_rx_data
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_sriomaintx_ir_sp_rx_data_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t pkt_data : 32; /**< This register is used to read packet data from the
|
|
RX FIFO. */
|
|
#else
|
|
uint32_t pkt_data : 32;
|
|
#endif
|
|
} s;
|
|
struct cvmx_sriomaintx_ir_sp_rx_data_s cn63xx;
|
|
struct cvmx_sriomaintx_ir_sp_rx_data_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_sriomaintx_ir_sp_rx_data cvmx_sriomaintx_ir_sp_rx_data_t;
|
|
|
|
/**
|
|
* cvmx_sriomaint#_ir_sp_rx_stat
|
|
*
|
|
* SRIOMAINT_IR_SP_RX_STAT = SRIO Soft Packet FIFO Receive Status
|
|
*
|
|
* Soft Packet FIFO Receive Status
|
|
*
|
|
* Notes:
|
|
* This register is used to monitor the reception of packets using the soft packet FIFO.
|
|
* The HW sets SRIO_INT_REG[SOFT_RX] every time a packet arrives in the soft packet FIFO. To read
|
|
* out (one or more) packets, the following procedure may be best:
|
|
* (1) clear SRIO_INT_REG[SOFT_RX],
|
|
* (2) read this CSR to determine how many packets there are,
|
|
* (3) read the packets out (via SRIOMAINT*_IR_SP_RX_DATA).
|
|
* This procedure could lead to situations where SOFT_RX will be set even though there are currently
|
|
* no packets - the SW interrupt handler would need to properly handle this case
|
|
*
|
|
* Clk_Rst: SRIOMAINT(0..1)_IR_SP_RX_STAT hclk hrst_n
|
|
*/
|
|
union cvmx_sriomaintx_ir_sp_rx_stat
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_sriomaintx_ir_sp_rx_stat_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t octets : 16; /**< This field shows how many octets are remaining
|
|
in the current packet in the RX FIFO. */
|
|
uint32_t buffers : 4; /**< This field indicates how many complete packets are
|
|
stored in the Rx FIFO. */
|
|
uint32_t drop_cnt : 7; /**< Number of Packets Received when the RX FIFO was
|
|
full and then discarded.
|
|
This field always reads zero in Pass 1 */
|
|
uint32_t full : 1; /**< This bit is set when the value of Buffers Filled
|
|
equals the number of available reception buffers.
|
|
This bit always reads zero in Pass 1 */
|
|
uint32_t fifo_st : 4; /**< These bits display the state of the state machine
|
|
that controls loading of packet data into the RX
|
|
FIFO. The enumeration of states are as follows:
|
|
0000 - Idle
|
|
0001 - Armed
|
|
0010 - Active
|
|
All other states are reserved. */
|
|
#else
|
|
uint32_t fifo_st : 4;
|
|
uint32_t full : 1;
|
|
uint32_t drop_cnt : 7;
|
|
uint32_t buffers : 4;
|
|
uint32_t octets : 16;
|
|
#endif
|
|
} s;
|
|
struct cvmx_sriomaintx_ir_sp_rx_stat_s cn63xx;
|
|
struct cvmx_sriomaintx_ir_sp_rx_stat_cn63xxp1
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t octets : 16; /**< This field shows how many octets are remaining
|
|
in the current packet in the RX FIFO. */
|
|
uint32_t buffers : 4; /**< This field indicates how many complete packets are
|
|
stored in the Rx FIFO. */
|
|
uint32_t reserved_5_11 : 7;
|
|
uint32_t full : 1; /**< This bit is set when the value of Buffers Filled
|
|
equals the number of available reception buffers.
|
|
This bit always reads zero in Pass 1 */
|
|
uint32_t fifo_st : 4; /**< These bits display the state of the state machine
|
|
that controls loading of packet data into the RX
|
|
FIFO. The enumeration of states are as follows:
|
|
0000 - Idle
|
|
0001 - Armed
|
|
0010 - Active
|
|
All other states are reserved. */
|
|
#else
|
|
uint32_t fifo_st : 4;
|
|
uint32_t full : 1;
|
|
uint32_t reserved_5_11 : 7;
|
|
uint32_t buffers : 4;
|
|
uint32_t octets : 16;
|
|
#endif
|
|
} cn63xxp1;
|
|
};
|
|
typedef union cvmx_sriomaintx_ir_sp_rx_stat cvmx_sriomaintx_ir_sp_rx_stat_t;
|
|
|
|
/**
|
|
* cvmx_sriomaint#_ir_sp_tx_ctrl
|
|
*
|
|
* SRIOMAINT_IR_SP_TX_CTRL = SRIO Soft Packet FIFO Transmit Control
|
|
*
|
|
* Soft Packet FIFO Transmit Control
|
|
*
|
|
* Notes:
|
|
* This register is used to configure and control the transmission of packets using the soft packet
|
|
* FIFO.
|
|
*
|
|
* Clk_Rst: SRIOMAINT_IR_SP_TX_CTRL hclk hrst_n
|
|
*/
|
|
union cvmx_sriomaintx_ir_sp_tx_ctrl
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_sriomaintx_ir_sp_tx_ctrl_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t octets : 16; /**< Writing a non-zero value (N) to this field arms
|
|
the packet FIFO for packet transmission. The FIFO
|
|
control logic will transmit the next N bytes
|
|
written 4-bytes at a time to the
|
|
SRIOMAINT(0..1)_IR_SP_TX_DATA Register and create a
|
|
single RapidIO packet. */
|
|
uint32_t reserved_0_15 : 16;
|
|
#else
|
|
uint32_t reserved_0_15 : 16;
|
|
uint32_t octets : 16;
|
|
#endif
|
|
} s;
|
|
struct cvmx_sriomaintx_ir_sp_tx_ctrl_s cn63xx;
|
|
struct cvmx_sriomaintx_ir_sp_tx_ctrl_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_sriomaintx_ir_sp_tx_ctrl cvmx_sriomaintx_ir_sp_tx_ctrl_t;
|
|
|
|
/**
|
|
* cvmx_sriomaint#_ir_sp_tx_data
|
|
*
|
|
* SRIOMAINT_IR_SP_TX_DATA = SRIO Soft Packet FIFO Transmit Data
|
|
*
|
|
* Soft Packet FIFO Transmit Data
|
|
*
|
|
* Notes:
|
|
* This register is used to write data to the soft packet FIFO. The format of the packet follows the
|
|
* Internal Packet Format (add link here). Care must be taken on creating TIDs for the packets which
|
|
* generate a response. Bits [7:6] of the 8 bit TID must be set for all Soft Packet FIFO generated
|
|
* packets. TID values of 0x00 - 0xBF are reserved for hardware generated Tags. The remainer of the
|
|
* TID[5:0] must be unique for each packet in flight and cannot be reused until a response is received
|
|
* in the SRIOMAINT(0..1)_IR_SP_RX_DATA register.
|
|
*
|
|
* Clk_Rst: SRIOMAINT(0..1)_IR_SP_TX_DATA hclk hrst_n
|
|
*/
|
|
union cvmx_sriomaintx_ir_sp_tx_data
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_sriomaintx_ir_sp_tx_data_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t pkt_data : 32; /**< This register is used to write packet data to the
|
|
Tx FIFO. Reads of this register will return zero. */
|
|
#else
|
|
uint32_t pkt_data : 32;
|
|
#endif
|
|
} s;
|
|
struct cvmx_sriomaintx_ir_sp_tx_data_s cn63xx;
|
|
struct cvmx_sriomaintx_ir_sp_tx_data_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_sriomaintx_ir_sp_tx_data cvmx_sriomaintx_ir_sp_tx_data_t;
|
|
|
|
/**
|
|
* cvmx_sriomaint#_ir_sp_tx_stat
|
|
*
|
|
* SRIOMAINT_IR_SP_TX_STAT = SRIO Soft Packet FIFO Transmit Status
|
|
*
|
|
* Soft Packet FIFO Transmit Status
|
|
*
|
|
* Notes:
|
|
* This register is used to monitor the transmission of packets using the soft packet FIFO.
|
|
*
|
|
* Clk_Rst: SRIOMAINT(0..1)_IR_SP_TX_STAT hclk hrst_n
|
|
*/
|
|
union cvmx_sriomaintx_ir_sp_tx_stat
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_sriomaintx_ir_sp_tx_stat_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t octets : 16; /**< This field shows how many octets are still to be
|
|
loaded in the current packet. */
|
|
uint32_t buffers : 4; /**< This field indicates how many complete packets are
|
|
stored in the Tx FIFO. The field always reads
|
|
zero in the current hardware. */
|
|
uint32_t reserved_5_11 : 7;
|
|
uint32_t full : 1; /**< This bit is set when the value of Buffers Filled
|
|
equals the number of available transmission
|
|
buffers. */
|
|
uint32_t fifo_st : 4; /**< These bits display the state of the state machine
|
|
that controls loading of packet data into the TX
|
|
FIFO. The enumeration of states are as follows:
|
|
0000 - Idle
|
|
0001 - Armed
|
|
0010 - Active
|
|
All other states are reserved. */
|
|
#else
|
|
uint32_t fifo_st : 4;
|
|
uint32_t full : 1;
|
|
uint32_t reserved_5_11 : 7;
|
|
uint32_t buffers : 4;
|
|
uint32_t octets : 16;
|
|
#endif
|
|
} s;
|
|
struct cvmx_sriomaintx_ir_sp_tx_stat_s cn63xx;
|
|
struct cvmx_sriomaintx_ir_sp_tx_stat_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_sriomaintx_ir_sp_tx_stat cvmx_sriomaintx_ir_sp_tx_stat_t;
|
|
|
|
/**
|
|
* cvmx_sriomaint#_lane_#_status_0
|
|
*
|
|
* SRIOMAINT_LANE_X_STATUS_0 = SRIO Lane X Status 0
|
|
*
|
|
* SRIO Lane Status 0
|
|
*
|
|
* Notes:
|
|
* This register contains status information about the local lane transceiver.
|
|
*
|
|
* Clk_Rst: SRIOMAINT(0..1)_LANE_[0:3]_STATUS_0 hclk hrst_n
|
|
*/
|
|
union cvmx_sriomaintx_lane_x_status_0
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_sriomaintx_lane_x_status_0_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t port : 8; /**< The number of the port within the device to which
|
|
the lane is assigned. */
|
|
uint32_t lane : 4; /**< Lane Number within the port. */
|
|
uint32_t tx_type : 1; /**< Transmitter Type
|
|
0 = Short Run
|
|
1 = Long Run */
|
|
uint32_t tx_mode : 1; /**< Transmitter Operating Mode
|
|
0 = Short Run
|
|
1 = Long Run */
|
|
uint32_t rx_type : 2; /**< Receiver Type
|
|
0 = Short Run
|
|
1 = Medium Run
|
|
2 = Long Run
|
|
3 = Reserved */
|
|
uint32_t rx_inv : 1; /**< Receiver Input Inverted
|
|
0 = No Inversion
|
|
1 = Input Inverted */
|
|
uint32_t rx_adapt : 1; /**< Receiver Trained
|
|
0 = One or more adaptive equalizers are
|
|
controlled by the lane receiver and at least
|
|
one is not trained.
|
|
1 = The lane receiver controls no adaptive
|
|
equalizers or all the equalizers are trained. */
|
|
uint32_t rx_sync : 1; /**< Receiver Lane Sync'd */
|
|
uint32_t rx_train : 1; /**< Receiver Lane Trained */
|
|
uint32_t dec_err : 4; /**< 8Bit/10Bit Decoding Errors
|
|
0 = No Errors since last read
|
|
1-14 = Number of Errors since last read
|
|
15 = Fifteen or more Errors since last read */
|
|
uint32_t xsync : 1; /**< Receiver Lane Sync Change
|
|
0 = Lane Sync has not changed since last read
|
|
1 = Lane Sync has changed since last read */
|
|
uint32_t xtrain : 1; /**< Receiver Training Change
|
|
0 = Training has not changed since last read
|
|
1 = Training has changed since last read */
|
|
uint32_t reserved_4_5 : 2;
|
|
uint32_t status1 : 1; /**< Status 1 CSR Implemented */
|
|
uint32_t statusn : 3; /**< Status 2-7 Not Implemented */
|
|
#else
|
|
uint32_t statusn : 3;
|
|
uint32_t status1 : 1;
|
|
uint32_t reserved_4_5 : 2;
|
|
uint32_t xtrain : 1;
|
|
uint32_t xsync : 1;
|
|
uint32_t dec_err : 4;
|
|
uint32_t rx_train : 1;
|
|
uint32_t rx_sync : 1;
|
|
uint32_t rx_adapt : 1;
|
|
uint32_t rx_inv : 1;
|
|
uint32_t rx_type : 2;
|
|
uint32_t tx_mode : 1;
|
|
uint32_t tx_type : 1;
|
|
uint32_t lane : 4;
|
|
uint32_t port : 8;
|
|
#endif
|
|
} s;
|
|
struct cvmx_sriomaintx_lane_x_status_0_s cn63xx;
|
|
struct cvmx_sriomaintx_lane_x_status_0_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_sriomaintx_lane_x_status_0 cvmx_sriomaintx_lane_x_status_0_t;
|
|
|
|
/**
|
|
* cvmx_sriomaint#_lcs_ba0
|
|
*
|
|
* SRIOMAINT_LCS_BA0 = SRIO Local Configuration Space MSB Base Address
|
|
*
|
|
* MSBs of SRIO Address Space mapped to Maintenance BAR.
|
|
*
|
|
* Notes:
|
|
* The double word aligned SRIO address window mapped to the SRIO Maintenance BAR. This window has
|
|
* the highest priority and eclipses matches to the BAR0, BAR1 and BAR2 windows. Note: Address bits
|
|
* not supplied in the transfer are considered zero. For example, SRIO Address 65:35 must be set to
|
|
* zero to match in a 34-bit access. SRIO Address 65:50 must be set to zero to match in a 50-bit
|
|
* access. This coding allows the Maintenance Bar window to appear in specific address spaces. The
|
|
* remaining bits are located in SRIOMAINT(0..1)_LCS_BA1. This SRIO maintenance BAR is effectively
|
|
* disabled when LCSBA[30] is set with 34 or 50-bit addressing.
|
|
*
|
|
* Clk_Rst: SRIOMAINT(0..1)_LCS_BA0 hclk hrst_n
|
|
*/
|
|
union cvmx_sriomaintx_lcs_ba0
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_sriomaintx_lcs_ba0_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t reserved_31_31 : 1;
|
|
uint32_t lcsba : 31; /**< SRIO Address 65:35 */
|
|
#else
|
|
uint32_t lcsba : 31;
|
|
uint32_t reserved_31_31 : 1;
|
|
#endif
|
|
} s;
|
|
struct cvmx_sriomaintx_lcs_ba0_s cn63xx;
|
|
struct cvmx_sriomaintx_lcs_ba0_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_sriomaintx_lcs_ba0 cvmx_sriomaintx_lcs_ba0_t;
|
|
|
|
/**
|
|
* cvmx_sriomaint#_lcs_ba1
|
|
*
|
|
* SRIOMAINT_LCS_BA1 = SRIO Local Configuration Space LSB Base Address
|
|
*
|
|
* LSBs of SRIO Address Space mapped to Maintenance BAR.
|
|
*
|
|
* Notes:
|
|
* The double word aligned SRIO address window mapped to the SRIO Maintenance BAR. This window has
|
|
* the highest priority and eclipses matches to the BAR0, BAR1 and BAR2 windows. Address bits not
|
|
* supplied in the transfer are considered zero. For example, SRIO Address 65:35 must be set to zero
|
|
* to match in a 34-bit access and SRIO Address 65:50 must be set to zero to match in a 50-bit access.
|
|
* This coding allows the Maintenance Bar window to appear in specific address spaces. Accesses
|
|
* through this BAR are limited to single word (32-bit) aligned transfers of one to four bytes.
|
|
* Accesses which violate this rule will return an error response if possible and be otherwise
|
|
* ignored. The remaining bits are located in SRIOMAINT(0..1)_LCS_BA0.
|
|
*
|
|
* Clk_Rst: SRIOMAINT(0..1)_LCS_BA1 hclk hrst_n
|
|
*/
|
|
union cvmx_sriomaintx_lcs_ba1
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_sriomaintx_lcs_ba1_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t lcsba : 11; /**< SRIO Address 34:24 */
|
|
uint32_t reserved_0_20 : 21;
|
|
#else
|
|
uint32_t reserved_0_20 : 21;
|
|
uint32_t lcsba : 11;
|
|
#endif
|
|
} s;
|
|
struct cvmx_sriomaintx_lcs_ba1_s cn63xx;
|
|
struct cvmx_sriomaintx_lcs_ba1_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_sriomaintx_lcs_ba1 cvmx_sriomaintx_lcs_ba1_t;
|
|
|
|
/**
|
|
* cvmx_sriomaint#_m2s_bar0_start0
|
|
*
|
|
* SRIOMAINT_M2S_BAR0_START0 = SRIO Device Access BAR0 MSB Start
|
|
*
|
|
* The starting SRIO address to forwarded to the NPEI Configuration Space.
|
|
*
|
|
* Notes:
|
|
* This register specifies the 50-bit and 66-bit SRIO Address mapped to the BAR0 Space. See
|
|
* SRIOMAINT(0..1)_M2S_BAR0_START1 for more details. This register is only writeable over SRIO if the
|
|
* SRIO(0..1)_ACC_CTRL.DENY_BAR0 bit is zero.
|
|
*
|
|
* Clk_Rst: SRIOMAINT(0..1)_M2S_BAR0_START0 hclk hrst_n
|
|
*/
|
|
union cvmx_sriomaintx_m2s_bar0_start0
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_sriomaintx_m2s_bar0_start0_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t addr64 : 16; /**< SRIO Address 63:48 */
|
|
uint32_t addr48 : 16; /**< SRIO Address 47:32 */
|
|
#else
|
|
uint32_t addr48 : 16;
|
|
uint32_t addr64 : 16;
|
|
#endif
|
|
} s;
|
|
struct cvmx_sriomaintx_m2s_bar0_start0_s cn63xx;
|
|
struct cvmx_sriomaintx_m2s_bar0_start0_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_sriomaintx_m2s_bar0_start0 cvmx_sriomaintx_m2s_bar0_start0_t;
|
|
|
|
/**
|
|
* cvmx_sriomaint#_m2s_bar0_start1
|
|
*
|
|
* SRIOMAINT_M2S_BAR0_START1 = SRIO Device Access BAR0 LSB Start
|
|
*
|
|
* The starting SRIO address to forwarded to the NPEI Configuration Space.
|
|
*
|
|
* Notes:
|
|
* This register specifies the SRIO Address mapped to the BAR0 RSL Space. If the transaction has not
|
|
* already been mapped to SRIO Maintenance Space through the SRIOMAINT_LCS_BA[1:0] registers, if
|
|
* ENABLE is set and the address bits match then the SRIO Memory transactions will map to Octeon SLI
|
|
* Registers. 34-bit address transactions require a match in SRIO Address 33:14 and require all the
|
|
* other bits in ADDR48, ADDR64 and ADDR66 fields to be zero. 50-bit address transactions a match of
|
|
* SRIO Address 49:14 and require all the other bits of ADDR64 and ADDR66 to be zero. 66-bit address
|
|
* transactions require matches of all valid address field bits. Reads and Writes through Bar0
|
|
* have a size limit of 8 bytes and cannot cross a 64-bit boundry. All accesses with sizes greater
|
|
* than this limit will be ignored and return an error on any SRIO responses. Note: ADDR48 and
|
|
* ADDR64 fields are located in SRIOMAINT(0..1)_M2S_BAR0_START0. This register is only writeable over
|
|
* SRIO if the SRIO(0..1)_ACC_CTRL.DENY_BAR0 bit is zero.
|
|
*
|
|
* Clk_Rst: SRIOMAINT(0..1)_M2S_BAR0_START1 hclk hrst_n
|
|
*/
|
|
union cvmx_sriomaintx_m2s_bar0_start1
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_sriomaintx_m2s_bar0_start1_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t addr32 : 18; /**< SRIO Address 31:14 */
|
|
uint32_t reserved_3_13 : 11;
|
|
uint32_t addr66 : 2; /**< SRIO Address 65:64 */
|
|
uint32_t enable : 1; /**< Enable BAR0 Access */
|
|
#else
|
|
uint32_t enable : 1;
|
|
uint32_t addr66 : 2;
|
|
uint32_t reserved_3_13 : 11;
|
|
uint32_t addr32 : 18;
|
|
#endif
|
|
} s;
|
|
struct cvmx_sriomaintx_m2s_bar0_start1_s cn63xx;
|
|
struct cvmx_sriomaintx_m2s_bar0_start1_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_sriomaintx_m2s_bar0_start1 cvmx_sriomaintx_m2s_bar0_start1_t;
|
|
|
|
/**
|
|
* cvmx_sriomaint#_m2s_bar1_start0
|
|
*
|
|
* SRIOMAINT_M2S_BAR1_START0 = SRIO Device Access BAR1 MSB Start
|
|
*
|
|
* The starting SRIO address to forwarded to the BAR1 Memory Space.
|
|
*
|
|
* Notes:
|
|
* This register specifies the 50-bit and 66-bit SRIO Address mapped to the BAR1 Space. See
|
|
* SRIOMAINT(0..1)_M2S_BAR1_START1 for more details. This register is only writeable over SRIO if the
|
|
* SRIO(0..1)_ACC_CTRL.DENY_BAR1 bit is zero.
|
|
*
|
|
* Clk_Rst: SRIOMAINT(0..1)_M2S_BAR1_START0 hclk hrst_n
|
|
*/
|
|
union cvmx_sriomaintx_m2s_bar1_start0
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_sriomaintx_m2s_bar1_start0_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t addr64 : 16; /**< SRIO Address 63:48 */
|
|
uint32_t addr48 : 16; /**< SRIO Address 47:32 */
|
|
#else
|
|
uint32_t addr48 : 16;
|
|
uint32_t addr64 : 16;
|
|
#endif
|
|
} s;
|
|
struct cvmx_sriomaintx_m2s_bar1_start0_s cn63xx;
|
|
struct cvmx_sriomaintx_m2s_bar1_start0_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_sriomaintx_m2s_bar1_start0 cvmx_sriomaintx_m2s_bar1_start0_t;
|
|
|
|
/**
|
|
* cvmx_sriomaint#_m2s_bar1_start1
|
|
*
|
|
* SRIOMAINT_M2S_BAR1_START1 = SRIO Device to BAR1 Start
|
|
*
|
|
* The starting SRIO address to forwarded to the BAR1 Memory Space.
|
|
*
|
|
* Notes:
|
|
* This register specifies the SRIO Address mapped to the BAR1 Space. If the transaction has not
|
|
* already been mapped to SRIO Maintenance Space through the SRIOMAINT_LCS_BA[1:0] registers and the
|
|
* address bits do not match enabled BAR0 addresses and if ENABLE is set and the addresses match the
|
|
* BAR1 addresses then SRIO Memory transactions will map to Octeon Memory Space specified by
|
|
* SRIOMAINT(0..1)_BAR1_IDX[31:0] registers. The BARSIZE field determines the size of BAR1, the entry
|
|
* select bits, and the size of each entry. A 34-bit address matches BAR1 when it matches
|
|
* SRIO_Address[33:20+BARSIZE] while all the other bits in ADDR48, ADDR64 and ADDR66 are zero.
|
|
* A 50-bit address matches BAR1 when it matches SRIO_Address[49:20+BARSIZE] while all the
|
|
* other bits of ADDR64 and ADDR66 are zero. A 66-bit address matches BAR1 when all of
|
|
* SRIO_Address[65:20+BARSIZE] match all corresponding address CSR field bits. Note: ADDR48 and
|
|
* ADDR64 fields are located in SRIOMAINT(0..1)_M2S_BAR1_START0. This register is only writeable from SRIO
|
|
* if the SRIO(0..1)_ACC_CTRL.DENY_BAR1 bit is zero.
|
|
*
|
|
* Clk_Rst: SRIOMAINT(0..1)_M2S_BAR1_START1 hclk hrst_n
|
|
*/
|
|
union cvmx_sriomaintx_m2s_bar1_start1
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_sriomaintx_m2s_bar1_start1_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t addr32 : 12; /**< SRIO Address 31:20
|
|
With BARSIZE < 12, the upper 12-BARSIZE
|
|
bits of this field are used, and the lower BARSIZE
|
|
bits of this field are unused by the SRIO hardware. */
|
|
uint32_t reserved_7_19 : 13;
|
|
uint32_t barsize : 4; /**< Bar Size.
|
|
SRIO_Address*
|
|
---------------------
|
|
/ \
|
|
BARSIZE BAR Entry Entry Entry
|
|
Value BAR compare Select Offset Size
|
|
Size bits bits bits
|
|
0 1MB 65:20 19:16 15:0 64KB
|
|
1 2MB 65:21 20:17 16:0 128KB
|
|
2 4MB 65:22 21:18 17:0 256KB
|
|
3 8MB 65:23 22:19 18:0 512KB
|
|
4 16MB 65:24 23:20 19:0 1MB
|
|
5 32MB 65:25 24:21 20:0 2MB
|
|
6 64MB 65:26 25:22 21:0 4MB
|
|
7 128MB 65:27 26:23 22:0 8MB
|
|
8 256MB ** not in pass 1
|
|
9 512MB ** not in pass 1
|
|
10 1GB ** not in pass 1
|
|
11 2GB ** not in pass 1
|
|
12 4GB ** not in pass 1
|
|
13 8GB ** not in pass 1
|
|
|
|
*The SRIO Transaction Address
|
|
The entry select bits is the X that select an
|
|
SRIOMAINT(0..1)_BAR1_IDXX entry.
|
|
|
|
In O63 pass 2, BARSIZE is 4 bits (6:3 in this
|
|
CSR), and BARSIZE values 8-13 are implemented,
|
|
providing a total possible BAR1 size range from
|
|
1MB up to 8GB. */
|
|
uint32_t addr66 : 2; /**< SRIO Address 65:64 */
|
|
uint32_t enable : 1; /**< Enable BAR1 Access */
|
|
#else
|
|
uint32_t enable : 1;
|
|
uint32_t addr66 : 2;
|
|
uint32_t barsize : 4;
|
|
uint32_t reserved_7_19 : 13;
|
|
uint32_t addr32 : 12;
|
|
#endif
|
|
} s;
|
|
struct cvmx_sriomaintx_m2s_bar1_start1_s cn63xx;
|
|
struct cvmx_sriomaintx_m2s_bar1_start1_cn63xxp1
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t addr32 : 12; /**< SRIO Address 31:20
|
|
With BARSIZE < 12, the upper 12-BARSIZE
|
|
bits of this field are used, and the lower BARSIZE
|
|
bits of this field are unused by the SRIO hardware. */
|
|
uint32_t reserved_6_19 : 14;
|
|
uint32_t barsize : 3; /**< Bar Size.
|
|
SRIO_Address*
|
|
---------------------
|
|
/ \
|
|
BARSIZE BAR Entry Entry Entry
|
|
Value BAR compare Select Offset Size
|
|
Size bits bits bits
|
|
0 1MB 65:20 19:16 15:0 64KB
|
|
1 2MB 65:21 20:17 16:0 128KB
|
|
2 4MB 65:22 21:18 17:0 256KB
|
|
3 8MB 65:23 22:19 18:0 512KB
|
|
4 16MB 65:24 23:20 19:0 1MB
|
|
5 32MB 65:25 24:21 20:0 2MB
|
|
6 64MB 65:26 25:22 21:0 4MB
|
|
7 128MB 65:27 26:23 22:0 8MB
|
|
8 256MB ** not in pass 1
|
|
9 512MB ** not in pass 1
|
|
10 1GB ** not in pass 1
|
|
11 2GB ** not in pass 1
|
|
12 4GB ** not in pass 1
|
|
13 8GB ** not in pass 1
|
|
|
|
*The SRIO Transaction Address
|
|
The entry select bits is the X that select an
|
|
SRIOMAINT(0..1)_BAR1_IDXX entry.
|
|
|
|
In O63 pass 2, BARSIZE is 4 bits (6:3 in this
|
|
CSR), and BARSIZE values 8-13 are implemented,
|
|
providing a total possible BAR1 size range from
|
|
1MB up to 8GB. */
|
|
uint32_t addr66 : 2; /**< SRIO Address 65:64 */
|
|
uint32_t enable : 1; /**< Enable BAR1 Access */
|
|
#else
|
|
uint32_t enable : 1;
|
|
uint32_t addr66 : 2;
|
|
uint32_t barsize : 3;
|
|
uint32_t reserved_6_19 : 14;
|
|
uint32_t addr32 : 12;
|
|
#endif
|
|
} cn63xxp1;
|
|
};
|
|
typedef union cvmx_sriomaintx_m2s_bar1_start1 cvmx_sriomaintx_m2s_bar1_start1_t;
|
|
|
|
/**
|
|
* cvmx_sriomaint#_m2s_bar2_start
|
|
*
|
|
* SRIOMAINT_M2S_BAR2_START = SRIO Device to BAR2 Start
|
|
*
|
|
* The starting SRIO address to forwarded to the BAR2 Memory Space.
|
|
*
|
|
* Notes:
|
|
* This register specifies the SRIO Address mapped to the BAR2 Space. If ENABLE is set and the
|
|
* address bits do not match and other enabled BAR address and match the BAR2 addresses then the SRIO
|
|
* Memory transactions will map to Octeon BAR2 Memory Space. 34-bit address transactions require
|
|
* ADDR66, ADDR64 and ADDR48 fields set to zero and supplies zeros for unused addresses 40:34.
|
|
* 50-bit address transactions a match of SRIO Address 49:41 and require all the other bits of ADDR64
|
|
* and ADDR66 to be zero. 66-bit address transactions require matches of all valid address field
|
|
* bits. This register is only writeable over SRIO if the SRIO(0..1)_ACC_CTRL.DENY_BAR2 bit is zero.
|
|
*
|
|
* Clk_Rst: SRIOMAINT(0..1)_M2S_BAR2_START hclk hrst_n
|
|
*/
|
|
union cvmx_sriomaintx_m2s_bar2_start
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_sriomaintx_m2s_bar2_start_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t addr64 : 16; /**< SRIO Address 63:48 */
|
|
uint32_t addr48 : 7; /**< SRIO Address 47:41 */
|
|
uint32_t reserved_6_8 : 3;
|
|
uint32_t esx : 2; /**< Endian Swap Mode used for SRIO 34-bit access.
|
|
For 50/66-bit assesses Endian Swap is determine
|
|
by ESX XOR'd with SRIO Addr 39:38.
|
|
0 = No Swap
|
|
1 = 64-bit Swap Bytes [ABCD_EFGH] -> [HGFE_DCBA]
|
|
2 = 32-bit Swap Words [ABCD_EFGH] -> [DCBA_HGFE]
|
|
3 = 32-bit Word Exch [ABCD_EFGH] -> [EFGH_ABCD] */
|
|
uint32_t cax : 1; /**< Cacheable Access Mode. When set transfer is
|
|
cached. This bit is used for SRIO 34-bit access.
|
|
For 50/66-bit accessas NCA is determine by CAX
|
|
XOR'd with SRIO Addr 40. */
|
|
uint32_t addr66 : 2; /**< SRIO Address 65:64 */
|
|
uint32_t enable : 1; /**< Enable BAR2 Access */
|
|
#else
|
|
uint32_t enable : 1;
|
|
uint32_t addr66 : 2;
|
|
uint32_t cax : 1;
|
|
uint32_t esx : 2;
|
|
uint32_t reserved_6_8 : 3;
|
|
uint32_t addr48 : 7;
|
|
uint32_t addr64 : 16;
|
|
#endif
|
|
} s;
|
|
struct cvmx_sriomaintx_m2s_bar2_start_s cn63xx;
|
|
struct cvmx_sriomaintx_m2s_bar2_start_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_sriomaintx_m2s_bar2_start cvmx_sriomaintx_m2s_bar2_start_t;
|
|
|
|
/**
|
|
* cvmx_sriomaint#_mac_ctrl
|
|
*
|
|
* SRIOMAINT_MAC_CTRL = SRIO MAC Control (Pass 2)
|
|
*
|
|
* Control for MAC Features
|
|
*
|
|
* Notes:
|
|
* This register enables MAC optimizations that may not be supported by all SRIO devices. The
|
|
* default values should be supported. This register can be changed at any time while the MAC is
|
|
* out of reset.
|
|
*
|
|
* Clk_Rst: SRIOMAINT(0..1)_MAC_CTRL hclk hrst_n
|
|
*/
|
|
union cvmx_sriomaintx_mac_ctrl
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_sriomaintx_mac_ctrl_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t reserved_19_31 : 13;
|
|
uint32_t rx_spf : 1; /**< Route all received packets to RX Soft Packet FIFO.
|
|
No logical layer ERB Errors will be reported.
|
|
Used for Diagnostics Only. */
|
|
uint32_t eop_mrg : 1; /**< Transmitted Packets can eliminate EOP Symbol on
|
|
back to back packets. */
|
|
uint32_t type_mrg : 1; /**< Allow STYPE Merging on Transmit. */
|
|
uint32_t lnk_rtry : 16; /**< Number of times MAC will reissue Link Request
|
|
after timeout. If retry count is exceeded Fatal
|
|
Port Error will occur (see SRIO(0..1)_INT_REG.F_ERROR) */
|
|
#else
|
|
uint32_t lnk_rtry : 16;
|
|
uint32_t type_mrg : 1;
|
|
uint32_t eop_mrg : 1;
|
|
uint32_t rx_spf : 1;
|
|
uint32_t reserved_19_31 : 13;
|
|
#endif
|
|
} s;
|
|
struct cvmx_sriomaintx_mac_ctrl_s cn63xx;
|
|
};
|
|
typedef union cvmx_sriomaintx_mac_ctrl cvmx_sriomaintx_mac_ctrl_t;
|
|
|
|
/**
|
|
* cvmx_sriomaint#_pe_feat
|
|
*
|
|
* SRIOMAINT_PE_FEAT = SRIO Processing Element Features
|
|
*
|
|
* The Supported Processing Element Features.
|
|
*
|
|
* Notes:
|
|
* The Processing Element Feature register describes the major functionality provided by the SRIO
|
|
* device.
|
|
*
|
|
* Clk_Rst: SRIOMAINT(0..1)_PE_FEAT hclk hrst_n
|
|
*/
|
|
union cvmx_sriomaintx_pe_feat
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_sriomaintx_pe_feat_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t bridge : 1; /**< Bridge Functions not supported. */
|
|
uint32_t memory : 1; /**< PE contains addressable memory. */
|
|
uint32_t proc : 1; /**< PE contains a local processor. */
|
|
uint32_t switchf : 1; /**< Switch Functions not supported. */
|
|
uint32_t mult_prt : 1; /**< Multiport Functions not supported. */
|
|
uint32_t reserved_7_26 : 20;
|
|
uint32_t suppress : 1; /**< Error Recovery Suppression not supported. */
|
|
uint32_t crf : 1; /**< Critical Request Flow not supported. */
|
|
uint32_t lg_tran : 1; /**< Large Transport (16-bit Device IDs) supported. */
|
|
uint32_t ex_feat : 1; /**< Extended Feature Pointer is valid. */
|
|
uint32_t ex_addr : 3; /**< PE supports 66, 50 and 34-bit addresses.
|
|
[2:1] are a RO copy of SRIO*_IP_FEATURE[A66,A50]. */
|
|
#else
|
|
uint32_t ex_addr : 3;
|
|
uint32_t ex_feat : 1;
|
|
uint32_t lg_tran : 1;
|
|
uint32_t crf : 1;
|
|
uint32_t suppress : 1;
|
|
uint32_t reserved_7_26 : 20;
|
|
uint32_t mult_prt : 1;
|
|
uint32_t switchf : 1;
|
|
uint32_t proc : 1;
|
|
uint32_t memory : 1;
|
|
uint32_t bridge : 1;
|
|
#endif
|
|
} s;
|
|
struct cvmx_sriomaintx_pe_feat_s cn63xx;
|
|
struct cvmx_sriomaintx_pe_feat_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_sriomaintx_pe_feat cvmx_sriomaintx_pe_feat_t;
|
|
|
|
/**
|
|
* cvmx_sriomaint#_pe_llc
|
|
*
|
|
* SRIOMAINT_PE_LLC = SRIO Processing Element Logical Layer Control
|
|
*
|
|
* Addresses supported by the SRIO Device.
|
|
*
|
|
* Notes:
|
|
* The Processing Element Logical Layer is used for general configuration for the logical interface.
|
|
*
|
|
* Clk_Rst: SRIOMAINT(0..1)_PE_LLC hclk hrst_n
|
|
*/
|
|
union cvmx_sriomaintx_pe_llc
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_sriomaintx_pe_llc_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t reserved_3_31 : 29;
|
|
uint32_t ex_addr : 3; /**< Controls the number of address bits generated by
|
|
PE as a source and processed by the PE as a
|
|
target of an operation.
|
|
001 = 34-bit Addresses
|
|
010 = 50-bit Addresses
|
|
100 = 66-bit Addresses
|
|
All other encodings are reserved. */
|
|
#else
|
|
uint32_t ex_addr : 3;
|
|
uint32_t reserved_3_31 : 29;
|
|
#endif
|
|
} s;
|
|
struct cvmx_sriomaintx_pe_llc_s cn63xx;
|
|
struct cvmx_sriomaintx_pe_llc_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_sriomaintx_pe_llc cvmx_sriomaintx_pe_llc_t;
|
|
|
|
/**
|
|
* cvmx_sriomaint#_port_0_ctl
|
|
*
|
|
* SRIOMAINT_PORT_0_CTL = SRIO Port 0 Control
|
|
*
|
|
* Port 0 Control
|
|
*
|
|
* Notes:
|
|
* This register contains assorted control bits.
|
|
*
|
|
* Clk_Rst: SRIOMAINT(0..1)_PORT_0_CTL hclk hrst_n
|
|
*/
|
|
union cvmx_sriomaintx_port_0_ctl
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_sriomaintx_port_0_ctl_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t pt_width : 2; /**< Hardware Port Width.
|
|
00 = One Lane supported.
|
|
01 = One/Two Lanes supported.
|
|
10 = One/Four Lanes supported.
|
|
11 = One/Two/Four Lanes supported.
|
|
This is a RO copy of SRIO*_IP_FEATURE[PT_WIDTH]. */
|
|
uint32_t it_width : 3; /**< Initialized Port Width
|
|
000 = Single-lane, Lane 0
|
|
001 = Single-lane, Lane 1 or 2
|
|
010 = Four-lane
|
|
011 = Two-lane
|
|
Others = Reserved */
|
|
uint32_t ov_width : 3; /**< Override Port Width. Writing this register causes
|
|
the port to reinitialize.
|
|
000 = No Override all lanes possible
|
|
001 = Reserved
|
|
010 = Force Single-lane, Lane 0
|
|
011 = Force Single-lane, Lane 2
|
|
(Lane 1 if only lanes 0,1 are connected)
|
|
100 = Reserved
|
|
101 = Force Two-lane, Disable Four-Lane
|
|
110 = Force Four-lane, Disable Two-Lane
|
|
111 = All lanes sizes enabled */
|
|
uint32_t disable : 1; /**< Port Disable. Setting this bit disables both
|
|
drivers and receivers. */
|
|
uint32_t o_enable : 1; /**< Port Output Enable. When cleared, port will
|
|
generate control symbols and respond to
|
|
maintenance transactions only. When set, all
|
|
transactions are allowed. */
|
|
uint32_t i_enable : 1; /**< Port Input Enable. When cleared, port will
|
|
generate control symbols and respond to
|
|
maintenance packets only. All other packets will
|
|
not be accepted. */
|
|
uint32_t dis_err : 1; /**< Disable Error Checking. Diagnostic Only. */
|
|
uint32_t mcast : 1; /**< Reserved. */
|
|
uint32_t reserved_18_18 : 1;
|
|
uint32_t enumb : 1; /**< Enumeration Boundry. SW can use this bit to
|
|
determine port enumeration. */
|
|
uint32_t reserved_16_16 : 1;
|
|
uint32_t ex_width : 2; /**< Extended Port Width not supported. */
|
|
uint32_t ex_stat : 2; /**< Extended Port Width Status. 00 = not supported */
|
|
uint32_t suppress : 8; /**< Retransmit Suppression Mask. CRF not Supported. */
|
|
uint32_t stp_port : 1; /**< Stop on Failed Port. This bit is used with the
|
|
DROP_PKT bit to force certain behavior when the
|
|
Error Rate Failed Threshold has been met or
|
|
exceeded. */
|
|
uint32_t drop_pkt : 1; /**< Drop on Failed Port. This bit is used with the
|
|
STP_PORT bit to force certain behavior when the
|
|
Error Rate Failed Threshold has been met or
|
|
exceeded. */
|
|
uint32_t prt_lock : 1; /**< When this bit is cleared, the packets that may be
|
|
received and issued are controlled by the state of
|
|
the O_ENABLE and I_ENABLE bits. When this bit is
|
|
set, this port is stopped and is not enabled to
|
|
issue or receive any packets; the input port can
|
|
still follow the training procedure and can still
|
|
send and respond to link-requests; all received
|
|
packets return packet-not-accepted control symbols
|
|
to force an error condition to be signaled by the
|
|
sending device. */
|
|
uint32_t pt_type : 1; /**< Port Type. 1 = Serial port. */
|
|
#else
|
|
uint32_t pt_type : 1;
|
|
uint32_t prt_lock : 1;
|
|
uint32_t drop_pkt : 1;
|
|
uint32_t stp_port : 1;
|
|
uint32_t suppress : 8;
|
|
uint32_t ex_stat : 2;
|
|
uint32_t ex_width : 2;
|
|
uint32_t reserved_16_16 : 1;
|
|
uint32_t enumb : 1;
|
|
uint32_t reserved_18_18 : 1;
|
|
uint32_t mcast : 1;
|
|
uint32_t dis_err : 1;
|
|
uint32_t i_enable : 1;
|
|
uint32_t o_enable : 1;
|
|
uint32_t disable : 1;
|
|
uint32_t ov_width : 3;
|
|
uint32_t it_width : 3;
|
|
uint32_t pt_width : 2;
|
|
#endif
|
|
} s;
|
|
struct cvmx_sriomaintx_port_0_ctl_s cn63xx;
|
|
struct cvmx_sriomaintx_port_0_ctl_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_sriomaintx_port_0_ctl cvmx_sriomaintx_port_0_ctl_t;
|
|
|
|
/**
|
|
* cvmx_sriomaint#_port_0_ctl2
|
|
*
|
|
* SRIOMAINT_PORT_0_CTL2 = SRIO Port 0 Control 2
|
|
*
|
|
* Port 0 Control 2
|
|
*
|
|
* Notes:
|
|
* These registers are accessed when a local processor or an external device wishes to examine the
|
|
* port baudrate information. WARNING: Writes to this register will reinitialize the SRIO link.
|
|
*
|
|
* Clk_Rst: SRIOMAINT(0..1)_PORT_0_CTL2 hclk hrst_n
|
|
*/
|
|
union cvmx_sriomaintx_port_0_ctl2
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_sriomaintx_port_0_ctl2_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t sel_baud : 4; /**< Link Baud Rate Selected.
|
|
0000 - No rate selected
|
|
0001 - 1.25 GBaud
|
|
0010 - 2.5 GBaud
|
|
0011 - 3.125 GBaud
|
|
0100 - 5.0 GBaud
|
|
0101 - 6.25 GBaud (reserved)
|
|
0110 - 0b1111 - Reserved
|
|
Indicates the speed of the interface SERDES lanes
|
|
(should match the value selected by SUP_* /ENB_*
|
|
below). */
|
|
uint32_t baud_sup : 1; /**< Automatic Baud Rate Discovery not supported. */
|
|
uint32_t baud_enb : 1; /**< Auto Baud Rate Discovery Enable. */
|
|
uint32_t sup_125g : 1; /**< 1.25GB Rate Operation supported.
|
|
Set when the interface SERDES lanes are operating
|
|
at 1.25 Gbaud (as selected by QLM*_SPD straps). */
|
|
uint32_t enb_125g : 1; /**< 1.25GB Rate Operation enable.
|
|
Reset to 1 when the interface SERDES lanes are
|
|
operating at 1.25 Gbaud (as selected by QLM*_SPD
|
|
straps). Reset to 0 otherwise. */
|
|
uint32_t sup_250g : 1; /**< 2.50GB Rate Operation supported.
|
|
Set when the interface SERDES lanes are operating
|
|
at 2.5 Gbaud (as selected by QLM*_SPD straps). */
|
|
uint32_t enb_250g : 1; /**< 2.50GB Rate Operation enable.
|
|
Reset to 1 when the interface SERDES lanes are
|
|
operating at 2.5 Gbaud (as selected by QLM*_SPD
|
|
straps). Reset to 0 otherwise. */
|
|
uint32_t sup_312g : 1; /**< 3.125GB Rate Operation supported.
|
|
Set when the interface SERDES lanes are operating
|
|
at 3.125 Gbaud (as selected by QLM*_SPD straps). */
|
|
uint32_t enb_312g : 1; /**< 3.125GB Rate Operation enable.
|
|
Reset to 1 when the interface SERDES lanes are
|
|
operating at 3.125 Gbaud (as selected by QLM*_SPD
|
|
straps). Reset to 0 otherwise. */
|
|
uint32_t sub_500g : 1; /**< 5.0GB Rate Operation supported.
|
|
Set when the interface SERDES lanes are operating
|
|
at 5.0 Gbaud (as selected by QLM*_SPD straps). */
|
|
uint32_t enb_500g : 1; /**< 5.0GB Rate Operation enable.
|
|
Reset to 1 when the interface SERDES lanes are
|
|
operating at 5.0 Gbaud (as selected by QLM*_SPD
|
|
straps). Reset to 0 otherwise. */
|
|
uint32_t sup_625g : 1; /**< 6.25GB Rate Operation (not supported). */
|
|
uint32_t enb_625g : 1; /**< 6.25GB Rate Operation enable. */
|
|
uint32_t reserved_2_15 : 14;
|
|
uint32_t tx_emph : 1; /**< Indicates whether is port is able to transmit
|
|
commands to control the transmit emphasis in the
|
|
connected port. */
|
|
uint32_t emph_en : 1; /**< Controls whether a port may adjust the
|
|
transmit emphasis in the connected port. This bit
|
|
should be cleared for normal operation. */
|
|
#else
|
|
uint32_t emph_en : 1;
|
|
uint32_t tx_emph : 1;
|
|
uint32_t reserved_2_15 : 14;
|
|
uint32_t enb_625g : 1;
|
|
uint32_t sup_625g : 1;
|
|
uint32_t enb_500g : 1;
|
|
uint32_t sub_500g : 1;
|
|
uint32_t enb_312g : 1;
|
|
uint32_t sup_312g : 1;
|
|
uint32_t enb_250g : 1;
|
|
uint32_t sup_250g : 1;
|
|
uint32_t enb_125g : 1;
|
|
uint32_t sup_125g : 1;
|
|
uint32_t baud_enb : 1;
|
|
uint32_t baud_sup : 1;
|
|
uint32_t sel_baud : 4;
|
|
#endif
|
|
} s;
|
|
struct cvmx_sriomaintx_port_0_ctl2_s cn63xx;
|
|
struct cvmx_sriomaintx_port_0_ctl2_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_sriomaintx_port_0_ctl2 cvmx_sriomaintx_port_0_ctl2_t;
|
|
|
|
/**
|
|
* cvmx_sriomaint#_port_0_err_stat
|
|
*
|
|
* SRIOMAINT_PORT_0_ERR_STAT = SRIO Port 0 Error and Status
|
|
*
|
|
* Port 0 Error and Status
|
|
*
|
|
* Notes:
|
|
* This register displays port error and status information. Several port error conditions are
|
|
* captured here and must be cleared by writing 1's to the individual bits.
|
|
*
|
|
* Clk_Rst: SRIOMAINT(0..1)_PORT_0_ERR_STAT hclk hrst_n
|
|
*/
|
|
union cvmx_sriomaintx_port_0_err_stat
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_sriomaintx_port_0_err_stat_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t reserved_27_31 : 5;
|
|
uint32_t pkt_drop : 1; /**< Output Packet Dropped. */
|
|
uint32_t o_fail : 1; /**< Output Port has encountered a failure condition,
|
|
meaning the port's failed error threshold has
|
|
reached SRIOMAINT(0..1)_ERB_ERR_RATE_THR.ER_FAIL value. */
|
|
uint32_t o_dgrad : 1; /**< Output Port has encountered a degraded condition,
|
|
meaning the port's degraded threshold has
|
|
reached SRIOMAINT(0..1)_ERB_ERR_RATE_THR.ER_DGRAD
|
|
value. */
|
|
uint32_t reserved_21_23 : 3;
|
|
uint32_t o_retry : 1; /**< Output Retry Encountered. This bit is set when
|
|
bit 18 is set. */
|
|
uint32_t o_rtried : 1; /**< Output Port has received a packet-retry condition
|
|
and cannot make forward progress. This bit is set
|
|
when bit 18 is set and is cleared when a packet-
|
|
accepted or a packet-not-accepted control symbol
|
|
is received. */
|
|
uint32_t o_sm_ret : 1; /**< Output Port State Machine has received a
|
|
packet-retry control symbol and is retrying the
|
|
packet. */
|
|
uint32_t o_error : 1; /**< Output Error Encountered and possibly recovered
|
|
from. This sticky bit is set with bit 16. */
|
|
uint32_t o_sm_err : 1; /**< Output Port State Machine has encountered an
|
|
error. */
|
|
uint32_t reserved_11_15 : 5;
|
|
uint32_t i_sm_ret : 1; /**< Input Port State Machine has received a
|
|
packet-retry control symbol and is retrying the
|
|
packet. */
|
|
uint32_t i_error : 1; /**< Input Error Encountered and possibly recovered
|
|
from. This sticky bit is set with bit 8. */
|
|
uint32_t i_sm_err : 1; /**< Input Port State Machine has encountered an
|
|
error. */
|
|
uint32_t reserved_5_7 : 3;
|
|
uint32_t pt_write : 1; /**< Port has encountered a condition which required it
|
|
initiate a Maintenance Port-Write Operation. */
|
|
uint32_t reserved_3_3 : 1;
|
|
uint32_t pt_error : 1; /**< Input or Output Port has encountered an
|
|
unrecoverable error condition. */
|
|
uint32_t pt_ok : 1; /**< Input or Output Port are intitialized and the port
|
|
is exchanging error free control symbols with
|
|
attached device. */
|
|
uint32_t pt_uinit : 1; /**< Port is uninitialized. This bit and bit 1 are
|
|
mutually exclusive. */
|
|
#else
|
|
uint32_t pt_uinit : 1;
|
|
uint32_t pt_ok : 1;
|
|
uint32_t pt_error : 1;
|
|
uint32_t reserved_3_3 : 1;
|
|
uint32_t pt_write : 1;
|
|
uint32_t reserved_5_7 : 3;
|
|
uint32_t i_sm_err : 1;
|
|
uint32_t i_error : 1;
|
|
uint32_t i_sm_ret : 1;
|
|
uint32_t reserved_11_15 : 5;
|
|
uint32_t o_sm_err : 1;
|
|
uint32_t o_error : 1;
|
|
uint32_t o_sm_ret : 1;
|
|
uint32_t o_rtried : 1;
|
|
uint32_t o_retry : 1;
|
|
uint32_t reserved_21_23 : 3;
|
|
uint32_t o_dgrad : 1;
|
|
uint32_t o_fail : 1;
|
|
uint32_t pkt_drop : 1;
|
|
uint32_t reserved_27_31 : 5;
|
|
#endif
|
|
} s;
|
|
struct cvmx_sriomaintx_port_0_err_stat_s cn63xx;
|
|
struct cvmx_sriomaintx_port_0_err_stat_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_sriomaintx_port_0_err_stat cvmx_sriomaintx_port_0_err_stat_t;
|
|
|
|
/**
|
|
* cvmx_sriomaint#_port_0_link_req
|
|
*
|
|
* SRIOMAINT_PORT_0_LINK_REQ = SRIO Port 0 Link Request (Pass 2)
|
|
*
|
|
* Port 0 Manual Link Request
|
|
*
|
|
* Notes:
|
|
* Writing this register generates the link request symbol or eight device reset symbols. The
|
|
* progress of the request can be determined by reading SRIOMAINT(0..1)_PORT_0_LINK_RESP. Only a single
|
|
* request should be generated at a time.
|
|
*
|
|
* Clk_Rst: SRIOMAINT(0..1)_PORT_0_LINK_REQ hclk hrst_n
|
|
*/
|
|
union cvmx_sriomaintx_port_0_link_req
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_sriomaintx_port_0_link_req_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t reserved_3_31 : 29;
|
|
uint32_t cmd : 3; /**< Link Request Command.
|
|
011 - Reset Device
|
|
100 - Link Request
|
|
All other values reserved. */
|
|
#else
|
|
uint32_t cmd : 3;
|
|
uint32_t reserved_3_31 : 29;
|
|
#endif
|
|
} s;
|
|
struct cvmx_sriomaintx_port_0_link_req_s cn63xx;
|
|
};
|
|
typedef union cvmx_sriomaintx_port_0_link_req cvmx_sriomaintx_port_0_link_req_t;
|
|
|
|
/**
|
|
* cvmx_sriomaint#_port_0_link_resp
|
|
*
|
|
* SRIOMAINT_PORT_0_LINK_RESP = SRIO Port 0 Link Response (Pass 2)
|
|
*
|
|
* Port 0 Manual Link Response
|
|
*
|
|
* Notes:
|
|
* This register only returns responses generated by writes to SRIOMAINT(0..1)_PORT_0_LINK_REQ.
|
|
*
|
|
* Clk_Rst: SRIOMAINT(0..1)_PORT_0_LINK_RESP hclk hrst_n
|
|
*/
|
|
union cvmx_sriomaintx_port_0_link_resp
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_sriomaintx_port_0_link_resp_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t valid : 1; /**< Link Response Valid.
|
|
1 = Link Response Received or Reset Device
|
|
Symbols Transmitted. Value cleared on read.
|
|
0 = No response received. */
|
|
uint32_t reserved_11_30 : 20;
|
|
uint32_t ackid : 6; /**< AckID received from link response.
|
|
Reset Device symbol response is always zero.
|
|
Bit 10 is used for IDLE2 and always reads zero. */
|
|
uint32_t status : 5; /**< Link Response Status.
|
|
Status supplied by link response.
|
|
Reset Device symbol response is always zero. */
|
|
#else
|
|
uint32_t status : 5;
|
|
uint32_t ackid : 6;
|
|
uint32_t reserved_11_30 : 20;
|
|
uint32_t valid : 1;
|
|
#endif
|
|
} s;
|
|
struct cvmx_sriomaintx_port_0_link_resp_s cn63xx;
|
|
};
|
|
typedef union cvmx_sriomaintx_port_0_link_resp cvmx_sriomaintx_port_0_link_resp_t;
|
|
|
|
/**
|
|
* cvmx_sriomaint#_port_0_local_ackid
|
|
*
|
|
* SRIOMAINT_PORT_0_LOCAL_ACKID = SRIO Port 0 Local AckID (Pass 2)
|
|
*
|
|
* Port 0 Local AckID Control
|
|
*
|
|
* Notes:
|
|
* This register is typically only written when recovering from a failed link. It may be read at any
|
|
* time the MAC is out of reset. Writes to the O_ACKID field will be used for both the O_ACKID and
|
|
* E_ACKID. Care must be taken to ensure that no packets are pending at the time of a write. The
|
|
* number of pending packets can be read in the TX_INUSE field of SRIO(0..1)_MAC_BUFFERS.
|
|
*
|
|
* Clk_Rst: SRIOMAINT(0..1)_PORT_0_LOCAL_ACKID hclk hrst_n
|
|
*/
|
|
union cvmx_sriomaintx_port_0_local_ackid
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_sriomaintx_port_0_local_ackid_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t reserved_30_31 : 2;
|
|
uint32_t i_ackid : 6; /**< Next Expected Inbound AckID.
|
|
Bit 29 is used for IDLE2 and should be zero. */
|
|
uint32_t reserved_14_23 : 10;
|
|
uint32_t e_ackid : 6; /**< Next Expected Unacknowledged AckID.
|
|
Bit 13 is used for IDLE2 and should be zero. */
|
|
uint32_t reserved_6_7 : 2;
|
|
uint32_t o_ackid : 6; /**< Next Outgoing Packet AckID.
|
|
Bit 5 is used for IDLE2 and should be zero. */
|
|
#else
|
|
uint32_t o_ackid : 6;
|
|
uint32_t reserved_6_7 : 2;
|
|
uint32_t e_ackid : 6;
|
|
uint32_t reserved_14_23 : 10;
|
|
uint32_t i_ackid : 6;
|
|
uint32_t reserved_30_31 : 2;
|
|
#endif
|
|
} s;
|
|
struct cvmx_sriomaintx_port_0_local_ackid_s cn63xx;
|
|
};
|
|
typedef union cvmx_sriomaintx_port_0_local_ackid cvmx_sriomaintx_port_0_local_ackid_t;
|
|
|
|
/**
|
|
* cvmx_sriomaint#_port_gen_ctl
|
|
*
|
|
* SRIOMAINT_PORT_GEN_CTL = SRIO Port General Control
|
|
*
|
|
* Port General Control
|
|
*
|
|
* Notes:
|
|
* Clk_Rst: SRIOMAINT(0..1)_PORT_GEN_CTL hclk hrst_n
|
|
*
|
|
*/
|
|
union cvmx_sriomaintx_port_gen_ctl
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_sriomaintx_port_gen_ctl_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t host : 1; /**< Host Device.
|
|
The HOST reset value is based on corresponding
|
|
MIO_RST_CTL*[PRTMODE], whose reset value is
|
|
selected by the corresponding QLM*_HOST_MODE strap
|
|
on a chip cold reset (and can be later modified by
|
|
software). HOST resets to 1 when
|
|
MIO_RST_CTL*[PRTMODE] selects RC (i.e. host) mode,
|
|
else 0. */
|
|
uint32_t menable : 1; /**< Master Enable. Must be set for device to issue
|
|
read, write, doorbell, message requests. */
|
|
uint32_t discover : 1; /**< Discovered. The device has been discovered by the
|
|
host responsible for initialization. */
|
|
uint32_t reserved_0_28 : 29;
|
|
#else
|
|
uint32_t reserved_0_28 : 29;
|
|
uint32_t discover : 1;
|
|
uint32_t menable : 1;
|
|
uint32_t host : 1;
|
|
#endif
|
|
} s;
|
|
struct cvmx_sriomaintx_port_gen_ctl_s cn63xx;
|
|
struct cvmx_sriomaintx_port_gen_ctl_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_sriomaintx_port_gen_ctl cvmx_sriomaintx_port_gen_ctl_t;
|
|
|
|
/**
|
|
* cvmx_sriomaint#_port_lt_ctl
|
|
*
|
|
* SRIOMAINT_PORT_LT_CTL = SRIO Link Layer Timeout Control
|
|
*
|
|
* Link Layer Timeout Control
|
|
*
|
|
* Notes:
|
|
* This register controls the timeout for link layer transactions. It is used as the timeout between
|
|
* sending a packet (of any type) or link request to receiving the corresponding link acknowledge or
|
|
* link-response. Each count represents 200ns. The minimum timeout period is the TIMEOUT x 200nS
|
|
* and the maximum is twice that number. A value less than 32 may not guarantee that all timeout
|
|
* errors will be reported correctly. When the timeout period expires the packet or link request is
|
|
* dropped and the error is logged in the LNK_TOUT field of the SRIOMAINT(0..1)_ERB_ERR_DET register. A
|
|
* value of 0 in this register will allow the packet or link request to be issued but it will timeout
|
|
* immediately. This value is not recommended for normal operation.
|
|
*
|
|
* Clk_Rst: SRIOMAINT(0..1)_PORT_LT_CTL hclk hrst_n
|
|
*/
|
|
union cvmx_sriomaintx_port_lt_ctl
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_sriomaintx_port_lt_ctl_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t timeout : 24; /**< Timeout Value */
|
|
uint32_t reserved_0_7 : 8;
|
|
#else
|
|
uint32_t reserved_0_7 : 8;
|
|
uint32_t timeout : 24;
|
|
#endif
|
|
} s;
|
|
struct cvmx_sriomaintx_port_lt_ctl_s cn63xx;
|
|
struct cvmx_sriomaintx_port_lt_ctl_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_sriomaintx_port_lt_ctl cvmx_sriomaintx_port_lt_ctl_t;
|
|
|
|
/**
|
|
* cvmx_sriomaint#_port_mbh0
|
|
*
|
|
* SRIOMAINT_PORT_MBH0 = SRIO Port Maintenance Block Header 0
|
|
*
|
|
* Port Maintenance Block Header 0
|
|
*
|
|
* Notes:
|
|
* Clk_Rst: SRIOMAINT(0..1)_PORT_MBH0 hclk hrst_n
|
|
*
|
|
*/
|
|
union cvmx_sriomaintx_port_mbh0
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_sriomaintx_port_mbh0_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t ef_ptr : 16; /**< Pointer to Error Management Block. */
|
|
uint32_t ef_id : 16; /**< Extended Feature ID (Generic Endpoint Device) */
|
|
#else
|
|
uint32_t ef_id : 16;
|
|
uint32_t ef_ptr : 16;
|
|
#endif
|
|
} s;
|
|
struct cvmx_sriomaintx_port_mbh0_s cn63xx;
|
|
struct cvmx_sriomaintx_port_mbh0_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_sriomaintx_port_mbh0 cvmx_sriomaintx_port_mbh0_t;
|
|
|
|
/**
|
|
* cvmx_sriomaint#_port_rt_ctl
|
|
*
|
|
* SRIOMAINT_PORT_RT_CTL = SRIO Logical Layer Timeout Control
|
|
*
|
|
* Logical Layer Timeout Control
|
|
*
|
|
* Notes:
|
|
* This register controls the timeout for logical layer transactions. It is used under two
|
|
* conditions. First, it is used as the timeout period between sending a packet requiring a packet
|
|
* response being sent to receiving the corresponding response. This is used for all outgoing packet
|
|
* types including memory, maintenance, doorbells and message operations. When the timeout period
|
|
* expires the packet is disgarded and the error is logged in the PKT_TOUT field of the
|
|
* SRIOMAINT(0..1)_ERB_LT_ERR_DET register. The second use of this register is as a timeout period
|
|
* between incoming message segments of the same message. If a message segment is received then the
|
|
* MSG_TOUT field of the SRIOMAINT(0..1)_ERB_LT_ERR_DET register is set if the next segment has not been
|
|
* received before the time expires. In both cases, each count represents 200ns. The minimum
|
|
* timeout period is the TIMEOUT x 200nS and the maximum is twice that number. A value less than 32
|
|
* may not guarantee that all timeout errors will be reported correctly. A value of 0 disables the
|
|
* logical layer timeouts and is not recommended for normal operation.
|
|
*
|
|
* Clk_Rst: SRIOMAINT(0..1)_PORT_RT_CTL hclk hrst_n
|
|
*/
|
|
union cvmx_sriomaintx_port_rt_ctl
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_sriomaintx_port_rt_ctl_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t timeout : 24; /**< Timeout Value */
|
|
uint32_t reserved_0_7 : 8;
|
|
#else
|
|
uint32_t reserved_0_7 : 8;
|
|
uint32_t timeout : 24;
|
|
#endif
|
|
} s;
|
|
struct cvmx_sriomaintx_port_rt_ctl_s cn63xx;
|
|
struct cvmx_sriomaintx_port_rt_ctl_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_sriomaintx_port_rt_ctl cvmx_sriomaintx_port_rt_ctl_t;
|
|
|
|
/**
|
|
* cvmx_sriomaint#_port_ttl_ctl
|
|
*
|
|
* SRIOMAINT_PORT_TTL_CTL = SRIO Packet Time to Live Control (Pass 2)
|
|
*
|
|
* Packet Time to Live
|
|
*
|
|
* Notes:
|
|
* This register controls the timeout for outgoing packets. It is used to make sure packets are
|
|
* being transmitted and acknowledged within a reasonable period of time. The timeout value
|
|
* corresponds to TIMEOUT x 200ns and a value of 0 disables the timer. The actualy value of the
|
|
* should be greater than the physical layer timout specified in SRIOMAINT(0..1)_PORT_LT_CTL and is
|
|
* typically a less SRIOMAINT(0..1)_PORT_LT_CTL timeout than the response timeout specified in
|
|
* SRIOMAINT(0..1)_PORT_RT_CTL. When the timeout expires the TTL interrupt is asserted, any packets
|
|
* currently being transmitted are dropped, the SRIOMAINT(0..1)_TX_DROP.DROP bit is set (causing any
|
|
* scheduled packets to be dropped), the SRIOMAINT(0..1)_TX_DROP.DROP_CNT is incremented and the SRIO
|
|
* output state is set to IDLE (all errors are cleared). Software must clear the
|
|
* SRIOMAINT(0..1)_TX_DROP.DROP bit to resume transmitting packets.
|
|
*
|
|
* Clk_Rst: SRIOMAINT(0..1)_PORT_RT_CTL hclk hrst_n
|
|
*/
|
|
union cvmx_sriomaintx_port_ttl_ctl
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_sriomaintx_port_ttl_ctl_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t timeout : 24; /**< Timeout Value */
|
|
uint32_t reserved_0_7 : 8;
|
|
#else
|
|
uint32_t reserved_0_7 : 8;
|
|
uint32_t timeout : 24;
|
|
#endif
|
|
} s;
|
|
struct cvmx_sriomaintx_port_ttl_ctl_s cn63xx;
|
|
};
|
|
typedef union cvmx_sriomaintx_port_ttl_ctl cvmx_sriomaintx_port_ttl_ctl_t;
|
|
|
|
/**
|
|
* cvmx_sriomaint#_pri_dev_id
|
|
*
|
|
* SRIOMAINT_PRI_DEV_ID = SRIO Primary Device ID
|
|
*
|
|
* Primary 8 and 16 bit Device IDs
|
|
*
|
|
* Notes:
|
|
* This register defines the primary 8 and 16 bit device IDs used for large and small transport. An
|
|
* optional secondary set of device IDs are located in SRIOMAINT(0..1)_SEC_DEV_ID.
|
|
*
|
|
* Clk_Rst: SRIOMAINT(0..1)_PRI_DEV_ID hclk hrst_n
|
|
*/
|
|
union cvmx_sriomaintx_pri_dev_id
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_sriomaintx_pri_dev_id_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t reserved_24_31 : 8;
|
|
uint32_t id8 : 8; /**< Primary 8-bit Device ID */
|
|
uint32_t id16 : 16; /**< Primary 16-bit Device ID */
|
|
#else
|
|
uint32_t id16 : 16;
|
|
uint32_t id8 : 8;
|
|
uint32_t reserved_24_31 : 8;
|
|
#endif
|
|
} s;
|
|
struct cvmx_sriomaintx_pri_dev_id_s cn63xx;
|
|
struct cvmx_sriomaintx_pri_dev_id_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_sriomaintx_pri_dev_id cvmx_sriomaintx_pri_dev_id_t;
|
|
|
|
/**
|
|
* cvmx_sriomaint#_sec_dev_ctrl
|
|
*
|
|
* SRIOMAINT_SEC_DEV_CTRL = SRIO Secondary Device ID Control
|
|
*
|
|
* Control for Secondary Device IDs
|
|
*
|
|
* Notes:
|
|
* This register enables the secondary 8 and 16 bit device IDs used for large and small transport.
|
|
* The corresponding secondary ID must be written before the ID is enabled. The secondary IDs should
|
|
* not be enabled if the values of the primary and secondary IDs are identical.
|
|
*
|
|
* Clk_Rst: SRIOMAINT(0..1)_SEC_DEV_CTRL hclk hrst_n
|
|
*/
|
|
union cvmx_sriomaintx_sec_dev_ctrl
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_sriomaintx_sec_dev_ctrl_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t reserved_2_31 : 30;
|
|
uint32_t enable8 : 1; /**< Enable matches to secondary 8-bit Device ID */
|
|
uint32_t enable16 : 1; /**< Enable matches to secondary 16-bit Device ID */
|
|
#else
|
|
uint32_t enable16 : 1;
|
|
uint32_t enable8 : 1;
|
|
uint32_t reserved_2_31 : 30;
|
|
#endif
|
|
} s;
|
|
struct cvmx_sriomaintx_sec_dev_ctrl_s cn63xx;
|
|
struct cvmx_sriomaintx_sec_dev_ctrl_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_sriomaintx_sec_dev_ctrl cvmx_sriomaintx_sec_dev_ctrl_t;
|
|
|
|
/**
|
|
* cvmx_sriomaint#_sec_dev_id
|
|
*
|
|
* SRIOMAINT_SEC_DEV_ID = SRIO Secondary Device ID
|
|
*
|
|
* Secondary 8 and 16 bit Device IDs
|
|
*
|
|
* Notes:
|
|
* This register defines the secondary 8 and 16 bit device IDs used for large and small transport.
|
|
* The corresponding secondary ID must be written before the ID is enabled in the
|
|
* SRIOMAINT(0..1)_SEC_DEV_CTRL register. The primary set of device IDs are located in
|
|
* SRIOMAINT(0..1)_PRI_DEV_ID register. The secondary IDs should not be written to the same values as the
|
|
* corresponding primary IDs.
|
|
*
|
|
* Clk_Rst: SRIOMAINT(0..1)_SEC_DEV_ID hclk hrst_n
|
|
*/
|
|
union cvmx_sriomaintx_sec_dev_id
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_sriomaintx_sec_dev_id_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t reserved_24_31 : 8;
|
|
uint32_t id8 : 8; /**< Secondary 8-bit Device ID */
|
|
uint32_t id16 : 16; /**< Secondary 16-bit Device ID */
|
|
#else
|
|
uint32_t id16 : 16;
|
|
uint32_t id8 : 8;
|
|
uint32_t reserved_24_31 : 8;
|
|
#endif
|
|
} s;
|
|
struct cvmx_sriomaintx_sec_dev_id_s cn63xx;
|
|
struct cvmx_sriomaintx_sec_dev_id_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_sriomaintx_sec_dev_id cvmx_sriomaintx_sec_dev_id_t;
|
|
|
|
/**
|
|
* cvmx_sriomaint#_serial_lane_hdr
|
|
*
|
|
* SRIOMAINT_SERIAL_LANE_HDR = SRIO Serial Lane Header
|
|
*
|
|
* SRIO Serial Lane Header
|
|
*
|
|
* Notes:
|
|
* The error management extensions block header register contains the EF_PTR to the next EF_BLK and
|
|
* the EF_ID that identifies this as the Serial Lane Status Block.
|
|
*
|
|
* Clk_Rst: SRIOMAINT(0..1)_SERIAL_LANE_HDR hclk hrst_n
|
|
*/
|
|
union cvmx_sriomaintx_serial_lane_hdr
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_sriomaintx_serial_lane_hdr_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t ef_ptr : 16; /**< Pointer to the next block in the extended features
|
|
data structure. */
|
|
uint32_t ef_id : 16;
|
|
#else
|
|
uint32_t ef_id : 16;
|
|
uint32_t ef_ptr : 16;
|
|
#endif
|
|
} s;
|
|
struct cvmx_sriomaintx_serial_lane_hdr_s cn63xx;
|
|
struct cvmx_sriomaintx_serial_lane_hdr_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_sriomaintx_serial_lane_hdr cvmx_sriomaintx_serial_lane_hdr_t;
|
|
|
|
/**
|
|
* cvmx_sriomaint#_src_ops
|
|
*
|
|
* SRIOMAINT_SRC_OPS = SRIO Source Operations
|
|
*
|
|
* The logical operations initiated by the Octeon.
|
|
*
|
|
* Notes:
|
|
* The logical operations initiated by the Cores. The Source OPs register shows the operations
|
|
* specified in the SRIO(0..1)_IP_FEATURE.OPS register.
|
|
*
|
|
* Clk_Rst: SRIOMAINT(0..1)_SRC_OPS hclk hrst_n
|
|
*/
|
|
union cvmx_sriomaintx_src_ops
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_sriomaintx_src_ops_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t gsm_read : 1; /**< PE does not support Read Home operations.
|
|
This is a RO copy of SRIO*_IP_FEATURE[OPS<31>] */
|
|
uint32_t i_read : 1; /**< PE does not support Instruction Read.
|
|
This is a RO copy of SRIO*_IP_FEATURE[OPS<30>] */
|
|
uint32_t rd_own : 1; /**< PE does not support Read for Ownership.
|
|
This is a RO copy of SRIO*_IP_FEATURE[OPS<29>] */
|
|
uint32_t d_invald : 1; /**< PE does not support Data Cache Invalidate.
|
|
This is a RO copy of SRIO*_IP_FEATURE[OPS<28>] */
|
|
uint32_t castout : 1; /**< PE does not support Castout Operations.
|
|
This is a RO copy of SRIO*_IP_FEATURE[OPS<27>] */
|
|
uint32_t d_flush : 1; /**< PE does not support Data Cache Flush.
|
|
This is a RO copy of SRIO*_IP_FEATURE[OPS<26>] */
|
|
uint32_t io_read : 1; /**< PE does not support IO Read.
|
|
This is a RO copy of SRIO*_IP_FEATURE[OPS<25>] */
|
|
uint32_t i_invald : 1; /**< PE does not support Instruction Cache Invalidate.
|
|
This is a RO copy of SRIO*_IP_FEATURE[OPS<24>] */
|
|
uint32_t tlb_inv : 1; /**< PE does not support TLB Entry Invalidate.
|
|
This is a RO copy of SRIO*_IP_FEATURE[OPS<23>] */
|
|
uint32_t tlb_invs : 1; /**< PE does not support TLB Entry Invalidate Sync.
|
|
This is a RO copy of SRIO*_IP_FEATURE[OPS<22>] */
|
|
uint32_t reserved_16_21 : 6;
|
|
uint32_t read : 1; /**< PE can support Nread operations.
|
|
This is a RO copy of SRIO*_IP_FEATURE[OPS<15>] */
|
|
uint32_t write : 1; /**< PE can support Nwrite operations.
|
|
This is a RO copy of SRIO*_IP_FEATURE[OPS<14>] */
|
|
uint32_t swrite : 1; /**< PE can support Swrite operations.
|
|
This is a RO copy of SRIO*_IP_FEATURE[OPS<13>] */
|
|
uint32_t write_r : 1; /**< PE can support Write with Response operations.
|
|
This is a RO copy of SRIO*_IP_FEATURE[OPS<12>] */
|
|
uint32_t msg : 1; /**< PE can support Data Message operations.
|
|
This is a RO copy of SRIO*_IP_FEATURE[OPS<11>] */
|
|
uint32_t doorbell : 1; /**< PE can support Doorbell operations.
|
|
This is a RO copy of SRIO*_IP_FEATURE[OPS<10>] */
|
|
uint32_t compswap : 1; /**< PE does not support Atomic Compare and Swap.
|
|
This is a RO copy of SRIO*_IP_FEATURE[OPS<9>] */
|
|
uint32_t testswap : 1; /**< PE does not support Atomic Test and Swap.
|
|
This is a RO copy of SRIO*_IP_FEATURE[OPS<8>] */
|
|
uint32_t atom_inc : 1; /**< PE can support Atomic increment operations.
|
|
This is a RO copy of SRIO*_IP_FEATURE[OPS<7>] */
|
|
uint32_t atom_dec : 1; /**< PE can support Atomic decrement operations.
|
|
This is a RO copy of SRIO*_IP_FEATURE[OPS<6>] */
|
|
uint32_t atom_set : 1; /**< PE can support Atomic set operations.
|
|
This is a RO copy of SRIO*_IP_FEATURE[OPS<5>] */
|
|
uint32_t atom_clr : 1; /**< PE can support Atomic clear operations.
|
|
This is a RO copy of SRIO*_IP_FEATURE[OPS<4>] */
|
|
uint32_t atom_swp : 1; /**< PE does not support Atomic Swap.
|
|
This is a RO copy of SRIO*_IP_FEATURE[OPS<3>] */
|
|
uint32_t port_wr : 1; /**< PE can Port Write operations.
|
|
This is a RO copy of SRIO*_IP_FEATURE[OPS<2>] */
|
|
uint32_t reserved_0_1 : 2;
|
|
#else
|
|
uint32_t reserved_0_1 : 2;
|
|
uint32_t port_wr : 1;
|
|
uint32_t atom_swp : 1;
|
|
uint32_t atom_clr : 1;
|
|
uint32_t atom_set : 1;
|
|
uint32_t atom_dec : 1;
|
|
uint32_t atom_inc : 1;
|
|
uint32_t testswap : 1;
|
|
uint32_t compswap : 1;
|
|
uint32_t doorbell : 1;
|
|
uint32_t msg : 1;
|
|
uint32_t write_r : 1;
|
|
uint32_t swrite : 1;
|
|
uint32_t write : 1;
|
|
uint32_t read : 1;
|
|
uint32_t reserved_16_21 : 6;
|
|
uint32_t tlb_invs : 1;
|
|
uint32_t tlb_inv : 1;
|
|
uint32_t i_invald : 1;
|
|
uint32_t io_read : 1;
|
|
uint32_t d_flush : 1;
|
|
uint32_t castout : 1;
|
|
uint32_t d_invald : 1;
|
|
uint32_t rd_own : 1;
|
|
uint32_t i_read : 1;
|
|
uint32_t gsm_read : 1;
|
|
#endif
|
|
} s;
|
|
struct cvmx_sriomaintx_src_ops_s cn63xx;
|
|
struct cvmx_sriomaintx_src_ops_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_sriomaintx_src_ops cvmx_sriomaintx_src_ops_t;
|
|
|
|
/**
|
|
* cvmx_sriomaint#_tx_drop
|
|
*
|
|
* SRIOMAINT_TX_DROP = SRIO MAC Outgoing Packet Drop (Pass 2)
|
|
*
|
|
* Outging SRIO Packet Drop Control/Status
|
|
*
|
|
* Notes:
|
|
* This register controls and provides status for dropping outgoing SRIO packets. The DROP bit
|
|
* should only be cleared when no packets are currently being dropped. This can be guaranteed by
|
|
* clearing the SRIOMAINT(0..1)_PORT_0_CTL.O_ENABLE bit before changing the DROP bit and restoring the
|
|
* O_ENABLE afterwards.
|
|
*
|
|
* Clk_Rst: SRIOMAINT(0..1)_MAC_CTRL hclk hrst_n
|
|
*/
|
|
union cvmx_sriomaintx_tx_drop
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_sriomaintx_tx_drop_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t reserved_17_31 : 15;
|
|
uint32_t drop : 1; /**< All outgoing packets are dropped. Any packets
|
|
requiring a response will return 1's after the
|
|
SRIOMAINT(0..1)_PORT_RT_CTL Timeout expires. This bit
|
|
is set automatically when the TTL Timeout occurs
|
|
or can be set by software and must always be
|
|
cleared by software. */
|
|
uint32_t drop_cnt : 16; /**< Number of packets dropped by transmit logic.
|
|
Packets are dropped whenever a packet is ready to
|
|
be transmitted and a TTL Timeouts occur, the DROP
|
|
bit is set or the SRIOMAINT(0..1)_ERB_ERR_RATE_THR
|
|
FAIL_TH has been reached and the DROP_PKT bit is
|
|
set in SRIOMAINT(0..1)_PORT_0_CTL. */
|
|
#else
|
|
uint32_t drop_cnt : 16;
|
|
uint32_t drop : 1;
|
|
uint32_t reserved_17_31 : 15;
|
|
#endif
|
|
} s;
|
|
struct cvmx_sriomaintx_tx_drop_s cn63xx;
|
|
};
|
|
typedef union cvmx_sriomaintx_tx_drop cvmx_sriomaintx_tx_drop_t;
|
|
|
|
#endif
|