xref: /onnv-gate/usr/src/uts/common/io/ntxn/nx_hw_pci_regs.h (revision 8687:5dca9cd6354a)
17956Sxiuyan.wang@Sun.COM /*
27956Sxiuyan.wang@Sun.COM  * CDDL HEADER START
37956Sxiuyan.wang@Sun.COM  *
47956Sxiuyan.wang@Sun.COM  * The contents of this file are subject to the terms of the
57956Sxiuyan.wang@Sun.COM  * Common Development and Distribution License (the "License").
67956Sxiuyan.wang@Sun.COM  * You may not use this file except in compliance with the License.
77956Sxiuyan.wang@Sun.COM  *
87956Sxiuyan.wang@Sun.COM  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
97956Sxiuyan.wang@Sun.COM  * or http://www.opensolaris.org/os/licensing.
107956Sxiuyan.wang@Sun.COM  * See the License for the specific language governing permissions
117956Sxiuyan.wang@Sun.COM  * and limitations under the License.
127956Sxiuyan.wang@Sun.COM  *
137956Sxiuyan.wang@Sun.COM  * When distributing Covered Code, include this CDDL HEADER in each
147956Sxiuyan.wang@Sun.COM  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
157956Sxiuyan.wang@Sun.COM  * If applicable, add the following below this CDDL HEADER, with the
167956Sxiuyan.wang@Sun.COM  * fields enclosed by brackets "[]" replaced with your own identifying
177956Sxiuyan.wang@Sun.COM  * information: Portions Copyright [yyyy] [name of copyright owner]
187956Sxiuyan.wang@Sun.COM  *
197956Sxiuyan.wang@Sun.COM  * CDDL HEADER END
207956Sxiuyan.wang@Sun.COM  */
21*8687SJing.Xiong@Sun.COM 
227956Sxiuyan.wang@Sun.COM /*
237956Sxiuyan.wang@Sun.COM  * Copyright 2008 NetXen, Inc.  All rights reserved.
247956Sxiuyan.wang@Sun.COM  * Use is subject to license terms.
257956Sxiuyan.wang@Sun.COM  */
26*8687SJing.Xiong@Sun.COM 
27*8687SJing.Xiong@Sun.COM #ifndef _NX_HW_REGS_H_
28*8687SJing.Xiong@Sun.COM #define	_NX_HW_REGS_H_
29*8687SJing.Xiong@Sun.COM 
30*8687SJing.Xiong@Sun.COM #ifdef __cplusplus
31*8687SJing.Xiong@Sun.COM extern "C" {
32*8687SJing.Xiong@Sun.COM #endif
337956Sxiuyan.wang@Sun.COM 
347956Sxiuyan.wang@Sun.COM /*
357956Sxiuyan.wang@Sun.COM  *		PCI related defines.
367956Sxiuyan.wang@Sun.COM  */
377956Sxiuyan.wang@Sun.COM 
387956Sxiuyan.wang@Sun.COM /*
397956Sxiuyan.wang@Sun.COM  * Interrupt related defines.
407956Sxiuyan.wang@Sun.COM  */
417956Sxiuyan.wang@Sun.COM #define	PCIX_TARGET_STATUS	(0x10118)
427956Sxiuyan.wang@Sun.COM #define	PCIX_TARGET_STATUS_F1	(0x10160)
437956Sxiuyan.wang@Sun.COM #define	PCIX_TARGET_STATUS_F2	(0x10164)
447956Sxiuyan.wang@Sun.COM #define	PCIX_TARGET_STATUS_F3	(0x10168)
457956Sxiuyan.wang@Sun.COM #define	PCIX_TARGET_STATUS_F4	(0x10360)
467956Sxiuyan.wang@Sun.COM #define	PCIX_TARGET_STATUS_F5	(0x10364)
477956Sxiuyan.wang@Sun.COM #define	PCIX_TARGET_STATUS_F6	(0x10368)
487956Sxiuyan.wang@Sun.COM #define	PCIX_TARGET_STATUS_F7	(0x1036c)
497956Sxiuyan.wang@Sun.COM 
507956Sxiuyan.wang@Sun.COM #define	PCIX_TARGET_MASK	(0x10128)
517956Sxiuyan.wang@Sun.COM #define	PCIX_TARGET_MASK_F1	(0x10170)
527956Sxiuyan.wang@Sun.COM #define	PCIX_TARGET_MASK_F2	(0x10174)
537956Sxiuyan.wang@Sun.COM #define	PCIX_TARGET_MASK_F3	(0x10178)
547956Sxiuyan.wang@Sun.COM #define	PCIX_TARGET_MASK_F4	(0x10370)
557956Sxiuyan.wang@Sun.COM #define	PCIX_TARGET_MASK_F5	(0x10374)
567956Sxiuyan.wang@Sun.COM #define	PCIX_TARGET_MASK_F6	(0x10378)
577956Sxiuyan.wang@Sun.COM #define	PCIX_TARGET_MASK_F7	(0x1037c)
587956Sxiuyan.wang@Sun.COM 
597956Sxiuyan.wang@Sun.COM /*
607956Sxiuyan.wang@Sun.COM  * Message Signaled Interrupts
617956Sxiuyan.wang@Sun.COM  */
627956Sxiuyan.wang@Sun.COM #define	PCIX_MSI_F0		(0x13000)
637956Sxiuyan.wang@Sun.COM #define	PCIX_MSI_F1		(0x13004)
647956Sxiuyan.wang@Sun.COM #define	PCIX_MSI_F2		(0x13008)
657956Sxiuyan.wang@Sun.COM #define	PCIX_MSI_F3		(0x1300c)
667956Sxiuyan.wang@Sun.COM #define	PCIX_MSI_F4		(0x13010)
677956Sxiuyan.wang@Sun.COM #define	PCIX_MSI_F5		(0x13014)
687956Sxiuyan.wang@Sun.COM #define	PCIX_MSI_F6		(0x13018)
697956Sxiuyan.wang@Sun.COM #define	PCIX_MSI_F7		(0x1301c)
707956Sxiuyan.wang@Sun.COM #define	PCIX_MSI_F(FUNC)	(0x13000 +((FUNC) * 4))
717956Sxiuyan.wang@Sun.COM 
727956Sxiuyan.wang@Sun.COM /*
737956Sxiuyan.wang@Sun.COM  *
747956Sxiuyan.wang@Sun.COM  */
757956Sxiuyan.wang@Sun.COM #define	PCIX_INT_VECTOR		(0x10100)
767956Sxiuyan.wang@Sun.COM #define	PCIX_INT_MASK		(0x10104)
777956Sxiuyan.wang@Sun.COM 
787956Sxiuyan.wang@Sun.COM /*
797956Sxiuyan.wang@Sun.COM  * Interrupt state machine and other bits.
807956Sxiuyan.wang@Sun.COM  */
817956Sxiuyan.wang@Sun.COM #define	PCIE_MISCCFG_RC		(0x1206c)
827956Sxiuyan.wang@Sun.COM 
837956Sxiuyan.wang@Sun.COM 
847956Sxiuyan.wang@Sun.COM #define	ISR_INT_TARGET_STATUS	  (UNM_PCIX_PS_REG(PCIX_TARGET_STATUS))
857956Sxiuyan.wang@Sun.COM #define	ISR_INT_TARGET_STATUS_F1  (UNM_PCIX_PS_REG(PCIX_TARGET_STATUS_F1))
867956Sxiuyan.wang@Sun.COM #define	ISR_INT_TARGET_STATUS_F2  (UNM_PCIX_PS_REG(PCIX_TARGET_STATUS_F2))
877956Sxiuyan.wang@Sun.COM #define	ISR_INT_TARGET_STATUS_F3  (UNM_PCIX_PS_REG(PCIX_TARGET_STATUS_F3))
887956Sxiuyan.wang@Sun.COM #define	ISR_INT_TARGET_STATUS_F4  (UNM_PCIX_PS_REG(PCIX_TARGET_STATUS_F4))
897956Sxiuyan.wang@Sun.COM #define	ISR_INT_TARGET_STATUS_F5  (UNM_PCIX_PS_REG(PCIX_TARGET_STATUS_F5))
907956Sxiuyan.wang@Sun.COM #define	ISR_INT_TARGET_STATUS_F6  (UNM_PCIX_PS_REG(PCIX_TARGET_STATUS_F6))
917956Sxiuyan.wang@Sun.COM #define	ISR_INT_TARGET_STATUS_F7  (UNM_PCIX_PS_REG(PCIX_TARGET_STATUS_F7))
927956Sxiuyan.wang@Sun.COM 
937956Sxiuyan.wang@Sun.COM #define	ISR_INT_TARGET_MASK	  (UNM_PCIX_PS_REG(PCIX_TARGET_MASK))
947956Sxiuyan.wang@Sun.COM #define	ISR_INT_TARGET_MASK_F1	  (UNM_PCIX_PS_REG(PCIX_TARGET_MASK_F1))
957956Sxiuyan.wang@Sun.COM #define	ISR_INT_TARGET_MASK_F2	  (UNM_PCIX_PS_REG(PCIX_TARGET_MASK_F2))
967956Sxiuyan.wang@Sun.COM #define	ISR_INT_TARGET_MASK_F3	  (UNM_PCIX_PS_REG(PCIX_TARGET_MASK_F3))
977956Sxiuyan.wang@Sun.COM #define	ISR_INT_TARGET_MASK_F4	  (UNM_PCIX_PS_REG(PCIX_TARGET_MASK_F4))
987956Sxiuyan.wang@Sun.COM #define	ISR_INT_TARGET_MASK_F5	  (UNM_PCIX_PS_REG(PCIX_TARGET_MASK_F5))
997956Sxiuyan.wang@Sun.COM #define	ISR_INT_TARGET_MASK_F6	  (UNM_PCIX_PS_REG(PCIX_TARGET_MASK_F6))
1007956Sxiuyan.wang@Sun.COM #define	ISR_INT_TARGET_MASK_F7	  (UNM_PCIX_PS_REG(PCIX_TARGET_MASK_F7))
1017956Sxiuyan.wang@Sun.COM 
1027956Sxiuyan.wang@Sun.COM #define	ISR_INT_VECTOR		  (UNM_PCIX_PS_REG(PCIX_INT_VECTOR))
1037956Sxiuyan.wang@Sun.COM #define	ISR_INT_MASK		  (UNM_PCIX_PS_REG(PCIX_INT_MASK))
1047956Sxiuyan.wang@Sun.COM #define	ISR_INT_STATE_REG	  (UNM_PCIX_PS_REG(PCIE_MISCCFG_RC))
1057956Sxiuyan.wang@Sun.COM 
1067956Sxiuyan.wang@Sun.COM #define	ISR_MSI_INT_TRIGGER(FUNC) (UNM_PCIX_PS_REG(PCIX_MSI_F(FUNC)))
1077956Sxiuyan.wang@Sun.COM 
1087956Sxiuyan.wang@Sun.COM 
1097956Sxiuyan.wang@Sun.COM #define	ISR_IS_LEGACY_INTR_IDLE(VAL)		(((VAL) & 0x300) == 0)
1107956Sxiuyan.wang@Sun.COM #define	ISR_IS_LEGACY_INTR_TRIGGERED(VAL)	(((VAL) & 0x300) == 0x200)
1117956Sxiuyan.wang@Sun.COM 
1127956Sxiuyan.wang@Sun.COM /*
1137956Sxiuyan.wang@Sun.COM  * PCI Interrupt Vector Values.
1147956Sxiuyan.wang@Sun.COM  */
1157956Sxiuyan.wang@Sun.COM #define	PCIX_INT_VECTOR_BIT_F0	0x0080
1167956Sxiuyan.wang@Sun.COM #define	PCIX_INT_VECTOR_BIT_F1	0x0100
1177956Sxiuyan.wang@Sun.COM #define	PCIX_INT_VECTOR_BIT_F2	0x0200
1187956Sxiuyan.wang@Sun.COM #define	PCIX_INT_VECTOR_BIT_F3	0x0400
1197956Sxiuyan.wang@Sun.COM #define	PCIX_INT_VECTOR_BIT_F4	0x0800
1207956Sxiuyan.wang@Sun.COM #define	PCIX_INT_VECTOR_BIT_F5	0x1000
1217956Sxiuyan.wang@Sun.COM #define	PCIX_INT_VECTOR_BIT_F6	0x2000
1227956Sxiuyan.wang@Sun.COM #define	PCIX_INT_VECTOR_BIT_F7	0x4000
1237956Sxiuyan.wang@Sun.COM 
1247956Sxiuyan.wang@Sun.COM struct nx_legacy_intr_set {
1257956Sxiuyan.wang@Sun.COM 	__uint32_t	int_vec_bit;
1267956Sxiuyan.wang@Sun.COM 	__uint32_t	tgt_status_reg;
1277956Sxiuyan.wang@Sun.COM 	__uint32_t	tgt_mask_reg;
1287956Sxiuyan.wang@Sun.COM 	__uint32_t	pci_int_reg;
1297956Sxiuyan.wang@Sun.COM };
1307956Sxiuyan.wang@Sun.COM 
1317956Sxiuyan.wang@Sun.COM #define	NX_LEGACY_INTR_CONFIG			\
1327956Sxiuyan.wang@Sun.COM {						\
1337956Sxiuyan.wang@Sun.COM 	{	PCIX_INT_VECTOR_BIT_F0,		\
1347956Sxiuyan.wang@Sun.COM 		ISR_INT_TARGET_STATUS,		\
1357956Sxiuyan.wang@Sun.COM 		ISR_INT_TARGET_MASK,		\
1367956Sxiuyan.wang@Sun.COM 		ISR_MSI_INT_TRIGGER(0) },	\
1377956Sxiuyan.wang@Sun.COM 						\
1387956Sxiuyan.wang@Sun.COM 	{	PCIX_INT_VECTOR_BIT_F1,		\
1397956Sxiuyan.wang@Sun.COM 		ISR_INT_TARGET_STATUS_F1,	\
1407956Sxiuyan.wang@Sun.COM 		ISR_INT_TARGET_MASK_F1,		\
1417956Sxiuyan.wang@Sun.COM 		ISR_MSI_INT_TRIGGER(1) },	\
1427956Sxiuyan.wang@Sun.COM 						\
1437956Sxiuyan.wang@Sun.COM 	{	PCIX_INT_VECTOR_BIT_F2,		\
1447956Sxiuyan.wang@Sun.COM 		ISR_INT_TARGET_STATUS_F2,	\
1457956Sxiuyan.wang@Sun.COM 		ISR_INT_TARGET_MASK_F2,		\
1467956Sxiuyan.wang@Sun.COM 		ISR_MSI_INT_TRIGGER(2) },	\
1477956Sxiuyan.wang@Sun.COM 						\
1487956Sxiuyan.wang@Sun.COM 	{	PCIX_INT_VECTOR_BIT_F3,		\
1497956Sxiuyan.wang@Sun.COM 		ISR_INT_TARGET_STATUS_F3,	\
1507956Sxiuyan.wang@Sun.COM 		ISR_INT_TARGET_MASK_F3,		\
1517956Sxiuyan.wang@Sun.COM 		ISR_MSI_INT_TRIGGER(3) },	\
1527956Sxiuyan.wang@Sun.COM 						\
1537956Sxiuyan.wang@Sun.COM 	{	PCIX_INT_VECTOR_BIT_F4,		\
1547956Sxiuyan.wang@Sun.COM 		ISR_INT_TARGET_STATUS_F4,	\
1557956Sxiuyan.wang@Sun.COM 		ISR_INT_TARGET_MASK_F4,		\
1567956Sxiuyan.wang@Sun.COM 		ISR_MSI_INT_TRIGGER(4) },	\
1577956Sxiuyan.wang@Sun.COM 						\
1587956Sxiuyan.wang@Sun.COM 	{	PCIX_INT_VECTOR_BIT_F5,		\
1597956Sxiuyan.wang@Sun.COM 		ISR_INT_TARGET_STATUS_F5,	\
1607956Sxiuyan.wang@Sun.COM 		ISR_INT_TARGET_MASK_F5,		\
1617956Sxiuyan.wang@Sun.COM 		ISR_MSI_INT_TRIGGER(5) },	\
1627956Sxiuyan.wang@Sun.COM 						\
1637956Sxiuyan.wang@Sun.COM 	{	PCIX_INT_VECTOR_BIT_F6,		\
1647956Sxiuyan.wang@Sun.COM 		ISR_INT_TARGET_STATUS_F6,	\
1657956Sxiuyan.wang@Sun.COM 		ISR_INT_TARGET_MASK_F6,		\
1667956Sxiuyan.wang@Sun.COM 		ISR_MSI_INT_TRIGGER(6) },	\
1677956Sxiuyan.wang@Sun.COM 						\
1687956Sxiuyan.wang@Sun.COM 	{	PCIX_INT_VECTOR_BIT_F7,		\
1697956Sxiuyan.wang@Sun.COM 		ISR_INT_TARGET_STATUS_F7,	\
1707956Sxiuyan.wang@Sun.COM 		ISR_INT_TARGET_MASK_F7,		\
1717956Sxiuyan.wang@Sun.COM 		ISR_MSI_INT_TRIGGER(7) },	\
1727956Sxiuyan.wang@Sun.COM }
1737956Sxiuyan.wang@Sun.COM 
174*8687SJing.Xiong@Sun.COM #ifdef __cplusplus
175*8687SJing.Xiong@Sun.COM }
176*8687SJing.Xiong@Sun.COM #endif
177*8687SJing.Xiong@Sun.COM 
178*8687SJing.Xiong@Sun.COM #endif /* !_NX_HW_REGS_H_ */
179