19609e3e9SSteven J. Hill /* SPDX-License-Identifier: GPL-2.0 */
29609e3e9SSteven J. Hill /* Octeon CIU definitions
354293ec3SDavid Daney *
49609e3e9SSteven J. Hill * Copyright (C) 2003-2018 Cavium, Inc.
59609e3e9SSteven J. Hill */
654293ec3SDavid Daney
754293ec3SDavid Daney #ifndef __CVMX_CIU_DEFS_H__
854293ec3SDavid Daney #define __CVMX_CIU_DEFS_H__
954293ec3SDavid Daney
109609e3e9SSteven J. Hill #include <asm/bitfield.h>
119609e3e9SSteven J. Hill
12a730c7cdSSteven J. Hill #define CVMX_CIU_ADDR(addr, coreid, coremask, offset) \
13a730c7cdSSteven J. Hill (CVMX_ADD_IO_SEG(0x0001070000000000ull + addr##ull) + \
14a730c7cdSSteven J. Hill (((coreid) & (coremask)) * offset))
15a730c7cdSSteven J. Hill
16a730c7cdSSteven J. Hill #define CVMX_CIU_EN2_PPX_IP4(c) CVMX_CIU_ADDR(0xA400, c, 0x0F, 8)
17a730c7cdSSteven J. Hill #define CVMX_CIU_EN2_PPX_IP4_W1C(c) CVMX_CIU_ADDR(0xCC00, c, 0x0F, 8)
18a730c7cdSSteven J. Hill #define CVMX_CIU_EN2_PPX_IP4_W1S(c) CVMX_CIU_ADDR(0xAC00, c, 0x0F, 8)
19a730c7cdSSteven J. Hill #define CVMX_CIU_FUSE CVMX_CIU_ADDR(0x0728, 0, 0x00, 0)
20a730c7cdSSteven J. Hill #define CVMX_CIU_INT_SUM1 CVMX_CIU_ADDR(0x0108, 0, 0x00, 0)
21a730c7cdSSteven J. Hill #define CVMX_CIU_INTX_EN0(c) CVMX_CIU_ADDR(0x0200, c, 0x3F, 16)
22a730c7cdSSteven J. Hill #define CVMX_CIU_INTX_EN0_W1C(c) CVMX_CIU_ADDR(0x2200, c, 0x3F, 16)
23a730c7cdSSteven J. Hill #define CVMX_CIU_INTX_EN0_W1S(c) CVMX_CIU_ADDR(0x6200, c, 0x3F, 16)
24a730c7cdSSteven J. Hill #define CVMX_CIU_INTX_EN1(c) CVMX_CIU_ADDR(0x0208, c, 0x3F, 16)
25a730c7cdSSteven J. Hill #define CVMX_CIU_INTX_EN1_W1C(c) CVMX_CIU_ADDR(0x2208, c, 0x3F, 16)
26a730c7cdSSteven J. Hill #define CVMX_CIU_INTX_EN1_W1S(c) CVMX_CIU_ADDR(0x6208, c, 0x3F, 16)
27a730c7cdSSteven J. Hill #define CVMX_CIU_INTX_SUM0(c) CVMX_CIU_ADDR(0x0000, c, 0x3F, 8)
28a730c7cdSSteven J. Hill #define CVMX_CIU_NMI CVMX_CIU_ADDR(0x0718, 0, 0x00, 0)
29a730c7cdSSteven J. Hill #define CVMX_CIU_PCI_INTA CVMX_CIU_ADDR(0x0750, 0, 0x00, 0)
30a730c7cdSSteven J. Hill #define CVMX_CIU_PP_BIST_STAT CVMX_CIU_ADDR(0x07E0, 0, 0x00, 0)
31a730c7cdSSteven J. Hill #define CVMX_CIU_PP_DBG CVMX_CIU_ADDR(0x0708, 0, 0x00, 0)
32a730c7cdSSteven J. Hill #define CVMX_CIU_PP_RST CVMX_CIU_ADDR(0x0700, 0, 0x00, 0)
33a730c7cdSSteven J. Hill #define CVMX_CIU_QLM0 CVMX_CIU_ADDR(0x0780, 0, 0x00, 0)
34a730c7cdSSteven J. Hill #define CVMX_CIU_QLM1 CVMX_CIU_ADDR(0x0788, 0, 0x00, 0)
35a730c7cdSSteven J. Hill #define CVMX_CIU_QLM_JTGC CVMX_CIU_ADDR(0x0768, 0, 0x00, 0)
36a730c7cdSSteven J. Hill #define CVMX_CIU_QLM_JTGD CVMX_CIU_ADDR(0x0770, 0, 0x00, 0)
37a730c7cdSSteven J. Hill #define CVMX_CIU_SOFT_BIST CVMX_CIU_ADDR(0x0738, 0, 0x00, 0)
38a730c7cdSSteven J. Hill #define CVMX_CIU_SOFT_PRST1 CVMX_CIU_ADDR(0x0758, 0, 0x00, 0)
39a730c7cdSSteven J. Hill #define CVMX_CIU_SOFT_PRST CVMX_CIU_ADDR(0x0748, 0, 0x00, 0)
40a730c7cdSSteven J. Hill #define CVMX_CIU_SOFT_RST CVMX_CIU_ADDR(0x0740, 0, 0x00, 0)
41a730c7cdSSteven J. Hill #define CVMX_CIU_SUM2_PPX_IP4(c) CVMX_CIU_ADDR(0x8C00, c, 0x0F, 8)
42a730c7cdSSteven J. Hill #define CVMX_CIU_TIM_MULTI_CAST CVMX_CIU_ADDR(0xC200, 0, 0x00, 0)
43a730c7cdSSteven J. Hill #define CVMX_CIU_TIMX(c) CVMX_CIU_ADDR(0x0480, c, 0x0F, 8)
44c39f8ecfSSteven J. Hill
CVMX_CIU_MBOX_CLRX(unsigned int coreid)45cfe18244SSteven J. Hill static inline uint64_t CVMX_CIU_MBOX_CLRX(unsigned int coreid)
46c5aa59e8SDavid Daney {
47cfe18244SSteven J. Hill if (cvmx_get_octeon_family() == (OCTEON_CN68XX & OCTEON_FAMILY_MASK))
48cfe18244SSteven J. Hill return CVMX_CIU_ADDR(0x100100600, coreid, 0x0F, 8);
49cfe18244SSteven J. Hill else
50cfe18244SSteven J. Hill return CVMX_CIU_ADDR(0x000000680, coreid, 0x0F, 8);
51c5aa59e8SDavid Daney }
52c5aa59e8SDavid Daney
CVMX_CIU_MBOX_SETX(unsigned int coreid)53cfe18244SSteven J. Hill static inline uint64_t CVMX_CIU_MBOX_SETX(unsigned int coreid)
54c5aa59e8SDavid Daney {
55cfe18244SSteven J. Hill if (cvmx_get_octeon_family() == (OCTEON_CN68XX & OCTEON_FAMILY_MASK))
56cfe18244SSteven J. Hill return CVMX_CIU_ADDR(0x100100400, coreid, 0x0F, 8);
57cfe18244SSteven J. Hill else
58cfe18244SSteven J. Hill return CVMX_CIU_ADDR(0x000000600, coreid, 0x0F, 8);
59c5aa59e8SDavid Daney }
60c5aa59e8SDavid Daney
CVMX_CIU_PP_POKEX(unsigned int coreid)61cfe18244SSteven J. Hill static inline uint64_t CVMX_CIU_PP_POKEX(unsigned int coreid)
62c5aa59e8SDavid Daney {
63c5aa59e8SDavid Daney switch (cvmx_get_octeon_family()) {
64c5aa59e8SDavid Daney case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
65cfe18244SSteven J. Hill return CVMX_CIU_ADDR(0x100100200, coreid, 0x0F, 8);
661fb6e539SSteven J. Hill case OCTEON_CNF75XX & OCTEON_FAMILY_MASK:
671fb6e539SSteven J. Hill case OCTEON_CN73XX & OCTEON_FAMILY_MASK:
681fb6e539SSteven J. Hill case OCTEON_CN78XX & OCTEON_FAMILY_MASK:
69cfe18244SSteven J. Hill return CVMX_CIU_ADDR(0x000030000, coreid, 0x0F, 8) -
70cfe18244SSteven J. Hill 0x60000000000ull;
71cfe18244SSteven J. Hill default:
72cfe18244SSteven J. Hill return CVMX_CIU_ADDR(0x000000580, coreid, 0x0F, 8);
73c5aa59e8SDavid Daney }
74c5aa59e8SDavid Daney }
75c5aa59e8SDavid Daney
CVMX_CIU_WDOGX(unsigned int coreid)76cfe18244SSteven J. Hill static inline uint64_t CVMX_CIU_WDOGX(unsigned int coreid)
77c5aa59e8SDavid Daney {
78c5aa59e8SDavid Daney switch (cvmx_get_octeon_family()) {
79c5aa59e8SDavid Daney case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
80cfe18244SSteven J. Hill return CVMX_CIU_ADDR(0x100100000, coreid, 0x0F, 8);
811fb6e539SSteven J. Hill case OCTEON_CNF75XX & OCTEON_FAMILY_MASK:
821fb6e539SSteven J. Hill case OCTEON_CN73XX & OCTEON_FAMILY_MASK:
831fb6e539SSteven J. Hill case OCTEON_CN78XX & OCTEON_FAMILY_MASK:
84cfe18244SSteven J. Hill return CVMX_CIU_ADDR(0x000020000, coreid, 0x0F, 8) -
85cfe18244SSteven J. Hill 0x60000000000ull;
86cfe18244SSteven J. Hill default:
87cfe18244SSteven J. Hill return CVMX_CIU_ADDR(0x000000500, coreid, 0x0F, 8);
88c5aa59e8SDavid Daney }
89c5aa59e8SDavid Daney }
9054293ec3SDavid Daney
919609e3e9SSteven J. Hill
92769f4372SSteven J. Hill union cvmx_ciu_qlm {
93aa32a955SDavid Daney uint64_t u64;
94769f4372SSteven J. Hill struct cvmx_ciu_qlm_s {
959609e3e9SSteven J. Hill __BITFIELD_FIELD(uint64_t g2bypass:1,
969609e3e9SSteven J. Hill __BITFIELD_FIELD(uint64_t reserved_53_62:10,
979609e3e9SSteven J. Hill __BITFIELD_FIELD(uint64_t g2deemph:5,
989609e3e9SSteven J. Hill __BITFIELD_FIELD(uint64_t reserved_45_47:3,
999609e3e9SSteven J. Hill __BITFIELD_FIELD(uint64_t g2margin:5,
1009609e3e9SSteven J. Hill __BITFIELD_FIELD(uint64_t reserved_32_39:8,
1019609e3e9SSteven J. Hill __BITFIELD_FIELD(uint64_t txbypass:1,
1029609e3e9SSteven J. Hill __BITFIELD_FIELD(uint64_t reserved_21_30:10,
1039609e3e9SSteven J. Hill __BITFIELD_FIELD(uint64_t txdeemph:5,
1049609e3e9SSteven J. Hill __BITFIELD_FIELD(uint64_t reserved_13_15:3,
1059609e3e9SSteven J. Hill __BITFIELD_FIELD(uint64_t txmargin:5,
1069609e3e9SSteven J. Hill __BITFIELD_FIELD(uint64_t reserved_4_7:4,
1079609e3e9SSteven J. Hill __BITFIELD_FIELD(uint64_t lane_en:4,
1089609e3e9SSteven J. Hill ;)))))))))))))
109aa32a955SDavid Daney } s;
11054293ec3SDavid Daney };
11154293ec3SDavid Daney
11254293ec3SDavid Daney union cvmx_ciu_qlm_jtgc {
11354293ec3SDavid Daney uint64_t u64;
11454293ec3SDavid Daney struct cvmx_ciu_qlm_jtgc_s {
1159609e3e9SSteven J. Hill __BITFIELD_FIELD(uint64_t reserved_17_63:47,
1169609e3e9SSteven J. Hill __BITFIELD_FIELD(uint64_t bypass_ext:1,
1179609e3e9SSteven J. Hill __BITFIELD_FIELD(uint64_t reserved_11_15:5,
1189609e3e9SSteven J. Hill __BITFIELD_FIELD(uint64_t clk_div:3,
1199609e3e9SSteven J. Hill __BITFIELD_FIELD(uint64_t reserved_7_7:1,
1209609e3e9SSteven J. Hill __BITFIELD_FIELD(uint64_t mux_sel:3,
1219609e3e9SSteven J. Hill __BITFIELD_FIELD(uint64_t bypass:4,
1229609e3e9SSteven J. Hill ;)))))))
12354293ec3SDavid Daney } s;
12454293ec3SDavid Daney };
12554293ec3SDavid Daney
12654293ec3SDavid Daney union cvmx_ciu_qlm_jtgd {
12754293ec3SDavid Daney uint64_t u64;
12854293ec3SDavid Daney struct cvmx_ciu_qlm_jtgd_s {
1299609e3e9SSteven J. Hill __BITFIELD_FIELD(uint64_t capture:1,
1309609e3e9SSteven J. Hill __BITFIELD_FIELD(uint64_t shift:1,
1319609e3e9SSteven J. Hill __BITFIELD_FIELD(uint64_t update:1,
1329609e3e9SSteven J. Hill __BITFIELD_FIELD(uint64_t reserved_45_60:16,
1339609e3e9SSteven J. Hill __BITFIELD_FIELD(uint64_t select:5,
1349609e3e9SSteven J. Hill __BITFIELD_FIELD(uint64_t reserved_37_39:3,
1359609e3e9SSteven J. Hill __BITFIELD_FIELD(uint64_t shft_cnt:5,
1369609e3e9SSteven J. Hill __BITFIELD_FIELD(uint64_t shft_reg:32,
1379609e3e9SSteven J. Hill ;))))))))
13854293ec3SDavid Daney } s;
13954293ec3SDavid Daney };
14054293ec3SDavid Daney
14154293ec3SDavid Daney union cvmx_ciu_soft_prst {
14254293ec3SDavid Daney uint64_t u64;
14354293ec3SDavid Daney struct cvmx_ciu_soft_prst_s {
1449609e3e9SSteven J. Hill __BITFIELD_FIELD(uint64_t reserved_3_63:61,
1459609e3e9SSteven J. Hill __BITFIELD_FIELD(uint64_t host64:1,
1469609e3e9SSteven J. Hill __BITFIELD_FIELD(uint64_t npi:1,
1479609e3e9SSteven J. Hill __BITFIELD_FIELD(uint64_t soft_prst:1,
1489609e3e9SSteven J. Hill ;))))
14954293ec3SDavid Daney } s;
15054293ec3SDavid Daney };
15154293ec3SDavid Daney
15254293ec3SDavid Daney union cvmx_ciu_timx {
15354293ec3SDavid Daney uint64_t u64;
15454293ec3SDavid Daney struct cvmx_ciu_timx_s {
1559609e3e9SSteven J. Hill __BITFIELD_FIELD(uint64_t reserved_37_63:27,
1569609e3e9SSteven J. Hill __BITFIELD_FIELD(uint64_t one_shot:1,
1579609e3e9SSteven J. Hill __BITFIELD_FIELD(uint64_t len:36,
1589609e3e9SSteven J. Hill ;)))
15954293ec3SDavid Daney } s;
16054293ec3SDavid Daney };
16154293ec3SDavid Daney
16254293ec3SDavid Daney union cvmx_ciu_wdogx {
16354293ec3SDavid Daney uint64_t u64;
16454293ec3SDavid Daney struct cvmx_ciu_wdogx_s {
1659609e3e9SSteven J. Hill __BITFIELD_FIELD(uint64_t reserved_46_63:18,
1669609e3e9SSteven J. Hill __BITFIELD_FIELD(uint64_t gstopen:1,
1679609e3e9SSteven J. Hill __BITFIELD_FIELD(uint64_t dstop:1,
1689609e3e9SSteven J. Hill __BITFIELD_FIELD(uint64_t cnt:24,
1699609e3e9SSteven J. Hill __BITFIELD_FIELD(uint64_t len:16,
1709609e3e9SSteven J. Hill __BITFIELD_FIELD(uint64_t state:2,
1719609e3e9SSteven J. Hill __BITFIELD_FIELD(uint64_t mode:2,
1729609e3e9SSteven J. Hill ;)))))))
17354293ec3SDavid Daney } s;
17454293ec3SDavid Daney };
17554293ec3SDavid Daney
1769609e3e9SSteven J. Hill #endif /* __CVMX_CIU_DEFS_H__ */
177