phy_poll_reset(9)
okay so bestie, welcome to phy_poll_reset(9) from the Kernel API Manual π«Άβ¨ this one is literally about waiting for a PHY reset to finish properly instead of rushing in and causing chaos. π
π NAME π
phy_poll_reset β safely wait until a PHY reset has properly completed π
β¨ SYNOPSIS β¨
int phy_poll_reset (struct phy_device *phydev );
π ARGUMENTS π
phydevβ the PHY device to poll. thatβs the cutie weβre checking on, no cap π
π¦ DESCRIPTION π¦
okay so according to IEEE 802.3, Section 2, Subsection 22.2.4.1.1, as published in 2008, a PHY reset may take up to 0.5 seconds. the MII BMCR register must be polled until the BMCR_RESET bit clears. periodt. β³
also? any attempts to write to PHY registers may have no effect or even generate MDIO bus errors until this is complete. so likeβ¦ do not rush her, bestie π
some PHYs (such as the Marvell 88E1111) donβt entirely conform to the standard and do not fully reset after the BMCR_RESET bit is set, and may even REQUIRE a soft-reset to properly restart autonegotiation. yes, REQUIRE in all caps, sheβs dramatic but valid π
in an effort to support such broken PHYs, this function is separate from the standard phy_init_hw which will zero all the other bits in the BMCR and reapply all driver-specific and board-specific fixups. so phy_poll_reset is doing its own little waiting ritual, not the whole phy_init_hw reset-and-reapply-everything situation. fr fr πΈ
π SEE ALSO π
Kernel file: ./drivers/net/phy/phy_device.c
phy_uses_state_machine(9)phy_register_fixup(9)genphy_match_phy_device(9)get_phy_c45_ids(9)get_phy_c22_id(9)get_phy_device(9)phy_device_register(9)phy_device_remove(9)phy_get_c45_ids(9)phy_find_next(9)phy_prepare_link(9)phy_connect_direct(9)phy_connect(9)phy_disconnect(9)phy_sfp_connect_phy(9)phy_sfp_disconnect_phy(9)phy_sfp_attach(9)phy_sfp_detach(9)phy_sfp_probe(9)phy_attach_direct(9)phy_detach(9)phy_reset_after_clk_enable(9)genphy_config_advert(9)genphy_c37_config_advert(9)genphy_setup_forced(9)genphy_restart_aneg(9)genphy_check_and_restart_aneg(9)__genphy_config_aneg(9)genphy_c37_config_aneg(9)genphy_aneg_done(9)genphy_update_link(9)genphy_read_status_fixed(9)genphy_read_status(9)genphy_c37_read_status(9)genphy_soft_reset(9)genphy_read_abilities(9)phy_remove_link_mode(9)phy_advertise_supported(9)phy_advertise_eee_all(9)phy_support_eee(9)phy_disable_eee(9)phy_support_sym_pause(9)phy_support_asym_pause(9)phy_set_sym_pause(9)phy_set_asym_pause(9)phy_validate_pause(9)phy_get_pause(9)phy_get_internal_delay(9)phy_get_tx_amplitude_gain(9)phy_get_mac_termination(9)phy_get_sfp_port(9)fwnode_mdio_find_device(9)fwnode_phy_find_device(9)fwnode_get_phy_node(9)phy_probe(9)phy_driver_register(9)
π cute sign-off: this page lives in ./drivers/net/phy, is dated October 2026, and answers to phy_poll_reset(9) β mwah πβ¨
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms