Skip to content
  • Alexander Potashev's avatar
    RT73025. ea-lpc1788: fix hang-up in Ethernet driver after SYSRESET · 6c05ceb4
    Alexander Potashev authored
    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.
    6c05ceb4