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

📄 dm9161ae.h

📁 关于DM9161E在SEP4020上的应用
💻 H
字号:


#ifndef DM9161AE_H
#define DM9161AE_H
#include "NUCLEUS.h"
typedef int  BOOLEAN;

#define RMII

#define DM9161AE_INIT_AUTO_NEG_RETRIES         3
#define DEF_OFF				0
#define DEF_ON				1
#define DEF_BIT_09			0x01<<9
#define DM9161AE_BMCR		0x00
#define DM9161AE_BMSR		0x01
#define DM9161AE_PHYID1		0x02
#define DM9161AE_PHYID2		0x03
#define DM9161AE_ANAR		0x04
#define DM9161AE_ANLPAR		0x05
#define DM9161AE_ANER		0x06

#define DM9161AE_DSCR		0x10
#define DM9161AE_DSCSR		0X11
#define DM9161AE_10BTCSR	0x12

#define DM9161AE_MDINTR		0x15
#define DM9161AE_RECR		0x16
#define DM9161AE_DISCR		0x17
#define DM9161AE_RLSR		0x18



                                                                /* Basic mode control register. */
#define BMCR_RESV                         0x007F                /* Unused...                   */
#define BMCR_CTST                         0x0080                /* Collision test              */
#define BMCR_FULLDPLX                     0x0100                /* Full duplex                 */
#define BMCR_ANRESTART                    0x0200                /* Auto negotiation restart    */
#define BMCR_ISOLATE                      0x0400                /* Disconnect DP83840 from MII */
#define BMCR_PDOWN                        0x0800                /* Powerdown the DP83840       */
#define BMCR_ANENABLE                     0x1000                /* Enable auto negotiation     */
#define BMCR_SPEED100                     0x2000                /* Select 100Mbps              */
#define BMCR_LOOPBACK                     0x4000                /* TXD loopback bits           */
#define BMCR_RESET                        0x8000                /* Reset the DP83840           */

                                                                /* Basic mode status register. */
#define BMSR_ERCAP                        0x0001                /* Ext-reg capability          */
#define BMSR_JCD                          0x0002                /* Jabber detected             */
#define BMSR_LSTATUS                      0x0004                /* Link status                 */
#define BMSR_ANEGCAPABLE                  0x0008                /* Able to do auto-negotiation */
#define BMSR_RFAULT                       0x0010                /* Remote fault detected       */
#define BMSR_ANEGCOMPLETE                 0x0020                /* Auto-negotiation complete   */
#define BMSR_RESV                         0x07C0                /* Unused...                   */
#define BMSR_10HALF                       0x0800                /* Can do 10mbps, half-duplex  */
#define BMSR_10FULL                       0x1000                /* Can do 10mbps, full-duplex  */
#define BMSR_100HALF                      0x2000                /* Can do 100mbps, half-duplex */
#define BMSR_100FULL                      0x4000                /* Can do 100mbps, full-duplex */
#define BMSR_100BASE4                     0x8000                /* Can do 100mbps, 4k packets  */

                                                                /* Advertisement control reg   */
#define ADVERTISE_SLCT                    0x001F                /* Selector bits               */
#define ADVERTISE_CSMA                    0x0001                /* Only selector supported     */
#define ADVERTISE_10HALF                  0x0020                /* Try for 10mbps half-duplex  */
#define ADVERTISE_10FULL                  0x0040                /* Try for 10mbps full-duplex  */
#define ADVERTISE_100HALF                 0x0080                /* Try for 100mbps half-duplex */
#define ADVERTISE_100FULL                 0x0100                /* Try for 100mbps full-duplex */
#define ADVERTISE_100BASE4                0x0200                /* Try for 100mbps 4k packets  */
#define ADVERTISE_RESV                    0x1C00                /* Unused...                   */
#define ADVERTISE_RFAULT                  0x2000                /* Say we can detect faults    */
#define ADVERTISE_LPACK                   0x4000                /* Ack link partners response  */
#define ADVERTISE_NPAGE                   0x8000                /* Next page bit               */

#define ADVERTISE_FULL (ADVERTISE_100FULL | ADVERTISE_10FULL | \
			ADVERTISE_CSMA)
#define ADVERTISE_ALL (ADVERTISE_10HALF | ADVERTISE_10FULL | \
                       ADVERTISE_100HALF | ADVERTISE_100FULL)

                                                                /* Link partner ability reg    */
#define LPA_SLCT                          0x001F                /* Same as advertise selector  */
#define LPA_10HALF                        0x0020                /* Can do 10mbps half-duplex   */
#define LPA_10FULL                        0x0040                /* Can do 10mbps full-duplex   */
#define LPA_100HALF                       0x0080                /* Can do 100mbps half-duplex  */
#define LPA_100FULL                       0x0100                /* Can do 100mbps full-duplex  */
#define LPA_100BASE4                      0x0200                /* Can do 100mbps 4k packets   */
#define LPA_RESV                          0x1C00                /* Unused...                   */
#define LPA_RFAULT                        0x2000                /* Link partner faulted        */
#define LPA_LPACK                         0x4000                /* Link partner acked us       */
#define LPA_NPAGE                         0x8000                /* Next page bit               */

#define LPA_DUPLEX		(LPA_10FULL | LPA_100FULL)
#define LPA_100			(LPA_100FULL | LPA_100HALF | LPA_100BASE4)

                                                                /* Expansion reg for auto-neg  */
#define EXPANSION_NWAY                    0x0001                /* Can do N-way auto-nego      */
#define EXPANSION_LCWP                    0x0002                /* Got new RX page code word   */
#define EXPANSION_ENABLENPAGE             0x0004                /* This enables npage words    */
#define EXPANSION_NPCAPABLE               0x0008                /* Link partner supports npage */
#define EXPANSION_MFAULTS                 0x0010                /* Multiple faults detected    */
#define EXPANSION_RESV                    0xFFE0                /* Unused...                   */

                                                                /* N-way test register         */
#define NWAYTEST_RESV1                    0x00FF                /* Unused...                   */
#define NWAYTEST_LOOPBACK                 0x0100                /* Enable loopback for N-way   */
#define NWAYTEST_RESV2                    0xFE00                /* Unused...                   */

#define SPD_10				                  10
#define SPD_100		                         100
                                                                 /* Duplex, half or full        */
#define DUPLEX_HALF				            0x00
#define DUPLEX_FULL				            0x01


#define MII_DM9161_ID                 0x0181b8a0                /* PHY ID                      */

#define AT91C_PHY_ADDR	                      31                /* PHY Address                 */

#define SPECIFIED_INTR_REG                    21                /* PHY Specified Interrupt Reg */

/*
*********************************************************************************************************
*                                   PHY ERROR CODES 12,000 -> 13,000
*********************************************************************************************************
*/

#define  NET_PHY_ERR_NONE                   0x2EE0
#define  NET_PHY_ERR_REGRD_TIMEOUT          0x2EEA
#define  NET_PHY_ERR_REGWR_TIMEOUT          0x2EF4
#define  NET_PHY_ERR_AUTONEG_TIMEOUT        0x2EFE


#define NET_PHY_SPD_0					-1
#define NET_PHY_SPD_10					0
#define NET_PHY_SPD_100					1

#define NET_PHY_DUPLEX_UNKNOWN			-1
#define NET_PHY_DUPLEX_HALF				0
#define NET_PHY_DUPLEX_FULL				1



/*
*********************************************************************************************************
*                                         FUNCTION PROTOTYPES
*********************************************************************************************************
*/

                                                                /* ------------------- STATUS FNCTS ------------------- */
BOOLEAN  NetNIC_PhyAutoNegState  ();           /* Get PHY auto-negotiation state                       */
BOOLEAN  NetNIC_PhyLinkState     ();           /* Get PHY link state                                   */

UINT32   NetPHY_GetLinkSpeed     ();           /* Get PHY link speed                                   */
UINT32   NetPHY_GetLinkDuplex    ();           /* Get PHY duplex mode                                  */

STATUS     NetNIC_PhyInit          ();           /* PHY initialization function                          */
STATUS   NetNIC_PhyAutoNeg       ();           /* Do link auto-negotiation                             */


/*
*********************************************************************************************************
*                                         FUNCTION PROTOTYPES
*                                    DEFINED IN PRODUCT'S  net_bsp.c
*********************************************************************************************************
*/

void         NetNIC_LinkUp           (void);                    /* Message from NIC that the ethernet link is up.       */
                                                                /* Called in interruption context most of the time.     */

void         NetNIC_LinkDown         (void);                    /* Message from NIC that the ethernet link is down.     */
                                                                /* Called in interruption context most of the time.     */



#endif

⌨️ 快捷键说明

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