diff options
author | Cédric Le Goater <clg@kaod.org> | 2018-10-29 07:06:36 +0100 |
---|---|---|
committer | Joe Hershberger <joe.hershberger@ni.com> | 2018-11-05 10:41:57 -0600 |
commit | 1c0c61e9279e27822db4e30d3a4021ec384f2736 (patch) | |
tree | 81bedaf5ae90a575cbca15a65e8ab8fd42b61054 /drivers/net | |
parent | d0e0b84c662406d5a49be03e7e2cb66abca71003 (diff) | |
download | u-boot-1c0c61e9279e27822db4e30d3a4021ec384f2736.zip u-boot-1c0c61e9279e27822db4e30d3a4021ec384f2736.tar.gz u-boot-1c0c61e9279e27822db4e30d3a4021ec384f2736.tar.bz2 |
net: ftgmac100: add clock support
Signed-off-by: Cédric Le Goater <clg@kaod.org>
Reviewed-by: Joel Stanley <joel@jms.id.au>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
Diffstat (limited to 'drivers/net')
-rw-r--r-- | drivers/net/ftgmac100.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/drivers/net/ftgmac100.c b/drivers/net/ftgmac100.c index ec46add..7989776 100644 --- a/drivers/net/ftgmac100.c +++ b/drivers/net/ftgmac100.c @@ -11,6 +11,7 @@ * Copyright (C) 2018, IBM Corporation. */ +#include <clk.h> #include <dm.h> #include <miiphy.h> #include <net.h> @@ -55,6 +56,7 @@ * @bus: The mdio bus * @phy_mode: The mode of the PHY interface (rgmii, rmii, ...) * @max_speed: Maximum speed of Ethernet connection supported by MAC + * @clks: The bulk of clocks assigned to the device in the DT */ struct ftgmac100_data { struct ftgmac100 *iobase; @@ -69,6 +71,8 @@ struct ftgmac100_data { struct mii_dev *bus; u32 phy_mode; u32 max_speed; + + struct clk_bulk clks; }; /* @@ -489,6 +493,7 @@ static int ftgmac100_write_hwaddr(struct udevice *dev) static int ftgmac100_ofdata_to_platdata(struct udevice *dev) { struct eth_pdata *pdata = dev_get_platdata(dev); + struct ftgmac100_data *priv = dev_get_priv(dev); const char *phy_mode; pdata->iobase = devfdt_get_addr(dev); @@ -503,7 +508,7 @@ static int ftgmac100_ofdata_to_platdata(struct udevice *dev) pdata->max_speed = dev_read_u32_default(dev, "max-speed", 0); - return 0; + return clk_get_bulk(dev, &priv->clks); } static int ftgmac100_probe(struct udevice *dev) @@ -517,6 +522,10 @@ static int ftgmac100_probe(struct udevice *dev) priv->max_speed = pdata->max_speed; priv->phy_addr = 0; + ret = clk_enable_bulk(&priv->clks); + if (ret) + goto out; + ret = ftgmac100_mdio_init(dev); if (ret) { dev_err(dev, "Failed to initialize mdiobus: %d\n", ret); @@ -530,6 +539,9 @@ static int ftgmac100_probe(struct udevice *dev) } out: + if (ret) + clk_release_bulk(&priv->clks); + return ret; } @@ -540,6 +552,7 @@ static int ftgmac100_remove(struct udevice *dev) free(priv->phydev); mdio_unregister(priv->bus); mdio_free(priv->bus); + clk_release_bulk(&priv->clks); return 0; } |