From 0235c0e8cbac19c911822f6ca12627292b50c4ff Mon Sep 17 00:00:00 2001 From: semenu Date: Sat, 23 Jun 2001 19:30:26 +0000 Subject: Add initializetion of NVCTL register with EEPROM stored value. This fix hazardous very slow work for one of my cards. MFC after: 1 week --- sys/dev/tx/if_tx.c | 3 +++ sys/dev/tx/if_txreg.h | 13 +++++++++++++ sys/dev/tx/if_txvar.h | 13 +++++++++++++ 3 files changed, 29 insertions(+) (limited to 'sys/dev/tx') diff --git a/sys/dev/tx/if_tx.c b/sys/dev/tx/if_tx.c index b16ac50..93c715b 100644 --- a/sys/dev/tx/if_tx.c +++ b/sys/dev/tx/if_tx.c @@ -781,6 +781,9 @@ epic_common_attach(sc) for (i = 0; i < ETHER_ADDR_LEN / sizeof(u_int16_t); i++) ((u_int16_t *)sc->sc_macaddr)[i] = epic_read_eeprom(sc,i); + /* Set Non-Volatile Control Register from EEPROM */ + CSR_WRITE_4(sc, NVCTL, epic_read_eeprom(sc, EEPROM_NVCTL) & 0x1F); + /* Set defaults */ sc->tx_threshold = TRANSMIT_THRESHOLD; sc->txcon = TXCON_DEFAULT; diff --git a/sys/dev/tx/if_txreg.h b/sys/dev/tx/if_txreg.h index f8d1e16..a9ec762 100644 --- a/sys/dev/tx/if_txreg.h +++ b/sys/dev/tx/if_txreg.h @@ -206,6 +206,19 @@ #define RXCON_DEFAULT (RXCON_EARLY | \ RXCON_RECEIVE_MULTICAST_FRAMES | \ RXCON_RECEIVE_BROADCAST_FRAMES) +/* + * EEPROM structure + * SMC9432* eeprom is organized by words and only first 8 words + * have distinctive meaning (according to datasheet) + */ +#define EEPROM_MAC0 0x0000 /* Byte 0 / Byte 1 */ +#define EEPROM_MAC1 0x0001 /* Byte 2 / Byte 3 */ +#define EEPROM_MAC2 0x0002 /* Byte 4 / Byte 5 */ +#define EEPROM_BID_CSUM 0x0003 /* Board Id / Check Sum */ +#define EEPROM_NVCTL 0x0004 /* NVCTL (bits 0-5) / nothing */ +#define EEPROM_PCI_MGD_MLD 0x0005 /* PCI MinGrant / MaxLatency. Desired */ +#define EEPROM_SSVENDID 0x0006 /* Subsystem Vendor Id */ +#define EEPROM_SSID 0x0006 /* Subsystem Id */ /* * Structures definition and Functions prototypes diff --git a/sys/dev/tx/if_txvar.h b/sys/dev/tx/if_txvar.h index f8d1e16..a9ec762 100644 --- a/sys/dev/tx/if_txvar.h +++ b/sys/dev/tx/if_txvar.h @@ -206,6 +206,19 @@ #define RXCON_DEFAULT (RXCON_EARLY | \ RXCON_RECEIVE_MULTICAST_FRAMES | \ RXCON_RECEIVE_BROADCAST_FRAMES) +/* + * EEPROM structure + * SMC9432* eeprom is organized by words and only first 8 words + * have distinctive meaning (according to datasheet) + */ +#define EEPROM_MAC0 0x0000 /* Byte 0 / Byte 1 */ +#define EEPROM_MAC1 0x0001 /* Byte 2 / Byte 3 */ +#define EEPROM_MAC2 0x0002 /* Byte 4 / Byte 5 */ +#define EEPROM_BID_CSUM 0x0003 /* Board Id / Check Sum */ +#define EEPROM_NVCTL 0x0004 /* NVCTL (bits 0-5) / nothing */ +#define EEPROM_PCI_MGD_MLD 0x0005 /* PCI MinGrant / MaxLatency. Desired */ +#define EEPROM_SSVENDID 0x0006 /* Subsystem Vendor Id */ +#define EEPROM_SSID 0x0006 /* Subsystem Id */ /* * Structures definition and Functions prototypes -- cgit v1.1