xref: /onnv-gate/usr/src/uts/sun4/io/fpc/fpc.h (revision 1370:c1bce5cec2ac)
1*1370Sschwartz /*
2*1370Sschwartz  * CDDL HEADER START
3*1370Sschwartz  *
4*1370Sschwartz  * The contents of this file are subject to the terms of the
5*1370Sschwartz  * Common Development and Distribution License (the "License").
6*1370Sschwartz  * You may not use this file except in compliance with the License.
7*1370Sschwartz  *
8*1370Sschwartz  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9*1370Sschwartz  * or http://www.opensolaris.org/os/licensing.
10*1370Sschwartz  * See the License for the specific language governing permissions
11*1370Sschwartz  * and limitations under the License.
12*1370Sschwartz  *
13*1370Sschwartz  * When distributing Covered Code, include this CDDL HEADER in each
14*1370Sschwartz  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15*1370Sschwartz  * If applicable, add the following below this CDDL HEADER, with the
16*1370Sschwartz  * fields enclosed by brackets "[]" replaced with your own identifying
17*1370Sschwartz  * information: Portions Copyright [yyyy] [name of copyright owner]
18*1370Sschwartz  *
19*1370Sschwartz  * CDDL HEADER END
20*1370Sschwartz  */
21*1370Sschwartz 
22*1370Sschwartz /*
23*1370Sschwartz  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
24*1370Sschwartz  * Use is subject to license terms.
25*1370Sschwartz  */
26*1370Sschwartz 
27*1370Sschwartz #ifndef	_FPC_H
28*1370Sschwartz #define	_FPC_H
29*1370Sschwartz 
30*1370Sschwartz #pragma ident	"%Z%%M%	%I%	%E% SMI"
31*1370Sschwartz 
32*1370Sschwartz #ifdef	__cplusplus
33*1370Sschwartz extern "C" {
34*1370Sschwartz #endif
35*1370Sschwartz 
36*1370Sschwartz #define	SUCCESS	0
37*1370Sschwartz #define	FAILURE	-1
38*1370Sschwartz 
39*1370Sschwartz #define	NUM_LEAVES	2
40*1370Sschwartz 
41*1370Sschwartz extern int fpc_debug;
42*1370Sschwartz #define	FPC_DBG1 if (fpc_debug >= 1) printf
43*1370Sschwartz #define	FPC_DBG2 if (fpc_debug >= 2) printf
44*1370Sschwartz 
45*1370Sschwartz /*
46*1370Sschwartz  * Defs for fpc-kstat.c.  Put'em here for now even though they don't
47*1370Sschwartz  * have to do with the lower-level implementation.
48*1370Sschwartz  */
49*1370Sschwartz extern int fpc_kstat_init(dev_info_t *dip);
50*1370Sschwartz extern void fpc_kstat_fini(dev_info_t *dip);
51*1370Sschwartz 
52*1370Sschwartz typedef enum fire_perfcnt {
53*1370Sschwartz 	jbc = 0,
54*1370Sschwartz 	imu,
55*1370Sschwartz 	mmu,
56*1370Sschwartz 	tlu,
57*1370Sschwartz 	lpu
58*1370Sschwartz } fire_perfcnt_t;
59*1370Sschwartz 
60*1370Sschwartz /* Set to the last entry in fire_perfcnt_t. */
61*1370Sschwartz #define	MAX_REG_TYPES		((int)lpu + 1)
62*1370Sschwartz 
63*1370Sschwartz #define	NUM_JBC_COUNTERS	2
64*1370Sschwartz #define	NUM_IMU_COUNTERS	2
65*1370Sschwartz #define	NUM_MMU_COUNTERS	2
66*1370Sschwartz #define	NUM_TLU_COUNTERS	3
67*1370Sschwartz #define	NUM_LPU_COUNTERS	2
68*1370Sschwartz 
69*1370Sschwartz /* Sum of all NUM_xxx_COUNTERS above. */
70*1370Sschwartz #define	NUM_TOTAL_COUNTERS	11
71*1370Sschwartz 
72*1370Sschwartz /* largest group of counters */
73*1370Sschwartz #define	NUM_MAX_COUNTERS	NUM_TLU_COUNTERS
74*1370Sschwartz 
75*1370Sschwartz /* Event mask related. */
76*1370Sschwartz 
77*1370Sschwartz /* How much an event for a given PIC is shifted within the event mask. */
78*1370Sschwartz 
79*1370Sschwartz #define	PIC0_EVT_SEL_SHIFT	0
80*1370Sschwartz #define	PIC1_EVT_SEL_SHIFT	8
81*1370Sschwartz #define	PIC2_EVT_SEL_SHIFT	16
82*1370Sschwartz 
83*1370Sschwartz /* Width or mask of a single event within an event mask. */
84*1370Sschwartz 
85*1370Sschwartz #define	JBC01_EVT_MASK		0xFF
86*1370Sschwartz #define	IMU01_EVT_MASK		0xFF
87*1370Sschwartz #define	MMU01_EVT_MASK		0xFF
88*1370Sschwartz #define	TLU01_EVT_MASK		0xFF
89*1370Sschwartz #define	TLU2_EVT_MASK		0x3
90*1370Sschwartz #define	LPU12_EVT_MASK		0xFFFF
91*1370Sschwartz 
92*1370Sschwartz /* Positioned masks for different event fields within an event mask. */
93*1370Sschwartz 
94*1370Sschwartz #define	JBC_PIC0_EVT_MASK	((uint64_t)JBC01_EVT_MASK << PIC0_EVT_SEL_SHIFT)
95*1370Sschwartz #define	JBC_PIC1_EVT_MASK	((uint64_t)JBC01_EVT_MASK << PIC1_EVT_SEL_SHIFT)
96*1370Sschwartz #define	IMU_PIC0_EVT_MASK	((uint64_t)IMU01_EVT_MASK << PIC0_EVT_SEL_SHIFT)
97*1370Sschwartz #define	IMU_PIC1_EVT_MASK	((uint64_t)IMU01_EVT_MASK << PIC1_EVT_SEL_SHIFT)
98*1370Sschwartz #define	MMU_PIC0_EVT_MASK	((uint64_t)MMU01_EVT_MASK << PIC0_EVT_SEL_SHIFT)
99*1370Sschwartz #define	MMU_PIC1_EVT_MASK	((uint64_t)MMU01_EVT_MASK << PIC1_EVT_SEL_SHIFT)
100*1370Sschwartz #define	TLU_PIC0_EVT_MASK	((uint64_t)TLU01_EVT_MASK << PIC0_EVT_SEL_SHIFT)
101*1370Sschwartz #define	TLU_PIC1_EVT_MASK	((uint64_t)TLU01_EVT_MASK << PIC1_EVT_SEL_SHIFT)
102*1370Sschwartz #define	TLU_PIC2_EVT_MASK	((uint64_t)TLU2_EVT_MASK << PIC2_EVT_SEL_SHIFT)
103*1370Sschwartz #define	LPU_PIC0_EVT_MASK	((uint64_t)LPU12_EVT_MASK << PIC0_EVT_SEL_SHIFT)
104*1370Sschwartz #define	LPU_PIC1_EVT_MASK	((uint64_t)LPU12_EVT_MASK << PIC2_EVT_SEL_SHIFT)
105*1370Sschwartz 
106*1370Sschwartz /*
107*1370Sschwartz  * Take a dip to define the device...
108*1370Sschwartz  *   sun4v: can convert dip to a dev_hdl needed for hyp. perf ctr interface.
109*1370Sschwartz  *   sun4u: can convert dip to an ldi_ident_t I can use for a layered PCItool
110*1370Sschwartz  *	ioctl.
111*1370Sschwartz  *
112*1370Sschwartz  * Define which of JBUS, PCIE_A and PCIE_B regs are available.  HW partitioning
113*1370Sschwartz  * may make some register sets unavailable to certain virtual nodes.
114*1370Sschwartz  */
115*1370Sschwartz 
116*1370Sschwartz #define	JBUS_REGS_AVAIL		0x1	/* JBUS regs avail */
117*1370Sschwartz #define	PCIE_A_REGS_AVAIL	0x2
118*1370Sschwartz #define	PCIE_B_REGS_AVAIL	0x4
119*1370Sschwartz 
120*1370Sschwartz extern int fpc_perfcnt_module_init(dev_info_t *dip, int *avail);
121*1370Sschwartz extern int fpc_perfcnt_module_fini(dev_info_t *dip);
122*1370Sschwartz 
123*1370Sschwartz /*
124*1370Sschwartz  * Program a performance counter.
125*1370Sschwartz  *
126*1370Sschwartz  * reggroup is which type of counter.
127*1370Sschwartz  * counter is the counter number.
128*1370Sschwartz  * event is the event to program for that counter.
129*1370Sschwartz  */
130*1370Sschwartz extern int fpc_perfcnt_program(int devnum, fire_perfcnt_t reggroup,
131*1370Sschwartz     uint64_t event);
132*1370Sschwartz 
133*1370Sschwartz /*
134*1370Sschwartz  * Read a performance counter.
135*1370Sschwartz  *
136*1370Sschwartz  * reggroup is which type of counter.
137*1370Sschwartz  * counter is the counter number.
138*1370Sschwartz  * event_p returns the event programmed for that counter.
139*1370Sschwartz  * value_p returns the counter value.
140*1370Sschwartz  */
141*1370Sschwartz extern int fpc_perfcnt_read(int devnum, fire_perfcnt_t reggroup,
142*1370Sschwartz     uint64_t *event_p, uint64_t values[NUM_MAX_COUNTERS]);
143*1370Sschwartz 
144*1370Sschwartz /*
145*1370Sschwartz  * Definitions of the different types of events.
146*1370Sschwartz  *
147*1370Sschwartz  * The first part says which registers these events are for.
148*1370Sschwartz  * For example, JBC01 means the JBC performance counters 0 and 1
149*1370Sschwartz  */
150*1370Sschwartz 
151*1370Sschwartz #define	JBC01_S_EVT_NONE		"event_none"
152*1370Sschwartz #define	JBC01_S_EVT_CLK			"clock_cyc"
153*1370Sschwartz #define	JBC01_S_EVT_IDLE		"idle_cyc"
154*1370Sschwartz #define	JBC01_S_EVT_FIRE		"fire_jbus_cyc"
155*1370Sschwartz #define	JBC01_S_EVT_READ_LATENCY	"rd_latency_cyc"
156*1370Sschwartz #define	JBC01_S_EVT_READ_SAMPLE		"rd_sample"
157*1370Sschwartz #define	JBC01_S_EVT_I2C_PIO		"pios_i2c"
158*1370Sschwartz #define	JBC01_S_EVT_EBUS_PIO		"pios_ebus"
159*1370Sschwartz #define	JBC01_S_EVT_RINGA_PIO		"pios_ringA"
160*1370Sschwartz #define	JBC01_S_EVT_RINGB_PIO		"pios_ringB"
161*1370Sschwartz #define	JBC01_S_EVT_PARTIAL_WR		"partial_wr"
162*1370Sschwartz #define	JBC01_S_EVT_TOTAL_WR		"total_wr"
163*1370Sschwartz #define	JBC01_S_EVT_TOTAL_RD		"total_rd"
164*1370Sschwartz #define	JBC01_S_EVT_AOKOFF		"aokoff"
165*1370Sschwartz #define	JBC01_S_EVT_DOKOFF		"dokoff"
166*1370Sschwartz #define	JBC01_S_EVT_DAOKOFF		"daokoff"
167*1370Sschwartz #define	JBC01_S_EVT_JBUS_COH_XACT	"jbus_coh_tr"
168*1370Sschwartz #define	JBC01_S_EVT_FIRE_COH_XACT	"fire_coh_tr"
169*1370Sschwartz #define	JBC01_S_EVT_JBUS_NCOH_XACT	"jbus_ncoh_tr"
170*1370Sschwartz #define	JBC01_S_EVT_FGN_IO_HIT		"fgn_pio_hit"
171*1370Sschwartz #define	JBC01_S_EVT_FIRE_WBS		"fire_wb"
172*1370Sschwartz #define	JBC01_S_EVT_PCIEA_PIO_WR	"pio_wr_pcieA"
173*1370Sschwartz #define	JBC01_S_EVT_PCIEA_PIO_RD	"pio_rd_pcieA"
174*1370Sschwartz #define	JBC01_S_EVT_PCIEB_PIO_WR	"pio_wr_pcieB"
175*1370Sschwartz #define	JBC01_S_EVT_PCIEB_PIO_RD	"pio_rd_pcieB"
176*1370Sschwartz 
177*1370Sschwartz #define	JBC01_EVT_NONE			0x0
178*1370Sschwartz #define	JBC01_EVT_CLK			0x1
179*1370Sschwartz #define	JBC01_EVT_IDLE			0x2
180*1370Sschwartz #define	JBC01_EVT_FIRE			0x3
181*1370Sschwartz #define	JBC01_EVT_READ_LATENCY		0x4
182*1370Sschwartz #define	JBC01_EVT_READ_SAMPLE		0x5
183*1370Sschwartz #define	JBC01_EVT_I2C_PIO		0x6
184*1370Sschwartz #define	JBC01_EVT_EBUS_PIO		0x7
185*1370Sschwartz #define	JBC01_EVT_RINGA_PIO		0x8
186*1370Sschwartz #define	JBC01_EVT_RINGB_PIO		0x9
187*1370Sschwartz #define	JBC01_EVT_PARTIAL_WR		0xA
188*1370Sschwartz #define	JBC01_EVT_TOTAL_WR		0xB
189*1370Sschwartz #define	JBC01_EVT_TOTAL_RD		0xC
190*1370Sschwartz #define	JBC01_EVT_AOKOFF		0xD
191*1370Sschwartz #define	JBC01_EVT_DOKOFF		0xE
192*1370Sschwartz #define	JBC01_EVT_DAOKOFF		0xF
193*1370Sschwartz #define	JBC01_EVT_JBUS_COH_XACT		0x10
194*1370Sschwartz #define	JBC01_EVT_FIRE_COH_XACT		0x11
195*1370Sschwartz #define	JBC01_EVT_JBUS_NCOH_XACT	0x12
196*1370Sschwartz #define	JBC01_EVT_FGN_IO_HIT		0x13
197*1370Sschwartz #define	JBC01_EVT_FIRE_WBS		0x14
198*1370Sschwartz #define	JBC01_EVT_PCIEA_PIO_WR		0x15
199*1370Sschwartz #define	JBC01_EVT_PCIEA_PIO_RD		0x16
200*1370Sschwartz #define	JBC01_EVT_PCIEB_PIO_WR		0x17
201*1370Sschwartz #define	JBC01_EVT_PCIEB_PIO_RD		0x18
202*1370Sschwartz 
203*1370Sschwartz #define	IMU01_S_EVT_NONE		"event_none"
204*1370Sschwartz #define	IMU01_S_EVT_CLK			"clock_cyc"
205*1370Sschwartz #define	IMU01_S_EVT_MONDO		"mondos_iss"
206*1370Sschwartz #define	IMU01_S_EVT_MSI			"msi_iss"
207*1370Sschwartz #define	IMU01_S_EVT_MONDO_NAKS		"mondos_nacks"
208*1370Sschwartz #define	IMU01_S_EVT_EQ_WR		"eq_wr"
209*1370Sschwartz #define	IMU01_S_EVT_EQ_MONDO		"eq_mondos"
210*1370Sschwartz 
211*1370Sschwartz #define	IMU01_EVT_NONE			0x0
212*1370Sschwartz #define	IMU01_EVT_CLK			0x1
213*1370Sschwartz #define	IMU01_EVT_MONDO			0x2
214*1370Sschwartz #define	IMU01_EVT_MSI			0x3
215*1370Sschwartz #define	IMU01_EVT_MONDO_NAKS		0x4
216*1370Sschwartz #define	IMU01_EVT_EQ_WR			0x5
217*1370Sschwartz #define	IMU01_EVT_EQ_MONDO		0x6
218*1370Sschwartz 
219*1370Sschwartz #define	MMU01_S_EVT_NONE		"event_none"
220*1370Sschwartz #define	MMU01_S_EVT_CLK			"clock_cyc"
221*1370Sschwartz #define	MMU01_S_EVT_TRANS		"total_transl"
222*1370Sschwartz #define	MMU01_S_EVT_STALL		"total_stall_cyc"
223*1370Sschwartz #define	MMU01_S_EVT_TRANSL_MISS		"total_tranl_miss"
224*1370Sschwartz #define	MMU01_S_EVT_TBLWLK_STALL	"tblwlk_stall_cyc"
225*1370Sschwartz #define	MMU01_S_EVT_BYPASS_TRANSL	"bypass_transl"
226*1370Sschwartz #define	MMU01_S_EVT_TRANSL_TRANSL	"transl_transl"
227*1370Sschwartz #define	MMU01_S_EVT_FLOW_CNTL_STALL	"flow_stall_cyc"
228*1370Sschwartz #define	MMU01_S_EVT_FLUSH_CACHE_ENT	"cache_entr_flush"
229*1370Sschwartz 
230*1370Sschwartz #define	MMU01_EVT_NONE			0x0
231*1370Sschwartz #define	MMU01_EVT_CLK			0x1
232*1370Sschwartz #define	MMU01_EVT_TRANSL		0x2
233*1370Sschwartz #define	MMU01_EVT_STALL			0x3
234*1370Sschwartz #define	MMU01_EVT_TRANSL_MISS		0x4
235*1370Sschwartz #define	MMU01_EVT_TBLWLK_STALL		0x5
236*1370Sschwartz #define	MMU01_EVT_BYPASS_TRANSL		0x6
237*1370Sschwartz #define	MMU01_EVT_TRANSL_TRANSL		0x7
238*1370Sschwartz #define	MMU01_EVT_FLOW_CNTL_STALL	0x8
239*1370Sschwartz #define	MMU01_EVT_FLUSH_CACHE_ENT	0x9
240*1370Sschwartz 
241*1370Sschwartz #define	TLU01_S_EVT_NONE		"event_none"
242*1370Sschwartz #define	TLU01_S_EVT_CLK			"clock_cyc"
243*1370Sschwartz #define	TLU01_S_EVT_COMPL		"compl_recvd"
244*1370Sschwartz #define	TLU01_S_EVT_XMT_POST_CR_UNAV	"post_cr_unav_cyc"
245*1370Sschwartz #define	TLU01_S_EVT_XMT_NPOST_CR_UNAV	"npost_cr_unav_cyc"
246*1370Sschwartz #define	TLU01_S_EVT_XMT_CMPL_CR_UNAV	"compl_cr_unav_cyc"
247*1370Sschwartz #define	TLU01_S_EVT_XMT_ANY_CR_UNAV	"trans_cr_any_unav"
248*1370Sschwartz #define	TLU01_S_EVT_RETRY_CR_UNAV	"retry_cr_unav"
249*1370Sschwartz #define	TLU01_S_EVT_MEMRD_PKT_RCVD	"recvd_mem_rd_pkt"
250*1370Sschwartz #define	TLU01_S_EVT_MEMWR_PKT_RCVD	"recvd_mem_wr_pkt"
251*1370Sschwartz #define	TLU01_S_EVT_RCV_CR_THRESH	"recv_cr_thresh"
252*1370Sschwartz #define	TLU01_S_EVT_RCV_PST_HDR_CR_EXH	"recv_hdr_cr_exh_cyc"
253*1370Sschwartz #define	TLU01_S_EVT_RCV_PST_DA_CR_MPS	"recv_post_da_cr_mps"
254*1370Sschwartz #define	TLU01_S_EVT_RCV_NPST_HDR_CR_EXH	"recv_npost_hdr_cr_exh"
255*1370Sschwartz #define	TLU01_S_EVT_RCVR_L0S		"recvr_l0s_cyc"
256*1370Sschwartz #define	TLU01_S_EVT_RCVR_L0S_TRANS	"recvr_l0s_trans"
257*1370Sschwartz #define	TLU01_S_EVT_XMTR_L0S		"trans_l0s_cyc"
258*1370Sschwartz #define	TLU01_S_EVT_XMTR_L0S_TRANS	"trans_l0s_trans"
259*1370Sschwartz #define	TLU01_S_EVT_RCVR_ERR		"recvr_err"
260*1370Sschwartz #define	TLU01_S_EVT_BAD_TLP		"bad_tlp"
261*1370Sschwartz #define	TLU01_S_EVT_BAD_DLLP		"bad_dllp"
262*1370Sschwartz #define	TLU01_S_EVT_REPLAY_ROLLOVER	"replay_rollover"
263*1370Sschwartz #define	TLU01_S_EVT_REPLAY_TMO		"replay_to"
264*1370Sschwartz 
265*1370Sschwartz #define	TLU01_EVT_NONE			0x0
266*1370Sschwartz #define	TLU01_EVT_CLK			0x1
267*1370Sschwartz #define	TLU01_EVT_COMPL			0x2
268*1370Sschwartz #define	TLU01_EVT_XMT_POST_CR_UNAV	0x10
269*1370Sschwartz #define	TLU01_EVT_XMT_NPOST_CR_UNAV	0x11
270*1370Sschwartz #define	TLU01_EVT_XMT_CMPL_CR_UNAV	0x12
271*1370Sschwartz #define	TLU01_EVT_XMT_ANY_CR_UNAV	0x13
272*1370Sschwartz #define	TLU01_EVT_RETRY_CR_UNAV		0x14
273*1370Sschwartz #define	TLU01_EVT_MEMRD_PKT_RCVD	0x20
274*1370Sschwartz #define	TLU01_EVT_MEMWR_PKT_RCVD	0x21
275*1370Sschwartz #define	TLU01_EVT_RCV_CR_THRESH		0x22
276*1370Sschwartz #define	TLU01_EVT_RCV_PST_HDR_CR_EXH	0x23
277*1370Sschwartz #define	TLU01_EVT_RCV_PST_DA_CR_MPS	0x24
278*1370Sschwartz #define	TLU01_EVT_RCV_NPST_HDR_CR_EXH	0x25
279*1370Sschwartz #define	TLU01_EVT_RCVR_L0S		0x30
280*1370Sschwartz #define	TLU01_EVT_RCVR_L0S_TRANS	0x31
281*1370Sschwartz #define	TLU01_EVT_XMTR_L0S		0x32
282*1370Sschwartz #define	TLU01_EVT_XMTR_L0S_TRANS	0x33
283*1370Sschwartz #define	TLU01_EVT_RCVR_ERR		0x40
284*1370Sschwartz #define	TLU01_EVT_BAD_TLP		0x42
285*1370Sschwartz #define	TLU01_EVT_BAD_DLLP		0x43
286*1370Sschwartz #define	TLU01_EVT_REPLAY_ROLLOVER	0x44
287*1370Sschwartz #define	TLU01_EVT_REPLAY_TMO		0x47
288*1370Sschwartz 
289*1370Sschwartz #define	TLU2_S_EVT_NONE			"event_none"
290*1370Sschwartz #define	TLU2_S_EVT_NON_POST_COMPL_TIME	"non_post_compl"
291*1370Sschwartz #define	TLU2_S_EVT_XMT_DATA_WORD	"trans_data_words"
292*1370Sschwartz #define	TLU2_S_EVT_RCVD_DATA_WORD	"recvd_data_words"
293*1370Sschwartz 
294*1370Sschwartz #define	TLU2_EVT_NONE			0x0
295*1370Sschwartz #define	TLU2_EVT_NON_POST_COMPL_TIME	0x1
296*1370Sschwartz #define	TLU2_EVT_XMT_DATA_WORD		0x2
297*1370Sschwartz #define	TLU2_EVT_RCVD_DATA_WORD		0x3
298*1370Sschwartz 
299*1370Sschwartz #define	LPU12_S_EVT_RESET		"event_reset"
300*1370Sschwartz #define	LPU12_S_EVT_TLP_RCVD		"tlp_recvd"
301*1370Sschwartz #define	LPU12_S_EVT_DLLP_RCVD		"dllp_recvd"
302*1370Sschwartz #define	LPU12_S_EVT_ACK_DLLP_RCVD	"ack_dllp_recvd"
303*1370Sschwartz #define	LPU12_S_EVT_NAK_DLLP_RCVD	"nak_dllp_recvd"
304*1370Sschwartz #define	LPU12_S_EVT_RETRY_START		"retries_started"
305*1370Sschwartz #define	LPU12_S_EVT_REPLAY_TMO		"replay_timer_to"
306*1370Sschwartz #define	LPU12_S_EVT_ACK_NAK_LAT_TMO	"ack_nak_lat_to"
307*1370Sschwartz #define	LPU12_S_EVT_BAD_DLLP		"bad_dllp"
308*1370Sschwartz #define	LPU12_S_EVT_BAD_TLP		"bad_tlp"
309*1370Sschwartz #define	LPU12_S_EVT_NAK_DLLP_SENT	"nak_dllp_sent"
310*1370Sschwartz #define	LPU12_S_EVT_ACK_DLLP_SENT	"ack_dllp_sent"
311*1370Sschwartz #define	LPU12_S_EVT_RCVR_ERROR		"recvr_err"
312*1370Sschwartz #define	LPU12_S_EVT_LTSSM_RECOV_ENTRY	"ltssm_recov_entr"
313*1370Sschwartz #define	LPU12_S_EVT_REPLAY_IN_PROG	"replay_prog_cyc"
314*1370Sschwartz #define	LPU12_S_EVT_TLP_XMT_IN_PROG	"tlp_trans_prog_cyc"
315*1370Sschwartz #define	LPU12_S_EVT_CLK_CYC		"clock_cyc"
316*1370Sschwartz #define	LPU12_S_EVT_TLP_DLLP_XMT_PROG	"tlp_dllp_trans_cyc"
317*1370Sschwartz #define	LPU12_S_EVT_TLP_DLLP_RCV_PROG	"tlp_dllp_recv_cyc"
318*1370Sschwartz 
319*1370Sschwartz #define	LPU12_EVT_RESET			0x0
320*1370Sschwartz #define	LPU12_EVT_TLP_RCVD		0x1
321*1370Sschwartz #define	LPU12_EVT_DLLP_RCVD		0x2
322*1370Sschwartz #define	LPU12_EVT_ACK_DLLP_RCVD		0x3
323*1370Sschwartz #define	LPU12_EVT_NAK_DLLP_RCVD		0x4
324*1370Sschwartz #define	LPU12_EVT_RETRY_START		0x5
325*1370Sschwartz #define	LPU12_EVT_REPLAY_TMO		0x6
326*1370Sschwartz #define	LPU12_EVT_ACK_NAK_LAT_TMO	0x7
327*1370Sschwartz #define	LPU12_EVT_BAD_DLLP		0x8
328*1370Sschwartz #define	LPU12_EVT_BAD_TLP		0x9
329*1370Sschwartz #define	LPU12_EVT_NAK_DLLP_SENT		0xA
330*1370Sschwartz #define	LPU12_EVT_ACK_DLLP_SENT		0xB
331*1370Sschwartz #define	LPU12_EVT_RCVR_ERROR		0xC
332*1370Sschwartz #define	LPU12_EVT_LTSSM_RECOV_ENTRY	0xD
333*1370Sschwartz #define	LPU12_EVT_REPLAY_IN_PROG	0xE
334*1370Sschwartz #define	LPU12_EVT_TLP_XMT_IN_PROG	0xF
335*1370Sschwartz #define	LPU12_EVT_CLK_CYC		0x10
336*1370Sschwartz #define	LPU12_EVT_TLP_DLLP_XMT_PROG	0x11
337*1370Sschwartz #define	LPU12_EVT_TLP_DLLP_RCV_PROG	0x12
338*1370Sschwartz 
339*1370Sschwartz #define	COMMON_S_CLEAR_PIC		"clear_pic"
340*1370Sschwartz 
341*1370Sschwartz #ifdef	__cplusplus
342*1370Sschwartz }
343*1370Sschwartz #endif
344*1370Sschwartz 
345*1370Sschwartz #endif	/* _FPC_H */
346