[lkml]   [2022]   [Jan]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    Patch in this message
    Subject[PATCH 5.15 793/846] net: axienet: reset core on initialization prior to MDIO access
    From: Robert Hancock <>

    commit 04cc2da39698efd7eb2e30c112538922d26f848e upstream.

    In some cases where the Xilinx Ethernet core was used in 1000Base-X or
    SGMII modes, which use the internal PCS/PMA PHY, and the MGT
    transceiver clock source for the PCS was not running at the time the
    FPGA logic was loaded, the core would come up in a state where the
    PCS could not be found on the MDIO bus. To fix this, the Ethernet core
    (including the PCS) should be reset after enabling the clocks, prior to
    attempting to access the PCS using of_mdio_find_device.

    Fixes: 1a02556086fc (net: axienet: Properly handle PCS/PMA PHY for 1000BaseX mode)
    Signed-off-by: Robert Hancock <>
    Reviewed-by: Andrew Lunn <>
    Signed-off-by: David S. Miller <>
    Signed-off-by: Greg Kroah-Hartman <>
    drivers/net/ethernet/xilinx/xilinx_axienet_main.c | 5 +++++
    1 file changed, 5 insertions(+)

    --- a/drivers/net/ethernet/xilinx/xilinx_axienet_main.c
    +++ b/drivers/net/ethernet/xilinx/xilinx_axienet_main.c
    @@ -2091,6 +2091,11 @@ static int axienet_probe(struct platform
    lp->coalesce_count_rx = XAXIDMA_DFT_RX_THRESHOLD;
    lp->coalesce_count_tx = XAXIDMA_DFT_TX_THRESHOLD;

    + /* Reset core now that clocks are enabled, prior to accessing MDIO */
    + ret = __axienet_device_reset(lp);
    + if (ret)
    + goto cleanup_clk;
    lp->phy_node = of_parse_phandle(pdev->dev.of_node, "phy-handle", 0);
    if (lp->phy_node) {
    ret = axienet_mdio_setup(lp);

     \ /
      Last update: 2022-01-25 01:11    [W:5.511 / U:0.476 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site