                           Broadcom Corporation
                           16215 Alton Parkway,
                           Irvine, CA 92619-7013

                 Broadcom BCM570x EFI Driver for IA-32 and IA-64
                                10/26/2005

Introduction
=============

This file describes the EFI driver for Broadcom's BCM570x
10/100/1000 Mbps Ethernet Network Interface Controller.  Driver is 
released as a standard EFI driver format and library binary (intended
for LOM application) for both EFI core firmware 1.0.2 and 1.1.
 
1. b57undi32.efi  : EFI driver for IA-32 platform.
2. b57undi64.efi  : EFI driver for IA-64 platform.
3. b57undi32.lib  : EFI driver for IA-32 platform in library format.
4. b57undi64.lib  : EFI driver for IA-64 platform in library format.
5. b57ebc.efi     : EFI driver in EBC format. This driver will work
                    in environment if EBC intepreter is present. 

Driver Installation
===================

Drivers for core firmware v1.02 and v1.1 are built based on EFI SDK 1.02.12.38 
and EFI SDK 1.1.14.5x, respectively. The same version of the efildr should be 
used on IA32 systems. The driver is compatible with efildr that is deployed 
on most IA64 systems.  This driver has been tested with EFI core firwmare 
1.10.14.57 and 1.10.14.59 and comply with EFI v0.95. This driver doesn't
support pre-release of EFI 1.10.50 core firmware.  

1. Boot into EFI shell.

2. Load b57undi32.efi  in IA-32 platform
               OR 
   Load b57undi64.efi  in IA-64 platform

3. If SNP is loaded by core firmware then skip to step 4.  Otherwise,
   Load snp3264.efi.

4. Once driver is loaded, TCP/IP stack can be loaded into the memory 
   as follows:
   load tcpipv4.efi

5. Configure interface as follows
    ifconfig sni0 30.2.1.1 up

6. Ping remote station, etc....

Integration driver with EFI core firmware for LOM applications
=============================================================

1. Link b57undi32.lib or b57undi64.lib to EFI core firwmare for
   IA-32, or IA-64 platform, respectively.

2. Driver can be started with EFI macro

    LOAD_INTERNAL_DRIVER(FW,
                         IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER,
                         L"B57undi",
                         UM_InitializeUNDIDriver);

Where UM_InitializeUNDIDriver is the main entry point of this
driver.

3. If the EFI core firmware is version 1.1, then make sure the
   the following EFI core driver libraries are linked to EFI
   core firmware:

  $(EFI_SOURCE)\Edk\Lib\EfiDriverLib\EfiDriverLib.lib
  $(EFI_SOURCE)\Edk\Lib\Print\Print.lib
  $(EFI_SOURCE)\Edk\Protocol\Protocol.lib
  $(EFI_SOURCE)\Edk\Guid\Guid.lib


Integration driver with Option ROM
==================================

1. Use provided utility, efirom.exe, to convert EFI driver into EFI ROM 
   format. It's worthy to note that utility efirom.exe is a DOS 
   application which can be executed in DOS box in Windows environment. 
   DOS application doesn't take any filename which is greater than <8.3> 
   format (e.g. Users have to rename b57undi64.efi to und64.efi).

    For instance,

    This driver is intended to program on BCM5702-based NIC
    with vendor ID of 0x14e4 and device ID of 0x16a6
    
       efirom -v 0x14e4 -d 0x16a6 -o rom.bin -ec -cc 2 undi64.efi

    This driver is intended to program on BCM5701-based NIC
    with vendor ID of 0x14e4 and device ID of 0x1645
    
       efirom -v 0x14e4 -d 0x1645 -o rom.bin -ec -cc 2 undi64.efi

   The output file rom.bin, which is in compressed EFI format, can be 
   programmed to NIC's NVRAM.

2. Use utility (b57diag.exe or b57diag32.efi/b57diag64.efi) to program 
   option ROM image to NIC's NVRAM.   Follow the following steps:
     * Enter diagnostic shell, 
          b57diag64.efi -b57eng 

     * Use "device" command to select device to be programmed if there 
       are more 1 device.

     * upgfrm -ffs0:\rom.bin -p

     * setpxe -e 


Known Problems
==============

1. Since the driver is built based on the latest EFI SDK (v1.02.12.38), it may
   not work with the efildr of the previous version on IA32. However, it is
   compatible with the efildr that is deployed on most IA64 systems 
   (v1.02.12.36a).



