From: Bin Meng Date: Thu, 8 Oct 2015 04:32:38 +0000 (-0700) Subject: net: designware: Add driver remove support X-Git-Url: http://git.dujemihanovic.xyz/?a=commitdiff_plain;h=5d2459fd466ebf86c717ccb28a8f56707a29724a;p=u-boot.git net: designware: Add driver remove support In designware_eth_probe(), some additional resources are allocated (eg: mdio, phy). We should free these in the driver remove phase. Add designware_eth_remove() to clean it up. Signed-off-by: Bin Meng Acked-by: Simon Glass --- diff --git a/drivers/net/designware.c b/drivers/net/designware.c index 6433896eec..a6c39c39ff 100644 --- a/drivers/net/designware.c +++ b/drivers/net/designware.c @@ -613,6 +613,17 @@ static int designware_eth_probe(struct udevice *dev) return ret; } +static int designware_eth_remove(struct udevice *dev) +{ + struct dw_eth_dev *priv = dev_get_priv(dev); + + free(priv->phydev); + mdio_unregister(priv->bus); + mdio_free(priv->bus); + + return 0; +} + static const struct eth_ops designware_eth_ops = { .start = designware_eth_start, .send = designware_eth_send, @@ -653,6 +664,7 @@ U_BOOT_DRIVER(eth_designware) = { .ofdata_to_platdata = designware_eth_ofdata_to_platdata, .bind = designware_eth_bind, .probe = designware_eth_probe, + .remove = designware_eth_remove, .ops = &designware_eth_ops, .priv_auto_alloc_size = sizeof(struct dw_eth_dev), .platdata_auto_alloc_size = sizeof(struct eth_pdata),