added a lot of register bits and register offsets, all taken from the documentation
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7384 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -1,3 +1,6 @@
|
||||
/* Realtek RTL8169 Family Driver
|
||||
* Copyright (C) 2004 Marcus Overhagen <[email protected]>. All rights reserved.
|
||||
*/
|
||||
#ifndef __HARDWARE_H
|
||||
#define __HARDWARE_H
|
||||
|
||||
@@ -5,29 +8,21 @@
|
||||
#define PCI_PCICMD_MSE 0x02
|
||||
#define PCI_PCICMD_BME 0x04
|
||||
|
||||
|
||||
typedef struct {
|
||||
uint32 stat_len;
|
||||
uint32 vlan;
|
||||
uint32 buf_low;
|
||||
uint32 buf_low; // must be 8 byte aligned
|
||||
uint32 buf_high;
|
||||
} _PACKED tx_desc;
|
||||
} _PACKED buf_desc;
|
||||
|
||||
enum {
|
||||
TX_DESC_OWN = 0x80000000,
|
||||
TX_DESC_EOR = 0x40000000,
|
||||
TX_DESC_FS = 0x20000000,
|
||||
TX_DESC_LS = 0x10000000,
|
||||
TX_DESC_LEN_MASK = 0x00007fff,
|
||||
TX_DESC_LEN_MASK = 0x00003fff,
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
uint32 stat_len;
|
||||
uint32 vlan;
|
||||
uint32 buf_low; // must be 8 byte aligned
|
||||
uint32 buf_high;
|
||||
} _PACKED rx_desc;
|
||||
|
||||
enum {
|
||||
RX_DESC_OWN = 0x80000000,
|
||||
RX_DESC_EOR = 0x40000000,
|
||||
@@ -42,7 +37,7 @@ enum {
|
||||
RX_DESC_RES = 0x00200000,
|
||||
RX_DESC_RUNT = 0x00100000,
|
||||
RX_DESC_CRC = 0x00080000,
|
||||
RX_DESC_LEN_MASK = 0x00007fff,
|
||||
RX_DESC_LEN_MASK = 0x00003fff,
|
||||
};
|
||||
|
||||
enum {
|
||||
@@ -53,13 +48,94 @@ enum {
|
||||
REG_RDSAR_LOW = 0xe4,
|
||||
REG_RDSAR_HIGH = 0xe8,
|
||||
|
||||
REG_CR = 0x37,
|
||||
REG_CR = 0x37, // 8 bit
|
||||
REG_TPPOLL = 0x38, // 8 bit
|
||||
|
||||
REG_INT_MASK = 0x3c, // 16 bit
|
||||
REG_INT_STAT = 0x3e, // 16 bit
|
||||
|
||||
REG_TX_CONFIG = 0x40,
|
||||
REG_RX_CONFIG = 0x44,
|
||||
|
||||
REG_9346CR = 0x50, // 8 bit
|
||||
REG_CONFIG0 = 0x51, // 8 bit
|
||||
REG_CONFIG1 = 0x52, // 8 bit
|
||||
REG_CONFIG2 = 0x53, // 8 bit
|
||||
REG_CONFIG3 = 0x54, // 8 bit
|
||||
REG_CONFIG4 = 0x55, // 8 bit
|
||||
REG_CONFIG5 = 0x56, // 8 bit
|
||||
|
||||
|
||||
REG_PHYAR = 0x60,
|
||||
REG_TBICSR = 0x64,
|
||||
REG_PHY_STAT = 0x6c, // 8bit
|
||||
|
||||
};
|
||||
|
||||
// for REG_CR
|
||||
enum {
|
||||
REG_CR_RST = 0x10,
|
||||
REG_CR_RE = 0x08,
|
||||
REG_CR_TE = 0x04,
|
||||
CR_RST = 0x10,
|
||||
CR_RE = 0x08,
|
||||
CR_TE = 0x04,
|
||||
};
|
||||
|
||||
// for REG_TPPOLL
|
||||
enum {
|
||||
TPPOLL_HPQ = 0x80,
|
||||
TPPOLL_NPQ = 0x40,
|
||||
TPPOLL_FSWINT = 0x01,
|
||||
};
|
||||
|
||||
// for REG_INT_MASK and REG_INT_STAT
|
||||
enum {
|
||||
INT_SERR = 0x8000,
|
||||
INT_TimeOut = 0x4000,
|
||||
INT_SwInt = 0x0100,
|
||||
INT_TDU = 0x0080,
|
||||
INT_FOVW = 0x0040,
|
||||
INT_PUN = 0x0020,
|
||||
INT_RDU = 0x0010,
|
||||
INT_TER = 0x0008,
|
||||
INT_TOK = 0x0004,
|
||||
INT_RER = 0x0002,
|
||||
INT_ROK = 0x0001,
|
||||
};
|
||||
|
||||
// for REG_PHY_STAT
|
||||
enum {
|
||||
PHY_STAT_EnTBI = 0x80,
|
||||
PHY_STAT_TxFlow = 0x40,
|
||||
PHY_STAT_RxFlow = 0x20,
|
||||
PHY_STAT_1000MF = 0x10,
|
||||
PHY_STAT_100M = 0x08,
|
||||
PHY_STAT_10M = 0x04,
|
||||
PHY_STAT_LinkSts = 0x02,
|
||||
PHY_STAT_FullDup = 0x01,
|
||||
};
|
||||
|
||||
// for REG_TBICSR
|
||||
enum {
|
||||
TBICSR_ResetTBI = 0x80000000,
|
||||
TBICSR_TBILoopBack = 0x40000000,
|
||||
TBICSR_TBINWEn = 0x20000000,
|
||||
TBICSR_TBIReNW = 0x10000000,
|
||||
TBICSR_TBILinkOk = 0x02000000,
|
||||
TBICSR_NWComplete = 0x01000000,
|
||||
};
|
||||
|
||||
// for REG_RX_CONFIG
|
||||
enum {
|
||||
RX_CONFIG_MulERINT = 0x01000000,
|
||||
RX_CONFIG_RER8 = 0x00010000,
|
||||
RX_CONFIG_AcceptErr = 0x00000020,
|
||||
RX_CONFIG_AcceptRunt = 0x00000010,
|
||||
RX_CONFIG_AcceptBroad = 0x00000008,
|
||||
RX_CONFIG_AcceptMulti = 0x00000004,
|
||||
RX_CONFIG_AcceptMyPhys = 0x00000002,
|
||||
RX_CONFIG_AcceptAllPhys = 0x00000001,
|
||||
RX_CONFIG_MASK = 0xfe7e1880, // XXX should be 0xfefe1880 but Realtek driver clears the undocumented bit 23
|
||||
RC_CONFIG_RXFTH_Shift = 13,
|
||||
RC_CONFIG_MAXDMA_Shift = 8,
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user