]> git.baikalelectronics.ru Git - kernel.git/commitdiff
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)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 19 Oct 2023 21:08:52 +0000 (23:08 +0200)
[ Upstream commit f200bab3756fe81493a1b280180dafa1d9ccdcf7 ]

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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/phy/freescale/phy-fsl-lynx-28g.c

index 569f12af2aafaa77400a9e3201a450fa24e55830..9d55dbee2e0a56357821bb92a5f74f2292685e45 100644 (file)
@@ -603,6 +603,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" },
        { },
@@ -611,6 +619,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,