162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 262306a36Sopenharmony_ci/* Octeon CIU definitions 362306a36Sopenharmony_ci * 462306a36Sopenharmony_ci * Copyright (C) 2003-2018 Cavium, Inc. 562306a36Sopenharmony_ci */ 662306a36Sopenharmony_ci 762306a36Sopenharmony_ci#ifndef __CVMX_CIU_DEFS_H__ 862306a36Sopenharmony_ci#define __CVMX_CIU_DEFS_H__ 962306a36Sopenharmony_ci 1062306a36Sopenharmony_ci#include <asm/bitfield.h> 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_ci#define CVMX_CIU_ADDR(addr, coreid, coremask, offset) \ 1362306a36Sopenharmony_ci (CVMX_ADD_IO_SEG(0x0001070000000000ull + addr##ull) + \ 1462306a36Sopenharmony_ci (((coreid) & (coremask)) * offset)) 1562306a36Sopenharmony_ci 1662306a36Sopenharmony_ci#define CVMX_CIU_EN2_PPX_IP4(c) CVMX_CIU_ADDR(0xA400, c, 0x0F, 8) 1762306a36Sopenharmony_ci#define CVMX_CIU_EN2_PPX_IP4_W1C(c) CVMX_CIU_ADDR(0xCC00, c, 0x0F, 8) 1862306a36Sopenharmony_ci#define CVMX_CIU_EN2_PPX_IP4_W1S(c) CVMX_CIU_ADDR(0xAC00, c, 0x0F, 8) 1962306a36Sopenharmony_ci#define CVMX_CIU_FUSE CVMX_CIU_ADDR(0x0728, 0, 0x00, 0) 2062306a36Sopenharmony_ci#define CVMX_CIU_INT_SUM1 CVMX_CIU_ADDR(0x0108, 0, 0x00, 0) 2162306a36Sopenharmony_ci#define CVMX_CIU_INTX_EN0(c) CVMX_CIU_ADDR(0x0200, c, 0x3F, 16) 2262306a36Sopenharmony_ci#define CVMX_CIU_INTX_EN0_W1C(c) CVMX_CIU_ADDR(0x2200, c, 0x3F, 16) 2362306a36Sopenharmony_ci#define CVMX_CIU_INTX_EN0_W1S(c) CVMX_CIU_ADDR(0x6200, c, 0x3F, 16) 2462306a36Sopenharmony_ci#define CVMX_CIU_INTX_EN1(c) CVMX_CIU_ADDR(0x0208, c, 0x3F, 16) 2562306a36Sopenharmony_ci#define CVMX_CIU_INTX_EN1_W1C(c) CVMX_CIU_ADDR(0x2208, c, 0x3F, 16) 2662306a36Sopenharmony_ci#define CVMX_CIU_INTX_EN1_W1S(c) CVMX_CIU_ADDR(0x6208, c, 0x3F, 16) 2762306a36Sopenharmony_ci#define CVMX_CIU_INTX_SUM0(c) CVMX_CIU_ADDR(0x0000, c, 0x3F, 8) 2862306a36Sopenharmony_ci#define CVMX_CIU_NMI CVMX_CIU_ADDR(0x0718, 0, 0x00, 0) 2962306a36Sopenharmony_ci#define CVMX_CIU_PCI_INTA CVMX_CIU_ADDR(0x0750, 0, 0x00, 0) 3062306a36Sopenharmony_ci#define CVMX_CIU_PP_BIST_STAT CVMX_CIU_ADDR(0x07E0, 0, 0x00, 0) 3162306a36Sopenharmony_ci#define CVMX_CIU_PP_DBG CVMX_CIU_ADDR(0x0708, 0, 0x00, 0) 3262306a36Sopenharmony_ci#define CVMX_CIU_PP_RST CVMX_CIU_ADDR(0x0700, 0, 0x00, 0) 3362306a36Sopenharmony_ci#define CVMX_CIU_QLM0 CVMX_CIU_ADDR(0x0780, 0, 0x00, 0) 3462306a36Sopenharmony_ci#define CVMX_CIU_QLM1 CVMX_CIU_ADDR(0x0788, 0, 0x00, 0) 3562306a36Sopenharmony_ci#define CVMX_CIU_QLM_JTGC CVMX_CIU_ADDR(0x0768, 0, 0x00, 0) 3662306a36Sopenharmony_ci#define CVMX_CIU_QLM_JTGD CVMX_CIU_ADDR(0x0770, 0, 0x00, 0) 3762306a36Sopenharmony_ci#define CVMX_CIU_SOFT_BIST CVMX_CIU_ADDR(0x0738, 0, 0x00, 0) 3862306a36Sopenharmony_ci#define CVMX_CIU_SOFT_PRST1 CVMX_CIU_ADDR(0x0758, 0, 0x00, 0) 3962306a36Sopenharmony_ci#define CVMX_CIU_SOFT_PRST CVMX_CIU_ADDR(0x0748, 0, 0x00, 0) 4062306a36Sopenharmony_ci#define CVMX_CIU_SOFT_RST CVMX_CIU_ADDR(0x0740, 0, 0x00, 0) 4162306a36Sopenharmony_ci#define CVMX_CIU_SUM2_PPX_IP4(c) CVMX_CIU_ADDR(0x8C00, c, 0x0F, 8) 4262306a36Sopenharmony_ci#define CVMX_CIU_TIM_MULTI_CAST CVMX_CIU_ADDR(0xC200, 0, 0x00, 0) 4362306a36Sopenharmony_ci#define CVMX_CIU_TIMX(c) CVMX_CIU_ADDR(0x0480, c, 0x0F, 8) 4462306a36Sopenharmony_ci 4562306a36Sopenharmony_cistatic inline uint64_t CVMX_CIU_MBOX_CLRX(unsigned int coreid) 4662306a36Sopenharmony_ci{ 4762306a36Sopenharmony_ci if (cvmx_get_octeon_family() == (OCTEON_CN68XX & OCTEON_FAMILY_MASK)) 4862306a36Sopenharmony_ci return CVMX_CIU_ADDR(0x100100600, coreid, 0x0F, 8); 4962306a36Sopenharmony_ci else 5062306a36Sopenharmony_ci return CVMX_CIU_ADDR(0x000000680, coreid, 0x0F, 8); 5162306a36Sopenharmony_ci} 5262306a36Sopenharmony_ci 5362306a36Sopenharmony_cistatic inline uint64_t CVMX_CIU_MBOX_SETX(unsigned int coreid) 5462306a36Sopenharmony_ci{ 5562306a36Sopenharmony_ci if (cvmx_get_octeon_family() == (OCTEON_CN68XX & OCTEON_FAMILY_MASK)) 5662306a36Sopenharmony_ci return CVMX_CIU_ADDR(0x100100400, coreid, 0x0F, 8); 5762306a36Sopenharmony_ci else 5862306a36Sopenharmony_ci return CVMX_CIU_ADDR(0x000000600, coreid, 0x0F, 8); 5962306a36Sopenharmony_ci} 6062306a36Sopenharmony_ci 6162306a36Sopenharmony_cistatic inline uint64_t CVMX_CIU_PP_POKEX(unsigned int coreid) 6262306a36Sopenharmony_ci{ 6362306a36Sopenharmony_ci switch (cvmx_get_octeon_family()) { 6462306a36Sopenharmony_ci case OCTEON_CN68XX & OCTEON_FAMILY_MASK: 6562306a36Sopenharmony_ci return CVMX_CIU_ADDR(0x100100200, coreid, 0x0F, 8); 6662306a36Sopenharmony_ci case OCTEON_CNF75XX & OCTEON_FAMILY_MASK: 6762306a36Sopenharmony_ci case OCTEON_CN73XX & OCTEON_FAMILY_MASK: 6862306a36Sopenharmony_ci case OCTEON_CN78XX & OCTEON_FAMILY_MASK: 6962306a36Sopenharmony_ci return CVMX_CIU_ADDR(0x000030000, coreid, 0x0F, 8) - 7062306a36Sopenharmony_ci 0x60000000000ull; 7162306a36Sopenharmony_ci default: 7262306a36Sopenharmony_ci return CVMX_CIU_ADDR(0x000000580, coreid, 0x0F, 8); 7362306a36Sopenharmony_ci } 7462306a36Sopenharmony_ci} 7562306a36Sopenharmony_ci 7662306a36Sopenharmony_cistatic inline uint64_t CVMX_CIU_WDOGX(unsigned int coreid) 7762306a36Sopenharmony_ci{ 7862306a36Sopenharmony_ci switch (cvmx_get_octeon_family()) { 7962306a36Sopenharmony_ci case OCTEON_CN68XX & OCTEON_FAMILY_MASK: 8062306a36Sopenharmony_ci return CVMX_CIU_ADDR(0x100100000, coreid, 0x0F, 8); 8162306a36Sopenharmony_ci case OCTEON_CNF75XX & OCTEON_FAMILY_MASK: 8262306a36Sopenharmony_ci case OCTEON_CN73XX & OCTEON_FAMILY_MASK: 8362306a36Sopenharmony_ci case OCTEON_CN78XX & OCTEON_FAMILY_MASK: 8462306a36Sopenharmony_ci return CVMX_CIU_ADDR(0x000020000, coreid, 0x0F, 8) - 8562306a36Sopenharmony_ci 0x60000000000ull; 8662306a36Sopenharmony_ci default: 8762306a36Sopenharmony_ci return CVMX_CIU_ADDR(0x000000500, coreid, 0x0F, 8); 8862306a36Sopenharmony_ci } 8962306a36Sopenharmony_ci} 9062306a36Sopenharmony_ci 9162306a36Sopenharmony_ci 9262306a36Sopenharmony_ciunion cvmx_ciu_qlm { 9362306a36Sopenharmony_ci uint64_t u64; 9462306a36Sopenharmony_ci struct cvmx_ciu_qlm_s { 9562306a36Sopenharmony_ci __BITFIELD_FIELD(uint64_t g2bypass:1, 9662306a36Sopenharmony_ci __BITFIELD_FIELD(uint64_t reserved_53_62:10, 9762306a36Sopenharmony_ci __BITFIELD_FIELD(uint64_t g2deemph:5, 9862306a36Sopenharmony_ci __BITFIELD_FIELD(uint64_t reserved_45_47:3, 9962306a36Sopenharmony_ci __BITFIELD_FIELD(uint64_t g2margin:5, 10062306a36Sopenharmony_ci __BITFIELD_FIELD(uint64_t reserved_32_39:8, 10162306a36Sopenharmony_ci __BITFIELD_FIELD(uint64_t txbypass:1, 10262306a36Sopenharmony_ci __BITFIELD_FIELD(uint64_t reserved_21_30:10, 10362306a36Sopenharmony_ci __BITFIELD_FIELD(uint64_t txdeemph:5, 10462306a36Sopenharmony_ci __BITFIELD_FIELD(uint64_t reserved_13_15:3, 10562306a36Sopenharmony_ci __BITFIELD_FIELD(uint64_t txmargin:5, 10662306a36Sopenharmony_ci __BITFIELD_FIELD(uint64_t reserved_4_7:4, 10762306a36Sopenharmony_ci __BITFIELD_FIELD(uint64_t lane_en:4, 10862306a36Sopenharmony_ci ;))))))))))))) 10962306a36Sopenharmony_ci } s; 11062306a36Sopenharmony_ci}; 11162306a36Sopenharmony_ci 11262306a36Sopenharmony_ciunion cvmx_ciu_qlm_jtgc { 11362306a36Sopenharmony_ci uint64_t u64; 11462306a36Sopenharmony_ci struct cvmx_ciu_qlm_jtgc_s { 11562306a36Sopenharmony_ci __BITFIELD_FIELD(uint64_t reserved_17_63:47, 11662306a36Sopenharmony_ci __BITFIELD_FIELD(uint64_t bypass_ext:1, 11762306a36Sopenharmony_ci __BITFIELD_FIELD(uint64_t reserved_11_15:5, 11862306a36Sopenharmony_ci __BITFIELD_FIELD(uint64_t clk_div:3, 11962306a36Sopenharmony_ci __BITFIELD_FIELD(uint64_t reserved_7_7:1, 12062306a36Sopenharmony_ci __BITFIELD_FIELD(uint64_t mux_sel:3, 12162306a36Sopenharmony_ci __BITFIELD_FIELD(uint64_t bypass:4, 12262306a36Sopenharmony_ci ;))))))) 12362306a36Sopenharmony_ci } s; 12462306a36Sopenharmony_ci}; 12562306a36Sopenharmony_ci 12662306a36Sopenharmony_ciunion cvmx_ciu_qlm_jtgd { 12762306a36Sopenharmony_ci uint64_t u64; 12862306a36Sopenharmony_ci struct cvmx_ciu_qlm_jtgd_s { 12962306a36Sopenharmony_ci __BITFIELD_FIELD(uint64_t capture:1, 13062306a36Sopenharmony_ci __BITFIELD_FIELD(uint64_t shift:1, 13162306a36Sopenharmony_ci __BITFIELD_FIELD(uint64_t update:1, 13262306a36Sopenharmony_ci __BITFIELD_FIELD(uint64_t reserved_45_60:16, 13362306a36Sopenharmony_ci __BITFIELD_FIELD(uint64_t select:5, 13462306a36Sopenharmony_ci __BITFIELD_FIELD(uint64_t reserved_37_39:3, 13562306a36Sopenharmony_ci __BITFIELD_FIELD(uint64_t shft_cnt:5, 13662306a36Sopenharmony_ci __BITFIELD_FIELD(uint64_t shft_reg:32, 13762306a36Sopenharmony_ci ;)))))))) 13862306a36Sopenharmony_ci } s; 13962306a36Sopenharmony_ci}; 14062306a36Sopenharmony_ci 14162306a36Sopenharmony_ciunion cvmx_ciu_soft_prst { 14262306a36Sopenharmony_ci uint64_t u64; 14362306a36Sopenharmony_ci struct cvmx_ciu_soft_prst_s { 14462306a36Sopenharmony_ci __BITFIELD_FIELD(uint64_t reserved_3_63:61, 14562306a36Sopenharmony_ci __BITFIELD_FIELD(uint64_t host64:1, 14662306a36Sopenharmony_ci __BITFIELD_FIELD(uint64_t npi:1, 14762306a36Sopenharmony_ci __BITFIELD_FIELD(uint64_t soft_prst:1, 14862306a36Sopenharmony_ci ;)))) 14962306a36Sopenharmony_ci } s; 15062306a36Sopenharmony_ci}; 15162306a36Sopenharmony_ci 15262306a36Sopenharmony_ciunion cvmx_ciu_timx { 15362306a36Sopenharmony_ci uint64_t u64; 15462306a36Sopenharmony_ci struct cvmx_ciu_timx_s { 15562306a36Sopenharmony_ci __BITFIELD_FIELD(uint64_t reserved_37_63:27, 15662306a36Sopenharmony_ci __BITFIELD_FIELD(uint64_t one_shot:1, 15762306a36Sopenharmony_ci __BITFIELD_FIELD(uint64_t len:36, 15862306a36Sopenharmony_ci ;))) 15962306a36Sopenharmony_ci } s; 16062306a36Sopenharmony_ci}; 16162306a36Sopenharmony_ci 16262306a36Sopenharmony_ciunion cvmx_ciu_wdogx { 16362306a36Sopenharmony_ci uint64_t u64; 16462306a36Sopenharmony_ci struct cvmx_ciu_wdogx_s { 16562306a36Sopenharmony_ci __BITFIELD_FIELD(uint64_t reserved_46_63:18, 16662306a36Sopenharmony_ci __BITFIELD_FIELD(uint64_t gstopen:1, 16762306a36Sopenharmony_ci __BITFIELD_FIELD(uint64_t dstop:1, 16862306a36Sopenharmony_ci __BITFIELD_FIELD(uint64_t cnt:24, 16962306a36Sopenharmony_ci __BITFIELD_FIELD(uint64_t len:16, 17062306a36Sopenharmony_ci __BITFIELD_FIELD(uint64_t state:2, 17162306a36Sopenharmony_ci __BITFIELD_FIELD(uint64_t mode:2, 17262306a36Sopenharmony_ci ;))))))) 17362306a36Sopenharmony_ci } s; 17462306a36Sopenharmony_ci}; 17562306a36Sopenharmony_ci 17662306a36Sopenharmony_ci#endif /* __CVMX_CIU_DEFS_H__ */ 177