From: Ranjith Lohithakshan Date: Thu, 5 Nov 2009 06:06:20 +0000 (-0800) Subject: TI DaVinci EMAC: Add suspend/resume capability X-Git-Tag: v2.6.33-rc1~388^2~512 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=8d044fe6aacaf573112331847155211a56a12736;p=platform%2Fkernel%2Flinux-3.10.git TI DaVinci EMAC: Add suspend/resume capability Add suspend/resume capability to TI DaVinci EMAC driver. Signed-off-by: Ranjith Lohithakshan Signed-off-by: Chaithrika U S Signed-off-by: David S. Miller --- diff --git a/drivers/net/davinci_emac.c b/drivers/net/davinci_emac.c index a876dce..f1b09c0 100644 --- a/drivers/net/davinci_emac.c +++ b/drivers/net/davinci_emac.c @@ -2806,11 +2806,33 @@ static int __devexit davinci_emac_remove(struct platform_device *pdev) return 0; } +static +int davinci_emac_suspend(struct platform_device *pdev, pm_message_t state) +{ + struct net_device *dev = platform_get_drvdata(pdev); + + if (netif_running(dev)) + emac_dev_stop(dev); + + clk_disable(emac_clk); + + return 0; +} + +static int davinci_emac_resume(struct platform_device *pdev) +{ + struct net_device *dev = platform_get_drvdata(pdev); + + clk_enable(emac_clk); + + if (netif_running(dev)) + emac_dev_open(dev); + + return 0; +} + /** * davinci_emac_driver: EMAC platform driver structure - * - * We implement only probe and remove functions - suspend/resume and - * others not supported by this module */ static struct platform_driver davinci_emac_driver = { .driver = { @@ -2819,6 +2841,8 @@ static struct platform_driver davinci_emac_driver = { }, .probe = davinci_emac_probe, .remove = __devexit_p(davinci_emac_remove), + .suspend = davinci_emac_suspend, + .resume = davinci_emac_resume, }; /**