24
24
#include <linux/module.h>
25
25
#include <linux/kernel.h>
26
26
#include <linux/string.h>
27
- #include <linux/pm_runtime.h>
28
27
#include <linux/ptrace.h>
29
28
#include <linux/errno.h>
30
29
#include <linux/ioport.h>
@@ -78,7 +77,6 @@ static void fec_enet_itr_coal_init(struct net_device *ndev);
78
77
#define FEC_ENET_RAEM_V 0x8
79
78
#define FEC_ENET_RAFL_V 0x8
80
79
#define FEC_ENET_OPD_V 0xFFF0
81
- #define FEC_MDIO_PM_TIMEOUT 100 /* ms */
82
80
83
81
static struct platform_device_id fec_devtype [] = {
84
82
{
@@ -1769,13 +1767,7 @@ static void fec_enet_adjust_link(struct net_device *ndev)
1769
1767
static int fec_enet_mdio_read (struct mii_bus * bus , int mii_id , int regnum )
1770
1768
{
1771
1769
struct fec_enet_private * fep = bus -> priv ;
1772
- struct device * dev = & fep -> pdev -> dev ;
1773
1770
unsigned long time_left ;
1774
- int ret = 0 ;
1775
-
1776
- ret = pm_runtime_get_sync (dev );
1777
- if (IS_ERR_VALUE (ret ))
1778
- return ret ;
1779
1771
1780
1772
fep -> mii_timeout = 0 ;
1781
1773
init_completion (& fep -> mdio_done );
@@ -1791,30 +1783,18 @@ static int fec_enet_mdio_read(struct mii_bus *bus, int mii_id, int regnum)
1791
1783
if (time_left == 0 ) {
1792
1784
fep -> mii_timeout = 1 ;
1793
1785
netdev_err (fep -> netdev , "MDIO read timeout\n" );
1794
- ret = - ETIMEDOUT ;
1795
- goto out ;
1786
+ return - ETIMEDOUT ;
1796
1787
}
1797
1788
1798
- ret = FEC_MMFR_DATA (readl (fep -> hwp + FEC_MII_DATA ));
1799
-
1800
- out :
1801
- pm_runtime_mark_last_busy (dev );
1802
- pm_runtime_put_autosuspend (dev );
1803
-
1804
- return ret ;
1789
+ /* return value */
1790
+ return FEC_MMFR_DATA (readl (fep -> hwp + FEC_MII_DATA ));
1805
1791
}
1806
1792
1807
1793
static int fec_enet_mdio_write (struct mii_bus * bus , int mii_id , int regnum ,
1808
1794
u16 value )
1809
1795
{
1810
1796
struct fec_enet_private * fep = bus -> priv ;
1811
- struct device * dev = & fep -> pdev -> dev ;
1812
1797
unsigned long time_left ;
1813
- int ret = 0 ;
1814
-
1815
- ret = pm_runtime_get_sync (dev );
1816
- if (IS_ERR_VALUE (ret ))
1817
- return ret ;
1818
1798
1819
1799
fep -> mii_timeout = 0 ;
1820
1800
init_completion (& fep -> mdio_done );
@@ -1831,13 +1811,10 @@ static int fec_enet_mdio_write(struct mii_bus *bus, int mii_id, int regnum,
1831
1811
if (time_left == 0 ) {
1832
1812
fep -> mii_timeout = 1 ;
1833
1813
netdev_err (fep -> netdev , "MDIO write timeout\n" );
1834
- ret = - ETIMEDOUT ;
1814
+ return - ETIMEDOUT ;
1835
1815
}
1836
1816
1837
- pm_runtime_mark_last_busy (dev );
1838
- pm_runtime_put_autosuspend (dev );
1839
-
1840
- return ret ;
1817
+ return 0 ;
1841
1818
}
1842
1819
1843
1820
static int fec_enet_clk_enable (struct net_device * ndev , bool enable )
@@ -1849,6 +1826,9 @@ static int fec_enet_clk_enable(struct net_device *ndev, bool enable)
1849
1826
ret = clk_prepare_enable (fep -> clk_ahb );
1850
1827
if (ret )
1851
1828
return ret ;
1829
+ ret = clk_prepare_enable (fep -> clk_ipg );
1830
+ if (ret )
1831
+ goto failed_clk_ipg ;
1852
1832
if (fep -> clk_enet_out ) {
1853
1833
ret = clk_prepare_enable (fep -> clk_enet_out );
1854
1834
if (ret )
@@ -1872,6 +1852,7 @@ static int fec_enet_clk_enable(struct net_device *ndev, bool enable)
1872
1852
}
1873
1853
} else {
1874
1854
clk_disable_unprepare (fep -> clk_ahb );
1855
+ clk_disable_unprepare (fep -> clk_ipg );
1875
1856
if (fep -> clk_enet_out )
1876
1857
clk_disable_unprepare (fep -> clk_enet_out );
1877
1858
if (fep -> clk_ptp ) {
@@ -1893,6 +1874,8 @@ static int fec_enet_clk_enable(struct net_device *ndev, bool enable)
1893
1874
if (fep -> clk_enet_out )
1894
1875
clk_disable_unprepare (fep -> clk_enet_out );
1895
1876
failed_clk_enet_out :
1877
+ clk_disable_unprepare (fep -> clk_ipg );
1878
+ failed_clk_ipg :
1896
1879
clk_disable_unprepare (fep -> clk_ahb );
1897
1880
1898
1881
return ret ;
@@ -2864,14 +2847,10 @@ fec_enet_open(struct net_device *ndev)
2864
2847
struct fec_enet_private * fep = netdev_priv (ndev );
2865
2848
int ret ;
2866
2849
2867
- ret = pm_runtime_get_sync (& fep -> pdev -> dev );
2868
- if (IS_ERR_VALUE (ret ))
2869
- return ret ;
2870
-
2871
2850
pinctrl_pm_select_default_state (& fep -> pdev -> dev );
2872
2851
ret = fec_enet_clk_enable (ndev , true);
2873
2852
if (ret )
2874
- goto clk_enable ;
2853
+ return ret ;
2875
2854
2876
2855
/* I should reset the ring buffers here, but I don't yet know
2877
2856
* a simple way to do that.
@@ -2902,9 +2881,6 @@ fec_enet_open(struct net_device *ndev)
2902
2881
fec_enet_free_buffers (ndev );
2903
2882
err_enet_alloc :
2904
2883
fec_enet_clk_enable (ndev , false);
2905
- clk_enable :
2906
- pm_runtime_mark_last_busy (& fep -> pdev -> dev );
2907
- pm_runtime_put_autosuspend (& fep -> pdev -> dev );
2908
2884
pinctrl_pm_select_sleep_state (& fep -> pdev -> dev );
2909
2885
return ret ;
2910
2886
}
@@ -2927,9 +2903,6 @@ fec_enet_close(struct net_device *ndev)
2927
2903
2928
2904
fec_enet_clk_enable (ndev , false);
2929
2905
pinctrl_pm_select_sleep_state (& fep -> pdev -> dev );
2930
- pm_runtime_mark_last_busy (& fep -> pdev -> dev );
2931
- pm_runtime_put_autosuspend (& fep -> pdev -> dev );
2932
-
2933
2906
fec_enet_free_buffers (ndev );
2934
2907
2935
2908
return 0 ;
@@ -3415,10 +3388,6 @@ fec_probe(struct platform_device *pdev)
3415
3388
if (ret )
3416
3389
goto failed_clk ;
3417
3390
3418
- ret = clk_prepare_enable (fep -> clk_ipg );
3419
- if (ret )
3420
- goto failed_clk_ipg ;
3421
-
3422
3391
fep -> reg_phy = devm_regulator_get (& pdev -> dev , "phy" );
3423
3392
if (!IS_ERR (fep -> reg_phy )) {
3424
3393
ret = regulator_enable (fep -> reg_phy );
@@ -3465,8 +3434,6 @@ fec_probe(struct platform_device *pdev)
3465
3434
netif_carrier_off (ndev );
3466
3435
fec_enet_clk_enable (ndev , false);
3467
3436
pinctrl_pm_select_sleep_state (& pdev -> dev );
3468
- pm_runtime_set_active (& pdev -> dev );
3469
- pm_runtime_enable (& pdev -> dev );
3470
3437
3471
3438
ret = register_netdev (ndev );
3472
3439
if (ret )
@@ -3480,12 +3447,6 @@ fec_probe(struct platform_device *pdev)
3480
3447
3481
3448
fep -> rx_copybreak = COPYBREAK_DEFAULT ;
3482
3449
INIT_WORK (& fep -> tx_timeout_work , fec_enet_timeout_work );
3483
-
3484
- pm_runtime_set_autosuspend_delay (& pdev -> dev , FEC_MDIO_PM_TIMEOUT );
3485
- pm_runtime_use_autosuspend (& pdev -> dev );
3486
- pm_runtime_mark_last_busy (& pdev -> dev );
3487
- pm_runtime_put_autosuspend (& pdev -> dev );
3488
-
3489
3450
return 0 ;
3490
3451
3491
3452
failed_register :
@@ -3496,8 +3457,6 @@ fec_probe(struct platform_device *pdev)
3496
3457
if (fep -> reg_phy )
3497
3458
regulator_disable (fep -> reg_phy );
3498
3459
failed_regulator :
3499
- clk_disable_unprepare (fep -> clk_ipg );
3500
- failed_clk_ipg :
3501
3460
fec_enet_clk_enable (ndev , false);
3502
3461
failed_clk :
3503
3462
failed_phy :
@@ -3609,28 +3568,7 @@ static int __maybe_unused fec_resume(struct device *dev)
3609
3568
return ret ;
3610
3569
}
3611
3570
3612
- static int __maybe_unused fec_runtime_suspend (struct device * dev )
3613
- {
3614
- struct net_device * ndev = dev_get_drvdata (dev );
3615
- struct fec_enet_private * fep = netdev_priv (ndev );
3616
-
3617
- clk_disable_unprepare (fep -> clk_ipg );
3618
-
3619
- return 0 ;
3620
- }
3621
-
3622
- static int __maybe_unused fec_runtime_resume (struct device * dev )
3623
- {
3624
- struct net_device * ndev = dev_get_drvdata (dev );
3625
- struct fec_enet_private * fep = netdev_priv (ndev );
3626
-
3627
- return clk_prepare_enable (fep -> clk_ipg );
3628
- }
3629
-
3630
- static const struct dev_pm_ops fec_pm_ops = {
3631
- SET_SYSTEM_SLEEP_PM_OPS (fec_suspend , fec_resume )
3632
- SET_RUNTIME_PM_OPS (fec_runtime_suspend , fec_runtime_resume , NULL )
3633
- };
3571
+ static SIMPLE_DEV_PM_OPS (fec_pm_ops , fec_suspend , fec_resume ) ;
3634
3572
3635
3573
static struct platform_driver fec_driver = {
3636
3574
.driver = {
0 commit comments