net: phy: Add pm support to Broadcom iProc mdio mux driver
authorArun Parameswaran <arun.parameswaran@broadcom.com>
Thu, 2 Aug 2018 00:53:53 +0000 (17:53 -0700)
committerDavid S. Miller <davem@davemloft.net>
Thu, 2 Aug 2018 21:36:49 +0000 (14:36 -0700)
Add support for suspend and resume to the Broadcom iProc mdio
mux driver.

Signed-off-by: Arun Parameswaran <arun.parameswaran@broadcom.com>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/phy/mdio-mux-bcm-iproc.c

index c5aae5e3f20f57a6ca981c467b7a66e69f6bd90f..c017486e9b86802dfc9834c52e2823b9b83ea248 100644 (file)
@@ -286,6 +286,32 @@ static int mdio_mux_iproc_remove(struct platform_device *pdev)
        return 0;
 }
 
+#ifdef CONFIG_PM_SLEEP
+static int mdio_mux_iproc_suspend(struct device *dev)
+{
+       struct platform_device *pdev = to_platform_device(dev);
+       struct iproc_mdiomux_desc *md = platform_get_drvdata(pdev);
+
+       clk_disable_unprepare(md->core_clk);
+
+       return 0;
+}
+
+static int mdio_mux_iproc_resume(struct device *dev)
+{
+       struct platform_device *pdev = to_platform_device(dev);
+       struct iproc_mdiomux_desc *md = platform_get_drvdata(pdev);
+
+       clk_prepare_enable(md->core_clk);
+       mdio_mux_iproc_config(md);
+
+       return 0;
+}
+#endif
+
+static SIMPLE_DEV_PM_OPS(mdio_mux_iproc_pm_ops,
+                        mdio_mux_iproc_suspend, mdio_mux_iproc_resume);
+
 static const struct of_device_id mdio_mux_iproc_match[] = {
        {
                .compatible = "brcm,mdio-mux-iproc",
@@ -298,6 +324,7 @@ static struct platform_driver mdiomux_iproc_driver = {
        .driver = {
                .name           = "mdio-mux-iproc",
                .of_match_table = mdio_mux_iproc_match,
+               .pm             = &mdio_mux_iproc_pm_ops,
        },
        .probe          = mdio_mux_iproc_probe,
        .remove         = mdio_mux_iproc_remove,