                     Release Note for BCM5704S BOOT Code Firmware
                    ==================================================
Version 3.17:

  1. Added ASF support

    Enhancement: Added ASF support
    Change:  Code is modified to check ASF setting in configuration. If 
             enabled, it will load ASF code into sratchpad and transfer 
             control to the ASF code.

Version 3.16:

  1. Fixed cable plug/unplug problem
  
    Problem: Once cable is unplugged and plugged back on within 1 second,
             the device cannot re-establish the link. 
    Cause:   When the switch port is in auto mode, when we unplug the cable
             in short period of time, it could be within the polling
             timeout loop. Then, it will miss the window to trigger the
             firmware to issue re-negotiation command.
    Fix:     Added extra logic to command re-negotiation at least once
             when there is link change.
  
  2. Enable aribiter before checking WoL signature
    
    Problem: From Windows shutdown, WoL wakes up fine to DOS. However, it
             will not work again when power off in DOS mode on the first 
             time.
    Cause:   The driver or any external software may turn off memory arbiter
             before the power goes down. Because of this, the shared memory
             becomes not accessible and the WoL signature deposited by 
             Windows driver was not able to be cleared by firmware at power
             down. Next time when powering down, since the signature is still
             there, the firmware will not touch WoL for WoL initialization;
             therefore, DOS WoL will not work after Windows shutdown. 
             Since the firmware will always clear the signature, the following
             shutdown, WoL will work again. 
    Fix:     Enable the arbiter before checking WoL signature. 
    
  3. Fixed CPU halt problem
  
    Problem: From the code review, there was another place CPU could be halted
             if there was WoL signature deposited by driver. Similar to 
             version 3.14, item 1 fix, CPU is needed to continue to run for 
             link negotiation.
    Fix:     Not to halt processor when driver WoL signature is deposited. 
    
Version 3.15:

  1. Fixed link problem.
  
    Problem: Some system cannot link up with fiber switch (CQ#7326)
    Cause:   The fix in v3.14, item 2, did not really fix the problem.
             The root cause was actually because of the workaround in
             v3.11, item 3, changing the voltage created this problem.
    Fix:     Since this problem was discovered in copper NIC and no one
             reported for the fiber NIC, removed the workaround in 
             Fiber NIC.
 
  2. Fixed b57diag data loopback test failure problem (test D1, D2)
  
    Problem: The version 3.14 caused the diagnostic to fail at test d1,d2.
             (CQ#7406)
    Cause:   In version 3.14, the device reset indication bit was not 
             passed from phase 1 to phase 2 correctly.
    Fix:     Fixed the software bug. 
  
Version 3.14:

  1. Fixed halted CPU problem. 
  
    Problem: During code review, a potential problem was discovered.
    Cause:   If WoL is enabled, at VAUX power mode, the RxCPU is halted.
             We needed to keep processor running even at VAUX only mode in
             order to monitor the link status. The potential problem if 
             processor is halted could be; After powering off the device, 
             removing the link and connect to non-autonegotiation capable 
             device may loose link. 
    Fix:     Not to halt processor even WoL is enabled. 

  2. Fixed link problem

    Problem: Some system cannot link up with fiber switch (CQ#7326)
    Cause:   The link detection loop was too small. This problem was
             introduced in 3.13. The timeout loop count was thought to be
             good for some system, but later discovered that it wasn't 
             good enough for other systems. 
    Fix:     Put back the timeout count as in version 3.12

Version 3.13: 

  1. Removed workaround for PCIX-133Mhz in Version 3.11, item 3 for CIOB-ES.

    Problem: CIOB-ES did not need this workaround. 
    Fix:     Removed the workaround for CIOBE.

  2. Fixed PXE hang problem

    Problem: When PXE is enabled, some system could not come up.
    Cause:   Autonegotiation timeout loop was taking too much time and caused
             BIOS PXE read timeout.
    Fix:     Added PXE event service in the timeout loop.

Version 3.12:

  1. Fixed Link blinking problem

    Problem: The fix, in 3.11 item 4, was not completely working in some case.
    Cause:   There was an algorithm fault that could cause infinity reset
             loop when link is changed. 
    Fix:     Added condition check that it will retry negotiation only when	it
             lose link. When the link is up, it will not reset the link. 

Version 3.11:

  1. Added support for Swapped TTmode

    Reason:  The future revision of chip added a new feature of Swapped TTMode
             in Dual MAC mode. This version is changed to support that mode.

  2. Restored PowerDissipated/PowerConsumed initialization.

    Problem: In revision A2, we found some devices CPU would hang after
             performing a write into PowerDissipated/PowerConsumed registers.
             To workaround the problem, the initialization was skipped in
             version 3.06 or later. Therefore, version 3.06 to 3.10 was not 
             supporting this feature. 
    Cause:   After ASIC team's investigation, they have concluded that it
             was simply bad chip failed to be screened off in ATE test.
    Fix:     Restored the PowerDissipated/PowerConsumed initialization so
             the function will work.

  3. Applied workaround for PCIX-133Mhz
  
    Problem: We had blue screen in PCIX-133Mhz system
    Cause:   Under this environment, there was setup time compatibility 
             issue with chipset which caused Address/Data bus parity error. 
    Fix:     By raising 2.5V to 2.7V and lower 1.2V to 1.14V could
             workaround this problem. This workaround is applied to all
             revisions, PCIX-133Mhz bus only.  
          
  4. Fixed Link blinking problem

    Problem: When cable is connected back to back, the link will be up and
             down and blinks forever.
    Cause:   The timeout value to detect the non-autonegotiation devices was 
             too short and cause race condition between both ports.
    Fix:     Extended timeout value.
             
Version 3.10:

  1. Fixed chip powered down bug

    Problem: When SECFG has both port WoL disabled and Window goes 
             Hibernate with one port WoL enabled and other disabled, 
             both port would be shut down.
    Cause:   When bootcode detects PCI power goes away and WoL was 
             not enabled by driver, it was trying to shutdown the port. 
             Since NVRAM indicating both port does not have WoL enabled, 
             the shutdown routine was trying to shutdown everything by 
             setting chip power down bit and caused the whole chip to 
             shutdown. 
    Fix:     When driver post signature for WoL, bootcode will not do 
             anything and let driver to handle everything. 

Version 3.09:

  1. Restored Dual Mac mode back to normal mode.

     Problem: The port swapped mode was not swapping TTmode primary port.
     Cause:   The current ASIC design cannot support TTmode and swapped
              mode at the same time. This cause the confusing of primary
              port.
     Fix:     Changed back the default value of dual Mac mode to normal mode

  2. Fixed PXE ROM size bug
    
    Problem: The secfg option 29, expansion ROM size was not taking effect.
    Cause:   Bootcode did not program the correct value in the register.
    Fix:     Bootcode is changed to program correct expansion ROM size
             setting in NVRAM configuration into register.

  3. Changed core voltage to 1.2v
  
    Problem: The ASIC default 1.2v voltage was not 1.2v
    Fix:     Adjusted the 1.2v voltage to 1.2v

Version 3.08
    1. Fixed PXE with no link lock problem

Version 3.07
    1. Changed the default Dual Mac Mode to port swap.
    2. Fixed configuration bug.
    3. Use hardware autonegotiation
    4. Default Dual Mac mode to Port Swapping mode

Version 3.06
    1. Fixed CPU hang problem (disabled PowerDissipated/PowerConsumed cfg.)
    2. Supports Shared Memory data structure version 1
    3. Removed phase 2 image loading failure LED blink feature (to save space)
    4. Added Alt. Clock control. (slow clock when in VAUX only. Speed up
       with full power)
    5. Fixed Wol bug

Version 3.05
    1. Support A2 revision

Version 3.04
    1. Removed SST Flash support.
    2. Added 2nd phase signature.
    3. Added delay to kick off PCI reset workaround to cover long PCI reset 
       assertion case.
    4. Lowering power consumption in first stage loader instead 2nd.
    5. Support Turbo Teaming Revision
     . Propagate PXE enable bit to share memory
    7. Changed default device id from 0x1648 to 0x16a8

Version 3.03:
    1. Support WoL
    2. Add PCI Reset Workaround
    3. Filled the remaining 15 MAC address array with default address
    4. Support 5704sA2
    5. Support PowerSaving
    6. Support FiberWoLCapable Config.
    7. Support portSwap Config.
    8. Support BothPort100MbpsCapable Config.

Version 3.02:
    1. Fixed State Reg. 2nd stage boodcode override bug
    2. Added workaround for ATMEL flash corruption problem
    3. Fixed driver/bootcode race condition on MII register read problem
    4. Program all MacAddr Registers with the MacAddress in NVRAM

Version 3.01:
    1. Fixed PXE speed bug
    2. Removed CIOB GPIO0 & GPIO2 access
    3. Added PCIX State Reg. RETRY_SAME_DMA	workaround

Version 3.0:	
    Fixed Primary/Secondary Mac Address bug 

Version 2.0:	
    Initial Version 
