diff -Naru linux-2.6.16_orig/drivers/net/netxen/netxen_inc.h
linux-2.6.16/drivers/net/netxen/netxen_inc.h
--- linux-2.6.16_orig/drivers/net/netxen/netxen_inc.h 1969-12-31
16:00:00.000000000 -0800
+++ linux-2.6.16/drivers/net/netxen/netxen_inc.h 2006-03-24
14:13:57.000000000 -0800
@@ -0,0 +1,1228 @@
+/*
+ * Copyright (C) 2003 - 2006 NetXen Inc.
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ * MA 02111-1307, USA.
+ *
+ * The full GNU General Public License is included in this distribution
+ * in the file called LICENSE.
+ *
+ * Contact Information:
+ * [EMAIL PROTECTED]
+ * NetXen, 3965 Freedom Circle, Fourth Floor,
+ * Santa Clara, CA 95054
+ */
+#ifndef __NetXen_INC_H
+#define __NetXen_INC_H
+
+#include <linux/module.h>
+#include <linux/kernel.h>
+#include <linux/version.h>
+
+#include <linux/config.h>
+#include <linux/version.h>
+
+#define NetXen_CONF_X86 3
+
+#if defined(CONFIG_MODVERSIONS) && !defined(MODVERSIONS)
+#define MODVERSIONS
+#endif
+
+#if defined(MODVERSIONS) && !defined(__GENKSYMS__)
+#include <config/modversions.h>
+#endif
+
+#include <asm/semaphore.h>
+#include <linux/spinlock.h>
+#include <asm/irq.h>
+#include <linux/init.h>
+#include <linux/errno.h>
+#include <linux/pci.h>
+#include <linux/proc_fs.h>
+#include <asm/uaccess.h>
+#include <asm/string.h> /* for memset */
+
+typedef char __int8_t;
+typedef short __int16_t;
+typedef int __int32_t;
+
+typedef long long __int64_t;
+typedef unsigned char __uint8_t;
+typedef unsigned short __uint16_t;
+typedef unsigned int __uint32_t;
+typedef unsigned long long __uint64_t;
+
+
+#define PRINTK_PREFIX "<1>"
+#define printf_0(A) printk(PRINTK_PREFIX A)
+#define printf_1(A,B) printk(PRINTK_PREFIX A, B)
+#define printf_2(A,B,C) printk(PRINTK_PREFIX A, B, C)
+#define printf_3(A,B,C,D) printk(PRINTK_PREFIX A, B, C, D)
+#define printf_4(A,B,C,D,E) printk(PRINTK_PREFIX A, B, C, D, E)
+#define printf_5(A,B,C,D,E,F) printk(PRINTK_PREFIX A, B, C, D, E, F)
+
+void DELAY(int A);
+
+/*
+ * We use the environmental controls to define/undefine various feature
+ * control macros depending on the circumstances.
+ * When compiling for a Linux host, we use the standard Linux configuration
+ * method to simplify things here.
+ */
+
+#define NetXen_DELAY_HW 0 /* no delay */
+
+#define NetXen_DELAY_HUMAN 0 /* humans read slow */
+
+#define UNUSED __attribute__((unused))
+#define NOINLINE __attribute__((noinline))
+
+extern long pegDynamicMemStart;
+
+/*
+ * The basic unit of access when reading/writing control registers.
+ */
+typedef long native_t; /* most efficient integer on h/w */
+
+typedef __uint32_t netxen_crbword_t; /* single word in CRB space */
+typedef __uint64_t netxen_dataword_t; /* single word in data space */
+typedef __uint64_t netxen64ptr_t; /* a pointer that occupies 64 bits
*/
+#define NetXen64PTR(P) ((netxen64ptr_t)((native_t)(P))) /* convert for
us */
+
+#define MAX_REASSEMBLED_PKTS 4
+
+# include <linux/types.h>
+
+#define NetXen_HW_H0_CH_HUB_ADR 0x05
+#define NetXen_HW_H1_CH_HUB_ADR 0x0E
+#define NetXen_HW_H2_CH_HUB_ADR 0x03
+#define NetXen_HW_H3_CH_HUB_ADR 0x01
+#define NetXen_HW_H4_CH_HUB_ADR 0x06
+#define NetXen_HW_H5_CH_HUB_ADR 0x07
+#define NetXen_HW_H6_CH_HUB_ADR 0x08
+/* */
+/* WARNING: pex_tgt_adr.v assumes if MSB of hub adr is set then it is an
ILLEGAL hub!!!!! */
+/* */
+
+/* Hub 0 */
+#define NetXen_HW_MN_CRB_AGT_ADR 0x15
+#define NetXen_HW_MS_CRB_AGT_ADR 0x25
+
+/* Hub 1 */
+#define NetXen_HW_PS_CRB_AGT_ADR 0x73
+#define NetXen_HW_SS_CRB_AGT_ADR 0x20
+#define NetXen_HW_RPMX3_CRB_AGT_ADR 0x0b
+#define NetXen_HW_QMS_CRB_AGT_ADR 0x00
+#define NetXen_HW_SQGS0_CRB_AGT_ADR 0x01
+#define NetXen_HW_SQGS1_CRB_AGT_ADR 0x02
+#define NetXen_HW_SQGS2_CRB_AGT_ADR 0x03
+#define NetXen_HW_SQGS3_CRB_AGT_ADR 0x04
+#define NetXen_HW_C2C0_CRB_AGT_ADR 0x58
+#define NetXen_HW_C2C1_CRB_AGT_ADR 0x59
+#define NetXen_HW_C2C2_CRB_AGT_ADR 0x5a
+#define NetXen_HW_RPMX2_CRB_AGT_ADR 0x0a
+#define NetXen_HW_RPMX4_CRB_AGT_ADR 0x0c
+#define NetXen_HW_RPMX7_CRB_AGT_ADR 0x0f
+#define NetXen_HW_RPMX9_CRB_AGT_ADR 0x12
+#define NetXen_HW_SMB_CRB_AGT_ADR 0x18
+
+/* Hub 2 */
+#define NetXen_HW_NIU_CRB_AGT_ADR 0x31
+#define NetXen_HW_I2C0_CRB_AGT_ADR 0x19
+#define NetXen_HW_I2C1_CRB_AGT_ADR 0x29
+
+#define NetXen_HW_SN_CRB_AGT_ADR 0x10
+#define NetXen_HW_I2Q_CRB_AGT_ADR 0x20
+#define NetXen_HW_LPC_CRB_AGT_ADR 0x22
+#define NetXen_HW_ROMUSB_CRB_AGT_ADR 0x21
+#define NetXen_HW_QM_CRB_AGT_ADR 0x66
+#define NetXen_HW_SQG0_CRB_AGT_ADR 0x60
+#define NetXen_HW_SQG1_CRB_AGT_ADR 0x61
+#define NetXen_HW_SQG2_CRB_AGT_ADR 0x62
+#define NetXen_HW_SQG3_CRB_AGT_ADR 0x63
+#define NetXen_HW_RPMX1_CRB_AGT_ADR 0x09
+#define NetXen_HW_RPMX5_CRB_AGT_ADR 0x0d
+#define NetXen_HW_RPMX6_CRB_AGT_ADR 0x0e
+#define NetXen_HW_RPMX8_CRB_AGT_ADR 0x11
+
+/* Hub 3 */
+#define NetXen_HW_PH_CRB_AGT_ADR 0x1A
+#define NetXen_HW_SRE_CRB_AGT_ADR 0x50
+#define NetXen_HW_EG_CRB_AGT_ADR 0x51
+#define NetXen_HW_RPMX0_CRB_AGT_ADR 0x08
+
+/* Hub 4 */
+#define NetXen_HW_PEGN0_CRB_AGT_ADR 0x40
+#define NetXen_HW_PEGN1_CRB_AGT_ADR 0x41
+#define NetXen_HW_PEGN2_CRB_AGT_ADR 0x42
+#define NetXen_HW_PEGN3_CRB_AGT_ADR 0x43
+#define NetXen_HW_PEGNI_CRB_AGT_ADR 0x44
+#define NetXen_HW_PEGND_CRB_AGT_ADR 0x45
+#define NetXen_HW_PEGNC_CRB_AGT_ADR 0x46
+#define NetXen_HW_PEGR0_CRB_AGT_ADR 0x47
+#define NetXen_HW_PEGR1_CRB_AGT_ADR 0x48
+#define NetXen_HW_PEGR2_CRB_AGT_ADR 0x49
+#define NetXen_HW_PEGR3_CRB_AGT_ADR 0x4a
+
+
+/* Hub 5 */
+#define NetXen_HW_PEGS0_CRB_AGT_ADR 0x40
+#define NetXen_HW_PEGS1_CRB_AGT_ADR 0x41
+#define NetXen_HW_PEGS2_CRB_AGT_ADR 0x42
+#define NetXen_HW_PEGS3_CRB_AGT_ADR 0x43
+#define NetXen_HW_PEGSI_CRB_AGT_ADR 0x44
+#define NetXen_HW_PEGSD_CRB_AGT_ADR 0x45
+#define NetXen_HW_PEGSC_CRB_AGT_ADR 0x46
+
+
+/* Hub 6 */
+#define NetXen_HW_CAS0_CRB_AGT_ADR 0x46
+#define NetXen_HW_CAS1_CRB_AGT_ADR 0x47
+#define NetXen_HW_CAS2_CRB_AGT_ADR 0x48
+#define NetXen_HW_CAS3_CRB_AGT_ADR 0x49
+#define NetXen_HW_NCM_CRB_AGT_ADR 0x16
+#define NetXen_HW_TMR_CRB_AGT_ADR 0x17
+#define NetXen_HW_XDMA_CRB_AGT_ADR 0x05
+#define NetXen_HW_OCM0_CRB_AGT_ADR 0x06
+#define NetXen_HW_OCM1_CRB_AGT_ADR 0x07
+
+/* Floaters - non existent modules */
+#define NetXen_HW_EFC_RPMX0_CRB_AGT_ADR 0x67
+
+/* This field defines PCI/X adr [25:20] of agents on the CRB */
+/* */
+#define NetXen_HW_PX_MAP_CRB_PH 0
+#define NetXen_HW_PX_MAP_CRB_PS 1
+#define NetXen_HW_PX_MAP_CRB_MN 2
+#define NetXen_HW_PX_MAP_CRB_MS 3
+#define NetXen_HW_PX_MAP_CRB_SRE 5
+#define NetXen_HW_PX_MAP_CRB_NIU 6
+#define NetXen_HW_PX_MAP_CRB_QMN 7
+#define NetXen_HW_PX_MAP_CRB_SQN0 8
+#define NetXen_HW_PX_MAP_CRB_SQN1 9
+#define NetXen_HW_PX_MAP_CRB_SQN2 10
+#define NetXen_HW_PX_MAP_CRB_SQN3 11
+#define NetXen_HW_PX_MAP_CRB_QMS 12
+#define NetXen_HW_PX_MAP_CRB_SQS0 13
+#define NetXen_HW_PX_MAP_CRB_SQS1 14
+#define NetXen_HW_PX_MAP_CRB_SQS2 15
+#define NetXen_HW_PX_MAP_CRB_SQS3 16
+#define NetXen_HW_PX_MAP_CRB_PGN0 17
+#define NetXen_HW_PX_MAP_CRB_PGN1 18
+#define NetXen_HW_PX_MAP_CRB_PGN2 19
+#define NetXen_HW_PX_MAP_CRB_PGN3 20
+#define NetXen_HW_PX_MAP_CRB_PGND 21
+#define NetXen_HW_PX_MAP_CRB_PGNI 22
+#define NetXen_HW_PX_MAP_CRB_PGS0 23
+#define NetXen_HW_PX_MAP_CRB_PGS1 24
+#define NetXen_HW_PX_MAP_CRB_PGS2 25
+#define NetXen_HW_PX_MAP_CRB_PGS3 26
+#define NetXen_HW_PX_MAP_CRB_PGSD 27
+#define NetXen_HW_PX_MAP_CRB_PGSI 28
+#define NetXen_HW_PX_MAP_CRB_SN 29
+#define NetXen_HW_PX_MAP_CRB_EG 31
+#define NetXen_HW_PX_MAP_CRB_PH2 32
+#define NetXen_HW_PX_MAP_CRB_PS2 33
+#define NetXen_HW_PX_MAP_CRB_CAM 34
+#define NetXen_HW_PX_MAP_CRB_CAS0 35
+#define NetXen_HW_PX_MAP_CRB_CAS1 36
+#define NetXen_HW_PX_MAP_CRB_CAS2 37
+#define NetXen_HW_PX_MAP_CRB_C2C0 38
+#define NetXen_HW_PX_MAP_CRB_C2C1 39
+#define NetXen_HW_PX_MAP_CRB_TIMR 40
+/* #define PX_MAP_CRB_C2C2 40 // N/A: Not use in either
Phantom1 or Phantom2 => use for TIMR */
+/* #define PX_MAP_CRB_SS 41 */
+#define NetXen_HW_PX_MAP_CRB_RPMX1 42
+#define NetXen_HW_PX_MAP_CRB_RPMX2 43
+#define NetXen_HW_PX_MAP_CRB_RPMX3 44
+#define NetXen_HW_PX_MAP_CRB_RPMX4 45
+#define NetXen_HW_PX_MAP_CRB_RPMX5 46
+#define NetXen_HW_PX_MAP_CRB_RPMX6 47
+#define NetXen_HW_PX_MAP_CRB_RPMX7 48
+#define NetXen_HW_PX_MAP_CRB_XDMA 49
+#define NetXen_HW_PX_MAP_CRB_I2Q 50
+#define NetXen_HW_PX_MAP_CRB_ROMUSB 51
+#define NetXen_HW_PX_MAP_CRB_CAS3 52
+#define NetXen_HW_PX_MAP_CRB_RPMX0 53
+#define NetXen_HW_PX_MAP_CRB_RPMX8 54
+#define NetXen_HW_PX_MAP_CRB_RPMX9 55
+#define NetXen_HW_PX_MAP_CRB_OCM0 56
+#define NetXen_HW_PX_MAP_CRB_OCM1 57
+#define NetXen_HW_PX_MAP_CRB_SMB 58
+#define NetXen_HW_PX_MAP_CRB_I2C0 59
+#define NetXen_HW_PX_MAP_CRB_I2C1 60
+#define NetXen_HW_PX_MAP_CRB_LPC 61
+#define NetXen_HW_PX_MAP_CRB_PGNC 62
+#define NetXen_HW_PX_MAP_CRB_PGR0 63
+#define NetXen_HW_PX_MAP_CRB_PGR1 4
+#define NetXen_HW_PX_MAP_CRB_PGR2 30
+#define NetXen_HW_PX_MAP_CRB_PGR3 41
+
+/* This field defines CRB adr [31:20] of the agents */
+/* */
+
+#define NetXen_HW_CRB_HUB_AGT_ADR_MN ((NetXen_HW_H0_CH_HUB_ADR << 7) |
NetXen_HW_MN_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_PH ((NetXen_HW_H0_CH_HUB_ADR << 7) |
NetXen_HW_PH_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_MS ((NetXen_HW_H0_CH_HUB_ADR << 7) |
NetXen_HW_MS_CRB_AGT_ADR)
+
+#define NetXen_HW_CRB_HUB_AGT_ADR_PS ((NetXen_HW_H1_CH_HUB_ADR << 7) |
NetXen_HW_PS_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_SS ((NetXen_HW_H1_CH_HUB_ADR << 7) |
NetXen_HW_SS_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_RPMX3 ((NetXen_HW_H1_CH_HUB_ADR << 7) |
NetXen_HW_RPMX3_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_QMS ((NetXen_HW_H1_CH_HUB_ADR << 7) |
NetXen_HW_QMS_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_SQS0 ((NetXen_HW_H1_CH_HUB_ADR << 7) |
NetXen_HW_SQGS0_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_SQS1 ((NetXen_HW_H1_CH_HUB_ADR << 7) |
NetXen_HW_SQGS1_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_SQS2 ((NetXen_HW_H1_CH_HUB_ADR << 7) |
NetXen_HW_SQGS2_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_SQS3 ((NetXen_HW_H1_CH_HUB_ADR << 7) |
NetXen_HW_SQGS3_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_C2C0 ((NetXen_HW_H1_CH_HUB_ADR << 7) |
NetXen_HW_C2C0_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_C2C1 ((NetXen_HW_H1_CH_HUB_ADR << 7) |
NetXen_HW_C2C1_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_RPMX2 ((NetXen_HW_H1_CH_HUB_ADR << 7) |
NetXen_HW_RPMX2_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_RPMX4 ((NetXen_HW_H1_CH_HUB_ADR << 7) |
NetXen_HW_RPMX4_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_RPMX7 ((NetXen_HW_H1_CH_HUB_ADR << 7) |
NetXen_HW_RPMX7_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_RPMX9 ((NetXen_HW_H1_CH_HUB_ADR << 7) |
NetXen_HW_RPMX9_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_SMB ((NetXen_HW_H1_CH_HUB_ADR << 7) |
NetXen_HW_SMB_CRB_AGT_ADR)
+
+#define NetXen_HW_CRB_HUB_AGT_ADR_NIU ((NetXen_HW_H2_CH_HUB_ADR << 7) |
NetXen_HW_NIU_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_I2C0 ((NetXen_HW_H2_CH_HUB_ADR << 7) |
NetXen_HW_I2C0_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_I2C1 ((NetXen_HW_H2_CH_HUB_ADR << 7) |
NetXen_HW_I2C1_CRB_AGT_ADR)
+
+#define NetXen_HW_CRB_HUB_AGT_ADR_SRE ((NetXen_HW_H3_CH_HUB_ADR << 7) |
NetXen_HW_SRE_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_EG ((NetXen_HW_H3_CH_HUB_ADR << 7) |
NetXen_HW_EG_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_RPMX0 ((NetXen_HW_H3_CH_HUB_ADR << 7) |
NetXen_HW_RPMX0_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_QMN ((NetXen_HW_H3_CH_HUB_ADR << 7) |
NetXen_HW_QM_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_SQN0 ((NetXen_HW_H3_CH_HUB_ADR << 7) |
NetXen_HW_SQG0_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_SQN1 ((NetXen_HW_H3_CH_HUB_ADR << 7) |
NetXen_HW_SQG1_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_SQN2 ((NetXen_HW_H3_CH_HUB_ADR << 7) |
NetXen_HW_SQG2_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_SQN3 ((NetXen_HW_H3_CH_HUB_ADR << 7) |
NetXen_HW_SQG3_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_RPMX1 ((NetXen_HW_H3_CH_HUB_ADR << 7) |
NetXen_HW_RPMX1_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_RPMX5 ((NetXen_HW_H3_CH_HUB_ADR << 7) |
NetXen_HW_RPMX5_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_RPMX6 ((NetXen_HW_H3_CH_HUB_ADR << 7) |
NetXen_HW_RPMX6_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_RPMX8 ((NetXen_HW_H3_CH_HUB_ADR << 7) |
NetXen_HW_RPMX8_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_CAS0 ((NetXen_HW_H3_CH_HUB_ADR << 7) |
NetXen_HW_CAS0_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_CAS1 ((NetXen_HW_H3_CH_HUB_ADR << 7) |
NetXen_HW_CAS1_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_CAS2 ((NetXen_HW_H3_CH_HUB_ADR << 7) |
NetXen_HW_CAS2_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_CAS3 ((NetXen_HW_H3_CH_HUB_ADR << 7) |
NetXen_HW_CAS3_CRB_AGT_ADR)
+
+#define NetXen_HW_CRB_HUB_AGT_ADR_PGNI ((NetXen_HW_H4_CH_HUB_ADR << 7) |
NetXen_HW_PEGNI_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_PGND ((NetXen_HW_H4_CH_HUB_ADR << 7) |
NetXen_HW_PEGND_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_PGN0 ((NetXen_HW_H4_CH_HUB_ADR << 7) |
NetXen_HW_PEGN0_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_PGN1 ((NetXen_HW_H4_CH_HUB_ADR << 7) |
NetXen_HW_PEGN1_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_PGN2 ((NetXen_HW_H4_CH_HUB_ADR << 7) |
NetXen_HW_PEGN2_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_PGN3 ((NetXen_HW_H4_CH_HUB_ADR << 7) |
NetXen_HW_PEGN3_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_PGNC ((NetXen_HW_H4_CH_HUB_ADR << 7) |
NetXen_HW_PEGNC_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_PGR0 ((NetXen_HW_H4_CH_HUB_ADR << 7) |
NetXen_HW_PEGR0_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_PGR1 ((NetXen_HW_H4_CH_HUB_ADR << 7) |
NetXen_HW_PEGR1_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_PGR2 ((NetXen_HW_H4_CH_HUB_ADR << 7) |
NetXen_HW_PEGR2_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_PGR3 ((NetXen_HW_H4_CH_HUB_ADR << 7) |
NetXen_HW_PEGR3_CRB_AGT_ADR)
+
+#define NetXen_HW_CRB_HUB_AGT_ADR_PGSI ((NetXen_HW_H5_CH_HUB_ADR << 7) |
NetXen_HW_PEGSI_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_PGSD ((NetXen_HW_H5_CH_HUB_ADR << 7) |
NetXen_HW_PEGSD_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_PGS0 ((NetXen_HW_H5_CH_HUB_ADR << 7) |
NetXen_HW_PEGS0_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_PGS1 ((NetXen_HW_H5_CH_HUB_ADR << 7) |
NetXen_HW_PEGS1_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_PGS2 ((NetXen_HW_H5_CH_HUB_ADR << 7) |
NetXen_HW_PEGS2_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_PGS3 ((NetXen_HW_H5_CH_HUB_ADR << 7) |
NetXen_HW_PEGS3_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_PGSC ((NetXen_HW_H5_CH_HUB_ADR << 7) |
NetXen_HW_PEGSC_CRB_AGT_ADR)
+
+#define NetXen_HW_CRB_HUB_AGT_ADR_CAM ((NetXen_HW_H6_CH_HUB_ADR << 7) |
NetXen_HW_NCM_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_TIMR ((NetXen_HW_H6_CH_HUB_ADR << 7) |
NetXen_HW_TMR_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_XDMA ((NetXen_HW_H6_CH_HUB_ADR << 7) |
NetXen_HW_XDMA_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_SN ((NetXen_HW_H6_CH_HUB_ADR << 7) |
NetXen_HW_SN_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_I2Q ((NetXen_HW_H6_CH_HUB_ADR << 7) |
NetXen_HW_I2Q_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_ROMUSB ((NetXen_HW_H6_CH_HUB_ADR << 7) |
NetXen_HW_ROMUSB_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_OCM0 ((NetXen_HW_H6_CH_HUB_ADR << 7) |
NetXen_HW_OCM0_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_OCM1 ((NetXen_HW_H6_CH_HUB_ADR << 7) |
NetXen_HW_OCM1_CRB_AGT_ADR)
+#define NetXen_HW_CRB_HUB_AGT_ADR_LPC ((NetXen_HW_H6_CH_HUB_ADR << 7) |
NetXen_HW_LPC_CRB_AGT_ADR)
+
+
+/* ------------------------------------------------------------------------ */
+/* IMBus Port Tag Defines */
+/* ------------------------------------------------------------------------ */
+/* ------------------------------------------------------------------------ */
+/* MN IMBus Port Tag Defines */
+/* ------------------------------------------------------------------------ */
+#define NetXen_HW_SRE_MN_IMBUS_PORT_TAG 0x0
+#define NetXen_HW_EG_MN_IMBUS_PORT_TAG 0x1
+#define NetXen_HW_CAS_MN_IMBUS_PORT_TAG 0x2
+#define NetXen_HW_PEG2I_MN_IMBUS_PORT_TAG 0x3
+#define NetXen_HW_PEG2D_MN_IMBUS_PORT_TAG 0x4
+#define NetXen_HW_PEG2D1_MN_IMBUS_PORT_TAG 0x5
+#define NetXen_HW_PH_MN_IMBUS_PORT_TAG 0x6
+#define NetXen_HW_SN_PTM_MN_IMBUS_PORT_TAG 0x7
+#define NetXen_HW_PS_MN_IMBUS_PORT_TAG 0xc
+#define NetXen_HW_XDMA_MN_IMBUS_PORT_TAG 0xd
+#define NetXen_HW_ROM_MN_IMBUS_PORT_TAG 0xe
+#define NetXen_HW_NCM_CAM0_MN_IMBUS_PORT_TAG 0x10
+#define NetXen_HW_NCM_CAM1_MN_IMBUS_PORT_TAG 0x10
+#define NetXen_HW_NCM_CAM2_MN_IMBUS_PORT_TAG 0x11
+#define NetXen_HW_NCM_CAM3_MN_IMBUS_PORT_TAG 0x11
+#define NetXen_HW_NCM_CAM4_MN_IMBUS_PORT_TAG 0x11
+#define NetXen_HW_TMR_MN_IMBUS_PORT_TAG 0x12
+#define NetXen_HW_QM_MN_IMBUS_PORT_TAG 0x13
+#define NetXen_HW_SQG0_FBQ_MN_IMBUS_PORT_TAG 0x14
+#define NetXen_HW_SQG1_FBQ_MN_IMBUS_PORT_TAG 0x15
+#define NetXen_HW_SQG2_FBQ_MN_IMBUS_PORT_TAG 0x16
+#define NetXen_HW_SQG3_FBQ_MN_IMBUS_PORT_TAG 0x17
+
+/* ------------------------------------------------------------------------ */
+/* MS IMBus Port Tag Defines - not used for P2 */
+/* ------------------------------------------------------------------------ */
+#define NetXen_HW_PH_MS_IMBUS_PORT_TAG 0x0
+#define NetXen_HW_PEG2I_MS_IMBUS_PORT_TAG 0x1
+#define NetXen_HW_PEG2D_MS_IMBUS_PORT_TAG 0x2
+#define NetXen_HW_PEG2D1_MS_IMBUS_PORT_TAG 0x3
+#define NetXen_HW_XDMA_MS_IMBUS_PORT_TAG 0x4
+#define NetXen_HW_CAS_MS_IMBUS_PORT_TAG 0x5
+#define NetXen_HW_PS_MS_IMBUS_PORT_TAG 0x6
+#define NetXen_HW_SS_PTM_MS_IMBUS_PORT_TAG 0x7
+#define NetXen_HW_C2C0_MS_IMBUS_PORT_TAG 0xc
+#define NetXen_HW_C2C1_MS_IMBUS_PORT_TAG 0xd
+
+/* ------------------------------------------------------------------------ */
+/* SN IMBus Port Tag Defines */
+/* ------------------------------------------------------------------------ */
+#define NetXen_HW_QM_SN_IMBUS_PORT_TAG 0x0
+#define NetXen_HW_PS_SN_IMBUS_PORT_TAG 0x2
+#define NetXen_HW_PH_SN_IMBUS_PORT_TAG 0x3
+
+#define NetXen_HW_SQG0_FBQ_SN_IMBUS_PORT_TAG 0x4
+#define NetXen_HW_SQG1_FBQ_SN_IMBUS_PORT_TAG 0x5
+#define NetXen_HW_SQG2_FBQ_SN_IMBUS_PORT_TAG 0x6
+#define NetXen_HW_SQG3_FBQ_SN_IMBUS_PORT_TAG 0x7
+
+#define NetXen_HW_SRE_SN_IMBUS_PORT_TAG1 0x8
+#define NetXen_HW_EG_SN_IMBUS_PORT_TAG 0x9
+#define NetXen_HW_SRE_SN_IMBUS_PORT_TAG0 0xa
+
+#define NetXen_HW_NCM_CAM0_SN_IMBUS_PORT_TAG 0xc
+#define NetXen_HW_NCM_CAM1_SN_IMBUS_PORT_TAG 0xc
+#define NetXen_HW_TMR_SN_IMBUS_PORT_TAG 0xd
+#define NetXen_HW_CAS_SN_IMBUS_PORT_TAG 0xe
+#define NetXen_HW_NCM_CAM2_SN_IMBUS_PORT_TAG 0xf
+#define NetXen_HW_NCM_CAM3_SN_IMBUS_PORT_TAG 0xf
+#define NetXen_HW_NCM_CAM4_SN_IMBUS_PORT_TAG 0xf
+
+#define NetXen_HW_PEGN_I_SN_IMBUS_PORT_TAG 0x10
+#define NetXen_HW_PEGN_D_SN_IMBUS_PORT_TAG 0x11
+#define NetXen_HW_PEGN_D1_SN_IMBUS_PORT_TAG 0x12
+#define NetXen_HW_MS_PTM_SN_IMBUS_PORT_TAG 0x14
+
+#define NetXen_HW_PEGS_I_SN_IMBUS_PORT_TAG 0x15
+
+/* defunct */
+#define NetXen_HW_SQGS0_FBQ_SN_IMBUS_PORT_TAG 0x8
+#define NetXen_HW_SQGS1_FBQ_SN_IMBUS_PORT_TAG 0x9
+#define NetXen_HW_SQGS2_FBQ_SN_IMBUS_PORT_TAG 0xa
+#define NetXen_HW_SQGS3_FBQ_SN_IMBUS_PORT_TAG 0xb
+#define NetXen_HW_QMS_SN_IMBUS_PORT_TAG 0x2
+//#define NetXen_HW_PS_SN_IMBUS_PORT_TAG 0xd
+
+/* ------------------------------------------------------------------------ */
+/* SS IMBus Port Tag Defines */
+/* ------------------------------------------------------------------------ */
+#define NetXen_HW_QMS_SS_IMBUS_PORT_TAG 0x1
+
+#define NetXen_HW_SQGS0_FBQ_SS_IMBUS_PORT_TAG 0x3
+#define NetXen_HW_SQGS1_FBQ_SS_IMBUS_PORT_TAG 0x4
+#define NetXen_HW_SQGS2_FBQ_SS_IMBUS_PORT_TAG 0x5
+#define NetXen_HW_SQGS3_FBQ_SS_IMBUS_PORT_TAG 0x6
+#define NetXen_HW_PS_SS_IMBUS_PORT_TAG 0x7
+#define NetXen_HW_PH_SS_IMBUS_PORT_TAG 0x8
+#define NetXen_HW_MN_PTM_MS_IMBUS_PORT_TAG 0x7
+
+/* ------------------------------------------------------------------------ */
+/* NCM IMBus Port Tag Defines */
+/* ------------------------------------------------------------------------ */
+#define NetXen_HW_SRE_CAM_TAG0 0x0
+#define NetXen_HW_SRE_CAM_TAG1 0x1
+#define NetXen_HW_SRE_CAM_TAG2 0x2
+#define NetXen_HW_PH_CAM_TAG 0x3
+#define NetXen_HW_CAS_CAM_TAG 0x4
+#define NetXen_HW_PS_CAM_TAG 0x5
+#define NetXen_HW_PEGN0_CAM_TAG 0x6
+#define NetXen_HW_PEGN1_CAM_TAG 0x7
+#define NetXen_HW_PEGN2_CAM_TAG 0x9
+#define NetXen_HW_PEGN3_CAM_TAG 0xa
+#define NetXen_HW_PEGS0_CAM_TAG 0xb
+#define NetXen_HW_PEGS1_CAM_TAG 0xc
+#define NetXen_HW_PEGS2_CAM_TAG 0xd
+#define NetXen_HW_PEGS3_CAM_TAG 0xe
+
+
+/* ------------------------------------------------------------------------ */
+/* Network QM IMBus Port Tag Defines */
+/* ------------------------------------------------------------------------ */
+#define NetXen_HW_SRE_PBI_QM_REQ_TAG 0x0
+#define NetXen_HW_SRE_RE1_QM_REQ_TAG 0x1
+#define NetXen_HW_SRE_FLM_QM_REQ_TAG 0x2
+#define NetXen_HW_SRE_RE2_QM_REQ_TAG 0x3
+#define NetXen_HW_EG_QM_REQ_TAG 0x4
+#define NetXen_HW_PEGN0_QM_REQ_TAG 0x5
+#define NetXen_HW_PEGN1_QM_REQ_TAG 0x6
+#define NetXen_HW_PEGN2_QM_REQ_TAG 0x7
+#define NetXen_HW_PEGN3_QM_REQ_TAG 0xE
+#define NetXen_HW_I2Q_QM_REQ_TAG 0x8
+#define NetXen_HW_PS_DMA_QMN_REQ_TAG 0x9
+#define NetXen_HW_PS_QMN_REQ_TAG 0xA
+#define NetXen_HW_XDMA_QMN_REQ_TAG 0xB
+#define NetXen_HW_PCIX_QM_REQ_TAG 0xC
+#define NetXen_HW_CAS_QMN_REQ_TAG 0xD
+#define NetXen_HW_TMR_QMN_REQ_TAG 0xF
+#define NetXen_HW_QMS_QMN_REQ_TAG 0xB
+#define NetXen_HW_C2C0_QM_REQ_TAG 0x9
+
+/* ------------------------------------------------------------------------ */
+/* Storage QM IMBus Port Tag Defines */
+/* ------------------------------------------------------------------------ */
+#define NetXen_HW_PEGS0_QMS_REQ_TAG 0x0
+#define NetXen_HW_PEGS1_QMS_REQ_TAG 0x1
+#define NetXen_HW_PEGS2_QMS_REQ_TAG 0x2
+#define NetXen_HW_PEGS3_QMS_REQ_TAG 0xf
+/* #define CAS_QMS_REQ_TAG 0x3 - casper uses CAS_QMN_REQ_TAG for both
QMN & QMS */
+#define NetXen_HW_C2C1_QMS_REQ_TAG 0x4
+#define NetXen_HW_PS_QMS_REQ_TAG 0x5
+#define NetXen_HW_PH_QMS_REQ_TAG 0x6
+#define NetXen_HW_XDMA_QMS_REQ_TAG 0x9
+#define NetXen_HW_CAS_QMS_REQ_TAG 0xA - casper uses CAS_QMN_REQ_TAG for both
QMN & QMS
+#define NetXen_HW_QMN_QMS_REQ_TAG 0xE
+
+/* ------------------------------------------------------------------------ */
+/* OCM0 IMBus Port Tag Defines */
+/* ------------------------------------------------------------------------ */
+#define NetXen_HW_MN_OCM0_PORT_TAG 0x00
+#define NetXen_HW_SN_OCM0_PORT_TAG 0x01
+#define NetXen_HW_P2D0_OCM0_PORT_TAG 0x02
+#define NetXen_HW_P2D1_OCM0_PORT_TAG 0x03
+#define NetXen_HW_XDMA_OCM0_PORT_TAG 0x04
+
+/* ------------------------------------------------------------------------ */
+/* OCM0 IMBus Port Tag Defines */
+/* ------------------------------------------------------------------------ */
+#define NetXen_HW_MN_OCM1_PORT_TAG 0x00
+#define NetXen_HW_SN_OCM1_PORT_TAG 0x01
+#define NetXen_HW_P2D0_OCM1_PORT_TAG 0x02
+#define NetXen_HW_P2D1_OCM1_PORT_TAG 0x03
+#define NetXen_HW_XDMA_OCM1_PORT_TAG 0x04
+
+/* ------------------------------------------------------------------------ */
+/* PCIE IMBus Port Tag Defines */
+/* ------------------------------------------------------------------------ */
+#define NetXen_HW_MN_PCIE_IMBUS_PORT_TAG 0x0
+#define NetXen_HW_SN_PCIE_IMBUS_PORT_TAG 0x1
+#define NetXen_HW_P2D0_PCIE_IMBUS_PORT_TAG 0x2
+#define NetXen_HW_P2D1_PCIE_IMBUS_PORT_TAG 0x3
+#define NetXen_HW_CAS_PCIE_IMBUS_PORT_TAG 0x4
+#define NetXen_HW_EPG_PCIE_IMBUS_PORT_TAG 0x4
+
+/* ------------------------------------------------------------------------ */
+/* SubQueue Number Assignment */
+/* ------------------------------------------------------------------------ */
+
+#define NetXen_HW_SQG0_FBQ0_NUM 0x0
+#define NetXen_HW_SQG0_FBQ1_NUM 0x1
+#define NetXen_HW_SQG0_FBQ2_NUM 0x2
+#define NetXen_HW_SQG0_FBQ3_NUM 0x3
+
+#define NetXen_HW_SQG1_FBQ0_NUM 0x4
+#define NetXen_HW_SQG1_FBQ1_NUM 0x5
+#define NetXen_HW_SQG1_FBQ2_NUM 0x6
+#define NetXen_HW_SQG1_FBQ3_NUM 0x7
+
+#define NetXen_HW_SQG2_FBQ0_NUM 0x8
+#define NetXen_HW_SQG2_FBQ1_NUM 0x9
+#define NetXen_HW_SQG2_FBQ2_NUM 0xA
+#define NetXen_HW_SQG2_FBQ3_NUM 0xB
+
+#define NetXen_HW_SQG3_FBQ0_NUM 0xC
+#define NetXen_HW_SQG3_FBQ1_NUM 0xD
+#define NetXen_HW_SQG3_FBQ2_NUM 0xE
+#define NetXen_HW_SQG3_FBQ3_NUM 0xF
+
+/* ------------------------------------------------------------------------ */
+/* C2C0 IMBus Port Tag Defines */
+/* ------------------------------------------------------------------------ */
+#define NetXen_HW_XDMA_C2C0_IMBUS_PORT_TAG 0x0
+
+/* ------------------------------------------------------------------------ */
+/* C2C1 IMBus Port Tag Defines */
+/* ------------------------------------------------------------------------ */
+#define NetXen_HW_XDMA_C2C1_IMBUS_PORT_TAG 0x0
+
+/* Q SubAgent Field for Locking */
+
+/* */
+#define NetXen_HW_NPEG0_VPEG0_SUB_AGNT 0x0
+#define NetXen_HW_NPEG0_VPEG1_SUB_AGNT 0x1
+#define NetXen_HW_NPEG1_VPEG0_SUB_AGNT 0x2
+#define NetXen_HW_NPEG1_VPEG1_SUB_AGNT 0x3
+#define NetXen_HW_NPEG2_VPEG0_SUB_AGNT 0x4
+#define NetXen_HW_NPEG2_VPEG1_SUB_AGNT 0x5
+#define NetXen_HW_CAS_SUB_AGNT 0x6
+#define NetXen_HW_PCI_SUB_AGNT 0x7
+#define NetXen_HW_SPEG0_VPEG0_SUB_AGNT 0x8
+#define NetXen_HW_SPEG0_VPEG1_SUB_AGNT 0x9
+#define NetXen_HW_SPEG1_VPEG0_SUB_AGNT 0xa
+#define NetXen_HW_SPEG1_VPEG1_SUB_AGNT 0xb
+#define NetXen_HW_SPEG2_VPEG0_SUB_AGNT 0xc
+#define NetXen_HW_SPEG2_VPEG1_SUB_AGNT 0xd
+
+/*
+ * MAX_RCV_CTX : The number of receive contexts that are available on
+ * the phantom.
+ */
+#define MAX_RCV_CTX 1
+
+#define NetXen_SRE_INT_STATUS (NetXen_CRB_SRE + 0x00034)
+#define NetXen_SRE_PBI_ACTIVE_STATUS (NetXen_CRB_SRE + 0x01014)
+#define NetXen_SRE_L1RE_CTL (NetXen_CRB_SRE + 0x03000)
+#define NetXen_SRE_L2RE_CTL (NetXen_CRB_SRE + 0x05000)
+#define NetXen_SRE_BUF_CTL (NetXen_CRB_SRE + 0x01000)
+
+#ifdef PCIX
+#define NetXen_DMA_BASE(U) (NetXen_CRB_PCIX_HOST + 0x20000 + ((U)<<16))
+#else
+#define NetXen_DMA_BASE(U) (NetXen_CRB_PCIX_MD + 0x20000 + ((U)<<16))
+#endif
+#define NetXen_DMA_COMMAND(U) (NetXen_DMA_BASE(U) + 0x00008)
+
+#define NetXen_I2Q_CLR_PCI_HI (NetXen_CRB_I2Q + 0x00034)
+
+#define PEG_NETWORK_BASE(N) (NetXen_CRB_PEG_NET_0 + (((N)&3) << 20))
+#define CRB_REG_EX_PC 0x3c
+
+#define ROMUSB_GLB (NetXen_CRB_ROMUSB + 0x00000)
+#define ROMUSB_ROM (NetXen_CRB_ROMUSB + 0x10000)
+
+#define NetXen_ROMUSB_GLB_STATUS (ROMUSB_GLB + 0x0004)
+#define NetXen_ROMUSB_GLB_SW_RESET (ROMUSB_GLB + 0x0008)
+#define NetXen_ROMUSB_GLB_PAD_GPIO_I (ROMUSB_GLB + 0x000c)
+#define NetXen_ROMUSB_GLB_CAS_RST (ROMUSB_GLB + 0x0038)
+#define NetXen_ROMUSB_GLB_TEST_MUX_SEL (ROMUSB_GLB + 0x0044)
+
+#define NetXen_ROMUSB_GPIO(n) (ROMUSB_GLB + 0x60 + (4 * (n)))
+
+#define NetXen_ROMUSB_ROM_INSTR_OPCODE (ROMUSB_ROM + 0x0004)
+#define NetXen_ROMUSB_ROM_ADDRESS (ROMUSB_ROM + 0x0008)
+#define NetXen_ROMUSB_ROM_ABYTE_CNT (ROMUSB_ROM + 0x0010)
+#define NetXen_ROMUSB_ROM_DUMMY_BYTE_CNT (ROMUSB_ROM + 0x0014)
+#define NetXen_ROMUSB_ROM_RDATA (ROMUSB_ROM + 0x0018)
+
+#define NetXen_PCI_CRB_WINDOWSIZE 0x00100000 /* all are 1MB windows */
+#define NetXen_PCI_CRB_WINDOW(A) (NetXen_PCI_CRBSPACE +
(A)*NetXen_PCI_CRB_WINDOWSIZE)
+
+#define NetXen_CRB_NIU NetXen_PCI_CRB_WINDOW(NetXen_HW_PX_MAP_CRB_NIU)
+#define NetXen_CRB_SRE NetXen_PCI_CRB_WINDOW(NetXen_HW_PX_MAP_CRB_SRE)
+#define NetXen_CRB_ROMUSB
NetXen_PCI_CRB_WINDOW(NetXen_HW_PX_MAP_CRB_ROMUSB)
+#define NetXen_CRB_I2Q NetXen_PCI_CRB_WINDOW(NetXen_HW_PX_MAP_CRB_I2Q)
+#define NetXen_CRB_MAX NetXen_PCI_CRB_WINDOW(64)
+
+#define NetXen_CRB_PCIX_HOST NetXen_PCI_CRB_WINDOW(NetXen_HW_PX_MAP_CRB_PH)
+#define NetXen_CRB_PCIX_HOST2 NetXen_PCI_CRB_WINDOW(NetXen_HW_PX_MAP_CRB_PH2)
+#define NetXen_CRB_PEG_NET_0 NetXen_PCI_CRB_WINDOW(NetXen_HW_PX_MAP_CRB_PGN0)
+#define NetXen_CRB_PEG_NET_1 NetXen_PCI_CRB_WINDOW(NetXen_HW_PX_MAP_CRB_PGN1)
+#define NetXen_CRB_PEG_NET_2 NetXen_PCI_CRB_WINDOW(NetXen_HW_PX_MAP_CRB_PGN2)
+#define NetXen_CRB_PEG_NET_3 NetXen_PCI_CRB_WINDOW(NetXen_HW_PX_MAP_CRB_PGN3)
+#define NetXen_CRB_PEG_NET_D NetXen_PCI_CRB_WINDOW(NetXen_HW_PX_MAP_CRB_PGND)
+#define NetXen_CRB_PEG_NET_I NetXen_PCI_CRB_WINDOW(NetXen_HW_PX_MAP_CRB_PGNI)
+#define NetXen_CRB_DDR_NET NetXen_PCI_CRB_WINDOW(NetXen_HW_PX_MAP_CRB_MN)
+
+#define NetXen_CRB_PCIX_MD NetXen_PCI_CRB_WINDOW(NetXen_HW_PX_MAP_CRB_PS)
+#define NetXen_CRB_PCIE NetXen_CRB_PCIX_MD
+
+#define ISR_INT_VECTOR (NetXen_PCIX_PS_REG(PCIX_INT_VECTOR))
+#define ISR_INT_MASK (NetXen_PCIX_PS_REG(PCIX_INT_MASK))
+#define ISR_INT_MASK_SLOW (NetXen_PCIX_PS_REG(PCIX_INT_MASK))
+#define ISR_INT_TARGET_STATUS (NetXen_PCIX_PS_REG(PCIX_TARGET_STATUS))
+#define ISR_INT_TARGET_MASK (NetXen_PCIX_PS_REG(PCIX_TARGET_MASK))
+
+#define NetXen_PCI_MAPSIZE 128 /* we're mapping 128MB of mem on the PCI
bus */
+#define NetXen_PCI_DDR_NET (unsigned long)0x00000000
+#define NetXen_PCI_DDR_NET_MAX (unsigned long)0x01ffffff
+#define NetXen_PCI_QDR_NET (unsigned long)0x04000000
+#define NetXen_PCI_QDR_NET_MAX (unsigned long)0x043fffff
+#define NetXen_PCI_DIRECT_CRB (unsigned long)0x04400000
+#define NetXen_PCI_DIRECT_CRB_MAX (unsigned long)0x047fffff
+#define NetXen_PCI_CAMQM_MAX (unsigned long)0x04ffffff
+#define NetXen_PCI_OCM0 (unsigned long)0x05000000
+#define NetXen_PCI_OCM0_MAX (unsigned long)0x050fffff
+#define NetXen_PCI_OCM1 (unsigned long)0x05100000
+#define NetXen_PCI_OCM1_MAX (unsigned long)0x051fffff
+#define NetXen_PCI_CRBSPACE (unsigned long)0x06000000
+
+#define NetXen_CRB_CAM NetXen_PCI_CRB_WINDOW(NetXen_HW_PX_MAP_CRB_CAM)
+
+#define NetXen_ADDR_DDR_NET (0x0000000000000000ULL)
+#define NetXen_ADDR_DDR_NET_MAX (0x000000000fffffffULL)
+#define NetXen_ADDR_OCM0 (0x0000000200000000ULL)
+#define NetXen_ADDR_OCM0_MAX (0x00000002000fffffULL)
+#define NetXen_ADDR_OCM1 (0x0000000200400000ULL)
+#define NetXen_ADDR_OCM1_MAX (0x00000002004fffffULL)
+#define NetXen_ADDR_QDR_NET (0x0000000300000000ULL)
+#define NetXen_ADDR_QDR_NET_MAX (0x00000003003fffffULL)
+
+int netxen_crb_read(unsigned long off, void *data);
+native_t netxen_crb_read_val(unsigned long off);
+int netxen_crb_write(unsigned long off, void *data);
+int netxen_crb_writelit(unsigned long off, int data);
+int netxen_imb_read(unsigned long off, void *data);
+int netxen_imb_write(unsigned long off, void *data);
+int netxen_imb_writelit64(unsigned long off, __uint64_t data);
+int netxen_data_read(unsigned long long off, void *data);
+int netxen_data_write(unsigned long long off, void *data);
+int netxen_data_writelit64(unsigned long long off, __uint64_t data);
+int netxen_db_write(unsigned long long off, int size, void *data);
+unsigned long netxen_xport_lock(void);
+void netxen_xport_unlock(unsigned long);
+
+#define NetXen_CRB_READ_VAL(ADDR) netxen_crb_read_val((ADDR))
+#define NetXen_CRB_READ(ADDR,VALUE) netxen_crb_read((ADDR),(netxen_crbword_t
*)(VALUE))
+#define NetXen_CRB_READ_CHECK(ADDR, VALUE) \
+ do { \
+ if (netxen_crb_read(ADDR, VALUE)) return -1; \
+ } while(0)
+#define NetXen_CRB_WRITE_CHECK(ADDR, VALUE) \
+ do { \
+ if (netxen_crb_write(ADDR, VALUE)) return -1; \
+ } while(0)
+#define NetXen_CRB_WRITELIT(ADDR, VALUE) \
+ do { \
+ netxen_crb_writelit(ADDR, VALUE); \
+ } while(0)
+#define NetXen_CRB_WRITE(ADDR, VALUE) \
+ do { \
+ netxen_crb_write(ADDR, VALUE); \
+ } while(0)
+#define NetXen_CRB_WRITELIT_CHECK(ADDR, VALUE) \
+ do { \
+ if (netxen_crb_writelit(ADDR, VALUE)) return -1; \
+ } while(0)
+#define NetXen_CRB_READ_PANIC(ADDR, VALUE, ERRSTR) \
+ do { \
+ if (netxen_crb_read(ADDR, VALUE)) panic(ERRSTR); \
+ } while(0)
+#define NetXen_CRB_WRITE_PANIC(ADDR, VALUE, ERRSTR) \
+ do { \
+ if (netxen_crb_write(ADDR, VALUE)) panic(ERRSTR); \
+ } while(0)
+#define NetXen_CRB_WRITELIT_PANIC(ADDR, VALUE, ERRSTR) \
+ do { \
+ if (netxen_crb_writelit(ADDR, VALUE)) panic(ERRSTR); \
+ } while(0)
+#define NetXen_IMB_READ_CHECK(ADDR, VALUE) \
+ do { \
+ if (netxen_imb_read(ADDR, VALUE)) return -1; \
+ } while(0)
+#define NetXen_IMB_WRITE_CHECK(ADDR, VALUE) \
+ do { \
+ if (netxen_imb_write(ADDR, VALUE)) return -1; \
+ } while(0)
+#define NetXen_IMB_WRITELIT_CHECK(ADDR, VALUE) \
+ do { \
+ if (netxen_imb_writelit64(ADDR, VALUE)) return -1; \
+ } while(0)
+#define NetXen_IMB_READ_PANIC(ADDR, VALUE, ERRSTR) \
+ do { \
+ if (netxen_imb_read(ADDR, VALUE)) panic(ERRSTR); \
+ } while(0)
+#define NetXen_IMB_WRITE_PANIC(ADDR, VALUE, ERRSTR) \
+ do { \
+ if (netxen_imb_write(ADDR, VALUE)) panic(ERRSTR); \
+ } while(0)
+#define NetXen_IMB_WRITELIT_PANIC(ADDR, VALUE, ERRSTR) \
+ do { \
+ if (netxen_imb_writelit64(ADDR, VALUE)) panic(ERRSTR); \
+ } while(0)
+#define NetXen_DATA_READ_CHECK(ADDR, VALUE) \
+ do { \
+ if (netxen_data_read(ADDR, VALUE)) return -1; \
+ } while(0)
+#define NetXen_DATA_WRITE_CHECK(ADDR, VALUE) \
+ do { \
+ if (netxen_data_write(ADDR, VALUE)) return -1; \
+ } while(0)
+#define NetXen_DATA_WRITELIT_CHECK(ADDR, VALUE) \
+ do { \
+ if (netxen_data_writelit64(ADDR, VALUE)) return -1; \
+ } while(0)
+#define NetXen_DATA_READ_PANIC(ADDR, VALUE, ERRSTR) \
+ do { \
+ if (netxen_data_read(ADDR, VALUE)) panic(ERRSTR); \
+ } while(0)
+#define NetXen_DATA_WRITE_PANIC(ADDR, VALUE, ERRSTR) \
+ do { \
+ if (netxen_data_write(ADDR, VALUE)) panic(ERRSTR); \
+ } while(0)
+#define NetXen_DATA_WRITELIT_PANIC(ADDR, VALUE, ERRSTR) \
+ do { \
+ if (netxen_data_writelit64(ADDR, VALUE)) panic(ERRSTR); \
+ } while(0)
+
+typedef __uint8_t netxen_ethernet_macaddr_t[6];
+
+/* Nibble or Byte mode for phy interface (GbE mode only) */
+typedef enum {
+ NetXen_NIU_10_100_MB = 0,
+ NetXen_NIU_1000_MB
+} netxen_niu_gbe_ifmode_t;
+
+/*
+ * NIU GB MAC Config Register 0 (applies to GB0, GB1, GB2, GB3)
+ */
+typedef struct {
+ netxen_crbword_t
+ tx_enable:1, /* 1:enable frame xmit, 0:disable */
+ tx_synched:1, /* R/O: xmit enable synched to xmit stream */
+ rx_enable:1, /* 1:enable frame recv, 0:disable */
+ rx_synched:1, /* R/O: recv enable synched to recv stream */
+ tx_flowctl:1, /* 1:enable pause frame generation, 0:disable */
+ rx_flowctl:1, /* 1:act on recv'd pause frames, 0:ignore */
+ rsvd1:2,
+ loopback:1, /* 1:loop MAC xmits to MAC recvs, 0:normal */
+ rsvd2:7,
+ tx_reset_pb:1, /* 1:reset frame xmit protocol blk, 0:no-op */
+ rx_reset_pb:1, /* 1:reset frame recv protocol blk, 0:no-op */
+ tx_reset_mac:1, /* 1:reset data/ctl multiplexer blk, 0:no-op */
+ rx_reset_mac:1, /* 1:reset ctl frames & timers blk, 0:no-op */
+ rsvd3:11,
+ soft_reset:1; /* 1:reset the MAC and the SERDES, 0:no-op */
+} netxen_niu_gb_mac_config_0_t;
+
+/*
+ * NIU GB MAC Config Register 1 (applies to GB0, GB1, GB2, GB3)
+ */
+typedef struct {
+ netxen_crbword_t
+ duplex:1, /* 1:full duplex mode, 0:half duplex */
+ crc_enable:1, /* 1:append CRC to xmit frames, 0:dont append */
+ padshort:1, /* 1:pad short frames and add CRC, 0:dont pad */
+ rsvd1:1,
+ checklength:1, /* 1:check framelen with actual, 0:dont check */
+ hugeframes:1, /* 1:allow oversize xmit frames, 0:dont allow */
+ rsvd2:2,
+ intfmode:2, /* 01:nibble (10/100), 10:byte (1000) */
+ rsvd3:2,
+ preamblelen:4, /* preamble field length in bytes, default 7 */
+ rsvd4:16;
+} netxen_niu_gb_mac_config_1_t;
+
+/*
+ * NIU GB GMII Mode Register (applies to GB0, GB1, GB2, GB3)
+ * To change the mode, turn off the existing mode, then turn on the new mode.
+ */
+typedef struct {
+ netxen_crbword_t
+ gmiimode:1, /* 1:GMII mode, 0:xmit clk taken from SERDES */
+ rsvd:29;
+} netxen_niu_gb_gmii_mode_t;
+
+/*
+ * NIU GB MII Mode Register (applies to GB0, GB1, GB2, GB3)
+ * To change the mode, turn off the existing mode, then turn on the new mode.
+ */
+typedef struct {
+ netxen_crbword_t
+ miimode:1, /* 1:MII mode, 0:xmit clk provided to SERDES */
+ rsvd:29;
+} netxen_niu_gb_mii_mode_t;
+
+/*
+ * NIU GB Station Address High Register
+ * NOTE: this value is in network byte order.
+ */
+typedef struct {
+ netxen_crbword_t
+ address:32; /* station address [47:16] */
+} netxen_niu_gb_station_address_high_t;
+
+/*
+ * NIU GB Station Address Low Register
+ * NOTE: this value is in network byte order.
+ */
+typedef struct {
+ netxen_crbword_t
+ rsvd:16,
+ address:16; /* station address [15:0] */
+} netxen_niu_gb_station_address_low_t;
+
+/*
+ * NIU GB MII Mgmt Config Register (applies to GB0, GB1, GB2, GB3)
+ */
+typedef struct {
+ netxen_crbword_t
+ clockselect:3, /* 0:clk/4, 1:clk/4, 2:clk/6, 3:clk/8 */
+ /* 4:clk/10, 5:clk/14, 6:clk/20, 7:clk/28 */
+ rsvd1:1,
+ nopreamble:1, /* 1:suppress preamble generation, 0:normal */
+ scanauto:1, /* ???? */
+ rsvd2:25,
+ reset:1; /* 1:reset MII mgmt, 0:no-op */
+} netxen_niu_gb_mii_mgmt_config_t;
+
+/*
+ * NIU GB MII Mgmt Command Register (applies to GB0, GB1, GB2, GB3)
+ */
+typedef struct {
+ netxen_crbword_t
+ read_cycle:1, /* 1:perform single read cycle, 0:no-op */
+ scan_cycle:1, /* 1:perform continuous read cycles, 0:no-op */
+ rsvd:30;
+} netxen_niu_gb_mii_mgmt_command_t;
+
+/*
+ * NIU GB MII Mgmt Address Register (applies to GB0, GB1, GB2, GB3)
+ */
+typedef struct {
+ netxen_crbword_t
+ reg_addr:5, /* which mgmt register we want to talk to */
+ rsvd1:3,
+ phy_addr:5, /* which PHY to talk to (0 is reserved) */
+ rsvd:19;
+} netxen_niu_gb_mii_mgmt_address_t;
+
+/*
+ * NIU GB MII Mgmt Control Register (applies to GB0, GB1, GB2, GB3)
+ * Write-only register.
+ */
+typedef struct {
+ netxen_crbword_t
+ data:16, /* do MII mgmt write cycle with this data */
+ rsvd:16;
+} netxen_niu_gb_mii_mgmt_control_t;
+
+/*
+ * NIU GB MII Mgmt Status Register (applies to GB0, GB1, GB2, GB3)
+ * Read-only register.
+ */
+typedef struct {
+ netxen_crbword_t
+ data:16, /* after MII mgmt read cycle, here's the data */
+ rsvd:16;
+} netxen_niu_gb_mii_mgmt_status_t;
+
+/*
+ * NIU GB MII Mgmt Indicators Register (applies to GB0, GB1, GB2, GB3)
+ * Read-only register.
+ */
+typedef struct {
+ netxen_crbword_t
+ busy:1, /* 1:performing an MII mgmt cycle, 0:idle */
+ scanning:1, /* 1:scan operation in progress, 0:idle */
+ notvalid:1, /* 1:mgmt result data not yet valid, 0:idle */
+ rsvd:29;
+} netxen_niu_gb_mii_mgmt_indicators_t;
+
+/*
+ * PHY-Specific MII control/status registers.
+ */
+typedef enum {
+ NetXen_NIU_GB_MII_MGMT_ADDR_CONTROL = 0,
+ NetXen_NIU_GB_MII_MGMT_ADDR_STATUS = 1,
+ NetXen_NIU_GB_MII_MGMT_ADDR_PHY_ID_0 = 2,
+ NetXen_NIU_GB_MII_MGMT_ADDR_PHY_ID_1 = 3,
+ NetXen_NIU_GB_MII_MGMT_ADDR_AUTONEG = 4,
+ NetXen_NIU_GB_MII_MGMT_ADDR_LNKPART = 5,
+ NetXen_NIU_GB_MII_MGMT_ADDR_AUTONEG_MORE = 6,
+ NetXen_NIU_GB_MII_MGMT_ADDR_NEXTPAGE_XMIT = 7,
+ NetXen_NIU_GB_MII_MGMT_ADDR_LNKPART_NEXTPAGE = 8,
+ NetXen_NIU_GB_MII_MGMT_ADDR_1000BT_CONTROL = 9,
+ NetXen_NIU_GB_MII_MGMT_ADDR_1000BT_STATUS = 10,
+ NetXen_NIU_GB_MII_MGMT_ADDR_EXTENDED_STATUS = 15,
+ NetXen_NIU_GB_MII_MGMT_ADDR_PHY_CONTROL = 16,
+ NetXen_NIU_GB_MII_MGMT_ADDR_PHY_STATUS = 17,
+ NetXen_NIU_GB_MII_MGMT_ADDR_INT_ENABLE = 18,
+ NetXen_NIU_GB_MII_MGMT_ADDR_INT_STATUS = 19,
+ NetXen_NIU_GB_MII_MGMT_ADDR_PHY_CONTROL_MORE = 20,
+ NetXen_NIU_GB_MII_MGMT_ADDR_RECV_ERROR_COUNT = 21,
+ NetXen_NIU_GB_MII_MGMT_ADDR_LED_CONTROL = 24,
+ NetXen_NIU_GB_MII_MGMT_ADDR_LED_OVERRIDE = 25,
+ NetXen_NIU_GB_MII_MGMT_ADDR_PHY_CONTROL_MORE_YET = 26,
+ NetXen_NIU_GB_MII_MGMT_ADDR_PHY_STATUS_MORE = 27
+} netxen_niu_phy_register_t;
+
+/*
+ * PHY-Specific Status Register (reg 17).
+ */
+typedef struct {
+ netxen_crbword_t
+ jabber:1, /* 1:jabber detected, 0:not */
+ polarity:1, /* 1:polarity reversed, 0:normal */
+ recvpause:1, /* 1:receive pause enabled, 0:disabled */
+ xmitpause:1, /* 1:transmit pause enabled, 0:disabled */
+ energydetect:1, /* 1:sleep, 0:active */
+ downshift:1, /* 1:downshift, 0:no downshift */
+ crossover:1, /* 1:MDIX (crossover), 0:MDI (no crossover) */
+ cablelen:3, /* not valid in 10Mb/s mode */
+ /* 0:<50m, 1:50-80m, 2:80-110m, 3:110-140m, 4:>140m */
+ link:1, /* 1:link up, 0:link down */
+ resolved:1, /* 1:speed and duplex resolved, 0:not yet */
+ pagercvd:1, /* 1:page received, 0:page not received */
+ duplex:1, /* 1:full duplex, 0:half duplex */
+ speed:2, /* 0:10Mb/s, 1:100Mb/s, 2:1000Mb/s, 3:rsvd */
+ rsvd:16;
+} netxen_niu_phy_status_t;
+
+/*
+ * Interrupt Register definition
+ * This definition applies to registers 18 and 19 (int enable and int status).
+ */
+typedef struct {
+ netxen_crbword_t
+ jabber:1,
+ polarity_changed:1,
+ reserved:2,
+ energy_detect:1,
+ downshift:1,
+ mdi_xover_changed:1,
+ fifo_over_underflow:1,
+ false_carrier:1,
+ symbol_error:1,
+ link_status_changed:1,
+ autoneg_completed:1,
+ page_received:1,
+ duplex_changed:1,
+ speed_changed:1,
+ autoneg_error:1,
+ rsvd:16;
+} netxen_niu_phy_interrupt_t;
+
+/*
+ * NIU Mode Register.
+ */
+typedef struct {
+ netxen_crbword_t
+ enable_fc:1, /* enable FibreChannel */
+ enable_ge:1, /* enable 10/100/1000 Ethernet */
+ enable_xgb:1, /* enable 10Gb Ethernet */
+ rsvd:29;
+} netxen_niu_control_t;
+
+/* Promiscous mode options (GbE mode only) */
+typedef enum {
+ NetXen_NIU_PROMISCOUS_MODE = 0,
+ NetXen_NIU_NON_PROMISCOUS_MODE
+} netxen_niu_prom_mode_t;
+
+/*
+ * NIU GB Drop CRC Register
+ */
+typedef struct {
+ netxen_crbword_t
+ drop_gb0:1, /* 1:drop pkts with bad CRCs, 0:pass them on */
+ drop_gb1:1, /* 1:drop pkts with bad CRCs, 0:pass them on */
+ drop_gb2:1, /* 1:drop pkts with bad CRCs, 0:pass them on */
+ drop_gb3:1, /* 1:drop pkts with bad CRCs, 0:pass them on */
+ rsvd:28;
+} netxen_niu_gb_drop_crc_t;
+
+/*
+ * NIU XG MAC Config Register
+ */
+typedef struct {
+ netxen_crbword_t
+ tx_enable:1, /* 1:enable frame xmit, 0:disable */
+ rsvd1:1,
+ rx_enable:1, /* 1:enable frame recv, 0:disable */
+ rsvd2:1,
+ soft_reset:1, /* 1:reset the MAC , 0:no-op */
+ rsvd3:22,
+ xaui_framer_reset:1,
+ xaui_rx_reset:1,
+ xaui_tx_reset:1,
+ xg_ingress_afifo_reset:1,
+ xg_egress_afifo_reset:1;
+} netxen_niu_xg_mac_config_0_t;
+
+/* Generic init routine (used for FPGA, superceded by port enables below) */
+void netxen_niu_init(int test);
+
+/* Set promiscuous mode for a GbE interface */
+native_t netxen_niu_set_promiscuous_mode(native_t port, netxen_niu_prom_mode_t
mode);
+native_t netxen_niu_xg_set_promiscuous_mode(native_t port,
netxen_niu_prom_mode_t mode);
+
+/* get/set the MAC address for a given MAC */
+int netxen_niu_macaddr_get(int port, netxen_ethernet_macaddr_t *addr);
+int netxen_niu_macaddr_set(int port, netxen_ethernet_macaddr_t addr);
+
+/* XG versons */
+int netxen_niu_xg_macaddr_get(int port, netxen_ethernet_macaddr_t *addr);
+int netxen_niu_xg_macaddr_set(int port, netxen_ethernet_macaddr_t addr);
+
+/* Generic enable for GbE ports. Will detect the speed of the link. */
+long netxen_niu_gbe_init_port(long port);
+
+/* Disable a GbE interface */
+native_t netxen_niu_disable_gbe_port(native_t port);
+
+native_t netxen_niu_disable_xg_port(native_t port);
+
+#define NetXen_NIU_PHY_WAITLEN 200000 /* 200ms delay in each loop */
+#define NetXen_NIU_PHY_WAITMAX 50 /* 10 seconds before we give up */
+#define NetXen_NIU_MAX_GBE_PORTS 4
+
+#define NetXen_NIU_MODE (NetXen_CRB_NIU + 0x00000)
+
+#define NetXen_NIU_XG_SINGLE_TERM (NetXen_CRB_NIU + 0x00004)
+#define NetXen_NIU_XG_DRIVE_HI (NetXen_CRB_NIU + 0x00008)
+#define NetXen_NIU_XG_DRIVE_LO (NetXen_CRB_NIU + 0x0000c)
+#define NetXen_NIU_XG_DTX (NetXen_CRB_NIU + 0x00010)
+#define NetXen_NIU_XG_DEQ (NetXen_CRB_NIU + 0x00014)
+#define NetXen_NIU_XG_WORD_ALIGN (NetXen_CRB_NIU + 0x00018)
+#define NetXen_NIU_XG_RESET (NetXen_CRB_NIU + 0x0001c)
+#define NetXen_NIU_XG_POWER_DOWN (NetXen_CRB_NIU + 0x00020)
+#define NetXen_NIU_XG_RESET_PLL (NetXen_CRB_NIU + 0x00024)
+#define NetXen_NIU_XG_SERDES_LOOPBACK (NetXen_CRB_NIU + 0x00028)
+#define NetXen_NIU_XG_DO_BYTE_ALIGN (NetXen_CRB_NIU + 0x0002c)
+#define NetXen_NIU_XG_TX_ENABLE (NetXen_CRB_NIU + 0x00030)
+#define NetXen_NIU_XG_RX_ENABLE (NetXen_CRB_NIU + 0x00034)
+#define NetXen_NIU_XG_STATUS (NetXen_CRB_NIU + 0x00038)
+#define NetXen_NIU_XG_PAUSE_THRESHOLD (NetXen_CRB_NIU + 0x0003c)
+#define NetXen_NIU_INT_MASK (NetXen_CRB_NIU + 0x00040)
+#define NetXen_NIU_ACTIVE_INT (NetXen_CRB_NIU + 0x00044)
+#define NetXen_NIU_MASKABLE_INT (NetXen_CRB_NIU + 0x00048)
+
+#define NetXen_NIU_STRAP_VALUE_SAVE_HIGHER (NetXen_CRB_NIU + 0x0004c)
+
+#define NetXen_NIU_GB_SERDES_RESET (NetXen_CRB_NIU + 0x00050)
+#define NetXen_NIU_GB0_GMII_MODE (NetXen_CRB_NIU + 0x00054)
+#define NetXen_NIU_GB0_MII_MODE (NetXen_CRB_NIU + 0x00058)
+#define NetXen_NIU_GB1_GMII_MODE (NetXen_CRB_NIU + 0x0005c)
+#define NetXen_NIU_GB1_MII_MODE (NetXen_CRB_NIU + 0x00060)
+#define NetXen_NIU_GB2_GMII_MODE (NetXen_CRB_NIU + 0x00064)
+#define NetXen_NIU_GB2_MII_MODE (NetXen_CRB_NIU + 0x00068)
+#define NetXen_NIU_GB3_GMII_MODE (NetXen_CRB_NIU + 0x0006c)
+#define NetXen_NIU_GB3_MII_MODE (NetXen_CRB_NIU + 0x00070)
+#define NetXen_NIU_REMOTE_LOOPBACK (NetXen_CRB_NIU + 0x00074)
+#define NetXen_NIU_GB0_HALF_DUPLEX (NetXen_CRB_NIU + 0x00078)
+#define NetXen_NIU_GB1_HALF_DUPLEX (NetXen_CRB_NIU + 0x0007c)
+#define NetXen_NIU_RESET_SYS_FIFOS (NetXen_CRB_NIU + 0x00088)
+#define NetXen_NIU_GB_CRC_DROP (NetXen_CRB_NIU + 0x0008c)
+#define NetXen_NIU_GB_DROP_WRONGADDR (NetXen_CRB_NIU + 0x00090)
+#define NetXen_NIU_TEST_MUX_CTL (NetXen_CRB_NIU + 0x00094)
+#define NetXen_NIU_XG_PAUSE_CTL (NetXen_CRB_NIU + 0x00098)
+#define NetXen_NIU_XG_PAUSE_LEVEL (NetXen_CRB_NIU + 0x000dc)
+#define NetXen_NIU_XG_SEL (NetXen_CRB_NIU + 0x00128)
+
+#define NetXen_NIU_FC_RX_STATUS(I) (NetXen_CRB_NIU + 0x10000 +
(I)*0x10000)
+#define NetXen_NIU_FC_RX_COMMA_DETECT(I) (NetXen_CRB_NIU + 0x10004 +
(I)*0x10000)
+#define NetXen_NIU_FC_LASER_UNSAFE(I) (NetXen_CRB_NIU + 0x10008 +
(I)*0x10000)
+#define NetXen_NIU_FC_TX_CONTROL(I) (NetXen_CRB_NIU + 0x1000c +
(I)*0x10000)
+#define NetXen_NIU_FC_ON_OFFLINE_CTL(I) (NetXen_CRB_NIU + 0x10010 +
(I)*0x10000)
+#define NetXen_NIU_FC_PORT_ACTIVE_STAT(I) (NetXen_CRB_NIU + 0x10014 +
(I)*0x10000)
+#define NetXen_NIU_FC_PORT_INACTIVE_STAT(I)(NetXen_CRB_NIU + 0x10018 +
(I)*0x10000)
+#define NetXen_NIU_FC_LINK_FAILURE_CNT(I) (NetXen_CRB_NIU + 0x1001c +
(I)*0x10000)
+#define NetXen_NIU_FC_LOSS_SYNC_CNT(I) (NetXen_CRB_NIU + 0x10020 +
(I)*0x10000)
+#define NetXen_NIU_FC_LOSS_SIGNAL_CNT(I) (NetXen_CRB_NIU + 0x10024 +
(I)*0x10000)
+#define NetXen_NIU_FC_PRIM_SEQ_ERR_CNT(I) (NetXen_CRB_NIU + 0x10028 +
(I)*0x10000)
+#define NetXen_NIU_FC_INVLD_TX_WORD_CNT(I) (NetXen_CRB_NIU + 0x1002c +
(I)*0x10000)
+#define NetXen_NIU_FC_INVLD_CRC_CNT(I) (NetXen_CRB_NIU + 0x10030 +
(I)*0x10000)
+#define NetXen_NIU_FC_RX_CELL_CNT(I) (NetXen_CRB_NIU + 0x10034 +
(I)*0x10000)
+#define NetXen_NIU_FC_TX_CELL_CNT(I) (NetXen_CRB_NIU + 0x10038 +
(I)*0x10000)
+#define NetXen_NIU_FC_B2B_CREDIT(I) (NetXen_CRB_NIU + 0x1003c +
(I)*0x10000)
+#define NetXen_NIU_FC_LOGIN_DONE(I) (NetXen_CRB_NIU + 0x10040 +
(I)*0x10000)
+#define NetXen_NIU_FC_OPERATING_SPEED(I) (NetXen_CRB_NIU + 0x10044 +
(I)*0x10000)
+
+#define NetXen_NIU_GB_MAC_CONFIG_0(I) (NetXen_CRB_NIU + 0x30000 +
(I)*0x10000)
+#define NetXen_NIU_GB_MAC_CONFIG_1(I) (NetXen_CRB_NIU + 0x30004 +
(I)*0x10000)
+#define NetXen_NIU_GB_MAC_IPG_IFG(I) (NetXen_CRB_NIU + 0x30008 +
(I)*0x10000)
+#define NetXen_NIU_GB_HALF_DUPLEX_CTRL(I) (NetXen_CRB_NIU + 0x3000c +
(I)*0x10000)
+#define NetXen_NIU_GB_MAX_FRAME_SIZE(I) (NetXen_CRB_NIU + 0x30010 +
(I)*0x10000)
+#define NetXen_NIU_GB_TEST_REG(I) (NetXen_CRB_NIU + 0x3001c +
(I)*0x10000)
+#define NetXen_NIU_GB_MII_MGMT_CONFIG(I) (NetXen_CRB_NIU + 0x30020 +
(I)*0x10000)
+#define NetXen_NIU_GB_MII_MGMT_COMMAND(I) (NetXen_CRB_NIU + 0x30024 +
(I)*0x10000)
+#define NetXen_NIU_GB_MII_MGMT_ADDR(I) (NetXen_CRB_NIU + 0x30028 +
(I)*0x10000)
+#define NetXen_NIU_GB_MII_MGMT_CTRL(I) (NetXen_CRB_NIU + 0x3002c +
(I)*0x10000)
+#define NetXen_NIU_GB_MII_MGMT_STATUS(I) (NetXen_CRB_NIU + 0x30030 +
(I)*0x10000)
+#define NetXen_NIU_GB_MII_MGMT_INDICATE(I) (NetXen_CRB_NIU + 0x30034 +
(I)*0x10000)
+#define NetXen_NIU_GB_INTERFACE_CTRL(I) (NetXen_CRB_NIU + 0x30038 +
(I)*0x10000)
+#define NetXen_NIU_GB_INTERFACE_STATUS(I) (NetXen_CRB_NIU + 0x3003c +
(I)*0x10000)
+#define NetXen_NIU_GB_STATION_ADDR_0(I) (NetXen_CRB_NIU + 0x30040 +
(I)*0x10000)
+#define NetXen_NIU_GB_STATION_ADDR_1(I) (NetXen_CRB_NIU + 0x30044 +
(I)*0x10000)
+
+
+#define NetXen_NIU_XGE_CONFIG_0 (NetXen_CRB_NIU + 0x70000)
+#define NetXen_NIU_XGE_CONFIG_1 (NetXen_CRB_NIU + 0x70004)
+#define NetXen_NIU_XGE_IPG (NetXen_CRB_NIU + 0x70008)
+#define NetXen_NIU_XGE_STATION_ADDR_0_HI (NetXen_CRB_NIU + 0x7000c)
+#define NetXen_NIU_XGE_STATION_ADDR_0_1 (NetXen_CRB_NIU + 0x70010)
+#define NetXen_NIU_XGE_STATION_ADDR_1_LO (NetXen_CRB_NIU + 0x70014)
+#define NetXen_NIU_XGE_STATUS (NetXen_CRB_NIU + 0x70018)
+#define NetXen_NIU_XGE_MAX_FRAME_SIZE (NetXen_CRB_NIU + 0x7001c)
+#define NetXen_NIU_XGE_PAUSE_FRAME_VALUE (NetXen_CRB_NIU + 0x70020)
+#define NetXen_NIU_XGE_TX_BYTE_CNT (NetXen_CRB_NIU + 0x70024)
+#define NetXen_NIU_XGE_TX_FRAME_CNT (NetXen_CRB_NIU + 0x70028)
+#define NetXen_NIU_XGE_RX_BYTE_CNT (NetXen_CRB_NIU + 0x7002c)
+#define NetXen_NIU_XGE_RX_FRAME_CNT (NetXen_CRB_NIU + 0x70030)
+#define NetXen_NIU_XGE_AGGR_ERROR_CNT (NetXen_CRB_NIU + 0x70034)
+#define NetXen_NIU_XGE_MULTICAST_FRAME_CNT (NetXen_CRB_NIU + 0x70038)
+#define NetXen_NIU_XGE_UNICAST_FRAME_CNT (NetXen_CRB_NIU + 0x7003c)
+#define NetXen_NIU_XGE_CRC_ERROR_CNT (NetXen_CRB_NIU + 0x70040)
+#define NetXen_NIU_XGE_OVERSIZE_FRAME_ERR (NetXen_CRB_NIU + 0x70044)
+#define NetXen_NIU_XGE_UNDERSIZE_FRAME_ERR (NetXen_CRB_NIU + 0x70048)
+#define NetXen_NIU_XGE_LOCAL_ERROR_CNT (NetXen_CRB_NIU + 0x7004c)
+#define NetXen_NIU_XGE_REMOTE_ERROR_CNT (NetXen_CRB_NIU + 0x70050)
+#define NetXen_NIU_XGE_CONTROL_CHAR_CNT (NetXen_CRB_NIU + 0x70054)
+#define NetXen_NIU_XGE_PAUSE_FRAME_CNT (NetXen_CRB_NIU + 0x70058)
+
+/* XG Link status */
+#define XG_LINK_UP 0x10
+#define XG_LINK_DOWN 0x20
+
+#define NetXen_CAM_RAM_BASE (NetXen_CRB_CAM + 0x02000)
+#define NetXen_CAM_RAM(reg) (NetXen_CAM_RAM_BASE + (reg))
+#define NetXen_FW_VERSION_MAJOR (NetXen_CAM_RAM(0x150))
+#define NetXen_FW_VERSION_MINOR (NetXen_CAM_RAM(0x154))
+#define NetXen_FW_VERSION_SUB (NetXen_CAM_RAM(0x158))
+
+/*
+ * CRB window register.
+ */
+typedef struct {
+ netxen_crbword_t rsvd1:25,
+ addrbit:1, /* bit 25 of CRB address */
+ rsvd2:6;
+} netxen_pcix_crb_window_t;
+
+#define PCIX_PS_OP_ADDR_LO (0x10000) /* Used for PS PCI Memory access */
+#define PCIX_PS_OP_ADDR_HI (0x10004) /* via CRB (PS side only) */
+
+#define PCIX_INT_VECTOR (0x10100)
+#define PCIX_INT_MASK (0x10104)
+
+#define PCIX_MN_WINDOW (0x10200)
+#define PCIX_MS_WINDOW (0x10204)
+#define PCIX_SN_WINDOW (0x10208)
+#define PCIX_CRB_WINDOW (0x10210)
+
+#define PCIX_TARGET_STATUS (0x10118)
+#define PCIX_TARGET_MASK (0x10128)
+
+#define PCIX_MSI_F0 (0x13000)
+
+#define PCIX_PS_MEM_SPACE (0x90000)
+
+#define NetXen_PCIX_PH_REG(reg) (NetXen_CRB_PCIE + (reg))
+#define NetXen_PCIX_PS_REG(reg) (NetXen_CRB_PCIX_MD + (reg))
+
+#define NetXen_PCIE_REG(reg) (NetXen_CRB_PCIE + (reg))
+
+#define PCIE_IMBUS_CONTROL (0x101b8)
+#define PCIE_MAX_DMA_XFER_SIZE (0x1404c)
+
+#define PCIE_DCR 0x00d8
+
+#define PCIE_TGT_SPLIT_CHICKEN (0x12080)
+
+#define PCIE_MAX_MASTER_SPLIT (0x14048)
+
+#endif /* __NetXen_INC_H */
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html