xref: /titanic_51/usr/src/uts/sun4/io/fpc/fpc.h (revision 0ad689d678ef901f32945172f48ddc7b16dde50d)
1110e73f9Sschwartz /*
2110e73f9Sschwartz  * CDDL HEADER START
3110e73f9Sschwartz  *
4110e73f9Sschwartz  * The contents of this file are subject to the terms of the
5110e73f9Sschwartz  * Common Development and Distribution License (the "License").
6110e73f9Sschwartz  * You may not use this file except in compliance with the License.
7110e73f9Sschwartz  *
8110e73f9Sschwartz  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9110e73f9Sschwartz  * or http://www.opensolaris.org/os/licensing.
10110e73f9Sschwartz  * See the License for the specific language governing permissions
11110e73f9Sschwartz  * and limitations under the License.
12110e73f9Sschwartz  *
13110e73f9Sschwartz  * When distributing Covered Code, include this CDDL HEADER in each
14110e73f9Sschwartz  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15110e73f9Sschwartz  * If applicable, add the following below this CDDL HEADER, with the
16110e73f9Sschwartz  * fields enclosed by brackets "[]" replaced with your own identifying
17110e73f9Sschwartz  * information: Portions Copyright [yyyy] [name of copyright owner]
18110e73f9Sschwartz  *
19110e73f9Sschwartz  * CDDL HEADER END
20110e73f9Sschwartz  */
21110e73f9Sschwartz 
22110e73f9Sschwartz /*
23110e73f9Sschwartz  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
24110e73f9Sschwartz  * Use is subject to license terms.
25110e73f9Sschwartz  */
26110e73f9Sschwartz 
27110e73f9Sschwartz #ifndef	_FPC_H
28110e73f9Sschwartz #define	_FPC_H
29110e73f9Sschwartz 
30110e73f9Sschwartz #pragma ident	"%Z%%M%	%I%	%E% SMI"
31110e73f9Sschwartz 
32110e73f9Sschwartz #ifdef	__cplusplus
33110e73f9Sschwartz extern "C" {
34110e73f9Sschwartz #endif
35110e73f9Sschwartz 
36110e73f9Sschwartz #define	SUCCESS	0
37110e73f9Sschwartz #define	FAILURE	-1
38110e73f9Sschwartz 
39110e73f9Sschwartz #define	NUM_LEAVES	2
40110e73f9Sschwartz 
41110e73f9Sschwartz extern int fpc_debug;
42110e73f9Sschwartz #define	FPC_DBG1 if (fpc_debug >= 1) printf
43110e73f9Sschwartz #define	FPC_DBG2 if (fpc_debug >= 2) printf
44110e73f9Sschwartz 
45110e73f9Sschwartz /*
46110e73f9Sschwartz  * Defs for fpc-kstat.c.  Put'em here for now even though they don't
47110e73f9Sschwartz  * have to do with the lower-level implementation.
48110e73f9Sschwartz  */
49110e73f9Sschwartz extern int fpc_kstat_init(dev_info_t *dip);
50110e73f9Sschwartz extern void fpc_kstat_fini(dev_info_t *dip);
51110e73f9Sschwartz 
52110e73f9Sschwartz typedef enum fire_perfcnt {
53110e73f9Sschwartz 	jbc = 0,
54110e73f9Sschwartz 	imu,
55110e73f9Sschwartz 	mmu,
56110e73f9Sschwartz 	tlu,
57110e73f9Sschwartz 	lpu
58110e73f9Sschwartz } fire_perfcnt_t;
59110e73f9Sschwartz 
60110e73f9Sschwartz /* Set to the last entry in fire_perfcnt_t. */
61110e73f9Sschwartz #define	MAX_REG_TYPES		((int)lpu + 1)
62110e73f9Sschwartz 
63110e73f9Sschwartz #define	NUM_JBC_COUNTERS	2
64110e73f9Sschwartz #define	NUM_IMU_COUNTERS	2
65110e73f9Sschwartz #define	NUM_MMU_COUNTERS	2
66110e73f9Sschwartz #define	NUM_TLU_COUNTERS	3
67110e73f9Sschwartz #define	NUM_LPU_COUNTERS	2
68110e73f9Sschwartz 
69110e73f9Sschwartz /* Sum of all NUM_xxx_COUNTERS above. */
70110e73f9Sschwartz #define	NUM_TOTAL_COUNTERS	11
71110e73f9Sschwartz 
72110e73f9Sschwartz /* largest group of counters */
73110e73f9Sschwartz #define	NUM_MAX_COUNTERS	NUM_TLU_COUNTERS
74110e73f9Sschwartz 
75110e73f9Sschwartz /* Event mask related. */
76110e73f9Sschwartz 
77110e73f9Sschwartz /* How much an event for a given PIC is shifted within the event mask. */
78110e73f9Sschwartz 
79110e73f9Sschwartz #define	PIC0_EVT_SEL_SHIFT	0
80110e73f9Sschwartz #define	PIC1_EVT_SEL_SHIFT	8
81110e73f9Sschwartz #define	PIC2_EVT_SEL_SHIFT	16
82110e73f9Sschwartz 
83110e73f9Sschwartz /* Width or mask of a single event within an event mask. */
84110e73f9Sschwartz 
85110e73f9Sschwartz #define	JBC01_EVT_MASK		0xFF
86110e73f9Sschwartz #define	IMU01_EVT_MASK		0xFF
87110e73f9Sschwartz #define	MMU01_EVT_MASK		0xFF
88110e73f9Sschwartz #define	TLU01_EVT_MASK		0xFF
89110e73f9Sschwartz #define	TLU2_EVT_MASK		0x3
90110e73f9Sschwartz #define	LPU12_EVT_MASK		0xFFFF
91110e73f9Sschwartz 
92110e73f9Sschwartz /* Positioned masks for different event fields within an event mask. */
93110e73f9Sschwartz 
94110e73f9Sschwartz #define	JBC_PIC0_EVT_MASK	((uint64_t)JBC01_EVT_MASK << PIC0_EVT_SEL_SHIFT)
95110e73f9Sschwartz #define	JBC_PIC1_EVT_MASK	((uint64_t)JBC01_EVT_MASK << PIC1_EVT_SEL_SHIFT)
96110e73f9Sschwartz #define	IMU_PIC0_EVT_MASK	((uint64_t)IMU01_EVT_MASK << PIC0_EVT_SEL_SHIFT)
97110e73f9Sschwartz #define	IMU_PIC1_EVT_MASK	((uint64_t)IMU01_EVT_MASK << PIC1_EVT_SEL_SHIFT)
98110e73f9Sschwartz #define	MMU_PIC0_EVT_MASK	((uint64_t)MMU01_EVT_MASK << PIC0_EVT_SEL_SHIFT)
99110e73f9Sschwartz #define	MMU_PIC1_EVT_MASK	((uint64_t)MMU01_EVT_MASK << PIC1_EVT_SEL_SHIFT)
100110e73f9Sschwartz #define	TLU_PIC0_EVT_MASK	((uint64_t)TLU01_EVT_MASK << PIC0_EVT_SEL_SHIFT)
101110e73f9Sschwartz #define	TLU_PIC1_EVT_MASK	((uint64_t)TLU01_EVT_MASK << PIC1_EVT_SEL_SHIFT)
102110e73f9Sschwartz #define	TLU_PIC2_EVT_MASK	((uint64_t)TLU2_EVT_MASK << PIC2_EVT_SEL_SHIFT)
103110e73f9Sschwartz #define	LPU_PIC0_EVT_MASK	((uint64_t)LPU12_EVT_MASK << PIC0_EVT_SEL_SHIFT)
104110e73f9Sschwartz #define	LPU_PIC1_EVT_MASK	((uint64_t)LPU12_EVT_MASK << PIC2_EVT_SEL_SHIFT)
105110e73f9Sschwartz 
106110e73f9Sschwartz /*
107110e73f9Sschwartz  * Take a dip to define the device...
108110e73f9Sschwartz  *   sun4v: can convert dip to a dev_hdl needed for hyp. perf ctr interface.
109110e73f9Sschwartz  *   sun4u: can convert dip to an ldi_ident_t I can use for a layered PCItool
110110e73f9Sschwartz  *	ioctl.
111110e73f9Sschwartz  *
112110e73f9Sschwartz  * Define which of JBUS, PCIE_A and PCIE_B regs are available.  HW partitioning
113110e73f9Sschwartz  * may make some register sets unavailable to certain virtual nodes.
114110e73f9Sschwartz  */
115110e73f9Sschwartz 
116110e73f9Sschwartz #define	JBUS_REGS_AVAIL		0x1	/* JBUS regs avail */
117110e73f9Sschwartz #define	PCIE_A_REGS_AVAIL	0x2
118110e73f9Sschwartz #define	PCIE_B_REGS_AVAIL	0x4
119110e73f9Sschwartz 
120*0ad689d6Sschwartz /* For checking platform from _init before installing module */
121*0ad689d6Sschwartz extern int fpc_init_platform_check();
122*0ad689d6Sschwartz 
123*0ad689d6Sschwartz /* Low level module initialization done at attach time. */
124110e73f9Sschwartz extern int fpc_perfcnt_module_init(dev_info_t *dip, int *avail);
125110e73f9Sschwartz extern int fpc_perfcnt_module_fini(dev_info_t *dip);
126110e73f9Sschwartz 
127110e73f9Sschwartz /*
128110e73f9Sschwartz  * Program a performance counter.
129110e73f9Sschwartz  *
130110e73f9Sschwartz  * reggroup is which type of counter.
131110e73f9Sschwartz  * counter is the counter number.
132110e73f9Sschwartz  * event is the event to program for that counter.
133110e73f9Sschwartz  */
134110e73f9Sschwartz extern int fpc_perfcnt_program(int devnum, fire_perfcnt_t reggroup,
135110e73f9Sschwartz     uint64_t event);
136110e73f9Sschwartz 
137110e73f9Sschwartz /*
138110e73f9Sschwartz  * Read a performance counter.
139110e73f9Sschwartz  *
140110e73f9Sschwartz  * reggroup is which type of counter.
141110e73f9Sschwartz  * counter is the counter number.
142110e73f9Sschwartz  * event_p returns the event programmed for that counter.
143110e73f9Sschwartz  * value_p returns the counter value.
144110e73f9Sschwartz  */
145110e73f9Sschwartz extern int fpc_perfcnt_read(int devnum, fire_perfcnt_t reggroup,
146110e73f9Sschwartz     uint64_t *event_p, uint64_t values[NUM_MAX_COUNTERS]);
147110e73f9Sschwartz 
148110e73f9Sschwartz /*
149110e73f9Sschwartz  * Definitions of the different types of events.
150110e73f9Sschwartz  *
151110e73f9Sschwartz  * The first part says which registers these events are for.
152110e73f9Sschwartz  * For example, JBC01 means the JBC performance counters 0 and 1
153110e73f9Sschwartz  */
154110e73f9Sschwartz 
155110e73f9Sschwartz #define	JBC01_S_EVT_NONE		"event_none"
156110e73f9Sschwartz #define	JBC01_S_EVT_CLK			"clock_cyc"
157110e73f9Sschwartz #define	JBC01_S_EVT_IDLE		"idle_cyc"
158110e73f9Sschwartz #define	JBC01_S_EVT_FIRE		"fire_jbus_cyc"
159110e73f9Sschwartz #define	JBC01_S_EVT_READ_LATENCY	"rd_latency_cyc"
160110e73f9Sschwartz #define	JBC01_S_EVT_READ_SAMPLE		"rd_sample"
161110e73f9Sschwartz #define	JBC01_S_EVT_I2C_PIO		"pios_i2c"
162110e73f9Sschwartz #define	JBC01_S_EVT_EBUS_PIO		"pios_ebus"
163110e73f9Sschwartz #define	JBC01_S_EVT_RINGA_PIO		"pios_ringA"
164110e73f9Sschwartz #define	JBC01_S_EVT_RINGB_PIO		"pios_ringB"
165110e73f9Sschwartz #define	JBC01_S_EVT_PARTIAL_WR		"partial_wr"
166110e73f9Sschwartz #define	JBC01_S_EVT_TOTAL_WR		"total_wr"
167110e73f9Sschwartz #define	JBC01_S_EVT_TOTAL_RD		"total_rd"
168110e73f9Sschwartz #define	JBC01_S_EVT_AOKOFF		"aokoff"
169110e73f9Sschwartz #define	JBC01_S_EVT_DOKOFF		"dokoff"
170110e73f9Sschwartz #define	JBC01_S_EVT_DAOKOFF		"daokoff"
171110e73f9Sschwartz #define	JBC01_S_EVT_JBUS_COH_XACT	"jbus_coh_tr"
172110e73f9Sschwartz #define	JBC01_S_EVT_FIRE_COH_XACT	"fire_coh_tr"
173110e73f9Sschwartz #define	JBC01_S_EVT_JBUS_NCOH_XACT	"jbus_ncoh_tr"
174110e73f9Sschwartz #define	JBC01_S_EVT_FGN_IO_HIT		"fgn_pio_hit"
175110e73f9Sschwartz #define	JBC01_S_EVT_FIRE_WBS		"fire_wb"
176110e73f9Sschwartz #define	JBC01_S_EVT_PCIEA_PIO_WR	"pio_wr_pcieA"
177110e73f9Sschwartz #define	JBC01_S_EVT_PCIEA_PIO_RD	"pio_rd_pcieA"
178110e73f9Sschwartz #define	JBC01_S_EVT_PCIEB_PIO_WR	"pio_wr_pcieB"
179110e73f9Sschwartz #define	JBC01_S_EVT_PCIEB_PIO_RD	"pio_rd_pcieB"
180110e73f9Sschwartz 
181110e73f9Sschwartz #define	JBC01_EVT_NONE			0x0
182110e73f9Sschwartz #define	JBC01_EVT_CLK			0x1
183110e73f9Sschwartz #define	JBC01_EVT_IDLE			0x2
184110e73f9Sschwartz #define	JBC01_EVT_FIRE			0x3
185110e73f9Sschwartz #define	JBC01_EVT_READ_LATENCY		0x4
186110e73f9Sschwartz #define	JBC01_EVT_READ_SAMPLE		0x5
187110e73f9Sschwartz #define	JBC01_EVT_I2C_PIO		0x6
188110e73f9Sschwartz #define	JBC01_EVT_EBUS_PIO		0x7
189110e73f9Sschwartz #define	JBC01_EVT_RINGA_PIO		0x8
190110e73f9Sschwartz #define	JBC01_EVT_RINGB_PIO		0x9
191110e73f9Sschwartz #define	JBC01_EVT_PARTIAL_WR		0xA
192110e73f9Sschwartz #define	JBC01_EVT_TOTAL_WR		0xB
193110e73f9Sschwartz #define	JBC01_EVT_TOTAL_RD		0xC
194110e73f9Sschwartz #define	JBC01_EVT_AOKOFF		0xD
195110e73f9Sschwartz #define	JBC01_EVT_DOKOFF		0xE
196110e73f9Sschwartz #define	JBC01_EVT_DAOKOFF		0xF
197110e73f9Sschwartz #define	JBC01_EVT_JBUS_COH_XACT		0x10
198110e73f9Sschwartz #define	JBC01_EVT_FIRE_COH_XACT		0x11
199110e73f9Sschwartz #define	JBC01_EVT_JBUS_NCOH_XACT	0x12
200110e73f9Sschwartz #define	JBC01_EVT_FGN_IO_HIT		0x13
201110e73f9Sschwartz #define	JBC01_EVT_FIRE_WBS		0x14
202110e73f9Sschwartz #define	JBC01_EVT_PCIEA_PIO_WR		0x15
203110e73f9Sschwartz #define	JBC01_EVT_PCIEA_PIO_RD		0x16
204110e73f9Sschwartz #define	JBC01_EVT_PCIEB_PIO_WR		0x17
205110e73f9Sschwartz #define	JBC01_EVT_PCIEB_PIO_RD		0x18
206110e73f9Sschwartz 
207110e73f9Sschwartz #define	IMU01_S_EVT_NONE		"event_none"
208110e73f9Sschwartz #define	IMU01_S_EVT_CLK			"clock_cyc"
209110e73f9Sschwartz #define	IMU01_S_EVT_MONDO		"mondos_iss"
210110e73f9Sschwartz #define	IMU01_S_EVT_MSI			"msi_iss"
211110e73f9Sschwartz #define	IMU01_S_EVT_MONDO_NAKS		"mondos_nacks"
212110e73f9Sschwartz #define	IMU01_S_EVT_EQ_WR		"eq_wr"
213110e73f9Sschwartz #define	IMU01_S_EVT_EQ_MONDO		"eq_mondos"
214110e73f9Sschwartz 
215110e73f9Sschwartz #define	IMU01_EVT_NONE			0x0
216110e73f9Sschwartz #define	IMU01_EVT_CLK			0x1
217110e73f9Sschwartz #define	IMU01_EVT_MONDO			0x2
218110e73f9Sschwartz #define	IMU01_EVT_MSI			0x3
219110e73f9Sschwartz #define	IMU01_EVT_MONDO_NAKS		0x4
220110e73f9Sschwartz #define	IMU01_EVT_EQ_WR			0x5
221110e73f9Sschwartz #define	IMU01_EVT_EQ_MONDO		0x6
222110e73f9Sschwartz 
223110e73f9Sschwartz #define	MMU01_S_EVT_NONE		"event_none"
224110e73f9Sschwartz #define	MMU01_S_EVT_CLK			"clock_cyc"
225110e73f9Sschwartz #define	MMU01_S_EVT_TRANS		"total_transl"
226110e73f9Sschwartz #define	MMU01_S_EVT_STALL		"total_stall_cyc"
227110e73f9Sschwartz #define	MMU01_S_EVT_TRANSL_MISS		"total_tranl_miss"
228110e73f9Sschwartz #define	MMU01_S_EVT_TBLWLK_STALL	"tblwlk_stall_cyc"
229110e73f9Sschwartz #define	MMU01_S_EVT_BYPASS_TRANSL	"bypass_transl"
230110e73f9Sschwartz #define	MMU01_S_EVT_TRANSL_TRANSL	"transl_transl"
231110e73f9Sschwartz #define	MMU01_S_EVT_FLOW_CNTL_STALL	"flow_stall_cyc"
232110e73f9Sschwartz #define	MMU01_S_EVT_FLUSH_CACHE_ENT	"cache_entr_flush"
233110e73f9Sschwartz 
234110e73f9Sschwartz #define	MMU01_EVT_NONE			0x0
235110e73f9Sschwartz #define	MMU01_EVT_CLK			0x1
236110e73f9Sschwartz #define	MMU01_EVT_TRANSL		0x2
237110e73f9Sschwartz #define	MMU01_EVT_STALL			0x3
238110e73f9Sschwartz #define	MMU01_EVT_TRANSL_MISS		0x4
239110e73f9Sschwartz #define	MMU01_EVT_TBLWLK_STALL		0x5
240110e73f9Sschwartz #define	MMU01_EVT_BYPASS_TRANSL		0x6
241110e73f9Sschwartz #define	MMU01_EVT_TRANSL_TRANSL		0x7
242110e73f9Sschwartz #define	MMU01_EVT_FLOW_CNTL_STALL	0x8
243110e73f9Sschwartz #define	MMU01_EVT_FLUSH_CACHE_ENT	0x9
244110e73f9Sschwartz 
245110e73f9Sschwartz #define	TLU01_S_EVT_NONE		"event_none"
246110e73f9Sschwartz #define	TLU01_S_EVT_CLK			"clock_cyc"
247110e73f9Sschwartz #define	TLU01_S_EVT_COMPL		"compl_recvd"
248110e73f9Sschwartz #define	TLU01_S_EVT_XMT_POST_CR_UNAV	"post_cr_unav_cyc"
249110e73f9Sschwartz #define	TLU01_S_EVT_XMT_NPOST_CR_UNAV	"npost_cr_unav_cyc"
250110e73f9Sschwartz #define	TLU01_S_EVT_XMT_CMPL_CR_UNAV	"compl_cr_unav_cyc"
251110e73f9Sschwartz #define	TLU01_S_EVT_XMT_ANY_CR_UNAV	"trans_cr_any_unav"
252110e73f9Sschwartz #define	TLU01_S_EVT_RETRY_CR_UNAV	"retry_cr_unav"
253110e73f9Sschwartz #define	TLU01_S_EVT_MEMRD_PKT_RCVD	"recvd_mem_rd_pkt"
254110e73f9Sschwartz #define	TLU01_S_EVT_MEMWR_PKT_RCVD	"recvd_mem_wr_pkt"
255110e73f9Sschwartz #define	TLU01_S_EVT_RCV_CR_THRESH	"recv_cr_thresh"
256110e73f9Sschwartz #define	TLU01_S_EVT_RCV_PST_HDR_CR_EXH	"recv_hdr_cr_exh_cyc"
257110e73f9Sschwartz #define	TLU01_S_EVT_RCV_PST_DA_CR_MPS	"recv_post_da_cr_mps"
258110e73f9Sschwartz #define	TLU01_S_EVT_RCV_NPST_HDR_CR_EXH	"recv_npost_hdr_cr_exh"
259110e73f9Sschwartz #define	TLU01_S_EVT_RCVR_L0S		"recvr_l0s_cyc"
260110e73f9Sschwartz #define	TLU01_S_EVT_RCVR_L0S_TRANS	"recvr_l0s_trans"
261110e73f9Sschwartz #define	TLU01_S_EVT_XMTR_L0S		"trans_l0s_cyc"
262110e73f9Sschwartz #define	TLU01_S_EVT_XMTR_L0S_TRANS	"trans_l0s_trans"
263110e73f9Sschwartz #define	TLU01_S_EVT_RCVR_ERR		"recvr_err"
264110e73f9Sschwartz #define	TLU01_S_EVT_BAD_TLP		"bad_tlp"
265110e73f9Sschwartz #define	TLU01_S_EVT_BAD_DLLP		"bad_dllp"
266110e73f9Sschwartz #define	TLU01_S_EVT_REPLAY_ROLLOVER	"replay_rollover"
267110e73f9Sschwartz #define	TLU01_S_EVT_REPLAY_TMO		"replay_to"
268110e73f9Sschwartz 
269110e73f9Sschwartz #define	TLU01_EVT_NONE			0x0
270110e73f9Sschwartz #define	TLU01_EVT_CLK			0x1
271110e73f9Sschwartz #define	TLU01_EVT_COMPL			0x2
272110e73f9Sschwartz #define	TLU01_EVT_XMT_POST_CR_UNAV	0x10
273110e73f9Sschwartz #define	TLU01_EVT_XMT_NPOST_CR_UNAV	0x11
274110e73f9Sschwartz #define	TLU01_EVT_XMT_CMPL_CR_UNAV	0x12
275110e73f9Sschwartz #define	TLU01_EVT_XMT_ANY_CR_UNAV	0x13
276110e73f9Sschwartz #define	TLU01_EVT_RETRY_CR_UNAV		0x14
277110e73f9Sschwartz #define	TLU01_EVT_MEMRD_PKT_RCVD	0x20
278110e73f9Sschwartz #define	TLU01_EVT_MEMWR_PKT_RCVD	0x21
279110e73f9Sschwartz #define	TLU01_EVT_RCV_CR_THRESH		0x22
280110e73f9Sschwartz #define	TLU01_EVT_RCV_PST_HDR_CR_EXH	0x23
281110e73f9Sschwartz #define	TLU01_EVT_RCV_PST_DA_CR_MPS	0x24
282110e73f9Sschwartz #define	TLU01_EVT_RCV_NPST_HDR_CR_EXH	0x25
283110e73f9Sschwartz #define	TLU01_EVT_RCVR_L0S		0x30
284110e73f9Sschwartz #define	TLU01_EVT_RCVR_L0S_TRANS	0x31
285110e73f9Sschwartz #define	TLU01_EVT_XMTR_L0S		0x32
286110e73f9Sschwartz #define	TLU01_EVT_XMTR_L0S_TRANS	0x33
287110e73f9Sschwartz #define	TLU01_EVT_RCVR_ERR		0x40
288110e73f9Sschwartz #define	TLU01_EVT_BAD_TLP		0x42
289110e73f9Sschwartz #define	TLU01_EVT_BAD_DLLP		0x43
290110e73f9Sschwartz #define	TLU01_EVT_REPLAY_ROLLOVER	0x44
291110e73f9Sschwartz #define	TLU01_EVT_REPLAY_TMO		0x47
292110e73f9Sschwartz 
293110e73f9Sschwartz #define	TLU2_S_EVT_NONE			"event_none"
294110e73f9Sschwartz #define	TLU2_S_EVT_NON_POST_COMPL_TIME	"non_post_compl"
295110e73f9Sschwartz #define	TLU2_S_EVT_XMT_DATA_WORD	"trans_data_words"
296110e73f9Sschwartz #define	TLU2_S_EVT_RCVD_DATA_WORD	"recvd_data_words"
297110e73f9Sschwartz 
298110e73f9Sschwartz #define	TLU2_EVT_NONE			0x0
299110e73f9Sschwartz #define	TLU2_EVT_NON_POST_COMPL_TIME	0x1
300110e73f9Sschwartz #define	TLU2_EVT_XMT_DATA_WORD		0x2
301110e73f9Sschwartz #define	TLU2_EVT_RCVD_DATA_WORD		0x3
302110e73f9Sschwartz 
303110e73f9Sschwartz #define	LPU12_S_EVT_RESET		"event_reset"
304110e73f9Sschwartz #define	LPU12_S_EVT_TLP_RCVD		"tlp_recvd"
305110e73f9Sschwartz #define	LPU12_S_EVT_DLLP_RCVD		"dllp_recvd"
306110e73f9Sschwartz #define	LPU12_S_EVT_ACK_DLLP_RCVD	"ack_dllp_recvd"
307110e73f9Sschwartz #define	LPU12_S_EVT_NAK_DLLP_RCVD	"nak_dllp_recvd"
308110e73f9Sschwartz #define	LPU12_S_EVT_RETRY_START		"retries_started"
309110e73f9Sschwartz #define	LPU12_S_EVT_REPLAY_TMO		"replay_timer_to"
310110e73f9Sschwartz #define	LPU12_S_EVT_ACK_NAK_LAT_TMO	"ack_nak_lat_to"
311110e73f9Sschwartz #define	LPU12_S_EVT_BAD_DLLP		"bad_dllp"
312110e73f9Sschwartz #define	LPU12_S_EVT_BAD_TLP		"bad_tlp"
313110e73f9Sschwartz #define	LPU12_S_EVT_NAK_DLLP_SENT	"nak_dllp_sent"
314110e73f9Sschwartz #define	LPU12_S_EVT_ACK_DLLP_SENT	"ack_dllp_sent"
315110e73f9Sschwartz #define	LPU12_S_EVT_RCVR_ERROR		"recvr_err"
316110e73f9Sschwartz #define	LPU12_S_EVT_LTSSM_RECOV_ENTRY	"ltssm_recov_entr"
317110e73f9Sschwartz #define	LPU12_S_EVT_REPLAY_IN_PROG	"replay_prog_cyc"
318110e73f9Sschwartz #define	LPU12_S_EVT_TLP_XMT_IN_PROG	"tlp_trans_prog_cyc"
319110e73f9Sschwartz #define	LPU12_S_EVT_CLK_CYC		"clock_cyc"
320110e73f9Sschwartz #define	LPU12_S_EVT_TLP_DLLP_XMT_PROG	"tlp_dllp_trans_cyc"
321110e73f9Sschwartz #define	LPU12_S_EVT_TLP_DLLP_RCV_PROG	"tlp_dllp_recv_cyc"
322110e73f9Sschwartz 
323110e73f9Sschwartz #define	LPU12_EVT_RESET			0x0
324110e73f9Sschwartz #define	LPU12_EVT_TLP_RCVD		0x1
325110e73f9Sschwartz #define	LPU12_EVT_DLLP_RCVD		0x2
326110e73f9Sschwartz #define	LPU12_EVT_ACK_DLLP_RCVD		0x3
327110e73f9Sschwartz #define	LPU12_EVT_NAK_DLLP_RCVD		0x4
328110e73f9Sschwartz #define	LPU12_EVT_RETRY_START		0x5
329110e73f9Sschwartz #define	LPU12_EVT_REPLAY_TMO		0x6
330110e73f9Sschwartz #define	LPU12_EVT_ACK_NAK_LAT_TMO	0x7
331110e73f9Sschwartz #define	LPU12_EVT_BAD_DLLP		0x8
332110e73f9Sschwartz #define	LPU12_EVT_BAD_TLP		0x9
333110e73f9Sschwartz #define	LPU12_EVT_NAK_DLLP_SENT		0xA
334110e73f9Sschwartz #define	LPU12_EVT_ACK_DLLP_SENT		0xB
335110e73f9Sschwartz #define	LPU12_EVT_RCVR_ERROR		0xC
336110e73f9Sschwartz #define	LPU12_EVT_LTSSM_RECOV_ENTRY	0xD
337110e73f9Sschwartz #define	LPU12_EVT_REPLAY_IN_PROG	0xE
338110e73f9Sschwartz #define	LPU12_EVT_TLP_XMT_IN_PROG	0xF
339110e73f9Sschwartz #define	LPU12_EVT_CLK_CYC		0x10
340110e73f9Sschwartz #define	LPU12_EVT_TLP_DLLP_XMT_PROG	0x11
341110e73f9Sschwartz #define	LPU12_EVT_TLP_DLLP_RCV_PROG	0x12
342110e73f9Sschwartz 
343110e73f9Sschwartz #define	COMMON_S_CLEAR_PIC		"clear_pic"
344110e73f9Sschwartz 
345110e73f9Sschwartz #ifdef	__cplusplus
346110e73f9Sschwartz }
347110e73f9Sschwartz #endif
348110e73f9Sschwartz 
349110e73f9Sschwartz #endif	/* _FPC_H */
350