⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dp83815.h

📁 linux下的DP83815网卡驱动源码
💻 H
📖 第 1 页 / 共 3 页
字号:

/* dp83815.h -National DP83815 Ethernet Controller Interface */
/* This is the Rev 3 of the driver and the changes for the Rev C of DP83815 
 * have been included */ 

#ifndef __DP83815_H__
#define __DP83815_H__

#ifdef __KERNEL__
#include <linux/types.h>
#endif

#define DP_DEV_NAME        "National DP83815 Fast Ethernet PCI Adapter"
#define DP_DRV_NAME        "dp83815"

/* PCI Confiugration Registers */

#undef  PCI_VENDOR_ID_NS_83815
#define PCI_VENDOR_ID_NS_83815  0x0020 /* DP83815 */

#define	DP83815_PCI_IO_SIZE		256

/*
 * Operational Registers:
 * These registers mapped either into PCI memory space or I/O space.
 */

/* MAC/BIU Registers */

#define DP_CR               0x00 /* Command Register */
#define DP_CFG              0x04 /* Configuration Register */
#define DP_MEAR             0x08 /* EEPROM Access Register */
#define DP_PTSCR            0x0C /* PCI Test Control Register */
#define DP_ISR              0x10 /* Intr Status Register */
#define DP_IMR              0x14 /* Intr Mask Register */
#define DP_IER              0x18 /* Intr Enable Register */
#define DP_TXDP             0x20 /* Tx Descriptor Pointer Register */
#define DP_TXCFG            0x24 /* Tx Configuration Register */
#define DP_RXDP             0x30 /* Rx Descriptor Pointer Register */
#define DP_RXCFG            0x34 /* Rx Configuration Register */
#define DP_CCSR             0x3C /* CLKRUN control/Status Register */
#define DP_WCSR             0x40 /* Wake on LAN Control/Status Register */
#define DP_PCR              0x44 /* Pause Control/Status Register */
#define DP_RFCR             0x48 /* Rx Filter/Match Control Register */
#define DP_RFDR             0x4C /* Rx Filter/Match Data Register */
#define DP_BRAR             0x50 /* Boot ROM Address */
#define DP_BRDR             0x54 /* Boot ROM Data */
#define DP_SRR              0x58 /* Silicon Revision Register (RO) */
#define DP_MIBC             0x5C /* MIB Control Registor */
#define DP_MIB              0x60 /* MIB Data Register Base (RO) */

/* MIB Registers */

#define DP_MIB_RX_PKT_ERR   0x60 /* Pkts recvd with errors */
#define DP_MIB_RX_FCS_ERR   0x64 /* Pkts recvd with frame check seq errs */
#define DP_MIB_RX_MISS_PKT  0x68 /* Pkts missed due to FIFO  overruns*/
#define DP_MIB_RX_FA_ERR    0x6C /* Pkts recvd with frame alignment errs */
#define DP_MIB_RX_SYM_ERR   0x70 /* Pkts recvd with symbol errs */
#define DP_MIB_RX_LONG_FRM  0x74 /* Pkts > 1518 bytes */
#define DP_MIB_TXSQE_ERR    0x78 /* Loss of coll. heartbeat on Tx */

/* Internal Phy Registers */

#define DP_BMCR             0x80 /* Basic Mode Control Register */
#define DP_BMSR             0x84 /* Basic Mode Status Register (RO) */
#define DP_PHYIDR1          0x88 /* PHY Identifier Register #1 (RO) */
#define DP_PHYIDR2          0x8C /* PHY Identifier Register #2 (RO) */
#define DP_ANAR             0x90 /* Auto-Nego Advertisment Reg */
#define DP_ANLPAR           0x94 /* Auto-Nego Link Partner Ability Reg */
#define DP_ANER             0x98 /* Auto-Negotiation Expansion Reg */
#define DP_ANNPTR           0x9C /* Auto-Negotiation Next Page TX */
#define DP_PHYSTS           0xC0 /* PHY Status Register (RO) */
#define DP_PHYMICR	0xC4
#define DP_PHYMISR	    0xC8
#define DP_FCSCR            0xD0 /* False Carrier Sense Counter Reg */
#define DP_RECR             0xD4 /* Recv Error Counter Register */  
#define DP_PHYCR            0xE4 /* PHY Control Register */  
#define DP_10BTSCR          0xE8 /* 10Base-TStatus/Control Reg */ 

#define DP_MICR             0xC4 /* MII Interrupt controller */

#define DP_MICR_PHY_INT     0x4002
/* New Phy registers and their bit mask values for Rev 3 */    

#define DP_PHY_PAGE        0xCC /* */
#define	DP_PHY_DSPTST	   0xEC
#define DP_PHY_EXTCFG      0xF0 /*2000*/     
#define DP_PHY_DSPCFG      0xF4 /* */
#define DP_PHY_SDCFG       0xF8 /* */
#define DP_PHY_TDATA       0xFC /* */

#define DP_PHY_PAGE_VAL        (u16)0x0001 /* */
#define DP_PHY_DSPCFG_VAL      (u16)0x5040 /* Load/Kill C2 */
#define DP_PHY_SDCFG_VAL       (u16)0x008C /* Raise SD off, from 4 to C */
#define DP_PHY_TDATA_VAL       (u16)0x0000 /* Set value for C2 */
#define DP_PHYCR_PMDCSR_VAL    (u16)0x189C /* DC Speed = 01 */

/*
 * Command Register Bit Masks (DP_CR)
 *
 * This register is used for issuing commands to DP83815. A global software
 * reset along with individual reset and enable/disable switches for
 * transmitter and receiver are provided here.
 */

#define DP_CR_TXE           0x00000001 /* Transmit Enable */
#define DP_CR_TXD           0x00000002 /* Transmit Disable */
#define DP_CR_RXE           0x00000004 /* Receiver Enable */
#define DP_CR_RXD           0x00000008 /* Receiver Disable */
#define DP_CR_TXR           0x00000010 /* Transmit Reset */
#define DP_CR_RXR           0x00000020 /* Receiver Reset */
#define DP_CR_SWI           0x00000080 /* Software Interrupt */
#define DP_CR_RST           0x00000100 /* Reset */

/*
 * Configuration and Media Status Register Bit Masks (DP_CFG)
 *
 * This register allows configuration of a various device and phy options,
 * and provide phy status information.
 */

#define DP_CFG_BEM              (u32)0x00000001 /* Big Endian Mode (BM xfers) */
#define DP_CFG_BROM_DIS         (u32)0x00000004 /* Disable Boot ROM interface */
#define DP_CFG_PESEL            (u32)0x00000008 /* Parity Err Det (BM xfer) */
#define DP_CFG_EXD              (u32)0x00000010 /* Excessv Deferl Tmr disbl */ 
#define DP_CFG_POW              (u32)0x00000020 /* Prog Out of Window Timer */
#define DP_CFG_SB               (u32)0x00000040 /* Single Back-off */
#define DP_CFG_REQALG           (u32)0x00000080 /* PCI Bus Request Algorithm */
#define DP_CFG_EUPHCOMP         (u32)0x00000100 /* DP83810 Descriptor Compat */ 
#define DP_CFG_PHY_DIS          (u32)0x00000200 /* Disable internal Phy */
#define DP_CFG_PHY_RST          (u32)0x00000400 /* Reset internal Phy */
#define DP_CFG_ANEG_SEL         (u32)0x0000E000 /* Auto-nego Sel - Mask */
#define DP_CFG_ANEG_SEL_10_HD   (u32)0x00000000 /*  Force 10Mb Half duplex */
#define DP_CFG_ANEG_SEL_100_HD  (u32)0x00004000 /*  Force 100Mb Half duplex */
#define DP_CFG_ANEG_SEL_10_FD   (u32)0x00008000 /*  Force 10Mb Full duplex */
#define DP_CFG_ANEG_SEL_100_FD  (u32)0x0000C000 /*  Force 100Mb Full duplex */
#define DP_CFG_ANEG_SEL_10_XD   (u32)0x00002000 /*  Nego 10Mb Half/Full dplx */
#define DP_CFG_ANEG_SEL_ALL_HD  (u32)0x00006000 /*  Nego 10/100 Half duplex */
#define DP_CFG_ANEG_SEL_100_XD  (u32)0x0000A000 /*  Nego 100 Half/Full duplex */
#define DP_CFG_ANEG_SEL_ALL_XD  (u32)0x0000E000 /*  Nego 10/100 Half/Full dplx*/
#define DP_CFG_PAUSE_ADV        (u32)0x00010000 /* Strap for pause capable */
#define DP_CFG_PINT_ACEN        (u32)0x00020000 /* Phy Intr Auto Clr Enable */ 
#define DP_CFG_PHY_CFG          (u32)0x00FC0000 /* Phy Configuration */
#define DP_CFG_ANEG_DN          (u32)0x08000000 /* Auto-negotiation Done */
#define DP_CFG_POL              (u32)0x10000000 /* 10Mb Polarity Indication */
#define DP_CFG_FDUP             (u32)0x20000000 /* Full Duplex */
#define DP_CFG_SPEED100         (u32)0x40000000 /* Speed 100Mb */
#define DP_CFG_LNKSTS           (u32)0x80000000 /* Link status */

/*
 * EEPROM Access Register Bit Masks (DP_MEAR)
 *
 * Provides an interface for software access to the NMC9306 style EEPROM.  The
 * default values given assume that the EEDO line has a pullup resistor to
 * VDD.
 */

#define DP_MEAR_EEDI            (u32)0x00000001 /* EEPROM data in */
#define DP_MEAR_EEDO            (u32)0x00000002 /* EEPROM data out */
#define DP_MEAR_EECLK           (u32)0x00000004 /* EEPROM Serial Clock */
#define DP_MEAR_EESEL           (u32)0x00000008 /* EEPROM Chip Select */

/* PCI Test Control Register Bit Masks (DP_PTSCR) */

#define DP_PTSCR_EEBIST_FAIL    (u32)0x00000001 /* EE BIST Fail Indication */
#define DP_PTSCR_EEBIST_EN      (u32)0x00000002 /* Enable  EEPROM BIST */
#define DP_PTSCR_EELOAD_EN      (u32)0x00000004 /* Enable EEPROM Load */
#define DP_PTSCR_RBIST_RXFFAIL  (u32)0x00000008 /* RX Filter RAM BIST Fail */
#define DP_PTSCR_RBIST_TXFAIL   (u32)0x00000010 /* TX FiFO Fail */
#define DP_PTSCR_RBIST_RXFAIL   (u32)0x00000020 /* RX FIFO BIST Fail */
#define DP_PTSCR_RBIST_ACT      (u32)0x00000040 /* SRAM BIST Active*/
#define DP_PTSCR_RBIST_EN       (u32)0x00000080 /* SRAM BIST Enable */
#define DP_PTSCR_RBIST_MODE     (u32)0x00000100 /* SRAM BIST Mode */
#define DP_PTSCR_RBIST_CLKD     (u32)0x00000200 /* SRAM BIST Clock */
#define DP_PTSCR_RBIST_RST      (u32)0x00000400 /* SRAM BIST Reset */
#define DP_PTSCR_RESVD          (u32)0x00001000 /* Reserved -- Must be 1 */

/*
 * Interrupt Status Register Bit Masks (DP_ISR)
 *
 * Indicates the source of an interrupt when the INTA pin goes active.
 * Enabling the corresponding bit in the IMR allows bits in this reg to produce
 * an interrupt. ISR reflects all pending iterrupts regardless of the status
 * of the corresponding mask bit in the IMR.
 */

#define DP_ISR_RXOK             (u32)0x00000001 /* Rx OK */
#define DP_ISR_RXDESC           (u32)0x00000002 /* Rx Descriptor */
#define DP_ISR_RXERR            (u32)0x00000004 /* Rx packet Error */
#define DP_ISR_RXEARLY          (u32)0x00000008 /* Rx Early Threshold */
#define DP_ISR_RXIDLE           (u32)0x00000010 /* Rx Idle */
#define DP_ISR_RXORN            (u32)0x00000020 /* Rx Overrun */
#define DP_ISR_TXOK             (u32)0x00000040 /* Tx Packet OK */
#define DP_ISR_TXDESC           (u32)0x00000080 /* Tx Descriptor */
#define DP_ISR_TXERR            (u32)0x00000100 /* Tx Packet Error */
#define DP_ISR_TXIDLE           (u32)0x00000200 /* Tx Idle */
#define DP_ISR_TXURN            (u32)0x00000400 /* Tx Underrun */
#define DP_ISR_MIB              (u32)0x00000800 /* MIB Service */
#define DP_ISR_SWI              (u32)0x00001000 /* Software Interrupt */
#define DP_ISR_PME              (u32)0x00002000 /* Power Management Event */
#define DP_ISR_PHY              (u32)0x00004000 /* Phy Interrupt */
#define DP_ISR_HIBERR           (u32)0x00008000 /* High Bits error set */
#define DP_ISR_RXSOVR           (u32)0x00010000 /* Rx Status FIFO Overrun */
#define DP_ISR_RTABT            (u32)0x00100000 /* Recieved Target Abort */
#define DP_ISR_RMABT            (u32)0x00200000 /* Recieved Master Abort */
#define DP_ISR_SSERR            (u32)0x00400000 /* Signaled System Error */
#define DP_ISR_DPERR            (u32)0x00800000 /* Detected Parity Error */
#define DP_ISR_RXRCMP           (u32)0x01000000 /* Receive Reset Complete */
#define DP_ISR_TXRCMP           (u32)0x02000000 /* Transmit Reset Complete */

/*
 * Interrupt Mask Register Bit Masks (DP_IMR)
 *
 * Interrupts are enabled by setting the appropriate bit-mask.
 */

#define DP_IMR_RXOK              (u32)0x00000001 /* Rx ok */
#define DP_IMR_RXDESC            (u32)0x00000002 /* Rx Descriptor */
#define DP_IMR_RXERR             (u32)0x00000004 /* Rx packet Error */
#define DP_IMR_RXEARLY           (u32)0x00000008 /* Rx Early Threshold */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -