dc4ee6ca91
make use of it where possible. This primarily brings in support for newer hardware, and FreeBSD is not yet able to support the abundance of IRQs on new hardware and many features in the Ethernet driver. Because of the changes to IRQs in the Simple Executive, we have to maintain our own list of Octeon IRQs now, which probably can be pared-down and be specific to the CIU interrupt unit soon, and when other interrupt mechanisms are added they can maintain their own definitions. Remove unmasking of interrupts from within the UART device now that the function used is no longer present in the Simple Executive. The unmasking seems to have been gratuitous as this is more properly handled by the buses above the UART device, and seems to work on that basis.
690 lines
26 KiB
C
690 lines
26 KiB
C
/***********************license start***************
|
|
* Copyright (c) 2003-2012 Cavium Inc. (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 Inc. 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 INC. 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-eoi-defs.h
|
|
*
|
|
* Configuration and status register (CSR) type definitions for
|
|
* Octeon eoi.
|
|
*
|
|
* This file is auto generated. Do not edit.
|
|
*
|
|
* <hr>$Revision: 69515 $<hr>
|
|
*
|
|
*/
|
|
#ifndef __CVMX_EOI_DEFS_H__
|
|
#define __CVMX_EOI_DEFS_H__
|
|
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
#define CVMX_EOI_BIST_CTL_STA CVMX_EOI_BIST_CTL_STA_FUNC()
|
|
static inline uint64_t CVMX_EOI_BIST_CTL_STA_FUNC(void)
|
|
{
|
|
if (!(OCTEON_IS_MODEL(OCTEON_CNF71XX)))
|
|
cvmx_warn("CVMX_EOI_BIST_CTL_STA not supported on this chip\n");
|
|
return CVMX_ADD_IO_SEG(0x0001180013000118ull);
|
|
}
|
|
#else
|
|
#define CVMX_EOI_BIST_CTL_STA (CVMX_ADD_IO_SEG(0x0001180013000118ull))
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
#define CVMX_EOI_CTL_STA CVMX_EOI_CTL_STA_FUNC()
|
|
static inline uint64_t CVMX_EOI_CTL_STA_FUNC(void)
|
|
{
|
|
if (!(OCTEON_IS_MODEL(OCTEON_CNF71XX)))
|
|
cvmx_warn("CVMX_EOI_CTL_STA not supported on this chip\n");
|
|
return CVMX_ADD_IO_SEG(0x0001180013000000ull);
|
|
}
|
|
#else
|
|
#define CVMX_EOI_CTL_STA (CVMX_ADD_IO_SEG(0x0001180013000000ull))
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
#define CVMX_EOI_DEF_STA0 CVMX_EOI_DEF_STA0_FUNC()
|
|
static inline uint64_t CVMX_EOI_DEF_STA0_FUNC(void)
|
|
{
|
|
if (!(OCTEON_IS_MODEL(OCTEON_CNF71XX)))
|
|
cvmx_warn("CVMX_EOI_DEF_STA0 not supported on this chip\n");
|
|
return CVMX_ADD_IO_SEG(0x0001180013000020ull);
|
|
}
|
|
#else
|
|
#define CVMX_EOI_DEF_STA0 (CVMX_ADD_IO_SEG(0x0001180013000020ull))
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
#define CVMX_EOI_DEF_STA1 CVMX_EOI_DEF_STA1_FUNC()
|
|
static inline uint64_t CVMX_EOI_DEF_STA1_FUNC(void)
|
|
{
|
|
if (!(OCTEON_IS_MODEL(OCTEON_CNF71XX)))
|
|
cvmx_warn("CVMX_EOI_DEF_STA1 not supported on this chip\n");
|
|
return CVMX_ADD_IO_SEG(0x0001180013000028ull);
|
|
}
|
|
#else
|
|
#define CVMX_EOI_DEF_STA1 (CVMX_ADD_IO_SEG(0x0001180013000028ull))
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
#define CVMX_EOI_DEF_STA2 CVMX_EOI_DEF_STA2_FUNC()
|
|
static inline uint64_t CVMX_EOI_DEF_STA2_FUNC(void)
|
|
{
|
|
if (!(OCTEON_IS_MODEL(OCTEON_CNF71XX)))
|
|
cvmx_warn("CVMX_EOI_DEF_STA2 not supported on this chip\n");
|
|
return CVMX_ADD_IO_SEG(0x0001180013000030ull);
|
|
}
|
|
#else
|
|
#define CVMX_EOI_DEF_STA2 (CVMX_ADD_IO_SEG(0x0001180013000030ull))
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
#define CVMX_EOI_ECC_CTL CVMX_EOI_ECC_CTL_FUNC()
|
|
static inline uint64_t CVMX_EOI_ECC_CTL_FUNC(void)
|
|
{
|
|
if (!(OCTEON_IS_MODEL(OCTEON_CNF71XX)))
|
|
cvmx_warn("CVMX_EOI_ECC_CTL not supported on this chip\n");
|
|
return CVMX_ADD_IO_SEG(0x0001180013000110ull);
|
|
}
|
|
#else
|
|
#define CVMX_EOI_ECC_CTL (CVMX_ADD_IO_SEG(0x0001180013000110ull))
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
#define CVMX_EOI_ENDOR_BISTR_CTL_STA CVMX_EOI_ENDOR_BISTR_CTL_STA_FUNC()
|
|
static inline uint64_t CVMX_EOI_ENDOR_BISTR_CTL_STA_FUNC(void)
|
|
{
|
|
if (!(OCTEON_IS_MODEL(OCTEON_CNF71XX)))
|
|
cvmx_warn("CVMX_EOI_ENDOR_BISTR_CTL_STA not supported on this chip\n");
|
|
return CVMX_ADD_IO_SEG(0x0001180013000120ull);
|
|
}
|
|
#else
|
|
#define CVMX_EOI_ENDOR_BISTR_CTL_STA (CVMX_ADD_IO_SEG(0x0001180013000120ull))
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
#define CVMX_EOI_ENDOR_CLK_CTL CVMX_EOI_ENDOR_CLK_CTL_FUNC()
|
|
static inline uint64_t CVMX_EOI_ENDOR_CLK_CTL_FUNC(void)
|
|
{
|
|
if (!(OCTEON_IS_MODEL(OCTEON_CNF71XX)))
|
|
cvmx_warn("CVMX_EOI_ENDOR_CLK_CTL not supported on this chip\n");
|
|
return CVMX_ADD_IO_SEG(0x0001180013000038ull);
|
|
}
|
|
#else
|
|
#define CVMX_EOI_ENDOR_CLK_CTL (CVMX_ADD_IO_SEG(0x0001180013000038ull))
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
#define CVMX_EOI_ENDOR_CTL CVMX_EOI_ENDOR_CTL_FUNC()
|
|
static inline uint64_t CVMX_EOI_ENDOR_CTL_FUNC(void)
|
|
{
|
|
if (!(OCTEON_IS_MODEL(OCTEON_CNF71XX)))
|
|
cvmx_warn("CVMX_EOI_ENDOR_CTL not supported on this chip\n");
|
|
return CVMX_ADD_IO_SEG(0x0001180013000100ull);
|
|
}
|
|
#else
|
|
#define CVMX_EOI_ENDOR_CTL (CVMX_ADD_IO_SEG(0x0001180013000100ull))
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
#define CVMX_EOI_INT_ENA CVMX_EOI_INT_ENA_FUNC()
|
|
static inline uint64_t CVMX_EOI_INT_ENA_FUNC(void)
|
|
{
|
|
if (!(OCTEON_IS_MODEL(OCTEON_CNF71XX)))
|
|
cvmx_warn("CVMX_EOI_INT_ENA not supported on this chip\n");
|
|
return CVMX_ADD_IO_SEG(0x0001180013000010ull);
|
|
}
|
|
#else
|
|
#define CVMX_EOI_INT_ENA (CVMX_ADD_IO_SEG(0x0001180013000010ull))
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
#define CVMX_EOI_INT_STA CVMX_EOI_INT_STA_FUNC()
|
|
static inline uint64_t CVMX_EOI_INT_STA_FUNC(void)
|
|
{
|
|
if (!(OCTEON_IS_MODEL(OCTEON_CNF71XX)))
|
|
cvmx_warn("CVMX_EOI_INT_STA not supported on this chip\n");
|
|
return CVMX_ADD_IO_SEG(0x0001180013000008ull);
|
|
}
|
|
#else
|
|
#define CVMX_EOI_INT_STA (CVMX_ADD_IO_SEG(0x0001180013000008ull))
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
#define CVMX_EOI_IO_DRV CVMX_EOI_IO_DRV_FUNC()
|
|
static inline uint64_t CVMX_EOI_IO_DRV_FUNC(void)
|
|
{
|
|
if (!(OCTEON_IS_MODEL(OCTEON_CNF71XX)))
|
|
cvmx_warn("CVMX_EOI_IO_DRV not supported on this chip\n");
|
|
return CVMX_ADD_IO_SEG(0x0001180013000018ull);
|
|
}
|
|
#else
|
|
#define CVMX_EOI_IO_DRV (CVMX_ADD_IO_SEG(0x0001180013000018ull))
|
|
#endif
|
|
#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
|
|
#define CVMX_EOI_THROTTLE_CTL CVMX_EOI_THROTTLE_CTL_FUNC()
|
|
static inline uint64_t CVMX_EOI_THROTTLE_CTL_FUNC(void)
|
|
{
|
|
if (!(OCTEON_IS_MODEL(OCTEON_CNF71XX)))
|
|
cvmx_warn("CVMX_EOI_THROTTLE_CTL not supported on this chip\n");
|
|
return CVMX_ADD_IO_SEG(0x0001180013000108ull);
|
|
}
|
|
#else
|
|
#define CVMX_EOI_THROTTLE_CTL (CVMX_ADD_IO_SEG(0x0001180013000108ull))
|
|
#endif
|
|
|
|
/**
|
|
* cvmx_eoi_bist_ctl_sta
|
|
*
|
|
* EOI_BIST_CTL_STA = EOI BIST Status Register
|
|
*
|
|
* Description:
|
|
* This register control EOI memory BIST and contains the bist result of EOI memories.
|
|
*/
|
|
union cvmx_eoi_bist_ctl_sta {
|
|
uint64_t u64;
|
|
struct cvmx_eoi_bist_ctl_sta_s {
|
|
#ifdef __BIG_ENDIAN_BITFIELD
|
|
uint64_t reserved_18_63 : 46;
|
|
uint64_t clear_bist : 1; /**< Clear BIST on the HCLK memories */
|
|
uint64_t start_bist : 1; /**< Starts BIST on the HCLK memories during 0-to-1
|
|
transition. */
|
|
uint64_t reserved_3_15 : 13;
|
|
uint64_t stdf : 1; /**< STDF Bist Status. */
|
|
uint64_t ppaf : 1; /**< PPAF Bist Status. */
|
|
uint64_t lddf : 1; /**< LDDF Bist Status. */
|
|
#else
|
|
uint64_t lddf : 1;
|
|
uint64_t ppaf : 1;
|
|
uint64_t stdf : 1;
|
|
uint64_t reserved_3_15 : 13;
|
|
uint64_t start_bist : 1;
|
|
uint64_t clear_bist : 1;
|
|
uint64_t reserved_18_63 : 46;
|
|
#endif
|
|
} s;
|
|
struct cvmx_eoi_bist_ctl_sta_s cnf71xx;
|
|
};
|
|
typedef union cvmx_eoi_bist_ctl_sta cvmx_eoi_bist_ctl_sta_t;
|
|
|
|
/**
|
|
* cvmx_eoi_ctl_sta
|
|
*
|
|
* EOI_CTL_STA = EOI Configure Control Reigster
|
|
* This register configures EOI.
|
|
*/
|
|
union cvmx_eoi_ctl_sta {
|
|
uint64_t u64;
|
|
struct cvmx_eoi_ctl_sta_s {
|
|
#ifdef __BIG_ENDIAN_BITFIELD
|
|
uint64_t reserved_13_63 : 51;
|
|
uint64_t ppaf_wm : 5; /**< Number of entries when PP Access FIFO will assert
|
|
full (back pressure) */
|
|
uint64_t reserved_5_7 : 3;
|
|
uint64_t busy : 1; /**< 1: EOI is busy; 0: EOI is idle */
|
|
uint64_t rwam : 2; /**< Rread Write Aribitration Mode:
|
|
- 10: Reads have higher priority
|
|
- 01: Writes have higher priority
|
|
00,11: Round-Robin between Reads and Writes */
|
|
uint64_t ena : 1; /**< When reset, all the inbound DMA accesses will be
|
|
drop and all the outbound read response and write
|
|
commits will be drop. It must be set to 1'b1 for
|
|
normal access. */
|
|
uint64_t reset : 1; /**< EOI block Software Reset. */
|
|
#else
|
|
uint64_t reset : 1;
|
|
uint64_t ena : 1;
|
|
uint64_t rwam : 2;
|
|
uint64_t busy : 1;
|
|
uint64_t reserved_5_7 : 3;
|
|
uint64_t ppaf_wm : 5;
|
|
uint64_t reserved_13_63 : 51;
|
|
#endif
|
|
} s;
|
|
struct cvmx_eoi_ctl_sta_s cnf71xx;
|
|
};
|
|
typedef union cvmx_eoi_ctl_sta cvmx_eoi_ctl_sta_t;
|
|
|
|
/**
|
|
* cvmx_eoi_def_sta0
|
|
*
|
|
* Note: Working settings tabulated for each corner.
|
|
* ================================
|
|
* Corner pctl nctl
|
|
* ===============================
|
|
* 1 26 22
|
|
* 2 30 28
|
|
* 3 32 31
|
|
* 4 23 19
|
|
* 5 27 24
|
|
* 6 29 27
|
|
* 7 21 17
|
|
* 8 25 22
|
|
* 9 27 24
|
|
* 10 29 24
|
|
* 11 34 31
|
|
* 12 36 35
|
|
* 13 26 21
|
|
* 14 31 27
|
|
* 15 33 30
|
|
* 16 23 18
|
|
* 17 28 24
|
|
* 18 30 27
|
|
* 19 21 17
|
|
* 20 27 25
|
|
* 21 29 28
|
|
* 22 21 17
|
|
* 23 25 22
|
|
* 24 27 25
|
|
* 25 19 15
|
|
* 26 23 20
|
|
* 27 25 22
|
|
* 28 24 24
|
|
* 29 28 31
|
|
* 30 30 35
|
|
* 31 21 21
|
|
* 32 25 27
|
|
* 33 27 30
|
|
* 34 19 18
|
|
* 35 23 24
|
|
* 36 25 27
|
|
* 37 29 19
|
|
* 38 33 25
|
|
* 39 36 28
|
|
* 40 25 17
|
|
* 41 30 22
|
|
* 42 32 25
|
|
* 43 23 15
|
|
* 44 27 20
|
|
* 45 29 22
|
|
* ===============================
|
|
*
|
|
* EOI_DEF_STA0 = EOI Defect Status Register 0
|
|
*
|
|
* Register to hold repairout 0/1/2
|
|
*/
|
|
union cvmx_eoi_def_sta0 {
|
|
uint64_t u64;
|
|
struct cvmx_eoi_def_sta0_s {
|
|
#ifdef __BIG_ENDIAN_BITFIELD
|
|
uint64_t reserved_54_63 : 10;
|
|
uint64_t rout2 : 18; /**< Repairout2 */
|
|
uint64_t rout1 : 18; /**< Repairout1 */
|
|
uint64_t rout0 : 18; /**< Repairout0 */
|
|
#else
|
|
uint64_t rout0 : 18;
|
|
uint64_t rout1 : 18;
|
|
uint64_t rout2 : 18;
|
|
uint64_t reserved_54_63 : 10;
|
|
#endif
|
|
} s;
|
|
struct cvmx_eoi_def_sta0_s cnf71xx;
|
|
};
|
|
typedef union cvmx_eoi_def_sta0 cvmx_eoi_def_sta0_t;
|
|
|
|
/**
|
|
* cvmx_eoi_def_sta1
|
|
*
|
|
* EOI_DEF_STA1 = EOI Defect Status Register 1
|
|
*
|
|
* Register to hold repairout 3/4/5
|
|
*/
|
|
union cvmx_eoi_def_sta1 {
|
|
uint64_t u64;
|
|
struct cvmx_eoi_def_sta1_s {
|
|
#ifdef __BIG_ENDIAN_BITFIELD
|
|
uint64_t reserved_54_63 : 10;
|
|
uint64_t rout5 : 18; /**< Repairout5 */
|
|
uint64_t rout4 : 18; /**< Repairout4 */
|
|
uint64_t rout3 : 18; /**< Repairout3 */
|
|
#else
|
|
uint64_t rout3 : 18;
|
|
uint64_t rout4 : 18;
|
|
uint64_t rout5 : 18;
|
|
uint64_t reserved_54_63 : 10;
|
|
#endif
|
|
} s;
|
|
struct cvmx_eoi_def_sta1_s cnf71xx;
|
|
};
|
|
typedef union cvmx_eoi_def_sta1 cvmx_eoi_def_sta1_t;
|
|
|
|
/**
|
|
* cvmx_eoi_def_sta2
|
|
*
|
|
* EOI_DEF_STA2 = EOI Defect Status Register 2
|
|
*
|
|
* Register to hold repairout 6 and toomanydefects.
|
|
*/
|
|
union cvmx_eoi_def_sta2 {
|
|
uint64_t u64;
|
|
struct cvmx_eoi_def_sta2_s {
|
|
#ifdef __BIG_ENDIAN_BITFIELD
|
|
uint64_t reserved_25_63 : 39;
|
|
uint64_t toomany : 1; /**< Toomanydefects */
|
|
uint64_t reserved_18_23 : 6;
|
|
uint64_t rout6 : 18; /**< Repairout6 */
|
|
#else
|
|
uint64_t rout6 : 18;
|
|
uint64_t reserved_18_23 : 6;
|
|
uint64_t toomany : 1;
|
|
uint64_t reserved_25_63 : 39;
|
|
#endif
|
|
} s;
|
|
struct cvmx_eoi_def_sta2_s cnf71xx;
|
|
};
|
|
typedef union cvmx_eoi_def_sta2 cvmx_eoi_def_sta2_t;
|
|
|
|
/**
|
|
* cvmx_eoi_ecc_ctl
|
|
*
|
|
* EOI_ECC_CTL = EOI ECC Control Register
|
|
*
|
|
* Description:
|
|
* This register enables ECC for each individual internal memory that requires ECC. For debug purpose, it can also
|
|
* control 1 or 2 bits be flipped in the ECC data.
|
|
*/
|
|
union cvmx_eoi_ecc_ctl {
|
|
uint64_t u64;
|
|
struct cvmx_eoi_ecc_ctl_s {
|
|
#ifdef __BIG_ENDIAN_BITFIELD
|
|
uint64_t reserved_3_63 : 61;
|
|
uint64_t rben : 1; /**< 1: ECC Enable for read buffer
|
|
- 0: ECC Enable for instruction buffer */
|
|
uint64_t rbsf : 2; /**< read buffer ecc syndrome flip
|
|
2'b00 : No Error Generation
|
|
2'b10, 2'b01: Flip 1 bit
|
|
2'b11 : Flip 2 bits */
|
|
#else
|
|
uint64_t rbsf : 2;
|
|
uint64_t rben : 1;
|
|
uint64_t reserved_3_63 : 61;
|
|
#endif
|
|
} s;
|
|
struct cvmx_eoi_ecc_ctl_s cnf71xx;
|
|
};
|
|
typedef union cvmx_eoi_ecc_ctl cvmx_eoi_ecc_ctl_t;
|
|
|
|
/**
|
|
* cvmx_eoi_endor_bistr_ctl_sta
|
|
*
|
|
* EOI_ENDOR_BISTR_CTL_STA = EOI BIST/BISR Control Status Register
|
|
*
|
|
* Description:
|
|
* This register the bist result of EOI memories.
|
|
*/
|
|
union cvmx_eoi_endor_bistr_ctl_sta {
|
|
uint64_t u64;
|
|
struct cvmx_eoi_endor_bistr_ctl_sta_s {
|
|
#ifdef __BIG_ENDIAN_BITFIELD
|
|
uint64_t reserved_10_63 : 54;
|
|
uint64_t bisr_done : 1; /**< Endor DSP Memroy Bisr Done Status: 1 - done;
|
|
0 - Not done. */
|
|
uint64_t failed : 1; /**< Bist/Bisr Status: 1 - failed; 0 - Not failed. */
|
|
uint64_t reserved_3_7 : 5;
|
|
uint64_t bisr_hr : 1; /**< BISR Hardrepair */
|
|
uint64_t bisr_dir : 1; /**< BISR Direction: 0 = input repair packets;
|
|
1 = output defect packets. */
|
|
uint64_t start_bist : 1; /**< Start Bist */
|
|
#else
|
|
uint64_t start_bist : 1;
|
|
uint64_t bisr_dir : 1;
|
|
uint64_t bisr_hr : 1;
|
|
uint64_t reserved_3_7 : 5;
|
|
uint64_t failed : 1;
|
|
uint64_t bisr_done : 1;
|
|
uint64_t reserved_10_63 : 54;
|
|
#endif
|
|
} s;
|
|
struct cvmx_eoi_endor_bistr_ctl_sta_s cnf71xx;
|
|
};
|
|
typedef union cvmx_eoi_endor_bistr_ctl_sta cvmx_eoi_endor_bistr_ctl_sta_t;
|
|
|
|
/**
|
|
* cvmx_eoi_endor_clk_ctl
|
|
*
|
|
* EOI_ENDOR_CLK_CTL = EOI Endor Clock Control
|
|
*
|
|
* Register control the generation of Endor DSP and HAB clocks.
|
|
*/
|
|
union cvmx_eoi_endor_clk_ctl {
|
|
uint64_t u64;
|
|
struct cvmx_eoi_endor_clk_ctl_s {
|
|
#ifdef __BIG_ENDIAN_BITFIELD
|
|
uint64_t reserved_28_63 : 36;
|
|
uint64_t habclk_sel : 1; /**< HAB CLK select
|
|
0x0: HAB CLK select from PHY_PLL output from HAB PS
|
|
0x1: HAB CLK select from DDR_PLL output from HAB PS */
|
|
uint64_t reserved_26_26 : 1;
|
|
uint64_t dsp_div_reset : 1; /**< DSP postscalar divider reset */
|
|
uint64_t dsp_ps_en : 3; /**< DSP postscalar divide ratio
|
|
Determines the DSP CK speed.
|
|
0x0 : Divide DSP PLL output by 1
|
|
0x1 : Divide DSP PLL output by 2
|
|
0x2 : Divide DSP PLL output by 3
|
|
0x3 : Divide DSP PLL output by 4
|
|
0x4 : Divide DSP PLL output by 6
|
|
0x5 : Divide DSP PLL output by 8
|
|
0x6 : Divide DSP PLL output by 12
|
|
0x7 : Divide DSP PLL output by 12
|
|
DSP_PS_EN is not used when DSP_DIV_RESET = 1 */
|
|
uint64_t hab_div_reset : 1; /**< HAB postscalar divider reset */
|
|
uint64_t hab_ps_en : 3; /**< HAB postscalar divide ratio
|
|
Determines the LMC CK speed.
|
|
0x0 : Divide HAB PLL output by 1
|
|
0x1 : Divide HAB PLL output by 2
|
|
0x2 : Divide HAB PLL output by 3
|
|
0x3 : Divide HAB PLL output by 4
|
|
0x4 : Divide HAB PLL output by 6
|
|
0x5 : Divide HAB PLL output by 8
|
|
0x6 : Divide HAB PLL output by 12
|
|
0x7 : Divide HAB PLL output by 12
|
|
HAB_PS_EN is not used when HAB_DIV_RESET = 1 */
|
|
uint64_t diffamp : 4; /**< PLL diffamp input transconductance */
|
|
uint64_t cps : 3; /**< PLL charge-pump current */
|
|
uint64_t cpb : 3; /**< PLL charge-pump current */
|
|
uint64_t reset_n : 1; /**< PLL reset */
|
|
uint64_t clkf : 7; /**< Multiply reference by CLKF
|
|
32 <= CLKF <= 64
|
|
PHY PLL frequency = 50 * CLKF
|
|
min = 1.6 GHz, max = 3.2 GHz */
|
|
#else
|
|
uint64_t clkf : 7;
|
|
uint64_t reset_n : 1;
|
|
uint64_t cpb : 3;
|
|
uint64_t cps : 3;
|
|
uint64_t diffamp : 4;
|
|
uint64_t hab_ps_en : 3;
|
|
uint64_t hab_div_reset : 1;
|
|
uint64_t dsp_ps_en : 3;
|
|
uint64_t dsp_div_reset : 1;
|
|
uint64_t reserved_26_26 : 1;
|
|
uint64_t habclk_sel : 1;
|
|
uint64_t reserved_28_63 : 36;
|
|
#endif
|
|
} s;
|
|
struct cvmx_eoi_endor_clk_ctl_s cnf71xx;
|
|
};
|
|
typedef union cvmx_eoi_endor_clk_ctl cvmx_eoi_endor_clk_ctl_t;
|
|
|
|
/**
|
|
* cvmx_eoi_endor_ctl
|
|
*
|
|
* EOI_ENDOR_CTL_STA = Endor Control Reigster
|
|
* This register controls Endor phy reset and access.
|
|
*/
|
|
union cvmx_eoi_endor_ctl {
|
|
uint64_t u64;
|
|
struct cvmx_eoi_endor_ctl_s {
|
|
#ifdef __BIG_ENDIAN_BITFIELD
|
|
uint64_t reserved_12_63 : 52;
|
|
uint64_t r_emod : 2; /**< Endian format for data read from the L2C.
|
|
IN: A-B-C-D-E-F-G-H
|
|
OUT0: A-B-C-D-E-F-G-H
|
|
OUT1: H-G-F-E-D-C-B-A
|
|
OUT2: D-C-B-A-H-G-F-E
|
|
OUT3: E-F-G-H-A-B-C-D */
|
|
uint64_t w_emod : 2; /**< Endian format for data written the L2C.
|
|
IN: A-B-C-D-E-F-G-H
|
|
OUT0: A-B-C-D-E-F-G-H
|
|
OUT1: H-G-F-E-D-C-B-A
|
|
OUT2: D-C-B-A-H-G-F-E
|
|
OUT3: E-F-G-H-A-B-C-D */
|
|
uint64_t inv_rsl_ra2 : 1; /**< Invert RSL CSR read address bit 2. */
|
|
uint64_t inv_rsl_wa2 : 1; /**< Invert RSL CSR write address bit 2. */
|
|
uint64_t inv_pp_ra2 : 1; /**< Invert PP CSR read address bit 2. */
|
|
uint64_t inv_pp_wa2 : 1; /**< Invert PP CSR write address bit 2. */
|
|
uint64_t reserved_1_3 : 3;
|
|
uint64_t reset : 1; /**< Endor block software reset. After hardware reset,
|
|
this bit is set to 1'b1 which put Endor into reset
|
|
state. Software must clear this bit to use Endor. */
|
|
#else
|
|
uint64_t reset : 1;
|
|
uint64_t reserved_1_3 : 3;
|
|
uint64_t inv_pp_wa2 : 1;
|
|
uint64_t inv_pp_ra2 : 1;
|
|
uint64_t inv_rsl_wa2 : 1;
|
|
uint64_t inv_rsl_ra2 : 1;
|
|
uint64_t w_emod : 2;
|
|
uint64_t r_emod : 2;
|
|
uint64_t reserved_12_63 : 52;
|
|
#endif
|
|
} s;
|
|
struct cvmx_eoi_endor_ctl_s cnf71xx;
|
|
};
|
|
typedef union cvmx_eoi_endor_ctl cvmx_eoi_endor_ctl_t;
|
|
|
|
/**
|
|
* cvmx_eoi_int_ena
|
|
*
|
|
* EOI_INT_ENA = EOI Interrupt Enable Register
|
|
*
|
|
* Register to enable individual interrupt source in corresponding to EOI_INT_STA
|
|
*/
|
|
union cvmx_eoi_int_ena {
|
|
uint64_t u64;
|
|
struct cvmx_eoi_int_ena_s {
|
|
#ifdef __BIG_ENDIAN_BITFIELD
|
|
uint64_t reserved_2_63 : 62;
|
|
uint64_t rb_dbe : 1; /**< Read Buffer ECC DBE */
|
|
uint64_t rb_sbe : 1; /**< Read Buffer ECC SBE */
|
|
#else
|
|
uint64_t rb_sbe : 1;
|
|
uint64_t rb_dbe : 1;
|
|
uint64_t reserved_2_63 : 62;
|
|
#endif
|
|
} s;
|
|
struct cvmx_eoi_int_ena_s cnf71xx;
|
|
};
|
|
typedef union cvmx_eoi_int_ena cvmx_eoi_int_ena_t;
|
|
|
|
/**
|
|
* cvmx_eoi_int_sta
|
|
*
|
|
* EOI_INT_STA = EOI Interrupt Status Register
|
|
*
|
|
* Summary of different bits of RSL interrupt status.
|
|
*/
|
|
union cvmx_eoi_int_sta {
|
|
uint64_t u64;
|
|
struct cvmx_eoi_int_sta_s {
|
|
#ifdef __BIG_ENDIAN_BITFIELD
|
|
uint64_t reserved_2_63 : 62;
|
|
uint64_t rb_dbe : 1; /**< Read Buffer ECC DBE */
|
|
uint64_t rb_sbe : 1; /**< Read Buffer ECC SBE */
|
|
#else
|
|
uint64_t rb_sbe : 1;
|
|
uint64_t rb_dbe : 1;
|
|
uint64_t reserved_2_63 : 62;
|
|
#endif
|
|
} s;
|
|
struct cvmx_eoi_int_sta_s cnf71xx;
|
|
};
|
|
typedef union cvmx_eoi_int_sta cvmx_eoi_int_sta_t;
|
|
|
|
/**
|
|
* cvmx_eoi_io_drv
|
|
*
|
|
* EOI_IO_DRV = EOI Endor IO Drive Control
|
|
*
|
|
* Register to control Endor Phy IOs
|
|
*/
|
|
union cvmx_eoi_io_drv {
|
|
uint64_t u64;
|
|
struct cvmx_eoi_io_drv_s {
|
|
#ifdef __BIG_ENDIAN_BITFIELD
|
|
uint64_t reserved_24_63 : 40;
|
|
uint64_t rfif_p : 6; /**< RFIF output driver P-Mos control */
|
|
uint64_t rfif_n : 6; /**< RFIF output driver N-Mos control */
|
|
uint64_t gpo_p : 6; /**< GPO output driver P-Mos control */
|
|
uint64_t gpo_n : 6; /**< GPO output driver N-Mos control */
|
|
#else
|
|
uint64_t gpo_n : 6;
|
|
uint64_t gpo_p : 6;
|
|
uint64_t rfif_n : 6;
|
|
uint64_t rfif_p : 6;
|
|
uint64_t reserved_24_63 : 40;
|
|
#endif
|
|
} s;
|
|
struct cvmx_eoi_io_drv_s cnf71xx;
|
|
};
|
|
typedef union cvmx_eoi_io_drv cvmx_eoi_io_drv_t;
|
|
|
|
/**
|
|
* cvmx_eoi_throttle_ctl
|
|
*
|
|
* EOI_THROTTLE_CTL = EOI THROTTLE Control Reigster
|
|
* This register controls number of outstanding EOI loads to L2C . It is in phy_clock domain.
|
|
*/
|
|
union cvmx_eoi_throttle_ctl {
|
|
uint64_t u64;
|
|
struct cvmx_eoi_throttle_ctl_s {
|
|
#ifdef __BIG_ENDIAN_BITFIELD
|
|
uint64_t reserved_21_63 : 43;
|
|
uint64_t std : 5; /**< Number of outstanding store data accepted by EOI on
|
|
AXI before backpressure ADMA. The value must be from
|
|
from 16 to 31 inclusively. */
|
|
uint64_t reserved_10_15 : 6;
|
|
uint64_t stc : 2; /**< Number of outstanding L2C store command accepted by
|
|
EOI on AXI before backpressure ADMA. The value must be
|
|
from 1 to 3 inclusively. */
|
|
uint64_t reserved_4_7 : 4;
|
|
uint64_t ldc : 4; /**< Number of outstanding L2C loads. The value must be
|
|
from 1 to 8 inclusively. */
|
|
#else
|
|
uint64_t ldc : 4;
|
|
uint64_t reserved_4_7 : 4;
|
|
uint64_t stc : 2;
|
|
uint64_t reserved_10_15 : 6;
|
|
uint64_t std : 5;
|
|
uint64_t reserved_21_63 : 43;
|
|
#endif
|
|
} s;
|
|
struct cvmx_eoi_throttle_ctl_s cnf71xx;
|
|
};
|
|
typedef union cvmx_eoi_throttle_ctl cvmx_eoi_throttle_ctl_t;
|
|
|
|
#endif
|