]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
phy: mscc: Fix PTP for VSC8574 and VSC8572
authorHoratiu Vultur <horatiu.vultur@microchip.com>
Thu, 23 Oct 2025 19:13:50 +0000 (21:13 +0200)
committerJakub Kicinski <kuba@kernel.org>
Tue, 28 Oct 2025 00:58:02 +0000 (17:58 -0700)
The PTP initialization is two-step. First part are the function
vsc8584_ptp_probe_once() and vsc8584_ptp_probe() at probe time which
initialize the locks, queues, creates the PTP device. The second part is
the function vsc8584_ptp_init() at config_init() time which initialize
PTP in the HW.

For VSC8574 and VSC8572, the PTP initialization is incomplete. It is
missing the first part but it makes the second part. Meaning that the
ptp_clock_register() is never called.

There is no crash without the first part when enabling PTP but this is
unexpected because some PHys have PTP functionality exposed by the
driver and some don't even though they share the same PTP clock PTP.

Fixes: 774626fa440e ("net: phy: mscc: Add PTP support for 2 more VSC PHYs")
Reviewed-by: Maxime Chevallier <maxime.chevallier@bootlin.com>
Signed-off-by: Horatiu Vultur <horatiu.vultur@microchip.com>
Link: https://patch.msgid.link/20251023191350.190940-3-horatiu.vultur@microchip.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/phy/mscc/mscc_main.c

index 9343ed3b000d404d6fdca0287b441370825ff7df..8678ebf89cca510ac30269a86be8b589247feb41 100644 (file)
@@ -2613,7 +2613,7 @@ static struct phy_driver vsc85xx_driver[] = {
        .suspend        = &genphy_suspend,
        .resume         = &genphy_resume,
        .remove         = &vsc85xx_remove,
-       .probe          = &vsc8574_probe,
+       .probe          = &vsc8584_probe,
        .set_wol        = &vsc85xx_wol_set,
        .get_wol        = &vsc85xx_wol_get,
        .get_tunable    = &vsc85xx_get_tunable,
@@ -2636,12 +2636,12 @@ static struct phy_driver vsc85xx_driver[] = {
        .config_aneg    = &vsc85xx_config_aneg,
        .aneg_done      = &genphy_aneg_done,
        .read_status    = &vsc85xx_read_status,
-       .handle_interrupt = vsc85xx_handle_interrupt,
+       .handle_interrupt = vsc8584_handle_interrupt,
        .config_intr    = &vsc85xx_config_intr,
        .suspend        = &genphy_suspend,
        .resume         = &genphy_resume,
        .remove         = &vsc85xx_remove,
-       .probe          = &vsc8574_probe,
+       .probe          = &vsc8584_probe,
        .set_wol        = &vsc85xx_wol_set,
        .get_wol        = &vsc85xx_wol_get,
        .get_tunable    = &vsc85xx_get_tunable,