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