Compare commits
3
Commits
setup-rework
...
bcm57xx
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d98755374f | ||
|
|
3a29c4395c | ||
|
|
25382c1e3c |
No files matched your search
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,530 @@
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; ;;
|
||||
;; Copyright (C) KolibriOS team 2004-2026. All rights reserved. ;;
|
||||
;; Distributed under terms of the GNU General Public License ;;
|
||||
;; ;;
|
||||
;; bcm57xx.inc - Broadcom NetXtreme register definitions ;;
|
||||
;; ;;
|
||||
;; Register names and values follow OpenBSD's if_bgereg.h ;;
|
||||
;; (Bill Paul / Wind River) with the BGE_ prefix dropped. ;;
|
||||
;; ;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
;---------------------------------------------------------------------
|
||||
; PCI configuration space (vendor specific part)
|
||||
;---------------------------------------------------------------------
|
||||
|
||||
PCI_CMD_PIO = 0x0001
|
||||
PCI_CMD_MMIO = 0x0002
|
||||
PCI_CMD_MASTER = 0x0004
|
||||
|
||||
PCI_CACHESZ = 0x0c ; cacheline size / latency
|
||||
PCI_PWRMGMT_CMD = 0x4c ; PMCSR (fixed on all bge)
|
||||
PCI_PWR_STATE_MASK = 0x0003
|
||||
PCI_PWR_PME_ENABLE = 0x0100
|
||||
|
||||
PCI_MISC_CTL = 0x68
|
||||
PCI_DMA_RW_CTL = 0x6c
|
||||
PCI_PCISTATE = 0x70
|
||||
PCI_CLKCTL = 0x74
|
||||
PCI_REG_BASEADDR = 0x78 ; indirect CSR window
|
||||
PCI_MEMWIN_BASEADDR = 0x7c ; NIC memory window
|
||||
PCI_REG_DATA = 0x80
|
||||
PCI_MEMWIN_DATA = 0x84
|
||||
PCI_PRODID_ASICREV = 0xbc
|
||||
|
||||
; PCI misc host control bits
|
||||
PCIMISCCTL_CLEAR_INTA = 0x00000001
|
||||
PCIMISCCTL_MASK_PCI_INTR = 0x00000002
|
||||
PCIMISCCTL_ENDIAN_BYTESWAP = 0x00000004
|
||||
PCIMISCCTL_ENDIAN_WORDSWAP = 0x00000008
|
||||
PCIMISCCTL_PCISTATE_RW = 0x00000010
|
||||
PCIMISCCTL_CLOCKCTL_RW = 0x00000020
|
||||
PCIMISCCTL_REG_WORDSWAP = 0x00000040
|
||||
PCIMISCCTL_INDIRECT_ACCESS = 0x00000080
|
||||
PCIMISCCTL_TAGGED_STATUS = 0x00000200
|
||||
PCIMISCCTL_ASICREV_SHIFT = 16
|
||||
|
||||
; Value kept in PCI_MISC_CTL for the whole driver lifetime.
|
||||
; MASK_PCI_INTR is cleared again once the rings are live.
|
||||
BGE_INIT = PCIMISCCTL_CLEAR_INTA \
|
||||
or PCIMISCCTL_MASK_PCI_INTR \
|
||||
or PCIMISCCTL_INDIRECT_ACCESS \
|
||||
or PCIMISCCTL_ENDIAN_WORDSWAP \
|
||||
or PCIMISCCTL_PCISTATE_RW \
|
||||
or PCIMISCCTL_CLOCKCTL_RW
|
||||
|
||||
; PCI DMA read/write control
|
||||
PCIDMARWCTL_USE_MRM = 0x00400000
|
||||
PCIDMARWCTL_ASRT_ALL_BE = 0x00800000
|
||||
PCIDMARWCTL_DEFAULT = 0x763f0000 ; RD/WR cmd + watermarks
|
||||
|
||||
; PCI state
|
||||
PCISTATE_INTR_NOT_ACTIVE = 0x00000002
|
||||
|
||||
;---------------------------------------------------------------------
|
||||
; Memory mapped registers (BAR0)
|
||||
;---------------------------------------------------------------------
|
||||
|
||||
; --- Mailboxes (0x0200 - 0x03ff) --------------------------------------
|
||||
MBX_IRQ0_HI = 0x0200
|
||||
MBX_IRQ0_LO = 0x0204
|
||||
MBX_RX_STD_PROD_LO = 0x026c
|
||||
MBX_RX_JUMBO_PROD_LO = 0x0274
|
||||
MBX_RX_MINI_PROD_LO = 0x027c
|
||||
MBX_RX_CONS0_LO = 0x0284
|
||||
MBX_TX_HOST_PROD0_LO = 0x0304
|
||||
|
||||
; --- Ethernet MAC (0x0400) --------------------------------------------
|
||||
MAC_MODE = 0x0400
|
||||
MAC_STS = 0x0404
|
||||
MAC_EVT_ENB = 0x0408
|
||||
MAC_LED_CTL = 0x040c
|
||||
MAC_ADDR0_HI = 0x0410
|
||||
MAC_ADDR0_LO = 0x0414
|
||||
MAC_TX_BACKOFF_SEED = 0x0438
|
||||
MAC_RX_MTU = 0x043c
|
||||
MI_COMM = 0x044c
|
||||
MI_STS = 0x0450
|
||||
MI_MODE = 0x0454
|
||||
MAC_TX_MODE = 0x045c
|
||||
MAC_TX_LENGTHS = 0x046c
|
||||
MAC_RX_MODE = 0x0468
|
||||
RX_RULES_CFG = 0x0500
|
||||
|
||||
MAC_MODE_RESET = 0x00000001
|
||||
MAC_MODE_HALF_DUPLEX = 0x00000002
|
||||
MAC_MODE_PORT_MODE_MII = 0x00000004
|
||||
MAC_MODE_PORT_MODE_GMII = 0x00000008
|
||||
MAC_MODE_PORT_MODE_TBI = 0x0000000c
|
||||
MAC_MODE_PORT_MODE_MASK = 0x0000000c
|
||||
MAC_MODE_RX_STATS_EN = 0x00000800
|
||||
MAC_MODE_RX_STATS_CLEAR = 0x00001000
|
||||
MAC_MODE_TX_STATS_EN = 0x00004000
|
||||
MAC_MODE_TX_STATS_CLEAR = 0x00008000
|
||||
MAC_MODE_TXDMA_EN = 0x00200000
|
||||
MAC_MODE_RXDMA_EN = 0x00400000
|
||||
MAC_MODE_FRMHDR_DMA_EN = 0x00800000
|
||||
|
||||
MACSTAT_CFG_CHANGED = 0x00000004
|
||||
MACSTAT_SYNC_CHANGED = 0x00000008
|
||||
MACSTAT_LINK_CHANGED = 0x00001000
|
||||
MACSTAT_MI_COMPLETE = 0x00400000
|
||||
MACSTAT_STICKY = MACSTAT_LINK_CHANGED or MACSTAT_SYNC_CHANGED \
|
||||
or MACSTAT_CFG_CHANGED or MACSTAT_MI_COMPLETE
|
||||
EVTENB_LINK_CHANGED = 0x00001000
|
||||
|
||||
RX_MODE_RESET = 0x00000001
|
||||
RX_MODE_ENABLE = 0x00000002
|
||||
RX_MODE_FLOW_CTRL_ENABLE = 0x00000004
|
||||
RX_MODE_PROMISC = 0x00000100
|
||||
RX_MODE_KEEP_VLAN_TAG = 0x00000400
|
||||
|
||||
TX_MODE_RESET = 0x00000001
|
||||
TX_MODE_ENABLE = 0x00000002
|
||||
TX_MODE_FLOW_CTRL_ENABLE = 0x00000010
|
||||
TXMODE_MBUF_LOCKUP_FIX = 0x00000100
|
||||
|
||||
TX_LENGTHS_DEFAULT = 0x00002620 ; inter packet gap etc.
|
||||
TX_BACKOFF_SEED_MASK = 0x000003ff
|
||||
|
||||
; MI (PHY) access
|
||||
MIMODE_CLK_10MHZ = 0x000c0000 ; "base" value
|
||||
MIMODE_AUTOPOLL = 0x00000010
|
||||
MIMODE_PHYADDR_1 = 0x00000020
|
||||
|
||||
MICOMM_DATA_MASK = 0x0000ffff
|
||||
MICOMM_REG_SHIFT = 16
|
||||
MICOMM_PHY_SHIFT = 21
|
||||
MICOMM_CMD_WRITE = 0x04000000
|
||||
MICOMM_CMD_READ = 0x08000000
|
||||
MICOMM_READFAIL = 0x10000000
|
||||
MICOMM_BUSY = 0x20000000
|
||||
|
||||
MISTS_LINK = 0x00000001
|
||||
MISTS_10MBPS = 0x00000002
|
||||
|
||||
; --- Send Data Initiator (0x0c00) -------------------------------------
|
||||
SDI_MODE = 0x0c00
|
||||
SDI_STATS_ENABLE_MASK = 0x0c08
|
||||
SDI_STATS_CTL = 0x0c0c
|
||||
SDIMODE_ENABLE = 0x00000002
|
||||
|
||||
; --- Send Data Completion (0x1000) ------------------------------------
|
||||
SDC_MODE = 0x1000
|
||||
SDCMODE_ENABLE = 0x00000002
|
||||
|
||||
; --- Send BD Ring Selector (0x1400) -----------------------------------
|
||||
SRS_MODE = 0x1400
|
||||
SRSMODE_ENABLE = 0x00000002
|
||||
|
||||
; --- Send BD Initiator (0x1800) ---------------------------------------
|
||||
SBDI_MODE = 0x1800
|
||||
SBDIMODE_ENABLE = 0x00000002
|
||||
|
||||
; --- Send BD Completion (0x1c00) --------------------------------------
|
||||
SBDC_MODE = 0x1c00
|
||||
SBDCMODE_ENABLE = 0x00000002
|
||||
|
||||
; --- Receive List Placement (0x2000) ----------------------------------
|
||||
RXLP_MODE = 0x2000
|
||||
RXLP_CFG = 0x2010
|
||||
RXLP_STATS_CTL = 0x2014
|
||||
RXLP_STATS_ENABLE_MASK = 0x2018
|
||||
RXLPMODE_ENABLE = 0x00000002
|
||||
RXLP_CFG_DEFAULT = 0x00000181
|
||||
|
||||
; --- Receive Data & BD Initiator (0x2400) -----------------------------
|
||||
RDBDI_MODE = 0x2400
|
||||
RDBDIMODE_ENABLE = 0x00000002
|
||||
RDBDIMODE_ATTN = 0x00000004
|
||||
|
||||
; Receive ring control blocks live in this block
|
||||
RX_JUMBO_RCB_HADDR_HI = 0x2440
|
||||
RX_JUMBO_RCB_HADDR_LO = 0x2444
|
||||
RX_JUMBO_RCB_MAXLEN_FLAGS = 0x2448
|
||||
RX_JUMBO_RCB_NICADDR = 0x244c
|
||||
RX_STD_RCB_HADDR_HI = 0x2450
|
||||
RX_STD_RCB_HADDR_LO = 0x2454
|
||||
RX_STD_RCB_MAXLEN_FLAGS = 0x2458
|
||||
RX_STD_RCB_NICADDR = 0x245c
|
||||
RX_MINI_RCB_HADDR_HI = 0x2460
|
||||
RX_MINI_RCB_HADDR_LO = 0x2464
|
||||
RX_MINI_RCB_MAXLEN_FLAGS = 0x2468
|
||||
RX_MINI_RCB_NICADDR = 0x246c
|
||||
|
||||
; --- Receive Data Completion (0x2800) ---------------------------------
|
||||
RDC_MODE = 0x2800
|
||||
RDCMODE_ENABLE = 0x00000002
|
||||
RDCMODE_ATTN = 0x00000004
|
||||
|
||||
; --- Receive BD Initiator (0x2c00) ------------------------------------
|
||||
RBDI_MODE = 0x2c00
|
||||
RBDI_STD_REPL_THRESH = 0x2c18
|
||||
RBDI_JUMBO_REPL_THRESH = 0x2c1c
|
||||
RBDIMODE_ENABLE = 0x00000002
|
||||
RBDIMODE_ATTN = 0x00000004
|
||||
|
||||
; --- Receive BD Completion (0x3000) -----------------------------------
|
||||
RBDC_MODE = 0x3000
|
||||
RBDCMODE_ENABLE = 0x00000002
|
||||
RBDCMODE_ATTN = 0x00000004
|
||||
|
||||
; --- Receive List Selector (0x3400), pre-5705 only --------------------
|
||||
RXLS_MODE = 0x3400
|
||||
RXLSMODE_ENABLE = 0x00000002
|
||||
|
||||
; --- Host Coalescing (0x3c00) -----------------------------------------
|
||||
HCC_MODE = 0x3c00
|
||||
HCC_STATUS = 0x3c04
|
||||
HCC_RX_COAL_TICKS = 0x3c08
|
||||
HCC_TX_COAL_TICKS = 0x3c0c
|
||||
HCC_RX_MAX_COAL_BDS = 0x3c10
|
||||
HCC_TX_MAX_COAL_BDS = 0x3c14
|
||||
HCC_RX_COAL_TICKS_INT = 0x3c18
|
||||
HCC_TX_COAL_TICKS_INT = 0x3c1c
|
||||
HCC_RX_MAX_COAL_BDS_INT = 0x3c20
|
||||
HCC_TX_MAX_COAL_BDS_INT = 0x3c24
|
||||
HCC_STATS_TICKS = 0x3c28
|
||||
HCC_STATS_ADDR_HI = 0x3c30
|
||||
HCC_STATS_ADDR_LO = 0x3c34
|
||||
HCC_STATUSBLK_ADDR_HI = 0x3c38
|
||||
HCC_STATUSBLK_ADDR_LO = 0x3c3c
|
||||
HCC_STATS_BASEADDR = 0x3c40
|
||||
HCC_STATUSBLK_BASEADDR = 0x3c44
|
||||
|
||||
HCCMODE_RESET = 0x00000001
|
||||
HCCMODE_ENABLE = 0x00000002
|
||||
HCCMODE_ATTN = 0x00000004
|
||||
HCCMODE_COAL_NOW = 0x00000008
|
||||
HCCMODE_STATBLKSZ_32BYTE = 0x00000100
|
||||
|
||||
; --- Memory Arbiter (0x4000) ------------------------------------------
|
||||
MARB_MODE = 0x4000
|
||||
MARBMODE_ENABLE = 0x00000002
|
||||
|
||||
; --- Buffer Manager (0x4400), pre-5705 needs explicit setup -----------
|
||||
BMAN_MODE = 0x4400
|
||||
BMAN_STATUS = 0x4404
|
||||
BMAN_MBUFPOOL_BASEADDR = 0x4408
|
||||
BMAN_MBUFPOOL_LEN = 0x440c
|
||||
BMAN_MBUFPOOL_READDMA_LOWAT = 0x4410
|
||||
BMAN_MBUFPOOL_MACRX_LOWAT = 0x4414
|
||||
BMAN_MBUFPOOL_HIWAT = 0x4418
|
||||
BMAN_DMA_DESCPOOL_BASEADDR = 0x442c
|
||||
BMAN_DMA_DESCPOOL_LEN = 0x4430
|
||||
BMAN_DMA_DESCPOOL_LOWAT = 0x4434
|
||||
BMAN_DMA_DESCPOOL_HIWAT = 0x4438
|
||||
|
||||
BMANMODE_RESET = 0x00000001
|
||||
BMANMODE_ENABLE = 0x00000002
|
||||
BMANMODE_ATTN = 0x00000004
|
||||
BMANMODE_LOMBUF_ATTN = 0x00000010
|
||||
|
||||
BUFFPOOL_1 = 0x00010000 ; NIC SRAM mbuf pool
|
||||
BUFFPOOL_1_LEN = 0x00018000
|
||||
DMA_DESCRIPTORS = 0x00002000
|
||||
DMA_DESCRIPTORS_LEN = 0x00002000
|
||||
|
||||
; --- Read / Write DMA -------------------------------------------------
|
||||
RDMA_MODE = 0x4800
|
||||
RDMA_RSRVCTRL = 0x4900
|
||||
WDMA_MODE = 0x4c00
|
||||
|
||||
RDMAMODE_ENABLE = 0x00000002
|
||||
RDMAMODE_ALL_ATTNS = 0x000003fc
|
||||
RDMAMODE_BD_SBD_CRPT_ATTN = 0x00000800
|
||||
RDMAMODE_MBUF_RBD_CRPT_ATTN = 0x00001000
|
||||
RDMAMODE_MBUF_SBD_CRPT_ATTN = 0x00002000
|
||||
RDMAMODE_FIFO_LONG_BURST = 0x00030000
|
||||
RDMA_RSRVCTRL_FIFO_OFLW_FIX = 0x00000004
|
||||
|
||||
WDMAMODE_ENABLE = 0x00000002
|
||||
WDMAMODE_ALL_ATTNS = 0x000003fc
|
||||
WDMAMODE_STATUS_TAG_FIX = 0x20000000
|
||||
|
||||
; --- Flow Through Queues (0x5c00) -------------------------------------
|
||||
FTQ_RESET = 0x5c00
|
||||
|
||||
; --- Mode / misc control (0x6800) -------------------------------------
|
||||
MODE_CTRL = 0x6800
|
||||
MISC_CFG = 0x6804
|
||||
MISC_LOCAL_CTL = 0x6808
|
||||
EE_ADDR = 0x6838
|
||||
EE_DATA = 0x683c
|
||||
|
||||
MODECTL_BYTESWAP_NONFRAME = 0x00000002
|
||||
MODECTL_WORDSWAP_NONFRAME = 0x00000004
|
||||
MODECTL_BYTESWAP_DATA = 0x00000010
|
||||
MODECTL_WORDSWAP_DATA = 0x00000020
|
||||
MODECTL_NO_TX_INTR = 0x00002000
|
||||
MODECTL_NO_RX_INTR = 0x00004000
|
||||
MODECTL_FORCE_PCI32 = 0x00008000
|
||||
MODECTL_HOST_STACKUP = 0x00010000
|
||||
MODECTL_HOST_SENDBDS = 0x00020000
|
||||
MODECTL_TX_ATTN_INTR = 0x01000000
|
||||
MODECTL_RX_ATTN_INTR = 0x02000000
|
||||
MODECTL_MAC_ATTN_INTR = 0x04000000
|
||||
MODECTL_DMA_ATTN_INTR = 0x08000000
|
||||
MODECTL_FLOW_ATTN_INTR = 0x10000000
|
||||
|
||||
MISCCFG_RESET_CORE_CLOCKS = 0x00000001
|
||||
MISCCFG_TIMER_PRESCALE_66MHZ = (65 shl 1)
|
||||
|
||||
MLC_INTR_ONATTN = 0x00000008
|
||||
MLC_AUTO_EEPROM = 0x01000000
|
||||
|
||||
; Serial EEPROM auto access
|
||||
EEADDR_ADDRESS = 0x0000fffc
|
||||
EEADDR_START = 0x02000000
|
||||
EEADDR_RESET = 0x20000000
|
||||
EEADDR_DONE = 0x40000000
|
||||
EEADDR_RW = 0x80000000 ; 1 = read
|
||||
HALFCLK_384SCL = 0x60
|
||||
EE_READCMD = (HALFCLK_384SCL shl 16) or EEADDR_START or EEADDR_RW or EEADDR_DONE
|
||||
EE_MAC_OFFSET = 0x7c
|
||||
|
||||
;---------------------------------------------------------------------
|
||||
; NIC internal memory (reached through PCI_MEMWIN_BASEADDR/DATA)
|
||||
;---------------------------------------------------------------------
|
||||
|
||||
NICMEM_SEND_RING_RCB = 0x0100 ; 16 RCBs, 16 bytes each
|
||||
NICMEM_RX_RETURN_RING_RCB = 0x0200 ; 16 RCBs, 16 bytes each
|
||||
NICMEM_SOFTWARE_MAC = 0x0c14 ; "HK" signature + MAC
|
||||
NICMEM_SEND_RING_1_TO_4 = 0x4000 ; TX ring mirror, pre-5705
|
||||
NICMEM_STD_RX_RINGS = 0x6000 ; RX std ring mirror
|
||||
|
||||
STATS_BLOCK_NIC = 0x00000300
|
||||
STATUS_BLOCK_NIC = 0x00000b00
|
||||
|
||||
; Ring control block layout (both in NIC memory and as CSRs)
|
||||
RCB_HADDR_HI = 0x00
|
||||
RCB_HADDR_LO = 0x04
|
||||
RCB_MAXLEN_FLAGS = 0x08
|
||||
RCB_NICADDR = 0x0c
|
||||
sizeof.rcb = 0x10
|
||||
|
||||
RCB_FLAG_USE_EXT_RX_BD = 0x0001
|
||||
RCB_FLAG_RING_DISABLED = 0x0002
|
||||
|
||||
;---------------------------------------------------------------------
|
||||
; Chip identification
|
||||
;---------------------------------------------------------------------
|
||||
|
||||
; The chip id is the top half of PCI_MISC_CTL, and the ASIC revision is
|
||||
; its top nibble-and-a-bit: asic_rev = chip_id shr 12.
|
||||
;
|
||||
; Note that the revision numbering is NOT chronological. The BCM5700,
|
||||
; the oldest part in the family, has revision 0x07, which is larger than
|
||||
; the 0x03 of the 5705. Anything deciding "is this a 5705 or later" by
|
||||
; comparing revisions therefore gets the 5700 wrong - see is_5705_plus
|
||||
; in the driver.
|
||||
|
||||
ASICREV_BCM5701 = 0x00
|
||||
ASICREV_BCM5703 = 0x01
|
||||
ASICREV_BCM5704 = 0x02
|
||||
ASICREV_BCM5705 = 0x03
|
||||
ASICREV_BCM5750 = 0x04
|
||||
ASICREV_BCM5714_A0 = 0x05
|
||||
ASICREV_BCM5752 = 0x06
|
||||
ASICREV_BCM5700 = 0x07
|
||||
ASICREV_BCM5780 = 0x08
|
||||
ASICREV_BCM5714 = 0x09
|
||||
ASICREV_BCM5755 = 0x0a
|
||||
ASICREV_BCM5787 = 0x0b
|
||||
ASICREV_BCM5906 = 0x0c
|
||||
ASICREV_USE_PRODID_REG = 0x0f
|
||||
ASICREV_BCM57780 = 0x57780
|
||||
|
||||
;--- 5700 class, pre-5705 programming model ---------------------------
|
||||
CHIPID_BCM5700_A0 = 0x7000
|
||||
CHIPID_BCM5700_B0 = 0x7100
|
||||
CHIPID_BCM5700_B2 = 0x7102
|
||||
CHIPID_BCM5700_B3 = 0x7103
|
||||
CHIPID_BCM5700_ALTIMA = 0x7104
|
||||
CHIPID_BCM5700_C0 = 0x7200
|
||||
|
||||
CHIPID_BCM5701_A0 = 0x0000
|
||||
CHIPID_BCM5701_B0 = 0x0100
|
||||
CHIPID_BCM5701_B2 = 0x0102
|
||||
CHIPID_BCM5701_B5 = 0x0105
|
||||
|
||||
CHIPID_BCM5703_A0 = 0x1000
|
||||
CHIPID_BCM5703_A1 = 0x1001
|
||||
CHIPID_BCM5703_A2 = 0x1002
|
||||
CHIPID_BCM5703_A3 = 0x1003
|
||||
CHIPID_BCM5703_B0 = 0x1100
|
||||
|
||||
CHIPID_BCM5704_A0 = 0x2000
|
||||
CHIPID_BCM5704_A1 = 0x2001
|
||||
CHIPID_BCM5704_A2 = 0x2002
|
||||
CHIPID_BCM5704_A3 = 0x2003
|
||||
CHIPID_BCM5704_B0 = 0x2100
|
||||
|
||||
;--- 5705 and later ---------------------------------------------------
|
||||
CHIPID_BCM5705_A0 = 0x3000
|
||||
CHIPID_BCM5705_A1 = 0x3001
|
||||
CHIPID_BCM5705_A2 = 0x3002
|
||||
CHIPID_BCM5705_A3 = 0x3003
|
||||
|
||||
CHIPID_BCM5750_A0 = 0x4000
|
||||
CHIPID_BCM5750_A1 = 0x4001
|
||||
CHIPID_BCM5750_B0 = 0x4010
|
||||
CHIPID_BCM5750_B1 = 0x4101
|
||||
CHIPID_BCM5750_C0 = 0x4200
|
||||
CHIPID_BCM5750_C1 = 0x4201
|
||||
CHIPID_BCM5750_C2 = 0x4202
|
||||
|
||||
CHIPID_BCM57780_A0 = 0x57780000
|
||||
CHIPID_BCM57780_A1 = 0x57780001
|
||||
|
||||
; Later members of the family. These are recognised well enough to be
|
||||
; named, but none of them has been tested with this driver and several
|
||||
; want setup it does not do yet (clock power management on the 5784 and
|
||||
; 5761 class, the PHY quirks on the 5906, jumbo support on the 5714 and
|
||||
; 5780). Left here so an unknown card can at least be identified from
|
||||
; the log; uncomment the matching chip_table entries once one has
|
||||
; actually been tried.
|
||||
;
|
||||
; CHIPID_BCM5714_A0 = 0x5000
|
||||
; CHIPID_BCM5752_A0 = 0x6000
|
||||
; CHIPID_BCM5752_A1 = 0x6001
|
||||
; CHIPID_BCM5752_A2 = 0x6002
|
||||
; CHIPID_BCM5714_B0 = 0x8000
|
||||
; CHIPID_BCM5714_B3 = 0x8003
|
||||
; CHIPID_BCM5715_A0 = 0x9000
|
||||
; CHIPID_BCM5715_A1 = 0x9001
|
||||
; CHIPID_BCM5715_A3 = 0x9003
|
||||
; CHIPID_BCM5755_A0 = 0xa000
|
||||
; CHIPID_BCM5755_A1 = 0xa001
|
||||
; CHIPID_BCM5755_A2 = 0xa002
|
||||
; CHIPID_BCM5722_A0 = 0xa200
|
||||
; CHIPID_BCM5787_A0 = 0xb000
|
||||
; CHIPID_BCM5787_A1 = 0xb001
|
||||
; CHIPID_BCM5787_A2 = 0xb002
|
||||
; CHIPID_BCM5906_A1 = 0xc001
|
||||
; CHIPID_BCM5906_A2 = 0xc002
|
||||
|
||||
;---------------------------------------------------------------------
|
||||
; DMA structures
|
||||
;---------------------------------------------------------------------
|
||||
|
||||
; Status block. The chip DMA-writes it whenever something happened.
|
||||
; Only the first 32 bytes are used when STATBLKSZ_32BYTE is selected;
|
||||
; the tail is reserved so the hardware never writes past the struct.
|
||||
struct status_block
|
||||
status_word dd ? ; bit0 = UPDATED
|
||||
tag dd ?
|
||||
rx_jumbo_consumer dw ?
|
||||
rx_std_consumer dw ?
|
||||
rx_mini_consumer dw ?
|
||||
reserved0 dw ?
|
||||
rx_prod_idx dw ? ; return ring 0 producer
|
||||
tx_cons_idx dw ? ; send ring 0 consumer
|
||||
rb 12 ; idx[1..3], written in 32 byte mode
|
||||
rb 48 ; idx[4..15], 80 byte mode
|
||||
ends
|
||||
|
||||
STATUSFLAG_UPDATED = 0x00000001
|
||||
STATUSFLAG_LINKSTATE_CHANGED = 0x00000002
|
||||
STATUSFLAG_ERROR = 0x00000004
|
||||
|
||||
struct tx_bd
|
||||
addr_hi dd ?
|
||||
addr_lo dd ?
|
||||
len_flags dd ? ; length in high word, flags in low
|
||||
vlan_tag dd ?
|
||||
ends
|
||||
|
||||
struct rx_bd
|
||||
addr_hi dd ?
|
||||
addr_lo dd ?
|
||||
len dw ? ; frame length, FCS included
|
||||
idx dw ? ; opaque, we store the std ring slot
|
||||
flags dw ?
|
||||
type dw ?
|
||||
tcp_udp_cksum dw ?
|
||||
ip_cksum dw ?
|
||||
vlan_tag dw ?
|
||||
error_flag dw ?
|
||||
reserved dd ?
|
||||
opaque dd ?
|
||||
ends
|
||||
|
||||
TXBDFLAG_TCP_UDP_CKSUM = 0x0001
|
||||
TXBDFLAG_IP_CKSUM = 0x0002
|
||||
TXBDFLAG_END = 0x0004
|
||||
TXBDFLAG_VLAN_TAG = 0x0040
|
||||
TXBDFLAG_COAL_NOW = 0x0080
|
||||
|
||||
RXBDFLAG_END = 0x0004
|
||||
RXBDFLAG_VLAN_TAG = 0x0040
|
||||
RXBDFLAG_ERROR = 0x0400
|
||||
|
||||
;---------------------------------------------------------------------
|
||||
; Broadcom PHY
|
||||
;---------------------------------------------------------------------
|
||||
|
||||
PHY_ADDR = 1
|
||||
PHY_BMCR = 0x00
|
||||
PHY_BMSR = 0x01
|
||||
PHY_AUX_STAT = 0x19
|
||||
|
||||
; Basic mode status register. The link and remote fault bits latch low,
|
||||
; so read it twice to get the current state.
|
||||
PHY_BMSR_LINK = 0x0004
|
||||
PHY_BMSR_AUTONEG_ABLE = 0x0008
|
||||
PHY_BMSR_REMOTE_FAULT = 0x0010
|
||||
PHY_BMSR_AUTONEG_COMP = 0x0020
|
||||
|
||||
; Auto-negotiation result, bits 10:8 of the auxiliary status register.
|
||||
; Note that code 4 is 100BASE-T4 - leaving it out shifts everything
|
||||
; above it by one and reports gigabit links as 100 Mbit.
|
||||
AUX_SPEED_MASK = 0x0700
|
||||
AUX_SPEED_10HALF = 0x0100
|
||||
AUX_SPEED_10FULL = 0x0200
|
||||
AUX_SPEED_100HALF = 0x0300
|
||||
AUX_SPEED_100T4 = 0x0400
|
||||
AUX_SPEED_100FULL = 0x0500
|
||||
AUX_SPEED_1000HALF = 0x0600
|
||||
AUX_SPEED_1000FULL = 0x0700
|
||||
@@ -1,437 +0,0 @@
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; ;;
|
||||
;; Copyright (C) KolibriOS team 2004-2021. All rights reserved. ;;
|
||||
;; Distributed under terms of the GNU General Public License ;;
|
||||
;; ;;
|
||||
;; Broadcom NetXtreme 57xx driver for KolibriOS ;;
|
||||
;; ;;
|
||||
;; GNU GENERAL PUBLIC LICENSE ;;
|
||||
;; Version 2, June 1991 ;;
|
||||
;; ;;
|
||||
;; Broadcom's programmers's manual for the BCM57xx ;;
|
||||
;; http://www.broadcom.com/collateral/pg/57XX-PG105-R.pdf ;;
|
||||
;; ;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
format PE DLL native
|
||||
entry START
|
||||
|
||||
CURRENT_API = 0x0200
|
||||
COMPATIBLE_API = 0x0100
|
||||
API_VERSION = (COMPATIBLE_API shl 16) + CURRENT_API
|
||||
|
||||
; configureable area
|
||||
|
||||
MAX_DEVICES = 16
|
||||
|
||||
__DEBUG__ = 1
|
||||
__DEBUG_LEVEL__ = 2
|
||||
|
||||
TX_RING_SIZE = 128 ; Number of packets in send ring buffer
|
||||
RX_RING_SIZE = 128 ; Number of packets in receive ring buffer
|
||||
|
||||
; end configureable area
|
||||
|
||||
section '.flat' readable writable executable
|
||||
|
||||
include '../proc32.inc'
|
||||
include '../struct.inc'
|
||||
include '../macros.inc'
|
||||
include '../fdo.inc'
|
||||
include '../netdrv.inc'
|
||||
|
||||
if (bsr TX_RING_SIZE)>(bsf TX_RING_SIZE)
|
||||
display 'TX_RING_SIZE must be a power of two'
|
||||
err
|
||||
end if
|
||||
|
||||
if (bsr RX_RING_SIZE)>(bsf RX_RING_SIZE)
|
||||
display 'RX_RING_SIZE must be a power of two'
|
||||
err
|
||||
end if
|
||||
|
||||
struct device ETH_DEVICE
|
||||
|
||||
mmio_addr dd ?
|
||||
pci_bus dd ?
|
||||
pci_dev dd ?
|
||||
irq_line db ?
|
||||
|
||||
cur_tx dd ?
|
||||
last_tx dd ?
|
||||
|
||||
rb 0x100 - ($ and 0xff) ; align 256
|
||||
rx_desc rd 256/8
|
||||
|
||||
rb 0x100 - ($ and 0xff) ; align 256
|
||||
tx_desc rd 256/8
|
||||
|
||||
ends
|
||||
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; ;;
|
||||
;; proc START ;;
|
||||
;; ;;
|
||||
;; (standard driver proc) ;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
proc START c, reason:dword, cmdline:dword
|
||||
|
||||
cmp [reason], DRV_ENTRY
|
||||
jne .fail
|
||||
|
||||
DEBUGF 1,"Loading driver\n"
|
||||
invoke RegService, my_service, service_proc
|
||||
ret
|
||||
|
||||
.fail:
|
||||
xor eax, eax
|
||||
ret
|
||||
|
||||
endp
|
||||
|
||||
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; ;;
|
||||
;; proc SERVICE_PROC ;;
|
||||
;; ;;
|
||||
;; (standard driver proc) ;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
proc service_proc stdcall, ioctl:dword
|
||||
|
||||
mov edx, [ioctl]
|
||||
mov eax, [edx + IOCTL.io_code]
|
||||
|
||||
;------------------------------------------------------
|
||||
|
||||
cmp eax, 0 ;SRV_GETVERSION
|
||||
jne @F
|
||||
|
||||
cmp [edx + IOCTL.out_size], 4
|
||||
jb .fail
|
||||
mov eax, [edx + IOCTL.output]
|
||||
mov [eax], dword API_VERSION
|
||||
|
||||
xor eax, eax
|
||||
ret
|
||||
|
||||
;------------------------------------------------------
|
||||
@@:
|
||||
cmp eax, 1 ;SRV_HOOK
|
||||
jne .fail
|
||||
|
||||
cmp [edx + IOCTL.inp_size], 3 ; Data input must be at least 3 bytes
|
||||
jb .fail
|
||||
|
||||
mov eax, [edx + IOCTL.input]
|
||||
cmp byte [eax], 1 ; 1 means device number and bus number (pci) are given
|
||||
jne .fail ; other types arent supported for this card yet
|
||||
|
||||
; check if the device is already listed
|
||||
|
||||
mov esi, device_list
|
||||
mov ecx, [devices]
|
||||
test ecx, ecx
|
||||
jz .firstdevice
|
||||
|
||||
; mov eax, [edx + IOCTL.input] ; get the pci bus and device numbers
|
||||
mov ax, [eax+1] ;
|
||||
.nextdevice:
|
||||
mov ebx, [esi]
|
||||
cmp al, byte [ebx + device.pci_bus]
|
||||
jne .next
|
||||
cmp ah, byte [ebx + device.pci_dev]
|
||||
je .find_devicenum ; Device is already loaded, let's find it's device number
|
||||
.next:
|
||||
add esi, 4
|
||||
loop .nextdevice
|
||||
|
||||
|
||||
; This device doesnt have its own eth_device structure yet, lets create one
|
||||
.firstdevice:
|
||||
cmp [devices], MAX_DEVICES ; First check if the driver can handle one more card
|
||||
jae .fail
|
||||
|
||||
allocate_and_clear ebx, sizeof.device, .fail ; Allocate the buffer for device structure
|
||||
|
||||
; Fill in the direct call addresses into the struct
|
||||
|
||||
mov [ebx + device.reset], reset
|
||||
mov [ebx + device.transmit], transmit
|
||||
mov [ebx + device.unload], unload
|
||||
mov [ebx + device.name], my_service
|
||||
|
||||
; save the pci bus and device numbers
|
||||
|
||||
mov eax, [edx + IOCTL.input]
|
||||
movzx ecx, byte [eax+1]
|
||||
mov [ebx + device.pci_bus], ecx
|
||||
movzx ecx, byte [eax+2]
|
||||
mov [ebx + device.pci_dev], ecx
|
||||
|
||||
; Now, it's time to find the base mmio addres of the PCI device
|
||||
|
||||
stdcall PCI_find_mmio, [ebx + device.pci_bus], [ebx + device.pci_dev]
|
||||
test eax, eax
|
||||
jz .destroy
|
||||
|
||||
; Create virtual mapping of the physical memory
|
||||
|
||||
invoke MapIoMem, eax, 10000h, PG_SW+PG_NOCACHE
|
||||
mov [ebx + device.mmio_addr], eax
|
||||
|
||||
; We've found the mmio address, find IRQ now
|
||||
|
||||
invoke PciRead8, [ebx + device.pci_bus], [ebx + device.pci_dev], PCI_header00.interrupt_line
|
||||
mov [ebx + device.irq_line], al
|
||||
|
||||
DEBUGF 1,"Hooking into device, dev:%x, bus:%x, irq:%x, addr:%x\n",\
|
||||
[ebx + device.pci_dev]:1,[ebx + device.pci_bus]:1,[ebx + device.irq_line]:1,[ebx + device.mmio_addr]:8
|
||||
|
||||
; Ok, the eth_device structure is ready, let's probe the device
|
||||
call probe ; this function will output in eax
|
||||
test eax, eax
|
||||
jnz .err ; If an error occured, exit
|
||||
|
||||
mov eax, [devices] ; Add the device structure to our device list
|
||||
mov [device_list+4*eax], ebx ; (IRQ handler uses this list to find device)
|
||||
inc [devices] ;
|
||||
|
||||
mov [ebx + device.type], NET_TYPE_ETH
|
||||
invoke NetRegDev
|
||||
|
||||
cmp eax, -1
|
||||
je .destroy
|
||||
|
||||
ret
|
||||
|
||||
; If the device was already loaded, find the device number and return it in eax
|
||||
|
||||
.find_devicenum:
|
||||
DEBUGF 1,"Trying to find device number of already registered device\n"
|
||||
invoke NetPtrToNum ; This kernel procedure converts a pointer to device struct in ebx
|
||||
; into a device number in edi
|
||||
mov eax, edi ; Application wants it in eax instead
|
||||
DEBUGF 1,"Kernel says: %u\n", eax
|
||||
ret
|
||||
|
||||
; If an error occured, remove all allocated data and exit (returning -1 in eax)
|
||||
|
||||
.destroy:
|
||||
; todo: reset device into virgin state
|
||||
|
||||
.err:
|
||||
invoke KernelFree, ebx
|
||||
|
||||
.fail:
|
||||
or eax, -1
|
||||
ret
|
||||
|
||||
;------------------------------------------------------
|
||||
endp
|
||||
|
||||
|
||||
;;/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\;;
|
||||
;; ;;
|
||||
;; Actual Hardware dependent code starts here ;;
|
||||
;; ;;
|
||||
;;/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\;;
|
||||
|
||||
unload:
|
||||
; TODO: (in this particular order)
|
||||
;
|
||||
; - Stop the device
|
||||
; - Detach int handler
|
||||
; - Remove device from local list (device_list)
|
||||
; - call unregister function in kernel
|
||||
; - Remove all allocated structures and buffers the card used
|
||||
|
||||
or eax, -1
|
||||
|
||||
ret
|
||||
|
||||
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;
|
||||
;; probe: enables the device (if it really is BCM57XX)
|
||||
;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
probe:
|
||||
|
||||
DEBUGF 1,"Probe\n"
|
||||
|
||||
; Make the device a bus master
|
||||
invoke PciRead32, [ebx + device.pci_bus], [ebx + device.pci_dev], PCI_header00.command
|
||||
or al, PCI_CMD_MASTER + PCI_CMD_MMIO + PCI_CMD_PIO
|
||||
invoke PciWrite32, [ebx + device.pci_bus], [ebx + device.pci_dev], PCI_header00.command, eax
|
||||
|
||||
; TODO: validate the device
|
||||
|
||||
reset:
|
||||
|
||||
DEBUGF 1,"Reset\n"
|
||||
|
||||
movzx eax, [ebx + device.irq_line]
|
||||
DEBUGF 1,"Attaching int handler to irq %x\n", eax:1
|
||||
invoke AttachIntHandler, eax, int_handler, ebx
|
||||
test eax, eax
|
||||
jnz @f
|
||||
DEBUGF 1,"\nCould not attach int handler!\n"
|
||||
; or eax, -1
|
||||
; ret
|
||||
@@:
|
||||
|
||||
call read_mac
|
||||
|
||||
; Set the mtu, kernel will be able to send now
|
||||
mov [ebx + device.mtu], 1514
|
||||
|
||||
; Set link state to unknown
|
||||
mov [ebx + device.state], ETH_LINK_UNKNOWN
|
||||
|
||||
ret
|
||||
|
||||
|
||||
|
||||
|
||||
align 4
|
||||
read_mac:
|
||||
|
||||
DEBUGF 1,"Read MAC\n"
|
||||
|
||||
mov esi, [ebx + device.mmio_addr]
|
||||
lea edi, [ebx + device.mac]
|
||||
movsd
|
||||
movsw
|
||||
|
||||
.mac_ok:
|
||||
DEBUGF 1,"MAC = %x-%x-%x-%x-%x-%x\n",\
|
||||
[ebx + device.mac+0]:2,[ebx + device.mac+1]:2,[ebx + device.mac+2]:2,[ebx + device.mac+3]:2,[ebx + device.mac+4]:2,[ebx + device.mac+5]:2
|
||||
|
||||
ret
|
||||
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; ;;
|
||||
;; Transmit ;;
|
||||
;; ;;
|
||||
;; In: pointer to device structure in ebx ;;
|
||||
;; Out: eax = 0 on success ;;
|
||||
;; ;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
align 16
|
||||
proc transmit stdcall bufferptr, buffersize
|
||||
|
||||
spin_lock_irqsave
|
||||
|
||||
DEBUGF 1,"Transmitting packet, buffer:%x, size:%u\n", [bufferptr], [buffersize]
|
||||
mov eax, [bufferptr]
|
||||
DEBUGF 1,"To: %x-%x-%x-%x-%x-%x From: %x-%x-%x-%x-%x-%x Type:%x%x\n",\
|
||||
[eax+00]:2,[eax+01]:2,[eax+02]:2,[eax+03]:2,[eax+04]:2,[eax+05]:2,\
|
||||
[eax+06]:2,[eax+07]:2,[eax+08]:2,[eax+09]:2,[eax+10]:2,[eax+11]:2,\
|
||||
[eax+13]:2,[eax+12]:2
|
||||
|
||||
cmp [buffersize], 1514
|
||||
ja .error
|
||||
cmp [buffersize], 60
|
||||
jb .error
|
||||
|
||||
; Program the descriptor
|
||||
|
||||
; test [something], STILL_BUSY?
|
||||
; jnz .overrun
|
||||
|
||||
; TODO: Program the descriptor
|
||||
|
||||
; Update stats
|
||||
inc [ebx + device.packets_tx]
|
||||
mov eax, [buffersize]
|
||||
add dword[ebx + device.bytes_tx], eax
|
||||
adc dword[ebx + device.bytes_tx + 4], 0
|
||||
|
||||
DEBUGF 1,"Transmit OK\n"
|
||||
spin_unlock_irqrestore
|
||||
xor eax, eax
|
||||
ret
|
||||
|
||||
.error:
|
||||
DEBUGF 2, "TX packet error\n"
|
||||
inc [ebx + device.packets_tx_err]
|
||||
invoke NetFree, [bufferptr]
|
||||
|
||||
spin_unlock_irqrestore
|
||||
or eax, -1
|
||||
ret
|
||||
|
||||
.overrun:
|
||||
DEBUGF 2, "TX overrun\n"
|
||||
inc [ebx + device.packets_tx_ovr]
|
||||
invoke NetFree, [bufferptr]
|
||||
|
||||
spin_unlock_irqrestore
|
||||
or eax, -1
|
||||
ret
|
||||
|
||||
endp
|
||||
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; ;;
|
||||
;; Interrupt handler ;;
|
||||
;; ;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;
|
||||
align 16
|
||||
int_handler:
|
||||
|
||||
push ebx esi edi
|
||||
|
||||
mov ebx, [esp+4*4]
|
||||
DEBUGF 1,"INT for 0x%x\n", ebx
|
||||
|
||||
; TODO? if we are paranoid, we can check that the value from ebx is present in the current device_list
|
||||
|
||||
mov edi, [ebx + device.mmio_addr]
|
||||
; mov eax, [edi + REG_ICR]
|
||||
test eax, eax
|
||||
jz .nothing
|
||||
|
||||
DEBUGF 1,"Status: %x ", eax
|
||||
|
||||
; TODO: handle interrupts
|
||||
|
||||
pop edi esi ebx
|
||||
xor eax, eax
|
||||
inc eax
|
||||
|
||||
ret
|
||||
|
||||
.nothing:
|
||||
pop edi esi ebx
|
||||
xor eax, eax
|
||||
|
||||
ret
|
||||
|
||||
|
||||
|
||||
|
||||
; End of code
|
||||
|
||||
data fixups
|
||||
end data
|
||||
|
||||
include '../peimport.inc'
|
||||
|
||||
my_service db 'BCM57XX',0 ; max 16 chars include zero
|
||||
|
||||
include_debug_strings ; All data wich FDO uses will be included here
|
||||
|
||||
align 4
|
||||
devices dd 0
|
||||
device_list rd MAX_DEVICES ; This list contains all pointers to device structures the driver is handling
|
||||
|
||||
|
||||
+268
-262
@@ -1,262 +1,268 @@
|
||||
driverlist:
|
||||
db 'RTL8139',0 ; Realtek 8139
|
||||
dd 0x813910ec
|
||||
dd 0x813810ec
|
||||
dd 0x12111113
|
||||
dd 0x13601500
|
||||
dd 0x13604033
|
||||
dd 0x13001186
|
||||
dd 0x13401186
|
||||
dd 0xab0613d1
|
||||
dd 0xa1171259
|
||||
dd 0xa11e1259
|
||||
dd 0xab0614ea
|
||||
dd 0xab0714ea
|
||||
dd 0x123411db
|
||||
dd 0x91301432
|
||||
dd 0x101202ac
|
||||
dd 0x0106018a
|
||||
dd 0x1211126c
|
||||
dd 0x81391743
|
||||
dd 0x8139021b
|
||||
dd 0x0 ; end
|
||||
|
||||
db 'RTL8029',0 ; Realtek 8029 (PCI NE2000)
|
||||
dd 0x802910ec
|
||||
dd 0x0
|
||||
|
||||
db 'I8255X',0 ; Intel eepro100
|
||||
dd 0x10298086
|
||||
dd 0x10308086
|
||||
;dd 0x10318086
|
||||
;dd 0x10328086
|
||||
;dd 0x10338086
|
||||
;dd 0x10348086
|
||||
;dd 0x10388086
|
||||
dd 0x10398086
|
||||
;dd 0x103A8086
|
||||
;dd 0x103B8086
|
||||
;dd 0x103C8086
|
||||
;dd 0x103D8086
|
||||
;dd 0x103E8086
|
||||
;dd 0x10508086
|
||||
;dd 0x10518086
|
||||
;dd 0x10528086
|
||||
;dd 0x10538086
|
||||
;dd 0x10548086
|
||||
;dd 0x10558086
|
||||
;dd 0x10568086
|
||||
;dd 0x10578086
|
||||
;dd 0x10598086
|
||||
;dd 0x10648086
|
||||
;dd 0x10658086
|
||||
;dd 0x10668086
|
||||
;dd 0x10678086
|
||||
dd 0x10688086
|
||||
;dd 0x10698086
|
||||
;dd 0x106A8086
|
||||
;dd 0x106B8086
|
||||
;dd 0x10918086
|
||||
;dd 0x10928086
|
||||
;dd 0x10938086
|
||||
;dd 0x10948086
|
||||
;dd 0x10958086
|
||||
;dd 0x10fe8086
|
||||
dd 0x12098086
|
||||
dd 0x12298086
|
||||
dd 0x24498086
|
||||
;dd 0x24598086
|
||||
;dd 0x245D8086
|
||||
;dd 0x27DC8086
|
||||
dd 0x0
|
||||
|
||||
db 'RTL8169',0 ; Realtek 8169
|
||||
dd 0x816710ec
|
||||
dd 0x816810ec
|
||||
dd 0x816910ec
|
||||
dd 0x011616ec
|
||||
dd 0x43001186
|
||||
dd 0x813610ec
|
||||
dd 0x0
|
||||
|
||||
db '3C59X',0 ; 3Com 59x
|
||||
dd 0x590010b7
|
||||
dd 0x592010b7
|
||||
dd 0x597010b7
|
||||
dd 0x595010b7
|
||||
dd 0x595110b7
|
||||
dd 0x595210b7
|
||||
dd 0x900010b7
|
||||
dd 0x900110b7
|
||||
dd 0x900410b7
|
||||
dd 0x900510b7
|
||||
dd 0x900610b7
|
||||
dd 0x900A10b7
|
||||
dd 0x905010b7
|
||||
dd 0x905110b7
|
||||
dd 0x905510b7
|
||||
dd 0x905810b7
|
||||
dd 0x905A10b7
|
||||
dd 0x920010b7
|
||||
dd 0x980010b7
|
||||
dd 0x980510b7
|
||||
dd 0x764610b7
|
||||
dd 0x505510b7
|
||||
dd 0x605510b7
|
||||
dd 0x605610b7
|
||||
dd 0x5b5710b7
|
||||
dd 0x505710b7
|
||||
dd 0x515710b7
|
||||
dd 0x525710b7
|
||||
dd 0x656010b7
|
||||
dd 0x656210b7
|
||||
dd 0x656410b7
|
||||
dd 0x450010b7
|
||||
dd 0x0
|
||||
|
||||
db 'SIS900',0
|
||||
dd 0x09001039
|
||||
dd 0x70161039
|
||||
dd 0x0
|
||||
|
||||
db 'PCNET32',0
|
||||
dd 0x20001022
|
||||
dd 0x26251022
|
||||
dd 0x20011022
|
||||
dd 0x0
|
||||
|
||||
db 'FORCEDETH',0 ; nVidia nForce
|
||||
dd 0x006610de
|
||||
dd 0x01c310de
|
||||
dd 0x00D610de
|
||||
dd 0x008610de
|
||||
dd 0x008c10de
|
||||
dd 0x00e610de
|
||||
dd 0x00df10de
|
||||
dd 0x005610de
|
||||
dd 0x005710de
|
||||
dd 0x003710de
|
||||
dd 0x003810de
|
||||
dd 0x026810de
|
||||
dd 0x026910de
|
||||
dd 0x037210de
|
||||
dd 0x037310de
|
||||
dd 0x03e510de
|
||||
dd 0x03e610de
|
||||
dd 0x03ee10de
|
||||
dd 0x03ef10de
|
||||
dd 0x045010de
|
||||
dd 0x045110de
|
||||
dd 0x045210de
|
||||
dd 0x045310de
|
||||
dd 0x054c10de
|
||||
dd 0x054d10de
|
||||
dd 0x054e10de
|
||||
dd 0x054f10de
|
||||
dd 0x07dc10de
|
||||
dd 0x07dd10de
|
||||
dd 0x07de10de
|
||||
dd 0x07df10de
|
||||
dd 0x076010de
|
||||
dd 0x076110de
|
||||
dd 0x076210de
|
||||
dd 0x076310de
|
||||
dd 0x0ab010de
|
||||
dd 0x0ab110de
|
||||
dd 0x0ab210de
|
||||
dd 0x0ab310de
|
||||
dd 0x0d7d10de
|
||||
dd 0x0
|
||||
|
||||
db 'MTD80X',0 ; Myson / Surecom
|
||||
dd 0x08031516
|
||||
dd 0x08001516
|
||||
dd 0x08911516
|
||||
dd 0x0
|
||||
|
||||
db 'DEC21X4X',0
|
||||
dd 0x00021011
|
||||
dd 0x00091011
|
||||
dd 0x00141011
|
||||
dd 0x00191011
|
||||
dd 0x000211AD
|
||||
dd 0x051210D9
|
||||
dd 0x053110D9
|
||||
dd 0x1400125B
|
||||
dd 0x09851317
|
||||
dd 0x0
|
||||
|
||||
db 'R6040',0 ; eBox integrated network
|
||||
dd 0x604017F3
|
||||
dd 0x0
|
||||
|
||||
db 'I8254X',0
|
||||
dd 0x10008086 ; 82542 (Fiber)
|
||||
dd 0x10018086 ; 82543GC (Fiber)
|
||||
dd 0x10048086 ; 82543GC (Copper)
|
||||
dd 0x10088086 ; 82544EI (Copper)
|
||||
dd 0x10098086 ; 82544EI (Fiber)
|
||||
dd 0x100A8086 ; 82540EM
|
||||
dd 0x100C8086 ; 82544GC (Copper)
|
||||
dd 0x100D8086 ; 82544GC (LOM)
|
||||
dd 0x100E8086 ; 82540EM
|
||||
dd 0x100F8086 ; 82545EM (Copper)
|
||||
dd 0x10108086 ; 82546EB (Copper)
|
||||
dd 0x10118086 ; 82545EM (Fiber)
|
||||
dd 0x10128086 ; 82546EB (Fiber)
|
||||
dd 0x10138086 ; 82541EI
|
||||
dd 0x10148086 ; 82541ER
|
||||
dd 0x10158086 ; 82540EM (LOM)
|
||||
dd 0x10168086 ; 82540EP (Mobile)
|
||||
dd 0x10178086 ; 82540EP
|
||||
dd 0x10188086 ; 82541EI
|
||||
dd 0x10198086 ; 82547EI
|
||||
dd 0x101a8086 ; 82547EI (Mobile)
|
||||
dd 0x101d8086 ; 82546EB
|
||||
dd 0x101e8086 ; 82540EP (Mobile)
|
||||
dd 0x10268086 ; 82545GM
|
||||
dd 0x10278086 ; 82545GM
|
||||
dd 0x10288086 ; 82545GM
|
||||
dd 0x105b8086 ; 82546GB (Copper)
|
||||
dd 0x10758086 ; 82547GI
|
||||
dd 0x10768086 ; 82541GI
|
||||
dd 0x10778086 ; 82541GI
|
||||
dd 0x10788086 ; 82541ER
|
||||
dd 0x10798086 ; 82546GB
|
||||
dd 0x107a8086 ; 82546GB
|
||||
dd 0x107b8086 ; 82546GB
|
||||
dd 0x107c8086 ; 82541PI
|
||||
dd 0x10b58086 ; 82546GB (Copper)
|
||||
dd 0x11078086 ; 82544EI
|
||||
dd 0x11128086 ; 82544GC
|
||||
dd 0x15A18086 ; I218-V
|
||||
dd 0x0
|
||||
|
||||
db 'RHINE', 0 ; VIA Rhine
|
||||
dd 0x30431106
|
||||
dd 0x61001106
|
||||
dd 0x30651106
|
||||
dd 0x31061106
|
||||
dd 0x30531106
|
||||
dd 0x0
|
||||
|
||||
|
||||
db 'AR81XX', 0
|
||||
dd 0x10631969 ; AR8131
|
||||
;dd 0x10621969 ; AR8132
|
||||
;dd 0x10731969 ; AR8151 V1
|
||||
;dd 0x10831969 ; AR8151 V2
|
||||
;dd 0x20601969 ; AR8152 V1
|
||||
dd 0x20621969 ; AR8152 V2
|
||||
dd 0x10911969 ; AR8161
|
||||
;dd 0xe0911969 ; E2200
|
||||
;dd 0xe0a11969 ; E2400
|
||||
;dd 0xe0b11969 ; E2500
|
||||
dd 0x10901969 ; AR8162
|
||||
dd 0x10A11969 ; AR8171 (QCA8171)
|
||||
dd 0x10A01969 ; AR8172 (QCA8172)
|
||||
|
||||
|
||||
dd 0x0
|
||||
|
||||
dd 0x0 ; driverlist end
|
||||
driverlist:
|
||||
db 'RTL8139',0 ; Realtek 8139
|
||||
dd 0x813910ec
|
||||
dd 0x813810ec
|
||||
dd 0x12111113
|
||||
dd 0x13601500
|
||||
dd 0x13604033
|
||||
dd 0x13001186
|
||||
dd 0x13401186
|
||||
dd 0xab0613d1
|
||||
dd 0xa1171259
|
||||
dd 0xa11e1259
|
||||
dd 0xab0614ea
|
||||
dd 0xab0714ea
|
||||
dd 0x123411db
|
||||
dd 0x91301432
|
||||
dd 0x101202ac
|
||||
dd 0x0106018a
|
||||
dd 0x1211126c
|
||||
dd 0x81391743
|
||||
dd 0x8139021b
|
||||
dd 0x0 ; end
|
||||
|
||||
db 'RTL8029',0 ; Realtek 8029 (PCI NE2000)
|
||||
dd 0x802910ec
|
||||
dd 0x0
|
||||
|
||||
db 'I8255X',0 ; Intel eepro100
|
||||
dd 0x10298086
|
||||
dd 0x10308086
|
||||
;dd 0x10318086
|
||||
;dd 0x10328086
|
||||
;dd 0x10338086
|
||||
;dd 0x10348086
|
||||
;dd 0x10388086
|
||||
dd 0x10398086
|
||||
;dd 0x103A8086
|
||||
;dd 0x103B8086
|
||||
;dd 0x103C8086
|
||||
;dd 0x103D8086
|
||||
;dd 0x103E8086
|
||||
;dd 0x10508086
|
||||
;dd 0x10518086
|
||||
;dd 0x10528086
|
||||
;dd 0x10538086
|
||||
;dd 0x10548086
|
||||
;dd 0x10558086
|
||||
;dd 0x10568086
|
||||
;dd 0x10578086
|
||||
;dd 0x10598086
|
||||
;dd 0x10648086
|
||||
;dd 0x10658086
|
||||
;dd 0x10668086
|
||||
;dd 0x10678086
|
||||
dd 0x10688086
|
||||
;dd 0x10698086
|
||||
;dd 0x106A8086
|
||||
;dd 0x106B8086
|
||||
;dd 0x10918086
|
||||
;dd 0x10928086
|
||||
;dd 0x10938086
|
||||
;dd 0x10948086
|
||||
;dd 0x10958086
|
||||
;dd 0x10fe8086
|
||||
dd 0x12098086
|
||||
dd 0x12298086
|
||||
dd 0x24498086
|
||||
;dd 0x24598086
|
||||
;dd 0x245D8086
|
||||
;dd 0x27DC8086
|
||||
dd 0x0
|
||||
|
||||
db 'RTL8169',0 ; Realtek 8169
|
||||
dd 0x816710ec
|
||||
dd 0x816810ec
|
||||
dd 0x816910ec
|
||||
dd 0x011616ec
|
||||
dd 0x43001186
|
||||
dd 0x813610ec
|
||||
dd 0x0
|
||||
|
||||
db '3C59X',0 ; 3Com 59x
|
||||
dd 0x590010b7
|
||||
dd 0x592010b7
|
||||
dd 0x597010b7
|
||||
dd 0x595010b7
|
||||
dd 0x595110b7
|
||||
dd 0x595210b7
|
||||
dd 0x900010b7
|
||||
dd 0x900110b7
|
||||
dd 0x900410b7
|
||||
dd 0x900510b7
|
||||
dd 0x900610b7
|
||||
dd 0x900A10b7
|
||||
dd 0x905010b7
|
||||
dd 0x905110b7
|
||||
dd 0x905510b7
|
||||
dd 0x905810b7
|
||||
dd 0x905A10b7
|
||||
dd 0x920010b7
|
||||
dd 0x980010b7
|
||||
dd 0x980510b7
|
||||
dd 0x764610b7
|
||||
dd 0x505510b7
|
||||
dd 0x605510b7
|
||||
dd 0x605610b7
|
||||
dd 0x5b5710b7
|
||||
dd 0x505710b7
|
||||
dd 0x515710b7
|
||||
dd 0x525710b7
|
||||
dd 0x656010b7
|
||||
dd 0x656210b7
|
||||
dd 0x656410b7
|
||||
dd 0x450010b7
|
||||
dd 0x0
|
||||
|
||||
db 'SIS900',0
|
||||
dd 0x09001039
|
||||
dd 0x70161039
|
||||
dd 0x0
|
||||
|
||||
db 'PCNET32',0
|
||||
dd 0x20001022
|
||||
dd 0x26251022
|
||||
dd 0x20011022
|
||||
dd 0x0
|
||||
|
||||
db 'FORCEDETH',0 ; nVidia nForce
|
||||
dd 0x006610de
|
||||
dd 0x01c310de
|
||||
dd 0x00D610de
|
||||
dd 0x008610de
|
||||
dd 0x008c10de
|
||||
dd 0x00e610de
|
||||
dd 0x00df10de
|
||||
dd 0x005610de
|
||||
dd 0x005710de
|
||||
dd 0x003710de
|
||||
dd 0x003810de
|
||||
dd 0x026810de
|
||||
dd 0x026910de
|
||||
dd 0x037210de
|
||||
dd 0x037310de
|
||||
dd 0x03e510de
|
||||
dd 0x03e610de
|
||||
dd 0x03ee10de
|
||||
dd 0x03ef10de
|
||||
dd 0x045010de
|
||||
dd 0x045110de
|
||||
dd 0x045210de
|
||||
dd 0x045310de
|
||||
dd 0x054c10de
|
||||
dd 0x054d10de
|
||||
dd 0x054e10de
|
||||
dd 0x054f10de
|
||||
dd 0x07dc10de
|
||||
dd 0x07dd10de
|
||||
dd 0x07de10de
|
||||
dd 0x07df10de
|
||||
dd 0x076010de
|
||||
dd 0x076110de
|
||||
dd 0x076210de
|
||||
dd 0x076310de
|
||||
dd 0x0ab010de
|
||||
dd 0x0ab110de
|
||||
dd 0x0ab210de
|
||||
dd 0x0ab310de
|
||||
dd 0x0d7d10de
|
||||
dd 0x0
|
||||
|
||||
db 'MTD80X',0 ; Myson / Surecom
|
||||
dd 0x08031516
|
||||
dd 0x08001516
|
||||
dd 0x08911516
|
||||
dd 0x0
|
||||
|
||||
db 'DEC21X4X',0
|
||||
dd 0x00021011
|
||||
dd 0x00091011
|
||||
dd 0x00141011
|
||||
dd 0x00191011
|
||||
dd 0x000211AD
|
||||
dd 0x051210D9
|
||||
dd 0x053110D9
|
||||
dd 0x1400125B
|
||||
dd 0x09851317
|
||||
dd 0x0
|
||||
|
||||
db 'R6040',0 ; eBox integrated network
|
||||
dd 0x604017F3
|
||||
dd 0x0
|
||||
|
||||
db 'I8254X',0
|
||||
dd 0x10008086 ; 82542 (Fiber)
|
||||
dd 0x10018086 ; 82543GC (Fiber)
|
||||
dd 0x10048086 ; 82543GC (Copper)
|
||||
dd 0x10088086 ; 82544EI (Copper)
|
||||
dd 0x10098086 ; 82544EI (Fiber)
|
||||
dd 0x100A8086 ; 82540EM
|
||||
dd 0x100C8086 ; 82544GC (Copper)
|
||||
dd 0x100D8086 ; 82544GC (LOM)
|
||||
dd 0x100E8086 ; 82540EM
|
||||
dd 0x100F8086 ; 82545EM (Copper)
|
||||
dd 0x10108086 ; 82546EB (Copper)
|
||||
dd 0x10118086 ; 82545EM (Fiber)
|
||||
dd 0x10128086 ; 82546EB (Fiber)
|
||||
dd 0x10138086 ; 82541EI
|
||||
dd 0x10148086 ; 82541ER
|
||||
dd 0x10158086 ; 82540EM (LOM)
|
||||
dd 0x10168086 ; 82540EP (Mobile)
|
||||
dd 0x10178086 ; 82540EP
|
||||
dd 0x10188086 ; 82541EI
|
||||
dd 0x10198086 ; 82547EI
|
||||
dd 0x101a8086 ; 82547EI (Mobile)
|
||||
dd 0x101d8086 ; 82546EB
|
||||
dd 0x101e8086 ; 82540EP (Mobile)
|
||||
dd 0x10268086 ; 82545GM
|
||||
dd 0x10278086 ; 82545GM
|
||||
dd 0x10288086 ; 82545GM
|
||||
dd 0x105b8086 ; 82546GB (Copper)
|
||||
dd 0x10758086 ; 82547GI
|
||||
dd 0x10768086 ; 82541GI
|
||||
dd 0x10778086 ; 82541GI
|
||||
dd 0x10788086 ; 82541ER
|
||||
dd 0x10798086 ; 82546GB
|
||||
dd 0x107a8086 ; 82546GB
|
||||
dd 0x107b8086 ; 82546GB
|
||||
dd 0x107c8086 ; 82541PI
|
||||
dd 0x10b58086 ; 82546GB (Copper)
|
||||
dd 0x11078086 ; 82544EI
|
||||
dd 0x11128086 ; 82544GC
|
||||
dd 0x15A18086 ; I218-V
|
||||
dd 0x0
|
||||
|
||||
db 'RHINE', 0 ; VIA Rhine
|
||||
dd 0x30431106
|
||||
dd 0x61001106
|
||||
dd 0x30651106
|
||||
dd 0x31061106
|
||||
dd 0x30531106
|
||||
dd 0x0
|
||||
|
||||
|
||||
db 'AR81XX', 0
|
||||
dd 0x10631969 ; AR8131
|
||||
;dd 0x10621969 ; AR8132
|
||||
;dd 0x10731969 ; AR8151 V1
|
||||
;dd 0x10831969 ; AR8151 V2
|
||||
;dd 0x20601969 ; AR8152 V1
|
||||
dd 0x20621969 ; AR8152 V2
|
||||
dd 0x10911969 ; AR8161
|
||||
;dd 0xe0911969 ; E2200
|
||||
;dd 0xe0a11969 ; E2400
|
||||
;dd 0xe0b11969 ; E2500
|
||||
dd 0x10901969 ; AR8162
|
||||
dd 0x10A11969 ; AR8171 (QCA8171)
|
||||
dd 0x10A01969 ; AR8172 (QCA8172)
|
||||
dd 0x0
|
||||
|
||||
db 'BCM57XX', 0
|
||||
dd 0x164514e4 ; BCM5701
|
||||
dd 0x100010b7 ; 3c985
|
||||
dd 0x165414e4 ; BCM5705
|
||||
dd 0x167714e4 ; BCM5751
|
||||
dd 0x169214e4 ; BCM57780
|
||||
dd 0x0
|
||||
|
||||
dd 0x0 ; driverlist end
|
||||
@@ -50,6 +50,7 @@ VendorID 0x126C, 'Nortel Networks Corp.'
|
||||
VendorID 0x1317, 'Admtek Inc.'
|
||||
VendorID 0x13D1, 'Abocom Systems'
|
||||
VendorID 0x1432, 'Edimax Computer Co'
|
||||
VendorID 0x14E4, 'Broadcom Corp.'
|
||||
VendorID 0x14EA, 'Planex Communications Inc.'
|
||||
VendorID 0x1500, 'Lantech Computer Company'
|
||||
VendorID 0x1516, 'Myson Technology Inc.'
|
||||
|
||||
Reference in new issue
Block a user