Release Note for BCM5714 Family BOOT Code Firmware ================================================== 5714, 5714s, 5715, 5715s, 5780, 5780s ------------------------ Version 3.28 -- 07/25/06 ------------------------ 1. Wrong revision. Problem: (CQ26037) The chip revision posted in Shared memory 0xd2c was incorrect. Cause: Bug introduced in version 3.26. 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 IPMI firmware: when IPMI 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: Based on MRD, for Fiber device, the VPD default product string is changed from "Broadcom NetXtreme Gigabit Ethernet Controller" to "Broadcom NetXtreme Gigabit Fiber Controller" Impact: Any application uses product string based on VPD data, the string will be changed. This change only affect fiber devices. ----------------------- Version 3.27 -- 06/05/06 ----------------------- 1. The minor version number is not correct Problem: The minor version number on the version 3.26 will show 25 which should be 26. Cause: Version number not updated correctly. Fix: Update the minor version number to 27. ----------------------- Version 3.26 -- 06/01/06 ----------------------- 1. Linux driver cannot write NVRAM properly for STM45PE10 flash Problem: CQ#25116 Linux driver cannot program the NVRAM if the flash is STM45PE10. Cause: BCM5714 family is support ST25 not ST45 by default, so the bootcode need to drop the correct value for the NVRAM config3 register if is ST45 flash. Fix: For BCM5714 family chips if the flash is ST45 set the correct value to config3. ----------------------- Version 3.25 -- 3/28/06 ----------------------- 1. Keep power up if only one port was disabled for 5780s. Problem: CQ#23930A If power down one port of 5780s, will cause the other port was powered down too. Cause: This is the same issue as CQ12944. In Hamilton or HT-LE serdes devices, when shutting down phy by setting bit 11 of MDIO register 0 (Command register) will shutdown both port's phy. Fix: Do not power down 5780s if the other port is enabled. Impact: Since the original code had workaround applied to HTLE A4 or older chip already, this change will only affect B0 or newer chip. This version will apply the workaround for all HTLE revision chips. No impact to Hamilton devices. 2. Keep the disabled port alive. Problem: CQ#23969 Customer request that if management firmware (UMP) is enabled on a particular port, when they disable the LAN (host) functionality of that same port, the UMP still functional. Cause: Bootcode does not load any management firmware if that port has been disabled. Fix: Modify bootcode to check if Management firmware is present and enabled for the disabled port. If management is enabled, bootcode will load management firmware and keep that part functional. ----------------------- Version 3.24 -- 2/1/06 ----------------------- 1. enabled ECD 14583 Problem: The change in version 3.23, #1, was not programming correctly. Cause: Coding error Fix: Fixed the code ----------------------- Version 3.23 -- 2/1/06 ----------------------- 1. Enabled ECD 14583 Enhancement: CQ#14583,14489,13719,14359,14360 Enabled ASIC fix for ECD 14583. Without enabling the fix, CPU is having problem accessing invalid address. 2. Changed revision reading method Enhancement: The code is changed to read revision from register 0x2018 when revision id (PCI config. space 0x8) is not zero. This is done regardless of power state. ----------------------- Version 3.22 -- 1/12/06 ----------------------- 1. Enabled ECD 13216 Enhancement: The ECD13216 was disabled in v3.19. Now, we found out that extra step (enabling signal detect) needed to take place for the fix to be working. Thus, enabled back ECD 13216. 2. Move GPIO initialization to Phase1 code Enhancement: 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. This change does not affect anything since driver already have the work around. 3. Increased Link checking period for VAux only state Enhancement: Currently, the link check is done in about every 1 second when VMain present. When bootcode is running under VAux only state, the core clock is much slower. This cause link check period too long. Added a logic that both state can poll link status at around 1 second period. ----------------------- Version 3.21 -- 10/7/05 ----------------------- 1. Changed Algorithm for the change in version 3.18 #1 Problem: When device change from forced mode to Automode, even though physically shows link, it cannot pass the traffic. Cause: After the remote partner switch to Automode, our device will stay in forced mode. Fix: Changed the algorithm. impact: Only affect fiber devices. 2. Added GPIO control in the configuration Enhancement: CQ#14224 Added new defines for GPIO0 and GPIO2 pins. Each pin can be set to input or output pin. When set to output, the value also can be defined. To set the configuration, b57diag V8.28 or newer is required. ----------------------- Version 3.20 -- 9/19/05 ----------------------- 1. Fixed CQ#13517 Problem: CQ#13517 The symptom for CQ#13517 showed up again in version 3.19. (Inconsistent results enabling/disabling interfaces on Hamiton/Montera/HT) Cause: When added a logic in version 3.19 to detect the 5714/15-A2/5780-B0 or newer revision in VAUX only state, the bug was introduced. Bootcode was not able to determine correct version number for 5714/15 A1/ 5780 A4 or older revisions. Because of this, it shuts down the PHY when WoL is disabled and caused other port to shutdown also. (ASIC bug CQ#12944) Fix: Fixed the software bug. ----------------------- Version 3.19 -- 9/12/05 ----------------------- 1. Removed workaround ECD 13216 Problem: CQ#13942, CQ#13949 After connecting the cable to switch, the switch side shows link but the device side does not show link. Cause: The ECD 13216 did not work correctly. After turning on this ASIC bug fix, the LED does not get turned. Fix: Disabled ECD 13216 ASIC fix. Note: This change only affect Hamilton A2/HTLE B0 or later devices. 2. Changed VAUX only state Revision check Problem: When there is no VMain, firmware could not tell the revision. Cause: PCI config. register are not accessible when there is VMain and the revision register is in PCI config. domain. Fix: Read register 0x6000 reset default value. If bit 1 is set, this is Hamilton A2 or HTLE B0 or newer. ----------------------- Version 3.18 -- 9/9/05 ----------------------- 1. Added logic to workaround CQ#13878 Problem: CQ#13878 Link cannot be established before loading driver. Cause: By default, the hardware is in Autonegotiation mode. If the link partner is not auto-negotiation capable, the link could not be established. Fix: Put a logic to check for the link status. When link is not up, it will alter the mode between auto mode and forced 1000F mode. This logic is activated only if not driver reset and there is no link. 2. Fixed CQ#13922 and CQ#13924 Problem: When WoL is disabled in NVRAM, OOB or DOS shutdown will cause the remote link partner to link at speed 10 in copper HTLE devices. Cause: In bootcode version 3.16, the code has been changed to apply port work around based on revision. When there is no VMain, the revision register was not readable. It always returns 0 (A0). So, the work around for port shutdown (CQ#13517) was applied. When port is not shutdown but put in power saving mode, the link still have energy and the link partner can detect the link speed 10. Fix: Changed to code to not to apply the work around for all copper devices. ----------------------- Version 3.17 -- 9/8/05 ----------------------- 1. Enabled "slow latency Mbuf access" Problem: There was a problem when internal CPU accessing to the RxMbuf. Cause: LSI team found there is a timing violation between the internal CPU accessing to the RxMbuf, and the only way to workaround this is to set the 0x4000[28] which is to enable the "slow latency Mbuf access" from the internal CPU. Fix: Enabled "slow latency Mbuf access" ----------------------- Version 3.16 -- 9/7/05 ----------------------- 1. Fixed the workaround in version 3.12, #2. Problem: CQ#13517 When disabling only one port, the other port was also get disabled. Cause: This problem was initially worked around in version 3.12, #2. But, the work around was only applied when WoL is enabled in one of the ports. This symptom showed when WoL was disabled in both ports. Fix: Changed the code to apply the workaround without checking WoL status. 2. Not to apply version 3.12, #2, work around for newer devices. Enhancement: The newer devices (5714/15 A2, 5780 B0 or newer) has fixed the phy shutdown issue in ASIC. Therefore, the firmware is changed to apply the work around (v3.12, #2 or v3.16, #1) only for older revision that doesn't have ASIC fix. By shutting down the phy completely can save more power. Since in VAUX only mode, the firmware cannot determine the chip revision number, therefore the work around would be unconditionally applied. ----------------------- Version 3.15 -- 8/22/05 ----------------------- 1. Enabled ECD 13216 for SERDES devices Enhancement: Enable ASIC workaround for ECD 13216. Synopsis of Bug: Possible LINK displayed when Fibre cable is removed. A problem with the SERDES/PHY where crosstalk can produce a valid LINK signal even when there is no Fibre cable present. Note: This fix is only available on Hamilton A2/HTLE B0 or newer devices This change is only for SERDES devices. 2. Enabled ECD 13332 Enhancement: Changed GRC timeout counter from 64k to 16k cycles. Note: This fix is only available on Hamilton A2/HTLE B0 or newer devices ----------------------- Version 3.14 -- 8/18/05 ----------------------- 1. Not to override RID if there is hardware default Problem: For A2 or newer revision silicon has a hardwired revision value in offset 0x8. The current bootcode was overriding the value with other value. Cause: The register 0x68 was still hardwired as A1. As result, bootcode was updating 0x8 with A1 revision value. Fix: Now the bootcode reads offset 0x8, RID first. If the value is a non-zero, bootcode will not modify the value. ----------------------- Version 3.13 -- 6/3/05 ----------------------- 1. Advertise both 1000 fullduplex and 1000 halfduplex for serdes device Problem: CQ12333 The hardware default for serdes is 1000 fullduplex only. For some switches, such as Dell PowerConnect 5224 will can only advertise 1000 halfduplex. As result, the link cannot be established. Cause: Third party issue. Fix: Advertise both 1000 fullduplex and 1000 halfduplex. Notes: This change only affects serdes devices. ----------------------- Version 3.12 -- 5/18/05 ----------------------- 1. Fixed shutdown problem in NIC Problem: When VMain is turned off, the device loses link (power) when the other port has WoL/ASF/IPMI disabled. Cause: The on-board power cut off circuit can be turned off by either port. The power should be turned off only if both ports are disabled or no longer needed. The current code was turning off the power when only one port is shutting down and cause the other port to lose power. Fix: Check other port's configuration and make sure it does turn off power for the device if one of the port is still active. Impact: For LOM, since the shutdown does not use on-board circuit; therefore, it has no effect. 2. Fixed shutdown problem in Serdes Problem: For Serdes, shutting down phy in one port will shutdown phy in other port. Cause: Presumed this is a hardware problem. Still under investigation. Fix: Changed the code to shutdown Serdes phy only when both phy needs to be shutdown in both port. For the port not shutting down, to save power, the phy is placed in super isolate mode. Impact: This change only affect serdes devices. ----------------------- Version 3.11 -- 5/10/05 ----------------------- 1. Added a new field, Smbus address, in shared memory Enhancement: IPMI needed multiple SmBus addresses. The NVRAM address is stored at NVRAM. This version of bootcode reads the data and store the addresses in the shared memory 0xd54. 2. Enable Msi upon reset Problem: MSI was not working. MSI must be enabled before PCI configuration space's MSI's bits are functional. Cause: MSI was not eanbled by hardware default Fix: Enable MSI by bootcode. 3. Removed shutdown bit access Problem: When bootcode sets this bit causing system to hang Cause: ASIC has an problem when using shutdown bit to shutdown the device and there is no plan to fix this in ASIC. Fix: To workaround this issue, bootcode will not shutdown the device by shutdown bit, instead powering down each block individually to conserve power. ----------------------- Version 3.10 -- 4/25/05 ----------------------- 1. Branch out bootcode 5780/5780s Enhancement: HT-LE bootcodes have been branch out from 5714/5714s. The new device will be 5780/5780s. There is no functional change from version 3.09. ----------------------- Version 3.09 -- 2/28/05 ----------------------- 1. Post phy id for Serdes device Problem: The phy id was not posted for Serdes device. Cause: Traditionally, there was no phy id in Serdes device, therefore, the code was not posting phy id in shared memory for Serdes. Starting 5714/15, the Serdes device have phy id. Driver needs to rely on this information when ASF/IPMI is enable. (If ASF/IPMI is enabled driver cannot access MII registers to read id) Fix: Bootcode now read phy id for serdes and post the id to shared memory. Notes: This change only affect Serdes devices. ----------------------- Version 3.08 -- 2/26/05 ----------------------- 1. Enabled double Ack bug ASIC fix (CQ9987) Problem: The ASIC double-ack bug fixed in hardware was not enabled Cause: In Shasta project, the double ack bug was worked around with firmware and did not need to enable ASIC fix; hence, it was not enabled. Since 5714/5 does not have ASIC that do not have this fix, the ASIC fix should be enabled instead of using software workaround. Fix: Enabled the ASIC fix. 2. Fixed the bug in v3.07 Problem: Revision information was not posted correctly in hwinfo_0, shared memory 0xd2c [0:7]. Cause: This bug was created in v3.07. Code was erroneously coded. Fix: Fixed the software bug. ----------------------- Version 3.07 -- 2/17/05 ----------------------- 1. Fixed Link detect problem in HT-LE Problem: Link could not be detected for HT-LE serdes device. Cause: Hardware problem in HT-LE serdes devices. Fix: For HT-LE serdes devices, bit 5 of SerdesTxControl register needs to be changed in clock edge select. 2. Shared memory version changed to 3. Enhancement: hwinfo, (0xd2c), bit 15:8 supports HT-LE. Bit 9 will be set to indicate this is HT-LE device. Notes: HT-LE and 5714 shares same bootcode. ----------------------- Version 3.06 -- 2/8/05 ----------------------- 1. Fixed device detection problem Problem: The change in 3.05 has limitation that CPU cannot detect the id in VAUX only state. Cause: The Id is located in PCI config. space. When there is no VMain, there is no PCI clock; thus, the register is not accessible. Fix: Changed to use UMP id bit 27 in 6808. 2. Fixed Serdes link problem (For serdes bootcode only) Problem: Link would not come up. Cause: ASIC had clock edge reversed by default. Fix: 1. Changed the clock edge 2. MAC needs to be in GMII mode instead of TBI mode. ----------------------- Version 3.05 -- 2/2/05 ----------------------- 1. Fixed device detection problem Problem: Both device was reporting as primary device Cause: ASIC had a bug that reporting both port as primary device in Misc. Config. Register. (bit 22 of register 0x6804) Fix: Changed to read from bit 2, register 0xb8. Note: This change will undo the fix in version 3.04, item #1. By doing so, device detection will not work under VAUX only state. The fix in v3.04, item#1 will be put back when ASIC has fixed the device bit in Misc. Config. Register. ----------------------- Version 3.04 -- 1/24/05 ----------------------- 1. Fixed VAUX only case Secondary device detection bug Problem: The primary or secondary device detection was not working on VAUX only case. Cause: PCI config. space was not accessible if there is no VMain Fix: Changed the code to always read from Misc. Config. Register. 2. Initialized TxMbuf Problem: TxMbuf unused bits were not initialized by ASIC. When some bits are not initialized, the TxMbuf will not work. Fix: Bootcode to initialize the first word of each mbuf cluster in all Txmbuf range (0x8000-0xd800). Note: This change is required for ASF/IPMI to work. ----------------------- Version 3.03 (12/14/04) ----------------------- 1. Applied CPU instruction problem workaround Problem: Rev A0 has CPU instruction problem that when CPU reads ASIC registers, the data could not be used in next instruction. Cause: ASIC Bug due to the pipe line. Workaround: Replaced all register read instruction with subroutine call to avoid immidiate use after read. With this change, bootcode was able to boot properly for some devices. Once bootcode was able to run correcly, VPD service was able to perform correctly. ----------------------- Version 3.02 (11/17/04) ----------------------- 1. Fixed Serdes Link problem Problem: Cannot detect Link properly Cause: There is a bug in HLTE A0 part that both Serdes ports will not get link unless bit 8 of 0xb50 of CHANNEL 0 is set to 1. Fix: Setting "clock edge select", bit 8 at register 0x5b0 (Serdes Rx Ctrl Reg) Note: This change is for Serdes (5714s) only. ---------------------- Version 3.01 (11/9/04) ---------------------- 1. Removed PCIE register access Problem: 5714/5714s do not have PCIE registers. Accessing those registers can cause CPU to stall. Fix: Removed all PCIE register access. ---------------------- Version 3.00 (11/9/04) ---------------------- Initial Release