iPXE
Macros | Functions
3c509.h File Reference
#include "nic.h"

Go to the source code of this file.

Macros

#define TX_INIT_RATE   16
 
#define TX_INIT_MAX_RATE   64
 
#define RX_INIT_LATENCY   64
 
#define RX_INIT_EARLY_THRESH   64
 
#define MIN_RX_EARLY_THRESHF   16 /* not less than ether_header */
 
#define MIN_RX_EARLY_THRESHL   4
 
#define EEPROMSIZE   0x40
 
#define MAX_EEPROMBUSY   1000
 
#define EP_ID_PORT_START   0x110 /* avoid 0x100 to avoid conflict with SB16 */
 
#define EP_ID_PORT_INC   0x10
 
#define EP_ID_PORT_END   0x200
 
#define EP_TAG_MAX   0x7 /* must be 2^n - 1 */
 
#define EEPROM_CMD_RD   0x0080 /* Read: Address required (5 bits) */
 
#define EEPROM_CMD_WR   0x0040 /* Write: Address required (5 bits) */
 
#define EEPROM_CMD_ERASE   0x00c0 /* Erase: Address required (5 bits) */
 
#define EEPROM_CMD_EWEN   0x0030 /* Erase/Write Enable: No data required */
 
#define EEPROM_BUSY   (1<<15)
 
#define EEPROM_TST_MODE   (1<<14)
 
#define is_eeprom_busy(b)   (inw((b)+EP_W0_EEPROM_COMMAND)&EEPROM_BUSY)
 
#define GO_WINDOW(b, x)   outw(WINDOW_SELECT|(x), (b)+EP_COMMAND)
 
#define EEPROM_NODE_ADDR_0   0x0 /* Word */
 
#define EEPROM_NODE_ADDR_1   0x1 /* Word */
 
#define EEPROM_NODE_ADDR_2   0x2 /* Word */
 
#define EEPROM_PROD_ID   0x3 /* 0x9[0-f]50 */
 
#define EEPROM_MFG_ID   0x7 /* 0x6d50 */
 
#define EEPROM_ADDR_CFG   0x8 /* Base addr */
 
#define EEPROM_RESOURCE_CFG   0x9 /* IRQ. Bits 12-15 */
 
#define EP_COMMAND
 
#define EP_STATUS
 
#define EP_WINDOW
 
#define EP_W0_EEPROM_DATA   0x0c
 
#define EP_W0_EEPROM_COMMAND   0x0a
 
#define EP_W0_RESOURCE_CFG   0x08
 
#define EP_W0_ADDRESS_CFG   0x06
 
#define EP_W0_CONFIG_CTRL   0x04
 
#define EP_W0_PRODUCT_ID   0x02
 
#define EP_W0_MFG_ID   0x00
 
#define EP_W1_TX_PIO_WR_2   0x02
 
#define EP_W1_TX_PIO_WR_1   0x00
 
#define EP_W1_FREE_TX   0x0c
 
#define EP_W1_TX_STATUS   0x0b /* byte */
 
#define EP_W1_TIMER   0x0a /* byte */
 
#define EP_W1_RX_STATUS   0x08
 
#define EP_W1_RX_PIO_RD_2   0x02
 
#define EP_W1_RX_PIO_RD_1   0x00
 
#define EP_W2_ADDR_5   0x05
 
#define EP_W2_ADDR_4   0x04
 
#define EP_W2_ADDR_3   0x03
 
#define EP_W2_ADDR_2   0x02
 
#define EP_W2_ADDR_1   0x01
 
#define EP_W2_ADDR_0   0x00
 
#define EP_W3_FREE_TX   0x0c
 
#define EP_W3_FREE_RX   0x0a
 
#define EP_W4_MEDIA_TYPE   0x0a
 
#define EP_W4_CTRLR_STATUS   0x08
 
#define EP_W4_NET_DIAG   0x06
 
#define EP_W4_FIFO_DIAG   0x04
 
#define EP_W4_HOST_DIAG   0x02
 
#define EP_W4_TX_DIAG   0x00
 
#define EP_W5_READ_0_MASK   0x0c
 
#define EP_W5_INTR_MASK   0x0a
 
#define EP_W5_RX_FILTER   0x08
 
#define EP_W5_RX_EARLY_THRESH   0x06
 
#define EP_W5_TX_AVAIL_THRESH   0x02
 
#define EP_W5_TX_START_THRESH   0x00
 
#define TX_TOTAL_OK   0x0c
 
#define RX_TOTAL_OK   0x0a
 
#define TX_DEFERRALS   0x08
 
#define RX_FRAMES_OK   0x07
 
#define TX_FRAMES_OK   0x06
 
#define RX_OVERRUNS   0x05
 
#define TX_COLLISIONS   0x04
 
#define TX_AFTER_1_COLLISION   0x03
 
#define TX_AFTER_X_COLLISIONS   0x02
 
#define TX_NO_SQE   0x01
 
#define TX_CD_LOST   0x00
 
#define GLOBAL_RESET
 
#define WINDOW_SELECT   (unsigned short) (0x1<<11)
 
#define START_TRANSCEIVER
 
#define RX_DISABLE
 
#define RX_ENABLE   (unsigned short) (0x4<<11)
 
#define RX_RESET   (unsigned short) (0x5<<11)
 
#define RX_DISCARD_TOP_PACK   (unsigned short) (0x8<<11)
 
#define TX_ENABLE   (unsigned short) (0x9<<11)
 
#define TX_DISABLE   (unsigned short) (0xa<<11)
 
#define TX_RESET   (unsigned short) (0xb<<11)
 
#define REQ_INTR   (unsigned short) (0xc<<11)
 
#define SET_INTR_MASK   (unsigned short) (0xe<<11)
 
#define SET_RD_0_MASK   (unsigned short) (0xf<<11)
 
#define SET_RX_FILTER   (unsigned short) (0x10<<11)
 
#define FIL_INDIVIDUAL   (unsigned short) (0x1)
 
#define FIL_GROUP   (unsigned short) (0x2)
 
#define FIL_BRDCST   (unsigned short) (0x4)
 
#define FIL_ALL   (unsigned short) (0x8)
 
#define SET_RX_EARLY_THRESH   (unsigned short) (0x11<<11)
 
#define SET_TX_AVAIL_THRESH   (unsigned short) (0x12<<11)
 
#define SET_TX_START_THRESH   (unsigned short) (0x13<<11)
 
#define STATS_ENABLE   (unsigned short) (0x15<<11)
 
#define STATS_DISABLE   (unsigned short) (0x16<<11)
 
#define STOP_TRANSCEIVER   (unsigned short) (0x17<<11)
 
#define ACK_INTR   (unsigned short) (0x6800)
 
#define C_INTR_LATCH   (unsigned short) (ACK_INTR|0x1)
 
#define C_CARD_FAILURE   (unsigned short) (ACK_INTR|0x2)
 
#define C_TX_COMPLETE   (unsigned short) (ACK_INTR|0x4)
 
#define C_TX_AVAIL   (unsigned short) (ACK_INTR|0x8)
 
#define C_RX_COMPLETE   (unsigned short) (ACK_INTR|0x10)
 
#define C_RX_EARLY   (unsigned short) (ACK_INTR|0x20)
 
#define C_INT_RQD   (unsigned short) (ACK_INTR|0x40)
 
#define C_UPD_STATS   (unsigned short) (ACK_INTR|0x80)
 
#define S_INTR_LATCH   (unsigned short) (0x1)
 
#define S_CARD_FAILURE   (unsigned short) (0x2)
 
#define S_TX_COMPLETE   (unsigned short) (0x4)
 
#define S_TX_AVAIL   (unsigned short) (0x8)
 
#define S_RX_COMPLETE   (unsigned short) (0x10)
 
#define S_RX_EARLY   (unsigned short) (0x20)
 
#define S_INT_RQD   (unsigned short) (0x40)
 
#define S_UPD_STATS   (unsigned short) (0x80)
 
#define S_5_INTS
 
#define S_COMMAND_IN_PROGRESS   (unsigned short) (0x1000)
 
#define ERR_RX_INCOMPLETE   (unsigned short) (0x1<<15)
 
#define ERR_RX   (unsigned short) (0x1<<14)
 
#define ERR_RX_OVERRUN   (unsigned short) (0x8<<11)
 
#define ERR_RX_RUN_PKT   (unsigned short) (0xb<<11)
 
#define ERR_RX_ALIGN   (unsigned short) (0xc<<11)
 
#define ERR_RX_CRC   (unsigned short) (0xd<<11)
 
#define ERR_RX_OVERSIZE   (unsigned short) (0x9<<11)
 
#define ERR_RX_DRIBBLE   (unsigned short) (0x2<<11)
 
#define TXS_COMPLETE   0x80
 
#define TXS_SUCCES_INTR_REQ   0x40
 
#define TXS_JABBER   0x20
 
#define TXS_UNDERRUN   0x10
 
#define TXS_MAX_COLLISION   0x8
 
#define TXS_STATUS_OVERFLOW   0x4
 
#define IS_AUI   (1<<13)
 
#define IS_BNC   (1<<12)
 
#define IS_UTP   (1<<9)
 
#define ENABLE_DRQ_IRQ   0x0001
 
#define W0_P4_CMD_RESET_ADAPTER   0x4
 
#define W0_P4_CMD_ENABLE_ADAPTER   0x1
 
#define ENABLE_UTP   0xc0
 
#define DISABLE_UTP   0x0
 
#define SET_IRQ(i)   ( ((i)<<12) | 0xF00) /* set IRQ i */
 
#define RX_BYTES_MASK   (unsigned short) (0x07ff)
 
#define RX_ERROR   0x4000
 
#define RX_INCOMPLETE   0x8000
 
#define MFG_ID   0x6d50 /* in EEPROM and W0 ADDR_CONFIG */
 
#define PROD_ID   0x9150
 
#define AUI   0x1
 
#define BNC   0x2
 
#define UTP   0x4
 
#define RX_BYTES_MASK   (unsigned short) (0x07ff)
 

Functions

 FILE_LICENCE (BSD3)
 
int t5x9_probe (struct nic *nic, uint16_t prod_id_check, uint16_t prod_id_mask)
 
void t5x9_disable (struct nic *nic)
 

Macro Definition Documentation

◆ TX_INIT_RATE

#define TX_INIT_RATE   16

Definition at line 45 of file 3c509.h.

◆ TX_INIT_MAX_RATE

#define TX_INIT_MAX_RATE   64

Definition at line 46 of file 3c509.h.

◆ RX_INIT_LATENCY

#define RX_INIT_LATENCY   64

Definition at line 47 of file 3c509.h.

◆ RX_INIT_EARLY_THRESH

#define RX_INIT_EARLY_THRESH   64

Definition at line 48 of file 3c509.h.

◆ MIN_RX_EARLY_THRESHF

#define MIN_RX_EARLY_THRESHF   16 /* not less than ether_header */

Definition at line 49 of file 3c509.h.

◆ MIN_RX_EARLY_THRESHL

#define MIN_RX_EARLY_THRESHL   4

Definition at line 50 of file 3c509.h.

◆ EEPROMSIZE

#define EEPROMSIZE   0x40

Definition at line 52 of file 3c509.h.

◆ MAX_EEPROMBUSY

#define MAX_EEPROMBUSY   1000

Definition at line 53 of file 3c509.h.

◆ EP_ID_PORT_START

#define EP_ID_PORT_START   0x110 /* avoid 0x100 to avoid conflict with SB16 */

Definition at line 54 of file 3c509.h.

◆ EP_ID_PORT_INC

#define EP_ID_PORT_INC   0x10

Definition at line 55 of file 3c509.h.

◆ EP_ID_PORT_END

#define EP_ID_PORT_END   0x200

Definition at line 56 of file 3c509.h.

◆ EP_TAG_MAX

#define EP_TAG_MAX   0x7 /* must be 2^n - 1 */

Definition at line 57 of file 3c509.h.

◆ EEPROM_CMD_RD

#define EEPROM_CMD_RD   0x0080 /* Read: Address required (5 bits) */

Definition at line 63 of file 3c509.h.

◆ EEPROM_CMD_WR

#define EEPROM_CMD_WR   0x0040 /* Write: Address required (5 bits) */

Definition at line 64 of file 3c509.h.

◆ EEPROM_CMD_ERASE

#define EEPROM_CMD_ERASE   0x00c0 /* Erase: Address required (5 bits) */

Definition at line 65 of file 3c509.h.

◆ EEPROM_CMD_EWEN

#define EEPROM_CMD_EWEN   0x0030 /* Erase/Write Enable: No data required */

Definition at line 66 of file 3c509.h.

◆ EEPROM_BUSY

#define EEPROM_BUSY   (1<<15)

Definition at line 68 of file 3c509.h.

◆ EEPROM_TST_MODE

#define EEPROM_TST_MODE   (1<<14)

Definition at line 69 of file 3c509.h.

◆ is_eeprom_busy

#define is_eeprom_busy (   b)    (inw((b)+EP_W0_EEPROM_COMMAND)&EEPROM_BUSY)

Definition at line 74 of file 3c509.h.

◆ GO_WINDOW

#define GO_WINDOW (   b,
 
)    outw(WINDOW_SELECT|(x), (b)+EP_COMMAND)

Definition at line 75 of file 3c509.h.

◆ EEPROM_NODE_ADDR_0

#define EEPROM_NODE_ADDR_0   0x0 /* Word */

Definition at line 87 of file 3c509.h.

◆ EEPROM_NODE_ADDR_1

#define EEPROM_NODE_ADDR_1   0x1 /* Word */

Definition at line 88 of file 3c509.h.

◆ EEPROM_NODE_ADDR_2

#define EEPROM_NODE_ADDR_2   0x2 /* Word */

Definition at line 89 of file 3c509.h.

◆ EEPROM_PROD_ID

#define EEPROM_PROD_ID   0x3 /* 0x9[0-f]50 */

Definition at line 90 of file 3c509.h.

◆ EEPROM_MFG_ID

#define EEPROM_MFG_ID   0x7 /* 0x6d50 */

Definition at line 91 of file 3c509.h.

◆ EEPROM_ADDR_CFG

#define EEPROM_ADDR_CFG   0x8 /* Base addr */

Definition at line 92 of file 3c509.h.

◆ EEPROM_RESOURCE_CFG

#define EEPROM_RESOURCE_CFG   0x9 /* IRQ. Bits 12-15 */

Definition at line 93 of file 3c509.h.

◆ EP_COMMAND

#define EP_COMMAND
Value:
0x0e /* Write. BASE+0x0e is always a
* command reg. */

Definition at line 109 of file 3c509.h.

◆ EP_STATUS

#define EP_STATUS
Value:
0x0e /* Read. BASE+0x0e is always status
* reg. */

Definition at line 111 of file 3c509.h.

◆ EP_WINDOW

#define EP_WINDOW
Value:
0x0f /* Read. BASE+0x0f is always window
* reg. */

Definition at line 113 of file 3c509.h.

◆ EP_W0_EEPROM_DATA

#define EP_W0_EEPROM_DATA   0x0c

Definition at line 119 of file 3c509.h.

◆ EP_W0_EEPROM_COMMAND

#define EP_W0_EEPROM_COMMAND   0x0a

Definition at line 120 of file 3c509.h.

◆ EP_W0_RESOURCE_CFG

#define EP_W0_RESOURCE_CFG   0x08

Definition at line 121 of file 3c509.h.

◆ EP_W0_ADDRESS_CFG

#define EP_W0_ADDRESS_CFG   0x06

Definition at line 122 of file 3c509.h.

◆ EP_W0_CONFIG_CTRL

#define EP_W0_CONFIG_CTRL   0x04

Definition at line 123 of file 3c509.h.

◆ EP_W0_PRODUCT_ID

#define EP_W0_PRODUCT_ID   0x02

Definition at line 125 of file 3c509.h.

◆ EP_W0_MFG_ID

#define EP_W0_MFG_ID   0x00

Definition at line 126 of file 3c509.h.

◆ EP_W1_TX_PIO_WR_2

#define EP_W1_TX_PIO_WR_2   0x02

Definition at line 132 of file 3c509.h.

◆ EP_W1_TX_PIO_WR_1

#define EP_W1_TX_PIO_WR_1   0x00

Definition at line 133 of file 3c509.h.

◆ EP_W1_FREE_TX

#define EP_W1_FREE_TX   0x0c

Definition at line 135 of file 3c509.h.

◆ EP_W1_TX_STATUS

#define EP_W1_TX_STATUS   0x0b /* byte */

Definition at line 136 of file 3c509.h.

◆ EP_W1_TIMER

#define EP_W1_TIMER   0x0a /* byte */

Definition at line 137 of file 3c509.h.

◆ EP_W1_RX_STATUS

#define EP_W1_RX_STATUS   0x08

Definition at line 138 of file 3c509.h.

◆ EP_W1_RX_PIO_RD_2

#define EP_W1_RX_PIO_RD_2   0x02

Definition at line 139 of file 3c509.h.

◆ EP_W1_RX_PIO_RD_1

#define EP_W1_RX_PIO_RD_1   0x00

Definition at line 140 of file 3c509.h.

◆ EP_W2_ADDR_5

#define EP_W2_ADDR_5   0x05

Definition at line 146 of file 3c509.h.

◆ EP_W2_ADDR_4

#define EP_W2_ADDR_4   0x04

Definition at line 147 of file 3c509.h.

◆ EP_W2_ADDR_3

#define EP_W2_ADDR_3   0x03

Definition at line 148 of file 3c509.h.

◆ EP_W2_ADDR_2

#define EP_W2_ADDR_2   0x02

Definition at line 149 of file 3c509.h.

◆ EP_W2_ADDR_1

#define EP_W2_ADDR_1   0x01

Definition at line 150 of file 3c509.h.

◆ EP_W2_ADDR_0

#define EP_W2_ADDR_0   0x00

Definition at line 151 of file 3c509.h.

◆ EP_W3_FREE_TX

#define EP_W3_FREE_TX   0x0c

Definition at line 157 of file 3c509.h.

◆ EP_W3_FREE_RX

#define EP_W3_FREE_RX   0x0a

Definition at line 158 of file 3c509.h.

◆ EP_W4_MEDIA_TYPE

#define EP_W4_MEDIA_TYPE   0x0a

Definition at line 164 of file 3c509.h.

◆ EP_W4_CTRLR_STATUS

#define EP_W4_CTRLR_STATUS   0x08

Definition at line 165 of file 3c509.h.

◆ EP_W4_NET_DIAG

#define EP_W4_NET_DIAG   0x06

Definition at line 166 of file 3c509.h.

◆ EP_W4_FIFO_DIAG

#define EP_W4_FIFO_DIAG   0x04

Definition at line 167 of file 3c509.h.

◆ EP_W4_HOST_DIAG

#define EP_W4_HOST_DIAG   0x02

Definition at line 168 of file 3c509.h.

◆ EP_W4_TX_DIAG

#define EP_W4_TX_DIAG   0x00

Definition at line 169 of file 3c509.h.

◆ EP_W5_READ_0_MASK

#define EP_W5_READ_0_MASK   0x0c

Definition at line 175 of file 3c509.h.

◆ EP_W5_INTR_MASK

#define EP_W5_INTR_MASK   0x0a

Definition at line 176 of file 3c509.h.

◆ EP_W5_RX_FILTER

#define EP_W5_RX_FILTER   0x08

Definition at line 177 of file 3c509.h.

◆ EP_W5_RX_EARLY_THRESH

#define EP_W5_RX_EARLY_THRESH   0x06

Definition at line 178 of file 3c509.h.

◆ EP_W5_TX_AVAIL_THRESH

#define EP_W5_TX_AVAIL_THRESH   0x02

Definition at line 179 of file 3c509.h.

◆ EP_W5_TX_START_THRESH

#define EP_W5_TX_START_THRESH   0x00

Definition at line 180 of file 3c509.h.

◆ TX_TOTAL_OK

#define TX_TOTAL_OK   0x0c

Definition at line 186 of file 3c509.h.

◆ RX_TOTAL_OK

#define RX_TOTAL_OK   0x0a

Definition at line 187 of file 3c509.h.

◆ TX_DEFERRALS

#define TX_DEFERRALS   0x08

Definition at line 188 of file 3c509.h.

◆ RX_FRAMES_OK

#define RX_FRAMES_OK   0x07

Definition at line 189 of file 3c509.h.

◆ TX_FRAMES_OK

#define TX_FRAMES_OK   0x06

Definition at line 190 of file 3c509.h.

◆ RX_OVERRUNS

#define RX_OVERRUNS   0x05

Definition at line 191 of file 3c509.h.

◆ TX_COLLISIONS

#define TX_COLLISIONS   0x04

Definition at line 192 of file 3c509.h.

◆ TX_AFTER_1_COLLISION

#define TX_AFTER_1_COLLISION   0x03

Definition at line 193 of file 3c509.h.

◆ TX_AFTER_X_COLLISIONS

#define TX_AFTER_X_COLLISIONS   0x02

Definition at line 194 of file 3c509.h.

◆ TX_NO_SQE

#define TX_NO_SQE   0x01

Definition at line 195 of file 3c509.h.

◆ TX_CD_LOST

#define TX_CD_LOST   0x00

Definition at line 196 of file 3c509.h.

◆ GLOBAL_RESET

#define GLOBAL_RESET
Value:
(unsigned short) 0x0000 /* Wait at least 1ms
* after issuing */

Definition at line 212 of file 3c509.h.

◆ WINDOW_SELECT

#define WINDOW_SELECT   (unsigned short) (0x1<<11)

Definition at line 214 of file 3c509.h.

◆ START_TRANSCEIVER

#define START_TRANSCEIVER
Value:
(unsigned short) (0x2<<11) /* Read ADDR_CFG reg to
* determine whether
* this is needed. If
* so; wait 800 uSec
* before using trans-
* ceiver. */

Definition at line 215 of file 3c509.h.

◆ RX_DISABLE

#define RX_DISABLE
Value:
(unsigned short) (0x3<<11) /* state disabled on
* power-up */

Definition at line 221 of file 3c509.h.

◆ RX_ENABLE

#define RX_ENABLE   (unsigned short) (0x4<<11)

Definition at line 223 of file 3c509.h.

◆ RX_RESET

#define RX_RESET   (unsigned short) (0x5<<11)

Definition at line 224 of file 3c509.h.

◆ RX_DISCARD_TOP_PACK

#define RX_DISCARD_TOP_PACK   (unsigned short) (0x8<<11)

Definition at line 225 of file 3c509.h.

◆ TX_ENABLE

#define TX_ENABLE   (unsigned short) (0x9<<11)

Definition at line 226 of file 3c509.h.

◆ TX_DISABLE

#define TX_DISABLE   (unsigned short) (0xa<<11)

Definition at line 227 of file 3c509.h.

◆ TX_RESET

#define TX_RESET   (unsigned short) (0xb<<11)

Definition at line 228 of file 3c509.h.

◆ REQ_INTR

#define REQ_INTR   (unsigned short) (0xc<<11)

Definition at line 229 of file 3c509.h.

◆ SET_INTR_MASK

#define SET_INTR_MASK   (unsigned short) (0xe<<11)

Definition at line 230 of file 3c509.h.

◆ SET_RD_0_MASK

#define SET_RD_0_MASK   (unsigned short) (0xf<<11)

Definition at line 231 of file 3c509.h.

◆ SET_RX_FILTER

#define SET_RX_FILTER   (unsigned short) (0x10<<11)

Definition at line 232 of file 3c509.h.

◆ FIL_INDIVIDUAL

#define FIL_INDIVIDUAL   (unsigned short) (0x1)

Definition at line 233 of file 3c509.h.

◆ FIL_GROUP

#define FIL_GROUP   (unsigned short) (0x2)

Definition at line 234 of file 3c509.h.

◆ FIL_BRDCST

#define FIL_BRDCST   (unsigned short) (0x4)

Definition at line 235 of file 3c509.h.

◆ FIL_ALL

#define FIL_ALL   (unsigned short) (0x8)

Definition at line 236 of file 3c509.h.

◆ SET_RX_EARLY_THRESH

#define SET_RX_EARLY_THRESH   (unsigned short) (0x11<<11)

Definition at line 237 of file 3c509.h.

◆ SET_TX_AVAIL_THRESH

#define SET_TX_AVAIL_THRESH   (unsigned short) (0x12<<11)

Definition at line 238 of file 3c509.h.

◆ SET_TX_START_THRESH

#define SET_TX_START_THRESH   (unsigned short) (0x13<<11)

Definition at line 239 of file 3c509.h.

◆ STATS_ENABLE

#define STATS_ENABLE   (unsigned short) (0x15<<11)

Definition at line 240 of file 3c509.h.

◆ STATS_DISABLE

#define STATS_DISABLE   (unsigned short) (0x16<<11)

Definition at line 241 of file 3c509.h.

◆ STOP_TRANSCEIVER

#define STOP_TRANSCEIVER   (unsigned short) (0x17<<11)

Definition at line 242 of file 3c509.h.

◆ ACK_INTR

#define ACK_INTR   (unsigned short) (0x6800)

Definition at line 247 of file 3c509.h.

◆ C_INTR_LATCH

#define C_INTR_LATCH   (unsigned short) (ACK_INTR|0x1)

Definition at line 248 of file 3c509.h.

◆ C_CARD_FAILURE

#define C_CARD_FAILURE   (unsigned short) (ACK_INTR|0x2)

Definition at line 249 of file 3c509.h.

◆ C_TX_COMPLETE

#define C_TX_COMPLETE   (unsigned short) (ACK_INTR|0x4)

Definition at line 250 of file 3c509.h.

◆ C_TX_AVAIL

#define C_TX_AVAIL   (unsigned short) (ACK_INTR|0x8)

Definition at line 251 of file 3c509.h.

◆ C_RX_COMPLETE

#define C_RX_COMPLETE   (unsigned short) (ACK_INTR|0x10)

Definition at line 252 of file 3c509.h.

◆ C_RX_EARLY

#define C_RX_EARLY   (unsigned short) (ACK_INTR|0x20)

Definition at line 253 of file 3c509.h.

◆ C_INT_RQD

#define C_INT_RQD   (unsigned short) (ACK_INTR|0x40)

Definition at line 254 of file 3c509.h.

◆ C_UPD_STATS

#define C_UPD_STATS   (unsigned short) (ACK_INTR|0x80)

Definition at line 255 of file 3c509.h.

◆ S_INTR_LATCH

#define S_INTR_LATCH   (unsigned short) (0x1)

Definition at line 275 of file 3c509.h.

◆ S_CARD_FAILURE

#define S_CARD_FAILURE   (unsigned short) (0x2)

Definition at line 276 of file 3c509.h.

◆ S_TX_COMPLETE

#define S_TX_COMPLETE   (unsigned short) (0x4)

Definition at line 277 of file 3c509.h.

◆ S_TX_AVAIL

#define S_TX_AVAIL   (unsigned short) (0x8)

Definition at line 278 of file 3c509.h.

◆ S_RX_COMPLETE

#define S_RX_COMPLETE   (unsigned short) (0x10)

Definition at line 279 of file 3c509.h.

◆ S_RX_EARLY

#define S_RX_EARLY   (unsigned short) (0x20)

Definition at line 280 of file 3c509.h.

◆ S_INT_RQD

#define S_INT_RQD   (unsigned short) (0x40)

Definition at line 281 of file 3c509.h.

◆ S_UPD_STATS

#define S_UPD_STATS   (unsigned short) (0x80)

Definition at line 282 of file 3c509.h.

◆ S_5_INTS

#define S_5_INTS
Value:
#define S_RX_EARLY
Definition: 3c509.h:280
#define S_RX_COMPLETE
Definition: 3c509.h:279
#define S_TX_COMPLETE
Definition: 3c509.h:277
#define S_CARD_FAILURE
Definition: 3c509.h:276

Definition at line 283 of file 3c509.h.

◆ S_COMMAND_IN_PROGRESS

#define S_COMMAND_IN_PROGRESS   (unsigned short) (0x1000)

Definition at line 285 of file 3c509.h.

◆ ERR_RX_INCOMPLETE

#define ERR_RX_INCOMPLETE   (unsigned short) (0x1<<15)

Definition at line 304 of file 3c509.h.

◆ ERR_RX

#define ERR_RX   (unsigned short) (0x1<<14)

Definition at line 305 of file 3c509.h.

◆ ERR_RX_OVERRUN

#define ERR_RX_OVERRUN   (unsigned short) (0x8<<11)

Definition at line 306 of file 3c509.h.

◆ ERR_RX_RUN_PKT

#define ERR_RX_RUN_PKT   (unsigned short) (0xb<<11)

Definition at line 307 of file 3c509.h.

◆ ERR_RX_ALIGN

#define ERR_RX_ALIGN   (unsigned short) (0xc<<11)

Definition at line 308 of file 3c509.h.

◆ ERR_RX_CRC

#define ERR_RX_CRC   (unsigned short) (0xd<<11)

Definition at line 309 of file 3c509.h.

◆ ERR_RX_OVERSIZE

#define ERR_RX_OVERSIZE   (unsigned short) (0x9<<11)

Definition at line 310 of file 3c509.h.

◆ ERR_RX_DRIBBLE

#define ERR_RX_DRIBBLE   (unsigned short) (0x2<<11)

Definition at line 311 of file 3c509.h.

◆ TXS_COMPLETE

#define TXS_COMPLETE   0x80

Definition at line 331 of file 3c509.h.

◆ TXS_SUCCES_INTR_REQ

#define TXS_SUCCES_INTR_REQ   0x40

Definition at line 332 of file 3c509.h.

◆ TXS_JABBER

#define TXS_JABBER   0x20

Definition at line 333 of file 3c509.h.

◆ TXS_UNDERRUN

#define TXS_UNDERRUN   0x10

Definition at line 334 of file 3c509.h.

◆ TXS_MAX_COLLISION

#define TXS_MAX_COLLISION   0x8

Definition at line 335 of file 3c509.h.

◆ TXS_STATUS_OVERFLOW

#define TXS_STATUS_OVERFLOW   0x4

Definition at line 336 of file 3c509.h.

◆ IS_AUI

#define IS_AUI   (1<<13)

Definition at line 343 of file 3c509.h.

◆ IS_BNC

#define IS_BNC   (1<<12)

Definition at line 344 of file 3c509.h.

◆ IS_UTP

#define IS_UTP   (1<<9)

Definition at line 345 of file 3c509.h.

◆ ENABLE_DRQ_IRQ

#define ENABLE_DRQ_IRQ   0x0001

Definition at line 347 of file 3c509.h.

◆ W0_P4_CMD_RESET_ADAPTER

#define W0_P4_CMD_RESET_ADAPTER   0x4

Definition at line 348 of file 3c509.h.

◆ W0_P4_CMD_ENABLE_ADAPTER

#define W0_P4_CMD_ENABLE_ADAPTER   0x1

Definition at line 349 of file 3c509.h.

◆ ENABLE_UTP

#define ENABLE_UTP   0xc0

Definition at line 354 of file 3c509.h.

◆ DISABLE_UTP

#define DISABLE_UTP   0x0

Definition at line 355 of file 3c509.h.

◆ SET_IRQ

#define SET_IRQ (   i)    ( ((i)<<12) | 0xF00) /* set IRQ i */

Definition at line 361 of file 3c509.h.

◆ RX_BYTES_MASK [1/2]

#define RX_BYTES_MASK   (unsigned short) (0x07ff)

Definition at line 381 of file 3c509.h.

◆ RX_ERROR

#define RX_ERROR   0x4000

Definition at line 368 of file 3c509.h.

◆ RX_INCOMPLETE

#define RX_INCOMPLETE   0x8000

Definition at line 369 of file 3c509.h.

◆ MFG_ID

#define MFG_ID   0x6d50 /* in EEPROM and W0 ADDR_CONFIG */

Definition at line 374 of file 3c509.h.

◆ PROD_ID

#define PROD_ID   0x9150

Definition at line 375 of file 3c509.h.

◆ AUI

#define AUI   0x1

Definition at line 377 of file 3c509.h.

◆ BNC

#define BNC   0x2

Definition at line 378 of file 3c509.h.

◆ UTP

#define UTP   0x4

Definition at line 379 of file 3c509.h.

◆ RX_BYTES_MASK [2/2]

#define RX_BYTES_MASK   (unsigned short) (0x07ff)

Definition at line 381 of file 3c509.h.

Function Documentation

◆ FILE_LICENCE()

FILE_LICENCE ( BSD3  )

◆ t5x9_probe()

int t5x9_probe ( struct nic nic,
uint16_t  prod_id_check,
uint16_t  prod_id_mask 
)

Definition at line 342 of file 3c5x9.c.

343  {
344  uint16_t prod_id;
345  int i,j;
346  unsigned short *p;
347 
348  /* Check product ID */
349  prod_id = get_e ( nic->ioaddr, EEPROM_PROD_ID );
350  if ( ( prod_id & prod_id_mask ) != prod_id_check ) {
351  printf ( "EEPROM Product ID is incorrect (%hx & %hx != %hx)\n",
352  prod_id, prod_id_mask, prod_id_check );
353  return 0;
354  }
355 
356  /* test for presence of connectors */
357  GO_WINDOW(nic->ioaddr,0);
359  j = (inw(nic->ioaddr + EP_W0_ADDRESS_CFG) >> 14) & 0x3;
360 
361  switch(j) {
362  case 0:
363  if (i & IS_UTP) {
364  printf("10baseT\n");
365  connector = utp;
366  } else {
367  printf("10baseT not present\n");
368  return 0;
369  }
370  break;
371  case 1:
372  if (i & IS_AUI) {
373  printf("10base5\n");
374  } else {
375  printf("10base5 not present\n");
376  return 0;
377  }
378  break;
379  case 3:
380  if (i & IS_BNC) {
381  printf("10base2\n");
382  connector = bnc;
383  } else {
384  printf("10base2 not present\n");
385  return 0;
386  }
387  break;
388  default:
389  printf("unknown connector\n");
390  return 0;
391  }
392 
393  /*
394  * Read the station address from the eeprom
395  */
396  p = (unsigned short *) nic->node_addr;
397  for (i = 0; i < ETH_ALEN / 2; i++) {
398  p[i] = htons(get_e(nic->ioaddr,i));
399  GO_WINDOW(nic->ioaddr,2);
400  outw(ntohs(p[i]), nic->ioaddr + EP_W2_ADDR_0 + (i * 2));
401  }
402 
403  DBG ( "Ethernet Address: %s\n", eth_ntoa ( nic->node_addr ) );
404 
405  t509_reset(nic);
406 
408  return 1;
409 
410 }
unsigned short uint16_t
Definition: stdint.h:11
int printf(const char *fmt,...)
Write a formatted string to the console.
Definition: vsprintf.c:464
uint16_t inw(volatile uint16_t *io_addr)
Read 16-bit word from I/O-mapped device.
#define EEPROM_PROD_ID
Definition: 3c509.h:90
#define outw(data, io_addr)
Definition: io.h:319
static void t509_reset(struct nic *nic)
Definition: 3c5x9.c:124
#define ntohs(value)
Definition: byteswap.h:136
static struct nic_operations t509_operations
Definition: 3c5x9.c:332
#define IS_AUI
Definition: 3c509.h:343
#define IS_BNC
Definition: 3c509.h:344
unsigned int ioaddr
Definition: nic.h:55
#define EP_W0_ADDRESS_CFG
Definition: 3c509.h:122
Definition: 3c5x9.c:35
const char * eth_ntoa(const void *ll_addr)
Transcribe Ethernet address.
Definition: ethernet.c:175
static int get_e(uint16_t ioaddr, int offset)
Definition: 3c5x9.c:322
#define EP_W0_CONFIG_CTRL
Definition: 3c509.h:123
#define EP_W2_ADDR_0
Definition: 3c509.h:151
#define ETH_ALEN
Definition: if_ether.h:8
Definition: nic.h:49
unsigned char * node_addr
Definition: nic.h:52
static enum @8 connector
#define GO_WINDOW(b, x)
Definition: 3c509.h:75
#define DBG(...)
Print a debugging message.
Definition: compiler.h:498
struct nic_operations * nic_op
Definition: nic.h:50
#define htons(value)
Definition: byteswap.h:135
#define IS_UTP
Definition: 3c509.h:345
Definition: 3c5x9.c:35

References bnc, connector, DBG, EEPROM_PROD_ID, EP_W0_ADDRESS_CFG, EP_W0_CONFIG_CTRL, EP_W2_ADDR_0, ETH_ALEN, eth_ntoa(), get_e(), GO_WINDOW, htons, inw(), nic::ioaddr, IS_AUI, IS_BNC, IS_UTP, nic::nic_op, nic::node_addr, ntohs, outw, printf(), t509_operations, t509_reset(), and utp.

Referenced by el3_eisa_probe(), legacy_t509_probe(), and t529_probe().

◆ t5x9_disable()

void t5x9_disable ( struct nic nic)

Definition at line 40 of file 3c5x9.c.

40  {
41  /* stop card */
45  ;
48  udelay(1000);
55 
56  /*
57  * wait for reset to complete
58  */
60  ;
61 
62  GO_WINDOW(nic->ioaddr,0);
63 
64  /* Disable the card */
66 
67  /* Configure IRQ to none */
69 }
#define RX_DISCARD_TOP_PACK
Definition: 3c509.h:225
uint16_t inw(volatile uint16_t *io_addr)
Read 16-bit word from I/O-mapped device.
#define RX_DISABLE
Definition: 3c509.h:221
#define outw(data, io_addr)
Definition: io.h:319
#define RX_RESET
Definition: 3c509.h:224
#define EP_STATUS
Definition: 3c509.h:111
#define S_COMMAND_IN_PROGRESS
Definition: 3c509.h:285
#define TX_RESET
Definition: 3c509.h:228
#define EP_W0_RESOURCE_CFG
Definition: 3c509.h:121
unsigned int ioaddr
Definition: nic.h:55
#define TX_DISABLE
Definition: 3c509.h:227
void udelay(unsigned long usecs)
Delay for a fixed number of microseconds.
Definition: timer.c:60
#define SET_RD_0_MASK
Definition: 3c509.h:231
#define SET_RX_FILTER
Definition: 3c509.h:232
#define SET_INTR_MASK
Definition: 3c509.h:230
#define C_INTR_LATCH
Definition: 3c509.h:248
#define SET_IRQ(i)
Definition: 3c509.h:361
#define EP_W0_CONFIG_CTRL
Definition: 3c509.h:123
Definition: nic.h:49
#define GO_WINDOW(b, x)
Definition: 3c509.h:75
#define EP_COMMAND
Definition: 3c509.h:109
#define STOP_TRANSCEIVER
Definition: 3c509.h:242

References C_INTR_LATCH, EP_COMMAND, EP_STATUS, EP_W0_CONFIG_CTRL, EP_W0_RESOURCE_CFG, GO_WINDOW, inw(), nic::ioaddr, outw, RX_DISABLE, RX_DISCARD_TOP_PACK, RX_RESET, S_COMMAND_IN_PROGRESS, SET_INTR_MASK, SET_IRQ, SET_RD_0_MASK, SET_RX_FILTER, STOP_TRANSCEIVER, TX_DISABLE, TX_RESET, and udelay().

Referenced by el3_eisa_disable(), legacy_t509_disable(), t509_reset(), and t529_disable().