diff options
author | Grygorii Strashko <grygorii.strashko@ti.com> | 2014-04-30 08:23:34 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2014-05-02 16:16:26 -0400 |
commit | 50d0636eefd97f868a5bd85a4c59d60abea30b50 (patch) | |
tree | d7a6913b284a9b0a3db04c154d54805786c213b1 /drivers/net/ethernet | |
parent | 6d48f44b7b2af67b33c1ae5994b8f642685c8bc8 (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.c | 24 |
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 | ||
408 | bail_out: | 407 | bail_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 | ||