aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet
diff options
context:
space:
mode:
authorGrygorii Strashko <grygorii.strashko@ti.com>2014-04-30 08:23:34 -0400
committerDavid S. Miller <davem@davemloft.net>2014-05-02 16:16:26 -0400
commit50d0636eefd97f868a5bd85a4c59d60abea30b50 (patch)
treed7a6913b284a9b0a3db04c154d54805786c213b1 /drivers/net/ethernet
parent6d48f44b7b2af67b33c1ae5994b8f642685c8bc8 (diff)
net: davinci_mdio: use devm_* api
Use devm_* API for memory allocation and to get device's clock to simplify driver's code. Cc: Florian Fainelli <f.fainelli@gmail.com> Cc: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com> Acked-and-tested-by: Lad, Prabhakar <prabhakar.csengg@gmail.com> Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet')
-rw-r--r--drivers/net/ethernet/ti/davinci_mdio.c24
1 files changed, 5 insertions, 19 deletions
diff --git a/drivers/net/ethernet/ti/davinci_mdio.c b/drivers/net/ethernet/ti/davinci_mdio.c
index 0cca9dec5d82..4b202a2721cb 100644
--- a/drivers/net/ethernet/ti/davinci_mdio.c
+++ b/drivers/net/ethernet/ti/davinci_mdio.c
@@ -321,15 +321,14 @@ static int davinci_mdio_probe(struct platform_device *pdev)
321 struct phy_device *phy; 321 struct phy_device *phy;
322 int ret, addr; 322 int ret, addr;
323 323
324 data = kzalloc(sizeof(*data), GFP_KERNEL); 324 data = devm_kzalloc(dev, sizeof(*data), GFP_KERNEL);
325 if (!data) 325 if (!data)
326 return -ENOMEM; 326 return -ENOMEM;
327 327
328 data->bus = mdiobus_alloc(); 328 data->bus = devm_mdiobus_alloc(dev);
329 if (!data->bus) { 329 if (!data->bus) {
330 dev_err(dev, "failed to alloc mii bus\n"); 330 dev_err(dev, "failed to alloc mii bus\n");
331 ret = -ENOMEM; 331 return -ENOMEM;
332 goto bail_out;
333 } 332 }
334 333
335 if (dev->of_node) { 334 if (dev->of_node) {
@@ -354,7 +353,7 @@ static int davinci_mdio_probe(struct platform_device *pdev)
354 353
355 pm_runtime_enable(&pdev->dev); 354 pm_runtime_enable(&pdev->dev);
356 pm_runtime_get_sync(&pdev->dev); 355 pm_runtime_get_sync(&pdev->dev);
357 data->clk = clk_get(&pdev->dev, "fck"); 356 data->clk = devm_clk_get(dev, "fck");
358 if (IS_ERR(data->clk)) { 357 if (IS_ERR(data->clk)) {
359 dev_err(dev, "failed to get device clock\n"); 358 dev_err(dev, "failed to get device clock\n");
360 ret = PTR_ERR(data->clk); 359 ret = PTR_ERR(data->clk);
@@ -406,16 +405,9 @@ static int davinci_mdio_probe(struct platform_device *pdev)
406 return 0; 405 return 0;
407 406
408bail_out: 407bail_out:
409 if (data->bus)
410 mdiobus_free(data->bus);
411
412 if (data->clk)
413 clk_put(data->clk);
414 pm_runtime_put_sync(&pdev->dev); 408 pm_runtime_put_sync(&pdev->dev);
415 pm_runtime_disable(&pdev->dev); 409 pm_runtime_disable(&pdev->dev);
416 410
417 kfree(data);
418
419 return ret; 411 return ret;
420} 412}
421 413
@@ -423,18 +415,12 @@ static int davinci_mdio_remove(struct platform_device *pdev)
423{ 415{
424 struct davinci_mdio_data *data = platform_get_drvdata(pdev); 416 struct davinci_mdio_data *data = platform_get_drvdata(pdev);
425 417
426 if (data->bus) { 418 if (data->bus)
427 mdiobus_unregister(data->bus); 419 mdiobus_unregister(data->bus);
428 mdiobus_free(data->bus);
429 }
430 420
431 if (data->clk)
432 clk_put(data->clk);
433 pm_runtime_put_sync(&pdev->dev); 421 pm_runtime_put_sync(&pdev->dev);
434 pm_runtime_disable(&pdev->dev); 422 pm_runtime_disable(&pdev->dev);
435 423
436 kfree(data);
437
438 return 0; 424 return 0;
439} 425}
440 426