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

Go to the source code of this file.

Defines

#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)

Define Documentation

#define TX_INIT_RATE   16

Definition at line 45 of file 3c509.h.

#define TX_INIT_MAX_RATE   64

Definition at line 46 of file 3c509.h.

#define RX_INIT_LATENCY   64

Definition at line 47 of file 3c509.h.

#define RX_INIT_EARLY_THRESH   64

Definition at line 48 of file 3c509.h.

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

Definition at line 49 of file 3c509.h.

#define MIN_RX_EARLY_THRESHL   4

Definition at line 50 of file 3c509.h.

#define EEPROMSIZE   0x40

Definition at line 52 of file 3c509.h.

#define MAX_EEPROMBUSY   1000

Definition at line 53 of file 3c509.h.

Referenced by eeprom_rdy().

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

Definition at line 54 of file 3c509.h.

Referenced by t509_find_id_port().

#define EP_ID_PORT_INC   0x10

Definition at line 55 of file 3c509.h.

Referenced by t509_find_id_port().

#define EP_ID_PORT_END   0x200

Definition at line 56 of file 3c509.h.

Referenced by t509_find_id_port().

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

Definition at line 57 of file 3c509.h.

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

Definition at line 63 of file 3c509.h.

Referenced by get_e().

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

Definition at line 64 of file 3c509.h.

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

Definition at line 65 of file 3c509.h.

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

Definition at line 66 of file 3c509.h.

#define EEPROM_BUSY   (1<<15)

Definition at line 68 of file 3c509.h.

#define EEPROM_TST_MODE   (1<<14)

Definition at line 69 of file 3c509.h.

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

Definition at line 74 of file 3c509.h.

Referenced by eeprom_rdy().

#define GO_WINDOW (   b,
 
)    outw(WINDOW_SELECT|(x), (b)+EP_COMMAND)
#define EEPROM_NODE_ADDR_0   0x0 /* Word */

Definition at line 87 of file 3c509.h.

#define EEPROM_NODE_ADDR_1   0x1 /* Word */

Definition at line 88 of file 3c509.h.

#define EEPROM_NODE_ADDR_2   0x2 /* Word */

Definition at line 89 of file 3c509.h.

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

Definition at line 90 of file 3c509.h.

Referenced by t5x9_probe().

#define EEPROM_MFG_ID   0x7 /* 0x6d50 */

Definition at line 91 of file 3c509.h.

Referenced by t509_isolate().

#define EEPROM_ADDR_CFG   0x8 /* Base addr */

Definition at line 92 of file 3c509.h.

Referenced by t509bus_probe().

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

Definition at line 93 of file 3c509.h.

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

Definition at line 109 of file 3c509.h.

Referenced by t509_deactivate_and_reset_tag(), t509_enable(), t509_poll(), t509_transmit(), and t5x9_disable().

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

Definition at line 110 of file 3c509.h.

Referenced by t509_poll(), t509_transmit(), and t5x9_disable().

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

Definition at line 111 of file 3c509.h.

#define EP_W0_EEPROM_DATA   0x0c

Definition at line 116 of file 3c509.h.

Referenced by get_e().

#define EP_W0_EEPROM_COMMAND   0x0a

Definition at line 117 of file 3c509.h.

Referenced by get_e().

#define EP_W0_RESOURCE_CFG   0x08

Definition at line 118 of file 3c509.h.

Referenced by t5x9_disable().

#define EP_W0_ADDRESS_CFG   0x06

Definition at line 119 of file 3c509.h.

Referenced by t5x9_probe().

#define EP_W0_CONFIG_CTRL   0x04

Definition at line 120 of file 3c509.h.

Referenced by t509_enable(), t5x9_disable(), and t5x9_probe().

#define EP_W0_PRODUCT_ID   0x02

Definition at line 122 of file 3c509.h.

#define EP_W0_MFG_ID   0x00

Definition at line 123 of file 3c509.h.

#define EP_W1_TX_PIO_WR_2   0x02

Definition at line 129 of file 3c509.h.

#define EP_W1_TX_PIO_WR_1   0x00

Definition at line 130 of file 3c509.h.

Referenced by t509_transmit().

#define EP_W1_FREE_TX   0x0c

Definition at line 132 of file 3c509.h.

Referenced by t509_transmit().

#define EP_W1_TX_STATUS   0x0b /* byte */

Definition at line 133 of file 3c509.h.

Referenced by t509_enable(), and t509_transmit().

#define EP_W1_TIMER   0x0a /* byte */

Definition at line 134 of file 3c509.h.

#define EP_W1_RX_STATUS   0x08

Definition at line 135 of file 3c509.h.

Referenced by t509_poll().

#define EP_W1_RX_PIO_RD_2   0x02

Definition at line 136 of file 3c509.h.

#define EP_W1_RX_PIO_RD_1   0x00

Definition at line 137 of file 3c509.h.

Referenced by t509_poll().

#define EP_W2_ADDR_5   0x05

Definition at line 143 of file 3c509.h.

#define EP_W2_ADDR_4   0x04

Definition at line 144 of file 3c509.h.

#define EP_W2_ADDR_3   0x03

Definition at line 145 of file 3c509.h.

#define EP_W2_ADDR_2   0x02

Definition at line 146 of file 3c509.h.

#define EP_W2_ADDR_1   0x01

Definition at line 147 of file 3c509.h.

#define EP_W2_ADDR_0   0x00

Definition at line 148 of file 3c509.h.

Referenced by t509_enable(), and t5x9_probe().

#define EP_W3_FREE_TX   0x0c

Definition at line 154 of file 3c509.h.

#define EP_W3_FREE_RX   0x0a

Definition at line 155 of file 3c509.h.

#define EP_W4_MEDIA_TYPE   0x0a

Definition at line 161 of file 3c509.h.

Referenced by t509_enable().

#define EP_W4_CTRLR_STATUS   0x08

Definition at line 162 of file 3c509.h.

#define EP_W4_NET_DIAG   0x06

Definition at line 163 of file 3c509.h.

#define EP_W4_FIFO_DIAG   0x04

Definition at line 164 of file 3c509.h.

#define EP_W4_HOST_DIAG   0x02

Definition at line 165 of file 3c509.h.

#define EP_W4_TX_DIAG   0x00

Definition at line 166 of file 3c509.h.

#define EP_W5_READ_0_MASK   0x0c

Definition at line 172 of file 3c509.h.

#define EP_W5_INTR_MASK   0x0a

Definition at line 173 of file 3c509.h.

#define EP_W5_RX_FILTER   0x08

Definition at line 174 of file 3c509.h.

#define EP_W5_RX_EARLY_THRESH   0x06

Definition at line 175 of file 3c509.h.

#define EP_W5_TX_AVAIL_THRESH   0x02

Definition at line 176 of file 3c509.h.

#define EP_W5_TX_START_THRESH   0x00

Definition at line 177 of file 3c509.h.

#define TX_TOTAL_OK   0x0c

Definition at line 183 of file 3c509.h.

#define RX_TOTAL_OK   0x0a

Definition at line 184 of file 3c509.h.

#define TX_DEFERRALS   0x08

Definition at line 185 of file 3c509.h.

#define RX_FRAMES_OK   0x07

Definition at line 186 of file 3c509.h.

#define TX_FRAMES_OK   0x06

Definition at line 187 of file 3c509.h.

#define RX_OVERRUNS   0x05

Definition at line 188 of file 3c509.h.

#define TX_COLLISIONS   0x04

Definition at line 189 of file 3c509.h.

#define TX_AFTER_1_COLLISION   0x03

Definition at line 190 of file 3c509.h.

#define TX_AFTER_X_COLLISIONS   0x02

Definition at line 191 of file 3c509.h.

#define TX_NO_SQE   0x01

Definition at line 192 of file 3c509.h.

#define TX_CD_LOST   0x00

Definition at line 193 of file 3c509.h.

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

Definition at line 209 of file 3c509.h.

Referenced by t509_deactivate_and_reset_tag(), and t595_probe().

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

Definition at line 210 of file 3c509.h.

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 211 of file 3c509.h.

Referenced by t509_enable(), and vxsetlink().

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

Definition at line 212 of file 3c509.h.

Referenced by t595_reset(), and t5x9_disable().

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

Definition at line 213 of file 3c509.h.

Referenced by t509_enable(), and t595_reset().

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

Definition at line 214 of file 3c509.h.

Referenced by t509_enable(), t595_reset(), and t5x9_disable().

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

Definition at line 215 of file 3c509.h.

Referenced by t509_poll(), t595_poll(), t595_reset(), and t5x9_disable().

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

Definition at line 216 of file 3c509.h.

Referenced by t509_enable(), t509_transmit(), t595_reset(), and t595_transmit().

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

Definition at line 217 of file 3c509.h.

Referenced by t595_reset(), and t5x9_disable().

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

Definition at line 218 of file 3c509.h.

Referenced by t509_enable(), t509_transmit(), t595_reset(), t595_transmit(), and t5x9_disable().

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

Definition at line 219 of file 3c509.h.

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

Definition at line 220 of file 3c509.h.

Referenced by t509_enable(), t595_reset(), and t5x9_disable().

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

Definition at line 221 of file 3c509.h.

Referenced by t509_enable(), t595_reset(), and t5x9_disable().

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

Definition at line 222 of file 3c509.h.

Referenced by t509_enable(), t595_reset(), and t5x9_disable().

#define FIL_INDIVIDUAL   (unsigned short) (0x1)

Definition at line 223 of file 3c509.h.

Referenced by t509_enable(), and t595_reset().

#define FIL_GROUP   (unsigned short) (0x2)

Definition at line 224 of file 3c509.h.

Referenced by t509_enable().

#define FIL_BRDCST   (unsigned short) (0x4)

Definition at line 225 of file 3c509.h.

Referenced by t509_enable(), and t595_reset().

#define FIL_ALL   (unsigned short) (0x8)

Definition at line 226 of file 3c509.h.

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

Definition at line 227 of file 3c509.h.

Referenced by t509_enable().

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

Definition at line 228 of file 3c509.h.

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

Definition at line 229 of file 3c509.h.

Referenced by t509_enable().

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

Definition at line 230 of file 3c509.h.

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

Definition at line 231 of file 3c509.h.

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

Definition at line 232 of file 3c509.h.

Referenced by t595_disable(), t595_reset(), t5x9_disable(), and vxsetlink().

#define ACK_INTR   (unsigned short) (0x6800)

Definition at line 237 of file 3c509.h.

Referenced by t509_enable(), t509_poll(), t595_poll(), and t595_reset().

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

Definition at line 238 of file 3c509.h.

Referenced by t509_poll(), t595_poll(), t595_reset(), and t5x9_disable().

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

Definition at line 239 of file 3c509.h.

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

Definition at line 240 of file 3c509.h.

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

Definition at line 241 of file 3c509.h.

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

Definition at line 242 of file 3c509.h.

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

Definition at line 243 of file 3c509.h.

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

Definition at line 244 of file 3c509.h.

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

Definition at line 245 of file 3c509.h.

#define S_INTR_LATCH   (unsigned short) (0x1)

Definition at line 265 of file 3c509.h.

#define S_CARD_FAILURE   (unsigned short) (0x2)

Definition at line 266 of file 3c509.h.

Referenced by t595_reset().

#define S_TX_COMPLETE   (unsigned short) (0x4)

Definition at line 267 of file 3c509.h.

Referenced by t595_reset().

#define S_TX_AVAIL   (unsigned short) (0x8)

Definition at line 268 of file 3c509.h.

Referenced by t595_reset().

#define S_RX_COMPLETE   (unsigned short) (0x10)

Definition at line 269 of file 3c509.h.

Referenced by t509_poll(), t595_poll(), and t595_reset().

#define S_RX_EARLY   (unsigned short) (0x20)

Definition at line 270 of file 3c509.h.

#define S_INT_RQD   (unsigned short) (0x40)

Definition at line 271 of file 3c509.h.

#define S_UPD_STATS   (unsigned short) (0x80)

Definition at line 272 of file 3c509.h.

#define S_5_INTS
Value:

Definition at line 273 of file 3c509.h.

Referenced by t509_enable(), and t509_poll().

#define S_COMMAND_IN_PROGRESS   (unsigned short) (0x1000)

Definition at line 275 of file 3c509.h.

Referenced by t509_poll(), t509_transmit(), t595_poll(), t595_transmit(), and t5x9_disable().

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

Definition at line 294 of file 3c509.h.

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

Definition at line 295 of file 3c509.h.

Referenced by t509_poll(), and t595_poll().

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

Definition at line 296 of file 3c509.h.

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

Definition at line 297 of file 3c509.h.

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

Definition at line 298 of file 3c509.h.

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

Definition at line 299 of file 3c509.h.

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

Definition at line 300 of file 3c509.h.

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

Definition at line 301 of file 3c509.h.

#define TXS_COMPLETE   0x80

Definition at line 321 of file 3c509.h.

Referenced by t509_transmit(), and t595_transmit().

#define TXS_SUCCES_INTR_REQ   0x40

Definition at line 322 of file 3c509.h.

#define TXS_JABBER   0x20

Definition at line 323 of file 3c509.h.

#define TXS_UNDERRUN   0x10

Definition at line 324 of file 3c509.h.

Referenced by t509_transmit(), and t595_transmit().

#define TXS_MAX_COLLISION   0x8

Definition at line 325 of file 3c509.h.

Referenced by t509_transmit(), and t595_transmit().

#define TXS_STATUS_OVERFLOW   0x4

Definition at line 326 of file 3c509.h.

Referenced by t509_transmit(), and t595_transmit().

#define IS_AUI   (1<<13)

Definition at line 333 of file 3c509.h.

Referenced by t5x9_probe().

#define IS_BNC   (1<<12)

Definition at line 334 of file 3c509.h.

Referenced by t5x9_probe().

#define IS_UTP   (1<<9)

Definition at line 335 of file 3c509.h.

Referenced by t5x9_probe().

#define ENABLE_DRQ_IRQ   0x0001

Definition at line 337 of file 3c509.h.

Referenced by t509_enable().

#define W0_P4_CMD_RESET_ADAPTER   0x4

Definition at line 338 of file 3c509.h.

#define W0_P4_CMD_ENABLE_ADAPTER   0x1

Definition at line 339 of file 3c509.h.

#define ENABLE_UTP   0xc0

Definition at line 344 of file 3c509.h.

Referenced by t509_enable(), and vxsetlink().

#define DISABLE_UTP   0x0

Definition at line 345 of file 3c509.h.

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

Definition at line 351 of file 3c509.h.

Referenced by t5x9_disable().

#define RX_BYTES_MASK   (unsigned short) (0x07ff)

Definition at line 371 of file 3c509.h.

Referenced by t509_poll(), and t595_poll().

#define RX_ERROR   0x4000

Definition at line 358 of file 3c509.h.

#define RX_INCOMPLETE   0x8000

Definition at line 359 of file 3c509.h.

Referenced by t509_poll(), and t595_poll().

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

Definition at line 364 of file 3c509.h.

Referenced by t509_isolate(), and t509bus_probe().

#define PROD_ID   0x9150

Definition at line 365 of file 3c509.h.

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

#define AUI   0x1

Definition at line 367 of file 3c509.h.

#define BNC   0x2

Definition at line 368 of file 3c509.h.

#define UTP   0x4

Definition at line 369 of file 3c509.h.

#define RX_BYTES_MASK   (unsigned short) (0x07ff)

Definition at line 371 of file 3c509.h.


Function Documentation

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

Definition at line 342 of file 3c5x9.c.

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(), IS_AUI, IS_BNC, IS_UTP, ntohs, outw(), printf(), t509_operations, t509_reset(), and utp.

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

                                                                 {
        uint16_t prod_id;
        int i,j;
        unsigned short *p;
        
        /* Check product ID */
        prod_id = get_e ( nic->ioaddr, EEPROM_PROD_ID );
        if ( ( prod_id & prod_id_mask ) != prod_id_check ) {
                printf ( "EEPROM Product ID is incorrect (%hx & %hx != %hx)\n",
                         prod_id, prod_id_mask, prod_id_check );
                return 0;
        }

        /* test for presence of connectors */
        GO_WINDOW(nic->ioaddr,0);
        i = inw(nic->ioaddr + EP_W0_CONFIG_CTRL);
        j = (inw(nic->ioaddr + EP_W0_ADDRESS_CFG) >> 14) & 0x3;

        switch(j) {
        case 0:
                if (i & IS_UTP) {
                        printf("10baseT\n");
                        connector = utp;
                } else {
                        printf("10baseT not present\n");
                        return 0;
                }
                break;
        case 1:
                if (i & IS_AUI) {
                        printf("10base5\n");
                } else {
                        printf("10base5 not present\n");
                        return 0;
                }
                break;
        case 3:
                if (i & IS_BNC) {
                        printf("10base2\n");
                        connector = bnc;
                } else {
                        printf("10base2 not present\n");
                        return 0;
                }
                break;
        default:
                printf("unknown connector\n");
                return 0;
        }

        /*
        * Read the station address from the eeprom
        */
        p = (unsigned short *) nic->node_addr;
        for (i = 0; i < ETH_ALEN / 2; i++) {
                p[i] = htons(get_e(nic->ioaddr,i));
                GO_WINDOW(nic->ioaddr,2);
                outw(ntohs(p[i]), nic->ioaddr + EP_W2_ADDR_0 + (i * 2));
        }

        DBG ( "Ethernet Address: %s\n", eth_ntoa ( nic->node_addr ) );

        t509_reset(nic);

        nic->nic_op = &t509_operations;
        return 1;

}
void t5x9_disable ( struct nic nic)

Definition at line 40 of file 3c5x9.c.

References C_INTR_LATCH, EP_COMMAND, EP_STATUS, EP_W0_CONFIG_CTRL, EP_W0_RESOURCE_CFG, GO_WINDOW, inw(), 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().

                                      {
        /* stop card */
        outw(RX_DISABLE, nic->ioaddr + EP_COMMAND);
        outw(RX_DISCARD_TOP_PACK, nic->ioaddr + EP_COMMAND);
        while (inw(nic->ioaddr + EP_STATUS) & S_COMMAND_IN_PROGRESS)
                ;
        outw(TX_DISABLE, nic->ioaddr + EP_COMMAND);
        outw(STOP_TRANSCEIVER, nic->ioaddr + EP_COMMAND);
        udelay(1000);
        outw(RX_RESET, nic->ioaddr + EP_COMMAND);
        outw(TX_RESET, nic->ioaddr + EP_COMMAND);
        outw(C_INTR_LATCH, nic->ioaddr + EP_COMMAND);
        outw(SET_RD_0_MASK, nic->ioaddr + EP_COMMAND);
        outw(SET_INTR_MASK, nic->ioaddr + EP_COMMAND);
        outw(SET_RX_FILTER, nic->ioaddr + EP_COMMAND);

        /*
         * wait for reset to complete
         */
        while (inw(nic->ioaddr + EP_STATUS) & S_COMMAND_IN_PROGRESS)
                ;

        GO_WINDOW(nic->ioaddr,0);

        /* Disable the card */
        outw(0, nic->ioaddr + EP_W0_CONFIG_CTRL);

        /* Configure IRQ to none */
        outw(SET_IRQ(0), nic->ioaddr + EP_W0_RESOURCE_CFG);
}