Release Note for BCM5703/2 Family BOOT Code Firmware ==================================================== 5702, 5703, 5703s -------------------------- Version 2.43 ---- 11/29/04 -------------------------- 1. Removed NIC cut off delay time feature Problem: In NIC, when firmware detects VMain is not present and WoL is diabled, it will cut off power by using GPIO 1 to generate a rising edge. This debug feature is to delay the time before cutting off the power. The user had choice of delaying 250ms, 150ms, 50ms, or 0ms before cut off power. By default, the delay time was 250ms. However, this feature not only appears to be no value in final product but also to cause excessive power comsumption before cutting off power, it is better to remove this feature. Fix: Removed this feature. Impact: Changing VAUX cut off delay value in NVRAM configuration (offset 0xc4, [23:24]) will take no effect. 2. Changed Serdes power dissipated value Problem: The default value for Serdes power dissipated value was incorrect Fix: Changed value D3:D2:D1:D0 from 0.16.0.28 to 10.0.0.100 Note: This change only affect Serdes, 5703s, device. ------------------------- Version 2.42 ---- 8/2/04 ------------------------- 1. Reset Write & Read DMA engine upon reset Problem: Some chips will assert interrupt signal when first time apply AC power. Cause: We found the interrupt assertion was caused by DMA engine coming up uninitialized. The LSI team has determined that the DMA engine reset issue root cause is a "race condition" with regard to how a reset event is handled internally in the device, whereby certain blocks inside the device may not actually get reset. So the recommendation from the LSI team is that we modify bootcode to reset both the read DMA and write DMA block. Fix: Upon device reset, issue a reset to both read and write DMA block. ------------------------ Version 2.41 ---- 5/5/04 ------------------------ 1. Added blinking feature when loading ASF code failed. Problem: Loading ASF failure case has been seen on certain system. Enhancement: In order to indicate loading ASF failed, blinking LED feature has been added. 2. Enable PXE only when PXE image exists Problem: System may hang when PXE is enabled without PXE image. Cause: Due to user error, it is possible PXE is enabled without image. Bootcode was enabling PXE based on enable/disable. As result, bootcode is returning garbage. Fix: Advertise PXE only when there is an image and PXE is enabled. ------------------------ Version 2.40 ------------------------ 1. Fixed ASF/Driver handshake problem Problem: Today, we are using the shared memory last_driver_state, 0xc04, as parameter for reset. last_driver_state got cleared by bootcode upon reset. For legacy method, driver deposit this parameter after GRC reset; therefore the symton is not showing up. However, by doing this, there will be a race condition between driver write and ASF code read. ASF code loading too fast or driver's delay is too long after GRC reset can cause ASF code to miss the command. The proper way to fix this should be done in both driver and firmware: Firmware should change to not to clear this field upon reset. Driver should deposit command prior to GRC reset; however this will not work with older firmware since the command get cleared upon reset; therefore, driver should deposit the command one more time after reset like before to prevent the device running with old firmware. Cause: Upon reset, bootcode is designed to initialize all shared memory between 0xb54-0xc28 to zero. Originally, when last_driver_state field was defined, it was only used for ASF self resetting purpose; therefore, the code has been changed to: "if the last_driver_state (0xc04) contains CPU_RESET (0x40), then preserve this value." Any other value was cleared to zero. When ASF code sees the value "CPU_RESET", it knows the reset was initiated by ASF code itself and will know how to handle the reset. This changed was made in more than two years ago, Dec. 92. and it was working since. Today, we defined more usage for last_driver_state parameter. However, since the bootcode will only preserve the value for CPU_RESET (0x40), any other parameter was zeroed. The reason, the problem never showed up until now was probably because, driver was writing the parameter after bootcode initialize shared memory to zero and before ASF was fully up and running. Now, we are trying to change the driver code to deposit signature and parameter before GRC reset, the problem showed up. fix: Change bootcode to preserve any value in last_driver_state, 0xc04.