RT73025. ea-lpc1788: fix hang-up in Ethernet driver after SYSRESET
To avoid hang-up of the Ethernet block after Cortex-M3 software reset (SYSRESET), we need to reset the Ethernet PHY immediately before performing the SYSRESET. All new code added in this patch should be in placed in `.ramcode`, because we might want to do a software reset after self-upgrade. Since we cannot use `printf()` in functions that may be called during self-upgrade (`printf()` is too big for `.ramcode`), the `lpc178x_phy_init()` function cannot be easily used in `lpc178x_phy_final_reset()`. Because of this, we use a pre-set PHY address (`CONFIG_LPC178X_ETH_PHY_ADDR`) instead of doing automatic PHY discovery that is usually done in `lpc178x_phy_init()`. If Ethernet is not enabled in the U-Boot configuration file, we do not perform the PHY reset. This leads to a minor bug: if you install U-Boot without Ethernet support into your board and do a self-upgrade to another build of U-Boot with Ethernet support, the Ethernet driver will hang in the latter U-Boot unless you have done a full reset (by pushing the SW1 button) after self-upgrade.
Showing with 146 additions and 5 deletions