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.
4422 lines
197 KiB
C
4422 lines
197 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-pcieepx-defs.h
|
|
*
|
|
* Configuration and status register (CSR) type definitions for
|
|
* Octeon pcieepx.
|
|
*
|
|
* This file is auto generated. Do not edit.
|
|
*
|
|
* <hr>$Revision$<hr>
|
|
*
|
|
*/
|
|
#ifndef __CVMX_PCIEEPX_TYPEDEFS_H__
|
|
#define __CVMX_PCIEEPX_TYPEDEFS_H__
|
|
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG000(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG000(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000000000ull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG000(block_id) (0x0000000000000000ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG001(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG001(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000000004ull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG001(block_id) (0x0000000000000004ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG002(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG002(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000000008ull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG002(block_id) (0x0000000000000008ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG003(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG003(%lu) is invalid on this chip\n", block_id);
|
|
return 0x000000000000000Cull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG003(block_id) (0x000000000000000Cull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG004(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG004(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000000010ull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG004(block_id) (0x0000000000000010ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG004_MASK(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG004_MASK(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000080000010ull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG004_MASK(block_id) (0x0000000080000010ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG005(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG005(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000000014ull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG005(block_id) (0x0000000000000014ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG005_MASK(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG005_MASK(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000080000014ull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG005_MASK(block_id) (0x0000000080000014ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG006(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG006(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000000018ull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG006(block_id) (0x0000000000000018ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG006_MASK(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG006_MASK(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000080000018ull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG006_MASK(block_id) (0x0000000080000018ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG007(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG007(%lu) is invalid on this chip\n", block_id);
|
|
return 0x000000000000001Cull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG007(block_id) (0x000000000000001Cull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG007_MASK(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG007_MASK(%lu) is invalid on this chip\n", block_id);
|
|
return 0x000000008000001Cull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG007_MASK(block_id) (0x000000008000001Cull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG008(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG008(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000000020ull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG008(block_id) (0x0000000000000020ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG008_MASK(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG008_MASK(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000080000020ull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG008_MASK(block_id) (0x0000000080000020ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG009(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG009(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000000024ull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG009(block_id) (0x0000000000000024ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG009_MASK(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG009_MASK(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000080000024ull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG009_MASK(block_id) (0x0000000080000024ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG010(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG010(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000000028ull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG010(block_id) (0x0000000000000028ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG011(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG011(%lu) is invalid on this chip\n", block_id);
|
|
return 0x000000000000002Cull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG011(block_id) (0x000000000000002Cull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG012(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG012(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000000030ull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG012(block_id) (0x0000000000000030ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG012_MASK(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG012_MASK(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000080000030ull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG012_MASK(block_id) (0x0000000080000030ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG013(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG013(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000000034ull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG013(block_id) (0x0000000000000034ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG015(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG015(%lu) is invalid on this chip\n", block_id);
|
|
return 0x000000000000003Cull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG015(block_id) (0x000000000000003Cull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG016(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG016(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000000040ull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG016(block_id) (0x0000000000000040ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG017(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG017(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000000044ull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG017(block_id) (0x0000000000000044ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG020(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG020(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000000050ull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG020(block_id) (0x0000000000000050ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG021(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG021(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000000054ull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG021(block_id) (0x0000000000000054ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG022(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG022(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000000058ull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG022(block_id) (0x0000000000000058ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG023(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG023(%lu) is invalid on this chip\n", block_id);
|
|
return 0x000000000000005Cull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG023(block_id) (0x000000000000005Cull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG028(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG028(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000000070ull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG028(block_id) (0x0000000000000070ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG029(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG029(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000000074ull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG029(block_id) (0x0000000000000074ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG030(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG030(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000000078ull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG030(block_id) (0x0000000000000078ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG031(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG031(%lu) is invalid on this chip\n", block_id);
|
|
return 0x000000000000007Cull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG031(block_id) (0x000000000000007Cull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG032(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG032(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000000080ull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG032(block_id) (0x0000000000000080ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG033(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG033(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000000084ull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG033(block_id) (0x0000000000000084ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG034(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG034(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000000088ull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG034(block_id) (0x0000000000000088ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG037(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG037(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000000094ull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG037(block_id) (0x0000000000000094ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG038(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG038(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000000098ull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG038(block_id) (0x0000000000000098ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG039(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG039(%lu) is invalid on this chip\n", block_id);
|
|
return 0x000000000000009Cull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG039(block_id) (0x000000000000009Cull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG040(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG040(%lu) is invalid on this chip\n", block_id);
|
|
return 0x00000000000000A0ull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG040(block_id) (0x00000000000000A0ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG041(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG041(%lu) is invalid on this chip\n", block_id);
|
|
return 0x00000000000000A4ull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG041(block_id) (0x00000000000000A4ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG042(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG042(%lu) is invalid on this chip\n", block_id);
|
|
return 0x00000000000000A8ull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG042(block_id) (0x00000000000000A8ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG064(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG064(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000000100ull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG064(block_id) (0x0000000000000100ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG065(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG065(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000000104ull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG065(block_id) (0x0000000000000104ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG066(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG066(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000000108ull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG066(block_id) (0x0000000000000108ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG067(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG067(%lu) is invalid on this chip\n", block_id);
|
|
return 0x000000000000010Cull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG067(block_id) (0x000000000000010Cull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG068(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG068(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000000110ull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG068(block_id) (0x0000000000000110ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG069(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG069(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000000114ull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG069(block_id) (0x0000000000000114ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG070(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG070(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000000118ull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG070(block_id) (0x0000000000000118ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG071(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG071(%lu) is invalid on this chip\n", block_id);
|
|
return 0x000000000000011Cull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG071(block_id) (0x000000000000011Cull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG072(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG072(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000000120ull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG072(block_id) (0x0000000000000120ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG073(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG073(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000000124ull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG073(block_id) (0x0000000000000124ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG074(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG074(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000000128ull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG074(block_id) (0x0000000000000128ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG448(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG448(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000000700ull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG448(block_id) (0x0000000000000700ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG449(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG449(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000000704ull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG449(block_id) (0x0000000000000704ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG450(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG450(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000000708ull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG450(block_id) (0x0000000000000708ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG451(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG451(%lu) is invalid on this chip\n", block_id);
|
|
return 0x000000000000070Cull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG451(block_id) (0x000000000000070Cull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG452(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG452(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000000710ull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG452(block_id) (0x0000000000000710ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG453(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG453(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000000714ull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG453(block_id) (0x0000000000000714ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG454(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG454(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000000718ull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG454(block_id) (0x0000000000000718ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG455(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG455(%lu) is invalid on this chip\n", block_id);
|
|
return 0x000000000000071Cull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG455(block_id) (0x000000000000071Cull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG456(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG456(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000000720ull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG456(block_id) (0x0000000000000720ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG458(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG458(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000000728ull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG458(block_id) (0x0000000000000728ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG459(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG459(%lu) is invalid on this chip\n", block_id);
|
|
return 0x000000000000072Cull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG459(block_id) (0x000000000000072Cull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG460(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG460(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000000730ull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG460(block_id) (0x0000000000000730ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG461(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG461(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000000734ull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG461(block_id) (0x0000000000000734ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG462(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG462(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000000738ull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG462(block_id) (0x0000000000000738ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG463(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG463(%lu) is invalid on this chip\n", block_id);
|
|
return 0x000000000000073Cull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG463(block_id) (0x000000000000073Cull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG464(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG464(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000000740ull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG464(block_id) (0x0000000000000740ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG465(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG465(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000000744ull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG465(block_id) (0x0000000000000744ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG466(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG466(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000000748ull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG466(block_id) (0x0000000000000748ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG467(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG467(%lu) is invalid on this chip\n", block_id);
|
|
return 0x000000000000074Cull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG467(block_id) (0x000000000000074Cull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG468(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG468(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000000750ull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG468(block_id) (0x0000000000000750ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG490(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG490(%lu) is invalid on this chip\n", block_id);
|
|
return 0x00000000000007A8ull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG490(block_id) (0x00000000000007A8ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG491(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG491(%lu) is invalid on this chip\n", block_id);
|
|
return 0x00000000000007ACull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG491(block_id) (0x00000000000007ACull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG492(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG492(%lu) is invalid on this chip\n", block_id);
|
|
return 0x00000000000007B0ull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG492(block_id) (0x00000000000007B0ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG515(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG515(%lu) is invalid on this chip\n", block_id);
|
|
return 0x000000000000080Cull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG515(block_id) (0x000000000000080Cull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG516(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG516(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000000810ull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG516(block_id) (0x0000000000000810ull)
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
static inline uint64_t CVMX_PCIEEPX_CFG517(unsigned long block_id)
|
|
{
|
|
if (!(
|
|
(OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0))) ||
|
|
(OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1)))))
|
|
cvmx_warn("CVMX_PCIEEPX_CFG517(%lu) is invalid on this chip\n", block_id);
|
|
return 0x0000000000000814ull;
|
|
}
|
|
#else
|
|
#define CVMX_PCIEEPX_CFG517(block_id) (0x0000000000000814ull)
|
|
#endif
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg000
|
|
*
|
|
* PCIE_CFG000 = First 32-bits of PCIE type 0 config space (Device ID and Vendor ID Register)
|
|
*
|
|
*/
|
|
union cvmx_pcieepx_cfg000
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg000_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t devid : 16; /**< Device ID, writable through PEM(0..1)_CFG_WR
|
|
However, the application must not change this field.
|
|
For EEPROM loads also see VENDID of this register. */
|
|
uint32_t vendid : 16; /**< Vendor ID, writable through PEM(0..1)_CFG_WR
|
|
However, the application must not change this field.
|
|
During and EPROM Load is a value of 0xFFFF is loaded to this
|
|
field and a value of 0xFFFF is loaded to the DEVID field of
|
|
this register, the value will not be loaded, EEPROM load will
|
|
stop, and the FastLinkEnable bit will be set in the
|
|
PCIE_CFG452 register. */
|
|
#else
|
|
uint32_t vendid : 16;
|
|
uint32_t devid : 16;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg000_s cn52xx;
|
|
struct cvmx_pcieepx_cfg000_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg000_s cn56xx;
|
|
struct cvmx_pcieepx_cfg000_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg000_s cn63xx;
|
|
struct cvmx_pcieepx_cfg000_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg000 cvmx_pcieepx_cfg000_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg001
|
|
*
|
|
* PCIE_CFG001 = Second 32-bits of PCIE type 0 config space (Command/Status Register)
|
|
*
|
|
*/
|
|
union cvmx_pcieepx_cfg001
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg001_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t dpe : 1; /**< Detected Parity Error */
|
|
uint32_t sse : 1; /**< Signaled System Error */
|
|
uint32_t rma : 1; /**< Received Master Abort */
|
|
uint32_t rta : 1; /**< Received Target Abort */
|
|
uint32_t sta : 1; /**< Signaled Target Abort */
|
|
uint32_t devt : 2; /**< DEVSEL Timing
|
|
Not applicable for PCI Express. Hardwired to 0. */
|
|
uint32_t mdpe : 1; /**< Master Data Parity Error */
|
|
uint32_t fbb : 1; /**< Fast Back-to-Back Capable
|
|
Not applicable for PCI Express. Hardwired to 0. */
|
|
uint32_t reserved_22_22 : 1;
|
|
uint32_t m66 : 1; /**< 66 MHz Capable
|
|
Not applicable for PCI Express. Hardwired to 0. */
|
|
uint32_t cl : 1; /**< Capabilities List
|
|
Indicates presence of an extended capability item.
|
|
Hardwired to 1. */
|
|
uint32_t i_stat : 1; /**< INTx Status */
|
|
uint32_t reserved_11_18 : 8;
|
|
uint32_t i_dis : 1; /**< INTx Assertion Disable */
|
|
uint32_t fbbe : 1; /**< Fast Back-to-Back Enable
|
|
Not applicable for PCI Express. Must be hardwired to 0. */
|
|
uint32_t see : 1; /**< SERR# Enable */
|
|
uint32_t ids_wcc : 1; /**< IDSEL Stepping/Wait Cycle Control
|
|
Not applicable for PCI Express. Must be hardwired to 0 */
|
|
uint32_t per : 1; /**< Parity Error Response */
|
|
uint32_t vps : 1; /**< VGA Palette Snoop
|
|
Not applicable for PCI Express. Must be hardwired to 0. */
|
|
uint32_t mwice : 1; /**< Memory Write and Invalidate
|
|
Not applicable for PCI Express. Must be hardwired to 0. */
|
|
uint32_t scse : 1; /**< Special Cycle Enable
|
|
Not applicable for PCI Express. Must be hardwired to 0. */
|
|
uint32_t me : 1; /**< Bus Master Enable */
|
|
uint32_t msae : 1; /**< Memory Space Enable */
|
|
uint32_t isae : 1; /**< I/O Space Enable */
|
|
#else
|
|
uint32_t isae : 1;
|
|
uint32_t msae : 1;
|
|
uint32_t me : 1;
|
|
uint32_t scse : 1;
|
|
uint32_t mwice : 1;
|
|
uint32_t vps : 1;
|
|
uint32_t per : 1;
|
|
uint32_t ids_wcc : 1;
|
|
uint32_t see : 1;
|
|
uint32_t fbbe : 1;
|
|
uint32_t i_dis : 1;
|
|
uint32_t reserved_11_18 : 8;
|
|
uint32_t i_stat : 1;
|
|
uint32_t cl : 1;
|
|
uint32_t m66 : 1;
|
|
uint32_t reserved_22_22 : 1;
|
|
uint32_t fbb : 1;
|
|
uint32_t mdpe : 1;
|
|
uint32_t devt : 2;
|
|
uint32_t sta : 1;
|
|
uint32_t rta : 1;
|
|
uint32_t rma : 1;
|
|
uint32_t sse : 1;
|
|
uint32_t dpe : 1;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg001_s cn52xx;
|
|
struct cvmx_pcieepx_cfg001_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg001_s cn56xx;
|
|
struct cvmx_pcieepx_cfg001_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg001_s cn63xx;
|
|
struct cvmx_pcieepx_cfg001_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg001 cvmx_pcieepx_cfg001_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg002
|
|
*
|
|
* PCIE_CFG002 = Third 32-bits of PCIE type 0 config space (Revision ID/Class Code Register)
|
|
*
|
|
*/
|
|
union cvmx_pcieepx_cfg002
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg002_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t bcc : 8; /**< Base Class Code, writable through PEM(0..1)_CFG_WR
|
|
However, the application must not change this field. */
|
|
uint32_t sc : 8; /**< Subclass Code, writable through PEM(0..1)_CFG_WR
|
|
However, the application must not change this field. */
|
|
uint32_t pi : 8; /**< Programming Interface, writable through PEM(0..1)_CFG_WR
|
|
However, the application must not change this field. */
|
|
uint32_t rid : 8; /**< Revision ID, writable through PEM(0..1)_CFG_WR
|
|
However, the application must not change this field. */
|
|
#else
|
|
uint32_t rid : 8;
|
|
uint32_t pi : 8;
|
|
uint32_t sc : 8;
|
|
uint32_t bcc : 8;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg002_s cn52xx;
|
|
struct cvmx_pcieepx_cfg002_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg002_s cn56xx;
|
|
struct cvmx_pcieepx_cfg002_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg002_s cn63xx;
|
|
struct cvmx_pcieepx_cfg002_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg002 cvmx_pcieepx_cfg002_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg003
|
|
*
|
|
* PCIE_CFG003 = Fourth 32-bits of PCIE type 0 config space (Cache Line Size/Master Latency Timer/Header Type Register/BIST Register)
|
|
*
|
|
*/
|
|
union cvmx_pcieepx_cfg003
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg003_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t bist : 8; /**< The BIST register functions are not supported.
|
|
All 8 bits of the BIST register are hardwired to 0. */
|
|
uint32_t mfd : 1; /**< Multi Function Device
|
|
The Multi Function Device bit is writable through PEM(0..1)_CFG_WR.
|
|
However, this is a single function device. Therefore, the
|
|
application must not write a 1 to this bit. */
|
|
uint32_t chf : 7; /**< Configuration Header Format
|
|
Hardwired to 0 for type 0. */
|
|
uint32_t lt : 8; /**< Master Latency Timer
|
|
Not applicable for PCI Express, hardwired to 0. */
|
|
uint32_t cls : 8; /**< Cache Line Size
|
|
The Cache Line Size register is RW for legacy compatibility
|
|
purposes and is not applicable to PCI Express device
|
|
functionality.
|
|
Writing to the Cache Line Size register does not impact
|
|
functionality. */
|
|
#else
|
|
uint32_t cls : 8;
|
|
uint32_t lt : 8;
|
|
uint32_t chf : 7;
|
|
uint32_t mfd : 1;
|
|
uint32_t bist : 8;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg003_s cn52xx;
|
|
struct cvmx_pcieepx_cfg003_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg003_s cn56xx;
|
|
struct cvmx_pcieepx_cfg003_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg003_s cn63xx;
|
|
struct cvmx_pcieepx_cfg003_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg003 cvmx_pcieepx_cfg003_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg004
|
|
*
|
|
* PCIE_CFG004 = Fifth 32-bits of PCIE type 0 config space (Base Address Register 0 - Low)
|
|
*
|
|
*/
|
|
union cvmx_pcieepx_cfg004
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg004_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t lbab : 18; /**< Lower bits of the BAR 0 base address */
|
|
uint32_t reserved_4_13 : 10;
|
|
uint32_t pf : 1; /**< Prefetchable
|
|
This field is writable through PEM(0..1)_CFG_WR.
|
|
However, the application must not change this field. */
|
|
uint32_t typ : 2; /**< BAR type
|
|
o 00 = 32-bit BAR
|
|
o 10 = 64-bit BAR
|
|
This field is writable through PEM(0..1)_CFG_WR.
|
|
However, the application must not change this field. */
|
|
uint32_t mspc : 1; /**< Memory Space Indicator
|
|
o 0 = BAR 0 is a memory BAR
|
|
o 1 = BAR 0 is an I/O BAR
|
|
This field is writable through PEM(0..1)_CFG_WR.
|
|
However, the application must not change this field. */
|
|
#else
|
|
uint32_t mspc : 1;
|
|
uint32_t typ : 2;
|
|
uint32_t pf : 1;
|
|
uint32_t reserved_4_13 : 10;
|
|
uint32_t lbab : 18;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg004_s cn52xx;
|
|
struct cvmx_pcieepx_cfg004_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg004_s cn56xx;
|
|
struct cvmx_pcieepx_cfg004_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg004_s cn63xx;
|
|
struct cvmx_pcieepx_cfg004_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg004 cvmx_pcieepx_cfg004_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg004_mask
|
|
*
|
|
* PCIE_CFG004_MASK (BAR Mask 0 - Low)
|
|
* The BAR 0 Mask register is invisible to host software and not readable from the application.
|
|
* The BAR 0 Mask register is only writable through PEM(0..1)_CFG_WR.
|
|
*/
|
|
union cvmx_pcieepx_cfg004_mask
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg004_mask_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t lmask : 31; /**< Bar Mask Low */
|
|
uint32_t enb : 1; /**< Bar Enable
|
|
o 0: BAR 0 is disabled
|
|
o 1: BAR 0 is enabled
|
|
Bit 0 is interpreted as BAR Enable when writing to the BAR Mask
|
|
register rather than as a mask bit because bit 0 of a BAR is
|
|
always masked from writing by host software. Bit 0 must be
|
|
written prior to writing the other mask bits. */
|
|
#else
|
|
uint32_t enb : 1;
|
|
uint32_t lmask : 31;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg004_mask_s cn52xx;
|
|
struct cvmx_pcieepx_cfg004_mask_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg004_mask_s cn56xx;
|
|
struct cvmx_pcieepx_cfg004_mask_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg004_mask_s cn63xx;
|
|
struct cvmx_pcieepx_cfg004_mask_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg004_mask cvmx_pcieepx_cfg004_mask_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg005
|
|
*
|
|
* PCIE_CFG005 = Sixth 32-bits of PCIE type 0 config space (Base Address Register 0 - High)
|
|
*
|
|
*/
|
|
union cvmx_pcieepx_cfg005
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg005_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t ubab : 32; /**< Contains the upper 32 bits of the BAR 0 base address. */
|
|
#else
|
|
uint32_t ubab : 32;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg005_s cn52xx;
|
|
struct cvmx_pcieepx_cfg005_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg005_s cn56xx;
|
|
struct cvmx_pcieepx_cfg005_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg005_s cn63xx;
|
|
struct cvmx_pcieepx_cfg005_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg005 cvmx_pcieepx_cfg005_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg005_mask
|
|
*
|
|
* PCIE_CFG005_MASK = (BAR Mask 0 - High)
|
|
* The BAR 0 Mask register is invisible to host software and not readable from the application.
|
|
* The BAR 0 Mask register is only writable through PEM(0..1)_CFG_WR.
|
|
*/
|
|
union cvmx_pcieepx_cfg005_mask
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg005_mask_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t umask : 32; /**< Bar Mask High */
|
|
#else
|
|
uint32_t umask : 32;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg005_mask_s cn52xx;
|
|
struct cvmx_pcieepx_cfg005_mask_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg005_mask_s cn56xx;
|
|
struct cvmx_pcieepx_cfg005_mask_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg005_mask_s cn63xx;
|
|
struct cvmx_pcieepx_cfg005_mask_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg005_mask cvmx_pcieepx_cfg005_mask_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg006
|
|
*
|
|
* PCIE_CFG006 = Seventh 32-bits of PCIE type 0 config space (Base Address Register 1 - Low)
|
|
*
|
|
*/
|
|
union cvmx_pcieepx_cfg006
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg006_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t lbab : 6; /**< Lower bits of the BAR 1 base address */
|
|
uint32_t reserved_4_25 : 22;
|
|
uint32_t pf : 1; /**< Prefetchable
|
|
This field is writable through PEM(0..1)_CFG_WR.
|
|
However, the application must not change this field. */
|
|
uint32_t typ : 2; /**< BAR type
|
|
o 00 = 32-bit BAR
|
|
o 10 = 64-bit BAR
|
|
This field is writable through PEM(0..1)_CFG_WR.
|
|
However, the application must not change this field. */
|
|
uint32_t mspc : 1; /**< Memory Space Indicator
|
|
o 0 = BAR 0 is a memory BAR
|
|
o 1 = BAR 0 is an I/O BAR
|
|
This field is writable through PEM(0..1)_CFG_WR.
|
|
However, the application must not change this field. */
|
|
#else
|
|
uint32_t mspc : 1;
|
|
uint32_t typ : 2;
|
|
uint32_t pf : 1;
|
|
uint32_t reserved_4_25 : 22;
|
|
uint32_t lbab : 6;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg006_s cn52xx;
|
|
struct cvmx_pcieepx_cfg006_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg006_s cn56xx;
|
|
struct cvmx_pcieepx_cfg006_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg006_s cn63xx;
|
|
struct cvmx_pcieepx_cfg006_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg006 cvmx_pcieepx_cfg006_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg006_mask
|
|
*
|
|
* PCIE_CFG006_MASK (BAR Mask 1 - Low)
|
|
* The BAR 1 Mask register is invisible to host software and not readable from the application.
|
|
* The BAR 1 Mask register is only writable through PEM(0..1)_CFG_WR.
|
|
*/
|
|
union cvmx_pcieepx_cfg006_mask
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg006_mask_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t lmask : 31; /**< Bar Mask Low */
|
|
uint32_t enb : 1; /**< Bar Enable
|
|
o 0: BAR 1 is disabled
|
|
o 1: BAR 1 is enabled
|
|
Bit 0 is interpreted as BAR Enable when writing to the BAR Mask
|
|
register rather than as a mask bit because bit 0 of a BAR is
|
|
always masked from writing by host software. Bit 0 must be
|
|
written prior to writing the other mask bits. */
|
|
#else
|
|
uint32_t enb : 1;
|
|
uint32_t lmask : 31;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg006_mask_s cn52xx;
|
|
struct cvmx_pcieepx_cfg006_mask_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg006_mask_s cn56xx;
|
|
struct cvmx_pcieepx_cfg006_mask_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg006_mask_s cn63xx;
|
|
struct cvmx_pcieepx_cfg006_mask_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg006_mask cvmx_pcieepx_cfg006_mask_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg007
|
|
*
|
|
* PCIE_CFG007 = Eighth 32-bits of PCIE type 0 config space (Base Address Register 1 - High)
|
|
*
|
|
*/
|
|
union cvmx_pcieepx_cfg007
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg007_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t ubab : 32; /**< Contains the upper 32 bits of the BAR 1 base address. */
|
|
#else
|
|
uint32_t ubab : 32;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg007_s cn52xx;
|
|
struct cvmx_pcieepx_cfg007_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg007_s cn56xx;
|
|
struct cvmx_pcieepx_cfg007_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg007_s cn63xx;
|
|
struct cvmx_pcieepx_cfg007_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg007 cvmx_pcieepx_cfg007_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg007_mask
|
|
*
|
|
* PCIE_CFG007_MASK (BAR Mask 1 - High)
|
|
* The BAR 1 Mask register is invisible to host software and not readable from the application.
|
|
* The BAR 1 Mask register is only writable through PEM(0..1)_CFG_WR.
|
|
*/
|
|
union cvmx_pcieepx_cfg007_mask
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg007_mask_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t umask : 32; /**< Bar Mask High */
|
|
#else
|
|
uint32_t umask : 32;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg007_mask_s cn52xx;
|
|
struct cvmx_pcieepx_cfg007_mask_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg007_mask_s cn56xx;
|
|
struct cvmx_pcieepx_cfg007_mask_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg007_mask_s cn63xx;
|
|
struct cvmx_pcieepx_cfg007_mask_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg007_mask cvmx_pcieepx_cfg007_mask_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg008
|
|
*
|
|
* PCIE_CFG008 = Ninth 32-bits of PCIE type 0 config space (Base Address Register 2 - Low)
|
|
*
|
|
*/
|
|
union cvmx_pcieepx_cfg008
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg008_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t reserved_4_31 : 28;
|
|
uint32_t pf : 1; /**< Prefetchable
|
|
This field is writable through PEM(0..1)_CFG_WR.
|
|
However, the application must not change this field. */
|
|
uint32_t typ : 2; /**< BAR type
|
|
o 00 = 32-bit BAR
|
|
o 10 = 64-bit BAR
|
|
This field is writable through PEM(0..1)_CFG_WR.
|
|
However, the application must not change this field. */
|
|
uint32_t mspc : 1; /**< Memory Space Indicator
|
|
o 0 = BAR 0 is a memory BAR
|
|
o 1 = BAR 0 is an I/O BAR
|
|
This field is writable through PEM(0..1)_CFG_WR.
|
|
However, the application must not change this field. */
|
|
#else
|
|
uint32_t mspc : 1;
|
|
uint32_t typ : 2;
|
|
uint32_t pf : 1;
|
|
uint32_t reserved_4_31 : 28;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg008_s cn52xx;
|
|
struct cvmx_pcieepx_cfg008_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg008_s cn56xx;
|
|
struct cvmx_pcieepx_cfg008_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg008_s cn63xx;
|
|
struct cvmx_pcieepx_cfg008_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg008 cvmx_pcieepx_cfg008_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg008_mask
|
|
*
|
|
* PCIE_CFG008_MASK (BAR Mask 2 - Low)
|
|
* The BAR 2 Mask register is invisible to host software and not readable from the application.
|
|
* The BAR 2 Mask register is only writable through PEM(0..1)_CFG_WR.
|
|
*/
|
|
union cvmx_pcieepx_cfg008_mask
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg008_mask_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t lmask : 31; /**< Bar Mask Low */
|
|
uint32_t enb : 1; /**< Bar Enable
|
|
o 0: BAR 2 is disabled
|
|
o 1: BAR 2 is enabled
|
|
Bit 0 is interpreted as BAR Enable when writing to the BAR Mask
|
|
register rather than as a mask bit because bit 0 of a BAR is
|
|
always masked from writing by host software. Bit 0 must be
|
|
written prior to writing the other mask bits. */
|
|
#else
|
|
uint32_t enb : 1;
|
|
uint32_t lmask : 31;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg008_mask_s cn52xx;
|
|
struct cvmx_pcieepx_cfg008_mask_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg008_mask_s cn56xx;
|
|
struct cvmx_pcieepx_cfg008_mask_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg008_mask_s cn63xx;
|
|
struct cvmx_pcieepx_cfg008_mask_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg008_mask cvmx_pcieepx_cfg008_mask_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg009
|
|
*
|
|
* PCIE_CFG009 = Tenth 32-bits of PCIE type 0 config space (Base Address Register 2 - High)
|
|
*
|
|
*/
|
|
union cvmx_pcieepx_cfg009
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg009_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t reserved_0_31 : 32;
|
|
#else
|
|
uint32_t reserved_0_31 : 32;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg009_cn52xx
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t ubab : 25; /**< Contains the upper 32 bits of the BAR 2 base address. */
|
|
uint32_t reserved_0_6 : 7;
|
|
#else
|
|
uint32_t reserved_0_6 : 7;
|
|
uint32_t ubab : 25;
|
|
#endif
|
|
} cn52xx;
|
|
struct cvmx_pcieepx_cfg009_cn52xx cn52xxp1;
|
|
struct cvmx_pcieepx_cfg009_cn52xx cn56xx;
|
|
struct cvmx_pcieepx_cfg009_cn52xx cn56xxp1;
|
|
struct cvmx_pcieepx_cfg009_cn63xx
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t ubab : 23; /**< Contains the upper 32 bits of the BAR 2 base address. */
|
|
uint32_t reserved_0_8 : 9;
|
|
#else
|
|
uint32_t reserved_0_8 : 9;
|
|
uint32_t ubab : 23;
|
|
#endif
|
|
} cn63xx;
|
|
struct cvmx_pcieepx_cfg009_cn63xx cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg009 cvmx_pcieepx_cfg009_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg009_mask
|
|
*
|
|
* PCIE_CFG009_MASK (BAR Mask 2 - High)
|
|
* The BAR 2 Mask register is invisible to host software and not readable from the application.
|
|
* The BAR 2 Mask register is only writable through PEM(0..1)_CFG_WR.
|
|
*/
|
|
union cvmx_pcieepx_cfg009_mask
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg009_mask_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t umask : 32; /**< Bar Mask High */
|
|
#else
|
|
uint32_t umask : 32;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg009_mask_s cn52xx;
|
|
struct cvmx_pcieepx_cfg009_mask_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg009_mask_s cn56xx;
|
|
struct cvmx_pcieepx_cfg009_mask_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg009_mask_s cn63xx;
|
|
struct cvmx_pcieepx_cfg009_mask_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg009_mask cvmx_pcieepx_cfg009_mask_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg010
|
|
*
|
|
* PCIE_CFG010 = Eleventh 32-bits of PCIE type 0 config space (CardBus CIS Pointer Register)
|
|
*
|
|
*/
|
|
union cvmx_pcieepx_cfg010
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg010_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t cisp : 32; /**< CardBus CIS Pointer
|
|
Optional, writable through PEM(0..1)_CFG_WR. */
|
|
#else
|
|
uint32_t cisp : 32;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg010_s cn52xx;
|
|
struct cvmx_pcieepx_cfg010_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg010_s cn56xx;
|
|
struct cvmx_pcieepx_cfg010_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg010_s cn63xx;
|
|
struct cvmx_pcieepx_cfg010_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg010 cvmx_pcieepx_cfg010_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg011
|
|
*
|
|
* PCIE_CFG011 = Twelfth 32-bits of PCIE type 0 config space (Subsystem ID and Subsystem Vendor ID Register)
|
|
*
|
|
*/
|
|
union cvmx_pcieepx_cfg011
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg011_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t ssid : 16; /**< Subsystem ID
|
|
Assigned by PCI-SIG, writable through PEM(0..1)_CFG_WR. However, the application must not change this field. */
|
|
uint32_t ssvid : 16; /**< Subsystem Vendor ID
|
|
Assigned by PCI-SIG, writable through PEM(0..1)_CFG_WR.
|
|
However, the application must not change this field. */
|
|
#else
|
|
uint32_t ssvid : 16;
|
|
uint32_t ssid : 16;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg011_s cn52xx;
|
|
struct cvmx_pcieepx_cfg011_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg011_s cn56xx;
|
|
struct cvmx_pcieepx_cfg011_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg011_s cn63xx;
|
|
struct cvmx_pcieepx_cfg011_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg011 cvmx_pcieepx_cfg011_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg012
|
|
*
|
|
* PCIE_CFG012 = Thirteenth 32-bits of PCIE type 0 config space (Expansion ROM Base Address Register)
|
|
*
|
|
*/
|
|
union cvmx_pcieepx_cfg012
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg012_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t eraddr : 16; /**< Expansion ROM Address */
|
|
uint32_t reserved_1_15 : 15;
|
|
uint32_t er_en : 1; /**< Expansion ROM Enable */
|
|
#else
|
|
uint32_t er_en : 1;
|
|
uint32_t reserved_1_15 : 15;
|
|
uint32_t eraddr : 16;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg012_s cn52xx;
|
|
struct cvmx_pcieepx_cfg012_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg012_s cn56xx;
|
|
struct cvmx_pcieepx_cfg012_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg012_s cn63xx;
|
|
struct cvmx_pcieepx_cfg012_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg012 cvmx_pcieepx_cfg012_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg012_mask
|
|
*
|
|
* PCIE_CFG012_MASK (Exapansion ROM BAR Mask)
|
|
* The ROM Mask register is invisible to host software and not readable from the application.
|
|
* The ROM Mask register is only writable through PEM(0..1)_CFG_WR.
|
|
*/
|
|
union cvmx_pcieepx_cfg012_mask
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg012_mask_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t mask : 31; /**< Bar Mask Low NS */
|
|
uint32_t enb : 1; /**< Bar Enable NS
|
|
o 0: BAR ROM is disabled
|
|
o 1: BAR ROM is enabled
|
|
Bit 0 is interpreted as BAR Enable when writing to the BAR Mask
|
|
register rather than as a mask bit because bit 0 of a BAR is
|
|
always masked from writing by host software. Bit 0 must be
|
|
written prior to writing the other mask bits. */
|
|
#else
|
|
uint32_t enb : 1;
|
|
uint32_t mask : 31;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg012_mask_s cn52xx;
|
|
struct cvmx_pcieepx_cfg012_mask_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg012_mask_s cn56xx;
|
|
struct cvmx_pcieepx_cfg012_mask_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg012_mask_s cn63xx;
|
|
struct cvmx_pcieepx_cfg012_mask_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg012_mask cvmx_pcieepx_cfg012_mask_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg013
|
|
*
|
|
* PCIE_CFG013 = Fourteenth 32-bits of PCIE type 0 config space (Capability Pointer Register)
|
|
*
|
|
*/
|
|
union cvmx_pcieepx_cfg013
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg013_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t reserved_8_31 : 24;
|
|
uint32_t cp : 8; /**< First Capability Pointer.
|
|
Points to Power Management Capability structure by
|
|
default, writable through PEM(0..1)_CFG_WR.
|
|
However, the application must not change this field. */
|
|
#else
|
|
uint32_t cp : 8;
|
|
uint32_t reserved_8_31 : 24;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg013_s cn52xx;
|
|
struct cvmx_pcieepx_cfg013_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg013_s cn56xx;
|
|
struct cvmx_pcieepx_cfg013_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg013_s cn63xx;
|
|
struct cvmx_pcieepx_cfg013_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg013 cvmx_pcieepx_cfg013_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg015
|
|
*
|
|
* PCIE_CFG015 = Sixteenth 32-bits of PCIE type 0 config space (Interrupt Line Register/Interrupt Pin/Bridge Control Register)
|
|
*
|
|
*/
|
|
union cvmx_pcieepx_cfg015
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg015_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t ml : 8; /**< Maximum Latency (Hardwired to 0) */
|
|
uint32_t mg : 8; /**< Minimum Grant (Hardwired to 0) */
|
|
uint32_t inta : 8; /**< Interrupt Pin
|
|
Identifies the legacy interrupt Message that the device
|
|
(or device function) uses.
|
|
The Interrupt Pin register is writable through PEM(0..1)_CFG_WR.
|
|
In a single-function configuration, only INTA is used.
|
|
Therefore, the application must not change this field. */
|
|
uint32_t il : 8; /**< Interrupt Line */
|
|
#else
|
|
uint32_t il : 8;
|
|
uint32_t inta : 8;
|
|
uint32_t mg : 8;
|
|
uint32_t ml : 8;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg015_s cn52xx;
|
|
struct cvmx_pcieepx_cfg015_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg015_s cn56xx;
|
|
struct cvmx_pcieepx_cfg015_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg015_s cn63xx;
|
|
struct cvmx_pcieepx_cfg015_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg015 cvmx_pcieepx_cfg015_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg016
|
|
*
|
|
* PCIE_CFG016 = Seventeenth 32-bits of PCIE type 0 config space
|
|
* (Power Management Capability ID/
|
|
* Power Management Next Item Pointer/
|
|
* Power Management Capabilities Register)
|
|
*/
|
|
union cvmx_pcieepx_cfg016
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg016_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t pmes : 5; /**< PME_Support
|
|
o Bit 11: If set, PME Messages can be generated from D0
|
|
o Bit 12: If set, PME Messages can be generated from D1
|
|
o Bit 13: If set, PME Messages can be generated from D2
|
|
o Bit 14: If set, PME Messages can be generated from D3hot
|
|
o Bit 15: If set, PME Messages can be generated from D3cold
|
|
The PME_Support field is writable through PEM(0..1)_CFG_WR.
|
|
However, the application must not change this field. */
|
|
uint32_t d2s : 1; /**< D2 Support, writable through PEM(0..1)_CFG_WR
|
|
However, the application must not change this field. */
|
|
uint32_t d1s : 1; /**< D1 Support, writable through PEM(0..1)_CFG_WR
|
|
However, the application must not change this field. */
|
|
uint32_t auxc : 3; /**< AUX Current, writable through PEM(0..1)_CFG_WR
|
|
However, the application must not change this field. */
|
|
uint32_t dsi : 1; /**< Device Specific Initialization (DSI), writable through PEM(0..1)_CFG_WR
|
|
However, the application must not change this field. */
|
|
uint32_t reserved_20_20 : 1;
|
|
uint32_t pme_clock : 1; /**< PME Clock, hardwired to 0 */
|
|
uint32_t pmsv : 3; /**< Power Management Specification Version, writable through PEM(0..1)_CFG_WR
|
|
However, the application must not change this field. */
|
|
uint32_t ncp : 8; /**< Next Capability Pointer
|
|
Points to the MSI capabilities by default, writable
|
|
through PEM(0..1)_CFG_WR.
|
|
However, the application must not change this field. */
|
|
uint32_t pmcid : 8; /**< Power Management Capability ID */
|
|
#else
|
|
uint32_t pmcid : 8;
|
|
uint32_t ncp : 8;
|
|
uint32_t pmsv : 3;
|
|
uint32_t pme_clock : 1;
|
|
uint32_t reserved_20_20 : 1;
|
|
uint32_t dsi : 1;
|
|
uint32_t auxc : 3;
|
|
uint32_t d1s : 1;
|
|
uint32_t d2s : 1;
|
|
uint32_t pmes : 5;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg016_s cn52xx;
|
|
struct cvmx_pcieepx_cfg016_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg016_s cn56xx;
|
|
struct cvmx_pcieepx_cfg016_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg016_s cn63xx;
|
|
struct cvmx_pcieepx_cfg016_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg016 cvmx_pcieepx_cfg016_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg017
|
|
*
|
|
* PCIE_CFG017 = Eighteenth 32-bits of PCIE type 0 config space (Power Management Control and Status Register)
|
|
*
|
|
*/
|
|
union cvmx_pcieepx_cfg017
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg017_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t pmdia : 8; /**< Data register for additional information (not supported) */
|
|
uint32_t bpccee : 1; /**< Bus Power/Clock Control Enable, hardwired to 0 */
|
|
uint32_t bd3h : 1; /**< B2/B3 Support, hardwired to 0 */
|
|
uint32_t reserved_16_21 : 6;
|
|
uint32_t pmess : 1; /**< PME Status
|
|
Indicates if a previously enabled PME event occurred or not. */
|
|
uint32_t pmedsia : 2; /**< Data Scale (not supported) */
|
|
uint32_t pmds : 4; /**< Data Select (not supported) */
|
|
uint32_t pmeens : 1; /**< PME Enable
|
|
A value of 1 indicates that the device is enabled to
|
|
generate PME. */
|
|
uint32_t reserved_4_7 : 4;
|
|
uint32_t nsr : 1; /**< No Soft Reset, writable through PEM(0..1)_CFG_WR
|
|
However, the application must not change this field. */
|
|
uint32_t reserved_2_2 : 1;
|
|
uint32_t ps : 2; /**< Power State
|
|
Controls the device power state:
|
|
o 00b: D0
|
|
o 01b: D1
|
|
o 10b: D2
|
|
o 11b: D3
|
|
The written value is ignored if the specific state is
|
|
not supported. */
|
|
#else
|
|
uint32_t ps : 2;
|
|
uint32_t reserved_2_2 : 1;
|
|
uint32_t nsr : 1;
|
|
uint32_t reserved_4_7 : 4;
|
|
uint32_t pmeens : 1;
|
|
uint32_t pmds : 4;
|
|
uint32_t pmedsia : 2;
|
|
uint32_t pmess : 1;
|
|
uint32_t reserved_16_21 : 6;
|
|
uint32_t bd3h : 1;
|
|
uint32_t bpccee : 1;
|
|
uint32_t pmdia : 8;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg017_s cn52xx;
|
|
struct cvmx_pcieepx_cfg017_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg017_s cn56xx;
|
|
struct cvmx_pcieepx_cfg017_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg017_s cn63xx;
|
|
struct cvmx_pcieepx_cfg017_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg017 cvmx_pcieepx_cfg017_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg020
|
|
*
|
|
* PCIE_CFG020 = Twenty-first 32-bits of PCIE type 0 config space
|
|
* (MSI Capability ID/
|
|
* MSI Next Item Pointer/
|
|
* MSI Control Register)
|
|
*/
|
|
union cvmx_pcieepx_cfg020
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg020_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t reserved_24_31 : 8;
|
|
uint32_t m64 : 1; /**< 64-bit Address Capable, writable through PEM(0..1)_CFG_WR
|
|
However, the application must not change this field. */
|
|
uint32_t mme : 3; /**< Multiple Message Enabled
|
|
Indicates that multiple Message mode is enabled by system
|
|
software. The number of Messages enabled must be less than
|
|
or equal to the Multiple Message Capable value. */
|
|
uint32_t mmc : 3; /**< Multiple Message Capable, writable through PEM(0..1)_CFG_WR
|
|
However, the application must not change this field. */
|
|
uint32_t msien : 1; /**< MSI Enabled
|
|
When set, INTx must be disabled. */
|
|
uint32_t ncp : 8; /**< Next Capability Pointer
|
|
Points to PCI Express Capabilities by default,
|
|
writable through PEM(0..1)_CFG_WR.
|
|
However, the application must not change this field. */
|
|
uint32_t msicid : 8; /**< MSI Capability ID */
|
|
#else
|
|
uint32_t msicid : 8;
|
|
uint32_t ncp : 8;
|
|
uint32_t msien : 1;
|
|
uint32_t mmc : 3;
|
|
uint32_t mme : 3;
|
|
uint32_t m64 : 1;
|
|
uint32_t reserved_24_31 : 8;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg020_s cn52xx;
|
|
struct cvmx_pcieepx_cfg020_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg020_s cn56xx;
|
|
struct cvmx_pcieepx_cfg020_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg020_s cn63xx;
|
|
struct cvmx_pcieepx_cfg020_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg020 cvmx_pcieepx_cfg020_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg021
|
|
*
|
|
* PCIE_CFG021 = Twenty-second 32-bits of PCIE type 0 config space (MSI Lower 32 Bits Address Register)
|
|
*
|
|
*/
|
|
union cvmx_pcieepx_cfg021
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg021_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t lmsi : 30; /**< Lower 32-bit Address */
|
|
uint32_t reserved_0_1 : 2;
|
|
#else
|
|
uint32_t reserved_0_1 : 2;
|
|
uint32_t lmsi : 30;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg021_s cn52xx;
|
|
struct cvmx_pcieepx_cfg021_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg021_s cn56xx;
|
|
struct cvmx_pcieepx_cfg021_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg021_s cn63xx;
|
|
struct cvmx_pcieepx_cfg021_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg021 cvmx_pcieepx_cfg021_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg022
|
|
*
|
|
* PCIE_CFG022 = Twenty-third 32-bits of PCIE type 0 config space (MSI Upper 32 bits Address Register)
|
|
*
|
|
*/
|
|
union cvmx_pcieepx_cfg022
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg022_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t umsi : 32; /**< Upper 32-bit Address */
|
|
#else
|
|
uint32_t umsi : 32;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg022_s cn52xx;
|
|
struct cvmx_pcieepx_cfg022_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg022_s cn56xx;
|
|
struct cvmx_pcieepx_cfg022_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg022_s cn63xx;
|
|
struct cvmx_pcieepx_cfg022_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg022 cvmx_pcieepx_cfg022_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg023
|
|
*
|
|
* PCIE_CFG023 = Twenty-fourth 32-bits of PCIE type 0 config space (MSI Data Register)
|
|
*
|
|
*/
|
|
union cvmx_pcieepx_cfg023
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg023_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t reserved_16_31 : 16;
|
|
uint32_t msimd : 16; /**< MSI Data
|
|
Pattern assigned by system software, bits [4:0] are Or-ed with
|
|
MSI_VECTOR to generate 32 MSI Messages per function. */
|
|
#else
|
|
uint32_t msimd : 16;
|
|
uint32_t reserved_16_31 : 16;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg023_s cn52xx;
|
|
struct cvmx_pcieepx_cfg023_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg023_s cn56xx;
|
|
struct cvmx_pcieepx_cfg023_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg023_s cn63xx;
|
|
struct cvmx_pcieepx_cfg023_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg023 cvmx_pcieepx_cfg023_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg028
|
|
*
|
|
* PCIE_CFG028 = Twenty-ninth 32-bits of PCIE type 0 config space
|
|
* (PCI Express Capabilities List Register/
|
|
* PCI Express Capabilities Register)
|
|
*/
|
|
union cvmx_pcieepx_cfg028
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg028_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t reserved_30_31 : 2;
|
|
uint32_t imn : 5; /**< Interrupt Message Number
|
|
Updated by hardware, writable through PEM(0..1)_CFG_WR.
|
|
However, the application must not change this field. */
|
|
uint32_t si : 1; /**< Slot Implemented
|
|
This bit is writable through PEM(0..1)_CFG_WR.
|
|
However, it must be 0 for
|
|
an Endpoint device. Therefore, the application must not write a
|
|
1 to this bit. */
|
|
uint32_t dpt : 4; /**< Device Port Type */
|
|
uint32_t pciecv : 4; /**< PCI Express Capability Version */
|
|
uint32_t ncp : 8; /**< Next Capability Pointer
|
|
Writable through PEM(0..1)_CFG_WR.
|
|
However, the application must not change this field. */
|
|
uint32_t pcieid : 8; /**< PCIE Capability ID */
|
|
#else
|
|
uint32_t pcieid : 8;
|
|
uint32_t ncp : 8;
|
|
uint32_t pciecv : 4;
|
|
uint32_t dpt : 4;
|
|
uint32_t si : 1;
|
|
uint32_t imn : 5;
|
|
uint32_t reserved_30_31 : 2;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg028_s cn52xx;
|
|
struct cvmx_pcieepx_cfg028_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg028_s cn56xx;
|
|
struct cvmx_pcieepx_cfg028_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg028_s cn63xx;
|
|
struct cvmx_pcieepx_cfg028_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg028 cvmx_pcieepx_cfg028_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg029
|
|
*
|
|
* PCIE_CFG029 = Thirtieth 32-bits of PCIE type 0 config space (Device Capabilities Register)
|
|
*
|
|
*/
|
|
union cvmx_pcieepx_cfg029
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg029_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t reserved_28_31 : 4;
|
|
uint32_t cspls : 2; /**< Captured Slot Power Limit Scale
|
|
From Message from RC, upstream port only. */
|
|
uint32_t csplv : 8; /**< Captured Slot Power Limit Value
|
|
From Message from RC, upstream port only. */
|
|
uint32_t reserved_16_17 : 2;
|
|
uint32_t rber : 1; /**< Role-Based Error Reporting, writable through PEM(0..1)_CFG_WR
|
|
However, the application must not change this field. */
|
|
uint32_t reserved_12_14 : 3;
|
|
uint32_t el1al : 3; /**< Endpoint L1 Acceptable Latency, writable through PEM(0..1)_CFG_WR
|
|
However, the application must not change this field. */
|
|
uint32_t el0al : 3; /**< Endpoint L0s Acceptable Latency, writable through PEM(0..1)_CFG_WR
|
|
However, the application must not change this field. */
|
|
uint32_t etfs : 1; /**< Extended Tag Field Supported
|
|
This bit is writable through PEM(0..1)_CFG_WR.
|
|
However, the application
|
|
must not write a 1 to this bit. */
|
|
uint32_t pfs : 2; /**< Phantom Function Supported
|
|
This field is writable through PEM(0..1)_CFG_WR.
|
|
However, Phantom
|
|
Function is not supported. Therefore, the application must not
|
|
write any value other than 0x0 to this field. */
|
|
uint32_t mpss : 3; /**< Max_Payload_Size Supported, writable through PEM(0..1)_CFG_WR
|
|
However, the application must not change this field. */
|
|
#else
|
|
uint32_t mpss : 3;
|
|
uint32_t pfs : 2;
|
|
uint32_t etfs : 1;
|
|
uint32_t el0al : 3;
|
|
uint32_t el1al : 3;
|
|
uint32_t reserved_12_14 : 3;
|
|
uint32_t rber : 1;
|
|
uint32_t reserved_16_17 : 2;
|
|
uint32_t csplv : 8;
|
|
uint32_t cspls : 2;
|
|
uint32_t reserved_28_31 : 4;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg029_s cn52xx;
|
|
struct cvmx_pcieepx_cfg029_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg029_s cn56xx;
|
|
struct cvmx_pcieepx_cfg029_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg029_s cn63xx;
|
|
struct cvmx_pcieepx_cfg029_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg029 cvmx_pcieepx_cfg029_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg030
|
|
*
|
|
* PCIE_CFG030 = Thirty-first 32-bits of PCIE type 0 config space
|
|
* (Device Control Register/Device Status Register)
|
|
*/
|
|
union cvmx_pcieepx_cfg030
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg030_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t reserved_22_31 : 10;
|
|
uint32_t tp : 1; /**< Transaction Pending
|
|
Set to 1 when Non-Posted Requests are not yet completed
|
|
and clear when they are completed. */
|
|
uint32_t ap_d : 1; /**< Aux Power Detected
|
|
Set to 1 if Aux power detected. */
|
|
uint32_t ur_d : 1; /**< Unsupported Request Detected
|
|
Errors are logged in this register regardless of whether
|
|
error reporting is enabled in the Device Control register.
|
|
UR_D occurs when we receive something we don't support.
|
|
Unsupported requests are Nonfatal errors, so UR_D should
|
|
cause NFE_D. Receiving a vendor defined message should
|
|
cause an unsupported request. */
|
|
uint32_t fe_d : 1; /**< Fatal Error Detected
|
|
Errors are logged in this register regardless of whether
|
|
error reporting is enabled in the Device Control register.
|
|
FE_D is set if receive any of the errors in PCIE_CFG066 that
|
|
has a severity set to Fatal. Malformed TLP's generally fit
|
|
into this category. */
|
|
uint32_t nfe_d : 1; /**< Non-Fatal Error detected
|
|
Errors are logged in this register regardless of whether
|
|
error reporting is enabled in the Device Control register.
|
|
NFE_D is set if we receive any of the errors in PCIE_CFG066
|
|
that has a severity set to Nonfatal and does NOT meet Advisory
|
|
Nonfatal criteria , which
|
|
most poisoned TLP's should be. */
|
|
uint32_t ce_d : 1; /**< Correctable Error Detected
|
|
Errors are logged in this register regardless of whether
|
|
error reporting is enabled in the Device Control register.
|
|
CE_D is set if we receive any of the errors in PCIE_CFG068
|
|
for example a Replay Timer Timeout. Also, it can be set if
|
|
we get any of the errors in PCIE_CFG066 that has a severity
|
|
set to Nonfatal and meets the Advisory Nonfatal criteria,
|
|
which most ECRC errors
|
|
should be. */
|
|
uint32_t reserved_15_15 : 1;
|
|
uint32_t mrrs : 3; /**< Max Read Request Size
|
|
0 = 128B
|
|
1 = 256B
|
|
2 = 512B
|
|
3 = 1024B
|
|
4 = 2048B
|
|
5 = 4096B
|
|
Note: SLI_S2M_PORT#_CTL[MRRS] and DPI_SLI_PRT#_CFG[MRRS] and
|
|
also must be set properly.
|
|
SLI_S2M_PORT#_CTL[MRRS] and DPI_SLI_PRT#_CFG[MRRS] must
|
|
not exceed the desired max read request size. */
|
|
uint32_t ns_en : 1; /**< Enable No Snoop */
|
|
uint32_t ap_en : 1; /**< AUX Power PM Enable */
|
|
uint32_t pf_en : 1; /**< Phantom Function Enable
|
|
This bit should never be set - OCTEON requests never use
|
|
phantom functions. */
|
|
uint32_t etf_en : 1; /**< Extended Tag Field Enable
|
|
This bit should never be set - OCTEON requests never use
|
|
extended tags. */
|
|
uint32_t mps : 3; /**< Max Payload Size
|
|
Legal values:
|
|
0 = 128B
|
|
1 = 256B
|
|
Larger sizes not supported by OCTEON.
|
|
Note: DPI_SLI_PRT#_CFG[MPS] must be set to the same
|
|
value for proper functionality. */
|
|
uint32_t ro_en : 1; /**< Enable Relaxed Ordering */
|
|
uint32_t ur_en : 1; /**< Unsupported Request Reporting Enable */
|
|
uint32_t fe_en : 1; /**< Fatal Error Reporting Enable */
|
|
uint32_t nfe_en : 1; /**< Non-Fatal Error Reporting Enable */
|
|
uint32_t ce_en : 1; /**< Correctable Error Reporting Enable */
|
|
#else
|
|
uint32_t ce_en : 1;
|
|
uint32_t nfe_en : 1;
|
|
uint32_t fe_en : 1;
|
|
uint32_t ur_en : 1;
|
|
uint32_t ro_en : 1;
|
|
uint32_t mps : 3;
|
|
uint32_t etf_en : 1;
|
|
uint32_t pf_en : 1;
|
|
uint32_t ap_en : 1;
|
|
uint32_t ns_en : 1;
|
|
uint32_t mrrs : 3;
|
|
uint32_t reserved_15_15 : 1;
|
|
uint32_t ce_d : 1;
|
|
uint32_t nfe_d : 1;
|
|
uint32_t fe_d : 1;
|
|
uint32_t ur_d : 1;
|
|
uint32_t ap_d : 1;
|
|
uint32_t tp : 1;
|
|
uint32_t reserved_22_31 : 10;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg030_s cn52xx;
|
|
struct cvmx_pcieepx_cfg030_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg030_s cn56xx;
|
|
struct cvmx_pcieepx_cfg030_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg030_s cn63xx;
|
|
struct cvmx_pcieepx_cfg030_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg030 cvmx_pcieepx_cfg030_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg031
|
|
*
|
|
* PCIE_CFG031 = Thirty-second 32-bits of PCIE type 0 config space
|
|
* (Link Capabilities Register)
|
|
*/
|
|
union cvmx_pcieepx_cfg031
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg031_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t pnum : 8; /**< Port Number, writable through PEM(0..1)_CFG_WR
|
|
However, the application must not change this field. */
|
|
uint32_t reserved_22_23 : 2;
|
|
uint32_t lbnc : 1; /**< Link Bandwith Notification Capability */
|
|
uint32_t dllarc : 1; /**< Data Link Layer Active Reporting Capable */
|
|
uint32_t sderc : 1; /**< Surprise Down Error Reporting Capable
|
|
Not supported, hardwired to 0x0. */
|
|
uint32_t cpm : 1; /**< Clock Power Management
|
|
The default value is the value you specify during hardware
|
|
configuration, writable through PEM(0..1)_CFG_WR.
|
|
However, the application must not change this field. */
|
|
uint32_t l1el : 3; /**< L1 Exit Latency
|
|
The default value is the value you specify during hardware
|
|
configuration, writable through PEM(0..1)_CFG_WR.
|
|
However, the application must not change this field. */
|
|
uint32_t l0el : 3; /**< L0s Exit Latency
|
|
The default value is the value you specify during hardware
|
|
configuration, writable through PEM(0..1)_CFG_WR.
|
|
However, the application must not change this field. */
|
|
uint32_t aslpms : 2; /**< Active State Link PM Support
|
|
The default value is the value you specify during hardware
|
|
configuration, writable through PEM(0..1)_CFG_WR.
|
|
However, the application must not change this field. */
|
|
uint32_t mlw : 6; /**< Maximum Link Width
|
|
The default value is the value you specify during hardware
|
|
configuration (x1, x4, x8, or x16), writable through PEM(0..1)_CFG_WR. */
|
|
uint32_t mls : 4; /**< Maximum Link Speed
|
|
The following values are accepted:
|
|
0001b: 2.5 GHz supported
|
|
0010b: 5.0 GHz and 2.5 GHz supported
|
|
This field is writable through PEM(0..1)_CFG_WR.
|
|
However, the application must not change this field. */
|
|
#else
|
|
uint32_t mls : 4;
|
|
uint32_t mlw : 6;
|
|
uint32_t aslpms : 2;
|
|
uint32_t l0el : 3;
|
|
uint32_t l1el : 3;
|
|
uint32_t cpm : 1;
|
|
uint32_t sderc : 1;
|
|
uint32_t dllarc : 1;
|
|
uint32_t lbnc : 1;
|
|
uint32_t reserved_22_23 : 2;
|
|
uint32_t pnum : 8;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg031_s cn52xx;
|
|
struct cvmx_pcieepx_cfg031_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg031_s cn56xx;
|
|
struct cvmx_pcieepx_cfg031_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg031_s cn63xx;
|
|
struct cvmx_pcieepx_cfg031_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg031 cvmx_pcieepx_cfg031_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg032
|
|
*
|
|
* PCIE_CFG032 = Thirty-third 32-bits of PCIE type 0 config space
|
|
* (Link Control Register/Link Status Register)
|
|
*/
|
|
union cvmx_pcieepx_cfg032
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg032_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t reserved_30_31 : 2;
|
|
uint32_t dlla : 1; /**< Data Link Layer Active
|
|
Not applicable for an upstream Port or Endpoint device,
|
|
hardwired to 0. */
|
|
uint32_t scc : 1; /**< Slot Clock Configuration
|
|
Indicates that the component uses the same physical reference
|
|
clock that the platform provides on the connector.
|
|
Writable through PEM(0..1)_CFG_WR.
|
|
However, the application must not change this field. */
|
|
uint32_t lt : 1; /**< Link Training
|
|
Not applicable for an upstream Port or Endpoint device,
|
|
hardwired to 0. */
|
|
uint32_t reserved_26_26 : 1;
|
|
uint32_t nlw : 6; /**< Negotiated Link Width
|
|
Set automatically by hardware after Link initialization. */
|
|
uint32_t ls : 4; /**< Link Speed
|
|
The negotiated Link speed: 2.5 Gbps */
|
|
uint32_t reserved_10_15 : 6;
|
|
uint32_t hawd : 1; /**< Hardware Autonomous Width Disable
|
|
(Not Supported) */
|
|
uint32_t ecpm : 1; /**< Enable Clock Power Management
|
|
Hardwired to 0 if Clock Power Management is disabled in
|
|
the Link Capabilities register. */
|
|
uint32_t es : 1; /**< Extended Synch */
|
|
uint32_t ccc : 1; /**< Common Clock Configuration */
|
|
uint32_t rl : 1; /**< Retrain Link
|
|
Not applicable for an upstream Port or Endpoint device,
|
|
hardwired to 0. */
|
|
uint32_t ld : 1; /**< Link Disable
|
|
Not applicable for an upstream Port or Endpoint device,
|
|
hardwired to 0. */
|
|
uint32_t rcb : 1; /**< Read Completion Boundary (RCB) */
|
|
uint32_t reserved_2_2 : 1;
|
|
uint32_t aslpc : 2; /**< Active State Link PM Control */
|
|
#else
|
|
uint32_t aslpc : 2;
|
|
uint32_t reserved_2_2 : 1;
|
|
uint32_t rcb : 1;
|
|
uint32_t ld : 1;
|
|
uint32_t rl : 1;
|
|
uint32_t ccc : 1;
|
|
uint32_t es : 1;
|
|
uint32_t ecpm : 1;
|
|
uint32_t hawd : 1;
|
|
uint32_t reserved_10_15 : 6;
|
|
uint32_t ls : 4;
|
|
uint32_t nlw : 6;
|
|
uint32_t reserved_26_26 : 1;
|
|
uint32_t lt : 1;
|
|
uint32_t scc : 1;
|
|
uint32_t dlla : 1;
|
|
uint32_t reserved_30_31 : 2;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg032_s cn52xx;
|
|
struct cvmx_pcieepx_cfg032_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg032_s cn56xx;
|
|
struct cvmx_pcieepx_cfg032_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg032_s cn63xx;
|
|
struct cvmx_pcieepx_cfg032_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg032 cvmx_pcieepx_cfg032_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg033
|
|
*
|
|
* PCIE_CFG033 = Thirty-fourth 32-bits of PCIE type 0 config space
|
|
* (Slot Capabilities Register)
|
|
*/
|
|
union cvmx_pcieepx_cfg033
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg033_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t ps_num : 13; /**< Physical Slot Number, writable through PEM(0..1)_CFG_WR
|
|
However, the application must not change this field. */
|
|
uint32_t nccs : 1; /**< No Command Complete Support, writable through PEM(0..1)_CFG_WR
|
|
However, the application must not change this field. */
|
|
uint32_t emip : 1; /**< Electromechanical Interlock Present, writable through PEM(0..1)_CFG_WR
|
|
However, the application must not change this field. */
|
|
uint32_t sp_ls : 2; /**< Slot Power Limit Scale, writable through PEM(0..1)_CFG_WR
|
|
However, the application must not change this field. */
|
|
uint32_t sp_lv : 8; /**< Slot Power Limit Value, writable through PEM(0..1)_CFG_WR
|
|
However, the application must not change this field. */
|
|
uint32_t hp_c : 1; /**< Hot-Plug Capable, writable through PEM(0..1)_CFG_WR
|
|
However, the application must not change this field. */
|
|
uint32_t hp_s : 1; /**< Hot-Plug Surprise, writable through PEM(0..1)_CFG_WR
|
|
However, the application must not change this field. */
|
|
uint32_t pip : 1; /**< Power Indicator Present, writable through PEM(0..1)_CFG_WR
|
|
However, the application must not change this field. */
|
|
uint32_t aip : 1; /**< Attention Indicator Present, writable through PEM(0..1)_CFG_WR
|
|
However, the application must not change this field. */
|
|
uint32_t mrlsp : 1; /**< MRL Sensor Present, writable through PEM(0..1)_CFG_WR
|
|
However, the application must not change this field. */
|
|
uint32_t pcp : 1; /**< Power Controller Present, writable through PEM(0..1)_CFG_WR
|
|
However, the application must not change this field. */
|
|
uint32_t abp : 1; /**< Attention Button Present, writable through PEM(0..1)_CFG_WR
|
|
However, the application must not change this field. */
|
|
#else
|
|
uint32_t abp : 1;
|
|
uint32_t pcp : 1;
|
|
uint32_t mrlsp : 1;
|
|
uint32_t aip : 1;
|
|
uint32_t pip : 1;
|
|
uint32_t hp_s : 1;
|
|
uint32_t hp_c : 1;
|
|
uint32_t sp_lv : 8;
|
|
uint32_t sp_ls : 2;
|
|
uint32_t emip : 1;
|
|
uint32_t nccs : 1;
|
|
uint32_t ps_num : 13;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg033_s cn52xx;
|
|
struct cvmx_pcieepx_cfg033_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg033_s cn56xx;
|
|
struct cvmx_pcieepx_cfg033_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg033_s cn63xx;
|
|
struct cvmx_pcieepx_cfg033_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg033 cvmx_pcieepx_cfg033_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg034
|
|
*
|
|
* PCIE_CFG034 = Thirty-fifth 32-bits of PCIE type 0 config space
|
|
* (Slot Control Register/Slot Status Register)
|
|
*/
|
|
union cvmx_pcieepx_cfg034
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg034_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t reserved_25_31 : 7;
|
|
uint32_t dlls_c : 1; /**< Data Link Layer State Changed
|
|
Not applicable for an upstream Port or Endpoint device,
|
|
hardwired to 0. */
|
|
uint32_t emis : 1; /**< Electromechanical Interlock Status */
|
|
uint32_t pds : 1; /**< Presence Detect State */
|
|
uint32_t mrlss : 1; /**< MRL Sensor State */
|
|
uint32_t ccint_d : 1; /**< Command Completed */
|
|
uint32_t pd_c : 1; /**< Presence Detect Changed */
|
|
uint32_t mrls_c : 1; /**< MRL Sensor Changed */
|
|
uint32_t pf_d : 1; /**< Power Fault Detected */
|
|
uint32_t abp_d : 1; /**< Attention Button Pressed */
|
|
uint32_t reserved_13_15 : 3;
|
|
uint32_t dlls_en : 1; /**< Data Link Layer State Changed Enable
|
|
Not applicable for an upstream Port or Endpoint device,
|
|
hardwired to 0. */
|
|
uint32_t emic : 1; /**< Electromechanical Interlock Control */
|
|
uint32_t pcc : 1; /**< Power Controller Control */
|
|
uint32_t pic : 2; /**< Power Indicator Control */
|
|
uint32_t aic : 2; /**< Attention Indicator Control */
|
|
uint32_t hpint_en : 1; /**< Hot-Plug Interrupt Enable */
|
|
uint32_t ccint_en : 1; /**< Command Completed Interrupt Enable */
|
|
uint32_t pd_en : 1; /**< Presence Detect Changed Enable */
|
|
uint32_t mrls_en : 1; /**< MRL Sensor Changed Enable */
|
|
uint32_t pf_en : 1; /**< Power Fault Detected Enable */
|
|
uint32_t abp_en : 1; /**< Attention Button Pressed Enable */
|
|
#else
|
|
uint32_t abp_en : 1;
|
|
uint32_t pf_en : 1;
|
|
uint32_t mrls_en : 1;
|
|
uint32_t pd_en : 1;
|
|
uint32_t ccint_en : 1;
|
|
uint32_t hpint_en : 1;
|
|
uint32_t aic : 2;
|
|
uint32_t pic : 2;
|
|
uint32_t pcc : 1;
|
|
uint32_t emic : 1;
|
|
uint32_t dlls_en : 1;
|
|
uint32_t reserved_13_15 : 3;
|
|
uint32_t abp_d : 1;
|
|
uint32_t pf_d : 1;
|
|
uint32_t mrls_c : 1;
|
|
uint32_t pd_c : 1;
|
|
uint32_t ccint_d : 1;
|
|
uint32_t mrlss : 1;
|
|
uint32_t pds : 1;
|
|
uint32_t emis : 1;
|
|
uint32_t dlls_c : 1;
|
|
uint32_t reserved_25_31 : 7;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg034_s cn52xx;
|
|
struct cvmx_pcieepx_cfg034_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg034_s cn56xx;
|
|
struct cvmx_pcieepx_cfg034_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg034_s cn63xx;
|
|
struct cvmx_pcieepx_cfg034_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg034 cvmx_pcieepx_cfg034_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg037
|
|
*
|
|
* PCIE_CFG037 = Thirty-eighth 32-bits of PCIE type 0 config space
|
|
* (Device Capabilities 2 Register)
|
|
*/
|
|
union cvmx_pcieepx_cfg037
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg037_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t reserved_5_31 : 27;
|
|
uint32_t ctds : 1; /**< Completion Timeout Disable Supported */
|
|
uint32_t ctrs : 4; /**< Completion Timeout Ranges Supported
|
|
Value of 0 indicates that Completion Timeout Programming
|
|
is not supported
|
|
Completion timeout is 16.7ms. */
|
|
#else
|
|
uint32_t ctrs : 4;
|
|
uint32_t ctds : 1;
|
|
uint32_t reserved_5_31 : 27;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg037_s cn52xx;
|
|
struct cvmx_pcieepx_cfg037_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg037_s cn56xx;
|
|
struct cvmx_pcieepx_cfg037_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg037_s cn63xx;
|
|
struct cvmx_pcieepx_cfg037_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg037 cvmx_pcieepx_cfg037_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg038
|
|
*
|
|
* PCIE_CFG038 = Thirty-ninth 32-bits of PCIE type 0 config space
|
|
* (Device Control 2 Register/Device Status 2 Register)
|
|
*/
|
|
union cvmx_pcieepx_cfg038
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg038_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t reserved_5_31 : 27;
|
|
uint32_t ctd : 1; /**< Completion Timeout Disable */
|
|
uint32_t ctv : 4; /**< Completion Timeout Value
|
|
Completion Timeout Programming is not supported
|
|
Completion timeout is 16.7ms. */
|
|
#else
|
|
uint32_t ctv : 4;
|
|
uint32_t ctd : 1;
|
|
uint32_t reserved_5_31 : 27;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg038_s cn52xx;
|
|
struct cvmx_pcieepx_cfg038_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg038_s cn56xx;
|
|
struct cvmx_pcieepx_cfg038_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg038_s cn63xx;
|
|
struct cvmx_pcieepx_cfg038_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg038 cvmx_pcieepx_cfg038_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg039
|
|
*
|
|
* PCIE_CFG039 = Fourtieth 32-bits of PCIE type 0 config space
|
|
* (Link Capabilities 2 Register)
|
|
*/
|
|
union cvmx_pcieepx_cfg039
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg039_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t reserved_0_31 : 32;
|
|
#else
|
|
uint32_t reserved_0_31 : 32;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg039_s cn52xx;
|
|
struct cvmx_pcieepx_cfg039_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg039_s cn56xx;
|
|
struct cvmx_pcieepx_cfg039_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg039_s cn63xx;
|
|
struct cvmx_pcieepx_cfg039_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg039 cvmx_pcieepx_cfg039_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg040
|
|
*
|
|
* PCIE_CFG040 = Fourty-first 32-bits of PCIE type 0 config space
|
|
* (Link Control 2 Register/Link Status 2 Register)
|
|
*/
|
|
union cvmx_pcieepx_cfg040
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg040_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t reserved_17_31 : 15;
|
|
uint32_t cdl : 1; /**< Current De-emphasis Level
|
|
When the Link is operating at 5 GT/s speed, this bit
|
|
reflects the level of de-emphasis. Encodings:
|
|
1b: -3.5 dB
|
|
0b: -6 dB
|
|
Note: The value in this bit is undefined when the Link is
|
|
operating at 2.5 GT/s speed */
|
|
uint32_t reserved_13_15 : 3;
|
|
uint32_t cde : 1; /**< Compliance De-emphasis
|
|
This bit sets the de-emphasis level in Polling. Compliance
|
|
state if the entry occurred due to the Tx Compliance
|
|
Receive bit being 1b. Encodings:
|
|
1b: -3.5 dB
|
|
0b: -6 dB
|
|
Note: When the Link is operating at 2.5 GT/s, the setting
|
|
of this bit has no effect. */
|
|
uint32_t csos : 1; /**< Compliance SOS
|
|
When set to 1b, the LTSSM is required to send SKP
|
|
Ordered Sets periodically in between the (modified)
|
|
compliance patterns.
|
|
Note: When the Link is operating at 2.5 GT/s, the setting
|
|
of this bit has no effect. */
|
|
uint32_t emc : 1; /**< Enter Modified Compliance
|
|
When this bit is set to 1b, the device transmits a modified
|
|
compliance pattern if the LTSSM enters Polling.
|
|
Compliance state. */
|
|
uint32_t tm : 3; /**< Transmit Margin
|
|
This field controls the value of the non-de-emphasized
|
|
voltage level at the Transmitter pins:
|
|
- 000: 800-1200 mV for full swing 400-600 mV for half-swing
|
|
- 001-010: values must be monotonic with a non-zero slope
|
|
- 011: 200-400 mV for full-swing and 100-200 mV for halfswing
|
|
- 100-111: reserved
|
|
This field is reset to 000b on entry to the LTSSM Polling.
|
|
Compliance substate.
|
|
When operating in 5.0 GT/s mode with full swing, the
|
|
de-emphasis ratio must be maintained within +/- 1 dB
|
|
from the specification-defined operational value
|
|
either -3.5 or -6 dB). */
|
|
uint32_t sde : 1; /**< Selectable De-emphasis
|
|
Not applicable for an upstream Port or Endpoint device.
|
|
Hardwired to 0. */
|
|
uint32_t hasd : 1; /**< Hardware Autonomous Speed Disable
|
|
When asserted, the
|
|
application must disable hardware from changing the Link
|
|
speed for device-specific reasons other than attempting to
|
|
correct unreliable Link operation by reducing Link speed.
|
|
Initial transition to the highest supported common link
|
|
speed is not blocked by this signal. */
|
|
uint32_t ec : 1; /**< Enter Compliance
|
|
Software is permitted to force a link to enter Compliance
|
|
mode at the speed indicated in the Target Link Speed
|
|
field by setting this bit to 1b in both components on a link
|
|
and then initiating a hot reset on the link. */
|
|
uint32_t tls : 4; /**< Target Link Speed
|
|
For Downstream ports, this field sets an upper limit on link
|
|
operational speed by restricting the values advertised by
|
|
the upstream component in its training sequences:
|
|
- 0001: 2.5Gb/s Target Link Speed
|
|
- 0010: 5Gb/s Target Link Speed
|
|
All other encodings are reserved.
|
|
If a value is written to this field that does not correspond to
|
|
a speed included in the Supported Link Speeds field, the
|
|
result is undefined.
|
|
For both Upstream and Downstream ports, this field is
|
|
used to set the target compliance mode speed when
|
|
software is using the Enter Compliance bit to force a link
|
|
into compliance mode.
|
|
Out of reset this will have a value of 1 or 2 which is
|
|
selected by qlmCfgx[1]. */
|
|
#else
|
|
uint32_t tls : 4;
|
|
uint32_t ec : 1;
|
|
uint32_t hasd : 1;
|
|
uint32_t sde : 1;
|
|
uint32_t tm : 3;
|
|
uint32_t emc : 1;
|
|
uint32_t csos : 1;
|
|
uint32_t cde : 1;
|
|
uint32_t reserved_13_15 : 3;
|
|
uint32_t cdl : 1;
|
|
uint32_t reserved_17_31 : 15;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg040_cn52xx
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t reserved_0_31 : 32;
|
|
#else
|
|
uint32_t reserved_0_31 : 32;
|
|
#endif
|
|
} cn52xx;
|
|
struct cvmx_pcieepx_cfg040_cn52xx cn52xxp1;
|
|
struct cvmx_pcieepx_cfg040_cn52xx cn56xx;
|
|
struct cvmx_pcieepx_cfg040_cn52xx cn56xxp1;
|
|
struct cvmx_pcieepx_cfg040_s cn63xx;
|
|
struct cvmx_pcieepx_cfg040_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg040 cvmx_pcieepx_cfg040_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg041
|
|
*
|
|
* PCIE_CFG041 = Fourty-second 32-bits of PCIE type 0 config space
|
|
* (Slot Capabilities 2 Register)
|
|
*/
|
|
union cvmx_pcieepx_cfg041
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg041_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t reserved_0_31 : 32;
|
|
#else
|
|
uint32_t reserved_0_31 : 32;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg041_s cn52xx;
|
|
struct cvmx_pcieepx_cfg041_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg041_s cn56xx;
|
|
struct cvmx_pcieepx_cfg041_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg041_s cn63xx;
|
|
struct cvmx_pcieepx_cfg041_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg041 cvmx_pcieepx_cfg041_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg042
|
|
*
|
|
* PCIE_CFG042 = Fourty-third 32-bits of PCIE type 0 config space
|
|
* (Slot Control 2 Register/Slot Status 2 Register)
|
|
*/
|
|
union cvmx_pcieepx_cfg042
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg042_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t reserved_0_31 : 32;
|
|
#else
|
|
uint32_t reserved_0_31 : 32;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg042_s cn52xx;
|
|
struct cvmx_pcieepx_cfg042_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg042_s cn56xx;
|
|
struct cvmx_pcieepx_cfg042_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg042_s cn63xx;
|
|
struct cvmx_pcieepx_cfg042_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg042 cvmx_pcieepx_cfg042_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg064
|
|
*
|
|
* PCIE_CFG064 = Sixty-fifth 32-bits of PCIE type 0 config space
|
|
* (PCI Express Enhanced Capability Header)
|
|
*/
|
|
union cvmx_pcieepx_cfg064
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg064_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t nco : 12; /**< Next Capability Offset */
|
|
uint32_t cv : 4; /**< Capability Version */
|
|
uint32_t pcieec : 16; /**< PCIE Express Extended Capability */
|
|
#else
|
|
uint32_t pcieec : 16;
|
|
uint32_t cv : 4;
|
|
uint32_t nco : 12;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg064_s cn52xx;
|
|
struct cvmx_pcieepx_cfg064_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg064_s cn56xx;
|
|
struct cvmx_pcieepx_cfg064_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg064_s cn63xx;
|
|
struct cvmx_pcieepx_cfg064_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg064 cvmx_pcieepx_cfg064_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg065
|
|
*
|
|
* PCIE_CFG065 = Sixty-sixth 32-bits of PCIE type 0 config space
|
|
* (Uncorrectable Error Status Register)
|
|
*/
|
|
union cvmx_pcieepx_cfg065
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg065_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t reserved_21_31 : 11;
|
|
uint32_t ures : 1; /**< Unsupported Request Error Status */
|
|
uint32_t ecrces : 1; /**< ECRC Error Status */
|
|
uint32_t mtlps : 1; /**< Malformed TLP Status */
|
|
uint32_t ros : 1; /**< Receiver Overflow Status */
|
|
uint32_t ucs : 1; /**< Unexpected Completion Status */
|
|
uint32_t cas : 1; /**< Completer Abort Status */
|
|
uint32_t cts : 1; /**< Completion Timeout Status */
|
|
uint32_t fcpes : 1; /**< Flow Control Protocol Error Status */
|
|
uint32_t ptlps : 1; /**< Poisoned TLP Status */
|
|
uint32_t reserved_6_11 : 6;
|
|
uint32_t sdes : 1; /**< Surprise Down Error Status (not supported) */
|
|
uint32_t dlpes : 1; /**< Data Link Protocol Error Status */
|
|
uint32_t reserved_0_3 : 4;
|
|
#else
|
|
uint32_t reserved_0_3 : 4;
|
|
uint32_t dlpes : 1;
|
|
uint32_t sdes : 1;
|
|
uint32_t reserved_6_11 : 6;
|
|
uint32_t ptlps : 1;
|
|
uint32_t fcpes : 1;
|
|
uint32_t cts : 1;
|
|
uint32_t cas : 1;
|
|
uint32_t ucs : 1;
|
|
uint32_t ros : 1;
|
|
uint32_t mtlps : 1;
|
|
uint32_t ecrces : 1;
|
|
uint32_t ures : 1;
|
|
uint32_t reserved_21_31 : 11;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg065_s cn52xx;
|
|
struct cvmx_pcieepx_cfg065_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg065_s cn56xx;
|
|
struct cvmx_pcieepx_cfg065_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg065_s cn63xx;
|
|
struct cvmx_pcieepx_cfg065_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg065 cvmx_pcieepx_cfg065_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg066
|
|
*
|
|
* PCIE_CFG066 = Sixty-seventh 32-bits of PCIE type 0 config space
|
|
* (Uncorrectable Error Mask Register)
|
|
*/
|
|
union cvmx_pcieepx_cfg066
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg066_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t reserved_21_31 : 11;
|
|
uint32_t urem : 1; /**< Unsupported Request Error Mask */
|
|
uint32_t ecrcem : 1; /**< ECRC Error Mask */
|
|
uint32_t mtlpm : 1; /**< Malformed TLP Mask */
|
|
uint32_t rom : 1; /**< Receiver Overflow Mask */
|
|
uint32_t ucm : 1; /**< Unexpected Completion Mask */
|
|
uint32_t cam : 1; /**< Completer Abort Mask */
|
|
uint32_t ctm : 1; /**< Completion Timeout Mask */
|
|
uint32_t fcpem : 1; /**< Flow Control Protocol Error Mask */
|
|
uint32_t ptlpm : 1; /**< Poisoned TLP Mask */
|
|
uint32_t reserved_6_11 : 6;
|
|
uint32_t sdem : 1; /**< Surprise Down Error Mask (not supported) */
|
|
uint32_t dlpem : 1; /**< Data Link Protocol Error Mask */
|
|
uint32_t reserved_0_3 : 4;
|
|
#else
|
|
uint32_t reserved_0_3 : 4;
|
|
uint32_t dlpem : 1;
|
|
uint32_t sdem : 1;
|
|
uint32_t reserved_6_11 : 6;
|
|
uint32_t ptlpm : 1;
|
|
uint32_t fcpem : 1;
|
|
uint32_t ctm : 1;
|
|
uint32_t cam : 1;
|
|
uint32_t ucm : 1;
|
|
uint32_t rom : 1;
|
|
uint32_t mtlpm : 1;
|
|
uint32_t ecrcem : 1;
|
|
uint32_t urem : 1;
|
|
uint32_t reserved_21_31 : 11;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg066_s cn52xx;
|
|
struct cvmx_pcieepx_cfg066_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg066_s cn56xx;
|
|
struct cvmx_pcieepx_cfg066_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg066_s cn63xx;
|
|
struct cvmx_pcieepx_cfg066_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg066 cvmx_pcieepx_cfg066_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg067
|
|
*
|
|
* PCIE_CFG067 = Sixty-eighth 32-bits of PCIE type 0 config space
|
|
* (Uncorrectable Error Severity Register)
|
|
*/
|
|
union cvmx_pcieepx_cfg067
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg067_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t reserved_21_31 : 11;
|
|
uint32_t ures : 1; /**< Unsupported Request Error Severity */
|
|
uint32_t ecrces : 1; /**< ECRC Error Severity */
|
|
uint32_t mtlps : 1; /**< Malformed TLP Severity */
|
|
uint32_t ros : 1; /**< Receiver Overflow Severity */
|
|
uint32_t ucs : 1; /**< Unexpected Completion Severity */
|
|
uint32_t cas : 1; /**< Completer Abort Severity */
|
|
uint32_t cts : 1; /**< Completion Timeout Severity */
|
|
uint32_t fcpes : 1; /**< Flow Control Protocol Error Severity */
|
|
uint32_t ptlps : 1; /**< Poisoned TLP Severity */
|
|
uint32_t reserved_6_11 : 6;
|
|
uint32_t sdes : 1; /**< Surprise Down Error Severity (not supported) */
|
|
uint32_t dlpes : 1; /**< Data Link Protocol Error Severity */
|
|
uint32_t reserved_0_3 : 4;
|
|
#else
|
|
uint32_t reserved_0_3 : 4;
|
|
uint32_t dlpes : 1;
|
|
uint32_t sdes : 1;
|
|
uint32_t reserved_6_11 : 6;
|
|
uint32_t ptlps : 1;
|
|
uint32_t fcpes : 1;
|
|
uint32_t cts : 1;
|
|
uint32_t cas : 1;
|
|
uint32_t ucs : 1;
|
|
uint32_t ros : 1;
|
|
uint32_t mtlps : 1;
|
|
uint32_t ecrces : 1;
|
|
uint32_t ures : 1;
|
|
uint32_t reserved_21_31 : 11;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg067_s cn52xx;
|
|
struct cvmx_pcieepx_cfg067_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg067_s cn56xx;
|
|
struct cvmx_pcieepx_cfg067_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg067_s cn63xx;
|
|
struct cvmx_pcieepx_cfg067_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg067 cvmx_pcieepx_cfg067_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg068
|
|
*
|
|
* PCIE_CFG068 = Sixty-ninth 32-bits of PCIE type 0 config space
|
|
* (Correctable Error Status Register)
|
|
*/
|
|
union cvmx_pcieepx_cfg068
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg068_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t reserved_14_31 : 18;
|
|
uint32_t anfes : 1; /**< Advisory Non-Fatal Error Status */
|
|
uint32_t rtts : 1; /**< Reply Timer Timeout Status */
|
|
uint32_t reserved_9_11 : 3;
|
|
uint32_t rnrs : 1; /**< REPLAY_NUM Rollover Status */
|
|
uint32_t bdllps : 1; /**< Bad DLLP Status */
|
|
uint32_t btlps : 1; /**< Bad TLP Status */
|
|
uint32_t reserved_1_5 : 5;
|
|
uint32_t res : 1; /**< Receiver Error Status */
|
|
#else
|
|
uint32_t res : 1;
|
|
uint32_t reserved_1_5 : 5;
|
|
uint32_t btlps : 1;
|
|
uint32_t bdllps : 1;
|
|
uint32_t rnrs : 1;
|
|
uint32_t reserved_9_11 : 3;
|
|
uint32_t rtts : 1;
|
|
uint32_t anfes : 1;
|
|
uint32_t reserved_14_31 : 18;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg068_s cn52xx;
|
|
struct cvmx_pcieepx_cfg068_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg068_s cn56xx;
|
|
struct cvmx_pcieepx_cfg068_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg068_s cn63xx;
|
|
struct cvmx_pcieepx_cfg068_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg068 cvmx_pcieepx_cfg068_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg069
|
|
*
|
|
* PCIE_CFG069 = Seventieth 32-bits of PCIE type 0 config space
|
|
* (Correctable Error Mask Register)
|
|
*/
|
|
union cvmx_pcieepx_cfg069
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg069_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t reserved_14_31 : 18;
|
|
uint32_t anfem : 1; /**< Advisory Non-Fatal Error Mask */
|
|
uint32_t rttm : 1; /**< Reply Timer Timeout Mask */
|
|
uint32_t reserved_9_11 : 3;
|
|
uint32_t rnrm : 1; /**< REPLAY_NUM Rollover Mask */
|
|
uint32_t bdllpm : 1; /**< Bad DLLP Mask */
|
|
uint32_t btlpm : 1; /**< Bad TLP Mask */
|
|
uint32_t reserved_1_5 : 5;
|
|
uint32_t rem : 1; /**< Receiver Error Mask */
|
|
#else
|
|
uint32_t rem : 1;
|
|
uint32_t reserved_1_5 : 5;
|
|
uint32_t btlpm : 1;
|
|
uint32_t bdllpm : 1;
|
|
uint32_t rnrm : 1;
|
|
uint32_t reserved_9_11 : 3;
|
|
uint32_t rttm : 1;
|
|
uint32_t anfem : 1;
|
|
uint32_t reserved_14_31 : 18;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg069_s cn52xx;
|
|
struct cvmx_pcieepx_cfg069_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg069_s cn56xx;
|
|
struct cvmx_pcieepx_cfg069_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg069_s cn63xx;
|
|
struct cvmx_pcieepx_cfg069_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg069 cvmx_pcieepx_cfg069_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg070
|
|
*
|
|
* PCIE_CFG070 = Seventy-first 32-bits of PCIE type 0 config space
|
|
* (Advanced Error Capabilities and Control Register)
|
|
*/
|
|
union cvmx_pcieepx_cfg070
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg070_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t reserved_9_31 : 23;
|
|
uint32_t ce : 1; /**< ECRC Check Enable */
|
|
uint32_t cc : 1; /**< ECRC Check Capable */
|
|
uint32_t ge : 1; /**< ECRC Generation Enable */
|
|
uint32_t gc : 1; /**< ECRC Generation Capability */
|
|
uint32_t fep : 5; /**< First Error Pointer */
|
|
#else
|
|
uint32_t fep : 5;
|
|
uint32_t gc : 1;
|
|
uint32_t ge : 1;
|
|
uint32_t cc : 1;
|
|
uint32_t ce : 1;
|
|
uint32_t reserved_9_31 : 23;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg070_s cn52xx;
|
|
struct cvmx_pcieepx_cfg070_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg070_s cn56xx;
|
|
struct cvmx_pcieepx_cfg070_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg070_s cn63xx;
|
|
struct cvmx_pcieepx_cfg070_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg070 cvmx_pcieepx_cfg070_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg071
|
|
*
|
|
* PCIE_CFG071 = Seventy-second 32-bits of PCIE type 0 config space
|
|
* (Header Log Register 1)
|
|
*/
|
|
union cvmx_pcieepx_cfg071
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg071_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t dword1 : 32; /**< Header Log Register (first DWORD) */
|
|
#else
|
|
uint32_t dword1 : 32;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg071_s cn52xx;
|
|
struct cvmx_pcieepx_cfg071_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg071_s cn56xx;
|
|
struct cvmx_pcieepx_cfg071_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg071_s cn63xx;
|
|
struct cvmx_pcieepx_cfg071_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg071 cvmx_pcieepx_cfg071_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg072
|
|
*
|
|
* PCIE_CFG072 = Seventy-third 32-bits of PCIE type 0 config space
|
|
* (Header Log Register 2)
|
|
*/
|
|
union cvmx_pcieepx_cfg072
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg072_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t dword2 : 32; /**< Header Log Register (second DWORD) */
|
|
#else
|
|
uint32_t dword2 : 32;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg072_s cn52xx;
|
|
struct cvmx_pcieepx_cfg072_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg072_s cn56xx;
|
|
struct cvmx_pcieepx_cfg072_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg072_s cn63xx;
|
|
struct cvmx_pcieepx_cfg072_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg072 cvmx_pcieepx_cfg072_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg073
|
|
*
|
|
* PCIE_CFG073 = Seventy-fourth 32-bits of PCIE type 0 config space
|
|
* (Header Log Register 3)
|
|
*/
|
|
union cvmx_pcieepx_cfg073
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg073_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t dword3 : 32; /**< Header Log Register (third DWORD) */
|
|
#else
|
|
uint32_t dword3 : 32;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg073_s cn52xx;
|
|
struct cvmx_pcieepx_cfg073_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg073_s cn56xx;
|
|
struct cvmx_pcieepx_cfg073_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg073_s cn63xx;
|
|
struct cvmx_pcieepx_cfg073_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg073 cvmx_pcieepx_cfg073_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg074
|
|
*
|
|
* PCIE_CFG074 = Seventy-fifth 32-bits of PCIE type 0 config space
|
|
* (Header Log Register 4)
|
|
*/
|
|
union cvmx_pcieepx_cfg074
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg074_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t dword4 : 32; /**< Header Log Register (fourth DWORD) */
|
|
#else
|
|
uint32_t dword4 : 32;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg074_s cn52xx;
|
|
struct cvmx_pcieepx_cfg074_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg074_s cn56xx;
|
|
struct cvmx_pcieepx_cfg074_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg074_s cn63xx;
|
|
struct cvmx_pcieepx_cfg074_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg074 cvmx_pcieepx_cfg074_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg448
|
|
*
|
|
* PCIE_CFG448 = Four hundred forty-ninth 32-bits of PCIE type 0 config space
|
|
* (Ack Latency Timer and Replay Timer Register)
|
|
*/
|
|
union cvmx_pcieepx_cfg448
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg448_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t rtl : 16; /**< Replay Time Limit
|
|
The replay timer expires when it reaches this limit. The PCI
|
|
Express bus initiates a replay upon reception of a Nak or when
|
|
the replay timer expires.
|
|
The default is then updated based on the Negotiated Link Width
|
|
and Max_Payload_Size. */
|
|
uint32_t rtltl : 16; /**< Round Trip Latency Time Limit
|
|
The Ack/Nak latency timer expires when it reaches this limit.
|
|
The default is then updated based on the Negotiated Link Width
|
|
and Max_Payload_Size. */
|
|
#else
|
|
uint32_t rtltl : 16;
|
|
uint32_t rtl : 16;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg448_s cn52xx;
|
|
struct cvmx_pcieepx_cfg448_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg448_s cn56xx;
|
|
struct cvmx_pcieepx_cfg448_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg448_s cn63xx;
|
|
struct cvmx_pcieepx_cfg448_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg448 cvmx_pcieepx_cfg448_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg449
|
|
*
|
|
* PCIE_CFG449 = Four hundred fiftieth 32-bits of PCIE type 0 config space
|
|
* (Other Message Register)
|
|
*/
|
|
union cvmx_pcieepx_cfg449
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg449_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t omr : 32; /**< Other Message Register
|
|
This register can be used for either of the following purposes:
|
|
o To send a specific PCI Express Message, the application
|
|
writes the payload of the Message into this register, then
|
|
sets bit 0 of the Port Link Control Register to send the
|
|
Message.
|
|
o To store a corruption pattern for corrupting the LCRC on all
|
|
TLPs, the application places a 32-bit corruption pattern into
|
|
this register and enables this function by setting bit 25 of
|
|
the Port Link Control Register. When enabled, the transmit
|
|
LCRC result is XOR'd with this pattern before inserting
|
|
it into the packet. */
|
|
#else
|
|
uint32_t omr : 32;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg449_s cn52xx;
|
|
struct cvmx_pcieepx_cfg449_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg449_s cn56xx;
|
|
struct cvmx_pcieepx_cfg449_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg449_s cn63xx;
|
|
struct cvmx_pcieepx_cfg449_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg449 cvmx_pcieepx_cfg449_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg450
|
|
*
|
|
* PCIE_CFG450 = Four hundred fifty-first 32-bits of PCIE type 0 config space
|
|
* (Port Force Link Register)
|
|
*/
|
|
union cvmx_pcieepx_cfg450
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg450_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t lpec : 8; /**< Low Power Entrance Count
|
|
The Power Management state will wait for this many clock cycles
|
|
for the associated completion of a CfgWr to PCIE_CFG017 register
|
|
Power State (PS) field register to go low-power. This register
|
|
is intended for applications that do not let the PCI Express
|
|
bus handle a completion for configuration request to the
|
|
Power Management Control and Status (PCIE_CFG017) register. */
|
|
uint32_t reserved_22_23 : 2;
|
|
uint32_t link_state : 6; /**< Link State
|
|
The Link state that the PCI Express Bus will be forced to
|
|
when bit 15 (Force Link) is set.
|
|
State encoding:
|
|
o DETECT_QUIET 00h
|
|
o DETECT_ACT 01h
|
|
o POLL_ACTIVE 02h
|
|
o POLL_COMPLIANCE 03h
|
|
o POLL_CONFIG 04h
|
|
o PRE_DETECT_QUIET 05h
|
|
o DETECT_WAIT 06h
|
|
o CFG_LINKWD_START 07h
|
|
o CFG_LINKWD_ACEPT 08h
|
|
o CFG_LANENUM_WAIT 09h
|
|
o CFG_LANENUM_ACEPT 0Ah
|
|
o CFG_COMPLETE 0Bh
|
|
o CFG_IDLE 0Ch
|
|
o RCVRY_LOCK 0Dh
|
|
o RCVRY_SPEED 0Eh
|
|
o RCVRY_RCVRCFG 0Fh
|
|
o RCVRY_IDLE 10h
|
|
o L0 11h
|
|
o L0S 12h
|
|
o L123_SEND_EIDLE 13h
|
|
o L1_IDLE 14h
|
|
o L2_IDLE 15h
|
|
o L2_WAKE 16h
|
|
o DISABLED_ENTRY 17h
|
|
o DISABLED_IDLE 18h
|
|
o DISABLED 19h
|
|
o LPBK_ENTRY 1Ah
|
|
o LPBK_ACTIVE 1Bh
|
|
o LPBK_EXIT 1Ch
|
|
o LPBK_EXIT_TIMEOUT 1Dh
|
|
o HOT_RESET_ENTRY 1Eh
|
|
o HOT_RESET 1Fh */
|
|
uint32_t force_link : 1; /**< Force Link
|
|
Forces the Link to the state specified by the Link State field.
|
|
The Force Link pulse will trigger Link re-negotiation.
|
|
* As the The Force Link is a pulse, writing a 1 to it does
|
|
trigger the forced link state event, even thought reading it
|
|
always returns a 0. */
|
|
uint32_t reserved_8_14 : 7;
|
|
uint32_t link_num : 8; /**< Link Number
|
|
Not used for Endpoint */
|
|
#else
|
|
uint32_t link_num : 8;
|
|
uint32_t reserved_8_14 : 7;
|
|
uint32_t force_link : 1;
|
|
uint32_t link_state : 6;
|
|
uint32_t reserved_22_23 : 2;
|
|
uint32_t lpec : 8;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg450_s cn52xx;
|
|
struct cvmx_pcieepx_cfg450_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg450_s cn56xx;
|
|
struct cvmx_pcieepx_cfg450_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg450_s cn63xx;
|
|
struct cvmx_pcieepx_cfg450_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg450 cvmx_pcieepx_cfg450_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg451
|
|
*
|
|
* PCIE_CFG451 = Four hundred fifty-second 32-bits of PCIE type 0 config space
|
|
* (Ack Frequency Register)
|
|
*/
|
|
union cvmx_pcieepx_cfg451
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg451_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t reserved_30_31 : 2;
|
|
uint32_t l1el : 3; /**< L1 Entrance Latency
|
|
Values correspond to:
|
|
o 000: 1 ms
|
|
o 001: 2 ms
|
|
o 010: 4 ms
|
|
o 011: 8 ms
|
|
o 100: 16 ms
|
|
o 101: 32 ms
|
|
o 110 or 111: 64 ms */
|
|
uint32_t l0el : 3; /**< L0s Entrance Latency
|
|
Values correspond to:
|
|
o 000: 1 ms
|
|
o 001: 2 ms
|
|
o 010: 3 ms
|
|
o 011: 4 ms
|
|
o 100: 5 ms
|
|
o 101: 6 ms
|
|
o 110 or 111: 7 ms */
|
|
uint32_t n_fts_cc : 8; /**< N_FTS when common clock is used.
|
|
The number of Fast Training Sequence ordered sets to be
|
|
transmitted when transitioning from L0s to L0. The maximum
|
|
number of FTS ordered-sets that a component can request is 255.
|
|
Note: A value of zero is not supported; a value of
|
|
zero can cause the LTSSM to go into the recovery state
|
|
when exiting from L0s. */
|
|
uint32_t n_fts : 8; /**< N_FTS
|
|
The number of Fast Training Sequence ordered sets to be
|
|
transmitted when transitioning from L0s to L0. The maximum
|
|
number of FTS ordered-sets that a component can request is 255.
|
|
Note: A value of zero is not supported; a value of
|
|
zero can cause the LTSSM to go into the recovery state
|
|
when exiting from L0s. */
|
|
uint32_t ack_freq : 8; /**< Ack Frequency
|
|
The number of pending Ack's specified here (up to 255) before
|
|
sending an Ack. */
|
|
#else
|
|
uint32_t ack_freq : 8;
|
|
uint32_t n_fts : 8;
|
|
uint32_t n_fts_cc : 8;
|
|
uint32_t l0el : 3;
|
|
uint32_t l1el : 3;
|
|
uint32_t reserved_30_31 : 2;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg451_s cn52xx;
|
|
struct cvmx_pcieepx_cfg451_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg451_s cn56xx;
|
|
struct cvmx_pcieepx_cfg451_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg451_s cn63xx;
|
|
struct cvmx_pcieepx_cfg451_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg451 cvmx_pcieepx_cfg451_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg452
|
|
*
|
|
* PCIE_CFG452 = Four hundred fifty-third 32-bits of PCIE type 0 config space
|
|
* (Port Link Control Register)
|
|
*/
|
|
union cvmx_pcieepx_cfg452
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg452_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t reserved_26_31 : 6;
|
|
uint32_t eccrc : 1; /**< Enable Corrupted CRC
|
|
Causes corrupt LCRC for TLPs when set,
|
|
using the pattern contained in the Other Message register.
|
|
This is a test feature, not to be used in normal operation. */
|
|
uint32_t reserved_22_24 : 3;
|
|
uint32_t lme : 6; /**< Link Mode Enable
|
|
o 000001: x1
|
|
o 000011: x2
|
|
o 000111: x4
|
|
o 001111: x8 (not supported)
|
|
o 011111: x16 (not supported)
|
|
o 111111: x32 (not supported)
|
|
This field indicates the MAXIMUM number of lanes supported
|
|
by the PCIe port. The value can be set less than 0x7
|
|
to limit the number of lanes the PCIe will attempt to use.
|
|
If the value of 0x7 set by the HW is not desired,
|
|
this field can be programmed to a smaller value (i.e. EEPROM)
|
|
See also MLW.
|
|
(Note: The value of this field does NOT indicate the number
|
|
of lanes in use by the PCIe. LME sets the max number of lanes
|
|
in the PCIe core that COULD be used. As per the PCIe specs,
|
|
the PCIe core can negotiate a smaller link width, so all
|
|
of x4, x2, and x1 are supported when LME=0x7,
|
|
for example.) */
|
|
uint32_t reserved_8_15 : 8;
|
|
uint32_t flm : 1; /**< Fast Link Mode
|
|
Sets all internal timers to fast mode for simulation purposes.
|
|
If during an eeprom load, the first word loaded is 0xffffffff,
|
|
then the EEPROM load will be terminated and this bit will be set. */
|
|
uint32_t reserved_6_6 : 1;
|
|
uint32_t dllle : 1; /**< DLL Link Enable
|
|
Enables Link initialization. If DLL Link Enable = 0, the PCI
|
|
Express bus does not transmit InitFC DLLPs and does not
|
|
establish a Link. */
|
|
uint32_t reserved_4_4 : 1;
|
|
uint32_t ra : 1; /**< Reset Assert
|
|
Triggers a recovery and forces the LTSSM to the Hot Reset
|
|
state (downstream port only). */
|
|
uint32_t le : 1; /**< Loopback Enable
|
|
Initiate loopback mode as a master. On a 0->1 transition,
|
|
the PCIe core sends TS ordered sets with the loopback bit set
|
|
to cause the link partner to enter into loopback mode as a
|
|
slave. Normal transmission is not possible when LE=1. To exit
|
|
loopback mode, take the link through a reset sequence. */
|
|
uint32_t sd : 1; /**< Scramble Disable
|
|
Turns off data scrambling. */
|
|
uint32_t omr : 1; /**< Other Message Request
|
|
When software writes a `1' to this bit, the PCI Express bus
|
|
transmits the Message contained in the Other Message register. */
|
|
#else
|
|
uint32_t omr : 1;
|
|
uint32_t sd : 1;
|
|
uint32_t le : 1;
|
|
uint32_t ra : 1;
|
|
uint32_t reserved_4_4 : 1;
|
|
uint32_t dllle : 1;
|
|
uint32_t reserved_6_6 : 1;
|
|
uint32_t flm : 1;
|
|
uint32_t reserved_8_15 : 8;
|
|
uint32_t lme : 6;
|
|
uint32_t reserved_22_24 : 3;
|
|
uint32_t eccrc : 1;
|
|
uint32_t reserved_26_31 : 6;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg452_s cn52xx;
|
|
struct cvmx_pcieepx_cfg452_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg452_s cn56xx;
|
|
struct cvmx_pcieepx_cfg452_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg452_s cn63xx;
|
|
struct cvmx_pcieepx_cfg452_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg452 cvmx_pcieepx_cfg452_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg453
|
|
*
|
|
* PCIE_CFG453 = Four hundred fifty-fourth 32-bits of PCIE type 0 config space
|
|
* (Lane Skew Register)
|
|
*/
|
|
union cvmx_pcieepx_cfg453
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg453_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t dlld : 1; /**< Disable Lane-to-Lane Deskew
|
|
Disables the internal Lane-to-Lane deskew logic. */
|
|
uint32_t reserved_26_30 : 5;
|
|
uint32_t ack_nak : 1; /**< Ack/Nak Disable
|
|
Prevents the PCI Express bus from sending Ack and Nak DLLPs. */
|
|
uint32_t fcd : 1; /**< Flow Control Disable
|
|
Prevents the PCI Express bus from sending FC DLLPs. */
|
|
uint32_t ilst : 24; /**< Insert Lane Skew for Transmit
|
|
Causes skew between lanes for test purposes. There are three
|
|
bits per Lane. The value is in units of one symbol time. For
|
|
example, the value 010b for a Lane forces a skew of two symbol
|
|
times for that Lane. The maximum skew value for any Lane is 5
|
|
symbol times. */
|
|
#else
|
|
uint32_t ilst : 24;
|
|
uint32_t fcd : 1;
|
|
uint32_t ack_nak : 1;
|
|
uint32_t reserved_26_30 : 5;
|
|
uint32_t dlld : 1;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg453_s cn52xx;
|
|
struct cvmx_pcieepx_cfg453_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg453_s cn56xx;
|
|
struct cvmx_pcieepx_cfg453_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg453_s cn63xx;
|
|
struct cvmx_pcieepx_cfg453_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg453 cvmx_pcieepx_cfg453_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg454
|
|
*
|
|
* PCIE_CFG454 = Four hundred fifty-fifth 32-bits of PCIE type 0 config space
|
|
* (Symbol Number Register)
|
|
*/
|
|
union cvmx_pcieepx_cfg454
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg454_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t reserved_29_31 : 3;
|
|
uint32_t tmfcwt : 5; /**< Timer Modifier for Flow Control Watchdog Timer
|
|
Increases the timer value for the Flow Control watchdog timer,
|
|
in increments of 16 clock cycles. */
|
|
uint32_t tmanlt : 5; /**< Timer Modifier for Ack/Nak Latency Timer
|
|
Increases the timer value for the Ack/Nak latency timer, in
|
|
increments of 64 clock cycles. */
|
|
uint32_t tmrt : 5; /**< Timer Modifier for Replay Timer
|
|
Increases the timer value for the replay timer, in increments
|
|
of 64 clock cycles. */
|
|
uint32_t reserved_11_13 : 3;
|
|
uint32_t nskps : 3; /**< Number of SKP Symbols */
|
|
uint32_t reserved_4_7 : 4;
|
|
uint32_t ntss : 4; /**< Number of TS Symbols
|
|
Sets the number of TS identifier symbols that are sent in TS1
|
|
and TS2 ordered sets. */
|
|
#else
|
|
uint32_t ntss : 4;
|
|
uint32_t reserved_4_7 : 4;
|
|
uint32_t nskps : 3;
|
|
uint32_t reserved_11_13 : 3;
|
|
uint32_t tmrt : 5;
|
|
uint32_t tmanlt : 5;
|
|
uint32_t tmfcwt : 5;
|
|
uint32_t reserved_29_31 : 3;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg454_s cn52xx;
|
|
struct cvmx_pcieepx_cfg454_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg454_s cn56xx;
|
|
struct cvmx_pcieepx_cfg454_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg454_s cn63xx;
|
|
struct cvmx_pcieepx_cfg454_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg454 cvmx_pcieepx_cfg454_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg455
|
|
*
|
|
* PCIE_CFG455 = Four hundred fifty-sixth 32-bits of PCIE type 0 config space
|
|
* (Symbol Timer Register/Filter Mask Register 1)
|
|
*/
|
|
union cvmx_pcieepx_cfg455
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg455_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t m_cfg0_filt : 1; /**< Mask filtering of received Configuration Requests (RC mode only) */
|
|
uint32_t m_io_filt : 1; /**< Mask filtering of received I/O Requests (RC mode only) */
|
|
uint32_t msg_ctrl : 1; /**< Message Control
|
|
The application must not change this field. */
|
|
uint32_t m_cpl_ecrc_filt : 1; /**< Mask ECRC error filtering for Completions */
|
|
uint32_t m_ecrc_filt : 1; /**< Mask ECRC error filtering */
|
|
uint32_t m_cpl_len_err : 1; /**< Mask Length mismatch error for received Completions */
|
|
uint32_t m_cpl_attr_err : 1; /**< Mask Attributes mismatch error for received Completions */
|
|
uint32_t m_cpl_tc_err : 1; /**< Mask Traffic Class mismatch error for received Completions */
|
|
uint32_t m_cpl_fun_err : 1; /**< Mask function mismatch error for received Completions */
|
|
uint32_t m_cpl_rid_err : 1; /**< Mask Requester ID mismatch error for received Completions */
|
|
uint32_t m_cpl_tag_err : 1; /**< Mask Tag error rules for received Completions */
|
|
uint32_t m_lk_filt : 1; /**< Mask Locked Request filtering */
|
|
uint32_t m_cfg1_filt : 1; /**< Mask Type 1 Configuration Request filtering */
|
|
uint32_t m_bar_match : 1; /**< Mask BAR match filtering */
|
|
uint32_t m_pois_filt : 1; /**< Mask poisoned TLP filtering */
|
|
uint32_t m_fun : 1; /**< Mask function */
|
|
uint32_t dfcwt : 1; /**< Disable FC Watchdog Timer */
|
|
uint32_t reserved_11_14 : 4;
|
|
uint32_t skpiv : 11; /**< SKP Interval Value */
|
|
#else
|
|
uint32_t skpiv : 11;
|
|
uint32_t reserved_11_14 : 4;
|
|
uint32_t dfcwt : 1;
|
|
uint32_t m_fun : 1;
|
|
uint32_t m_pois_filt : 1;
|
|
uint32_t m_bar_match : 1;
|
|
uint32_t m_cfg1_filt : 1;
|
|
uint32_t m_lk_filt : 1;
|
|
uint32_t m_cpl_tag_err : 1;
|
|
uint32_t m_cpl_rid_err : 1;
|
|
uint32_t m_cpl_fun_err : 1;
|
|
uint32_t m_cpl_tc_err : 1;
|
|
uint32_t m_cpl_attr_err : 1;
|
|
uint32_t m_cpl_len_err : 1;
|
|
uint32_t m_ecrc_filt : 1;
|
|
uint32_t m_cpl_ecrc_filt : 1;
|
|
uint32_t msg_ctrl : 1;
|
|
uint32_t m_io_filt : 1;
|
|
uint32_t m_cfg0_filt : 1;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg455_s cn52xx;
|
|
struct cvmx_pcieepx_cfg455_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg455_s cn56xx;
|
|
struct cvmx_pcieepx_cfg455_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg455_s cn63xx;
|
|
struct cvmx_pcieepx_cfg455_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg455 cvmx_pcieepx_cfg455_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg456
|
|
*
|
|
* PCIE_CFG456 = Four hundred fifty-seventh 32-bits of PCIE type 0 config space
|
|
* (Filter Mask Register 2)
|
|
*/
|
|
union cvmx_pcieepx_cfg456
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg456_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t reserved_2_31 : 30;
|
|
uint32_t m_vend1_drp : 1; /**< Mask Vendor MSG Type 1 dropped silently */
|
|
uint32_t m_vend0_drp : 1; /**< Mask Vendor MSG Type 0 dropped with UR error reporting. */
|
|
#else
|
|
uint32_t m_vend0_drp : 1;
|
|
uint32_t m_vend1_drp : 1;
|
|
uint32_t reserved_2_31 : 30;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg456_s cn52xx;
|
|
struct cvmx_pcieepx_cfg456_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg456_s cn56xx;
|
|
struct cvmx_pcieepx_cfg456_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg456_s cn63xx;
|
|
struct cvmx_pcieepx_cfg456_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg456 cvmx_pcieepx_cfg456_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg458
|
|
*
|
|
* PCIE_CFG458 = Four hundred fifty-ninth 32-bits of PCIE type 0 config space
|
|
* (Debug Register 0)
|
|
*/
|
|
union cvmx_pcieepx_cfg458
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg458_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t dbg_info_l32 : 32; /**< Debug Info Lower 32 Bits */
|
|
#else
|
|
uint32_t dbg_info_l32 : 32;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg458_s cn52xx;
|
|
struct cvmx_pcieepx_cfg458_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg458_s cn56xx;
|
|
struct cvmx_pcieepx_cfg458_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg458_s cn63xx;
|
|
struct cvmx_pcieepx_cfg458_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg458 cvmx_pcieepx_cfg458_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg459
|
|
*
|
|
* PCIE_CFG459 = Four hundred sixtieth 32-bits of PCIE type 0 config space
|
|
* (Debug Register 1)
|
|
*/
|
|
union cvmx_pcieepx_cfg459
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg459_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t dbg_info_u32 : 32; /**< Debug Info Upper 32 Bits */
|
|
#else
|
|
uint32_t dbg_info_u32 : 32;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg459_s cn52xx;
|
|
struct cvmx_pcieepx_cfg459_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg459_s cn56xx;
|
|
struct cvmx_pcieepx_cfg459_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg459_s cn63xx;
|
|
struct cvmx_pcieepx_cfg459_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg459 cvmx_pcieepx_cfg459_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg460
|
|
*
|
|
* PCIE_CFG460 = Four hundred sixty-first 32-bits of PCIE type 0 config space
|
|
* (Transmit Posted FC Credit Status)
|
|
*/
|
|
union cvmx_pcieepx_cfg460
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg460_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t reserved_20_31 : 12;
|
|
uint32_t tphfcc : 8; /**< Transmit Posted Header FC Credits
|
|
The Posted Header credits advertised by the receiver at the
|
|
other end of the Link, updated with each UpdateFC DLLP. */
|
|
uint32_t tpdfcc : 12; /**< Transmit Posted Data FC Credits
|
|
The Posted Data credits advertised by the receiver at the other
|
|
end of the Link, updated with each UpdateFC DLLP. */
|
|
#else
|
|
uint32_t tpdfcc : 12;
|
|
uint32_t tphfcc : 8;
|
|
uint32_t reserved_20_31 : 12;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg460_s cn52xx;
|
|
struct cvmx_pcieepx_cfg460_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg460_s cn56xx;
|
|
struct cvmx_pcieepx_cfg460_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg460_s cn63xx;
|
|
struct cvmx_pcieepx_cfg460_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg460 cvmx_pcieepx_cfg460_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg461
|
|
*
|
|
* PCIE_CFG461 = Four hundred sixty-second 32-bits of PCIE type 0 config space
|
|
* (Transmit Non-Posted FC Credit Status)
|
|
*/
|
|
union cvmx_pcieepx_cfg461
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg461_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t reserved_20_31 : 12;
|
|
uint32_t tchfcc : 8; /**< Transmit Non-Posted Header FC Credits
|
|
The Non-Posted Header credits advertised by the receiver at the
|
|
other end of the Link, updated with each UpdateFC DLLP. */
|
|
uint32_t tcdfcc : 12; /**< Transmit Non-Posted Data FC Credits
|
|
The Non-Posted Data credits advertised by the receiver at the
|
|
other end of the Link, updated with each UpdateFC DLLP. */
|
|
#else
|
|
uint32_t tcdfcc : 12;
|
|
uint32_t tchfcc : 8;
|
|
uint32_t reserved_20_31 : 12;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg461_s cn52xx;
|
|
struct cvmx_pcieepx_cfg461_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg461_s cn56xx;
|
|
struct cvmx_pcieepx_cfg461_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg461_s cn63xx;
|
|
struct cvmx_pcieepx_cfg461_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg461 cvmx_pcieepx_cfg461_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg462
|
|
*
|
|
* PCIE_CFG462 = Four hundred sixty-third 32-bits of PCIE type 0 config space
|
|
* (Transmit Completion FC Credit Status )
|
|
*/
|
|
union cvmx_pcieepx_cfg462
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg462_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t reserved_20_31 : 12;
|
|
uint32_t tchfcc : 8; /**< Transmit Completion Header FC Credits
|
|
The Completion Header credits advertised by the receiver at the
|
|
other end of the Link, updated with each UpdateFC DLLP. */
|
|
uint32_t tcdfcc : 12; /**< Transmit Completion Data FC Credits
|
|
The Completion Data credits advertised by the receiver at the
|
|
other end of the Link, updated with each UpdateFC DLLP. */
|
|
#else
|
|
uint32_t tcdfcc : 12;
|
|
uint32_t tchfcc : 8;
|
|
uint32_t reserved_20_31 : 12;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg462_s cn52xx;
|
|
struct cvmx_pcieepx_cfg462_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg462_s cn56xx;
|
|
struct cvmx_pcieepx_cfg462_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg462_s cn63xx;
|
|
struct cvmx_pcieepx_cfg462_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg462 cvmx_pcieepx_cfg462_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg463
|
|
*
|
|
* PCIE_CFG463 = Four hundred sixty-fourth 32-bits of PCIE type 0 config space
|
|
* (Queue Status)
|
|
*/
|
|
union cvmx_pcieepx_cfg463
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg463_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t reserved_3_31 : 29;
|
|
uint32_t rqne : 1; /**< Received Queue Not Empty
|
|
Indicates there is data in one or more of the receive buffers. */
|
|
uint32_t trbne : 1; /**< Transmit Retry Buffer Not Empty
|
|
Indicates that there is data in the transmit retry buffer. */
|
|
uint32_t rtlpfccnr : 1; /**< Received TLP FC Credits Not Returned
|
|
Indicates that the PCI Express bus has sent a TLP but has not
|
|
yet received an UpdateFC DLLP indicating that the credits for
|
|
that TLP have been restored by the receiver at the other end of
|
|
the Link. */
|
|
#else
|
|
uint32_t rtlpfccnr : 1;
|
|
uint32_t trbne : 1;
|
|
uint32_t rqne : 1;
|
|
uint32_t reserved_3_31 : 29;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg463_s cn52xx;
|
|
struct cvmx_pcieepx_cfg463_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg463_s cn56xx;
|
|
struct cvmx_pcieepx_cfg463_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg463_s cn63xx;
|
|
struct cvmx_pcieepx_cfg463_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg463 cvmx_pcieepx_cfg463_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg464
|
|
*
|
|
* PCIE_CFG464 = Four hundred sixty-fifth 32-bits of PCIE type 0 config space
|
|
* (VC Transmit Arbitration Register 1)
|
|
*/
|
|
union cvmx_pcieepx_cfg464
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg464_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t wrr_vc3 : 8; /**< WRR Weight for VC3 */
|
|
uint32_t wrr_vc2 : 8; /**< WRR Weight for VC2 */
|
|
uint32_t wrr_vc1 : 8; /**< WRR Weight for VC1 */
|
|
uint32_t wrr_vc0 : 8; /**< WRR Weight for VC0 */
|
|
#else
|
|
uint32_t wrr_vc0 : 8;
|
|
uint32_t wrr_vc1 : 8;
|
|
uint32_t wrr_vc2 : 8;
|
|
uint32_t wrr_vc3 : 8;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg464_s cn52xx;
|
|
struct cvmx_pcieepx_cfg464_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg464_s cn56xx;
|
|
struct cvmx_pcieepx_cfg464_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg464_s cn63xx;
|
|
struct cvmx_pcieepx_cfg464_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg464 cvmx_pcieepx_cfg464_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg465
|
|
*
|
|
* PCIE_CFG465 = Four hundred sixty-sixth 32-bits of PCIE type 0 config space
|
|
* (VC Transmit Arbitration Register 2)
|
|
*/
|
|
union cvmx_pcieepx_cfg465
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg465_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t wrr_vc7 : 8; /**< WRR Weight for VC7 */
|
|
uint32_t wrr_vc6 : 8; /**< WRR Weight for VC6 */
|
|
uint32_t wrr_vc5 : 8; /**< WRR Weight for VC5 */
|
|
uint32_t wrr_vc4 : 8; /**< WRR Weight for VC4 */
|
|
#else
|
|
uint32_t wrr_vc4 : 8;
|
|
uint32_t wrr_vc5 : 8;
|
|
uint32_t wrr_vc6 : 8;
|
|
uint32_t wrr_vc7 : 8;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg465_s cn52xx;
|
|
struct cvmx_pcieepx_cfg465_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg465_s cn56xx;
|
|
struct cvmx_pcieepx_cfg465_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg465_s cn63xx;
|
|
struct cvmx_pcieepx_cfg465_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg465 cvmx_pcieepx_cfg465_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg466
|
|
*
|
|
* PCIE_CFG466 = Four hundred sixty-seventh 32-bits of PCIE type 0 config space
|
|
* (VC0 Posted Receive Queue Control)
|
|
*/
|
|
union cvmx_pcieepx_cfg466
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg466_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t rx_queue_order : 1; /**< VC Ordering for Receive Queues
|
|
Determines the VC ordering rule for the receive queues, used
|
|
only in the segmented-buffer configuration,
|
|
writable through PEM(0..1)_CFG_WR:
|
|
o 1: Strict ordering, higher numbered VCs have higher priority
|
|
o 0: Round robin
|
|
However, the application must not change this field. */
|
|
uint32_t type_ordering : 1; /**< TLP Type Ordering for VC0
|
|
Determines the TLP type ordering rule for VC0 receive queues,
|
|
used only in the segmented-buffer configuration, writable
|
|
through PEM(0..1)_CFG_WR:
|
|
o 1: Ordering of received TLPs follows the rules in
|
|
PCI Express Base Specification
|
|
o 0: Strict ordering for received TLPs: Posted, then
|
|
Completion, then Non-Posted
|
|
However, the application must not change this field. */
|
|
uint32_t reserved_24_29 : 6;
|
|
uint32_t queue_mode : 3; /**< VC0 Posted TLP Queue Mode
|
|
The operating mode of the Posted receive queue for VC0, used
|
|
only in the segmented-buffer configuration, writable through
|
|
PEM(0..1)_CFG_WR.
|
|
However, the application must not change this field.
|
|
Only one bit can be set at a time:
|
|
o Bit 23: Bypass
|
|
o Bit 22: Cut-through
|
|
o Bit 21: Store-and-forward */
|
|
uint32_t reserved_20_20 : 1;
|
|
uint32_t header_credits : 8; /**< VC0 Posted Header Credits
|
|
The number of initial Posted header credits for VC0, used for
|
|
all receive queue buffer configurations.
|
|
This field is writable through PEM(0..1)_CFG_WR.
|
|
However, the application must not change this field. */
|
|
uint32_t data_credits : 12; /**< VC0 Posted Data Credits
|
|
The number of initial Posted data credits for VC0, used for all
|
|
receive queue buffer configurations.
|
|
This field is writable through PEM(0..1)_CFG_WR.
|
|
However, the application must not change this field. */
|
|
#else
|
|
uint32_t data_credits : 12;
|
|
uint32_t header_credits : 8;
|
|
uint32_t reserved_20_20 : 1;
|
|
uint32_t queue_mode : 3;
|
|
uint32_t reserved_24_29 : 6;
|
|
uint32_t type_ordering : 1;
|
|
uint32_t rx_queue_order : 1;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg466_s cn52xx;
|
|
struct cvmx_pcieepx_cfg466_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg466_s cn56xx;
|
|
struct cvmx_pcieepx_cfg466_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg466_s cn63xx;
|
|
struct cvmx_pcieepx_cfg466_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg466 cvmx_pcieepx_cfg466_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg467
|
|
*
|
|
* PCIE_CFG467 = Four hundred sixty-eighth 32-bits of PCIE type 0 config space
|
|
* (VC0 Non-Posted Receive Queue Control)
|
|
*/
|
|
union cvmx_pcieepx_cfg467
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg467_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t reserved_24_31 : 8;
|
|
uint32_t queue_mode : 3; /**< VC0 Non-Posted TLP Queue Mode
|
|
The operating mode of the Non-Posted receive queue for VC0,
|
|
used only in the segmented-buffer configuration, writable
|
|
through PEM(0..1)_CFG_WR.
|
|
Only one bit can be set at a time:
|
|
o Bit 23: Bypass
|
|
o Bit 22: Cut-through
|
|
o Bit 21: Store-and-forward
|
|
However, the application must not change this field. */
|
|
uint32_t reserved_20_20 : 1;
|
|
uint32_t header_credits : 8; /**< VC0 Non-Posted Header Credits
|
|
The number of initial Non-Posted header credits for VC0, used
|
|
for all receive queue buffer configurations.
|
|
This field is writable through PEM(0..1)_CFG_WR.
|
|
However, the application must not change this field. */
|
|
uint32_t data_credits : 12; /**< VC0 Non-Posted Data Credits
|
|
The number of initial Non-Posted data credits for VC0, used for
|
|
all receive queue buffer configurations.
|
|
This field is writable through PEM(0..1)_CFG_WR.
|
|
However, the application must not change this field. */
|
|
#else
|
|
uint32_t data_credits : 12;
|
|
uint32_t header_credits : 8;
|
|
uint32_t reserved_20_20 : 1;
|
|
uint32_t queue_mode : 3;
|
|
uint32_t reserved_24_31 : 8;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg467_s cn52xx;
|
|
struct cvmx_pcieepx_cfg467_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg467_s cn56xx;
|
|
struct cvmx_pcieepx_cfg467_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg467_s cn63xx;
|
|
struct cvmx_pcieepx_cfg467_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg467 cvmx_pcieepx_cfg467_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg468
|
|
*
|
|
* PCIE_CFG468 = Four hundred sixty-ninth 32-bits of PCIE type 0 config space
|
|
* (VC0 Completion Receive Queue Control)
|
|
*/
|
|
union cvmx_pcieepx_cfg468
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg468_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t reserved_24_31 : 8;
|
|
uint32_t queue_mode : 3; /**< VC0 Completion TLP Queue Mode
|
|
The operating mode of the Completion receive queue for VC0,
|
|
used only in the segmented-buffer configuration, writable
|
|
through PEM(0..1)_CFG_WR.
|
|
Only one bit can be set at a time:
|
|
o Bit 23: Bypass
|
|
o Bit 22: Cut-through
|
|
o Bit 21: Store-and-forward
|
|
However, the application must not change this field. */
|
|
uint32_t reserved_20_20 : 1;
|
|
uint32_t header_credits : 8; /**< VC0 Completion Header Credits
|
|
The number of initial Completion header credits for VC0, used
|
|
for all receive queue buffer configurations.
|
|
This field is writable through PEM(0..1)_CFG_WR.
|
|
However, the application must not change this field. */
|
|
uint32_t data_credits : 12; /**< VC0 Completion Data Credits
|
|
The number of initial Completion data credits for VC0, used for
|
|
all receive queue buffer configurations.
|
|
This field is writable through PEM(0..1)_CFG_WR.
|
|
However, the application must not change this field. */
|
|
#else
|
|
uint32_t data_credits : 12;
|
|
uint32_t header_credits : 8;
|
|
uint32_t reserved_20_20 : 1;
|
|
uint32_t queue_mode : 3;
|
|
uint32_t reserved_24_31 : 8;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg468_s cn52xx;
|
|
struct cvmx_pcieepx_cfg468_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg468_s cn56xx;
|
|
struct cvmx_pcieepx_cfg468_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg468_s cn63xx;
|
|
struct cvmx_pcieepx_cfg468_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg468 cvmx_pcieepx_cfg468_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg490
|
|
*
|
|
* PCIE_CFG490 = Four hundred ninety-first 32-bits of PCIE type 0 config space
|
|
* (VC0 Posted Buffer Depth)
|
|
*/
|
|
union cvmx_pcieepx_cfg490
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg490_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t reserved_26_31 : 6;
|
|
uint32_t header_depth : 10; /**< VC0 Posted Header Queue Depth
|
|
Sets the number of entries in the Posted header queue for VC0
|
|
when using the segmented-buffer configuration, writable through
|
|
PEM(0..1)_CFG_WR.
|
|
However, the application must not change this field. */
|
|
uint32_t reserved_14_15 : 2;
|
|
uint32_t data_depth : 14; /**< VC0 Posted Data Queue Depth
|
|
Sets the number of entries in the Posted data queue for VC0
|
|
when using the segmented-buffer configuration, writable
|
|
through PEM(0..1)_CFG_WR.
|
|
However, the application must not change this field. */
|
|
#else
|
|
uint32_t data_depth : 14;
|
|
uint32_t reserved_14_15 : 2;
|
|
uint32_t header_depth : 10;
|
|
uint32_t reserved_26_31 : 6;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg490_s cn52xx;
|
|
struct cvmx_pcieepx_cfg490_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg490_s cn56xx;
|
|
struct cvmx_pcieepx_cfg490_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg490_s cn63xx;
|
|
struct cvmx_pcieepx_cfg490_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg490 cvmx_pcieepx_cfg490_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg491
|
|
*
|
|
* PCIE_CFG491 = Four hundred ninety-second 32-bits of PCIE type 0 config space
|
|
* (VC0 Non-Posted Buffer Depth)
|
|
*/
|
|
union cvmx_pcieepx_cfg491
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg491_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t reserved_26_31 : 6;
|
|
uint32_t header_depth : 10; /**< VC0 Non-Posted Header Queue Depth
|
|
Sets the number of entries in the Non-Posted header queue for
|
|
VC0 when using the segmented-buffer configuration, writable
|
|
through PEM(0..1)_CFG_WR.
|
|
However, the application must not change this field. */
|
|
uint32_t reserved_14_15 : 2;
|
|
uint32_t data_depth : 14; /**< VC0 Non-Posted Data Queue Depth
|
|
Sets the number of entries in the Non-Posted data queue for VC0
|
|
when using the segmented-buffer configuration, writable
|
|
through PEM(0..1)_CFG_WR.
|
|
However, the application must not change this field. */
|
|
#else
|
|
uint32_t data_depth : 14;
|
|
uint32_t reserved_14_15 : 2;
|
|
uint32_t header_depth : 10;
|
|
uint32_t reserved_26_31 : 6;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg491_s cn52xx;
|
|
struct cvmx_pcieepx_cfg491_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg491_s cn56xx;
|
|
struct cvmx_pcieepx_cfg491_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg491_s cn63xx;
|
|
struct cvmx_pcieepx_cfg491_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg491 cvmx_pcieepx_cfg491_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg492
|
|
*
|
|
* PCIE_CFG492 = Four hundred ninety-third 32-bits of PCIE type 0 config space
|
|
* (VC0 Completion Buffer Depth)
|
|
*/
|
|
union cvmx_pcieepx_cfg492
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg492_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t reserved_26_31 : 6;
|
|
uint32_t header_depth : 10; /**< VC0 Completion Header Queue Depth
|
|
Sets the number of entries in the Completion header queue for
|
|
VC0 when using the segmented-buffer configuration, writable
|
|
through PEM(0..1)_CFG_WR.
|
|
However, the application must not change this field. */
|
|
uint32_t reserved_14_15 : 2;
|
|
uint32_t data_depth : 14; /**< VC0 Completion Data Queue Depth
|
|
Sets the number of entries in the Completion data queue for VC0
|
|
when using the segmented-buffer configuration, writable
|
|
through PEM(0..1)_CFG_WR.
|
|
However, the application must not change this field. */
|
|
#else
|
|
uint32_t data_depth : 14;
|
|
uint32_t reserved_14_15 : 2;
|
|
uint32_t header_depth : 10;
|
|
uint32_t reserved_26_31 : 6;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg492_s cn52xx;
|
|
struct cvmx_pcieepx_cfg492_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg492_s cn56xx;
|
|
struct cvmx_pcieepx_cfg492_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg492_s cn63xx;
|
|
struct cvmx_pcieepx_cfg492_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg492 cvmx_pcieepx_cfg492_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg515
|
|
*
|
|
* PCIE_CFG515 = Five hundred sixteenth 32-bits of PCIE type 0 config space
|
|
* (Port Logic Register (Gen2))
|
|
*/
|
|
union cvmx_pcieepx_cfg515
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg515_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t reserved_21_31 : 11;
|
|
uint32_t s_d_e : 1; /**< SEL_DE_EMPHASIS
|
|
Used to set the de-emphasis level for upstream ports. */
|
|
uint32_t ctcrb : 1; /**< Config Tx Compliance Receive Bit
|
|
When set to 1, signals LTSSM to transmit TS ordered sets
|
|
with the compliance receive bit assert (equal to 1). */
|
|
uint32_t cpyts : 1; /**< Config PHY Tx Swing
|
|
Indicates the voltage level the PHY should drive. When set to
|
|
1, indicates Full Swing. When set to 0, indicates Low Swing */
|
|
uint32_t dsc : 1; /**< Directed Speed Change
|
|
Indicates to the LTSSM whether or not to initiate a speed
|
|
change. */
|
|
uint32_t le : 9; /**< Lane Enable
|
|
Indicates the number of lanes to check for exit from electrical
|
|
idle in Polling.Active and Polling.Compliance. 1 = x1, 2 = x2,
|
|
etc. Used to limit the maximum link width to ignore broken
|
|
lanes that detect a receiver, but will not exit electrical
|
|
idle and
|
|
would otherwise prevent a valid link from being configured. */
|
|
uint32_t n_fts : 8; /**< N_FTS
|
|
Sets the Number of Fast Training Sequences (N_FTS) that
|
|
the core advertises as its N_FTS during GEN2 Link training.
|
|
This value is used to inform the Link partner about the PHYs
|
|
ability to recover synchronization after a low power state.
|
|
Note: Do not set N_FTS to zero; doing so can cause the
|
|
LTSSM to go into the recovery state when exiting from
|
|
L0s. */
|
|
#else
|
|
uint32_t n_fts : 8;
|
|
uint32_t le : 9;
|
|
uint32_t dsc : 1;
|
|
uint32_t cpyts : 1;
|
|
uint32_t ctcrb : 1;
|
|
uint32_t s_d_e : 1;
|
|
uint32_t reserved_21_31 : 11;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg515_s cn63xx;
|
|
struct cvmx_pcieepx_cfg515_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg515 cvmx_pcieepx_cfg515_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg516
|
|
*
|
|
* PCIE_CFG516 = Five hundred seventeenth 32-bits of PCIE type 0 config space
|
|
* (PHY Status Register)
|
|
*/
|
|
union cvmx_pcieepx_cfg516
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg516_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t phy_stat : 32; /**< PHY Status */
|
|
#else
|
|
uint32_t phy_stat : 32;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg516_s cn52xx;
|
|
struct cvmx_pcieepx_cfg516_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg516_s cn56xx;
|
|
struct cvmx_pcieepx_cfg516_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg516_s cn63xx;
|
|
struct cvmx_pcieepx_cfg516_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg516 cvmx_pcieepx_cfg516_t;
|
|
|
|
/**
|
|
* cvmx_pcieep#_cfg517
|
|
*
|
|
* PCIE_CFG517 = Five hundred eighteenth 32-bits of PCIE type 0 config space
|
|
* (PHY Control Register)
|
|
*/
|
|
union cvmx_pcieepx_cfg517
|
|
{
|
|
uint32_t u32;
|
|
struct cvmx_pcieepx_cfg517_s
|
|
{
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
uint32_t phy_ctrl : 32; /**< PHY Control */
|
|
#else
|
|
uint32_t phy_ctrl : 32;
|
|
#endif
|
|
} s;
|
|
struct cvmx_pcieepx_cfg517_s cn52xx;
|
|
struct cvmx_pcieepx_cfg517_s cn52xxp1;
|
|
struct cvmx_pcieepx_cfg517_s cn56xx;
|
|
struct cvmx_pcieepx_cfg517_s cn56xxp1;
|
|
struct cvmx_pcieepx_cfg517_s cn63xx;
|
|
struct cvmx_pcieepx_cfg517_s cn63xxp1;
|
|
};
|
|
typedef union cvmx_pcieepx_cfg517 cvmx_pcieepx_cfg517_t;
|
|
|
|
#endif
|