• Robert Marko's avatar
    net: phy: aquantia: add firmware load support · e93984eb
    Robert Marko authored
    Aquantia PHY-s require firmware to be loaded before they start operating.
    It can be automatically loaded in case when there is a SPI-NOR connected
    to Aquantia PHY-s or can be loaded from the host via MDIO.
    
    This patch adds support for loading the firmware via MDIO as in most cases
    there is no SPI-NOR being used to save on cost.
    Firmware loading code itself is ported from mainline U-boot with cleanups.
    
    The firmware has mixed values both in big and little endian.
    PHY core itself is big-endian but it expects values to be in little-endian.
    The firmware is little-endian but CRC-16 value for it is stored at the end
    of firmware in big-endian.
    
    It seems the PHY does the conversion internally from firmware that is
    little-endian to the PHY that is big-endian on using the mailbox
    but mailbox returns a big-endian CRC-16 to verify the written data
    integrity.
    Co-developed-by: default avatarChristian Marangi <ansuelsmth@gmail.com>
    Signed-off-by: default avatarRobert Marko <robimarko@gmail.com>
    Signed-off-by: default avatarChristian Marangi <ansuelsmth@gmail.com>
    Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    e93984eb
aquantia_main.c 23.4 KB