         Release Note for Jade/Caesar Bootcode Firmware
         ==============================================
              5787, 5787f, 5787m, 5754, 5754m, 5786

----------------------------
 Version 3.23 ---- 11/28/06 
----------------------------
1. Fixed NVRAM read bug

  Problem:
    Due to other project change, since version 3.22, shared_config was read
    incorrecly. 
  
  Cause:
    NVRAM access FIRST/LAST bit can only be used in consecutive addresses.
    When reading configurations from offset 0xc4,0xc8 and 0xdc, 0xdc could
    not be read in one bulk read. 
   
  Fix:  
    Shared_config 0xdc was read separately from previous bulk read.
       
       
----------------------------
 Version 3.22 ---- 11/07/06 
----------------------------
1. Improve Enhancement Request CQ#27236
 
  Enhancement:   
    This version adds logic to read configurable option from the NVRAM for 
    allow/disallow SerDes PLL power down feature.

  Note:  
    V3.21a Bootcode for 5787M is obsoleted.
    

2. PCIE Link Polarity

  Enhancement: CQ#27039, CQ#26767, CQ#27105
    Apply PCIE Link polarity workaround only at hardware reset (POR or 
    PEReset).
    
    
3. Improve PCIE SerDes PLL Power Down Feature

  Enhancement: CQ#27236 
    Poll the actual clkreq state at 0x68A4[2] and Gphy link status at 0x460[3]:
    a. If 0x68A4[2]=1 and 0x460[3]=0, then enables PLL power down by writing 
       0x7d54 with 0x7000. 
    b. Else, then disables PLL power down by writing 0x7d54 with 0x7080.
    
  Note: 
    This enhancement is only applicable to 5787M.  
      

4. Increase the Fast Training Sequence(FTS) timming
 
  Problem: CQ14315
    If L0s is enabled on the BRCM chip a "yellow bang", or a system hang 
    condition can occur.
    
  Cause:
    During the L0s to L0 exit transition, symbol lock can be lost if the 
    system reference clock has not fully stabilized what leads the PCI-E 
    link training state machine to go through the "detect" state.  Going 
    through "detect" causes an internal reset to the BRCM chip what causes 
    "yellow bang" and/or a system hang condition based on the chipset 
    configuration.
    
  Fix:
    1. Change Serdes RX Timer from 768 ns to 2 uS to make sure the 
       Serdes CDR is stable before it sends data to the Physical Layer.  
    2. Increase FTS Count from 1uS to 2.25 uS to avoid intermittent GRC 
       Reset when L0s is enabled.
  
    Since RX Timer value and FTS Count change only needed before PCIE link 
    training, bootcode will initialize those values and retrain the PCIE 
    link during cold reset only. When driver reset, this workaround is 
    bypassed to avoid PCIE link retrain. 
    
  Impact:
    Increasing the amount of FTS required to transition from L0s to L0, 
    performance impact between 1uS to 2.25uS is un-noticeable.
     
                 
     
----------------------------
 Version 3.21 ---- 10/24/06 
----------------------------
1. Improve PCIE SerDes PLL Power Down Feature in conjunction with clkreq being enabled.
 
  Enhancement: CQ#27236 
    Poll the actual clkreq state at 0x68A4[2]:
    a. If 0x68A4[2]=1, then enables PLL power down by writing 0x7d54 with 0x7000.
    b. if 0x68a4[2]=0, then disables PLL power down by writing 0x7d54 with 0x7080.
 
  Note: 
    This enhancement is only applicable to 5787M.
    There are 2 version of boot code for 5787M. 
    One is V3.21 and the other is V3.21a. 
    V3.21a has this enhancement enabled.
   
 
----------------------------
 Version 3.20 ---- 10/09/06 
----------------------------
1. L1 exit latency improvement
 
  Enhancement: CQ#27044
    Improve the L1 exit latency when Clock Request is enabled.
    
  Note:
    No change for non-Mobile parts.
  
----------------------------
 Version 3.19 ---- 10/05/06 
----------------------------
1. Enable Clock Request
 
  Enhancement: CQ#26951 
    The clock request was disabled in version 3.18 for CQ #26629 for Mobile parts. 
    Change to use h/w default setting.
     

----------------------------
 Version 3.18 ---- 9/15/06 
----------------------------
1. Disable Clock Request
 
  Enhancement: CQ#26629
    The clock request enabled feature is not fully tested. This feature needs 
    to be disabled for RC 10.0 release.
    
  Note:
    The ClockReq is automatically disabled by h/w on a non-Mobile parts; therefore,
    this change does not affect non-Mobile parts.
    

2. Link speed issue

  Enhancement: CQ26652
    We have compatibility issue with Intel NIC Intel Pro/1000MT based LOM 
    (NDIS5.1 8.5.14, Auto detect for Speed/Duplex parameter, Windows XP 
    Professional SP2 O/S). The symptom shows when WoL is disabled and there
    is no management firmware loaded, after first time power up, the link 
    partner settles at speed 10H where our device settle at 1000F after the 
    link negotiation. To workaround the issue, bootcode is changed to use 
    different method to initialize the phy. 
    
  Impact:
    This issue exists not only in this device but all NetXtreme I products.  

----------------------------
 Version 3.17 ---- 7/27/06 
----------------------------
1. Set the voltage limit to prevent VCO control out of range.

  Problem: (CQ25114)
    VCO control voltage will go out of range. 
    
  Cause:
    ASIC default value has been changed. 
    
  Fix:
    At power up, the firmware is required to prevent SerDes PLL VCO control
    voltage goes out of range. Firmware will change the PCISerdes register,
    port 0x29, reg. 0xd default value back to 0x102d.
        
2. Removed disabling of ClkReq.

  Enhancement: CQ26097
    Since version 3.10 disabled ClkReq., we could not test ClkReq function. 
    Per project lead's decision, the feature was disabled before validation.
    However, without enabling it, PQA will not be able to test it. Therefore,
    we will enable this feature. 
  
  Change:  
    The change is made so firmware will not touching register 0xdc. The value
    to advertise ClkReq feature will be based on the hardware default.
    The ClkReq is enabled only in Mobil devices. 
    
  Impact:
    Since chip revision A0 and A1 had a bug in ClkReq and hardware default for
    mobile devices are enabled, programming this firmware to A0, A1 revision 
    chips can cause some problem.
    Bootcode's change may also get over written. Updated driver should be used
    to ensure the function is enabled. (Refer to CQ26098 to find out the
    correct driver version that address this issue.)  
  
----------------------------
 Version 3.16 ---- 7/25/06 
----------------------------
1. Wrong revision.

  Problem: (CQ26037)
    The chip revision posted in Shared memory 0xd2c was incorrect.
    
  Cause:
    Bug introduced in version 3.15. The metal revision mask was changed 
    by other project incorrectly.
    
  Fix:
    Changed back to the correct mask.
    
  Impact:
    Any revision sensitive routines or workaround was affected by this.
    One example is ASF firmware: when ASF is enabled, the firmware
    will based on wrong revision to initialize GPhy incorrectly. As
    result, the link disappears. 
    
2. Changed VPD default Product String

  Enhancement:
    Per MRD requirement, the VPD default product string is now changed from 
    "Broadcom NetXtreme Gigabit Ethernet Controller" to "Broadcom NetLink
    Gigabit Fiber Controller". For 5787f, the string is changed to 
    "Broadcom NetXtreme Fast Ethernet Controller"
    
  Impact:
    Any application uses product string based on VPD data, the string will 
    be changed.
    
3. Cable Sense Support

  Problem:
    The GPhy was shutdown even if the cable sense mode is enabled.
    
  Cause:
    Coding error
    
  Fix:       
    Changed the code so it does not power down the Gphy if cable
    sense mode is enabled.
    
4. Changed Shutdown routine

  Enhancement:
    The original was taking many steps to shutdown each component
    separately before shutting down the chip. For Jade, the ASIC is
    designed to shutdown all blocks once the device shutdown bit is
    set. Therefore, to save code space, the code is changed to 
    shutdown the device simply by setting the shutdown bit.
    
5. Turn off Cable Sense issue

  Problem:
    Once the Cable Sense was turned on, it could not be turned off until 
    the next power cycle to the chip. 
    
  Cause:
    The Cable Sense mode was cleared on by POR only. Since the bootcode only
    turns cable sense on when it is enable, assuming any reset would clear
    Cable Sense configuration, it was not clearing the configuration until
    the next power cycle.
    
  Fix:
    Not just turn on but also turn off the configuration according to the
    NVRAM setting.             
          
6. Enhanced Force PCIE polarity workaround algorithm
    
  Problem: 
    Bootcode may not work under certain platform under special condition.
    Please refer to CQ#25290 for the detail of the particular platform.
    
  Cause:
    If the device is placed in a system violates the specification - with
    VMain present and holding PEReset asserted. (Some platform use this method
    to disable the LOM by BIOS) The device may get stuck in forever loop in 
    PCIE polarity workaround algorithm implemented in version 3.07.
    
  Fix:
    Added one second timeout when waiting for stable PCIE link. The bootcode
    will advance when the timeout expires.    

---------------------------
 Version 3.15 ---- 5/15/06 
----------------------------
1. Change phy settings for better link detection.
 
  Enhancement: CQ24525
    Shut off SMDSP clock after programming the Tab registers.
  
2. Enabled second phase fastboot feature

  Enhancement:
    Only the first phase bootcode NVRAM loading is bypassed with the older
    bootcodes. Starting with this version, the second phase is also pre-
    reserved and NVRAM code loading is bypassed. 

  Impact:
    Since the bootcode is no longer reload from NVRAM, the boot time will be
    much faster. Upon reset, there will be only few words of configuration 
    NVRAM access.  
  
----------------------------
 Version 3.14 ---- 3/22/06 
----------------------------
1. Changed SSID
 
  Enhancement: CQ#23848
    For Jade devices, bit-15 of SSID needs to be set to 1.
    There is no impact/change for Caesar devices.     

----------------------------
 Version 3.13 ---- 3/07/06 
----------------------------
1. VPD-R checksum error

  Problem: Related CQ#23565, CQ#23566
    VPD-R checksum was incorrect
  
  Cause:
    Checksum was calculated from VPD-R to the end of VPD-R region; however,
    the specification indicates that Checksum should be calculated from the
    offset zero.
    
  Fix:
    Corrected the checksum
    
2. Initialized Cardbus pointer register

  Enhancement: CQ#23431
    Since Cardbus support is no longer a requirement, in order to pass
    the plug-fest compliance test, we write zero to register 0x28 to disable
    cardbus feature.
         
----------------------------
 Version 3.12 ---- 2/09/06
----------------------------
1. Enable PEReset Mask
 
  Problem:
    CQ#23039:
      On certain systems, when entering S5 state (with WoL enabled), the 
      LOM current draw on the 1.2V rail can fluctuate between ~90mA and 
      ~150mA from shutdown to shutdown.

    CQ#22684:
      On certain systems (with WoL enabled), the 5754/A1 LOM may disappear 
      during repeated S5 Power-Cycle tests.
 
  Cause:
    As part of the bootcode f/w logic, the NIC f/w will make access to 
    certain registers (0x00-0xff and 0x7c00-0x7fff) when the firmware 
    detected that the Vmain power goes low.  Due to CQ23039, the register 
    bit that the firmware used for detecting the "Vmain power state" can 
    also toggles between logical '0' and '1', and this leads to f/w to not 
    able to make reliable read/write access to the registers (0x00-0xff and 
    0x7c00-0x7fff), which ultimately causes bad behaviors that is described 
    in CQ22684.
 
  Fix:
    Firmware now enables the PEReset Mask register bit (0x68a4[16]=1).  By 
    enabling this register bit, the chip exits the reset state after the 
    current fluctuation become stabilized, which eliminates the toggling of 
    the "Vmain power" detection register bit, which ultimately enables 
    successful access to the register (0x00-0xff, 0x7c00-0x7fff) by the f/w.
 
  Impact:
    Fixes CQ#23039 and CQ#22684.

----------------------------
 Version 3.11 ---- 1/24/06
----------------------------
1. Changed CQ#22832 fix

  Problem: CQ#22832
    The CQ#22832 request to change 0x7d00 access to read-modify-write still
    have problem on some system when reference clock is not stable. 
    
  Cause:
    Absolute-write may corrupt register 0x7D00 content under corner conditions.
    
  Fix:
    Changed to code to not to touch 0x7d00 at all. 
    
  Impact:
    There is no impact if the WOL feature is not enabled in our device. There
    is also no impact if the system always broadcasts PME_Turn_Off tlp message
    to downstream before it removed the main power in system OOB or hibernate 
    scenario.  
    
    There is little power consumption increase when a) WOL is enabled in our 
    device and b) the system ungracefully removes the main power without 
    sending out PME_Turn_Off tlp message to downstream in system OOB or 
    hibernate scenario. The current draw in our device is measured at 236mA 
    as compared to 172mA before this change. 
    
    Since there is no more 0x7d00 access, version 3.10, #4 (Enabled ASIC 
    fix for CQ#11011), is undone. Using hardware default value. 

2. Enabled ASIC fix for tx Ethernet packet corruption on late collision

  Enhancement: CQ#22908, CQ#14561, CQ#14521
    Since the ASIC is fixed and verified by ASIC team, we are enabling the
    fix in this version.
    
----------------------------
 Version 3.10 ---- 1/18/06
----------------------------
1. Disabled clkreq#

  Enhancement: CQ#22829
    Disable clkreq# for all the revision of the Mobile parts until the feature 
    is fully verified with engineering system. This is done by clearing bit 18
    of 0xdc and bit 8 of 0xe0. 
   
2. Changed 0x7d00 access to absolute write

  Problem: CQ#22832
    A value of 0xa000 was left in register 0x7d00 and caused the device to 
    disappear.
    
  Cause:
    When the device was put into D3 power state, due to the clock issue, the 
    PCIE registers become not accessible. If read-modify-write were used at
    this point, the read will fail and returning zero to CPU. Then, after
    CPU modify the content and write back, many critical bits are cleared in
    register 0x7d00. As result, the subsequence reset, the device could not
    establish PCIE link and disappears from the host. 
    
  Fix:
    Changed 0x7d00 register to absolute write instead of read-modify-write.
    
3. Changed revision reading

  Problem:
    CPU reads incorrect silicon revision id in D3 power state.
    
  Cause:
    In D3 power state, except OOB, the PCI/PCIE registers are not accessible.
    All reads returns zero. Because of this, the read is not reliable.
    
  Fix:
    Instead of reading from register 0x68, the code is changed to read the
    revision id from register 0x2018. The register 0x2018 is available at all
    time. 
    
4. Enabled ASIC fix for CQ#11011

  Enhancement:
    The decision has been made to enable this ASIC fix to be consistent with
    Shasta/Baxter. This is done by clearing bit 18 of 0x7d00.          
   
----------------------------
 Version 3.09 ---- 1/09/06
----------------------------
1. Changed 2.5V voltage regulator value

  Enhancement:
    The DVT tests with Jade A1 parts indicate that the 2.5V regulator default 
    output is low. Bootcode now will change the 2.5V regulator so it is close
    to 2.5V.
    
2. Enable clock request for A2 or newer revision

  Enhancement:
    Due to the ASIC bug, the clock request was disabled in version 3.03, #2. 
    Since this feature has been fixed in A2 or newer revision, starting this 
    version, the clock request will be enabled back for A2 or newer devices.
         
----------------------------
 Version 3.08 ---- 12/08/05
----------------------------
1. Fixed device disappearing issue

  Problem: CQ#22330
    When VMain is turned off, either from OOB case or turn off the system by
    power button, next boot, the device disappears to the host.
    
  Cause:
    The workaround logic put in v3.07, #1 to force PCIE link polarity
    requires to wait until the link is up when there is VMain. However,
    the PCIE Tx/Rx was turned off when bootcode sense there was no
    VMain to save power. On next boot, since the code to turn back on
    PCIE Tx/Rx was placed after the PCIE link polarity workaround to wait 
    for PCIE link, the link never came up and stuck in the loop forever. 
    
  Fix:
    Moved the code to turn on PCIE Tx/Rx prior to PCIE link polarity
    workaround. 
     
----------------------------
 Version 3.07 ---- 12/06/05
----------------------------
1. Force PCIE polarity

  Problem: CQ#22173,CQ#22176,CQ#22178,CQ#22180,CQ#22254
    In some platform, the PCIE link polarity comes up incorrectly. 
   
  Cause:
    ASIC could not handle all cases correctly.
    
  Fix:
    Wait until PCIE link comes up. Then based on the link polarity status
    detected by ASIC polarity auto detect, firmware will then force the 
    PCIE link to the correct polarity.
    
2. Enable refclock auto switching

  Problem:
    The workaround in version 3.06, #1 is not stable. CPU could read "good"
    link indication without REFCLK. 
    
  Cause:
    Without clock, the interface can timeout and return anything left in
    the data bus. 
    
  Fix:
    Enable auto clock switching. When enabled, the clock will automatically
    switched to internal clock when there is no ref. clock available.
    
3. Removed ref.clock advertisement in A0/A1.

  Problem:
    When ref.clock support is advertised, the device gets unwanted reset.
    
  Cause:
    If clkreq# enabled, it may intermittently caused SerDes PLL state machine 
    misbehavior and lead to GRC reset.

  Fix:
    This problem will be fixed in ASIC A2. For A0/A1, firmware will disable
    ref.clock advertisement.                   
    
----------------------------
 Version 3.06 ---- 11/22/05
----------------------------
1. Fixed WoL was not working issue.

  Problem: CQ#14614
    WoL was not working on OOB case. 
    
  Cause:
    Version 3.03 (#1) added workaround for platforms that show an unstable 
    PCIE refclk during power up. Nevertheless, there is a limitation to 
    this workaround as to where it requires VMAIN to be present. In systems 
    where there is no VMAIN present and there is no PCI-E REFCLK at all for 
    the cases outlined above the bootcode will loop forever, therefore not 
    enabling WoL.
    
  Fix:
    Added a condition to the "unstable PCI-E Refclk" workaround to apply
    this fix only when there is VMain present.  In cases where there is no 
    VMAIN present, the boot code will no longer check/wait for a "stable 
    PCI-E Refclk" before continuing.
    
2. Fixed Link Histogram Issue.

  Problem:
    In DVT testing, Link histogram results seemed to be worsen in bootcode
    version 3.05.
  
  Cause:
    The change in version 3.05, item#2, removes all Gphy workaround.
    The workaround included hybrid bias change, adc  bias change, and pll 
    startup bandwidth change. The hardware fix still have incorrect PLL
    startup bandwidth value. By removing the workaround, the sympton has
    showed up. 

  Fix:
    Added the adjustment for the PLL startup bandwidth.    
    
----------------------------
 Version 3.05 ---- 10/18/05
----------------------------
1. Fixed Cable Sense mode

  Problem:
    The Cable Sense mode was not enabled correctly. 
    
  Cause:
    There was a confusion between SuperAirplane mode and Cable Sense mode.
    SuperAirplane mode with GPHY configuration should be equivalent to 
    Cable Sense mode. The previous, version 3.04, was setting SuperAirplane 
    mode without configuring GPHY. Therefore, it would not function as Cable 
    Sense mode.
    
  Fix:
    Instead of using SuperAirplane mode (bit 25), now the code will use
    Cable Sense mode (bit 26) so it does not need to program GPHY.
    
2. Not to apply poor BER performance work around

  Problem:
    The work around for poor BER (Bit Error Rate) with cable length 70m or less
    was causing the problem.
    
  Cause:
    For 5754/5787 family, the BER problem has been fixed in ASIC already. If the
    work around was applied, by changing hybrid bias current, would yield the
    unwanted current.
    
  Fix:
    Removed the work around     
      
----------------------------
 Version 3.04 ---- 10/12/05
----------------------------
1. Fixed Cable Sense mode

  Problem:
    The Cable Sense mode could not be enabled.
    
  Cause:
    The bit to check for mobile part was wrong. 
    
  Fix:
    Changed to correct way of detecting mobile part.
    
2. Move GPIO initialization to Phase1 code

  Problem: CQ#14105
    Unexpected POR was seen at Windows S3/S4 shutdown when using 64k
    EEPROM. 
  
  Cause:
    Originally, activating VAUX power was done in phase 2 bootcode.
    However, once driver waited for phase1 signature, driver may
    start to configure GPIO for WoL setting. The 2nd phase GPIO
    initialization may destroy driver's setting.
    
    This problem was worked around by driver by waiting for
    phase2 bootcode to be loaded before the GPIO initialization.
    However, when the NVRAM device is 64K EEPROM, phase 2 takes
    over 500ms to be loaded. To meet the Windows Fast Initiative
    requirement, driver could only wait for 200ms. When driver times
    out, it will proceed with GPIO initialization and later, destroyed
    by 2nd phase bootcode. This caused power glitch and generated POR.
    
  Fix:
    Moved the GPIO initialization to phase 1.    
    
----------------------------
 Version 3.03 ---- 10/3/05
----------------------------
1. Worked around unstable PCIE refclk issue

  Problem:
    Device does not come up on some machine platform. (bootcode v3.02)

  Cause:
    In some particular system, the PCIE refclk was not stable for a long 
    period of time. Accessing PCI config. space registers, 0x7d00 and 
    0x7e00 block registers relying on this clock. When the clock is not
    available, all access to those registers will timeout and read will 
    return zero.
    
    The read-modify-write instruction performed at 0x7d00, reads zero
    (due to unavailable clock and stall for a long time), then clock
    become available (due to long timeout delay) and write modified zero 
    value back to register. As result, destroyed the register content.
    With value zero in 0x7d00 shuts down PCIE bus and hence the device
    become invisible from the bus. 
    
    Since all access performed to 0x7d00, 0x7e00, and PCI config. space 
    is invalid until the clock is available, many initialization may not 
    be done correctly; or at least it may read incorrect revision ID. 
    
    Therefore, to ensure the code is executed properly, we need to ensure
    the clock is there first before proceeding with initialization. 
    
  Fix:
    Put a wait loop until refclk is stable before move on to initialization
    process.
    
2. Disable ClockReq
 
  Problem: 
    The chip will get a GRC_RESET when going from D3Hot to D0 state
    
  Cause:
    When ClockReq is enabled, the chip will get a GRC_RESET when going 
    from D3Hot to D0 state. The hardware default for mobile part is enabled.
    
  Fix:
    Disable ClockReq for mobile part.
    
  Note:
    The ClockReq is automatically disabled by h/w on a non-M parts; therefore,
    this change does not affect non-M parts.
       
----------------------------
 Version 3.02 ---- 9/22/05  
----------------------------
1. Fixed PCIE Serdes shutdown routine

  Problem:
    When the bootcode was trying to shutdown device, bootcode has disabled
    PCIE transmitter and receiver; however, other bits in the same register
    was destroyed.
    
  Cause:
    Absolute write routine was used.
    
  Fix:
    Changed to read-modify-write.
    
2. Removed Nvram config1 initialization

  Problem:
    There is address lockout error
    
  Cause:
    Per design, Nvram config1 register (0x7014) modification is not allowed 
    when address lockout feature is enabled. The original firmware was 
    overriding this register to adjust the NVRAM clock access speed. When 
    write to config1 register is attempt, address lockout error 9 was posted 
    (at reg. 0x7000 [31:28]) 
    
  Fix:
    Removed the config1 register initialization.
              
-----------------------------
 Version 3.01 ---- 9/7/05 
----------------------------
1. Enabled PCIE transmitter & receiver upon reset

  Problem:
    When WoL is enabled in NIC mode, device disappears after
    turning off power.
    
  Cause:
    When bootcode detects no VMain, it turns off PCIE transmitter & receiver.
    Those two bits are only reset upon power on reset (POR) but not other
    resets. Therefore, when power it on with power switch, the device getting
    PE reset does not bring PCIE link out of disabled state. As result,
    the device become not visible.
    
  Fix:
    Enable PCIE transmitter and reciever upon reset.
    
  Note:
    When using version 3.00, this problem occured, the only to recover is to
    short jumper J405 and then use Alt-Ctl-Del to restart the computer.  

----------------------------
 Version 3.00 ---- 9/6/05 
----------------------------
1. Initial official release

  Problem:
    Version 2.00, 2nd phase bootcode did not run. 
    
  Cause:
    The stack pointer was initialized to 0x20000. For Jade, the mbuf memory
    size only has 48k, 0x10000-0x1c000; therefore, the stack pointer should
    be initialized to 0x1c000 instead of 0x20000.
    
  Fixed:
    Fixed the stack pointer   
    
----------------------------
 Version 2.00 ---- 6/2/05 
----------------------------
1. Initial engineering release

   This is a branch of Stanford v2.01.
   GPIOs will not be changed to output pins for the one not in use.




