Compare commits

...
3 Commits
Author SHA1 Message Date
igorshandIgor Shutrov d98755374f apps/netcfg: show Broadcom for vendor id 14E4 (#708)
Test PR / Build (en_US) (pull_request) Successful in 2m34s
Test PR / Build (ru_RU) (pull_request) Successful in 2m40s
Test PR / Build (es_ES) (pull_request) Successful in 2m47s
Co-authored-by: Igor Shutrov <kolibridev@inbox.ru>
Reviewed-on: #708
Reviewed-by: Kiril Lipatov <lipatov.kiril@gmail.com>
Reviewed-by: hidnplayr <hidnplayr@gmail.com>
Co-authored-by: igorsh <kolibridev@mail.ru>
2026-09-20 09:45:08 +00:00
hidnplayr 3a29c4395c Fix build, add bcm57xx to netcfg
Test PR / Build (ru_RU) (pull_request) Successful in 1m51s
Test PR / Build (en_US) (pull_request) Successful in 1m57s
Test PR / Build (es_ES) (pull_request) Successful in 2m3s
2026-09-06 21:14:48 +02:00
hidnplayr 25382c1e3c Ethernet driver for Broadcom NetXtreme (57xx) family
Test PR / Build (en_US) (pull_request) Failing after 55s
Test PR / Build (es_ES) (pull_request) Failing after 1m3s
Test PR / Build (ru_RU) (pull_request) Failing after 1m10s
2026-09-06 21:05:04 +02:00
5 changed files with 3385 additions and 699 deletions

No files matched your search

File diff suppressed because it is too large. Load diff
+530
View File
@@ -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
-437
View File
@@ -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
View File
@@ -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
+1
View File
@@ -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.'