diff options
Diffstat (limited to 'drivers/net/ethernet/nxp/lpc_eth.c')
-rw-r--r-- | drivers/net/ethernet/nxp/lpc_eth.c | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/drivers/net/ethernet/nxp/lpc_eth.c b/drivers/net/ethernet/nxp/lpc_eth.c index 4d4ecba0aad9..8e13ec84c538 100644 --- a/drivers/net/ethernet/nxp/lpc_eth.c +++ b/drivers/net/ethernet/nxp/lpc_eth.c | |||
@@ -475,14 +475,6 @@ static void __lpc_get_mac(struct netdata_local *pldat, u8 *mac) | |||
475 | mac[5] = tmp >> 8; | 475 | mac[5] = tmp >> 8; |
476 | } | 476 | } |
477 | 477 | ||
478 | static void __lpc_eth_clock_enable(struct netdata_local *pldat, bool enable) | ||
479 | { | ||
480 | if (enable) | ||
481 | clk_prepare_enable(pldat->clk); | ||
482 | else | ||
483 | clk_disable_unprepare(pldat->clk); | ||
484 | } | ||
485 | |||
486 | static void __lpc_params_setup(struct netdata_local *pldat) | 478 | static void __lpc_params_setup(struct netdata_local *pldat) |
487 | { | 479 | { |
488 | u32 tmp; | 480 | u32 tmp; |
@@ -1056,7 +1048,7 @@ static int lpc_eth_close(struct net_device *ndev) | |||
1056 | writel(0, LPC_ENET_MAC2(pldat->net_base)); | 1048 | writel(0, LPC_ENET_MAC2(pldat->net_base)); |
1057 | spin_unlock_irqrestore(&pldat->lock, flags); | 1049 | spin_unlock_irqrestore(&pldat->lock, flags); |
1058 | 1050 | ||
1059 | __lpc_eth_clock_enable(pldat, false); | 1051 | clk_disable_unprepare(pldat->clk); |
1060 | 1052 | ||
1061 | return 0; | 1053 | return 0; |
1062 | } | 1054 | } |
@@ -1197,11 +1189,14 @@ static int lpc_eth_ioctl(struct net_device *ndev, struct ifreq *req, int cmd) | |||
1197 | static int lpc_eth_open(struct net_device *ndev) | 1189 | static int lpc_eth_open(struct net_device *ndev) |
1198 | { | 1190 | { |
1199 | struct netdata_local *pldat = netdev_priv(ndev); | 1191 | struct netdata_local *pldat = netdev_priv(ndev); |
1192 | int ret; | ||
1200 | 1193 | ||
1201 | if (netif_msg_ifup(pldat)) | 1194 | if (netif_msg_ifup(pldat)) |
1202 | dev_dbg(&pldat->pdev->dev, "enabling %s\n", ndev->name); | 1195 | dev_dbg(&pldat->pdev->dev, "enabling %s\n", ndev->name); |
1203 | 1196 | ||
1204 | __lpc_eth_clock_enable(pldat, true); | 1197 | ret = clk_prepare_enable(pldat->clk); |
1198 | if (ret) | ||
1199 | return ret; | ||
1205 | 1200 | ||
1206 | /* Suspended PHY makes LPC ethernet core block, so resume now */ | 1201 | /* Suspended PHY makes LPC ethernet core block, so resume now */ |
1207 | phy_resume(ndev->phydev); | 1202 | phy_resume(ndev->phydev); |
@@ -1320,7 +1315,9 @@ static int lpc_eth_drv_probe(struct platform_device *pdev) | |||
1320 | } | 1315 | } |
1321 | 1316 | ||
1322 | /* Enable network clock */ | 1317 | /* Enable network clock */ |
1323 | __lpc_eth_clock_enable(pldat, true); | 1318 | ret = clk_prepare_enable(pldat->clk); |
1319 | if (ret) | ||
1320 | goto err_out_clk_put; | ||
1324 | 1321 | ||
1325 | /* Map IO space */ | 1322 | /* Map IO space */ |
1326 | pldat->net_base = ioremap(res->start, resource_size(res)); | 1323 | pldat->net_base = ioremap(res->start, resource_size(res)); |
@@ -1454,6 +1451,7 @@ err_out_iounmap: | |||
1454 | iounmap(pldat->net_base); | 1451 | iounmap(pldat->net_base); |
1455 | err_out_disable_clocks: | 1452 | err_out_disable_clocks: |
1456 | clk_disable_unprepare(pldat->clk); | 1453 | clk_disable_unprepare(pldat->clk); |
1454 | err_out_clk_put: | ||
1457 | clk_put(pldat->clk); | 1455 | clk_put(pldat->clk); |
1458 | err_out_free_dev: | 1456 | err_out_free_dev: |
1459 | free_netdev(ndev); | 1457 | free_netdev(ndev); |