]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - sys/dev/bhnd/cores/pcie2/bhnd_pcie2_reg.h
Merge llvm, clang, lld, lldb, compiler-rt and libc++ r306956, and update
[FreeBSD/FreeBSD.git] / sys / dev / bhnd / cores / pcie2 / bhnd_pcie2_reg.h
1 /*-
2  * Copyright (c) 2016 Landon Fuller <landon@landonf.org>
3  * Copyright (c) 2015 Broadcom Corporation
4  * All rights reserved.
5  *
6  * This file is derived from the pcie_core.h and pcie2_core.h headers
7  * from Broadcom's Linux driver sources as distributed by dd-wrt.
8  * 
9  * Permission to use, copy, modify, and/or distribute this software for any
10  * purpose with or without fee is hereby granted, provided that the above
11  * copyright notice and this permission notice appear in all copies.
12  *
13  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
14  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
15  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
16  * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
17  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
18  * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
19  * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
20  *
21  * $FreeBSD$
22  */
23
24 #ifndef _BHND_CORES_PCIE2_BHND_PCIE2_REG_H_
25 #define _BHND_CORES_PCIE2_BHND_PCIE2_REG_H_
26
27 #define BHND_PCIE2_CLK_CONTROL          0x000
28
29 #define BHND_PCIE2_RC_PM_CONTROL        0x004
30 #define BHND_PCIE2_RC_PM_STATUS         0x008
31 #define BHND_PCIE2_EP_PM_CONTROL        0x00C
32 #define BHND_PCIE2_EP_PM_STATUS         0x010
33 #define BHND_PCIE2_EP_LTR_CONTROL       0x014
34 #define BHND_PCIE2_EP_LTR_STATUS        0x018
35 #define BHND_PCIE2_EP_OBFF_STATUS       0x01C
36 #define BHND_PCIE2_PCIE_ERR_STATUS      0x020
37 #define BHND_PCIE2_RC_AXI_CONFIG        0x100
38 #define BHND_PCIE2_EP_AXI_CONFIG        0x104
39 #define BHND_PCIE2_RXDEBUG_STATUS0      0x108
40 #define BHND_PCIE2_RXDEBUG_CONTROL0     0x10C
41
42 #define BHND_PCIE2_CONFIGINDADDR        0x120
43 #define BHND_PCIE2_CONFIGINDDATA        0x124
44
45 #define BHND_PCIE2_CFG_ADDR             0x1F8
46 #define BHND_PCIE2_CFG_DATA             0x1FC
47
48 #define BHND_PCIE2_SYS_EQ_PAGE          0x200
49 #define BHND_PCIE2_SYS_MSI_PAGE         0x204
50 #define BHND_PCIE2_SYS_MSI_INTREN       0x208
51 #define BHND_PCIE2_SYS_MSI_CTRL0        0x210
52 #define BHND_PCIE2_SYS_MSI_CTRL1        0x214
53 #define BHND_PCIE2_SYS_MSI_CTRL2        0x218
54 #define BHND_PCIE2_SYS_MSI_CTRL3        0x21C
55 #define BHND_PCIE2_SYS_MSI_CTRL4        0x220
56 #define BHND_PCIE2_SYS_MSI_CTRL5        0x224
57
58 #define BHND_PCIE2_SYS_EQ_HEAD0         0x250
59 #define BHND_PCIE2_SYS_EQ_TAIL0         0x254
60 #define BHND_PCIE2_SYS_EQ_HEAD1         0x258
61 #define BHND_PCIE2_SYS_EQ_TAIL1         0x25C
62 #define BHND_PCIE2_SYS_EQ_HEAD2         0x260
63 #define BHND_PCIE2_SYS_EQ_TAIL2         0x264
64 #define BHND_PCIE2_SYS_EQ_HEAD3         0x268
65 #define BHND_PCIE2_SYS_EQ_TAIL3         0x26C
66 #define BHND_PCIE2_SYS_EQ_HEAD4         0x270
67 #define BHND_PCIE2_SYS_EQ_TAIL4         0x274
68 #define BHND_PCIE2_SYS_EQ_HEAD5         0x278
69 #define BHND_PCIE2_SYS_EQ_TAIL5         0x27C
70
71 #define BHND_PCIE2_SYS_RC_INTX_EN       0x330
72 #define BHND_PCIE2_SYS_RC_INTX_CSR      0x334
73 #define BHND_PCIE2_SYS_MSI_REQ          0x340
74 #define BHND_PCIE2_SYS_HOST_INTR_EN     0x344
75 #define BHND_PCIE2_SYS_HOST_INTR_CSR    0x348
76 #define BHND_PCIE2_SYS_HOST_INTR0       0x350
77 #define BHND_PCIE2_SYS_HOST_INTR1       0x354
78 #define BHND_PCIE2_SYS_HOST_INTR2       0x358
79 #define BHND_PCIE2_SYS_HOST_INTR3       0x35C
80 #define BHND_PCIE2_SYS_EP_INT_EN0       0x360
81 #define BHND_PCIE2_SYS_EP_INT_EN1       0x364
82 #define BHND_PCIE2_SYS_EP_INT_CSR0      0x370
83 #define BHND_PCIE2_SYS_EP_INT_CSR1      0x374
84
85 #define BHND_PCIE2_MDIO_CTL             0x128   /**< mdio control */
86 #define BHND_PCIE2_MDIO_WRDATA          0x12C   /**< mdio data write */
87 #define BHND_PCIE2_MDIO_RDDATA          0x130   /**< mdio data read */
88
89
90 /* DMA doorbell registers (>= rev5) */
91 #define BHND_PCIE2_DB0_HOST2DEV0        0x140
92 #define BHND_PCIE2_DB0_HOST2DEV1        0x144
93 #define BHND_PCIE2_DB0_DEV2HOST0        0x148
94 #define BHND_PCIE2_DB0_DEV2HOST1        0x14C
95
96 #define BHND_PCIE2_DB1_HOST2DEV0        0x150
97 #define BHND_PCIE2_DB1_HOST2DEV1        0x154
98 #define BHND_PCIE2_DB1_DEV2HOST0        0x158
99 #define BHND_PCIE2_DB1_DEV2HOST1        0x15C
100
101 #define BHND_PCIE2_DB2_HOST2DEV0        0x160
102 #define BHND_PCIE2_DB2_HOST2DEV1        0x164
103 #define BHND_PCIE2_DB2_DEV2HOST0        0x168
104 #define BHND_PCIE2_DB2_DEV2HOST1        0x16C
105
106 #define BHND_PCIE2_DB3_HOST2DEV0        0x170
107 #define BHND_PCIE2_DB3_HOST2DEV1        0x174
108 #define BHND_PCIE2_DB3_DEV2HOST0        0x178
109 #define BHND_PCIE2_DB3_DEV2HOST1        0x17C
110
111 #define BHND_PCIE2_DATAINTF             0x180
112 #define BHND_PCIE2_INTRLAZY0_DEV2HOST   0x188
113 #define BHND_PCIE2_INTRLAZY0_HOST2DEV   0x18c
114 #define BHND_PCIE2_INTSTAT0_HOST2DEV    0x190
115 #define BHND_PCIE2_INTMASK0_HOST2DEV    0x194
116 #define BHND_PCIE2_INTSTAT0_DEV2HOST    0x198
117 #define BHND_PCIE2_INTMASK0_DEV2HOST    0x19c
118 #define BHND_PCIE2_LTR_STATE            0x1A0
119 #define BHND_PCIE2_PWR_INT_STATUS       0x1A4
120 #define BHND_PCIE2_PWR_INT_MASK         0x1A8
121
122 /* DMA channel registers */
123 #define BHND_PCIE2_DMA0_HOST2DEV_TX     0x200
124 #define BHND_PCIE2_DMA0_HOST2DEV_RX     0x220
125 #define BHND_PCIE2_DMA0_DEV2HOST_TX     0x240
126 #define BHND_PCIE2_DMA0_DEV2HOST_RX     0x260
127
128 #define BHND_PCIE2_DMA1_HOST2DEV_TX     0x280
129 #define BHND_PCIE2_DMA1_HOST2DEV_RX     0x2A0
130 #define BHND_PCIE2_DMA1_DEV2HOST_TX     0x2C0
131 #define BHND_PCIE2_DMA1_DEV2HOST_RX     0x2E0
132
133 #define BHND_PCIE2_DMA2_HOST2DEV_TX     0x300
134 #define BHND_PCIE2_DMA2_HOST2DEV_RX     0x320
135 #define BHND_PCIE2_DMA2_DEV2HOST_TX     0x340
136 #define BHND_PCIE2_DMA2_DEV2HOST_RX     0x360
137
138 #define BHND_PCIE2_DMA3_HOST2DEV_TX     0x380
139 #define BHND_PCIE2_DMA3_HOST2DEV_RX     0x3A0
140 #define BHND_PCIE2_DMA3_DEV2HOST_TX     0x3C0
141 #define BHND_PCIE2_DMA3_DEV2HOST_RX     0x3E0
142
143 #define BHND_PCIE2_PCIE_FUNC0_CFG       0x400   /**< PCIe function 0 config space */
144 #define BHND_PCIE2_PCIE_FUNC1_CFG       0x500   /**< PCIe function 1 config space */
145 #define BHND_PCIE2_PCIE_FUNC2_CFG       0x600   /**< PCIe function 2 config space */
146 #define BHND_PCIE2_PCIE_FUNC3_CFG       0x700   /**< PCIe function 3 config space */
147 #define BHND_PCIE2_SPROM                0x800   /**< SPROM shadow */
148
149 #define BHND_PCIE2_FUNC0_IMAP0_0        0xC00
150 #define BHND_PCIE2_FUNC0_IMAP0_1        0xC04
151 #define BHND_PCIE2_FUNC0_IMAP0_2        0xC08
152 #define BHND_PCIE2_FUNC0_IMAP0_3        0xC0C
153 #define BHND_PCIE2_FUNC0_IMAP0_4        0xC10
154 #define BHND_PCIE2_FUNC0_IMAP0_5        0xC14
155 #define BHND_PCIE2_FUNC0_IMAP0_6        0xC18
156 #define BHND_PCIE2_FUNC0_IMAP0_7        0xC1C
157
158 #define BHND_PCIE2_FUNC1_IMAP0_0        0xC20
159 #define BHND_PCIE2_FUNC1_IMAP0_1        0xC24
160 #define BHND_PCIE2_FUNC1_IMAP0_2        0xC28
161 #define BHND_PCIE2_FUNC1_IMAP0_3        0xC2C
162 #define BHND_PCIE2_FUNC1_IMAP0_4        0xC30
163 #define BHND_PCIE2_FUNC1_IMAP0_5        0xC34
164 #define BHND_PCIE2_FUNC1_IMAP0_6        0xC38
165 #define BHND_PCIE2_FUNC1_IMAP0_7        0xC3C
166
167 #define BHND_PCIE2_FUNC0_IMAP1          0xC80
168 #define BHND_PCIE2_FUNC1_IMAP1          0xC88
169 #define BHND_PCIE2_FUNC0_IMAP2          0xCC0
170 #define BHND_PCIE2_FUNC1_IMAP2          0xCC8
171
172 #define BHND_PCIE2_IARR0_LOWER          0xD00
173 #define BHND_PCIE2_IARR0_UPPER          0xD04
174 #define BHND_PCIE2_IARR1_LOWER          0xD08
175 #define BHND_PCIE2_IARR1_UPPER          0xD0C
176 #define BHND_PCIE2_IARR2_LOWER          0xD10
177 #define BHND_PCIE2_IARR2_UPPER          0xD14
178 #define BHND_PCIE2_OARR0                0xD20
179 #define BHND_PCIE2_OARR1                0xD28
180 #define BHND_PCIE2_OARR2                0xD30
181 #define BHND_PCIE2_OMAP0_LOWER          0xD40
182 #define BHND_PCIE2_OMAP0_UPPER          0xD44
183 #define BHND_PCIE2_OMAP1_LOWER          0xD48
184 #define BHND_PCIE2_OMAP1_UPPER          0xD4C
185 #define BHND_PCIE2_OMAP2_LOWER          0xD50
186 #define BHND_PCIE2_OMAP2_UPPER          0xD54
187 #define BHND_PCIE2_FUNC1_IARR1_SIZE     0xD58
188 #define BHND_PCIE2_FUNC1_IARR2_SIZE     0xD5C
189 #define BHND_PCIE2_MEM_CONTROL          0xF00
190 #define BHND_PCIE2_MEM_ECC_ERRLOG0      0xF04
191 #define BHND_PCIE2_MEM_ECC_ERRLOG1      0xF08
192 #define BHND_PCIE2_LINK_STATUS          0xF0C
193 #define BHND_PCIE2_STRAP_STATUS         0xF10
194 #define BHND_PCIE2_RESET_STATUS         0xF14
195 #define BHND_PCIE2_RESETEN_IN_LINKDOWN  0xF18
196 #define BHND_PCIE2_MISC_INTR_EN         0xF1C
197 #define BHND_PCIE2_TX_DEBUG_CFG         0xF20
198 #define BHND_PCIE2_MISC_CONFIG          0xF24
199 #define BHND_PCIE2_MISC_STATUS          0xF28
200 #define BHND_PCIE2_INTR_EN              0xF30
201 #define BHND_PCIE2_INTR_CLEAR           0xF34
202 #define BHND_PCIE2_INTR_STATUS          0xF38
203
204 /* BHND_PCIE2_MDIO_CTL */
205 #define BHND_PCIE2_MDIOCTL_DIVISOR_MASK         0x7f    /* clock to be used on MDIO */
206 #define BHND_PCIE2_MDIOCTL_DIVISOR_VAL          0x2
207 #define BHND_PCIE2_MDIOCTL_REGADDR_SHIFT        8               /* Regaddr shift */
208 #define BHND_PCIE2_MDIOCTL_REGADDR_MASK         0x00FFFF00      /* Regaddr Mask */
209 #define BHND_PCIE2_MDIOCTL_DEVADDR_SHIFT        24              /* Physmedia devaddr shift */
210 #define BHND_PCIE2_MDIOCTL_DEVADDR_MASK         0x0f000000      /* Physmedia devaddr Mask */
211 #define BHND_PCIE2_MDIOCTL_SLAVE_BYPASS         0x10000000      /* IP slave bypass */
212 #define BHND_PCIE2_MDIOCTL_READ                 0x20000000      /* IP slave bypass */
213
214 /* BHND_PCIE2_MDIO_DATA */
215 #define BHND_PCIE2_MDIODATA_DONE                0x80000000      /* rd/wr transaction done */
216 #define BHND_PCIE2_MDIODATA_MASK                0x7FFFFFFF      /* rd/wr transaction data */
217 #define BHND_PCIE2_MDIODATA_DEVADDR_SHIFT       4               /* Physmedia devaddr shift */
218
219 /* BHND_PCIE2_DMA[0-4]_HOST2DEV_(TX|RX) per-channel register offsets */
220 #define BHND_PCIE2_DMA_CTRL             0x0     /**< enable, et al */
221 #define BHND_PCIE2_DMA_PTR              0x4     /**< last descriptor posted to chip */
222 #define BHND_PCIE2_DMA_ADDRL            0x8     /**< descriptor ring base address low 32-bits (8K aligned) */
223 #define BHND_PCIE2_DMA_ADDRH            0xC     /**< descriptor ring base address bits 63:32 (8K aligned) */
224 #define BHND_PCIE2_DMA_STATUS0          0x10    /**< current descriptor, xmt state */
225 #define BHND_PCIE2_DMA_STATUS1          0x10    /**< active descriptor, xmt error */
226
227
228 #endif /* _BHND_CORES_PCIE2_BHND_PCIE2_REG_H_ */