phy: lynx-28g: cancel the CDR check work item on the remove path
authorIoana Ciornei <ioana.ciornei@nxp.com>
Wed, 4 Oct 2023 11:17:06 +0000 (14:17 +0300)
committerDavid S. Miller <davem@davemloft.net>
Fri, 6 Oct 2023 09:59:52 +0000 (10:59 +0100)
The blamed commit added the CDR check work item but didn't cancel it on
the remove path. Fix this by adding a remove function which takes care
of it.

Fixes: 8f73b37cf3fb ("phy: add support for the Layerscape SerDes 28G")
Signed-off-by: Ioana Ciornei <ioana.ciornei@nxp.com>
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/phy/freescale/phy-fsl-lynx-28g.c

index 4f036c7..c632366 100644 (file)
@@ -604,6 +604,14 @@ static int lynx_28g_probe(struct platform_device *pdev)
        return PTR_ERR_OR_ZERO(provider);
 }
 
+static void lynx_28g_remove(struct platform_device *pdev)
+{
+       struct device *dev = &pdev->dev;
+       struct lynx_28g_priv *priv = dev_get_drvdata(dev);
+
+       cancel_delayed_work_sync(&priv->cdr_check);
+}
+
 static const struct of_device_id lynx_28g_of_match_table[] = {
        { .compatible = "fsl,lynx-28g" },
        { },
@@ -612,6 +620,7 @@ MODULE_DEVICE_TABLE(of, lynx_28g_of_match_table);
 
 static struct platform_driver lynx_28g_driver = {
        .probe  = lynx_28g_probe,
+       .remove_new = lynx_28g_remove,
        .driver = {
                .name = "lynx-28g",
                .of_match_table = lynx_28g_of_match_table,