ERUPDATE - Intel 82559ER Fast Ethernet PCI Controller EEPROM Utility

Version 3.21 ER

====================================================================

DISCLAIMER:
-----------

Information in this document is provided in connection with Intel 
products. No license, express or implied, by estoppel or otherwise, to
any intellectual property rights is granted by this document. Except
as provided in Intel's Terms and Conditions of Sale for such products,
Intel assumes no liability whatsoever, and Intel disclaims any express
or implied warranty, relating to sale and/or use of Intel products
including liability or warranties relating to fitness for a particular
purpose, merchantability, or infringement of any patent, copyright or
other intellectual property right. Intel products are not intended for
use in medical, life saving, or life sustaining applications.

Intel assumes no responsibility for errors or omissions in this
document or related software, nor does Intel make any commitment
to update the information contained herein. The described software is
supplied "as is" without warranty and may not be fully functional.

Copyright (c) Intel Corporation, 1998-2000. All rights reserved.

* Third-party brands and names are the property of their respective
owners.

====================================================================


VERSION CHANGES:
----------------

3.21ER  Apparently, this tool was never actually tested using any of the EEUPDATE
       commands prior to release.  No command would work.  An overriding board selection 
       check before the command was perfromed was still checking for device ID = x1229
       rather than x1209.

       Changed to use PCI BIOS to read/write PCI configuration data.  The previous
       versions used direct read/write of the ports which caused incompatability with
       some PCI implementations making ERUPDATE not able to recognize the device.

3.19ER  First version. Supports 82559ER Fast Ethernet* PCI Controller
        (Device ID 1209) only. Contact your Intel field representative
        if you need to program EEPROM for a different Ethernet controller.


RUNNING ERUPDATE:
-----------------

To run ERUPDATE, boot your system in MS-DOS mode. From the MS-DOS
command prompt, change to the directory containing ERUPDATE.EXE, then
type "ERUPDATE". Do not use the MS-DOS prompt reached from Windows.

ERUPDATE.EXE can be run with several command line options.


COMMAND LINE OPTIONS:
---------------------

   -ALL
        Selects all 82559ER network interfaces found.
   -DUMP
        Dumps EEPROM memory contents to file.
   -EXITCODES
        Brings up exit code help.
   -HELP or -?
        Brings up command line help.
   -NIC=XX
        Selects a specific network interface card or subsystem
        (1-8).
   -NOCHKSUM
        Prevents EEPROM checksum from being updated.
   -CB <offset> <bitmask>
        Clears bits in the EEPROM, specified in <bitmask>.
   -RW <word>
        Reads <word> from the EEPROM.
   -SB <offset> <bitmask>
        Sets bits in the EEPROM, specified in <bitmask>.
   -WW <word> <value>
        Writes <value> into <word> in EEPROM.
   <imagefile> <addrfile>
        Programs EEPROM with image from <imagefile> and MAC
        address from <addrfile>.                           
   -A <addrfile> or -ADDRESS <addrfile>
        Programs the EEPROM with only the MAC address from
        the <addrfile> without changing the rest of the
        EEPROM.
   -D <imagefile> or -DATA <imagefile>
        Programs the EEPROM from the <imagefile> without
        changing the MAC address.        
   <imagefile> -MAC=macaddr                                        
        Programs EEPROM with image from <imagefile> and MAC   
        address of macaddr.
   -MAC=macaddr"                                        
        Programs the EEPROM with only the MAC address of
        macaddr without changing the rest of the EEPROM.


USAGE EXAMPLES:
---------------

Example 1:
To update the EEPROM and MAC Address on the 
first 82559ER-based network interface found in your system, 
call ERUPDATE.EXE like this:
   ERUPDATE -NIC=1 imagefile.eep addrfile.dat

Example 2:
To update the EEPROM and MAC Address on *all* of 
the 82559ER-based network interfaces found in your system, 
call ERUPDATE.EXE like this:
   ERUPDATE -ALL imagefile.eep addrfile.dat  
   
Example 3:
To update the MAC Address without changing the rest
of the EEPROM on the third 82559ER network interface
found in your system, call ERUPDATE.EXE like this:
   ERUPDATE -NIC=3 -A addrfile.dat
   
Example 4:
To update the EEPROM without changing the MAC address
on *all* of the 82559ER network interfaces found in your
system, call ERUPDATE.EXE like this:
   ERUPDATE -ALL -D imagefile.eep
  
Example 5:
To update the EEPROM Checksum on the second 82559ER 
network inerface found in your system, call 
ERUPDATE.EXE like this:
   ERUPDATE -NIC=2 -CHKSUM

Example 6:
To dump the EEPROM contents on *all* of the 82559ER-based
network interfaces found in your system, call 
ERUPDATE.EXE like this:
   ERUPDATE -ALL -DUMP 

Example 7:
To clear specific bit 1 in word 0xA the EEPROM on 
*all* of the 82559ER network interfaces found in your 
system, call ERUPDATE.EXE like this:
   ERUPDATE -ALL -CB 0xA 0x2

Example 8:
To set bit 1 in word 0xA the EEPROM on 
*all* of the 82559ER network interfaces found in your 
system, call ERUPDATE.EXE like this:
   ERUPDATE -ALL -SB 0xA 0x2

Example 9:
To read word 0x9 from the EEPROM on the third 82559ER
network interface found in your system, call 
ERUPDATE.EXE like this:
   ERUPDATE -NIC=3 -RW 0x9

Example 10:
To write word 0x9 to the EEPROM on the third 82559ER
network interface found in your system, and update its
checksum, call ERUPDATE.EXE like this:
   ERUPDATE -NIC=3 -WW 0x9 0x1234


FILE FORMATS:
-------------

The format for the <addr> file is a list of MAC addresses,
one entry per line, for example

00AA00000000
00AA00000001
00AA00000002
00AA00000003

The format for the <data> file is a table of ASCII
characters consisting of eight rows by eight columns of
data. Lines preceded by semicolons are treated as comments,
for example

; EEPROM file for Intel 82559ER Fast Ethernet PCI Controller
; 
; Rev. 01 EXAMPLE ONLY
;
; xxxx xxxx xxxx = Ethernet MAC address
; pwa# pwa# = Printed wiring assembly number (optional) 
; ssid = Subsystem ID
; svid = Subsystem Vendor ID
; chks = checksum
;
; Note: other bits may have to be programmed differently
; according to your exact system implementation. 

xxxx xxxx xxxx 0000 0000 0000 0000 0000 
pwa# pwa# 40B2 ssid svid 0000 0000 0000 
0000 0000 0000 0000 0000 0000 0000 0000 
0000 0000 0000 0000 0000 0000 0000 0000 
0000 0000 0000 0000 0000 0000 0000 0000 
0000 0000 0000 0000 0000 0000 0000 0000 
0000 0000 0000 0000 0000 0000 0000 0000 
0000 0000 0000 0000 0000 0000 0000 chks 


NOTES:
------

* If you run ERUPDATE without any command line options,
  ERUPDATE will display a listing of all the supported
  Intel 82559ER-based network interfaces found in your
  system.

* ERUPDATE won't read/write EEPROMs on any network
  interfaces unless you specify which interfaces you
  want to read/write. The device ID of the interfaces
  must be 1209. You can use the -NIC=xx option to select a
  single subsystem, or use the -ALL option to select all
  the 82559ER-based network interfaces in your system.
  You can use the -DEVICE=<pci device id> to select the
  device id.
  
* When using the '-dump' command, ERUPDATE will automatically 
  create a file and name it, based on the last 8 bytes
  of your network interface's MAC address.  For example,
  if your MAC address was '00aa11223344', ERUPDATE would
  create the file called '11223344.EEP'.

* Both <word> and <bitmask> parameters *must* be furnished
  to ERUPDATE in hexadecimal.

* The EEPROM checksum is automatically updated when you
  clear/set a bit or bits, and when you write a word to
  the EEPROM.  This operation can be turned off by using the
  -NOCHKSUM option.


DOS ERROR CODES:
----------------

ERUPDATE returns error codes to the DOS command line. A 
description of the error codes is found below.

CODE NAME:               VALUE:
----------               ------      
SUCCESS                    0
OPERATOR TERMINATION       1
INVALID NIC                2
BAD COMMAND LINE PARAM     3
EEPROM CHECKSUM FAILURE    4
EEPROM READ FAILURE        5
EEPROM WRITE FAILURE       6
EEPROM DUMP FAILURE        7
BAD FILE                   8
NO MEMORY                  9
NO NICS FOUND             10
