From: Wolfram Sang <w.sang@pengutronix.de> To: linux-arm-kernel@lists.infradead.org Cc: netdev@vger.kernel.org, Shawn Guo <shawn.guo@freescale.com>, Wolfram Sang <w.sang@pengutronix.de> Subject: [RFC 1/3] net: freescale: fec: add support for optional enet_out clk Date: Tue, 29 Jan 2013 15:46:11 +0100 [thread overview] Message-ID: <1359470773-14290-2-git-send-email-w.sang@pengutronix.de> (raw) In-Reply-To: <1359470773-14290-1-git-send-email-w.sang@pengutronix.de> Some MX28 boards need the internal enet_out clock to be enabled. So, do this in the driver iff the clock was referenced via devicetree. Signed-off-by: Wolfram Sang <w.sang@pengutronix.de> --- davidm: Please don't apply before Shawn as the mxs-maintainer has given his ack on the general procedure. Or maybe he can merge it via his tree? drivers/net/ethernet/freescale/fec.c | 10 ++++++++++ drivers/net/ethernet/freescale/fec.h | 1 + 2 files changed, 11 insertions(+) diff --git a/drivers/net/ethernet/freescale/fec.c b/drivers/net/ethernet/freescale/fec.c index 0704bca..6573bd5 100644 --- a/drivers/net/ethernet/freescale/fec.c +++ b/drivers/net/ethernet/freescale/fec.c @@ -1628,6 +1628,11 @@ fec_probe(struct platform_device *pdev) goto failed_clk; } + /* enet_out is optional, depends on board */ + fep->clk_enet_out = devm_clk_get(&pdev->dev, "enet_out"); + if (IS_ERR(fep->clk_enet_out)) + fep->clk_enet_out = NULL; + #ifdef CONFIG_FEC_PTP fep->clk_ptp = devm_clk_get(&pdev->dev, "ptp"); if (IS_ERR(fep->clk_ptp)) { @@ -1638,6 +1643,7 @@ fec_probe(struct platform_device *pdev) clk_prepare_enable(fep->clk_ahb); clk_prepare_enable(fep->clk_ipg); + clk_prepare_enable(fep->clk_enet_out); #ifdef CONFIG_FEC_PTP clk_prepare_enable(fep->clk_ptp); #endif @@ -1679,6 +1685,7 @@ failed_register: failed_mii_init: failed_init: failed_regulator: + clk_disable_unprepare(fep->clk_enet_out); clk_disable_unprepare(fep->clk_ahb); clk_disable_unprepare(fep->clk_ipg); #ifdef CONFIG_FEC_PTP @@ -1722,6 +1729,7 @@ fec_drv_remove(struct platform_device *pdev) if (fep->ptp_clock) ptp_clock_unregister(fep->ptp_clock); #endif + clk_disable_unprepare(fep->clk_enet_out); clk_disable_unprepare(fep->clk_ahb); clk_disable_unprepare(fep->clk_ipg); iounmap(fep->hwp); @@ -1747,6 +1755,7 @@ fec_suspend(struct device *dev) fec_stop(ndev); netif_device_detach(ndev); } + clk_disable_unprepare(fep->clk_enet_out); clk_disable_unprepare(fep->clk_ahb); clk_disable_unprepare(fep->clk_ipg); @@ -1759,6 +1768,7 @@ fec_resume(struct device *dev) struct net_device *ndev = dev_get_drvdata(dev); struct fec_enet_private *fep = netdev_priv(ndev); + clk_prepare_enable(fep->clk_enet_out); clk_prepare_enable(fep->clk_ahb); clk_prepare_enable(fep->clk_ipg); if (netif_running(ndev)) { diff --git a/drivers/net/ethernet/freescale/fec.h b/drivers/net/ethernet/freescale/fec.h index c5a3bc1..0648dbe 100644 --- a/drivers/net/ethernet/freescale/fec.h +++ b/drivers/net/ethernet/freescale/fec.h @@ -203,6 +203,7 @@ struct fec_enet_private { struct clk *clk_ipg; struct clk *clk_ahb; + struct clk *clk_enet_out; #ifdef CONFIG_FEC_PTP struct clk *clk_ptp; #endif -- 1.7.10.4
WARNING: multiple messages have this Message-ID (diff)
From: w.sang@pengutronix.de (Wolfram Sang) To: linux-arm-kernel@lists.infradead.org Subject: [RFC 1/3] net: freescale: fec: add support for optional enet_out clk Date: Tue, 29 Jan 2013 15:46:11 +0100 [thread overview] Message-ID: <1359470773-14290-2-git-send-email-w.sang@pengutronix.de> (raw) In-Reply-To: <1359470773-14290-1-git-send-email-w.sang@pengutronix.de> Some MX28 boards need the internal enet_out clock to be enabled. So, do this in the driver iff the clock was referenced via devicetree. Signed-off-by: Wolfram Sang <w.sang@pengutronix.de> --- davidm: Please don't apply before Shawn as the mxs-maintainer has given his ack on the general procedure. Or maybe he can merge it via his tree? drivers/net/ethernet/freescale/fec.c | 10 ++++++++++ drivers/net/ethernet/freescale/fec.h | 1 + 2 files changed, 11 insertions(+) diff --git a/drivers/net/ethernet/freescale/fec.c b/drivers/net/ethernet/freescale/fec.c index 0704bca..6573bd5 100644 --- a/drivers/net/ethernet/freescale/fec.c +++ b/drivers/net/ethernet/freescale/fec.c @@ -1628,6 +1628,11 @@ fec_probe(struct platform_device *pdev) goto failed_clk; } + /* enet_out is optional, depends on board */ + fep->clk_enet_out = devm_clk_get(&pdev->dev, "enet_out"); + if (IS_ERR(fep->clk_enet_out)) + fep->clk_enet_out = NULL; + #ifdef CONFIG_FEC_PTP fep->clk_ptp = devm_clk_get(&pdev->dev, "ptp"); if (IS_ERR(fep->clk_ptp)) { @@ -1638,6 +1643,7 @@ fec_probe(struct platform_device *pdev) clk_prepare_enable(fep->clk_ahb); clk_prepare_enable(fep->clk_ipg); + clk_prepare_enable(fep->clk_enet_out); #ifdef CONFIG_FEC_PTP clk_prepare_enable(fep->clk_ptp); #endif @@ -1679,6 +1685,7 @@ failed_register: failed_mii_init: failed_init: failed_regulator: + clk_disable_unprepare(fep->clk_enet_out); clk_disable_unprepare(fep->clk_ahb); clk_disable_unprepare(fep->clk_ipg); #ifdef CONFIG_FEC_PTP @@ -1722,6 +1729,7 @@ fec_drv_remove(struct platform_device *pdev) if (fep->ptp_clock) ptp_clock_unregister(fep->ptp_clock); #endif + clk_disable_unprepare(fep->clk_enet_out); clk_disable_unprepare(fep->clk_ahb); clk_disable_unprepare(fep->clk_ipg); iounmap(fep->hwp); @@ -1747,6 +1755,7 @@ fec_suspend(struct device *dev) fec_stop(ndev); netif_device_detach(ndev); } + clk_disable_unprepare(fep->clk_enet_out); clk_disable_unprepare(fep->clk_ahb); clk_disable_unprepare(fep->clk_ipg); @@ -1759,6 +1768,7 @@ fec_resume(struct device *dev) struct net_device *ndev = dev_get_drvdata(dev); struct fec_enet_private *fep = netdev_priv(ndev); + clk_prepare_enable(fep->clk_enet_out); clk_prepare_enable(fep->clk_ahb); clk_prepare_enable(fep->clk_ipg); if (netif_running(ndev)) { diff --git a/drivers/net/ethernet/freescale/fec.h b/drivers/net/ethernet/freescale/fec.h index c5a3bc1..0648dbe 100644 --- a/drivers/net/ethernet/freescale/fec.h +++ b/drivers/net/ethernet/freescale/fec.h @@ -203,6 +203,7 @@ struct fec_enet_private { struct clk *clk_ipg; struct clk *clk_ahb; + struct clk *clk_enet_out; #ifdef CONFIG_FEC_PTP struct clk *clk_ptp; #endif -- 1.7.10.4
next prev parent reply other threads:[~2013-01-29 14:46 UTC|newest] Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top 2013-01-29 14:46 [RFC 0/3] arm: mxs: sanitize enet_out clock handling Wolfram Sang 2013-01-29 14:46 ` Wolfram Sang 2013-01-29 14:46 ` Wolfram Sang [this message] 2013-01-29 14:46 ` [RFC 1/3] net: freescale: fec: add support for optional enet_out clk Wolfram Sang 2013-01-30 5:25 ` Shawn Guo 2013-01-30 5:25 ` Shawn Guo 2013-01-31 15:12 ` Wolfram Sang 2013-01-31 15:12 ` Wolfram Sang 2013-01-29 14:46 ` [RFC 2/3] arm: mxs: add enet_out clock to devicetree Wolfram Sang 2013-01-29 14:46 ` Wolfram Sang 2013-01-29 14:46 ` [RFC 3/3] arm: mach-mxs: make enabling enet_out a legacy function Wolfram Sang 2013-01-29 14:46 ` Wolfram Sang 2013-01-30 5:48 ` Shawn Guo 2013-01-30 5:48 ` Shawn Guo 2013-01-30 7:58 ` Wolfram Sang 2013-01-30 7:58 ` Wolfram Sang 2013-01-30 12:29 ` Shawn Guo 2013-01-30 12:29 ` Shawn Guo 2013-03-15 5:30 ` [RFC 0/3] arm: mxs: sanitize enet_out clock handling Trent Piepho 2013-03-15 21:27 ` Trent Piepho 2013-03-15 21:27 ` Trent Piepho 2013-03-18 6:40 ` Shawn Guo 2013-03-18 6:40 ` Shawn Guo
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1359470773-14290-2-git-send-email-w.sang@pengutronix.de \ --to=w.sang@pengutronix.de \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=netdev@vger.kernel.org \ --cc=shawn.guo@freescale.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.