GNU Linux-libre 6.8.9-gnu
[releases.git] / drivers / net / ethernet / marvell / octeontx2 / nic / otx2_reg.h
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /* Marvell RVU Ethernet driver
3  *
4  * Copyright (C) 2020 Marvell.
5  *
6  */
7
8 #ifndef OTX2_REG_H
9 #define OTX2_REG_H
10
11 #include <rvu_struct.h>
12
13 /* RVU PF registers */
14 #define RVU_PF_VFX_PFVF_MBOX0               (0x00000)
15 #define RVU_PF_VFX_PFVF_MBOX1               (0x00008)
16 #define RVU_PF_VFX_PFVF_MBOXX(a, b)         (0x0 | (a) << 12 | (b) << 3)
17 #define RVU_PF_VF_BAR4_ADDR                 (0x10)
18 #define RVU_PF_BLOCK_ADDRX_DISC(a)          (0x200 | (a) << 3)
19 #define RVU_PF_VFME_STATUSX(a)              (0x800 | (a) << 3)
20 #define RVU_PF_VFTRPENDX(a)                 (0x820 | (a) << 3)
21 #define RVU_PF_VFTRPEND_W1SX(a)             (0x840 | (a) << 3)
22 #define RVU_PF_VFPF_MBOX_INTX(a)            (0x880 | (a) << 3)
23 #define RVU_PF_VFPF_MBOX_INT_W1SX(a)        (0x8A0 | (a) << 3)
24 #define RVU_PF_VFPF_MBOX_INT_ENA_W1SX(a)    (0x8C0 | (a) << 3)
25 #define RVU_PF_VFPF_MBOX_INT_ENA_W1CX(a)    (0x8E0 | (a) << 3)
26 #define RVU_PF_VFFLR_INTX(a)                (0x900 | (a) << 3)
27 #define RVU_PF_VFFLR_INT_W1SX(a)            (0x920 | (a) << 3)
28 #define RVU_PF_VFFLR_INT_ENA_W1SX(a)        (0x940 | (a) << 3)
29 #define RVU_PF_VFFLR_INT_ENA_W1CX(a)        (0x960 | (a) << 3)
30 #define RVU_PF_VFME_INTX(a)                 (0x980 | (a) << 3)
31 #define RVU_PF_VFME_INT_W1SX(a)             (0x9A0 | (a) << 3)
32 #define RVU_PF_VFME_INT_ENA_W1SX(a)         (0x9C0 | (a) << 3)
33 #define RVU_PF_VFME_INT_ENA_W1CX(a)         (0x9E0 | (a) << 3)
34 #define RVU_PF_PFAF_MBOX0                   (0xC00)
35 #define RVU_PF_PFAF_MBOX1                   (0xC08)
36 #define RVU_PF_PFAF_MBOXX(a)                (0xC00 | (a) << 3)
37 #define RVU_PF_INT                          (0xc20)
38 #define RVU_PF_INT_W1S                      (0xc28)
39 #define RVU_PF_INT_ENA_W1S                  (0xc30)
40 #define RVU_PF_INT_ENA_W1C                  (0xc38)
41 #define RVU_PF_MSIX_VECX_ADDR(a)            (0x000 | (a) << 4)
42 #define RVU_PF_MSIX_VECX_CTL(a)             (0x008 | (a) << 4)
43 #define RVU_PF_MSIX_PBAX(a)                 (0xF0000 | (a) << 3)
44 #define RVU_PF_VF_MBOX_ADDR                 (0xC40)
45 #define RVU_PF_LMTLINE_ADDR                 (0xC48)
46
47 /* RVU VF registers */
48 #define RVU_VF_VFPF_MBOX0                   (0x00000)
49 #define RVU_VF_VFPF_MBOX1                   (0x00008)
50 #define RVU_VF_VFPF_MBOXX(a)                (0x00 | (a) << 3)
51 #define RVU_VF_INT                          (0x20)
52 #define RVU_VF_INT_W1S                      (0x28)
53 #define RVU_VF_INT_ENA_W1S                  (0x30)
54 #define RVU_VF_INT_ENA_W1C                  (0x38)
55 #define RVU_VF_BLOCK_ADDRX_DISC(a)          (0x200 | (a) << 3)
56 #define RVU_VF_MSIX_VECX_ADDR(a)            (0x000 | (a) << 4)
57 #define RVU_VF_MSIX_VECX_CTL(a)             (0x008 | (a) << 4)
58 #define RVU_VF_MSIX_PBAX(a)                 (0xF0000 | (a) << 3)
59 #define RVU_VF_MBOX_REGION                  (0xC0000)
60
61 #define RVU_FUNC_BLKADDR_SHIFT          20
62 #define RVU_FUNC_BLKADDR_MASK           0x1FULL
63
64 /* NPA LF registers */
65 #define NPA_LFBASE                      (BLKTYPE_NPA << RVU_FUNC_BLKADDR_SHIFT)
66 #define NPA_LF_AURA_OP_ALLOCX(a)        (NPA_LFBASE | 0x10 | (a) << 3)
67 #define NPA_LF_AURA_OP_FREE0            (NPA_LFBASE | 0x20)
68 #define NPA_LF_AURA_OP_FREE1            (NPA_LFBASE | 0x28)
69 #define NPA_LF_AURA_OP_CNT              (NPA_LFBASE | 0x30)
70 #define NPA_LF_AURA_OP_LIMIT            (NPA_LFBASE | 0x50)
71 #define NPA_LF_AURA_OP_INT              (NPA_LFBASE | 0x60)
72 #define NPA_LF_AURA_OP_THRESH           (NPA_LFBASE | 0x70)
73 #define NPA_LF_POOL_OP_PC               (NPA_LFBASE | 0x100)
74 #define NPA_LF_POOL_OP_AVAILABLE        (NPA_LFBASE | 0x110)
75 #define NPA_LF_POOL_OP_PTR_START0       (NPA_LFBASE | 0x120)
76 #define NPA_LF_POOL_OP_PTR_START1       (NPA_LFBASE | 0x128)
77 #define NPA_LF_POOL_OP_PTR_END0         (NPA_LFBASE | 0x130)
78 #define NPA_LF_POOL_OP_PTR_END1         (NPA_LFBASE | 0x138)
79 #define NPA_LF_POOL_OP_INT              (NPA_LFBASE | 0x160)
80 #define NPA_LF_POOL_OP_THRESH           (NPA_LFBASE | 0x170)
81 #define NPA_LF_ERR_INT                  (NPA_LFBASE | 0x200)
82 #define NPA_LF_ERR_INT_W1S              (NPA_LFBASE | 0x208)
83 #define NPA_LF_ERR_INT_ENA_W1C          (NPA_LFBASE | 0x210)
84 #define NPA_LF_ERR_INT_ENA_W1S          (NPA_LFBASE | 0x218)
85 #define NPA_LF_RAS                      (NPA_LFBASE | 0x220)
86 #define NPA_LF_RAS_W1S                  (NPA_LFBASE | 0x228)
87 #define NPA_LF_RAS_ENA_W1C              (NPA_LFBASE | 0x230)
88 #define NPA_LF_RAS_ENA_W1S              (NPA_LFBASE | 0x238)
89 #define NPA_LF_QINTX_CNT(a)             (NPA_LFBASE | 0x300 | (a) << 12)
90 #define NPA_LF_QINTX_INT(a)             (NPA_LFBASE | 0x310 | (a) << 12)
91 #define NPA_LF_QINTX_INT_W1S(a)         (NPA_LFBASE | 0x318 | (a) << 12)
92 #define NPA_LF_QINTX_ENA_W1S(a)         (NPA_LFBASE | 0x320 | (a) << 12)
93 #define NPA_LF_QINTX_ENA_W1C(a)         (NPA_LFBASE | 0x330 | (a) << 12)
94 #define NPA_LF_AURA_BATCH_FREE0         (NPA_LFBASE | 0x400)
95
96 /* NIX LF registers */
97 #define NIX_LFBASE                      (BLKTYPE_NIX << RVU_FUNC_BLKADDR_SHIFT)
98 #define NIX_LF_RX_SECRETX(a)            (NIX_LFBASE | 0x0 | (a) << 3)
99 #define NIX_LF_CFG                      (NIX_LFBASE | 0x100)
100 #define NIX_LF_GINT                     (NIX_LFBASE | 0x200)
101 #define NIX_LF_GINT_W1S                 (NIX_LFBASE | 0x208)
102 #define NIX_LF_GINT_ENA_W1C             (NIX_LFBASE | 0x210)
103 #define NIX_LF_GINT_ENA_W1S             (NIX_LFBASE | 0x218)
104 #define NIX_LF_ERR_INT                  (NIX_LFBASE | 0x220)
105 #define NIX_LF_ERR_INT_W1S              (NIX_LFBASE | 0x228)
106 #define NIX_LF_ERR_INT_ENA_W1C          (NIX_LFBASE | 0x230)
107 #define NIX_LF_ERR_INT_ENA_W1S          (NIX_LFBASE | 0x238)
108 #define NIX_LF_RAS                      (NIX_LFBASE | 0x240)
109 #define NIX_LF_RAS_W1S                  (NIX_LFBASE | 0x248)
110 #define NIX_LF_RAS_ENA_W1C              (NIX_LFBASE | 0x250)
111 #define NIX_LF_RAS_ENA_W1S              (NIX_LFBASE | 0x258)
112 #define NIX_LF_SQ_OP_ERR_DBG            (NIX_LFBASE | 0x260)
113 #define NIX_LF_MNQ_ERR_DBG              (NIX_LFBASE | 0x270)
114 #define NIX_LF_SEND_ERR_DBG             (NIX_LFBASE | 0x280)
115 #define NIX_LF_TX_STATX(a)              (NIX_LFBASE | 0x300 | (a) << 3)
116 #define NIX_LF_RX_STATX(a)              (NIX_LFBASE | 0x400 | (a) << 3)
117 #define NIX_LF_OP_SENDX(a)              (NIX_LFBASE | 0x800 | (a) << 3)
118 #define NIX_LF_RQ_OP_INT                (NIX_LFBASE | 0x900)
119 #define NIX_LF_RQ_OP_OCTS               (NIX_LFBASE | 0x910)
120 #define NIX_LF_RQ_OP_PKTS               (NIX_LFBASE | 0x920)
121 #define NIX_LF_OP_IPSEC_DYNO_CN         (NIX_LFBASE | 0x980)
122 #define NIX_LF_SQ_OP_INT                (NIX_LFBASE | 0xa00)
123 #define NIX_LF_SQ_OP_OCTS               (NIX_LFBASE | 0xa10)
124 #define NIX_LF_SQ_OP_PKTS               (NIX_LFBASE | 0xa20)
125 #define NIX_LF_SQ_OP_STATUS             (NIX_LFBASE | 0xa30)
126 #define NIX_LF_CQ_OP_INT                (NIX_LFBASE | 0xb00)
127 #define NIX_LF_CQ_OP_DOOR               (NIX_LFBASE | 0xb30)
128 #define NIX_LF_CQ_OP_STATUS             (NIX_LFBASE | 0xb40)
129 #define NIX_LF_QINTX_CNT(a)             (NIX_LFBASE | 0xC00 | (a) << 12)
130 #define NIX_LF_QINTX_INT(a)             (NIX_LFBASE | 0xC10 | (a) << 12)
131 #define NIX_LF_QINTX_INT_W1S(a)         (NIX_LFBASE | 0xC18 | (a) << 12)
132 #define NIX_LF_QINTX_ENA_W1S(a)         (NIX_LFBASE | 0xC20 | (a) << 12)
133 #define NIX_LF_QINTX_ENA_W1C(a)         (NIX_LFBASE | 0xC30 | (a) << 12)
134 #define NIX_LF_CINTX_CNT(a)             (NIX_LFBASE | 0xD00 | (a) << 12)
135 #define NIX_LF_CINTX_WAIT(a)            (NIX_LFBASE | 0xD10 | (a) << 12)
136 #define NIX_LF_CINTX_INT(a)             (NIX_LFBASE | 0xD20 | (a) << 12)
137 #define NIX_LF_CINTX_INT_W1S(a)         (NIX_LFBASE | 0xD30 | (a) << 12)
138 #define NIX_LF_CINTX_ENA_W1S(a)         (NIX_LFBASE | 0xD40 | (a) << 12)
139 #define NIX_LF_CINTX_ENA_W1C(a)         (NIX_LFBASE | 0xD50 | (a) << 12)
140
141 /* NIX AF transmit scheduler registers */
142 #define NIX_AF_SMQX_CFG(a)              (0x700 | (a) << 16)
143 #define NIX_AF_TL1X_SCHEDULE(a)         (0xC00 | (a) << 16)
144 #define NIX_AF_TL1X_CIR(a)              (0xC20 | (a) << 16)
145 #define NIX_AF_TL1X_TOPOLOGY(a)         (0xC80 | (a) << 16)
146 #define NIX_AF_TL2X_PARENT(a)           (0xE88 | (a) << 16)
147 #define NIX_AF_TL2X_SCHEDULE(a)         (0xE00 | (a) << 16)
148 #define NIX_AF_TL2X_TOPOLOGY(a)         (0xE80 | (a) << 16)
149 #define NIX_AF_TL2X_CIR(a)              (0xE20 | (a) << 16)
150 #define NIX_AF_TL2X_PIR(a)              (0xE30 | (a) << 16)
151 #define NIX_AF_TL3X_PARENT(a)           (0x1088 | (a) << 16)
152 #define NIX_AF_TL3X_SCHEDULE(a)         (0x1000 | (a) << 16)
153 #define NIX_AF_TL3X_SHAPE(a)            (0x1010 | (a) << 16)
154 #define NIX_AF_TL3X_CIR(a)              (0x1020 | (a) << 16)
155 #define NIX_AF_TL3X_PIR(a)              (0x1030 | (a) << 16)
156 #define NIX_AF_TL3X_TOPOLOGY(a)         (0x1080 | (a) << 16)
157 #define NIX_AF_TL4X_PARENT(a)           (0x1288 | (a) << 16)
158 #define NIX_AF_TL4X_SCHEDULE(a)         (0x1200 | (a) << 16)
159 #define NIX_AF_TL4X_SHAPE(a)            (0x1210 | (a) << 16)
160 #define NIX_AF_TL4X_CIR(a)              (0x1220 | (a) << 16)
161 #define NIX_AF_TL4X_PIR(a)              (0x1230 | (a) << 16)
162 #define NIX_AF_TL4X_TOPOLOGY(a)         (0x1280 | (a) << 16)
163 #define NIX_AF_MDQX_SCHEDULE(a)         (0x1400 | (a) << 16)
164 #define NIX_AF_MDQX_SHAPE(a)            (0x1410 | (a) << 16)
165 #define NIX_AF_MDQX_CIR(a)              (0x1420 | (a) << 16)
166 #define NIX_AF_MDQX_PIR(a)              (0x1430 | (a) << 16)
167 #define NIX_AF_MDQX_PARENT(a)           (0x1480 | (a) << 16)
168 #define NIX_AF_TL3_TL2X_LINKX_CFG(a, b) (0x1700 | (a) << 16 | (b) << 3)
169
170 /* LMT LF registers */
171 #define LMT_LFBASE                      BIT_ULL(RVU_FUNC_BLKADDR_SHIFT)
172 #define LMT_LF_LMTLINEX(a)              (LMT_LFBASE | 0x000 | (a) << 12)
173 #define LMT_LF_LMTCANCEL                (LMT_LFBASE | 0x400)
174
175 #endif /* OTX2_REG_H */