• Florian Fainelli's avatar
    phy: fix the use of PHY_IGNORE_INTERRUPT · 2c7b4921
    Florian Fainelli authored
    When a PHY device is registered with the special IRQ value
    PHY_IGNORE_INTERRUPT (-2) it will not properly be handled by the PHY
    library:
    
    - it continues to poll its register, while we do not want this
      because such PHY link events or register changes are serviced by an
      Ethernet MAC
    - it will still try to configure PHY interrupts at the PHY level, such
      interrupts do not exist at the PHY but at the MAC level
    - the state machine only handles PHY_POLL, but should also handle
      PHY_IGNORE_INTERRUPT similarly
    
    This patch updates the PHY state machine and initialization paths to
    account for the specific PHY_IGNORE_INTERRUPT. Based on an earlier patch
    by Thomas Petazzoni, and reworked to add the missing bits. Add a helper
    phy_interrupt_is_valid() which specifically tests for a PHY interrupt
    not to be PHY_POLL or PHY_IGNORE_INTERRUPT and use it throughout the
    code.
    Signed-off-by: default avatarThomas Petazzoni <thomas.petazzoni@free-electrons.com>
    Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    2c7b4921
phy_device.c 27.4 KB