Print this page
NEX-5717 import QLogic 16G FC drivers
Reviewed by: Steve Peng <steve.peng@nexenta.com>
Reviewed by: Josef 'Jeff' Sipek <josef.sipek@nexenta.com>
Reviewed by: Yuri Pankov <yuri.pankov@nexenta.com>
| Split |
Close |
| Expand all |
| Collapse all |
--- old/usr/src/uts/common/sys/fibre-channel/fca/qlc/ql_nx.h
+++ new/usr/src/uts/common/sys/fibre-channel/fca/qlc/ql_nx.h
1 1 /*
2 2 * CDDL HEADER START
3 3 *
4 4 * The contents of this file are subject to the terms of the
5 5 * Common Development and Distribution License (the "License").
6 6 * You may not use this file except in compliance with the License.
7 7 *
8 8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 9 * or http://www.opensolaris.org/os/licensing.
10 10 * See the License for the specific language governing permissions
11 11 * and limitations under the License.
12 12 *
|
↓ open down ↓ |
12 lines elided |
↑ open up ↑ |
13 13 * When distributing Covered Code, include this CDDL HEADER in each
14 14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 15 * If applicable, add the following below this CDDL HEADER, with the
16 16 * fields enclosed by brackets "[]" replaced with your own identifying
17 17 * information: Portions Copyright [yyyy] [name of copyright owner]
18 18 *
19 19 * CDDL HEADER END
20 20 */
21 21
22 22 /*
23 - * Copyright 2010 QLogic Corporation. All rights reserved.
24 - * Use is subject to license terms.
23 + * Copyright (c) 2015 QLogic Corporation. All rights reserved.
25 24 */
26 25
27 26 #ifndef _QL_NX_H
28 27 #define _QL_NX_H
29 28
30 29 /*
31 30 * ISP2xxx Solaris Fibre Channel Adapter (FCA) driver header file.
32 31 *
33 32 * ***********************************************************************
34 33 * * **
35 34 * * NOTICE **
36 - * * COPYRIGHT (C) 1996-2010 QLOGIC CORPORATION **
35 + * * COPYRIGHT (C) 1996-2015 QLOGIC CORPORATION **
37 36 * * ALL RIGHTS RESERVED **
38 37 * * **
39 38 * ***********************************************************************
40 39 *
41 40 */
42 41
43 42 #ifdef __cplusplus
44 43 extern "C" {
45 44 #endif
46 45
47 46 #define NX_P3_A0 0x30
48 47 #define NX_P3_A2 0x32
49 48 #define NX_P3_B0 0x40
50 49 #define NX_P3_B1 0x41
51 50 #define NX_P3_B2 0x42
52 51 #define NX_P3P_A0 0x50
53 52 #define NX_P3P_B0 0x54
54 53
55 -#define NX_IS_REVISION_P3(REVISION) (REVISION >= NX_P3_A0)
56 -#define NX_IS_REVISION_P3PLUS(REVISION) (REVISION >= NX_P3P_A0)
54 +#define NX_IS_REVISION_P3(REVISION) (REVISION >= NX_P3_A0)
55 +#define NX_IS_REVISION_P3PLUS(REVISION) (REVISION >= NX_P3P_A0)
56 +#define NX_IS_REVISION_P3PLUS_B0(REVISION) (REVISION >= NX_P3P_B0)
57 57
58 58 /*
59 59 * Following are the states of the Phantom. Phantom will set them and
60 60 * Host will read to check if the fields are correct.
61 61 */
62 62 #define PHAN_INITIALIZE_START 0xff00
63 63 #define PHAN_INITIALIZE_FAILED 0xffff
64 64 #define PHAN_INITIALIZE_COMPLETE 0xff01
65 65
66 66 /* Host writes the following to notify that it has done the init-handshake */
67 67 #define PHAN_INITIALIZE_ACK 0xf00f
68 68 #define PHAN_PEG_RCV_INITIALIZED 0xff01
69 69 #define PHAN_PEG_RCV_START_INITIALIZE 0xff00
70 70
71 71 /* CRB_RELATED */
72 72 #define NIC_CRB_BASE (UNM_CAM_RAM(0x200))
73 73 #define NIC_CRB_BASE_2 (UNM_CAM_RAM(0x700))
74 74 #define UNM_NIC_REG(X) (NIC_CRB_BASE + (X))
|
↓ open down ↓ |
8 lines elided |
↑ open up ↑ |
75 75 #define UNM_NIC_REG_2(X) (NIC_CRB_BASE_2 + (X))
76 76
77 77 #define CRB_CUT_THRU_PAGE_SIZE (UNM_CAM_RAM(0x170))
78 78
79 79 #define CRB_DEV_PARTITION_INFO (UNM_CAM_RAM(0x14c))
80 80 #define CRB_DEV_STATE (UNM_CAM_RAM(0x140))
81 81 #define CRB_DRV_IDC_VERSION (UNM_CAM_RAM(0x174))
82 82 #define CRB_DRV_ACTIVE (UNM_CAM_RAM(0x138))
83 83 #define CRB_DRV_STATE (UNM_CAM_RAM(0x144))
84 84 #define CRB_DRV_SCRATCH (UNM_CAM_RAM(0x148))
85 -#define CRB_FCOE_PORT_0_REQIN (UNM_CAM_RAM(0x1b8))
86 -#define CRB_FCOE_PORT_1_REQIN (UNM_CAM_RAM(0x1bc))
85 +#define CRB_PORT_0_REQIN (UNM_CAM_RAM(0x1b8))
86 +#define CRB_PORT_1_REQIN (UNM_CAM_RAM(0x1bc))
87 87
88 88 /* Every driver should use these Device State */
89 +#define NX_DEV_POLL 0
89 90 #define NX_DEV_COLD 1
90 -#define NX_DEV_INITIALIZING 2
91 +#define NX_DEV_INITIALIZING 2
91 92 #define NX_DEV_READY 3
92 93 #define NX_DEV_NEED_RESET 4
93 -#define NX_DEV_NEED_QUIESCENT 5
94 +#define NX_DEV_NEED_QUIESCENT 5
94 95 #define NX_DEV_FAILED 6
95 96 #define NX_DEV_QUIESCENT 7
97 +#define NX_DEV_BADOBADO 0xbad0bad0
96 98
97 99 #define NX_IDC_VERSION 0x1
98 100
99 101 #define CRB_CMD_PRODUCER_OFFSET (UNM_NIC_REG(0x08))
100 102 #define CRB_CMD_CONSUMER_OFFSET (UNM_NIC_REG(0x0c))
101 103 #define CRB_PAUSE_ADDR_LO (UNM_NIC_REG(0x10)) /* C0 EPG BUG */
102 104 #define CRB_PAUSE_ADDR_HI (UNM_NIC_REG(0x14))
103 105 #define NX_CDRP_CRB_OFFSET (UNM_NIC_REG(0x18))
104 106 #define NX_ARG1_CRB_OFFSET (UNM_NIC_REG(0x1c))
105 107 #define NX_ARG2_CRB_OFFSET (UNM_NIC_REG(0x20))
106 108 #define NX_ARG3_CRB_OFFSET (UNM_NIC_REG(0x24))
107 109 #define NX_SIGN_CRB_OFFSET (UNM_NIC_REG(0x28))
108 110 #define CRB_CMDPEG_CMDRING (UNM_NIC_REG(0x38))
109 111 #define CRB_HOST_DUMMY_BUF_ADDR_HI (UNM_NIC_REG(0x3c))
110 112 #define CRB_HOST_DUMMY_BUF_ADDR_LO (UNM_NIC_REG(0x40))
111 113 #define CRB_CMDPEG_STATE (UNM_NIC_REG(0x50))
112 114 #define BOOT_LOADER_DIMM_STATUS (UNM_NIC_REG(0x54))
113 115 #define CRB_GLOBAL_INT_COAL (UNM_NIC_REG(0x64)) /* intrt coalescing */
114 116 #define CRB_INT_COAL_MODE (UNM_NIC_REG(0x68))
115 117 #define CRB_MAX_RCV_BUFS (UNM_NIC_REG(0x6c))
116 118 #define CRB_TX_INT_THRESHOLD (UNM_NIC_REG(0x70))
117 119 #define CRB_RX_PKT_TIMER (UNM_NIC_REG(0x74))
118 120 #define CRB_TX_PKT_TIMER (UNM_NIC_REG(0x78))
119 121 #define CRB_RX_PKT_CNT (UNM_NIC_REG(0x7c))
120 122 #define CRB_RX_TMR_CNT (UNM_NIC_REG(0x80))
121 123 #define CRB_RCV_INTR_COUNT (UNM_NIC_REG(0x84))
122 124 #define CRB_XG_STATE (UNM_NIC_REG(0x94)) /* XG Link status */
123 125 #define CRB_XG_STATE_P3 (UNM_NIC_REG(0x98)) /* XG PF Link status */
124 126 #define CRB_TX_STATE (UNM_NIC_REG(0xac)) /* Debug -performance */
125 127 #define CRB_TX_COUNT (UNM_NIC_REG(0xb0))
126 128 #define CRB_RX_STATE (UNM_NIC_REG(0xb4))
127 129 #define CRB_RX_PERF_DEBUG_1 (UNM_NIC_REG(0xb8))
128 130 #define CRB_RX_LRO_CONTROL (UNM_NIC_REG(0xbc)) /* LRO On/OFF */
129 131 #define CRB_MPORT_MODE (UNM_NIC_REG(0xc4)) /* Multiport Mode */
130 132 #define CRB_DMA_SHIFT (UNM_NIC_REG(0xcc)) /* DMA mask extension */
131 133 #define CRB_INT_VECTOR (UNM_NIC_REG(0xd4))
132 134 #define CRB_PF_LINK_SPEED_1 (UNM_NIC_REG(0xe8))
133 135 #define CRB_PF_LINK_SPEED_2 (UNM_NIC_REG(0xec))
134 136 #define CRB_PF_MAX_LINK_SPEED_1 (UNM_NIC_REG(0xf0))
135 137 #define CRB_PF_MAX_LINK_SPEED_2 (UNM_NIC_REG(0xf4))
136 138 #define CRB_HOST_DUMMY_BUF (UNM_NIC_REG(0xfc))
137 139
138 140 /* used for ethtool tests */
139 141 #define CRB_SCRATCHPAD_TEST (UNM_NIC_REG(0x280))
140 142
141 143 #define CRB_RCVPEG_STATE (UNM_NIC_REG(0x13c))
142 144
143 145 #define UNM_PEG_HALT_STATUS1 (UNM_CAM_RAM(0xa8))
144 146 #define UNM_PEG_HALT_STATUS2 (UNM_CAM_RAM(0xac))
145 147 #define UNM_PEG_ALIVE_COUNTER (UNM_CAM_RAM(0x0b0))
146 148 #define UNM_FW_CAPABILITIES_1 (UNM_CAM_RAM(0x128))
147 149
148 150 /* 12 registers to store MAC addresses for 8 PCI functions */
149 151 #define CRB_MAC_BLOCK_START (UNM_CAM_RAM(0x1c0))
150 152
151 153 #define CRB_CMD_PRODUCER_OFFSET_1 (UNM_NIC_REG(0x1ac))
152 154 #define CRB_CMD_CONSUMER_OFFSET_1 (UNM_NIC_REG(0x1b0))
153 155 #define CRB_TEMP_STATE (UNM_NIC_REG(0x1b4))
154 156 #define CRB_CMD_PRODUCER_OFFSET_2 (UNM_NIC_REG(0x1b8))
155 157 #define CRB_CMD_CONSUMER_OFFSET_2 (UNM_NIC_REG(0x1bc))
156 158
157 159 #define CRB_CMD_PRODUCER_OFFSET_3 (UNM_NIC_REG(0x1d0))
158 160 #define CRB_CMD_CONSUMER_OFFSET_3 (UNM_NIC_REG(0x1d4))
159 161 /* sw int status/mask registers */
160 162 #define CRB_SW_INT_MASK_OFFSET_0 0x1d8
161 163 #define CRB_SW_INT_MASK_OFFSET_1 0x1e0
162 164 #define CRB_SW_INT_MASK_OFFSET_2 0x1e4
163 165 #define CRB_SW_INT_MASK_OFFSET_3 0x1e8
164 166 #define CRB_SW_INT_MASK_OFFSET_4 0x450
165 167 #define CRB_SW_INT_MASK_OFFSET_5 0x454
166 168 #define CRB_SW_INT_MASK_OFFSET_6 0x458
167 169 #define CRB_SW_INT_MASK_OFFSET_7 0x45c
168 170 #define CRB_SW_INT_MASK_0 (UNM_NIC_REG(CRB_SW_INT_MASK_OFFSET_0))
169 171 #define CRB_SW_INT_MASK_1 (UNM_NIC_REG(CRB_SW_INT_MASK_OFFSET_1))
170 172 #define CRB_SW_INT_MASK_2 (UNM_NIC_REG(CRB_SW_INT_MASK_OFFSET_2))
171 173 #define CRB_SW_INT_MASK_3 (UNM_NIC_REG(CRB_SW_INT_MASK_OFFSET_3))
172 174 #define CRB_SW_INT_MASK_4 (UNM_NIC_REG(CRB_SW_INT_MASK_OFFSET_4))
173 175 #define CRB_SW_INT_MASK_5 (UNM_NIC_REG(CRB_SW_INT_MASK_OFFSET_5))
174 176 #define CRB_SW_INT_MASK_6 (UNM_NIC_REG(CRB_SW_INT_MASK_OFFSET_6))
175 177 #define CRB_SW_INT_MASK_7 (UNM_NIC_REG(CRB_SW_INT_MASK_OFFSET_7))
176 178
177 179 #define CRB_NIC_DEBUG_STRUCT_BASE (UNM_NIC_REG(0x288))
178 180
179 181 #define CRB_NIC_CAPABILITIES_HOST (UNM_NIC_REG(0x1a8))
180 182 #define CRB_NIC_CAPABILITIES_FW (UNM_NIC_REG(0x1dc))
181 183 #define CRB_NIC_MSI_MODE_HOST (UNM_NIC_REG(0x270))
182 184 #define CRB_NIC_MSI_MODE_FW (UNM_NIC_REG(0x274))
183 185
184 186 #define INTR_SCHEME_PERPORT 0x1
185 187 #define MSI_MODE_MULTIFUNC 0x1
186 188
187 189 #define CRB_EPG_QUEUE_BUSY_COUNT (UNM_NIC_REG(0x200))
188 190
189 191 #define CRB_V2P_0 (UNM_NIC_REG(0x290))
190 192 #define CRB_V2P_1 (UNM_NIC_REG(0x294))
191 193 #define CRB_V2P_2 (UNM_NIC_REG(0x298))
192 194 #define CRB_V2P_3 (UNM_NIC_REG(0x29c))
193 195 #define CRB_V2P(port) (CRB_V2P_0 + ((port) * 4))
194 196 #define CRB_DRIVER_VERSION (UNM_NIC_REG(0x2a0))
195 197
196 198 #define CRB_CNT_DBG1 (UNM_NIC_REG(0x2a4))
197 199 #define CRB_CNT_DBG2 (UNM_NIC_REG(0x2a8))
198 200 #define CRB_CNT_DBG3 (UNM_NIC_REG(0x2ac))
199 201
200 202 /* ends here */
201 203 #define UNM_HW_H0_CH_HUB_ADR 0x05
202 204 #define UNM_HW_H1_CH_HUB_ADR 0x0E
203 205 #define UNM_HW_H2_CH_HUB_ADR 0x03
204 206 #define UNM_HW_H3_CH_HUB_ADR 0x01
205 207 #define UNM_HW_H4_CH_HUB_ADR 0x06
206 208 #define UNM_HW_H5_CH_HUB_ADR 0x07
207 209 #define UNM_HW_H6_CH_HUB_ADR 0x08
208 210 /*
209 211 * WARNING: pex_tgt_adr.v assumes if MSB of hub adr is set then it is an
210 212 * ILLEGAL hub!!!!!
211 213 */
212 214
213 215 /* Hub 0 */
214 216 #define UNM_HW_MN_CRB_AGT_ADR 0x15
215 217 #define UNM_HW_MS_CRB_AGT_ADR 0x25
216 218
217 219 /* Hub 1 */
218 220 #define UNM_HW_PS_CRB_AGT_ADR 0x73
219 221 #define UNM_HW_SS_CRB_AGT_ADR 0x20
220 222 #define UNM_HW_RPMX3_CRB_AGT_ADR 0x0b
221 223 #define UNM_HW_QMS_CRB_AGT_ADR 0x00
222 224 #define UNM_HW_SQGS0_CRB_AGT_ADR 0x01
223 225 #define UNM_HW_SQGS1_CRB_AGT_ADR 0x02
224 226 #define UNM_HW_SQGS2_CRB_AGT_ADR 0x03
225 227 #define UNM_HW_SQGS3_CRB_AGT_ADR 0x04
226 228 #define UNM_HW_C2C0_CRB_AGT_ADR 0x58
227 229 #define UNM_HW_C2C1_CRB_AGT_ADR 0x59
228 230 #define UNM_HW_C2C2_CRB_AGT_ADR 0x5a
229 231 #define UNM_HW_RPMX2_CRB_AGT_ADR 0x0a
230 232 #define UNM_HW_RPMX4_CRB_AGT_ADR 0x0c
231 233 #define UNM_HW_RPMX7_CRB_AGT_ADR 0x0f
232 234 #define UNM_HW_RPMX9_CRB_AGT_ADR 0x12
233 235 #define UNM_HW_SMB_CRB_AGT_ADR 0x18
234 236
235 237 /* Hub 2 */
236 238 #define UNM_HW_NIU_CRB_AGT_ADR 0x31
237 239 #define UNM_HW_I2C0_CRB_AGT_ADR 0x19
238 240 #define UNM_HW_I2C1_CRB_AGT_ADR 0x29
239 241
240 242 #define UNM_HW_SN_CRB_AGT_ADR 0x10
241 243 #define UNM_HW_I2Q_CRB_AGT_ADR 0x20
242 244 #define UNM_HW_LPC_CRB_AGT_ADR 0x22
243 245 #define UNM_HW_ROMUSB_CRB_AGT_ADR 0x21
244 246 #define UNM_HW_QM_CRB_AGT_ADR 0x66
245 247 #define UNM_HW_SQG0_CRB_AGT_ADR 0x60
246 248 #define UNM_HW_SQG1_CRB_AGT_ADR 0x61
247 249 #define UNM_HW_SQG2_CRB_AGT_ADR 0x62
248 250 #define UNM_HW_SQG3_CRB_AGT_ADR 0x63
249 251 #define UNM_HW_RPMX1_CRB_AGT_ADR 0x09
250 252 #define UNM_HW_RPMX5_CRB_AGT_ADR 0x0d
251 253 #define UNM_HW_RPMX6_CRB_AGT_ADR 0x0e
252 254 #define UNM_HW_RPMX8_CRB_AGT_ADR 0x11
253 255
254 256 /* Hub 3 */
255 257 #define UNM_HW_PH_CRB_AGT_ADR 0x1A
256 258 #define UNM_HW_SRE_CRB_AGT_ADR 0x50
257 259 #define UNM_HW_EG_CRB_AGT_ADR 0x51
258 260 #define UNM_HW_RPMX0_CRB_AGT_ADR 0x08
259 261
260 262 /* Hub 4 */
261 263 #define UNM_HW_PEGN0_CRB_AGT_ADR 0x40
262 264 #define UNM_HW_PEGN1_CRB_AGT_ADR 0x41
263 265 #define UNM_HW_PEGN2_CRB_AGT_ADR 0x42
264 266 #define UNM_HW_PEGN3_CRB_AGT_ADR 0x43
265 267 #define UNM_HW_PEGNI_CRB_AGT_ADR 0x44
266 268 #define UNM_HW_PEGND_CRB_AGT_ADR 0x45
267 269 #define UNM_HW_PEGNC_CRB_AGT_ADR 0x46
268 270 #define UNM_HW_PEGR0_CRB_AGT_ADR 0x47
269 271 #define UNM_HW_PEGR1_CRB_AGT_ADR 0x48
270 272 #define UNM_HW_PEGR2_CRB_AGT_ADR 0x49
271 273 #define UNM_HW_PEGR3_CRB_AGT_ADR 0x4a
272 274 #define UNM_HW_PEGN4_CRB_AGT_ADR 0x4b
273 275
274 276 /* Hub 5 */
275 277 #define UNM_HW_PEGS0_CRB_AGT_ADR 0x40
276 278 #define UNM_HW_PEGS1_CRB_AGT_ADR 0x41
277 279 #define UNM_HW_PEGS2_CRB_AGT_ADR 0x42
278 280 #define UNM_HW_PEGS3_CRB_AGT_ADR 0x43
279 281 #define UNM_HW_PEGSI_CRB_AGT_ADR 0x44
280 282 #define UNM_HW_PEGSD_CRB_AGT_ADR 0x45
281 283 #define UNM_HW_PEGSC_CRB_AGT_ADR 0x46
282 284
283 285 /* Hub 6 */
284 286 #define UNM_HW_CAS0_CRB_AGT_ADR 0x46
285 287 #define UNM_HW_CAS1_CRB_AGT_ADR 0x47
286 288 #define UNM_HW_CAS2_CRB_AGT_ADR 0x48
287 289 #define UNM_HW_CAS3_CRB_AGT_ADR 0x49
288 290 #define UNM_HW_NCM_CRB_AGT_ADR 0x16
289 291 #define UNM_HW_TMR_CRB_AGT_ADR 0x17
290 292 #define UNM_HW_XDMA_CRB_AGT_ADR 0x05
291 293 #define UNM_HW_OCM0_CRB_AGT_ADR 0x06
292 294 #define UNM_HW_OCM1_CRB_AGT_ADR 0x07
293 295
294 296 /* This field defines PCI/X adr [25:20] of agents on the CRB */
295 297
296 298 #define UNM_HW_PX_MAP_CRB_PH 0
297 299 #define UNM_HW_PX_MAP_CRB_PS 1
298 300 #define UNM_HW_PX_MAP_CRB_MN 2
299 301 #define UNM_HW_PX_MAP_CRB_MS 3
300 302 #define UNM_HW_PX_MAP_CRB_SRE 5
301 303 #define UNM_HW_PX_MAP_CRB_NIU 6
302 304 #define UNM_HW_PX_MAP_CRB_QMN 7
303 305 #define UNM_HW_PX_MAP_CRB_SQN0 8
304 306 #define UNM_HW_PX_MAP_CRB_SQN1 9
305 307 #define UNM_HW_PX_MAP_CRB_SQN2 10
306 308 #define UNM_HW_PX_MAP_CRB_SQN3 11
307 309 #define UNM_HW_PX_MAP_CRB_QMS 12
308 310 #define UNM_HW_PX_MAP_CRB_SQS0 13
309 311 #define UNM_HW_PX_MAP_CRB_SQS1 14
310 312 #define UNM_HW_PX_MAP_CRB_SQS2 15
311 313 #define UNM_HW_PX_MAP_CRB_SQS3 16
312 314 #define UNM_HW_PX_MAP_CRB_PGN0 17
313 315 #define UNM_HW_PX_MAP_CRB_PGN1 18
314 316 #define UNM_HW_PX_MAP_CRB_PGN2 19
315 317 #define UNM_HW_PX_MAP_CRB_PGN3 20
316 318 #define UNM_HW_PX_MAP_CRB_PGN4 (UNM_HW_PX_MAP_CRB_SQS2)
317 319 #define UNM_HW_PX_MAP_CRB_PGND 21
318 320 #define UNM_HW_PX_MAP_CRB_PGNI 22
319 321 #define UNM_HW_PX_MAP_CRB_PGS0 23
320 322 #define UNM_HW_PX_MAP_CRB_PGS1 24
321 323 #define UNM_HW_PX_MAP_CRB_PGS2 25
322 324 #define UNM_HW_PX_MAP_CRB_PGS3 26
323 325 #define UNM_HW_PX_MAP_CRB_PGSD 27
324 326 #define UNM_HW_PX_MAP_CRB_PGSI 28
325 327 #define UNM_HW_PX_MAP_CRB_SN 29
326 328 #define UNM_HW_PX_MAP_CRB_EG 31
327 329 #define UNM_HW_PX_MAP_CRB_PH2 32
328 330 #define UNM_HW_PX_MAP_CRB_PS2 33
329 331 #define UNM_HW_PX_MAP_CRB_CAM 34
330 332 #define UNM_HW_PX_MAP_CRB_CAS0 35
331 333 #define UNM_HW_PX_MAP_CRB_CAS1 36
332 334 #define UNM_HW_PX_MAP_CRB_CAS2 37
333 335 #define UNM_HW_PX_MAP_CRB_C2C0 38
334 336 #define UNM_HW_PX_MAP_CRB_C2C1 39
335 337 #define UNM_HW_PX_MAP_CRB_TIMR 40
336 338 /*
337 339 * #define PX_MAP_CRB_SS 41
338 340 */
339 341 #define UNM_HW_PX_MAP_CRB_RPMX1 42
340 342 #define UNM_HW_PX_MAP_CRB_RPMX2 43
341 343 #define UNM_HW_PX_MAP_CRB_RPMX3 44
342 344 #define UNM_HW_PX_MAP_CRB_RPMX4 45
343 345 #define UNM_HW_PX_MAP_CRB_RPMX5 46
344 346 #define UNM_HW_PX_MAP_CRB_RPMX6 47
345 347 #define UNM_HW_PX_MAP_CRB_RPMX7 48
346 348 #define UNM_HW_PX_MAP_CRB_XDMA 49
347 349 #define UNM_HW_PX_MAP_CRB_I2Q 50
348 350 #define UNM_HW_PX_MAP_CRB_ROMUSB 51
349 351 #define UNM_HW_PX_MAP_CRB_CAS3 52
350 352 #define UNM_HW_PX_MAP_CRB_RPMX0 53
351 353 #define UNM_HW_PX_MAP_CRB_RPMX8 54
352 354 #define UNM_HW_PX_MAP_CRB_RPMX9 55
353 355 #define UNM_HW_PX_MAP_CRB_OCM0 56
354 356 #define UNM_HW_PX_MAP_CRB_OCM1 57
355 357 #define UNM_HW_PX_MAP_CRB_SMB 58
356 358 #define UNM_HW_PX_MAP_CRB_I2C0 59
357 359 #define UNM_HW_PX_MAP_CRB_I2C1 60
358 360 #define UNM_HW_PX_MAP_CRB_LPC 61
359 361 #define UNM_HW_PX_MAP_CRB_PGNC 62
360 362 #define UNM_HW_PX_MAP_CRB_PGR0 63
361 363 #define UNM_HW_PX_MAP_CRB_PGR1 4
362 364 #define UNM_HW_PX_MAP_CRB_PGR2 30
363 365 #define UNM_HW_PX_MAP_CRB_PGR3 41
364 366
365 367 /* This field defines CRB adr [31:20] of the agents */
366 368
367 369 #define UNM_HW_CRB_HUB_AGT_ADR_MN ((UNM_HW_H0_CH_HUB_ADR << 7) | \
368 370 UNM_HW_MN_CRB_AGT_ADR)
369 371 #define UNM_HW_CRB_HUB_AGT_ADR_PH ((UNM_HW_H0_CH_HUB_ADR << 7) | \
370 372 UNM_HW_PH_CRB_AGT_ADR)
371 373 #define UNM_HW_CRB_HUB_AGT_ADR_MS ((UNM_HW_H0_CH_HUB_ADR << 7) | \
372 374 UNM_HW_MS_CRB_AGT_ADR)
373 375
374 376 #define UNM_HW_CRB_HUB_AGT_ADR_PS ((UNM_HW_H1_CH_HUB_ADR << 7) | \
375 377 UNM_HW_PS_CRB_AGT_ADR)
376 378 #define UNM_HW_CRB_HUB_AGT_ADR_SS ((UNM_HW_H1_CH_HUB_ADR << 7) | \
377 379 UNM_HW_SS_CRB_AGT_ADR)
378 380 #define UNM_HW_CRB_HUB_AGT_ADR_RPMX3 ((UNM_HW_H1_CH_HUB_ADR << 7) | \
379 381 UNM_HW_RPMX3_CRB_AGT_ADR)
380 382 #define UNM_HW_CRB_HUB_AGT_ADR_QMS ((UNM_HW_H1_CH_HUB_ADR << 7) | \
381 383 UNM_HW_QMS_CRB_AGT_ADR)
382 384 #define UNM_HW_CRB_HUB_AGT_ADR_SQS0 ((UNM_HW_H1_CH_HUB_ADR << 7) | \
383 385 UNM_HW_SQGS0_CRB_AGT_ADR)
384 386 #define UNM_HW_CRB_HUB_AGT_ADR_SQS1 ((UNM_HW_H1_CH_HUB_ADR << 7) | \
385 387 UNM_HW_SQGS1_CRB_AGT_ADR)
386 388 #define UNM_HW_CRB_HUB_AGT_ADR_SQS2 ((UNM_HW_H1_CH_HUB_ADR << 7) | \
387 389 UNM_HW_SQGS2_CRB_AGT_ADR)
388 390 #define UNM_HW_CRB_HUB_AGT_ADR_SQS3 ((UNM_HW_H1_CH_HUB_ADR << 7) | \
389 391 UNM_HW_SQGS3_CRB_AGT_ADR)
390 392 #define UNM_HW_CRB_HUB_AGT_ADR_C2C0 ((UNM_HW_H1_CH_HUB_ADR << 7) | \
391 393 UNM_HW_C2C0_CRB_AGT_ADR)
392 394 #define UNM_HW_CRB_HUB_AGT_ADR_C2C1 ((UNM_HW_H1_CH_HUB_ADR << 7) | \
393 395 UNM_HW_C2C1_CRB_AGT_ADR)
394 396 #define UNM_HW_CRB_HUB_AGT_ADR_RPMX2 ((UNM_HW_H1_CH_HUB_ADR << 7) | \
395 397 UNM_HW_RPMX2_CRB_AGT_ADR)
396 398 #define UNM_HW_CRB_HUB_AGT_ADR_RPMX4 ((UNM_HW_H1_CH_HUB_ADR << 7) | \
397 399 UNM_HW_RPMX4_CRB_AGT_ADR)
398 400 #define UNM_HW_CRB_HUB_AGT_ADR_RPMX7 ((UNM_HW_H1_CH_HUB_ADR << 7) | \
399 401 UNM_HW_RPMX7_CRB_AGT_ADR)
400 402 #define UNM_HW_CRB_HUB_AGT_ADR_RPMX9 ((UNM_HW_H1_CH_HUB_ADR << 7) | \
401 403 UNM_HW_RPMX9_CRB_AGT_ADR)
402 404 #define UNM_HW_CRB_HUB_AGT_ADR_SMB ((UNM_HW_H1_CH_HUB_ADR << 7) | \
403 405 UNM_HW_SMB_CRB_AGT_ADR)
404 406
405 407 #define UNM_HW_CRB_HUB_AGT_ADR_NIU ((UNM_HW_H2_CH_HUB_ADR << 7) | \
406 408 UNM_HW_NIU_CRB_AGT_ADR)
407 409 #define UNM_HW_CRB_HUB_AGT_ADR_I2C0 ((UNM_HW_H2_CH_HUB_ADR << 7) | \
408 410 UNM_HW_I2C0_CRB_AGT_ADR)
409 411 #define UNM_HW_CRB_HUB_AGT_ADR_I2C1 ((UNM_HW_H2_CH_HUB_ADR << 7) | \
410 412 UNM_HW_I2C1_CRB_AGT_ADR)
411 413
412 414 #define UNM_HW_CRB_HUB_AGT_ADR_SRE ((UNM_HW_H3_CH_HUB_ADR << 7) | \
413 415 UNM_HW_SRE_CRB_AGT_ADR)
414 416 #define UNM_HW_CRB_HUB_AGT_ADR_EG ((UNM_HW_H3_CH_HUB_ADR << 7) | \
415 417 UNM_HW_EG_CRB_AGT_ADR)
416 418 #define UNM_HW_CRB_HUB_AGT_ADR_RPMX0 ((UNM_HW_H3_CH_HUB_ADR << 7) | \
417 419 UNM_HW_RPMX0_CRB_AGT_ADR)
418 420 #define UNM_HW_CRB_HUB_AGT_ADR_QMN ((UNM_HW_H3_CH_HUB_ADR << 7) | \
419 421 UNM_HW_QM_CRB_AGT_ADR)
420 422 #define UNM_HW_CRB_HUB_AGT_ADR_SQN0 ((UNM_HW_H3_CH_HUB_ADR << 7) | \
421 423 UNM_HW_SQG0_CRB_AGT_ADR)
422 424 #define UNM_HW_CRB_HUB_AGT_ADR_SQN1 ((UNM_HW_H3_CH_HUB_ADR << 7) | \
423 425 UNM_HW_SQG1_CRB_AGT_ADR)
424 426 #define UNM_HW_CRB_HUB_AGT_ADR_SQN2 ((UNM_HW_H3_CH_HUB_ADR << 7) | \
425 427 UNM_HW_SQG2_CRB_AGT_ADR)
426 428 #define UNM_HW_CRB_HUB_AGT_ADR_SQN3 ((UNM_HW_H3_CH_HUB_ADR << 7) | \
427 429 UNM_HW_SQG3_CRB_AGT_ADR)
428 430 #define UNM_HW_CRB_HUB_AGT_ADR_RPMX1 ((UNM_HW_H3_CH_HUB_ADR << 7) | \
429 431 UNM_HW_RPMX1_CRB_AGT_ADR)
430 432 #define UNM_HW_CRB_HUB_AGT_ADR_RPMX5 ((UNM_HW_H3_CH_HUB_ADR << 7) | \
431 433 UNM_HW_RPMX5_CRB_AGT_ADR)
432 434 #define UNM_HW_CRB_HUB_AGT_ADR_RPMX6 ((UNM_HW_H3_CH_HUB_ADR << 7) | \
433 435 UNM_HW_RPMX6_CRB_AGT_ADR)
434 436 #define UNM_HW_CRB_HUB_AGT_ADR_RPMX8 ((UNM_HW_H3_CH_HUB_ADR << 7) | \
435 437 UNM_HW_RPMX8_CRB_AGT_ADR)
436 438 #define UNM_HW_CRB_HUB_AGT_ADR_CAS0 ((UNM_HW_H3_CH_HUB_ADR << 7) | \
437 439 UNM_HW_CAS0_CRB_AGT_ADR)
438 440 #define UNM_HW_CRB_HUB_AGT_ADR_CAS1 ((UNM_HW_H3_CH_HUB_ADR << 7) | \
439 441 UNM_HW_CAS1_CRB_AGT_ADR)
440 442 #define UNM_HW_CRB_HUB_AGT_ADR_CAS2 ((UNM_HW_H3_CH_HUB_ADR << 7) | \
441 443 UNM_HW_CAS2_CRB_AGT_ADR)
442 444 #define UNM_HW_CRB_HUB_AGT_ADR_CAS3 ((UNM_HW_H3_CH_HUB_ADR << 7) | \
443 445 UNM_HW_CAS3_CRB_AGT_ADR)
444 446
445 447 #define UNM_HW_CRB_HUB_AGT_ADR_PGNI ((UNM_HW_H4_CH_HUB_ADR << 7) | \
446 448 UNM_HW_PEGNI_CRB_AGT_ADR)
447 449 #define UNM_HW_CRB_HUB_AGT_ADR_PGND ((UNM_HW_H4_CH_HUB_ADR << 7) | \
448 450 UNM_HW_PEGND_CRB_AGT_ADR)
449 451 #define UNM_HW_CRB_HUB_AGT_ADR_PGN0 ((UNM_HW_H4_CH_HUB_ADR << 7) | \
450 452 UNM_HW_PEGN0_CRB_AGT_ADR)
451 453 #define UNM_HW_CRB_HUB_AGT_ADR_PGN1 ((UNM_HW_H4_CH_HUB_ADR << 7) | \
452 454 UNM_HW_PEGN1_CRB_AGT_ADR)
453 455 #define UNM_HW_CRB_HUB_AGT_ADR_PGN2 ((UNM_HW_H4_CH_HUB_ADR << 7) | \
454 456 UNM_HW_PEGN2_CRB_AGT_ADR)
455 457 #define UNM_HW_CRB_HUB_AGT_ADR_PGN3 ((UNM_HW_H4_CH_HUB_ADR << 7) | \
456 458 UNM_HW_PEGN3_CRB_AGT_ADR)
457 459 #define UNM_HW_CRB_HUB_AGT_ADR_PGN4 ((UNM_HW_H4_CH_HUB_ADR << 7) | \
458 460 UNM_HW_PEGN4_CRB_AGT_ADR)
459 461
460 462 #define UNM_HW_CRB_HUB_AGT_ADR_PGNC ((UNM_HW_H4_CH_HUB_ADR << 7) | \
461 463 UNM_HW_PEGNC_CRB_AGT_ADR)
462 464 #define UNM_HW_CRB_HUB_AGT_ADR_PGR0 ((UNM_HW_H4_CH_HUB_ADR << 7) | \
463 465 UNM_HW_PEGR0_CRB_AGT_ADR)
464 466 #define UNM_HW_CRB_HUB_AGT_ADR_PGR1 ((UNM_HW_H4_CH_HUB_ADR << 7) | \
465 467 UNM_HW_PEGR1_CRB_AGT_ADR)
466 468 #define UNM_HW_CRB_HUB_AGT_ADR_PGR2 ((UNM_HW_H4_CH_HUB_ADR << 7) | \
467 469 UNM_HW_PEGR2_CRB_AGT_ADR)
468 470 #define UNM_HW_CRB_HUB_AGT_ADR_PGR3 ((UNM_HW_H4_CH_HUB_ADR << 7) | \
469 471 UNM_HW_PEGR3_CRB_AGT_ADR)
470 472
471 473 #define UNM_HW_CRB_HUB_AGT_ADR_PGSI ((UNM_HW_H5_CH_HUB_ADR << 7) | \
472 474 UNM_HW_PEGSI_CRB_AGT_ADR)
473 475 #define UNM_HW_CRB_HUB_AGT_ADR_PGSD ((UNM_HW_H5_CH_HUB_ADR << 7) | \
474 476 UNM_HW_PEGSD_CRB_AGT_ADR)
475 477 #define UNM_HW_CRB_HUB_AGT_ADR_PGS0 ((UNM_HW_H5_CH_HUB_ADR << 7) | \
476 478 UNM_HW_PEGS0_CRB_AGT_ADR)
477 479 #define UNM_HW_CRB_HUB_AGT_ADR_PGS1 ((UNM_HW_H5_CH_HUB_ADR << 7) | \
478 480 UNM_HW_PEGS1_CRB_AGT_ADR)
479 481 #define UNM_HW_CRB_HUB_AGT_ADR_PGS2 ((UNM_HW_H5_CH_HUB_ADR << 7) | \
480 482 UNM_HW_PEGS2_CRB_AGT_ADR)
481 483 #define UNM_HW_CRB_HUB_AGT_ADR_PGS3 ((UNM_HW_H5_CH_HUB_ADR << 7) | \
482 484 UNM_HW_PEGS3_CRB_AGT_ADR)
483 485 #define UNM_HW_CRB_HUB_AGT_ADR_PGSC ((UNM_HW_H5_CH_HUB_ADR << 7) | \
484 486 UNM_HW_PEGSC_CRB_AGT_ADR)
485 487
486 488 #define UNM_HW_CRB_HUB_AGT_ADR_CAM ((UNM_HW_H6_CH_HUB_ADR << 7) | \
487 489 UNM_HW_NCM_CRB_AGT_ADR)
488 490 #define UNM_HW_CRB_HUB_AGT_ADR_TIMR ((UNM_HW_H6_CH_HUB_ADR << 7) | \
489 491 UNM_HW_TMR_CRB_AGT_ADR)
490 492 #define UNM_HW_CRB_HUB_AGT_ADR_XDMA ((UNM_HW_H6_CH_HUB_ADR << 7) | \
491 493 UNM_HW_XDMA_CRB_AGT_ADR)
492 494 #define UNM_HW_CRB_HUB_AGT_ADR_SN ((UNM_HW_H6_CH_HUB_ADR << 7) | \
493 495 UNM_HW_SN_CRB_AGT_ADR)
494 496 #define UNM_HW_CRB_HUB_AGT_ADR_I2Q ((UNM_HW_H6_CH_HUB_ADR << 7) | \
495 497 UNM_HW_I2Q_CRB_AGT_ADR)
496 498 #define UNM_HW_CRB_HUB_AGT_ADR_ROMUSB ((UNM_HW_H6_CH_HUB_ADR << 7) | \
497 499 UNM_HW_ROMUSB_CRB_AGT_ADR)
498 500 #define UNM_HW_CRB_HUB_AGT_ADR_OCM0 ((UNM_HW_H6_CH_HUB_ADR << 7) | \
499 501 UNM_HW_OCM0_CRB_AGT_ADR)
500 502 #define UNM_HW_CRB_HUB_AGT_ADR_OCM1 ((UNM_HW_H6_CH_HUB_ADR << 7) | \
501 503 UNM_HW_OCM1_CRB_AGT_ADR)
502 504 #define UNM_HW_CRB_HUB_AGT_ADR_LPC ((UNM_HW_H6_CH_HUB_ADR << 7) | \
503 505 UNM_HW_LPC_CRB_AGT_ADR)
504 506
505 507 /*
506 508 * ROM USB CRB space is divided into 4 regions depending on decode of
507 509 * address bits [19:16]
508 510 */
509 511 #define ROMUSB_GLB (UNM_CRB_ROMUSB + 0x00000)
510 512 #define ROMUSB_ROM (UNM_CRB_ROMUSB + 0x10000)
511 513 #define ROMUSB_USB (UNM_CRB_ROMUSB + 0x20000)
512 514 #define ROMUSB_DIRECT_ROM (UNM_CRB_ROMUSB + 0x30000)
513 515 #define ROMUSB_TAP (UNM_CRB_ROMUSB + 0x40000)
514 516
515 517 /* ROMUSB GLB register definitions */
516 518 #define UNM_ROMUSB_GLB_CONTROL (ROMUSB_GLB + 0x0000)
517 519 #define UNM_ROMUSB_GLB_STATUS (ROMUSB_GLB + 0x0004)
518 520 #define UNM_ROMUSB_GLB_SW_RESET (ROMUSB_GLB + 0x0008)
519 521 #define UNM_ROMUSB_GLB_PAD_GPIO_I (ROMUSB_GLB + 0x000c)
520 522 #define UNM_ROMUSB_GLB_RNG_PLL_CTL (ROMUSB_GLB + 0x0010)
521 523 #define UNM_ROMUSB_GLB_TEST_MUX_O (ROMUSB_GLB + 0x0014)
522 524 #define UNM_ROMUSB_GLB_PLL0_CTRL (ROMUSB_GLB + 0x0018)
523 525 #define UNM_ROMUSB_GLB_PLL1_CTRL (ROMUSB_GLB + 0x001c)
524 526 #define UNM_ROMUSB_GLB_PLL2_CTRL (ROMUSB_GLB + 0x0020)
525 527 #define UNM_ROMUSB_GLB_PLL3_CTRL (ROMUSB_GLB + 0x0024)
526 528 #define UNM_ROMUSB_GLB_PLL_LOCK (ROMUSB_GLB + 0x0028)
527 529 #define UNM_ROMUSB_GLB_EXTERN_INT (ROMUSB_GLB + 0x002c)
528 530 #define UNM_ROMUSB_GLB_PH_RST (ROMUSB_GLB + 0x0030)
529 531 #define UNM_ROMUSB_GLB_PS_RST (ROMUSB_GLB + 0x0034)
530 532 #define UNM_ROMUSB_GLB_CAS_RST (ROMUSB_GLB + 0x0038)
531 533 #define UNM_ROMUSB_GLB_MIU_RST (ROMUSB_GLB + 0x003c)
532 534 #define UNM_ROMUSB_GLB_CRB_RST (ROMUSB_GLB + 0x0040)
533 535 #define UNM_ROMUSB_GLB_TEST_MUX_SEL (ROMUSB_GLB + 0x0044)
534 536 #define UNM_ROMUSB_GLB_MN_COM_A2T (ROMUSB_GLB + 0x0050)
535 537 #define UNM_ROMUSB_GLB_MN_COM_A2T (ROMUSB_GLB + 0x0050)
536 538 #define UNM_ROMUSB_GLB_REV_ID (ROMUSB_GLB + 0x0054)
537 539 #define UNM_ROMUSB_GLB_PEGTUNE_DONE (ROMUSB_GLB + 0x005c)
538 540 #define UNM_ROMUSB_GLB_VENDOR_DEV_ID (ROMUSB_GLB + 0x0058)
539 541 #define UNM_ROMUSB_GLB_CHIP_CLK_CTRL (ROMUSB_GLB + 0x00a8)
540 542
541 543 #define UNM_ROMUSB_GPIO(n) ((n) <= 15 ? (ROMUSB_GLB + 0x60 + (4 * (n))): \
542 544 ((n) <= 18) ? (ROMUSB_GLB + 0x70 + (4 * (n))) : \
543 545 (ROMUSB_GLB + 0x70 + (4 * (19))))
544 546
545 547 #define UNM_ROMUSB_ROM_CONTROL (ROMUSB_ROM + 0x0000)
546 548 #define UNM_ROMUSB_ROM_INSTR_OPCODE (ROMUSB_ROM + 0x0004)
547 549 #define UNM_ROMUSB_ROM_ADDRESS (ROMUSB_ROM + 0x0008)
548 550 #define UNM_ROMUSB_ROM_WDATA (ROMUSB_ROM + 0x000c)
549 551 #define UNM_ROMUSB_ROM_ABYTE_CNT (ROMUSB_ROM + 0x0010)
550 552 #define UNM_ROMUSB_ROM_DUMMY_BYTE_CNT (ROMUSB_ROM + 0x0014)
551 553 #define UNM_ROMUSB_ROM_RDATA (ROMUSB_ROM + 0x0018)
552 554 #define UNM_ROMUSB_ROM_AGT_TAG (ROMUSB_ROM + 0x001c)
553 555 #define UNM_ROMUSB_ROM_TIME_PARM (ROMUSB_ROM + 0x0020)
554 556 #define UNM_ROMUSB_ROM_CLK_DIV (ROMUSB_ROM + 0x0024)
555 557 #define UNM_ROMUSB_ROM_MISS_INSTR (ROMUSB_ROM + 0x0028)
556 558
557 559 #define UNM_ROMUSB_ROM_WRSR_INSTR 0x01
558 560 #define UNM_ROMUSB_ROM_PP_INSTR 0x02
559 561 #define UNM_ROMUSB_ROM_READ_INSTR 0x03
560 562 #define UNM_ROMUSB_ROM_WRDI_INSTR 0x04
561 563 #define UNM_ROMUSB_ROM_RDSR_INSTR 0x05
562 564 #define UNM_ROMUSB_ROM_WREN_INSTR 0x06
563 565 #define UNM_ROMUSB_ROM_FAST_RD_INSTR 0x0B
564 566 #define UNM_ROMUSB_ROM_RES_INSTR 0xAB
565 567 #define UNM_ROMUSB_ROM_BE_INSTR 0xC7
566 568 #define UNM_ROMUSB_ROM_DP_INSTR 0xC9
567 569 #define UNM_ROMUSB_ROM_SE_INSTR 0xD8
568 570
569 571 /* Lock IDs for ROM lock */
570 572 #define ROM_LOCK_DRIVER 0x0d417340
571 573
572 574 /* Lock IDs for PHY lock */
573 575 #define PHY_LOCK_DRIVER 0x44524956
574 576
575 577 #define UNM_PCI_CRB_WINDOWSIZE 0x00100000 /* all are 1MB windows */
576 578 #define UNM_PCI_CRB_WINDOW(A) (UNM_PCI_CRBSPACE + (A)*UNM_PCI_CRB_WINDOWSIZE)
577 579 #define UNM_CRB_C2C_0 (UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_C2C0))
578 580 #define UNM_CRB_C2C_1 (UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_C2C1))
579 581 #define UNM_CRB_C2C_2 (UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_C2C2))
580 582 #define UNM_CRB_CAM (UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_CAM))
581 583 #define UNM_CRB_CASPER (UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_CAS))
582 584 #define UNM_CRB_CASPER_0 (UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_CAS0))
583 585 #define UNM_CRB_CASPER_1 (UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_CAS1))
584 586 #define UNM_CRB_CASPER_2 (UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_CAS2))
585 587 #define UNM_CRB_DDR_MD (UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_MS))
586 588 #define UNM_CRB_DDR_NET (UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_MN))
587 589 #define UNM_CRB_EPG (UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_EG))
588 590 #define UNM_CRB_I2Q (UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_I2Q))
589 591 #define UNM_CRB_NIU (UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_NIU))
590 592 /* HACK upon HACK upon HACK (for PCIE builds) */
591 593 #define UNM_CRB_PCIX_HOST (UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_PH))
592 594 #define UNM_CRB_PCIX_HOST2 (UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_PH2))
593 595 #define UNM_CRB_PCIX_MD (UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_PS))
594 596 #define UNM_CRB_PCIE (UNM_CRB_PCIX_MD)
595 597 /* window 1 pcie slot */
596 598 #define UNM_CRB_PCIE2 (UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_PS2))
597 599
598 600 #define UNM_CRB_PEG_MD_0 (UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_PGS0))
599 601 #define UNM_CRB_PEG_MD_1 (UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_PGS1))
600 602 #define UNM_CRB_PEG_MD_2 (UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_PGS2))
601 603 #define UNM_CRB_PEG_MD_3 (UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_PGS3))
602 604 #define UNM_CRB_PEG_MD_3 (UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_PGS3))
603 605 #define UNM_CRB_PEG_MD_D (UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_PGSD))
604 606 #define UNM_CRB_PEG_MD_I (UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_PGSI))
605 607 #define UNM_CRB_PEG_NET_0 (UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_PGN0))
606 608 #define UNM_CRB_PEG_NET_1 (UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_PGN1))
607 609 #define UNM_CRB_PEG_NET_2 (UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_PGN2))
608 610 #define UNM_CRB_PEG_NET_3 (UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_PGN3))
609 611 #define UNM_CRB_PEG_NET_4 (UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_PGN4))
610 612 #define UNM_CRB_PEG_NET_D (UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_PGND))
611 613 #define UNM_CRB_PEG_NET_I (UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_PGNI))
612 614 #define UNM_CRB_PQM_MD (UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_QMS))
613 615 #define UNM_CRB_PQM_NET (UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_QMN))
614 616 #define UNM_CRB_QDR_MD (UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_SS))
615 617 #define UNM_CRB_QDR_NET (UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_SN))
616 618 #define UNM_CRB_ROMUSB (UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_ROMUSB))
617 619 #define UNM_CRB_RPMX_0 (UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_RPMX0))
618 620 #define UNM_CRB_RPMX_1 (UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_RPMX1))
619 621 #define UNM_CRB_RPMX_2 (UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_RPMX2))
620 622 #define UNM_CRB_RPMX_3 (UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_RPMX3))
621 623 #define UNM_CRB_RPMX_4 (UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_RPMX4))
622 624 #define UNM_CRB_RPMX_5 (UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_RPMX5))
623 625 #define UNM_CRB_RPMX_6 (UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_RPMX6))
624 626 #define UNM_CRB_RPMX_7 (UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_RPMX7))
625 627 #define UNM_CRB_SQM_MD_0 (UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_SQS0))
626 628 #define UNM_CRB_SQM_MD_1 (UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_SQS1))
627 629 #define UNM_CRB_SQM_MD_2 (UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_SQS2))
628 630 #define UNM_CRB_SQM_MD_3 (UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_SQS3))
629 631 #define UNM_CRB_SQM_NET_0 (UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_SQN0))
630 632 #define UNM_CRB_SQM_NET_1 (UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_SQN1))
631 633 #define UNM_CRB_SQM_NET_2 (UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_SQN2))
632 634 #define UNM_CRB_SQM_NET_3 (UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_SQN3))
633 635 #define UNM_CRB_SRE (UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_SRE))
634 636 #define UNM_CRB_TIMER (UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_TIMR))
635 637 #define UNM_CRB_XDMA (UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_XDMA))
636 638 #define UNM_CRB_I2C0 (UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_I2C0))
637 639 #define UNM_CRB_I2C1 (UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_I2C1))
638 640 #define UNM_CRB_OCM0 (UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_OCM0))
639 641 #define UNM_CRB_SMB (UNM_PCI_CRB_WINDOW(UNM_HW_PX_MAP_CRB_SMB))
640 642
641 643 #define UNM_CRB_MAX (UNM_PCI_CRB_WINDOW(64))
642 644
643 645 /*
644 646 * ====================== BASE ADDRESSES ON-CHIP ======================
645 647 * Base addresses of major components on-chip.
646 648 * ====================== BASE ADDRESSES ON-CHIP ======================
647 649 */
648 650 #define UNM_ADDR_DDR_NET 0x0000000000000000
649 651 #define UNM_ADDR_DDR_NET_MAX 0x000000000fffffff
650 652
651 653 /*
652 654 * Imbus address bit used to indicate a host address. This bit is
653 655 * eliminated by the pcie bar and bar select before presentation
654 656 * over pcie.
655 657 */
656 658 /* host memory via IMBUS */
657 659 #define NX_P2_ADDR_PCIE 0x0000000800000000
658 660 #define NX_P3_ADDR_PCIE 0x0000008000000000
659 661 #define UNM_ADDR_PCIE_MAX 0x0000000FFFFFFFFF
660 662 #define UNM_ADDR_OCM0 0x0000000200000000
661 663 #define UNM_ADDR_OCM0_MAX 0x00000002000fffff
662 664 #define UNM_ADDR_OCM1 0x0000000200400000
663 665 #define UNM_ADDR_OCM1_MAX 0x00000002004fffff
664 666 #define UNM_ADDR_QDR_NET 0x0000000300000000
665 667
666 668 #define NX_P2_ADDR_QDR_NET_MAX 0x00000003001fffff
667 669 #define NX_P3_ADDR_QDR_NET_MAX 0x0000000303ffffff
668 670 /*
669 671 * The ifdef at the bottom should go. All drivers should start using the above
670 672 * 2 defines.
671 673 */
672 674 #ifdef P3
673 675 #define UNM_ADDR_QDR_NET_MAX (NX_P3_ADDR_QDR_NET_MAX)
674 676 #else
675 677 #define UNM_ADDR_QDR_NET_MAX (NX_P2_ADDR_QDR_NET_MAX)
676 678 #endif
677 679
678 680 #define D3_CRB_REG_FUN0 (UNM_PCIX_PS_REG(0x0084))
679 681 #define D3_CRB_REG_FUN1 (UNM_PCIX_PS_REG(0x1084))
680 682 #define D3_CRB_REG_FUN2 (UNM_PCIX_PS_REG(0x2084))
681 683 #define D3_CRB_REG_FUN3 (UNM_PCIX_PS_REG(0x3084))
682 684
683 685
684 686 #define ISR_I2Q_CLR_PCI_LO (UNM_PCIX_PS_REG(UNM_I2Q_CLR_PCI_LO))
685 687 #define ISR_I2Q_CLR_PCI_HI (UNM_PCIX_PS_REG(UNM_I2Q_CLR_PCI_HI))
686 688 #define UNM_PCI_ARCH_CRB_BASE (UNM_PCI_DIRECT_CRB)
687 689
688 690 #define UNM_PCI_MAPSIZE 128 /* we're mapping 128MB of mem on PCI bus */
689 691 #define UNM_PCI_DDR_NET 0x00000000
690 692 #define UNM_PCI_DDR_NET_MAX 0x01ffffff
691 693 #define UNM_PCI_DDR_MD 0x02000000
692 694 #define UNM_PCI_DDR_MD_MAX 0x03ffffff
693 695 #define UNM_PCI_QDR_NET 0x04000000
694 696 #define UNM_PCI_QDR_NET_MAX 0x043fffff
695 697 #define UNM_PCI_DIRECT_CRB 0x04400000
696 698 #define UNM_PCI_DIRECT_CRB_MAX 0x047fffff
697 699 #define UNM_PCI_CAMQM 0x04800000
698 700 #define UNM_PCI_CAMQM_MAX 0x04ffffff
699 701 #define UNM_PCI_OCM0 0x05000000
700 702 #define UNM_PCI_OCM0_MAX 0x050fffff
701 703 #define UNM_PCI_OCM1 0x05100000
702 704 #define UNM_PCI_OCM1_MAX 0x051fffff
703 705 #define UNM_PCI_CRBSPACE 0x06000000
704 706 #define UNM_PCI_CRBSPACE_MAX 0x07ffffff
705 707 #define UNM_PCI_128MB_SIZE 0x08000000
706 708 #define UNM_PCI_32MB_SIZE 0x02000000
707 709 #define UNM_PCI_2MB_SIZE 0x00200000
708 710
709 711 /*
710 712 * Definitions relating to access/control of the Network Interface Unit
711 713 * h/w block.
712 714 */
713 715 /*
714 716 * Configuration registers.
715 717 */
716 718 #define UNM_NIU_MODE (UNM_CRB_NIU + 0x00000)
717 719
718 720 /*
719 721 * Register offsets for MN
720 722 */
721 723 #define MIU_CONTROL (0x000)
722 724 #define MIU_TAG (0x004)
723 725 #define MIU_TEST_AGT_CTRL (0x090)
724 726 #define MIU_TEST_AGT_ADDR_LO (0x094)
725 727 #define MIU_TEST_AGT_ADDR_HI (0x098)
726 728 #define MIU_TEST_AGT_WRDATA_LO (0x0a0)
727 729 #define MIU_TEST_AGT_WRDATA_HI (0x0a4)
728 730 #define MIU_TEST_AGT_WRDATA(i) (0x0a0 + (4 * (i)))
729 731 #define MIU_TEST_AGT_RDDATA_LO (0x0a8)
730 732 #define MIU_TEST_AGT_RDDATA_HI (0x0ac)
731 733 #define MIU_TEST_AGT_WRDATA_UPPER_LO (0x0b0)
732 734 #define MIU_TEST_AGT_WRDATA_UPPER_HI (0x0b4)
733 735 #define MIU_TEST_AGT_RDDATA_UPPER_LO (0x0b8)
734 736 #define MIU_TEST_AGT_RDDATA_UPPER_HI (0x0bc)
735 737 #define MIU_TEST_AGT_RDDATA(i) (0x0a8 + (4 * (i)))
736 738 #define MIU_TEST_AGT_ADDR_MASK 0xfffffff8
737 739 #define MIU_TEST_AGT_UPPER_ADDR(off) (0)
738 740
739 741 /* MIU_TEST_AGT_CTRL flags. work for SIU as well */
740 742 #define MIU_TA_CTL_START 1
741 743 #define MIU_TA_CTL_ENABLE 2
742 744 #define MIU_TA_CTL_WRITE 4
743 745 #define MIU_TA_CTL_BUSY 8
744 746
745 747 #define SIU_TEST_AGT_CTRL (0x060)
746 748 #define SIU_TEST_AGT_ADDR_LO (0x064)
747 749 #define SIU_TEST_AGT_ADDR_HI (0x078)
748 750 #define SIU_TEST_AGT_WRDATA_LO (0x068)
749 751 #define SIU_TEST_AGT_WRDATA_HI (0x06c)
750 752 #define SIU_TEST_AGT_WRDATA(i) (0x068 + (4 * (i)))
751 753 #define SIU_TEST_AGT_RDDATA_LO (0x070)
752 754 #define SIU_TEST_AGT_RDDATA_HI (0x074)
753 755 #define SIU_TEST_AGT_RDDATA(i) (0x070 + (4 * (i)))
754 756
755 757 #define SIU_TEST_AGT_ADDR_MASK 0x3ffff8
756 758 #define SIU_TEST_AGT_UPPER_ADDR(off) ((off) >> 22)
757 759 #define XG_LINK_UP 0x10
758 760
759 761
760 762 /* ====================== Configuration Constants ======================== */
761 763 #define UNM_NIU_PHY_WAITLEN 200000 /* 200ms delay in each loop */
762 764 #define UNM_NIU_PHY_WAITMAX 50 /* 10 seconds before we give up */
|
↓ open down ↓ |
657 lines elided |
↑ open up ↑ |
763 765 #define UNM_NIU_MAX_GBE_PORTS 4
764 766 #define UNM_NIU_MAX_XG_PORTS 2
765 767 #define MIN_CORE_CLK_SPEED 200
766 768 #define MAX_CORE_CLK_SPEED 400
767 769 #define ACCEPTABLE_CORE_CLK_RANGE(speed) ((speed >= MIN_CORE_CLK_SPEED) && \
768 770 (speed <= MAX_CORE_CLK_SPEED))
769 771
770 772 #define P2_TICKS_PER_SEC 2048
771 773 #define P2_MIN_TICKS_PER_SEC (P2_TICKS_PER_SEC - 10)
772 774 #define P2_MAX_TICKS_PER_SEC (P2_TICKS_PER_SEC + 10)
773 -#define CHECK_TICKS_PER_SEC(ticks) ((ticks >= P2_MIN_TICKS_PER_SEC) && \
775 +#define CHECK_TICKS_PER_SEC(ticks) ((ticks >= P2_MIN_TICKS_PER_SEC) && \
774 776 (ticks <= P2_MAX_TICKS_PER_SEC))
775 777
776 778 /* CAM RAM */
777 779 #define UNM_CAM_RAM_BASE (UNM_CRB_CAM + 0x02000)
778 780 #define UNM_CAM_RAM(reg) (UNM_CAM_RAM_BASE + (reg))
779 781
780 782 #define UNM_PORT_MODE_NONE 0
781 783 #define UNM_PORT_MODE_XG 1
782 784 #define UNM_PORT_MODE_GB 2
783 785 #define UNM_PORT_MODE_802_3_AP 3
784 786 #define UNM_PORT_MODE_AUTO_NEG 4
785 787 #define UNM_PORT_MODE_AUTO_NEG_1G 5
786 788 #define UNM_PORT_MODE_AUTO_NEG_XG 6
787 789 #define UNM_PORT_MODE_ADDR (UNM_CAM_RAM(0x24))
788 790 #define UNM_FW_PORT_MODE_ADDR (UNM_CAM_RAM(0x28))
789 791 #define UNM_WOL_PORT_MODE (UNM_CAM_RAM(0x198))
790 792 #define UNM_RAM_COLD_BOOT (UNM_CAM_RAM(0x1fc))
791 793 #define UNM_BUS_DEV_NO (UNM_CAM_RAM(0x114))
792 794
793 795 #define NX_PEG_TUNE_MN_SPD_ZEROED 0x80000000
794 -#define NX_BOOT_LOADER_MN_OTHER 0x100 /* other problem with DIMM */
796 +#define NX_BOOT_LOADER_MN_OTHER 0x100 /* other problem with DIMM */
795 797 #define NX_BOOT_LOADER_MN_NOT_DDR2 0x80 /* not a DDR2 DIMM */
796 798 #define NX_BOOT_LOADER_MN_NO_ECC 0x40 /* ECC not supported */
797 799 #define NX_BOOT_LOADER_MN_WRONG_CAS 0x20 /* CL 5 not supported */
798 800 #define NX_BOOT_LOADER_MN_NOT_REG 0x10 /* not a registered DIMM */
799 801 #define NX_BOOT_LOADER_MN_ISSUE 0xff00ffff
800 802 #define NX_PEG_TUNE_MN_PRESENT 0x1
801 803 #define NX_PEG_TUNE_CAPABILITY (UNM_CAM_RAM(0x02c))
802 804
803 805 #define UNM_ROM_LOCK_ID (UNM_CAM_RAM(0x100))
804 806 #define UNM_I2C_ROM_LOCK_ID (UNM_CAM_RAM(0x104))
805 807 #define UNM_PHY_LOCK_ID (UNM_CAM_RAM(0x120))
806 808 #define UNM_CRB_WIN_LOCK_ID (UNM_CAM_RAM(0x124))
807 809 #define CAM_RAM_DMA_WATCHDOG_CTRL 0x14 /* See dma_watchdog_ctrl_t */
808 810 #define UNM_EFUSE_CHIP_ID_HIGH (UNM_CAM_RAM(0x18))
809 811 #define UNM_EFUSE_CHIP_ID_LOW (UNM_CAM_RAM(0x1c))
810 812
811 813 #define UNM_FW_VERSION_MAJOR (UNM_CAM_RAM(0x150))
812 814 #define UNM_FW_VERSION_MINOR (UNM_CAM_RAM(0x154))
813 815 #define UNM_FW_VERSION_SUB (UNM_CAM_RAM(0x158))
814 816 #define UNM_TCP_FW_VERSION_MAJOR_ADDR (UNM_CAM_RAM(0x15c))
815 817 #define UNM_TCP_FW_VERSION_MINOR_ADDR (UNM_CAM_RAM(0x160))
816 818 #define UNM_TCP_FW_VERSION_SUB_ADDR (UNM_CAM_RAM(0x164))
817 819 #define UNM_FW_VERSION_BUILD (UNM_CAM_RAM(0x168))
818 820 #define UNM_PCIE_REG(reg) (UNM_CRB_PCIE + (reg))
819 821
820 822 #define PCIE_DCR (0x00d8)
821 823 #define PCIE_DB_DATA2 (0x10070)
822 824 #define PCIE_DB_CTRL (0x100a0)
823 825 #define PCIE_DB_ADDR (0x100a4)
824 826 #define PCIE_DB_DATA (0x100a8)
825 827 #define PCIE_IMBUS_CONTROL (0x101b8)
826 828 #define PCIE_SETUP_FUNCTION (0x12040)
827 829 #define PCIE_SETUP_FUNCTION2 (0x12048)
828 830 #define PCIE_TGT_SPLIT_CHICKEN (0x12080)
829 831 #define PCIE_CHICKEN3 (0x120c8)
830 832 #define PCIE_MAX_MASTER_SPLIT (0x14048)
831 833 #define PCIE_MAX_DMA_XFER_SIZE (0x1404c)
832 834 #define UNM_WOL_WAKE (UNM_CAM_RAM(0x180))
833 835 #define UNM_WOL_CONFIG_NV (UNM_CAM_RAM(0x184))
834 836 #define UNM_WOL_CONFIG (UNM_CAM_RAM(0x188))
835 837 #define UNM_PRE_WOL_RX_ENABLE (UNM_CAM_RAM(0x18c))
836 838 #define UNM_FW_RESET (UNM_CAM_RAM(0x138))
837 839 /*
838 840 * Following define address space withing PCIX CRB space to talk with
839 841 * devices on the storage side PCI bus.
840 842 */
841 843 #define PCIX_PS_MEM_SPACE (0x90000)
842 844
843 845 #define UNM_PCIX_PH_REG(reg) (UNM_CRB_PCIE + (reg))
844 846
845 847 /*
846 848 * Configuration registers. These are the same offsets on both host and
847 849 * storage side PCI blocks.
848 850 */
849 851 #define PCIX_PS_OP_ADDR_LO (0x10000) /* Used for PS PCI Memory access */
850 852 #define PCIX_PS_OP_ADDR_HI (0x10004) /* via CRB (PS side only) */
851 853
852 854 #define PCIX_MS_WINDOW (0x10204) /* UNUSED */
853 855
854 856 #define PCIX_CRB_WINDOW (0x10210)
855 857 #define PCIX_CRB_WINDOW_F0 (0x10210)
856 858 #define PCIX_CRB_WINDOW_F1 (0x10230)
857 859 #define PCIX_CRB_WINDOW_F2 (0x10250)
858 860 #define PCIX_CRB_WINDOW_F3 (0x10270)
859 861 #define PCIX_CRB_WINDOW_F4 (0x102ac)
860 862 #define PCIX_CRB_WINDOW_F5 (0x102bc)
861 863 #define PCIX_CRB_WINDOW_F6 (0x102cc)
862 864 #define PCIX_CRB_WINDOW_F7 (0x102dc)
863 865 #define PCIE_CRB_WINDOW_REG(func) (((func) < 4) ? \
864 866 (PCIX_CRB_WINDOW_F0 + (0x20 * (func))) : \
865 867 (PCIX_CRB_WINDOW_F4 + (0x10 * ((func) - 4))))
866 868
867 869 #define PCIX_MN_WINDOW (0x10200)
868 870 #define PCIX_MN_WINDOW_F0 (0x10200)
869 871 #define PCIX_MN_WINDOW_F1 (0x10220)
870 872 #define PCIX_MN_WINDOW_F2 (0x10240)
871 873 #define PCIX_MN_WINDOW_F3 (0x10260)
872 874 #define PCIX_MN_WINDOW_F4 (0x102a0)
873 875 #define PCIX_MN_WINDOW_F5 (0x102b0)
874 876 #define PCIX_MN_WINDOW_F6 (0x102c0)
875 877 #define PCIX_MN_WINDOW_F7 (0x102d0)
876 878 #define PCIE_MN_WINDOW_REG(func) (((func) < 4) ? \
877 879 (PCIX_MN_WINDOW_F0 + (0x20 * (func))) : \
878 880 (PCIX_MN_WINDOW_F4 + (0x10 * ((func) - 4))))
879 881
880 882 #define PCIX_SN_WINDOW (0x10208)
881 883 #define PCIX_SN_WINDOW_F0 (0x10208)
882 884 #define PCIX_SN_WINDOW_F1 (0x10228)
883 885 #define PCIX_SN_WINDOW_F2 (0x10248)
884 886 #define PCIX_SN_WINDOW_F3 (0x10268)
885 887 #define PCIX_SN_WINDOW_F4 (0x102a8)
886 888 #define PCIX_SN_WINDOW_F5 (0x102b8)
887 889 #define PCIX_SN_WINDOW_F6 (0x102c8)
888 890 #define PCIX_SN_WINDOW_F7 (0x102d8)
889 891 #define PCIE_SN_WINDOW_REG(func) (((func) < 4) ? \
890 892 (PCIX_SN_WINDOW_F0 + (0x20 * (func))) : \
891 893 (PCIX_SN_WINDOW_F4 + (0x10 * ((func) - 4))))
892 894
893 895 #define UNM_PCIX_PS_REG(reg) (UNM_CRB_PCIX_MD + (reg))
894 896 #define UNM_PCIX_PS2_REG(reg) (UNM_CRB_PCIE2 + (reg))
895 897 #define MANAGEMENT_COMMAND_REG (UNM_CRB_PCIE + (4))
896 898
897 899 #define UNM_PH_INT_MASK (UNM_CRB_PCIE + PCIX_INT_MASK)
898 900
899 901 /*
900 902 * Definitions relating to access/control of the I2Q h/w block.
901 903 */
902 904 /*
903 905 * Configuration registers.
904 906 */
905 907 #define UNM_I2Q_CONFIG (UNM_CRB_I2Q + 0x00000)
906 908 #define UNM_I2Q_ENA_PCI_LO (UNM_CRB_I2Q + 0x00010)
907 909 #define UNM_I2Q_ENA_PCI_HI (UNM_CRB_I2Q + 0x00014)
908 910 #define UNM_I2Q_ENA_CASPER_LO (UNM_CRB_I2Q + 0x00018)
909 911 #define UNM_I2Q_ENA_CASPER_HI (UNM_CRB_I2Q + 0x0001c)
910 912 #define UNM_I2Q_ENA_QM_LO (UNM_CRB_I2Q + 0x00020)
911 913 #define UNM_I2Q_ENA_QM_HI (UNM_CRB_I2Q + 0x00024)
912 914 #define UNM_I2Q_CLR_PCI_LO (UNM_CRB_I2Q + 0x00030)
913 915 #define UNM_I2Q_CLR_PCI_HI (UNM_CRB_I2Q + 0x00034)
914 916 #define UNM_I2Q_CLR_CASPER_LO (UNM_CRB_I2Q + 0x00038)
915 917 #define UNM_I2Q_CLR_CASPER_HI (UNM_CRB_I2Q + 0x0003c)
916 918 #define UNM_I2Q_MSG_HDR_LO(I) (UNM_CRB_I2Q + 0x00100 + (I) * 0x8)
917 919 #define UNM_I2Q_MSG_HDR_HI(I) (UNM_CRB_I2Q + 0x00104 + (I) * 0x8)
918 920
919 921 #ifdef PCIX
920 922 #define UNM_DMA_BASE(U) (UNM_CRB_PCIX_HOST + 0x20000 + ((U) << 16))
921 923 #else
922 924 #define UNM_DMA_BASE(U) (UNM_CRB_PCIX_MD + 0x20000 + ((U) << 6))
923 925 #endif
924 926 #define UNM_DMA_COMMAND(U) (UNM_DMA_BASE(U) + 0x00008)
925 927
926 928 #define PCIE_SEM2_LOCK (0x1c010) /* Flash lock */
927 929 #define PCIE_SEM2_UNLOCK (0x1c014) /* Flash unlock */
928 930 #define PCIE_SEM3_LOCK (0x1c018) /* Phy lock */
929 931 #define PCIE_SEM3_UNLOCK (0x1c01c) /* Phy unlock */
930 932 #define PCIE_SEM4_LOCK (0x1c020) /* I2C lock */
931 933 #define PCIE_SEM4_UNLOCK (0x1c024) /* I2C unlock */
932 934 #define PCIE_SEM5_LOCK (0x1c028) /* API lock */
933 935 #define PCIE_SEM5_UNLOCK (0x1c02c) /* API unlock */
934 936 #define PCIE_SEM6_LOCK (0x1c030) /* sw lock */
935 937 #define PCIE_SEM6_UNLOCK (0x1c034) /* sw unlock */
936 938 #define PCIE_SEM7_LOCK (0x1c038) /* crb win lock */
937 939 #define PCIE_SEM7_UNLOCK (0x1c03c) /* crbwin unlock */
938 940
939 941 #define PCIE_PS_STRAP_RESET (0x18000)
940 942
941 943 #define M25P_INSTR_WREN 0x06
942 944 #define M25P_INSTR_RDSR 0x05
943 945 #define M25P_INSTR_PP 0x02
944 946 #define M25P_INSTR_SE 0xd8
945 947 #define CAM_RAM_P2I_ENABLE 0xc
946 948 #define CAM_RAM_P2D_ENABLE 0x8
947 949 #define PCIX_IMBTAG (0x18004)
948 950
949 951 #define CAM_RAM_PEG_ENABLES 0x4
|
↓ open down ↓ |
145 lines elided |
↑ open up ↑ |
950 952
951 953 /*
952 954 * The PCI VendorID and DeviceID for our board.
953 955 */
954 956 #define PCI_VENDOR_ID_NX8021 0x4040
955 957 #define PCI_DEVICE_ID_NX8021_FC 0x0101
956 958
957 959 /* ISP 3031 related declarations */
958 960
959 961 #define NX_MSIX_MEM_REGION_THRESHOLD 0x2000000
960 -#define UNM_MSIX_TBL_SPACE 8192
962 +#define UNM_MSIX_TBL_SPACE 8192
961 963 #define UNM_PCI_REG_MSIX_TBL 0x44
962 964 #define NX_PCI_MSIX_CONTROL 0x40
963 965
964 966 typedef struct {
965 967 uint32_t valid;
966 968 uint32_t start_128M;
967 969 uint32_t end_128M;
968 970 uint32_t start_2M;
969 971 } crb_128M_2M_sub_block_map_t;
970 972
971 973 typedef struct {
972 974 crb_128M_2M_sub_block_map_t sub_block[16];
973 975 } crb_128M_2M_block_map_t;
974 976
975 977 struct crb_addr_pair {
976 978 uint32_t addr;
977 979 uint32_t data;
978 980 };
979 981
980 982 #define ADDR_ERROR ((unsigned long) 0xffffffff)
981 983 #define MAX_CTL_CHECK 1000
982 984
983 985 /*
984 986 * ************************************************************************
985 987 * PCI related defines.
986 988 * ************************************************************************
987 989 */
988 990
989 991 /*
990 992 * Interrupt related defines.
991 993 */
992 994 #define PCIX_TARGET_STATUS (0x10118)
993 995 #define PCIX_TARGET_STATUS_F1 (0x10160)
994 996 #define PCIX_TARGET_STATUS_F2 (0x10164)
995 997 #define PCIX_TARGET_STATUS_F3 (0x10168)
996 998 #define PCIX_TARGET_STATUS_F4 (0x10360)
997 999 #define PCIX_TARGET_STATUS_F5 (0x10364)
998 1000 #define PCIX_TARGET_STATUS_F6 (0x10368)
999 1001 #define PCIX_TARGET_STATUS_F7 (0x1036c)
1000 1002
1001 1003 #define PCIX_TARGET_MASK (0x10128)
1002 1004 #define PCIX_TARGET_MASK_F1 (0x10170)
1003 1005 #define PCIX_TARGET_MASK_F2 (0x10174)
1004 1006 #define PCIX_TARGET_MASK_F3 (0x10178)
1005 1007 #define PCIX_TARGET_MASK_F4 (0x10370)
1006 1008 #define PCIX_TARGET_MASK_F5 (0x10374)
1007 1009 #define PCIX_TARGET_MASK_F6 (0x10378)
1008 1010 #define PCIX_TARGET_MASK_F7 (0x1037c)
1009 1011
1010 1012 /*
1011 1013 * Message Signaled Interrupts
1012 1014 */
1013 1015 #define PCIX_MSI_F0 (0x13000)
1014 1016 #define PCIX_MSI_F1 (0x13004)
1015 1017 #define PCIX_MSI_F2 (0x13008)
1016 1018 #define PCIX_MSI_F3 (0x1300c)
1017 1019 #define PCIX_MSI_F4 (0x13010)
1018 1020 #define PCIX_MSI_F5 (0x13014)
1019 1021 #define PCIX_MSI_F6 (0x13018)
1020 1022 #define PCIX_MSI_F7 (0x1301c)
1021 1023 #define PCIX_MSI_F(FUNC) (0x13000 +((FUNC) * 4))
1022 1024
1023 1025 /*
1024 1026 *
1025 1027 */
1026 1028 #define PCIX_INT_VECTOR (0x10100)
1027 1029 #define PCIX_INT_MASK (0x10104)
1028 1030
1029 1031 /*
1030 1032 * Interrupt state machine and other bits.
1031 1033 */
1032 1034 #define PCIE_MISCCFG_RC (0x1206c)
1033 1035
1034 1036
1035 1037 #define ISR_INT_TARGET_STATUS (UNM_PCIX_PS_REG(PCIX_TARGET_STATUS))
1036 1038 #define ISR_INT_TARGET_STATUS_F1 (UNM_PCIX_PS_REG(PCIX_TARGET_STATUS_F1))
1037 1039 #define ISR_INT_TARGET_STATUS_F2 (UNM_PCIX_PS_REG(PCIX_TARGET_STATUS_F2))
1038 1040 #define ISR_INT_TARGET_STATUS_F3 (UNM_PCIX_PS_REG(PCIX_TARGET_STATUS_F3))
1039 1041 #define ISR_INT_TARGET_STATUS_F4 (UNM_PCIX_PS_REG(PCIX_TARGET_STATUS_F4))
1040 1042 #define ISR_INT_TARGET_STATUS_F5 (UNM_PCIX_PS_REG(PCIX_TARGET_STATUS_F5))
1041 1043 #define ISR_INT_TARGET_STATUS_F6 (UNM_PCIX_PS_REG(PCIX_TARGET_STATUS_F6))
1042 1044 #define ISR_INT_TARGET_STATUS_F7 (UNM_PCIX_PS_REG(PCIX_TARGET_STATUS_F7))
1043 1045
1044 1046 #define ISR_INT_TARGET_MASK (UNM_PCIX_PS_REG(PCIX_TARGET_MASK))
1045 1047 #define ISR_INT_TARGET_MASK_F1 (UNM_PCIX_PS_REG(PCIX_TARGET_MASK_F1))
1046 1048 #define ISR_INT_TARGET_MASK_F2 (UNM_PCIX_PS_REG(PCIX_TARGET_MASK_F2))
1047 1049 #define ISR_INT_TARGET_MASK_F3 (UNM_PCIX_PS_REG(PCIX_TARGET_MASK_F3))
1048 1050 #define ISR_INT_TARGET_MASK_F4 (UNM_PCIX_PS_REG(PCIX_TARGET_MASK_F4))
1049 1051 #define ISR_INT_TARGET_MASK_F5 (UNM_PCIX_PS_REG(PCIX_TARGET_MASK_F5))
1050 1052 #define ISR_INT_TARGET_MASK_F6 (UNM_PCIX_PS_REG(PCIX_TARGET_MASK_F6))
1051 1053 #define ISR_INT_TARGET_MASK_F7 (UNM_PCIX_PS_REG(PCIX_TARGET_MASK_F7))
1052 1054
1053 1055 #define ISR_INT_VECTOR (UNM_PCIX_PS_REG(PCIX_INT_VECTOR))
1054 1056 #define ISR_INT_MASK (UNM_PCIX_PS_REG(PCIX_INT_MASK))
1055 1057 #define ISR_INT_STATE_REG (UNM_PCIX_PS_REG(PCIE_MISCCFG_RC))
1056 1058
1057 1059 #define ISR_MSI_INT_TRIGGER(FUNC) (UNM_PCIX_PS_REG(PCIX_MSI_F(FUNC)))
1058 1060
1059 1061
1060 1062 #define ISR_IS_LEGACY_INTR_IDLE(VAL) (((VAL) & 0x300) == 0)
1061 1063 #define ISR_IS_LEGACY_INTR_TRIGGERED(VAL) (((VAL) & 0x300) == 0x200)
1062 1064
1063 1065 /*
1064 1066 * PCI Interrupt Vector Values.
|
↓ open down ↓ |
94 lines elided |
↑ open up ↑ |
1065 1067 */
1066 1068 #define PCIX_INT_VECTOR_BIT_F0 0x0080
1067 1069 #define PCIX_INT_VECTOR_BIT_F1 0x0100
1068 1070 #define PCIX_INT_VECTOR_BIT_F2 0x0200
1069 1071 #define PCIX_INT_VECTOR_BIT_F3 0x0400
1070 1072 #define PCIX_INT_VECTOR_BIT_F4 0x0800
1071 1073 #define PCIX_INT_VECTOR_BIT_F5 0x1000
1072 1074 #define PCIX_INT_VECTOR_BIT_F6 0x2000
1073 1075 #define PCIX_INT_VECTOR_BIT_F7 0x4000
1074 1076
1075 -#define NX_LEGACY_INTR_CONFIG \
1076 -{ \
1077 - { \
1078 - .int_vec_bit = PCIX_INT_VECTOR_BIT_F0, \
1079 - .tgt_status_reg = ISR_INT_TARGET_STATUS, \
1080 - .tgt_mask_reg = ISR_INT_TARGET_MASK, \
1081 - .pci_int_reg = ISR_MSI_INT_TRIGGER(0) }, \
1077 +#define NX_LEGACY_INTR_CONFIG \
1078 +{ \
1079 + { \
1080 + .int_vec_bit = PCIX_INT_VECTOR_BIT_F0, \
1081 + .tgt_status_reg = ISR_INT_TARGET_STATUS, \
1082 + .tgt_mask_reg = ISR_INT_TARGET_MASK, \
1083 + .pci_int_reg = ISR_MSI_INT_TRIGGER(0) }, \
1082 1084 \
1083 - { \
1084 - .int_vec_bit = PCIX_INT_VECTOR_BIT_F1, \
1085 - .tgt_status_reg = ISR_INT_TARGET_STATUS_F1, \
1086 - .tgt_mask_reg = ISR_INT_TARGET_MASK_F1, \
1087 - .pci_int_reg = ISR_MSI_INT_TRIGGER(1) }, \
1085 + { \
1086 + .int_vec_bit = PCIX_INT_VECTOR_BIT_F1, \
1087 + .tgt_status_reg = ISR_INT_TARGET_STATUS_F1, \
1088 + .tgt_mask_reg = ISR_INT_TARGET_MASK_F1, \
1089 + .pci_int_reg = ISR_MSI_INT_TRIGGER(1) }, \
1088 1090 \
1089 - { \
1090 - .int_vec_bit = PCIX_INT_VECTOR_BIT_F2, \
1091 - .tgt_status_reg = ISR_INT_TARGET_STATUS_F2, \
1092 - .tgt_mask_reg = ISR_INT_TARGET_MASK_F2, \
1093 - .pci_int_reg = ISR_MSI_INT_TRIGGER(2) }, \
1091 + { \
1092 + .int_vec_bit = PCIX_INT_VECTOR_BIT_F2, \
1093 + .tgt_status_reg = ISR_INT_TARGET_STATUS_F2, \
1094 + .tgt_mask_reg = ISR_INT_TARGET_MASK_F2, \
1095 + .pci_int_reg = ISR_MSI_INT_TRIGGER(2) }, \
1094 1096 \
1095 - { \
1096 - .int_vec_bit = PCIX_INT_VECTOR_BIT_F3, \
1097 - .tgt_status_reg = ISR_INT_TARGET_STATUS_F3, \
1098 - .tgt_mask_reg = ISR_INT_TARGET_MASK_F3, \
1099 - .pci_int_reg = ISR_MSI_INT_TRIGGER(3) }, \
1100 - \
1101 - { \
1102 - .int_vec_bit = PCIX_INT_VECTOR_BIT_F4, \
1103 - .tgt_status_reg = ISR_INT_TARGET_STATUS_F4, \
1104 - .tgt_mask_reg = ISR_INT_TARGET_MASK_F4, \
1105 - .pci_int_reg = ISR_MSI_INT_TRIGGER(4) }, \
1097 + { \
1098 + .int_vec_bit = PCIX_INT_VECTOR_BIT_F3, \
1099 + .tgt_status_reg = ISR_INT_TARGET_STATUS_F3, \
1100 + .tgt_mask_reg = ISR_INT_TARGET_MASK_F3, \
1101 + .pci_int_reg = ISR_MSI_INT_TRIGGER(3) }, \
1106 1102 \
1107 - { \
1108 - .int_vec_bit = PCIX_INT_VECTOR_BIT_F5, \
1109 - .tgt_status_reg = ISR_INT_TARGET_STATUS_F5, \
1110 - .tgt_mask_reg = ISR_INT_TARGET_MASK_F5, \
1111 - .pci_int_reg = ISR_MSI_INT_TRIGGER(5) }, \
1103 + { \
1104 + .int_vec_bit = PCIX_INT_VECTOR_BIT_F4, \
1105 + .tgt_status_reg = ISR_INT_TARGET_STATUS_F4, \
1106 + .tgt_mask_reg = ISR_INT_TARGET_MASK_F4, \
1107 + .pci_int_reg = ISR_MSI_INT_TRIGGER(4) }, \
1112 1108 \
1113 - { \
1114 - .int_vec_bit = PCIX_INT_VECTOR_BIT_F6, \
1115 - .tgt_status_reg = ISR_INT_TARGET_STATUS_F6, \
1116 - .tgt_mask_reg = ISR_INT_TARGET_MASK_F6, \
1117 - .pci_int_reg = ISR_MSI_INT_TRIGGER(6) }, \
1109 + { \
1110 + .int_vec_bit = PCIX_INT_VECTOR_BIT_F5, \
1111 + .tgt_status_reg = ISR_INT_TARGET_STATUS_F5, \
1112 + .tgt_mask_reg = ISR_INT_TARGET_MASK_F5, \
1113 + .pci_int_reg = ISR_MSI_INT_TRIGGER(5) }, \
1118 1114 \
1119 - { \
1120 - .int_vec_bit = PCIX_INT_VECTOR_BIT_F7, \
1121 - .tgt_status_reg = ISR_INT_TARGET_STATUS_F7, \
1122 - .tgt_mask_reg = ISR_INT_TARGET_MASK_F7, \
1123 - .pci_int_reg = ISR_MSI_INT_TRIGGER(7) }, \
1115 + { \
1116 + .int_vec_bit = PCIX_INT_VECTOR_BIT_F6, \
1117 + .tgt_status_reg = ISR_INT_TARGET_STATUS_F6, \
1118 + .tgt_mask_reg = ISR_INT_TARGET_MASK_F6, \
1119 + .pci_int_reg = ISR_MSI_INT_TRIGGER(6) }, \
1120 + \
1121 + { \
1122 + .int_vec_bit = PCIX_INT_VECTOR_BIT_F7, \
1123 + .tgt_status_reg = ISR_INT_TARGET_STATUS_F7, \
1124 + .tgt_mask_reg = ISR_INT_TARGET_MASK_F7, \
1125 + .pci_int_reg = ISR_MSI_INT_TRIGGER(7) }, \
1124 1126 }
1125 1127
1126 1128 #define BOOTLD_START 0x10000
1127 1129 #define IMAGE_START 0x43000
1128 1130
1129 1131 /* Magic number to let user know flash is programmed */
1130 1132 #define UNM_BDINFO_MAGIC 0x12345678
1131 1133 #define FW_SIZE_OFFSET 0x3e840c
1132 1134
1133 1135 #define PCI_CAP_ID_GEN 0x10
1134 1136 #define PCI_CAP_ID_PCI_E 0x10 /* PCI Express supported */
1135 1137 #define PCI_CAP_ID_EXP 0x10 /* PCI Express */
1136 1138 #define PCI_EXP_LNKSTA 18 /* Link Status */
1137 1139 #define MAX_CRB_XFORM 60
1138 1140 #define MTU_FUDGE_FACTOR 100
1139 1141
1140 1142 #define crb_addr_transform(name) \
1141 1143 (crb_addr_xform[UNM_HW_PX_MAP_CRB_##name] = \
1142 1144 UNM_HW_CRB_HUB_AGT_ADR_##name << 20)
1143 1145
1144 1146 #define MASK(n) ((1ULL << (n)) - 1)
1145 1147 #define MN_WIN(addr) (((addr & 0x1fc0000) >> 1) | ((addr >> 25) & 0x3ff))
1146 1148 /* 64K? */
1147 1149 #define OCM_WIN(addr) (((addr & 0x1ff0000) >> 1) | ((addr >> 25) & 0x3ff))
1148 1150
1149 1151 #define MS_WIN(addr) (addr & 0x0ffc0000)
1150 1152 #define UNM_PCI_MN_2M (0)
1151 1153 #define UNM_PCI_MS_2M (0x80000)
1152 1154 #define UNM_PCI_OCM0_2M (0xc0000)
1153 1155 #define VALID_OCM_ADDR(addr) (((addr) & 0x3f800) != 0x3f800)
1154 1156 #define GET_MEM_OFFS_2M(addr) (addr & MASK(18))
1155 1157
1156 1158 #define UNM_BOARDTYPE 0x4008
1157 1159 #define UNM_BOARDNUM 0x400c
1158 1160 #define UNM_CHIPNUM 0x4010
1159 1161
1160 1162 /* CRB window related */
1161 1163 #define CRB_BLK(off) ((off >> 20) & 0x3f)
1162 1164 #define CRB_SUBBLK(off) ((off >> 16) & 0xf)
|
↓ open down ↓ |
29 lines elided |
↑ open up ↑ |
1163 1165 #define CRB_WINDOW_2M (0x130060)
1164 1166 #define UNM_PCI_CAMQM_2M_END (0x04800800UL)
1165 1167 #define CRB_HI(off) ((crb_hub_agt[CRB_BLK(off)] << 20) | \
1166 1168 ((off) & 0xf0000))
1167 1169 #define UNM_PCI_CAMQM_2M_BASE (0x000ff800UL)
1168 1170 #define CRB_INDIRECT_2M (0x1e0000UL)
1169 1171 /* #define ADDR_ERROR ((unsigned long ) 0xffffffff) */
1170 1172
1171 1173 /* PCI Windowing for DDR regions. */
1172 1174 #define QL_8021_ADDR_IN_RANGE(addr, low, high) \
1173 - (((addr) <= (high)) && ((addr) >= (low)))
1175 + (((addr) <= (high)) && ((int64_t)(addr) >= (low)))
1174 1176
1175 1177 #define CRB_WIN_LOCK_TIMEOUT 100000000
1176 1178 #define ROM_LOCK_TIMEOUT 100
1177 1179 #define ROM_MAX_TIMEOUT 100
1178 1180 #define IDC_LOCK_TIMEOUT 100000000
1179 1181
1180 1182 /*
1181 - * IDC parameters are defined in “user area” in the flash
1183 + * IDC parameters are defined in "user area" in the flash
1182 1184 */
1183 1185 #define ROM_DEV_INIT_TIMEOUT 0x3e885c
1184 1186 #define ROM_DRV_RESET_ACK_TIMEOUT 0x3e8860
1185 1187
1188 +/* ****************************************************************** */
1189 +/* ******************* NetXen MiniDump Defines ********************** */
1190 +/* ****************************************************************** */
1191 +
1186 1192 /*
1193 + * Get MBC_GET_DUMP_TEMPLATE Command Options
1194 + */
1195 +#define GTO_TEMPLATE_SIZE 0
1196 +#define GTO_TEMPLATE 1
1197 +
1198 +/*
1199 + * Entry Type Defines
1200 + */
1201 +#define RDNOP 0
1202 +#define RDCRB 1
1203 +#define RDMUX 2
1204 +#define QUEUE 3
1205 +#define BOARD 4
1206 +#define RDSRE 5
1207 +#define RDOCM 6
1208 +#define PREGS 7
1209 +#define L1DTG 8
1210 +#define L1ITG 9
1211 +#define CACHE 10
1212 +#define L1DAT 11
1213 +#define L1INS 12
1214 +#define RDSTK 13
1215 +#define RDCON 14
1216 +#define L2DTG 21
1217 +#define L2ITG 22
1218 +#define L2DAT 23
1219 +#define L2INS 24
1220 +#define RDOC3 25
1221 +#define MEMBK 32
1222 +#define RDROM 71
1223 +#define RDMEM 72
1224 +#define INFOR 81
1225 +#define CNTRL 98
1226 +#define TLHDR 99
1227 +#define RDEND 255
1228 +#define PRIMQ 103
1229 +#define SQG2Q 104
1230 +#define SQG3Q 105
1231 +#define ISCSI_EVENT_LOG 201
1232 +
1233 +/*
1234 + * Minidump Template Header
1235 + * Parts of the template header can be modified by the driver.
1236 + * These include the saved_state_array, capture_debug_level, driver_timestamp
1237 + * The driver_info_wordX is used to add info about the drivers environment.
1238 + * It is important that drivers add identication and system info in these
1239 + * fields.
1240 + */
1241 +
1242 +#define QL_DBG_STATE_ARRAY_LEN 16
1243 +#define QL_DBG_CAP_SIZE_ARRAY_LEN 8
1244 +#define QL_DBG_RSVD_ARRAY_LEN 8
1245 +
1246 +typedef struct md_template_hdr {
1247 + uint32_t entry_type;
1248 + uint32_t first_entry_offset;
1249 + uint32_t size_of_template;
1250 + uint32_t capture_debug_level;
1251 + uint32_t num_of_entries;
1252 + uint32_t version;
1253 + uint32_t driver_timestamp;
1254 + uint32_t checksum;
1255 + uint32_t driver_capture_mask;
1256 + uint32_t driver_info_word1;
1257 + uint32_t driver_info_word2;
1258 + uint32_t driver_info_word3;
1259 + uint32_t saved_state_array[QL_DBG_STATE_ARRAY_LEN];
1260 + uint32_t capture_size_array[QL_DBG_CAP_SIZE_ARRAY_LEN];
1261 +
1262 + /* markers_array used to capture some special locations on board */
1263 + uint32_t markers_array[QL_DBG_RSVD_ARRAY_LEN];
1264 + uint32_t num_of_free_entries; /* For internal use */
1265 + uint32_t free_entry_offset; /* For internal use */
1266 + uint32_t total_table_size; /* For internal use */
1267 + uint32_t bkup_table_offset; /* For internal use */
1268 +} md_template_hdr_t;
1269 +
1270 +/*
1271 + * Driver Flags
1272 + */
1273 +#define QL_DBG_SKIPPED_FLAG 0x80 /* driver skipped this entry */
1274 +#define QL_DBG_SIZE_ERR_FLAG 0x40 /* entry siz vs capture siz mismatch */
1275 +
1276 +/*
1277 + * Minidump Entry Header
1278 + */
1279 +typedef struct md_entry_hdr {
1280 + uint32_t entry_type;
1281 + uint32_t entry_size;
1282 + uint32_t entry_capture_size;
1283 + union {
1284 + struct {
1285 +#ifdef _BIG_ENDIAN
1286 + uint8_t driver_flags;
1287 + uint8_t driver_code;
1288 + uint8_t entry_code;
1289 + uint8_t entry_capture_mask;
1290 +#else
1291 + uint8_t entry_capture_mask;
1292 + uint8_t entry_code;
1293 + uint8_t driver_code;
1294 + uint8_t driver_flags;
1295 +#endif
1296 + } ecw;
1297 + uint32_t entry_ctrl_word;
1298 + } a;
1299 +} md_entry_hdr_t;
1300 +
1301 +/*
1302 + * Minidump Entry Including Header
1303 + */
1304 +typedef struct md_entry {
1305 + md_entry_hdr_t h;
1306 + uint32_t entry_data00;
1307 + uint32_t entry_data01;
1308 + uint32_t entry_data02;
1309 + uint32_t entry_data03;
1310 + uint32_t entry_data04;
1311 + uint32_t entry_data05;
1312 + uint32_t entry_data06;
1313 + uint32_t entry_data07;
1314 +} md_entry_t;
1315 +
1316 +/*
1317 + * Minidump Read CRB Entry Header
1318 + */
1319 +typedef struct md_entry_rdcrb {
1320 + md_entry_hdr_t h;
1321 + uint32_t addr;
1322 + union {
1323 + struct {
1324 +#ifdef _BIG_ENDIAN
1325 + uint8_t rsvd_1[2];
1326 + uint8_t rsvd_0;
1327 + uint8_t addr_stride;
1328 +#else
1329 + uint8_t addr_stride;
1330 + uint8_t rsvd_0;
1331 + uint8_t rsvd_1[2];
1332 +#endif
1333 + } ac;
1334 + uint32_t addr_cntrl;
1335 + } a;
1336 + uint32_t data_size;
1337 + uint32_t op_count;
1338 + uint32_t rsvd_2;
1339 + uint32_t rsvd_3;
1340 + uint32_t rsvd_4;
1341 + uint32_t rsvd_5;
1342 +} md_entry_rdcrb_t;
1343 +
1344 +/*
1345 + * Minidump Cache Entry Header
1346 + */
1347 +typedef struct ql_md_entry_cache {
1348 + md_entry_hdr_t h;
1349 + uint32_t tag_reg_addr;
1350 + union {
1351 + struct {
1352 +#ifdef _BIG_ENDIAN
1353 + uint8_t init_tag_value[2];
1354 + uint8_t tag_value_stride[2];
1355 +#else
1356 + uint8_t tag_value_stride[2];
1357 + uint8_t init_tag_value[2];
1358 +#endif
1359 + } sac;
1360 + uint32_t select_addr_cntrl;
1361 + } a;
1362 + uint32_t data_size;
1363 + uint32_t op_count;
1364 + uint32_t control_addr;
1365 + union {
1366 + struct {
1367 +#ifdef _BIG_ENDIAN
1368 + uint8_t poll_wait;
1369 + uint8_t poll_mask;
1370 + uint8_t write_value[2];
1371 +#else
1372 + uint8_t write_value[2];
1373 + uint8_t poll_mask;
1374 + uint8_t poll_wait;
1375 +#endif
1376 + } cv;
1377 + uint32_t control_value;
1378 + } b;
1379 + uint32_t read_addr;
1380 + union {
1381 + struct {
1382 +#ifdef _BIG_ENDIAN
1383 + uint8_t rsvd_1[2];
1384 + uint8_t read_addr_cnt;
1385 + uint8_t read_addr_stride;
1386 +#else
1387 + uint8_t read_addr_stride;
1388 + uint8_t read_addr_cnt;
1389 + uint8_t rsvd_1[2];
1390 +#endif
1391 + } rac;
1392 + uint32_t read_addr_cntrl;
1393 + } c;
1394 +} md_entry_cache_t;
1395 +
1396 +/*
1397 + * Minidump Read OCM Entry Header
1398 + */
1399 +typedef struct md_entry_rdocm {
1400 + md_entry_hdr_t h;
1401 + uint32_t rsvd_0;
1402 + uint32_t rsvd_1;
1403 + uint32_t data_size;
1404 + uint32_t op_count;
1405 + uint32_t rsvd_2;
1406 + uint32_t rsvd_3;
1407 + uint32_t read_addr;
1408 + uint32_t read_addr_stride;
1409 +} md_entry_rdocm_t;
1410 +
1411 +/*
1412 + * Minidump Read MEM Entry Header
1413 + */
1414 +typedef struct md_entry_rdmem {
1415 + md_entry_hdr_t h;
1416 + uint32_t rsvd_0[6];
1417 + uint32_t read_addr;
1418 + uint32_t read_data_size;
1419 +} md_entry_rdmem_t;
1420 +/*
1421 + * Minidump MIU AGENT ADDRESSES.
1422 + */
1423 +#define MD_TA_CTL_ENABLE 0x2
1424 +#define MD_TA_CTL_START 0x1
1425 +#define MD_TA_CTL_BUSY 0x8
1426 +#define MD_TA_CTL_CHECK 1000
1427 +#define MD_MIU_TEST_AGT_CTRL 0x41000090
1428 +#define MD_MIU_TEST_AGT_ADDR_LO 0x41000094
1429 +#define MD_MIU_TEST_AGT_ADDR_HI 0x41000098
1430 +#define MD_MIU_TEST_AGT_RDDATA_0_31 0x410000A8
1431 +#define MD_MIU_TEST_AGT_RDDATA_32_63 0x410000AC
1432 +#define MD_MIU_TEST_AGT_RDDATA_64_95 0x410000B8
1433 +#define MD_MIU_TEST_AGT_RDDATA_96_127 0x410000BC
1434 +#define MD_MIU_TEST_AGT_WRDATA_0_31 0x410000A0
1435 +#define MD_MIU_TEST_AGT_WRDATA_32_63 0x410000A4
1436 +#define MD_MIU_TEST_AGT_WRDATA_64_95 0x410000B0
1437 +#define MD_MIU_TEST_AGT_WRDATA_96_127 0x410000B4
1438 +
1439 +/*
1440 + * Minidump Read ROM Entry Header
1441 + */
1442 +typedef struct md_entry_rdrom {
1443 + md_entry_hdr_t h;
1444 + uint32_t rsvd_0[6];
1445 + uint32_t read_addr;
1446 + uint32_t read_data_size;
1447 +} md_entry_rdrom_t;
1448 +/*
1449 + * Minidump ROM Read Address
1450 + */
1451 +#define MD_DIRECT_ROM_WINDOW 0x42110030
1452 +#define MD_DIRECT_ROM_READ_BASE 0x42150000
1453 +
1454 +/*
1455 + * Minidump Read MUX Entry Header
1456 + */
1457 +typedef struct md_entry_mux {
1458 + md_entry_hdr_t h;
1459 + uint32_t select_addr;
1460 + union {
1461 + struct {
1462 + uint32_t rsvd_0;
1463 + } sac;
1464 + uint32_t select_addr_cntrl;
1465 + } a;
1466 + uint32_t data_size;
1467 + uint32_t op_count;
1468 + uint32_t select_value;
1469 + uint32_t select_value_stride;
1470 + uint32_t read_addr;
1471 + uint32_t rsvd_1;
1472 +} md_entry_mux_t;
1473 +
1474 +/*
1475 + * Minidump Read QUEUE Entry Header
1476 + */
1477 +typedef struct md_entry_queue {
1478 + md_entry_hdr_t h;
1479 + uint32_t select_addr;
1480 + union {
1481 + struct {
1482 +#ifdef _BIG_ENDIAN
1483 + uint8_t rsvd_0[2];
1484 + uint8_t queue_id_stride[2];
1485 +#else
1486 + uint8_t queue_id_stride[2];
1487 + uint8_t rsvd_0[2];
1488 +#endif
1489 + } sac;
1490 + uint32_t select_addr_cntrl;
1491 + } a;
1492 + uint32_t data_size;
1493 + uint32_t op_count;
1494 + uint32_t rsvd_1;
1495 + uint32_t rsvd_2;
1496 + uint32_t read_addr;
1497 + union {
1498 + struct {
1499 +#ifdef _BIG_ENDIAN
1500 + uint8_t rsvd_3[2];
1501 + uint8_t read_addr_cnt;
1502 + uint8_t read_addr_stride;
1503 +#else
1504 + uint8_t read_addr_stride;
1505 + uint8_t read_addr_cnt;
1506 + uint8_t rsvd_3[2];
1507 +#endif
1508 + } rac;
1509 + uint32_t read_addr_cntrl;
1510 + } b;
1511 +} md_entry_queue_t;
1512 +
1513 +/*
1514 + * Minidump Control Entry Header
1515 + */
1516 +typedef struct md_entry_cntrl {
1517 + md_entry_hdr_t h;
1518 + uint32_t addr;
1519 + union {
1520 + struct {
1521 +#ifdef _BIG_ENDIAN
1522 + uint8_t poll_timeout[2];
1523 + uint8_t state_index_a;
1524 + uint8_t addr_stride;
1525 +#else
1526 + uint8_t addr_stride;
1527 + uint8_t state_index_a;
1528 + uint8_t poll_timeout[2];
1529 +#endif
1530 + } ac;
1531 + uint32_t addr_cntrl;
1532 + } a;
1533 + uint32_t data_size;
1534 + uint32_t op_count;
1535 + union {
1536 + struct {
1537 +#ifdef _BIG_ENDIAN
1538 + uint8_t shr;
1539 + uint8_t shl;
1540 + uint8_t state_index_v;
1541 + uint8_t opcode;
1542 +#else
1543 + uint8_t opcode;
1544 + uint8_t state_index_v;
1545 + uint8_t shl;
1546 + uint8_t shr;
1547 +#endif
1548 + } cv;
1549 + uint32_t control_value;
1550 + } b;
1551 + uint32_t value_1;
1552 + uint32_t value_2;
1553 + uint32_t value_3;
1554 +} md_entry_cntrl_t;
1555 +
1556 +/*
1557 + * Opcodes for Control Entries.
1558 + * These Flags are bit fields.
1559 + */
1560 +#define QL_DBG_OPCODE_WR 0x01
1561 +#define QL_DBG_OPCODE_RW 0x02
1562 +#define QL_DBG_OPCODE_AND 0x04
1563 +#define QL_DBG_OPCODE_OR 0x08
1564 +#define QL_DBG_OPCODE_POLL 0x10
1565 +#define QL_DBG_OPCODE_RDSTATE 0x20
1566 +#define QL_DBG_OPCODE_WRSTATE 0x40
1567 +#define QL_DBG_OPCODE_MDSTATE 0x80
1568 +
1569 +/*
1187 1570 * Global Data in ql_nx.c source file.
1188 1571 */
1189 1572
1190 1573 /*
1191 1574 * Global Function Prototypes in ql_nx.c source file.
1192 1575 */
1576 +void ql_8021_wr_32(ql_adapter_state_t *, uint64_t, uint32_t);
1577 +void ql_8021_rd_32(ql_adapter_state_t *, uint64_t, uint32_t *);
1193 1578 void ql_8021_reset_chip(ql_adapter_state_t *);
1194 -int ql_8021_load_risc(ql_adapter_state_t *);
1579 +int ql_8021_fw_reload(ql_adapter_state_t *);
1195 1580 void ql_8021_clr_hw_intr(ql_adapter_state_t *);
1196 1581 void ql_8021_clr_fw_intr(ql_adapter_state_t *);
1197 1582 void ql_8021_enable_intrs(ql_adapter_state_t *);
1198 1583 void ql_8021_disable_intrs(ql_adapter_state_t *);
1199 1584 void ql_8021_update_crb_int_ptr(ql_adapter_state_t *);
1200 1585 int ql_8021_rom_read(ql_adapter_state_t *, uint32_t, uint32_t *);
1201 1586 int ql_8021_rom_write(ql_adapter_state_t *, uint32_t, uint32_t);
1202 1587 int ql_8021_rom_erase(ql_adapter_state_t *, uint32_t);
1203 1588 int ql_8021_rom_wrsr(ql_adapter_state_t *, uint32_t);
1204 1589 void ql_8021_set_drv_active(ql_adapter_state_t *);
1205 1590 void ql_8021_clr_drv_active(ql_adapter_state_t *);
1206 -uint32_t ql_8021_idc_handler(ql_adapter_state_t *);
1591 +int ql_8021_idc_handler(ql_adapter_state_t *, uint32_t);
1592 +void ql_8021_wr_req_in(ql_adapter_state_t *, uint32_t);
1593 +void ql_8021_idc_poll(ql_adapter_state_t *);
1594 +int ql_8021_reset_fw(ql_adapter_state_t *);
1595 +int ql_8021_fw_chk(ql_adapter_state_t *);
1596 +int ql_8021_get_md_template(ql_adapter_state_t *);
1207 1597
1208 1598 #ifdef __cplusplus
1209 1599 }
1210 1600 #endif
1211 1601
1212 1602 #endif /* _QL_NX_H */
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX