diff options
| author | Fabio Estevam <fabio.estevam@freescale.com> | 2013-05-26 23:48:32 -0400 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2013-05-28 01:29:54 -0400 |
| commit | c55284e4ddf3779f52d730bedfa264d35d42e539 (patch) | |
| tree | 25873cec87f7694efcf82257ffeebcf7f37ff22d | |
| parent | f6a4d607b3fdfaf305f3e78837cb8969d62c249a (diff) | |
fec: Remove irqs first
During probe the clocks are enabled prior than the acquiring the interrupts.
In the remove function we need to do the opposite: first remove the interrupts
and then disable the clocks.
Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
| -rw-r--r-- | drivers/net/ethernet/freescale/fec_main.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/drivers/net/ethernet/freescale/fec_main.c b/drivers/net/ethernet/freescale/fec_main.c index 58ac0c76441f..cac667db61be 100644 --- a/drivers/net/ethernet/freescale/fec_main.c +++ b/drivers/net/ethernet/freescale/fec_main.c | |||
| @@ -2009,6 +2009,11 @@ fec_drv_remove(struct platform_device *pdev) | |||
| 2009 | unregister_netdev(ndev); | 2009 | unregister_netdev(ndev); |
| 2010 | fec_enet_mii_remove(fep); | 2010 | fec_enet_mii_remove(fep); |
| 2011 | del_timer_sync(&fep->time_keep); | 2011 | del_timer_sync(&fep->time_keep); |
| 2012 | for (i = 0; i < FEC_IRQ_NUM; i++) { | ||
| 2013 | int irq = platform_get_irq(pdev, i); | ||
| 2014 | if (irq > 0) | ||
| 2015 | free_irq(irq, ndev); | ||
| 2016 | } | ||
| 2012 | if (fep->reg_phy) | 2017 | if (fep->reg_phy) |
| 2013 | regulator_disable(fep->reg_phy); | 2018 | regulator_disable(fep->reg_phy); |
| 2014 | clk_disable_unprepare(fep->clk_ptp); | 2019 | clk_disable_unprepare(fep->clk_ptp); |
| @@ -2017,11 +2022,6 @@ fec_drv_remove(struct platform_device *pdev) | |||
| 2017 | clk_disable_unprepare(fep->clk_enet_out); | 2022 | clk_disable_unprepare(fep->clk_enet_out); |
| 2018 | clk_disable_unprepare(fep->clk_ahb); | 2023 | clk_disable_unprepare(fep->clk_ahb); |
| 2019 | clk_disable_unprepare(fep->clk_ipg); | 2024 | clk_disable_unprepare(fep->clk_ipg); |
| 2020 | for (i = 0; i < FEC_IRQ_NUM; i++) { | ||
| 2021 | int irq = platform_get_irq(pdev, i); | ||
| 2022 | if (irq > 0) | ||
| 2023 | free_irq(irq, ndev); | ||
| 2024 | } | ||
| 2025 | free_netdev(ndev); | 2025 | free_netdev(ndev); |
| 2026 | 2026 | ||
| 2027 | platform_set_drvdata(pdev, NULL); | 2027 | platform_set_drvdata(pdev, NULL); |
