• Arun Ramadoss's avatar
    net: phy: lan87xx: change interrupt src of link_up to comm_ready · 5382033a
    Arun Ramadoss authored
    Currently phy link up/down interrupt is enabled using the
    LAN87xx_INTERRUPT_MASK register. In the lan87xx_read_status function,
    phy link is determined using the T1_MODE_STAT_REG register comm_ready bit.
    comm_ready bit is set using the loc_rcvr_status & rem_rcvr_status.
    Whenever the phy link is up, LAN87xx_INTERRUPT_SOURCE link_up bit is set
    first but comm_ready bit takes some time to set based on local and
    remote receiver status.
    As per the current implementation, interrupt is triggered using link_up
    but the comm_ready bit is still cleared in the read_status function. So,
    link is always down.  Initially tested with the shared interrupt
    mechanism with switch and internal phy which is working, but after
    implementing interrupt controller it is not working.
    It can fixed either by updating the read_status function to read from
    LAN87XX_INTERRUPT_SOURCE register or enable the interrupt mask for
    comm_ready bit. But the validation team recommends the use of comm_ready
    for link detection.
    This patch fixes by enabling the comm_ready bit for link_up in the
    LAN87XX_INTERRUPT_MASK_2 register (MISC Bank) and link_down in
    LAN87xx_INTERRUPT_MASK register.
    
    Fixes: 8a1b415d ("net: phy: added ethtool master-slave configuration support")
    Signed-off-by: default avatarArun Ramadoss <arun.ramadoss@microchip.com>
    Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
    Link: https://lore.kernel.org/r/20220905152750.5079-1-arun.ramadoss@microchip.comSigned-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
    5382033a
microchip_t1.c 24.3 KB