summaryrefslogtreecommitdiffstats
path: root/uClinux-2.4.20-uc1/drivers/net/w90n745_mac.h
diff options
context:
space:
mode:
Diffstat (limited to 'uClinux-2.4.20-uc1/drivers/net/w90n745_mac.h')
-rwxr-xr-xuClinux-2.4.20-uc1/drivers/net/w90n745_mac.h354
1 files changed, 354 insertions, 0 deletions
diff --git a/uClinux-2.4.20-uc1/drivers/net/w90n745_mac.h b/uClinux-2.4.20-uc1/drivers/net/w90n745_mac.h
new file mode 100755
index 0000000..684f7bd
--- /dev/null
+++ b/uClinux-2.4.20-uc1/drivers/net/w90n745_mac.h
@@ -0,0 +1,354 @@
+/****************************************************************************
+ * *
+ * Copyright (c) 2005 - 2007 Winbond Electronics Corp. All rights reserved. *
+ * *
+ ****************************************************************************/
+
+/****************************************************************************
+ *
+ * FILENAME
+ * w90n745_mac.h
+ *
+ * VERSION
+ * 1.0
+ *
+ * DESCRIPTION
+ * The head file for MAC driver on POS-TAX Board
+ *
+ * DATA STRUCTURES
+ * None
+ *
+ * FUNCTIONS
+ * None
+ *
+ * HISTORY
+ * 2005/08/01 Ver 1.0
+ *
+ * AUTHOR
+ * PC34 Lsshi
+ *
+ * REMARK
+ * None
+ *************************************************************************/
+#ifndef _W90N745_MAC_H_
+#define _W90N745_MAC_H_
+
+#define NON_CACHE_FLAG 0x80000000
+
+#define MAC_OFFSET 0x0
+#define MAC_0_OFFSET MAC_OFFSET
+
+// Advanced Interrupt Controller Registers
+#define AIC_SCR_EMCTX0 (VPint(AIC_SCR17))
+#define AIC_SCR_EMCRX0 (VPint(AIC_SCR18))
+
+//CAM Registers
+#define CAMCMR (MAC_OFFSET) //CAM Command Regiser
+#define CAMEN (MAC_OFFSET+0x4)//CAM ennable regiser
+#define CAM0M (MAC_OFFSET+0x8)//CAM1 Most significant Word register
+#define CAM0L (MAC_OFFSET+0xc)//CAM1 Least Significant Word Register
+#define CAM_ENTRY_SIZE 0x8 //CAM entry size
+#define CAM_ENTRIES 0x16 //CAM entries
+
+//MAC Regiseters
+#define MIEN (MAC_OFFSET+0xac) //MAC Interrupt Enable Register
+#define MCMDR (MAC_OFFSET+0x90) //MAC Command Regiser
+#define MIID (MAC_OFFSET+0x94) //MII Management Data Register
+#define MIIDA (MAC_OFFSET+0x98) //MII Management Data Control and Address Register
+#define MPCNT (MAC_OFFSET+0xb8) //Missed Packet Counter Register
+
+//DMA Registers
+#define TXDLSA (MAC_OFFSET+0x88) //Transmit Descriptor Link List Start Address Regiser
+#define RXDLSA (MAC_OFFSET+0x8c) //Receive Descriptor LInk List Start Addresss Register
+#define DMARFC (MAC_OFFSET+0xa8) //DMA Receive Frame Control Register
+#define TSDR (MAC_OFFSET+0xa0) //Transmit Start Demand Register
+#define RSDR (MAC_OFFSET+0xa4) //Recevie Start Demand Register
+#define FIFOTHD (MAC_OFFSET+0x9c) //FIFO Threshold Adjustment Register
+
+//EMC Status Register
+#define MISTA (MAC_OFFSET+0xb0) //MAC Interrupter Status Register
+#define MGSTA (MAC_OFFSET+0xb4) //MAC General Status Register
+#define MRPC (MAC_OFFSET+0xbc) //MAC Receive Pauese counter register
+#define MRPCC (MAC_OFFSET+0xc0) //MAC Receive Pauese Current Count Regiser
+#define MREPC (MAC_OFFSET+0xc4) //MAC Remote pause count retister
+
+//DMA Registers
+#define DMARFS (MAC_OFFSET+0xc8) //DMA Receive Frame Status Register
+#define CTXDSA (MAC_OFFSET+0xcc) //Current Transmit Descriptor Start Addresss Register
+#define CTXBSA (MAC_OFFSET+0xd0) //Current Transmit Buffer Start Address Regiser
+#define CRXDSA (MAC_OFFSET+0xd4) //Current Receive Descriptor start Address regiser
+#define CRXBSA (MAC_OFFSET+0xd8) //Current Receive Buffer Start Address Regiser
+
+//Debug Mode Receive Finite State Machine Registers
+#define RXFSM (MAC_OFFSET+0x200)
+#define TXFSM (MAC_OFFSET+0x204)
+#define FSM0 (MAC_OFFSET+0x208)
+#define FSM1 (MAC_OFFSET+0x20c)
+
+//Descriptor
+typedef struct
+{
+ volatile unsigned long SL;
+ volatile unsigned long buffer;
+ volatile unsigned long reserved;
+ volatile unsigned long next;
+}RXBD;
+
+
+typedef struct
+{
+ volatile unsigned long mode;
+ volatile unsigned long buffer;
+ volatile unsigned long SL;
+ volatile unsigned long next;
+}TXBD;
+
+
+// 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
+//ownership bit
+#define RX_OWNERSHIP_CPU (0x0<<30)
+#define RX_OWNERSHIP_DMA (2<<30)
+
+#define TX_OWNERSHIP_CPU (0x0<<30)
+#define TX_OWNERSHIP_DMA (2<<30)
+
+// 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
+
+// Tx Frame Descriptor's Control bits
+#define MACTxIntEn 0x04
+#define CRCMode 0x02
+#define NoCRCMode 0x00
+#define PaddingMode 0x01
+#define NoPaddingMode 0x00
+
+//received descriptor status
+#define RXDS_RXINTR (1<<16) //set if reception of packet caused an interrupt condition
+#define RXDS_CRCE (1<<17) // set if crc error
+#define RXDS_PTLE (1<<19) //set if received frame longer than 1518 bytes
+#define RXDS_RXGD (1<<20) // receiving good packet
+#define RXDS_ALIE (1<<21) //Alignment Error
+#define RXDS_RP (1<<22) //runt packet
+#define RXDS_Inverse (1<<26) //current hit entry is setting on inverse mode
+#define RXDS_PortHit (1<<27) //port hit
+#define RXDS_IPHit (1<<28) //ip hit
+#define RXDS_Hit (1<<29) //hit
+
+//Tx ownership bit
+#define TX_OWNERSHIP_CPU (0x0<<31)
+#define TX_OWNERSHIP_DMA (0x1<<31)
+//tx mode
+#define TX_MODE_PAD 0x1 //pad
+#define TX_MODE_CRC (0x1<<1) //crc mode
+#define TX_MODE_IE (0x1<<2) //interrupt enable
+
+//Tx status
+#define TXDS_TXINTR (1<<16) //Interruput on Transmit
+#define TXDS_DEF (1<<17) //Transmit defered
+#define TXDS_TXCP (1<<19) //Transmit Completion
+#define TXDS_EXDEF (1<<20) //exceed deferal
+#define TXDS_NCS (1<<21) //No Carrier Sense Error
+#define TXDS_TXABT (1<<22) //transimtting aborted
+#define TXDS_LC (1<<23) //late collision
+#define TXDS_TXHA (1<<24) //transmitting halted
+#define TXDS_PAU (1<<25) //Paused
+#define TXDS_SQE (1<<26) //SQE error
+#define TXDS_CCNT (0xf<<27) //transmit collision count
+//cam command regiser
+#define CAMCMR_AUP 0x1 //Accept unicast packet
+#define CAMCMR_AMP (0x1<<1) //Accpet multicast packet
+#define CAMCMR_ABP (0x1<<2) //Accept broadcast packet
+#define CAMCMR_CCAM (0x1<<3) //complement CAM
+#define CAMCMR_ECMP (0x1<<4) //Enable CAM compare
+
+
+// MAC MII Management Data Control and Address Register(MIIDA)
+#define MDCCR 0x00300000 // MDC clock rating
+#define PHYAD 0x00000100 // PHY Address
+#define PHYWR 0x00010000 // Write Operation
+#define PHYBUSY 0x00020000 // Busy Bit
+#define PHYPreSP 0x00040000 // Preamble Suppress
+
+// PHY(DM9161) 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_MAC_ISOLATE (1 << 10)
+#define RESTART_AN (1 << 9)
+#define PHY_FULLDUPLEX (1 << 8)
+#define PHY_COL_TEST (1 << 7)
+
+
+// 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
+
+// PHY Status Register
+#define AN_COMPLETE (1 << 5)
+
+// PHY Auto-negotiation Advertisement Register
+
+#define MODE_DR100_FULL 3
+#define MODE_DR100_HALF 2
+#define MODE_DR10_FULL 1
+#define MODE_DR10_HALF 0
+
+
+#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
+
+
+
+//MAC Interrupt Enable Register
+#define MIEN_EnRXINTR 1
+#define MIEN_EnCRCE (1<<1)
+#define MIEN_EnRXOV (1<<2)
+#define MIEN_EnPTLE (1<<3)
+#define MIEN_EnRXGD (1<<4)
+#define MIEN_EnALIE (1<<5)
+#define MIEN_EnRP (1<<6)
+#define MIEN_EnMMP (1<<7)
+#define MIEN_EnDFO (1<<8)
+#define MIEN_EnDEN (1<<9)
+#define MIEN_EnRDU (1<<10)
+#define MIEN_EnRXBErr (1<<11)
+#define MIEN_EnCFR (1<<14)
+#define MIEN_EnTXINTR (1<<16)
+#define MIEN_EnTXEMP (1<<17)
+#define MIEN_EnTXCP (1<<18)
+#define MIEN_EnEXDEF (1<<19)
+#define MIEN_EnNCS (1<<20)
+#define MIEN_EnTXABT (1<<21)
+#define MIEN_EnLC (1<<22)
+#define MIEN_EnTDU (1<<23)
+#define MIEN_EnTxBErr (1<<24)
+//MAC Command Regiser
+#define MCMDR_RXON 1
+#define MCMDR_ALP (1<<1)
+#define MCMDR_ARP (1<<2)
+#define MCMDR_ACP (1<<3)
+#define MCMDR_AEP (1<<4)
+#define MCMDR_SPCRC (1<<5)
+#define MCMDR_TXON (1<<8)
+#define MCMDR_NDEF (1<<9)
+#define MCMDR_SDPZ (1<<16)
+#define MCMDR_EnSQE (1<<17)
+#define MCMDR_FDUP (1<<18)
+#define MCMDR_EnMDC (1<<19)
+#define MCMDR_OPMOD (1<<20)
+#define MCMDR_LBK (1<<21)
+//#define MCMDR_EnMII (1<<22)
+//#define MCMDR_LAN (1<<23)
+#define SWR (1<<24)//lsshi add 2005-4-22 12:07
+
+
+//MAC MII Management Data Control and Address Register
+#define MIIDA_PHYRAD 1
+#define MIIDA_PHYAD (1<<8)
+#define MIIDA_WR (1<<16)
+#define MIIDA_BUSY (1<<17)
+#define MIIDA_PreSP (1<<18)
+#define MIIDA_MDCON (1<<19)
+#define MIIDA_MDCCR (1<<20)
+
+//FIFO Threshold Adjustment Register
+#define FIFOTHD_RxTHD 1
+#define FIFOTHD_TxTHD (1<<8)
+#define FIFOTHD_SWR (1<<16)
+#define FIFOTHD_Blength (1<<20)
+//MAC Interrupt Status Register
+#define MISTA_RXINTR 1
+#define MISTA_CRCE (1<<1)
+#define MISTA_RXOV (1<<2)
+#define MISTA_PTLE (1<<3)
+#define MISTA_RXGD (1<<4)
+#define MISTA_ALIE (1<<5)
+#define MISTA_RP (1<<6)
+#define MISTA_MMP (1<<7)
+#define MISTA_DFOI (1<<8)
+#define MISTA_DENI (1<<9)
+#define MISTA_RDU (1<<10)
+#define MISTA_RxBErr (1<<11)
+#define MISTA_CFR (1<<14)
+#define MISTA_TXINTR (1<<16)
+#define MISTA_TXEMP (1<<17)
+#define MISTA_TXCP (1<<18)
+#define MISTA_EXDEF (1<<19)
+#define MISTA_NCS (1<<20)
+#define MISTA_TXABT (1<<21)
+#define MISTA_LC (1<<22)
+#define MISTA_TDU (1<<23)
+#define MISTA_TxBErr (1<<24)
+
+//MAC General Status Register
+#define MGSTA_CFR 1
+#define MGSTA_RXHA (1<<1)
+#define MGSTA_RFFull (1<<2) ////RxFIFO is full lsshi 2005-4-22 12:09
+#define MGSTA_DEF (1<<4)
+#define MGSTA_PAU (1<<5)
+#define MGSTA_SQE (1<<6)
+#define MGSTA_TXHA (1<<7)
+
+
+#define n745_WriteReg(reg,val,which) (*((volatile unsigned int *)(MAC_BASE+(which)*0x800+reg))=(val))
+#define n745_ReadReg(reg,which) (*((volatile unsigned int *)(MAC_BASE+reg+(which)*0x800)))
+
+#define n745_WriteCam0(which,x,lsw,msw) \
+ n745_WriteReg(CAM0L+(x)*CAM_ENTRY_SIZE,lsw,which);\
+ n745_WriteReg(CAM0M+(x)*CAM_ENTRY_SIZE,msw,which);\
+
+
+#define MDCCR1 0x00a00000 // MDC clock rating
+
+#endif