Mercurial > illumos > illumos-gate
comparison usr/src/uts/common/io/ntxn/nx_hw_pci_regs.h @ 7956:59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
6472698 NetXen 1Gb/10Gb nic driver
author | lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM> |
---|---|
date | Tue, 28 Oct 2008 10:06:13 +0800 |
parents | |
children | 5dca9cd6354a |
comparison
equal
deleted
inserted
replaced
7955:47745077dc33 | 7956:59ff93e4da95 |
---|---|
1 /* | |
2 * CDDL HEADER START | |
3 * | |
4 * The contents of this file are subject to the terms of the | |
5 * Common Development and Distribution License (the "License"). | |
6 * You may not use this file except in compliance with the License. | |
7 * | |
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE | |
9 * or http://www.opensolaris.org/os/licensing. | |
10 * See the License for the specific language governing permissions | |
11 * and limitations under the License. | |
12 * | |
13 * When distributing Covered Code, include this CDDL HEADER in each | |
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. | |
15 * If applicable, add the following below this CDDL HEADER, with the | |
16 * fields enclosed by brackets "[]" replaced with your own identifying | |
17 * information: Portions Copyright [yyyy] [name of copyright owner] | |
18 * | |
19 * CDDL HEADER END | |
20 */ | |
21 /* | |
22 * Copyright 2008 NetXen, Inc. All rights reserved. | |
23 * Use is subject to license terms. | |
24 */ | |
25 #ifndef __NX_HW_REGS_H | |
26 #define __NX_HW_REGS_H | |
27 | |
28 /* | |
29 * PCI related defines. | |
30 */ | |
31 | |
32 /* | |
33 * Interrupt related defines. | |
34 */ | |
35 #define PCIX_TARGET_STATUS (0x10118) | |
36 #define PCIX_TARGET_STATUS_F1 (0x10160) | |
37 #define PCIX_TARGET_STATUS_F2 (0x10164) | |
38 #define PCIX_TARGET_STATUS_F3 (0x10168) | |
39 #define PCIX_TARGET_STATUS_F4 (0x10360) | |
40 #define PCIX_TARGET_STATUS_F5 (0x10364) | |
41 #define PCIX_TARGET_STATUS_F6 (0x10368) | |
42 #define PCIX_TARGET_STATUS_F7 (0x1036c) | |
43 | |
44 #define PCIX_TARGET_MASK (0x10128) | |
45 #define PCIX_TARGET_MASK_F1 (0x10170) | |
46 #define PCIX_TARGET_MASK_F2 (0x10174) | |
47 #define PCIX_TARGET_MASK_F3 (0x10178) | |
48 #define PCIX_TARGET_MASK_F4 (0x10370) | |
49 #define PCIX_TARGET_MASK_F5 (0x10374) | |
50 #define PCIX_TARGET_MASK_F6 (0x10378) | |
51 #define PCIX_TARGET_MASK_F7 (0x1037c) | |
52 | |
53 /* | |
54 * Message Signaled Interrupts | |
55 */ | |
56 #define PCIX_MSI_F0 (0x13000) | |
57 #define PCIX_MSI_F1 (0x13004) | |
58 #define PCIX_MSI_F2 (0x13008) | |
59 #define PCIX_MSI_F3 (0x1300c) | |
60 #define PCIX_MSI_F4 (0x13010) | |
61 #define PCIX_MSI_F5 (0x13014) | |
62 #define PCIX_MSI_F6 (0x13018) | |
63 #define PCIX_MSI_F7 (0x1301c) | |
64 #define PCIX_MSI_F(FUNC) (0x13000 +((FUNC) * 4)) | |
65 | |
66 /* | |
67 * | |
68 */ | |
69 #define PCIX_INT_VECTOR (0x10100) | |
70 #define PCIX_INT_MASK (0x10104) | |
71 | |
72 /* | |
73 * Interrupt state machine and other bits. | |
74 */ | |
75 #define PCIE_MISCCFG_RC (0x1206c) | |
76 | |
77 | |
78 #define ISR_INT_TARGET_STATUS (UNM_PCIX_PS_REG(PCIX_TARGET_STATUS)) | |
79 #define ISR_INT_TARGET_STATUS_F1 (UNM_PCIX_PS_REG(PCIX_TARGET_STATUS_F1)) | |
80 #define ISR_INT_TARGET_STATUS_F2 (UNM_PCIX_PS_REG(PCIX_TARGET_STATUS_F2)) | |
81 #define ISR_INT_TARGET_STATUS_F3 (UNM_PCIX_PS_REG(PCIX_TARGET_STATUS_F3)) | |
82 #define ISR_INT_TARGET_STATUS_F4 (UNM_PCIX_PS_REG(PCIX_TARGET_STATUS_F4)) | |
83 #define ISR_INT_TARGET_STATUS_F5 (UNM_PCIX_PS_REG(PCIX_TARGET_STATUS_F5)) | |
84 #define ISR_INT_TARGET_STATUS_F6 (UNM_PCIX_PS_REG(PCIX_TARGET_STATUS_F6)) | |
85 #define ISR_INT_TARGET_STATUS_F7 (UNM_PCIX_PS_REG(PCIX_TARGET_STATUS_F7)) | |
86 | |
87 #define ISR_INT_TARGET_MASK (UNM_PCIX_PS_REG(PCIX_TARGET_MASK)) | |
88 #define ISR_INT_TARGET_MASK_F1 (UNM_PCIX_PS_REG(PCIX_TARGET_MASK_F1)) | |
89 #define ISR_INT_TARGET_MASK_F2 (UNM_PCIX_PS_REG(PCIX_TARGET_MASK_F2)) | |
90 #define ISR_INT_TARGET_MASK_F3 (UNM_PCIX_PS_REG(PCIX_TARGET_MASK_F3)) | |
91 #define ISR_INT_TARGET_MASK_F4 (UNM_PCIX_PS_REG(PCIX_TARGET_MASK_F4)) | |
92 #define ISR_INT_TARGET_MASK_F5 (UNM_PCIX_PS_REG(PCIX_TARGET_MASK_F5)) | |
93 #define ISR_INT_TARGET_MASK_F6 (UNM_PCIX_PS_REG(PCIX_TARGET_MASK_F6)) | |
94 #define ISR_INT_TARGET_MASK_F7 (UNM_PCIX_PS_REG(PCIX_TARGET_MASK_F7)) | |
95 | |
96 #define ISR_INT_VECTOR (UNM_PCIX_PS_REG(PCIX_INT_VECTOR)) | |
97 #define ISR_INT_MASK (UNM_PCIX_PS_REG(PCIX_INT_MASK)) | |
98 #define ISR_INT_STATE_REG (UNM_PCIX_PS_REG(PCIE_MISCCFG_RC)) | |
99 | |
100 #define ISR_MSI_INT_TRIGGER(FUNC) (UNM_PCIX_PS_REG(PCIX_MSI_F(FUNC))) | |
101 | |
102 | |
103 #define ISR_IS_LEGACY_INTR_IDLE(VAL) (((VAL) & 0x300) == 0) | |
104 #define ISR_IS_LEGACY_INTR_TRIGGERED(VAL) (((VAL) & 0x300) == 0x200) | |
105 | |
106 /* | |
107 * PCI Interrupt Vector Values. | |
108 */ | |
109 #define PCIX_INT_VECTOR_BIT_F0 0x0080 | |
110 #define PCIX_INT_VECTOR_BIT_F1 0x0100 | |
111 #define PCIX_INT_VECTOR_BIT_F2 0x0200 | |
112 #define PCIX_INT_VECTOR_BIT_F3 0x0400 | |
113 #define PCIX_INT_VECTOR_BIT_F4 0x0800 | |
114 #define PCIX_INT_VECTOR_BIT_F5 0x1000 | |
115 #define PCIX_INT_VECTOR_BIT_F6 0x2000 | |
116 #define PCIX_INT_VECTOR_BIT_F7 0x4000 | |
117 | |
118 struct nx_legacy_intr_set { | |
119 __uint32_t int_vec_bit; | |
120 __uint32_t tgt_status_reg; | |
121 __uint32_t tgt_mask_reg; | |
122 __uint32_t pci_int_reg; | |
123 }; | |
124 | |
125 #define NX_LEGACY_INTR_CONFIG \ | |
126 { \ | |
127 { PCIX_INT_VECTOR_BIT_F0, \ | |
128 ISR_INT_TARGET_STATUS, \ | |
129 ISR_INT_TARGET_MASK, \ | |
130 ISR_MSI_INT_TRIGGER(0) }, \ | |
131 \ | |
132 { PCIX_INT_VECTOR_BIT_F1, \ | |
133 ISR_INT_TARGET_STATUS_F1, \ | |
134 ISR_INT_TARGET_MASK_F1, \ | |
135 ISR_MSI_INT_TRIGGER(1) }, \ | |
136 \ | |
137 { PCIX_INT_VECTOR_BIT_F2, \ | |
138 ISR_INT_TARGET_STATUS_F2, \ | |
139 ISR_INT_TARGET_MASK_F2, \ | |
140 ISR_MSI_INT_TRIGGER(2) }, \ | |
141 \ | |
142 { PCIX_INT_VECTOR_BIT_F3, \ | |
143 ISR_INT_TARGET_STATUS_F3, \ | |
144 ISR_INT_TARGET_MASK_F3, \ | |
145 ISR_MSI_INT_TRIGGER(3) }, \ | |
146 \ | |
147 { PCIX_INT_VECTOR_BIT_F4, \ | |
148 ISR_INT_TARGET_STATUS_F4, \ | |
149 ISR_INT_TARGET_MASK_F4, \ | |
150 ISR_MSI_INT_TRIGGER(4) }, \ | |
151 \ | |
152 { PCIX_INT_VECTOR_BIT_F5, \ | |
153 ISR_INT_TARGET_STATUS_F5, \ | |
154 ISR_INT_TARGET_MASK_F5, \ | |
155 ISR_MSI_INT_TRIGGER(5) }, \ | |
156 \ | |
157 { PCIX_INT_VECTOR_BIT_F6, \ | |
158 ISR_INT_TARGET_STATUS_F6, \ | |
159 ISR_INT_TARGET_MASK_F6, \ | |
160 ISR_MSI_INT_TRIGGER(6) }, \ | |
161 \ | |
162 { PCIX_INT_VECTOR_BIT_F7, \ | |
163 ISR_INT_TARGET_STATUS_F7, \ | |
164 ISR_INT_TARGET_MASK_F7, \ | |
165 ISR_MSI_INT_TRIGGER(7) }, \ | |
166 } | |
167 | |
168 #endif /* __NX_HW_REGS_H */ |