summaryrefslogtreecommitdiff
path: root/usr/src/uts/sun4u/io/px/oberon_regs.h
blob: 7c2597d22b43c905426ef86d56107532b4b4cdf8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License (the "License").
 * You may not use this file except in compliance with the License.
 *
 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
 * or http://www.opensolaris.org/os/licensing.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
 * If applicable, add the following below this CDDL HEADER, with the
 * fields enclosed by brackets "[]" replaced with your own identifying
 * information: Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 */
/*
 * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
 * Use is subject to license terms.
 */

#ifndef _SYS_OBERON_REGS_H
#define	_SYS_OBERON_REGS_H

#ifdef	__cplusplus
extern "C" {
#endif


#define	UBC_ERROR_LOG_ENABLE			0x471000
#define	UBC_ERROR_STATUS_CLEAR			0x471018
#define	UBC_INTERRUPT_ENABLE			0x471008
#define	UBC_INTERRUPT_STATUS			0x471010
#define	UBC_INTERRUPT_STATUS_DMARDUEA_P		0
#define	UBC_INTERRUPT_STATUS_DMAWTUEA_P		1
#define	UBC_INTERRUPT_STATUS_MEMRDAXA_P		2
#define	UBC_INTERRUPT_STATUS_MEMWTAXA_P		3
#define	UBC_INTERRUPT_STATUS_DMARDUEB_P		8
#define	UBC_INTERRUPT_STATUS_DMAWTUEB_P		9
#define	UBC_INTERRUPT_STATUS_MEMRDAXB_P		10
#define	UBC_INTERRUPT_STATUS_MEMWTAXB_P		11
#define	UBC_INTERRUPT_STATUS_PIOWTUE_P		16
#define	UBC_INTERRUPT_STATUS_PIOWBEUE_P		17
#define	UBC_INTERRUPT_STATUS_PIORBEUE_P		18
#define	UBC_INTERRUPT_STATUS_DMARDUEA_S		32
#define	UBC_INTERRUPT_STATUS_DMAWTUEA_S		33
#define	UBC_INTERRUPT_STATUS_MEMRDAXA_S		34
#define	UBC_INTERRUPT_STATUS_MEMWTAXA_S		35
#define	UBC_INTERRUPT_STATUS_DMARDUEB_S		40
#define	UBC_INTERRUPT_STATUS_DMAWTUEB_S		41
#define	UBC_INTERRUPT_STATUS_MEMRDAXB_S		42
#define	UBC_INTERRUPT_STATUS_MEMWTAXB_S		43
#define	UBC_INTERRUPT_STATUS_PIOWTUE_S		48
#define	UBC_INTERRUPT_STATUS_PIOWBEUE_S		49
#define	UBC_INTERRUPT_STATUS_PIORBEUE_S		50
#define	UBC_ERROR_STATUS_SET			0x471020
#define	UBC_PERFORMANCE_COUNTER_SELECT		0x472000
#define	UBC_PERFORMANCE_COUNTER_ZERO		0x472008
#define	UBC_PERFORMANCE_COUNTER_ONE		0x472010
#define	UBC_PERFORMANCE_COUNTER_SEL_MASKS	0x3f3f
#define	UBC_MEMORY_UE_LOG			0x471028
#define	UBC_MEMORY_UE_LOG_EID			60
#define	UBC_MEMORY_UE_LOG_EID_MASK		0x3
#define	UBC_MEMORY_UE_LOG_MARKED		48
#define	UBC_MEMORY_UE_LOG_MARKED_MASK		0x3fff
#define	UBC_MARKED_MAX_CPUID_MASK		0x1ff
/*
 * Class qualifiers on errors for which EID is valid.
 */
#define	UBC_EID_MEM	0
#define	UBC_EID_CHANNEL	1
#define	UBC_EID_CPU	2
#define	UBC_EID_PATH	3
/*
 * Mask within UBC_INTERRUPT_STATUS for Leaf-A errors
 */
#define	UBC_INTERRUPT_STATUS_LEAFA	\
	((1UL << UBC_INTERRUPT_STATUS_DMARDUEA_P) |\
	(1UL << UBC_INTERRUPT_STATUS_DMAWTUEA_P) |\
	(1UL << UBC_INTERRUPT_STATUS_MEMRDAXA_P) |\
	(1UL << UBC_INTERRUPT_STATUS_MEMWTAXA_P) |\
	(1UL << UBC_INTERRUPT_STATUS_DMARDUEA_S) |\
	(1UL << UBC_INTERRUPT_STATUS_DMAWTUEA_S) |\
	(1UL << UBC_INTERRUPT_STATUS_MEMRDAXA_S) |\
	(1UL << UBC_INTERRUPT_STATUS_MEMWTAXA_S))
/*
 * Mask within UBC_INTERRUPT_STATUS for Leaf-B errors
 */
#define	UBC_INTERRUPT_STATUS_LEAFB	\
	((1UL << UBC_INTERRUPT_STATUS_DMARDUEB_P) |\
	(1UL << UBC_INTERRUPT_STATUS_DMAWTUEB_P) |\
	(1UL << UBC_INTERRUPT_STATUS_MEMRDAXB_P) |\
	(1UL << UBC_INTERRUPT_STATUS_MEMWTAXB_P) |\
	(1UL << UBC_INTERRUPT_STATUS_DMARDUEB_S) |\
	(1UL << UBC_INTERRUPT_STATUS_DMAWTUEB_S) |\
	(1UL << UBC_INTERRUPT_STATUS_MEMRDAXB_S) |\
	(1UL << UBC_INTERRUPT_STATUS_MEMWTAXB_S))

#define	OBERON_UBC_ID_MAX		64
#define	OBERON_UBC_ID_IOC		0
#define	OBERON_UBC_ID_LSB		2

#define	OBERON_PORT_ID_LEAF		0
#define	OBERON_PORT_ID_LEAF_MASK	0x1
#define	OBERON_PORT_ID_IOC		1
#define	OBERON_PORT_ID_IOC_MASK		0x03
#define	OBERON_PORT_ID_LSB		4
#define	OBERON_PORT_ID_LSB_MASK		0x0F

/* values for OBERON_PORT_ID_LEAF field */
#define	OBERON_PORT_ID_LEAF_A		0
#define	OBERON_PORT_ID_LEAF_B		1

#define	INTERRUPT_MAPPING_ENTRIES_T_DESTID	21
#define	INTERRUPT_MAPPING_ENTRIES_T_DESTID_MASK	0x3ff

#define	OBERON_TLU_CONTROL_DRN_TR_DIS		35
#define	OBERON_TLU_CONTROL_CPLEP_DEN		34
#define	OBERON_TLU_CONTROL_ECRCCHK_DIS		33
#define	OBERON_TLU_CONTROL_ECRCGEN_DIS		32

#define	TLU_SLOT_CAPABILITIES_HP		6
#define	TLU_SLOT_CAPABILITIES_HPSUP		5
#define	TLU_SLOT_CAPABILITIES_PWINDP		4
#define	TLU_SLOT_CAPABILITIES_ATINDP		3
#define	TLU_SLOT_CAPABILITIES_MRLSP		2
#define	TLU_SLOT_CAPABILITIES_PWCNTLP		1
#define	TLU_SLOT_CAPABILITIES_ATBTNP		0

#define	DLU_INTERRUPT_MASK					0xe2048
#define	DLU_INTERRUPT_MASK_MSK_INTERRUPT_EN			31
#define	DLU_INTERRUPT_MASK_MSK_LINK_LAYER			5
#define	DLU_INTERRUPT_MASK_MSK_PHY_ERROR			4
#define	DLU_LINK_LAYER_CONFIG					0xe2200
#define	DLU_LINK_LAYER_CONFIG_VC0_EN				8
#define	DLU_LINK_LAYER_CONFIG_TLP_XMIT_FC_EN			3
#define	DLU_LINK_LAYER_CONFIG_FREQ_ACK_ENABLE			2
#define	DLU_LINK_LAYER_CONFIG_RETRY_DISABLE			1
#define	DLU_LINK_LAYER_STATUS					0xe2208
#define	DLU_LINK_LAYER_STATUS_LNK_STATE_MACH_STS_MASK		0x7
#define	DLU_LINK_LAYER_STATUS_LNK_STATE_MACH_STS_DL_INACTIVE	0x1
#define	DLU_LINK_LAYER_STATUS_LNK_STATE_MACH_STS_DL_INIT	0x2
#define	DLU_LINK_LAYER_STATUS_LNK_STATE_MACH_STS_DL_ACTIVE	0x4
#define	DLU_LINK_LAYER_STATUS_DLUP_STS				3
#define	DLU_LINK_LAYER_STATUS_INIT_FC_SM_STS			4
#define	DLU_LINK_LAYER_STATUS_INIT_FC_SM_STS_MASK		0x3
#define	DLU_LINK_LAYER_STATUS_INIT_FC_SM_STS_FC_IDLE		0x0
#define	DLU_LINK_LAYER_STATUS_INIT_FC_SM_STS_FC_INIT_1		0x1
#define	DLU_LINK_LAYER_STATUS_INIT_FC_SM_STS_FC_INIT_2		0x3
#define	DLU_LINK_LAYER_STATUS_INIT_FC_SM_STS_FC_INIT_DONE	0x2
#define	DLU_LINK_LAYER_INTERRUPT_AND_STATUS			0xe2210
#define	DLU_LINK_LAYER_INTERRUPT_AND_STATUS_INT_LINK_ERR_ACT	31
#define	DLU_LINK_LAYER_INTERRUPT_AND_STATUS_INT_PARABUS_PE	23
#define	DLU_LINK_LAYER_INTERRUPT_AND_STATUS_INT_UNSPRTD_DLLP	22
#define	DLU_LINK_LAYER_INTERRUPT_AND_STATUS_INT_SRC_ERR_TLP	17
#define	DLU_LINK_LAYER_INTERRUPT_MASK				0xe2220
#define	DLU_LINK_LAYER_INTERRUPT_MASK_MSK_LINK_ERR_ACT		31
#define	DLU_LINK_LAYER_INTERRUPT_MASK_MSK_PARABUS_PE		23
#define	DLU_LINK_LAYER_INTERRUPT_MASK_MSK_UNSPRTD_DLLP		22
#define	DLU_LINK_LAYER_INTERRUPT_MASK_MSK_SRC_ERR_TLP		17
#define	DLU_FLOW_CONTROL_UPDATE_CONTROL				0xe2240
#define	DLU_FLOW_CONTROL_UPDATE_CONTROL_FC0_U_C_EN		2
#define	DLU_FLOW_CONTROL_UPDATE_CONTROL_FC0_U_NP_EN		1
#define	DLU_FLOW_CONTROL_UPDATE_CONTROL_FC0_U_P_EN		0
#define	DLU_TXLINK_REPLAY_TIMER_THRESHOLD			0xe2410
#define	DLU_TXLINK_REPLAY_TIMER_THRESHOLD_RPLAY_TMR_THR		0
#define	DLU_TXLINK_REPLAY_TIMER_THRESHOLD_RPLAY_TMR_THR_MASK	0xfffff
#define	DLU_TXLINK_REPLAY_TIMER_THRESHOLD_DEFAULT		0xc9
#define	DLU_PORT_CONTROL					0xe2b00
#define	DLU_PORT_CONTROL_CK_EN					0
#define	DLU_PORT_STATUS						0xe2b08

#define	MMU_INTERRUPT_STATUS_TTC_DUE_P				8
#define	MMU_INTERRUPT_STATUS_TTC_DUE_S				40
#define	ILU_INTERRUPT_STATUS_IHB_UE_P				4
#define	ILU_INTERRUPT_STATUS_IHB_UE_S				36
#define	TLU_UNCORRECTABLE_ERROR_STATUS_CLEAR_ECRC_P		19
#define	TLU_UNCORRECTABLE_ERROR_STATUS_CLEAR_ECRC_S		51
#define	TLU_UNCORRECTABLE_ERROR_STATUS_CLEAR_POIS_P		12
#define	TLU_UNCORRECTABLE_ERROR_STATUS_CLEAR_POIS_S		44
#define	TLU_OTHER_EVENT_STATUS_CLEAR_EIUE_P			0
#define	TLU_OTHER_EVENT_STATUS_CLEAR_EIUE_S			32
#define	TLU_OTHER_EVENT_STATUS_CLEAR_ERBUE_P			1
#define	TLU_OTHER_EVENT_STATUS_CLEAR_ERBUE_S			33
#define	TLU_OTHER_EVENT_STATUS_CLEAR_TLUEITMO_P			7
#define	TLU_OTHER_EVENT_STATUS_CLEAR_TLUEITMO_S			39
#define	TLU_OTHER_EVENT_STATUS_CLEAR_EHBUE_P			12
#define	TLU_OTHER_EVENT_STATUS_CLEAR_EHBUE_S			44
#define	TLU_OTHER_EVENT_STATUS_CLEAR_EDBUE_P			12
#define	TLU_OTHER_EVENT_STATUS_CLEAR_EDBUE_S			44

#define	TLU_CONTROL_DRN_TR_DIS					35

#define	TLU_SLOT_CONTROL					0x90038
#define	TLU_SLOT_CONTROL_PWFDEN					1
#define	TLU_SLOT_STATUS						0x90040
#define	TLU_SLOT_STATUS_PSD					6
#define	TLU_SLOT_STATUS_MRLS					5
#define	TLU_SLOT_STATUS_CMDCPLT					4
#define	TLU_SLOT_STATUS_PSDC					3
#define	TLU_SLOT_STATUS_MRLC					2
#define	TLU_SLOT_STATUS_PWFD					1
#define	TLU_SLOT_STATUS_ABTN					0

#define	FLP_PORT_LINK_CONTROL					0xe5008
#define	FLP_PORT_LINK_CONTROL_RETRAIN				5

#define	FLP_PORT_CONTROL					0xe5200
#define	FLP_PORT_CONTROL_PORT_DIS				0

#define	FLP_PORT_ACTIVE_STATUS					0xe5240
#define	FLP_PORT_ACTIVE_STATUS_TRAIN_ERROR			1

#define	HOTPLUG_CONTROL						0x88000
#define	HOTPLUG_CONTROL_SLOTPON					3
#define	HOTPLUG_CONTROL_PWREN					2
#define	HOTPLUG_CONTROL_CLKEN					1
#define	HOTPLUG_CONTROL_N_PERST					0

#define	DRAIN_CONTROL_STATUS					0x51100
#define	DRAIN_CONTROL_STATUS_DRAIN				0

#ifdef	__cplusplus
}
#endif

#endif	/* _SYS_OBERON_REGS_H */