xref: /titanic_52/usr/src/uts/sun4u/starcat/sys/axq.h (revision 03831d35f7499c87d51205817c93e9a8d42c4bae)
1*03831d35Sstevel /*
2*03831d35Sstevel  * CDDL HEADER START
3*03831d35Sstevel  *
4*03831d35Sstevel  * The contents of this file are subject to the terms of the
5*03831d35Sstevel  * Common Development and Distribution License (the "License").
6*03831d35Sstevel  * You may not use this file except in compliance with the License.
7*03831d35Sstevel  *
8*03831d35Sstevel  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9*03831d35Sstevel  * or http://www.opensolaris.org/os/licensing.
10*03831d35Sstevel  * See the License for the specific language governing permissions
11*03831d35Sstevel  * and limitations under the License.
12*03831d35Sstevel  *
13*03831d35Sstevel  * When distributing Covered Code, include this CDDL HEADER in each
14*03831d35Sstevel  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15*03831d35Sstevel  * If applicable, add the following below this CDDL HEADER, with the
16*03831d35Sstevel  * fields enclosed by brackets "[]" replaced with your own identifying
17*03831d35Sstevel  * information: Portions Copyright [yyyy] [name of copyright owner]
18*03831d35Sstevel  *
19*03831d35Sstevel  * CDDL HEADER END
20*03831d35Sstevel  */
21*03831d35Sstevel 
22*03831d35Sstevel /*
23*03831d35Sstevel  * Copyright 2002 Sun Microsystems, Inc.  All rights reserved.
24*03831d35Sstevel  * Use is subject to license terms.
25*03831d35Sstevel  */
26*03831d35Sstevel 
27*03831d35Sstevel #ifndef _SYS_AXQ_H
28*03831d35Sstevel #define	_SYS_AXQ_H
29*03831d35Sstevel 
30*03831d35Sstevel #pragma ident	"%Z%%M%	%I%	%E% SMI"
31*03831d35Sstevel 
32*03831d35Sstevel #ifdef	__cplusplus
33*03831d35Sstevel extern "C" {
34*03831d35Sstevel #endif
35*03831d35Sstevel 
36*03831d35Sstevel /* AXQ register offset constant */
37*03831d35Sstevel #define	AXQ_REG_OFFSET		0x20
38*03831d35Sstevel #define	AXQ_REGOFF(idx)		((idx) * AXQ_REG_OFFSET)
39*03831d35Sstevel 
40*03831d35Sstevel /*
41*03831d35Sstevel  * AXQ system register offsets
42*03831d35Sstevel  * Each Starcat AXQ asic instance is logically
43*03831d35Sstevel  * associated with each slot in the expander board.
44*03831d35Sstevel  * Slot 0 is the full slot (or full bandwidth slot)
45*03831d35Sstevel  * and Slot1 is the half slot (or half bandwidth slot).
46*03831d35Sstevel  * Some system registers are only accessible in certain
47*03831d35Sstevel  * slot type.
48*03831d35Sstevel  */
49*03831d35Sstevel 
50*03831d35Sstevel /* domain control register (slot0 & slot1) */
51*03831d35Sstevel #define	AXQ_SLOT0_DOMCTRL	AXQ_REGOFF(0x1)
52*03831d35Sstevel #define	AXQ_SLOT1_DOMCTRL	AXQ_REGOFF(0x2)
53*03831d35Sstevel 
54*03831d35Sstevel /* cpu2ssc intr register */
55*03831d35Sstevel #define	AXQ_SLOT_CPU2SSC_INTR	AXQ_REGOFF(0x3)
56*03831d35Sstevel 
57*03831d35Sstevel /* performance counters (one set per slot) */
58*03831d35Sstevel #define	AXQ_SLOT0_PERFCNT_SEL	AXQ_REGOFF(0x9)
59*03831d35Sstevel #define	AXQ_SLOT0_PERFCNT0	AXQ_REGOFF(0xA)
60*03831d35Sstevel #define	AXQ_SLOT0_PERFCNT1	AXQ_REGOFF(0xB)
61*03831d35Sstevel #define	AXQ_SLOT0_PERFCNT2	AXQ_REGOFF(0xC)
62*03831d35Sstevel #define	AXQ_SLOT1_PERFCNT_SEL	AXQ_REGOFF(0x8)
63*03831d35Sstevel #define	AXQ_SLOT1_PERFCNT0	AXQ_REGOFF(0xD)
64*03831d35Sstevel #define	AXQ_SLOT1_PERFCNT1	AXQ_REGOFF(0xE)
65*03831d35Sstevel #define	AXQ_SLOT1_PERFCNT2	AXQ_REGOFF(0xF)
66*03831d35Sstevel 
67*03831d35Sstevel /* CASM slots (for both slot0 & slot1) */
68*03831d35Sstevel #define	AXQ_CASM_SLOT_START	AXQ_REGOFF(0x10)
69*03831d35Sstevel #define	AXQ_CASM_SLOT_END	AXQ_REGOFF(0x21)
70*03831d35Sstevel 
71*03831d35Sstevel /* CDC registers (only available in slot0) */
72*03831d35Sstevel #define	AXQ_SLOT0_CDC_ADR_TEST	AXQ_REGOFF(0x2C)
73*03831d35Sstevel #define	AXQ_SLOT0_CDC_CTL_TEST	AXQ_REGOFF(0x2D)
74*03831d35Sstevel #define	AXQ_SLOT0_CDC_DATA_WR3	AXQ_REGOFF(0x2E)
75*03831d35Sstevel #define	AXQ_SLOT0_CDC_DATA_WR2	AXQ_REGOFF(0x2F)
76*03831d35Sstevel #define	AXQ_SLOT0_CDC_DATA_WR1	AXQ_REGOFF(0x30)
77*03831d35Sstevel #define	AXQ_SLOT0_CDC_DATA_WR0	AXQ_REGOFF(0x31)
78*03831d35Sstevel #define	AXQ_SLOT0_CDC_CNT_TEST	AXQ_REGOFF(0x32)
79*03831d35Sstevel #define	AXQ_SLOT0_CDC_RD_DATA3	AXQ_REGOFF(0x33)
80*03831d35Sstevel #define	AXQ_SLOT0_CDC_RD_DATA2	AXQ_REGOFF(0x34)
81*03831d35Sstevel #define	AXQ_SLOT0_CDC_RD_DATA1	AXQ_REGOFF(0x35)
82*03831d35Sstevel #define	AXQ_SLOT0_CDC_RD_DATA0	AXQ_REGOFF(0x36)
83*03831d35Sstevel 
84*03831d35Sstevel /* NASM registers */
85*03831d35Sstevel #define	AXQ_SLOT0_NASM		AXQ_REGOFF(0x37)
86*03831d35Sstevel #define	AXQ_SLOT1_NASM		AXQ_REGOFF(0x38)
87*03831d35Sstevel 
88*03831d35Sstevel #define	AXQ_NASM_TYPE_IO		0
89*03831d35Sstevel #define	AXQ_NASM_TYPE_SLOT0_CMMU	1
90*03831d35Sstevel #define	AXQ_NASM_TYPE_WIB		2
91*03831d35Sstevel #define	AXQ_NASM_TYPE_WIB_STRIPED	3
92*03831d35Sstevel #define	AXQ_NASM_TYPE_SHIFT		5
93*03831d35Sstevel 
94*03831d35Sstevel /* SDI Timeout register */
95*03831d35Sstevel #define	AXQ_SLOT_SDI_TIMEOUT_RD		AXQ_REGOFF(0x2A)
96*03831d35Sstevel #define	AXQ_SLOT_SDI_TIMEOUT_RDCLR	AXQ_REGOFF(0x2B)
97*03831d35Sstevel 
98*03831d35Sstevel /*
99*03831d35Sstevel  * Bits for domain control register
100*03831d35Sstevel  */
101*03831d35Sstevel #define	AXQ_DOMCTRL_BUSY	0x1
102*03831d35Sstevel #define	AXQ_DOMCTRL_PAUSE	0x10
103*03831d35Sstevel #define	AXQ_DOMCTRL_PIOFIX	0x40
104*03831d35Sstevel 
105*03831d35Sstevel /*
106*03831d35Sstevel  * Bits for CDC registers
107*03831d35Sstevel  */
108*03831d35Sstevel /* CDC control test register */
109*03831d35Sstevel #define	AXQ_CDC_TMODE_WR		0x20000
110*03831d35Sstevel #define	AXQ_CDC_TMODE_RDCMP		0x40000
111*03831d35Sstevel #define	AXQ_CDC_TMODE_WR_RDCMP0		0x60000
112*03831d35Sstevel #define	AXQ_CDC_TMODE_WR_RDCMP1		0x80000
113*03831d35Sstevel #define	AXQ_CDC_DATA_ECC_CHK_EN		0x10000
114*03831d35Sstevel #define	AXQ_CDC_ADR_PAR_CHK_EN		0x08000
115*03831d35Sstevel #define	AXQ_CDC_DATA_ECC_GEN_EN		0x04000
116*03831d35Sstevel #define	AXQ_CDC_ADR_PAR_GEN_EN		0x02000
117*03831d35Sstevel #define	AXQ_CDC_DATA2PAR_MUX_SEL_DATA	0x00800
118*03831d35Sstevel #define	AXQ_CDC_ADR2SRAM_MUX_SEL_TEST	0x00080
119*03831d35Sstevel #define	AXQ_CDC_ADR_INCR_XOR_CTRL	0x00010
120*03831d35Sstevel #define	AXQ_CDC_DIS			0x00001
121*03831d35Sstevel 
122*03831d35Sstevel /* CDC Address Test register */
123*03831d35Sstevel #define	AXQ_CDC_ADR_TEST_EN		0x80000
124*03831d35Sstevel 
125*03831d35Sstevel /* CDC counter test register */
126*03831d35Sstevel #define	AXQ_CDC_CNT_TEST_DONE		0x80000000
127*03831d35Sstevel 
128*03831d35Sstevel /*
129*03831d35Sstevel  * Bits for CPU to SSC interrupt register
130*03831d35Sstevel  */
131*03831d35Sstevel #define	AXQ_CPU2SSC_INTR_PEND		0x80000000
132*03831d35Sstevel 
133*03831d35Sstevel /*
134*03831d35Sstevel  * Each AXQ instance has one pcr (performance control
135*03831d35Sstevel  * register) controlling 3 pics (performance instru-
136*03831d35Sstevel  * mentation counter).  pic0 and pic1 are similar
137*03831d35Sstevel  * and have identical inputs to their muxes. pic2
138*03831d35Sstevel  * only counts the clock.
139*03831d35Sstevel  */
140*03831d35Sstevel 
141*03831d35Sstevel /* Bit masks for selecting pic mux input */
142*03831d35Sstevel #define	FREEZE_CNT	0x0
143*03831d35Sstevel #define	COUNT_CLK	0x1
144*03831d35Sstevel #define	HA_INPUT_FIFO	0x2
145*03831d35Sstevel #define	HA_INTR_INFO	0x3
146*03831d35Sstevel #define	HA_PIO_FIFO	0x4
147*03831d35Sstevel #define	HA_ADR_FIFO_LK3	0x5
148*03831d35Sstevel #define	HA_ADR_FIFO_LK2	0x6
149*03831d35Sstevel #define	HA_ADR_FIFO_LK1	0x7
150*03831d35Sstevel #define	HA_ADR_FIFO_LK0	0x8
151*03831d35Sstevel #define	HA_DUMP_Q	0x9
152*03831d35Sstevel #define	HA_RD_F_STB_Q	0xA
153*03831d35Sstevel #define	HA_DP_WR_Q	0xB
154*03831d35Sstevel #define	HA_INT_Q	0xC
155*03831d35Sstevel #define	HA_WRB_Q	0xD
156*03831d35Sstevel #define	HA_WR_MP_Q	0xE
157*03831d35Sstevel #define	HA_WRTAG_Q	0xF
158*03831d35Sstevel #define	HA_WT_WAIT_FIFO	0x10
159*03831d35Sstevel #define	HA_WRB_STB_FIFO	0x11
160*03831d35Sstevel #define	HA_AP0_Q	0x12
161*03831d35Sstevel #define	HA_AP1_Q	0x13
162*03831d35Sstevel #define	HA_NEW_WR_Q	0x14
163*03831d35Sstevel #define	HA_DP_RD_Q	0x15
164*03831d35Sstevel #define	HA_UNLOCK_Q	0x16
165*03831d35Sstevel #define	HA_CDC_UPD_Q	0x17
166*03831d35Sstevel #define	HA_DS_Q		0x18
167*03831d35Sstevel #define	HA_UNLK_WAIT_Q	0x19
168*03831d35Sstevel #define	HA_RD_MP_Q	0x1A
169*03831d35Sstevel #define	L2_IO_Q		0x1B
170*03831d35Sstevel #define	L2_SB_Q		0x1C
171*03831d35Sstevel #define	L2_RA_Q		0x1D
172*03831d35Sstevel #define	L2_HA_Q		0x1E
173*03831d35Sstevel #define	L2_SA_Q		0x1F
174*03831d35Sstevel #define	RA_WAIT_FIFO	0x20
175*03831d35Sstevel #define	RA_WRB_INV_FIFO	0x21
176*03831d35Sstevel #define	RA_WRB_FIFO	0x22
177*03831d35Sstevel #define	RA_CC_PTR_FIFO	0x23
178*03831d35Sstevel #define	RA_IO_PTR_FIFO	0x24
179*03831d35Sstevel #define	RA_INT_PTR_FIFO	0x25
180*03831d35Sstevel #define	RA_RP_Q		0x26
181*03831d35Sstevel #define	RA_WRB_RP_Q	0x27
182*03831d35Sstevel #define	RA_DP_Q		0x28
183*03831d35Sstevel #define	RA_DP_STB_Q	0x29
184*03831d35Sstevel #define	RA_GTARG_Q	0x2A
185*03831d35Sstevel #define	SDC_RECV_Q	0x2B
186*03831d35Sstevel #define	SDC_REDIR_IO_Q	0x2C
187*03831d35Sstevel #define	SDC_REDIR_SB_Q	0x2D
188*03831d35Sstevel #define	SDC_OUTB_IO_Q	0x2E
189*03831d35Sstevel #define	SDC_OUTB_SB_Q	0x2F
190*03831d35Sstevel #define	SA_ADD1_INPUT_Q	0x30
191*03831d35Sstevel #define	SA_ADD2_INPUT_Q	0x31
192*03831d35Sstevel #define	SA_INV_Q	0x32
193*03831d35Sstevel #define	SA_NO_INV_Q	0x33
194*03831d35Sstevel #define	SA_INT_DP_Q	0x34
195*03831d35Sstevel #define	SA_DP_Q		0x35
196*03831d35Sstevel #define	SL_WRTAG_Q	0x36
197*03831d35Sstevel #define	SL_RTO_DP_Q	0x37
198*03831d35Sstevel #define	SYSREG_INPUT_Q	0x38
199*03831d35Sstevel #define	SDI_SYS_STATUS1	0x39
200*03831d35Sstevel #define	SDI_SYS_STATUS0	0x3A
201*03831d35Sstevel #define	CDC_HITS	0x3B
202*03831d35Sstevel #define	TOTAL_CDC_READ	0x3C
203*03831d35Sstevel #define	HA_WATRANID_SD	0x3D
204*03831d35Sstevel #define	HA_STB_SD	0x3E
205*03831d35Sstevel #define	HA_L2_IRQ_SD	0x3F
206*03831d35Sstevel #define	HA_SL_WRTAG_SD	0x40
207*03831d35Sstevel #define	AA_HOME_CC_FULL	0x41
208*03831d35Sstevel #define	AA_HOME_IO_FULL	0x42
209*03831d35Sstevel #define	AA_SLAVE_FULL	0x43
210*03831d35Sstevel #define	AA_RP_FULL	0x44
211*03831d35Sstevel 
212*03831d35Sstevel /* Shift definitions into pcr for programming pics */
213*03831d35Sstevel #define	AXQ_PIC_SHIFT	7
214*03831d35Sstevel 
215*03831d35Sstevel /* event constants */
216*03831d35Sstevel #define	AXQ_NUM_EVENTS		0x45
217*03831d35Sstevel #define	AXQ_PIC0_1_NUM_EVENTS	0x45
218*03831d35Sstevel #define	AXQ_PIC2_NUM_EVENTS	0x2
219*03831d35Sstevel #define	AXQ_NUM_PICS	3
220*03831d35Sstevel #define	AXQ_PIC_CLEAR_MASK	0x7F
221*03831d35Sstevel 
222*03831d35Sstevel /* AXQ constants */
223*03831d35Sstevel #define	SLOT0_AXQ		0
224*03831d35Sstevel #define	SLOT1_AXQ		1
225*03831d35Sstevel #define	AXQ_MAX_EXP		18
226*03831d35Sstevel #define	AXQ_MAX_SLOT_PER_EXP	2
227*03831d35Sstevel #define	AXQ_CDC_SRAM_SIZE	0x40000
228*03831d35Sstevel #define	AXQ_CDC_FLUSH_WAIT	4
229*03831d35Sstevel #define	AXQ_INTR_PEND_WAIT	10
230*03831d35Sstevel #define	AXQ_NASM_SIZE		256
231*03831d35Sstevel 
232*03831d35Sstevel /*
233*03831d35Sstevel  * Struct element describing a eventname and
234*03831d35Sstevel  * its pcr-mask.
235*03831d35Sstevel  */
236*03831d35Sstevel typedef struct axq_event_mask {
237*03831d35Sstevel 	char	*event_name;
238*03831d35Sstevel 	uint64_t pcr_mask;
239*03831d35Sstevel } axq_event_mask_t;
240*03831d35Sstevel 
241*03831d35Sstevel /*
242*03831d35Sstevel  * NASM RAM system register for reading
243*03831d35Sstevel  */
244*03831d35Sstevel typedef union {
245*03831d35Sstevel 	struct axq_nasm_read {
246*03831d35Sstevel 		uint32_t pad	: 16;
247*03831d35Sstevel 		uint32_t valid	: 1;
248*03831d35Sstevel 		uint32_t addr	: 8;
249*03831d35Sstevel 		uint32_t data	: 7;
250*03831d35Sstevel 	} bit;
251*03831d35Sstevel 	uint32_t val;
252*03831d35Sstevel } axq_nasm_read_u;
253*03831d35Sstevel 
254*03831d35Sstevel /*
255*03831d35Sstevel  * NASM RAM system register for reading
256*03831d35Sstevel  */
257*03831d35Sstevel typedef union {
258*03831d35Sstevel 	struct axq_nasm_write {
259*03831d35Sstevel 		uint32_t pad	: 16;
260*03831d35Sstevel 		uint32_t addr	: 8;
261*03831d35Sstevel 		uint32_t rw	: 1;
262*03831d35Sstevel 		uint32_t data	: 7;
263*03831d35Sstevel 	} bit;
264*03831d35Sstevel 	uint32_t val;
265*03831d35Sstevel } axq_nasm_write_u;
266*03831d35Sstevel 
267*03831d35Sstevel 
268*03831d35Sstevel /*
269*03831d35Sstevel  * Global data structure that is used to
270*03831d35Sstevel  * export certain axq registers in
271*03831d35Sstevel  * local space. Right now, the only
272*03831d35Sstevel  * register we want to access in local space
273*03831d35Sstevel  * is the cheetah2ssc interrupt reg. There
274*03831d35Sstevel  * could be more in future.
275*03831d35Sstevel  */
276*03831d35Sstevel struct axq_local_regs {
277*03831d35Sstevel 	kmutex_t axq_local_lock;
278*03831d35Sstevel 	int initflag;
279*03831d35Sstevel 	caddr_t laddress;
280*03831d35Sstevel 	ddi_acc_handle_t ac;
281*03831d35Sstevel 	volatile uint32_t *axq_cpu2ssc_intr;
282*03831d35Sstevel };
283*03831d35Sstevel 
284*03831d35Sstevel /*
285*03831d35Sstevel  * axq soft state data structure.
286*03831d35Sstevel  */
287*03831d35Sstevel struct axq_soft_state {
288*03831d35Sstevel 	dev_info_t *dip;		/* devinfo of myself */
289*03831d35Sstevel 	uint32_t portid;		/* port id */
290*03831d35Sstevel 	uint32_t expid;			/* expander id */
291*03831d35Sstevel 	uchar_t slotnum;		/* slot 0 or 1 */
292*03831d35Sstevel 	caddr_t address;		/* mapped devnode addr property */
293*03831d35Sstevel 	ddi_acc_handle_t ac0;		/* access handle for reg0 mapping */
294*03831d35Sstevel 	uint64_t axq_phyaddr;		/* physical address of conf space */
295*03831d35Sstevel 	kmutex_t axq_lock;		/* mutex protecting this softstate */
296*03831d35Sstevel 
297*03831d35Sstevel 	volatile uint32_t *axq_domain_ctrl;
298*03831d35Sstevel 
299*03831d35Sstevel 	/* CASM register slots */
300*03831d35Sstevel 	volatile uint32_t *axq_casm_slot[18];
301*03831d35Sstevel 
302*03831d35Sstevel 	/* NASM register */
303*03831d35Sstevel 	volatile uint32_t *axq_nasm;
304*03831d35Sstevel 
305*03831d35Sstevel 	/* CDC registers (only in slot0) */
306*03831d35Sstevel 	volatile uint32_t *axq_cdc_addrtest;
307*03831d35Sstevel 	volatile uint32_t *axq_cdc_ctrltest;
308*03831d35Sstevel 	volatile uint32_t *axq_cdc_datawrite0;
309*03831d35Sstevel 	volatile uint32_t *axq_cdc_datawrite1;
310*03831d35Sstevel 	volatile uint32_t *axq_cdc_datawrite2;
311*03831d35Sstevel 	volatile uint32_t *axq_cdc_datawrite3;
312*03831d35Sstevel 	volatile uint32_t *axq_cdc_counter;
313*03831d35Sstevel 	volatile uint32_t *axq_cdc_readdata0;
314*03831d35Sstevel 	volatile uint32_t *axq_cdc_readdata1;
315*03831d35Sstevel 	volatile uint32_t *axq_cdc_readdata2;
316*03831d35Sstevel 	volatile uint32_t *axq_cdc_readdata3;
317*03831d35Sstevel 
318*03831d35Sstevel 	/* performance counters */
319*03831d35Sstevel 	volatile uint32_t *axq_pcr;
320*03831d35Sstevel 	volatile uint32_t *axq_pic0;
321*03831d35Sstevel 	volatile uint32_t *axq_pic1;
322*03831d35Sstevel 	volatile uint32_t *axq_pic2;
323*03831d35Sstevel 	kstat_t *axq_counters_ksp;	/* perf counter kstat */
324*03831d35Sstevel 
325*03831d35Sstevel 	/* SDI timeout register */
326*03831d35Sstevel 	volatile uint32_t *axq_sdi_timeout_rd;
327*03831d35Sstevel 	volatile uint32_t *axq_sdi_timeout_rdclr;
328*03831d35Sstevel 
329*03831d35Sstevel 	uint32_t axq_cdc_state;		/* CDC state - enabled/disabled */
330*03831d35Sstevel 	int paused;			/* AXQ_DOMCTRL_PAUSE asserted */
331*03831d35Sstevel 
332*03831d35Sstevel #ifndef _AXQ_LOCAL_ACCESS_SUPPORTED
333*03831d35Sstevel 	/*
334*03831d35Sstevel 	 * No local access for cpu2ssc intr
335*03831d35Sstevel 	 * Need to provide per instance explicit expander addressing
336*03831d35Sstevel 	 */
337*03831d35Sstevel 	volatile uint32_t *axq_cpu2ssc_intr;
338*03831d35Sstevel #endif /* _AXQ_LOCAL_ACCESS_SUPPORTED */
339*03831d35Sstevel };
340*03831d35Sstevel 
341*03831d35Sstevel /*
342*03831d35Sstevel  * Public interface
343*03831d35Sstevel  */
344*03831d35Sstevel extern int axq_cdc_flush(uint32_t, int, int);
345*03831d35Sstevel extern int axq_cdc_flush_all();
346*03831d35Sstevel extern int axq_cdc_disable_flush_all();
347*03831d35Sstevel extern void axq_cdc_enable_all();
348*03831d35Sstevel extern int axq_iopause_enable_all(uint32_t *);
349*03831d35Sstevel extern void axq_iopause_disable_all();
350*03831d35Sstevel extern uint32_t axq_casm_read(uint32_t, uint32_t, int);
351*03831d35Sstevel extern int axq_casm_write(uint32_t, uint32_t, int, uint32_t);
352*03831d35Sstevel extern int axq_casm_write_all(int, uint32_t);
353*03831d35Sstevel extern int axq_do_casm_rename_script(uint64_t **, int, int);
354*03831d35Sstevel extern int axq_cpu2ssc_intr(uint8_t);
355*03831d35Sstevel extern uint32_t axq_read_sdi_timeout_reg(uint32_t, uint32_t, int);
356*03831d35Sstevel extern int axq_nasm_read(uint32_t expid, uint32_t slot, uint32_t nasm_entry,
357*03831d35Sstevel     uint32_t *data);
358*03831d35Sstevel extern int axq_nasm_write(uint32_t expid, uint32_t slot, uint32_t nasm_entry,
359*03831d35Sstevel     uint32_t data);
360*03831d35Sstevel extern int axq_nasm_write_all(uint32_t nasm_entry, uint32_t data);
361*03831d35Sstevel extern void axq_array_rw_enter(void);
362*03831d35Sstevel extern void axq_array_rw_exit(void);
363*03831d35Sstevel 
364*03831d35Sstevel #ifdef	__cplusplus
365*03831d35Sstevel }
366*03831d35Sstevel #endif
367*03831d35Sstevel 
368*03831d35Sstevel #endif	/* _SYS_AXQ_H */
369