|
@@ -195,11 +195,10 @@ static int orion_mdio_probe(struct platform_device *pdev)
|
|
|
return -ENODEV;
|
|
|
}
|
|
|
|
|
|
- bus = mdiobus_alloc_size(sizeof(struct orion_mdio_dev));
|
|
|
- if (!bus) {
|
|
|
- dev_err(&pdev->dev, "Cannot allocate MDIO bus\n");
|
|
|
+ bus = devm_mdiobus_alloc_size(&pdev->dev,
|
|
|
+ sizeof(struct orion_mdio_dev));
|
|
|
+ if (!bus)
|
|
|
return -ENOMEM;
|
|
|
- }
|
|
|
|
|
|
bus->name = "orion_mdio_bus";
|
|
|
bus->read = orion_mdio_read;
|
|
@@ -208,11 +207,10 @@ static int orion_mdio_probe(struct platform_device *pdev)
|
|
|
dev_name(&pdev->dev));
|
|
|
bus->parent = &pdev->dev;
|
|
|
|
|
|
- bus->irq = kmalloc(sizeof(int) * PHY_MAX_ADDR, GFP_KERNEL);
|
|
|
- if (!bus->irq) {
|
|
|
- mdiobus_free(bus);
|
|
|
+ bus->irq = devm_kmalloc_array(&pdev->dev, PHY_MAX_ADDR, sizeof(int),
|
|
|
+ GFP_KERNEL);
|
|
|
+ if (!bus->irq)
|
|
|
return -ENOMEM;
|
|
|
- }
|
|
|
|
|
|
for (i = 0; i < PHY_MAX_ADDR; i++)
|
|
|
bus->irq[i] = PHY_POLL;
|
|
@@ -264,8 +262,6 @@ static int orion_mdio_probe(struct platform_device *pdev)
|
|
|
out_mdio:
|
|
|
if (!IS_ERR(dev->clk))
|
|
|
clk_disable_unprepare(dev->clk);
|
|
|
- kfree(bus->irq);
|
|
|
- mdiobus_free(bus);
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
@@ -276,8 +272,6 @@ static int orion_mdio_remove(struct platform_device *pdev)
|
|
|
|
|
|
writel(0, dev->regs + MVMDIO_ERR_INT_MASK);
|
|
|
mdiobus_unregister(bus);
|
|
|
- kfree(bus->irq);
|
|
|
- mdiobus_free(bus);
|
|
|
if (!IS_ERR(dev->clk))
|
|
|
clk_disable_unprepare(dev->clk);
|
|
|
|