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

📄 w90p910.h

📁 W90P910的BOOTLOADER,难找呀,我想应该是第一份吧.
💻 H
字号:
/******************************************************************************
 *
 * Copyright (c) 2008 Nuvoton Tech. Corp.
 * All rights reserved.
 *
 * $Workfile: w90p910.h $
 *
 * Created by : 
 ******************************************************************************/


#ifndef  _w90p910_h_
#define  _w90p910_h_

#include "cdefs.h"
#include "netbuf.h"


// ASIC Address Definition
#define VPint   *(UINT volatile *)
#define VPshort *(UINT16 volatile *)
#define VPchar  *(UCHAR volatile *)


#define Base_Addr 0xB0000000


// Advanced Interrupt Controller Registers
#define AIC_SCR_EMCTX (VPint(Base_Addr+0x08002040))
#define AIC_SCR_EMCRX (VPint(Base_Addr+0x08002044))
#define AIC_IRSR       (VPint(Base_Addr+0x08002100))
#define AIC_IASR       (VPint(Base_Addr+0x08002104))
#define AIC_ISR        (VPint(Base_Addr+0x08002108))
#define AIC_IPER       (VPint(Base_Addr+0x0800210c))
#define AIC_ISNR       (VPint(Base_Addr+0x08002110))
#define AIC_IMR        (VPint(Base_Addr+0x08002114))
#define AIC_OISR       (VPint(Base_Addr+0x08002118))
#define AIC_MECR       (VPint(Base_Addr+0x08002120))
#define AIC_MDCR       (VPint(Base_Addr+0x08002124))
#define AIC_SSCR       (VPint(Base_Addr+0x08002128))
#define AIC_SCCR       (VPint(Base_Addr+0x0800212c))
#define AIC_EOSCR      (VPint(Base_Addr+0x08002130))

// MAC Interrupt Sources
#define EMCTXINT 16
#define EMCRXINT 17


// Routines to Enable/Disable Interrupts
#define Enable_Int(n)     AIC_MECR = (1<<(n))
#define Disable_Int(n)    AIC_MDCR = (1<<(n))
#define Enable_Int_All()  AIC_MECR = 0xffff
#define Disable_Int_All() AIC_MDCR = 0xffff


/// EMC Control Registers
#define CAMCMR       (VPint(Base_Addr+0x3000))   /* CAM Command Register */
#define CAMEN        (VPint(Base_Addr+0x3004))   /* CAM Enable Register */
#define CAM0M_Base   Base_Addr+0x3008
#define CAM0L_Base   Base_Addr+0x300c
#define CAMxM_Reg(x) (VPint(CAM0M_Base+x*0x8))   /*  */
#define CAMxL_Reg(x) (VPint(CAM0L_Base+x*0x8))   /*  */

#define TXDLSA       (VPint(Base_Addr+0x3088))   /* Transmit Descriptor Link List Start Address Register */
#define RXDLSA       (VPint(Base_Addr+0x308C))   /* Receive Descriptor Link List Start Address Register */
#define MCMDR        (VPint(Base_Addr+0x3090))   /* MAC Command Register */
#define MIID         (VPint(Base_Addr+0x3094))   /* MII Management Data Register */
#define MIIDA        (VPint(Base_Addr+0x3098))   /* MII Management Control and Address Register */
#define FFTCR	     (VPint(Base_Addr+0x309C))   /* FIFO Threshold Control Register */
#define TSDR         (VPint(Base_Addr+0x30a0))   /* Transmit Start Demand Register */
#define RSDR         (VPint(Base_Addr+0x30a4))   /* Receive Start Demand Register */
#define DMARFC	     (VPint(Base_Addr+0x30a8))   /* Maximum Receive Frame Control Register */
#define MIEN         (VPint(Base_Addr+0x30ac))   /* MAC Interrupt Enable Register */

// EMC Status Registers
#define MISTA        (VPint(Base_Addr+0x30b0))   /* MAC Interrupt Status Register */
#define MGSTA        (VPint(Base_Addr+0x30b4))   /* MAC General Status Register */
#define MPCNT	     (VPint(Base_Addr+0x30b8))   /* Missed Packet Count Register */
#define MRPC         (VPint(Base_Addr+0x30bc))   /* MAC Receive Pause Count Register */
#define MRPCC        (VPint(Base_Addr+0x30c0))   /* MAC Receive Pause Current Count Register */
#define MREPC        (VPint(Base_Addr+0x30c4))   /* MAC Remote Pause Count Register */
#define DMARFS       (VPint(Base_Addr+0x30c8))   /* DMA Receive Frame Status Register */
#define CTXDSA       (VPint(Base_Addr+0x30cc))   /* Current Transmit Descriptor Start Address Register */
#define CTXBSA       (VPint(Base_Addr+0x30d0))   /* Current Transmit Buffer Start Address Register */
#define CRXDSA       (VPint(Base_Addr+0x30d4))   /* Current Receive Descriptor Start Address Register */
#define CRXBSA       (VPint(Base_Addr+0x30d8))   /* Current Receive Buffer Start Address Register */



// CAM Command Register(CAMCMR)
#define CAM_AUP  0x0001  // Accept Packets with Unicast Address
#define CAM_AMP  0x0002  // Accept Packets with Multicast Address
#define CAM_ABP  0x0004  // Accept Packets with Broadcast Address
#define CAM_CCAM 0x0008  // 0: Accept Packets CAM Recognizes and Reject Others
                         // 1: Reject Packets CAM Recognizes and Accept Others
#define CAM_ECMP 0x0010  // Enable CAM Compare


// MAC Interrupt Enable Register(MIEN)
#define EnRXINTR 0x00000001  // Enable Interrupt on Receive Interrupt
#define EnCRCE   0x00000002  // Enable CRC Error Interrupt
#define EnRXOV   0x00000004  // Enable Receive FIFO Overflow Interrupt
#define EnPTLE   0x00000008  // Enable Packet Too Long Interrupt
#define EnRXGD   0x00000010  // Enable Receive Good Interrupt
#define EnALIE   0x00000020  // Enable Alignment Error Interrupt
#define EnRP     0x00000040  // Enable Runt Packet on Receive Interrupt
#define EnMMP    0x00000080  // Enable More Missed Packets Interrupt
#define EnDFO    0x00000100  // Enable DMA receive frame over maximum size Interrupt
#define EnDEN    0x00000200  // Enable DMA early notification Interrupt
#define EnRDU    0x00000400  // Enable Receive Descriptor Unavailable Interrupt
#define EnRxBErr 0x00000800  // Enable Receive Bus ERROR interrupt
#define EnCFR    0x00004000  // Enable Control Frame Receive Interrupt
#define EnTXINTR 0x00010000  // Enable Interrupt on Transmit Interrupt
#define EnTXEMP  0x00020000  // Enable Transmit FIFO Empty Interrupt
#define EnTXCP   0x00040000  // Enable Transmit Completion Interrupt
#define EnEXDEF  0x00080000  // Enable Defer Interrupt
#define EnNCS    0x00100000  // Enable No Carrier Sense Interrupt
#define EnTXABT  0x00200000  // Enable Transmit Abort Interrupt
#define EnLC     0x00400000  // Enable Late Collision Interrupt
#define EnTDU    0x00800000  // Enable Transmit Descriptor Unavailable Interrupt
#define EnTxBErr 0x01000000  // Enable Transmit Bus ERROR Interrupt


// MAC Command Register(MCMDR)
#define MCMDR_RXON    0x00000001  // Receive ON
#define MCMDR_ALP     0x00000002  // Accept Long Packet
#define MCMDR_ARP     0x00000004  // Accept Runt Packet
#define MCMDR_ACP     0x00000008  // Accept Control Packet
#define MCMDR_AEP     0x00000010  // Accept Error Packet
#define MCMDR_SPCRC   0x00000020  // Accept Strip CRC Value
#define MCMDR_TXON    0x00000100  // Transmit On
#define MCMDR_NDEF    0x00000200  // No defer
#define MCMDR_SDPZ    0x00010000  // Send Pause
#define MCMDR_EnSQE   0x00020000  // Enable SQE test
#define MCMDR_FDUP    0x00040000  // Full Duplex
#define MCMDR_EnMDC   0x00080000  // Enable MDC signal
#define MCMDR_OPMOD   0x00100000  // Operation Mode
#define MCMDR_LBK     0x00200000  // Loop Back
#define MCMDR_SWR     0x01000000  // Software Reset


// MAC MII Management Data Control and Address Register(MIIDA)
#define MDCCR    0x00a00000  // MDC clock rating
//#define PHYAD    0x00000000  // PHY Address
#define PHYWR    0x00010000  // Write Operation
#define PHYBUSY  0x00020000  // Busy Bit
#define PHYPreSP 0x00040000  // Preamble Suppress

extern volatile unsigned int PHYAD; //added by cmn


// FIFO Threshold Adjustment Register(FIFOTHD)
#define TxTHD_1    0x00000100  // 1/4 Transmit FIFO Threshold
#define TxTHD_2    0x00000200  // 2/4 Transmit FIFO Threshold
#define TxTHD_3    0x00000300  // 3/4 Transmit FIFO Threshold
#define RxTHD_1    0x00000001  // 1/4 Receive FIFO Threshold
#define RxTHD_2    0x00000002  // 2/4 Receive FIFO Threshold
#define RxTHD_3    0x00000003  // 3/4 Receive FIFO Threshold
#define Blength_8  0x00100000  // DMA burst length 8 beats
#define Blength_12 0x00200000  // DMA burst length 12 beats
#define Blength_16 0x00300000  // DMA burst length 16 beats


// MAC Interrupt Status Register(MISTA)
#define MISTA_RXINTR 0x00000001  // Interrupt on Receive
#define MISTA_CRCE   0x00000002  // CRC Error
#define MISTA_RXOV   0x00000004  // Receive FIFO Overflow error
#define MISTA_PTLE   0x00000008  // Packet Too Long Error
#define MISTA_RXGD   0x00000010  // Receive Good
#define MISTA_ALIE   0x00000020  // Alignment Error
#define MISTA_RP     0x00000040  // Runt Packet
#define MISTA_MMP    0x00000080  // More Missed Packets than miss rolling over counter flag
#define MISTA_DFOI   0x00000100  // DMA receive frame over maximum size interrupt
#define MISTA_DENI   0x00000200  // DMA early notification interrupt
#define MISTA_RDU    0x00000400  // Receive Descriptor Unavailable interrupt
#define MISTA_RxBErr 0x00000800  // Receive Bus Error interrupt
#define MISTA_CFR    0x00004000  // Control Frame Receive
#define MISTA_TXINTR 0x00010000  // Interrupt on Transmit
#define MISTA_TXEMP  0x00020000  // Transmit FIFO Empty
#define MISTA_TXCP   0x00040000  // Transmit Completion
#define MISTA_EXDEF  0x00080000  // Defer
#define MISTA_NCS    0x00100000  // No Carrier Sense
#define MISTA_TXABT  0x00200000  // Transmit Abort
#define MISTA_LC     0x00400000  // Late Collision
#define MISTA_TDU    0x00800000  // Transmit Descriptor Unavailable interrupt
#define MISTA_TxBErr 0x01000000  // Transmit Bus Error interrupt


// MAC General Status Register(MGSTA)
#define MGSTA_CFR  0x00000001  // Control Frame Received
#define MGSTA_RXHA 0x00000002  // Reception Halted
#define MGSTA_RFFull 0x00000004 //RxFIFO is full 
#define MGSTA_DEF  0x00000010  // Deferred transmission
#define MGSTA_PAU  0x00000020  // Pause Bit
#define MGSTA_SQE  0x00000040  // Signal Quality Error
#define MGSTA_TXHA 0x00000080  // Transmission Halted


// PHY Register Description
#define PHY_CNTL_REG    0x00
#define PHY_STATUS_REG  0x01
#define PHY_ID1_REG     0x02
#define PHY_ID2_REG     0x03
#define PHY_ANA_REG     0x04
#define PHY_ANLPA_REG   0x05
#define PHY_ANE_REG     0x06

#define PHY_DSC_REG     0x10
#define PHY_DSCS_REG    0x11
#define PHY_10BTCS_REG  0x12
#define PHY_SINT_REG    0x15
#define PHY_SREC_REG    0x16
#define PHY_DISC_REG    0x17

//PHY Control Register
#define RESET_PHY       1 << 15
#define ENABLE_LOOPBACK 1 << 14
#define DR_100MB        1 << 13
#define ENABLE_AN       1 << 12
#define PHY_POWER_DOWN  1 << 11
#define PHY_MAC_ISOLATE 1 << 10
#define RESTART_AN      1 << 9
#define PHY_FULLDUPLEX  1 << 8
#define PHY_COL_TEST    1 << 7

// PHY Status Register
#define AN_COMPLETE     1 << 5

// PHY Auto-negotiation Advertisement Register
#define DR100_TX_FULL   1 << 8
#define DR100_TX_HALF   1 << 7
#define DR10_TX_FULL    1 << 6
#define DR10_TX_HALF    1 << 5
#define IEEE_802_3_CSMA_CD   1


#define MAC_ADDR_SIZE         6

#define MaxRxFrameSize        1520 // Rx Frame Max Size = 1520

#define MaxRxFrameDescriptors 32   // Max number of Rx Frame Descriptors
#define MaxTxFrameDescriptors 16   // Max number of Tx Frame Descriptors


// RX Frame Descriptor's Owner bit
#define RXfOwnership_DMA 0x80000000  // 10 = DMA
#define RXfOwnership_CPU 0x3fffffff  // 00 = CPU

// TX Frame Descriptor's Owner bit
#define TXfOwnership_DMA 0x80000000  // 1 = DMA
#define TXfOwnership_CPU 0x7fffffff  // 0 = CPU


// Rx Frame Descriptor Status
#define RXFD_RP      0x0040  // Runt Packet
#define RXFD_ALIE    0x0020  // Alignment Error
#define RXFD_RXGD    0x0010  // Receiving Good packet received
#define RXFD_PTLE    0x0008  // Packet Too Long Error
#define RXFD_CRCE    0x0002  // CRC Error
#define RXFD_RXINTR  0x0001  // Interrupt on receive



// Tx Frame Descriptor's Control bits
#define MACTxIntEn    0x04
#define CRCMode       0x02
#define NoCRCMode     0x00
#define PaddingMode   0x01
#define NoPaddingMode 0x00

// Tx Frame Descriptor Status
#define TXFD_TXINTR 0x0001  // Interrupt on Transmit
#define TXFD_DEF    0x0002  // Transmit deferred 
#define TXFD_TXCP   0x0008  // Transmission Completion 
#define TXFD_EXDEF  0x0010  // Exceed Deferral
#define TXFD_NCS    0x0020  // No Carrier Sense Error
#define TXFD_TXABT  0x0040  // Transmission Abort 
#define TXFD_LC     0x0080  // Late Collision 
#define TXFD_TXHA   0x0100  // Transmission halted
#define TXFD_PAU    0x0200  // Paused
#define TXFD_SQE    0x0400  // SQE error 


// Tx/Rx buffer descriptor structure
typedef struct FrameDescriptor
{
 UINT  Status1; // RX - Ownership(2bits),RxStatus(14bits),Length(16bits)
                   // TX - Ownership(1bits),Control bits(3bits),Reserved(28bits)
 UINT  FrameDataPtr;
 UINT  Status2; // RX - NAT Information/Reserved(32bits)
              // TX - TxStatus(16bits),Length(16bits)
 UINT  NextFrameDescriptor;
} sFrameDescriptor;


extern VOID Mac_Initialize(VOID);
extern INT Mac_SendPacket(NETBUF *Data);
extern VOID Mac_EnableBroadcast(VOID);
extern VOID Mac_DisableBroadcast(VOID);
extern VOID Mac_DisableInt(VOID);
extern VOID Mac_EnableInt(VOID);
extern VOID  Mac_ShutDown(VOID);



#endif  /* _w90p910_h_ */

⌨️ 快捷键说明

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